<?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>77129</bug_id>
          
          <creation_ts>2012-01-26 12:15:59 -0800</creation_ts>
          <short_desc>Simplify CSS property parsing.</short_desc>
          <delta_ts>2012-02-28 14:55:29 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>rakuco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>543365</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-26 12:15:59 -0800</bug_when>
    <thetext>Simplify CSS shorthand handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543368</commentid>
    <comment_count>1</comment_count>
      <attachid>124160</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-26 12:16:28 -0800</bug_when>
    <thetext>Created attachment 124160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543372</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 12:19:49 -0800</bug_when>
    <thetext>Attachment 124160 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCo...&quot; exit_code: 1

Source/WebCore/css/CSSParserShorthands.cpp:215:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 1 in 5 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>543384</commentid>
    <comment_count>3</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-26 12:31:29 -0800</bug_when>
    <thetext>It&apos;s a WIP but I want to get feedback on it. It&apos;s obviously missing the build system parts of other ports but on the Qt one, I tested the patch successfully and fast/css layout tests are green.

The idea here is to have the shortand related code in one place. I like that we get rid of all the :

 const int properties[] = { CSSPropertyWebkitWrapFlow, CSSPropertyWebkitWrapMargin, CSSPropertyWebkitWrapPadding };

everywhere. This array for each shorthand is now static and shared by all elements which maybe use the shorthand and created at compile time. Each handler could also be extended to support more features (we could move and rename CSSParserShorthands.cpp and each shorthand handler could also support the calculation for getComputedStyle for example).

In the future in order to fix https://bugs.webkit.org/show_bug.cgi?id=73002 where we need to expand the longhands when the shorthand is initial or inherit, we could think about something like (on top of this patch):

https://gist.github.com/1684850

(which of course could be improved way more).

I&apos;d like to get opinions if I should proceed more in that direction or if someone has a better idea, if people think it is simpler like this and the maintenance is easier. Also maybe someone see any major drawback with this approach.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543387</commentid>
    <comment_count>4</comment_count>
      <attachid>124160</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-26 12:35:50 -0800</bug_when>
    <thetext>Comment on attachment 124160
Patch

Attachment 124160 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11163455</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543399</commentid>
    <comment_count>5</comment_count>
      <attachid>124160</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 12:47:45 -0800</bug_when>
    <thetext>Comment on attachment 124160
Patch

Attachment 124160 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11265446</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543480</commentid>
    <comment_count>6</comment_count>
      <attachid>124160</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-26 14:23:31 -0800</bug_when>
    <thetext>Comment on attachment 124160
Patch

Attachment 124160 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11163490</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543529</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-26 15:03:59 -0800</bug_when>
    <thetext>One thing that we lose with this approach is that it&apos;s harder to find where a CSS property is parsed (it could be in CSSParserShorthands.cpp or CSSParser.cpp).  In the no-svg case, we also get a compiler error because the switch doesn&apos;t have a default: case.

The code also looks like it would be slower than the giant switch statement since now every CSS property has to be looked up in the shorthand map, then in the giant switch statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543961</commentid>
    <comment_count>8</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-27 04:33:33 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; One thing that we lose with this approach is that it&apos;s harder to find where a CSS property is parsed (it could be in CSSParserShorthands.cpp or CSSParser.cpp).

Shorthand -&gt; CSSParserShorthands.cpp, longhands -&gt; CSSParser. In the long run maybe it is possible to have the same approach for all the giant switch case values making everything at the same place.

&gt; In the no-svg case, we also get a compiler error because the switch doesn&apos;t have a default: case.

Each &quot;case&quot; I removed were returning directly (no break) and today if the shorthand is found it will return also without going to the big switch case. I tried to compile with --no-svg and it compiles fine.

&gt; 
&gt; The code also looks like it would be slower than the giant switch statement since now every CSS property has to be looked up in the shorthand map, then in the giant switch statement.

I&apos;m not sure this is entirely true. The shorthand handler container is defined like this :

ShorthandHandler m_handlerMap[numCSSProperties];

Maybe the name is misleading (granted) but it&apos;s an array.

So for longhands the overhead would be : array access, function call (handler.isValid) and a pointer comparison (the isValid function) then we fallback to the switch case.

For the shorthand depending on how the switch case is implemented by the compiler (jump table or not) it is probably faster : array lookup, function call (isValid), pointer comparison (isValid), and then we go straight to parseXXX where we return. Before It would enter in the switch case, construct the properties array for the shorthand and call parseXXX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544220</commentid>
    <comment_count>9</comment_count>
      <attachid>124341</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-27 11:42:09 -0800</bug_when>
    <thetext>Created attachment 124341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544233</commentid>
    <comment_count>10</comment_count>
      <attachid>124341</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 11:59:10 -0800</bug_when>
    <thetext>Comment on attachment 124341
Patch

Attachment 124341 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11350820</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544243</commentid>
    <comment_count>11</comment_count>
      <attachid>124345</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-27 12:06:26 -0800</bug_when>
    <thetext>Created attachment 124345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544282</commentid>
    <comment_count>12</comment_count>
      <attachid>124345</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 12:53:46 -0800</bug_when>
    <thetext>Comment on attachment 124345
Patch

Attachment 124345 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11265828

New failing tests:
fast/exclusions/wrap-parsing.html
inspector/styles/styles-update-from-js.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544311</commentid>
    <comment_count>13</comment_count>
      <attachid>124358</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-27 13:16:38 -0800</bug_when>
    <thetext>Created attachment 124358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544344</commentid>
    <comment_count>14</comment_count>
      <attachid>124358</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 14:08:44 -0800</bug_when>
    <thetext>Comment on attachment 124358
Patch

Attachment 124358 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11360143

New failing tests:
inspector/styles/styles-update-from-js.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545068</commentid>
    <comment_count>15</comment_count>
      <attachid>124542</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-30 06:32:08 -0800</bug_when>
    <thetext>Created attachment 124542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550180</commentid>
    <comment_count>16</comment_count>
      <attachid>124542</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-06 12:11:21 -0800</bug_when>
    <thetext>Comment on attachment 124542
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        Move the CSS shorthand handling into a separate class inspired
&gt; +        a bit from CSSStyleApplyValue. It uses handler that each shorthand
&gt; +        specify. This handler is responsible to parse the shorthand correctly.
&gt; +        In the future we could extend this handler to expand the longhands
&gt; +        and set them to initial or inherit. 

The English needs some improvement here.

Does this patch have performance impact?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550198</commentid>
    <comment_count>17</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-02-06 12:29:46 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 124542 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124542&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        Move the CSS shorthand handling into a separate class inspired
&gt; &gt; +        a bit from CSSStyleApplyValue. It uses handler that each shorthand
&gt; &gt; +        specify. This handler is responsible to parse the shorthand correctly.
&gt; &gt; +        In the future we could extend this handler to expand the longhands
&gt; &gt; +        and set them to initial or inherit. 
&gt; 
&gt; The English needs some improvement here.

:D

&gt; 
&gt; Does this patch have performance impact?

Well I&apos;m uploading a new version which extends this pattern to all properties. It will be online in a couple of minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550202</commentid>
    <comment_count>18</comment_count>
      <attachid>125692</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-02-06 12:33:59 -0800</bug_when>
    <thetext>Created attachment 125692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550203</commentid>
    <comment_count>19</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-02-06 12:34:29 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created an attachment (id=125692) [details]
&gt; Patch

Just want to gather feedback before going further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550362</commentid>
    <comment_count>20</comment_count>
      <attachid>125692</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-06 15:37:19 -0800</bug_when>
    <thetext>Comment on attachment 125692
Patch

Looks more complicated to me rather than simpler. But maybe it’s just because I’m not used to it yet.

What is the performance impact of this change? Does it make the code faster? Or slower? Or neither?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551254</commentid>
    <comment_count>21</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-02-07 12:46:11 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 125692 [details])
&gt; Looks more complicated to me rather than simpler. But maybe it’s just because I’m not used to it yet.
&gt; 
&gt; What is the performance impact of this change? Does it make the code faster? Or slower? Or neither?

https://gist.github.com/1761318 (green being values with the patch).

are the result on my Linux machine with the Chromium port running the perf tests.

https://gist.github.com/1761724

are the result on my Mac with the Mac port running the perf tests.

I think the results are almost the same but the tests are not necessarily covering what the patch is improving. Multiple CSSParser creation and avoiding the switch case for most common properties.

So I wrote a benchmark which I believe cover more the use case :

&lt;!DOCTYPE html&gt;
&lt;body&gt;
&lt;script src=&quot;../resources/runner.js&quot;&gt;&lt;/script&gt;
&lt;link id=&quot;styles&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;resources/style.css&quot;/&gt;
&lt;script&gt;
PerfTestRunner.run(function() {
    var styles = document.getElementById(&quot;styles&quot;);
    styles.setAttribute(&quot;href&quot;, &quot;resources/style.css&quot;);
}, 200);

&lt;/script&gt;
&lt;/body&gt;

loading a huge CSS file (taken from https://bugs.webkit.org/show_bug.cgi?id=70107).

I got those results :

-Without the patch : 

Running Parser/css-parser.html (1 of 1)
RESULT Parser: css-parser= 937.6 ms
median= 935.0 ms, stdev= 4.24735211632 ms, min= 934.0 ms, max= 947.0 ms

- With the patch :

Running Parser/css-parser.html (1 of 1)
RESULT Parser: css-parser= 918.15 ms
median= 917.0 ms, stdev= 3.10282129682 ms, min= 915.0 ms, max= 927.0 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551258</commentid>
    <comment_count>22</comment_count>
      <attachid>125903</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-02-07 12:51:21 -0800</bug_when>
    <thetext>Created attachment 125903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551323</commentid>
    <comment_count>23</comment_count>
      <attachid>125903</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 13:40:03 -0800</bug_when>
    <thetext>Comment on attachment 125903
Patch

Attachment 125903 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11459073

New failing tests:
svg/custom/getPresentationAttribute.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552165</commentid>
    <comment_count>24</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-02-08 08:55:11 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 125692 [details])
&gt; Looks more complicated to me rather than simpler. But maybe it’s just because I’m not used to it yet.

The idea I had when I created this patch was to be able to do more without copy and pasting the switch case.

The patch in https://bugs.webkit.org/show_bug.cgi?id=73002 shows the limit of the current approach.

Today I would replace the patch of 73002 by adding a new function to CSSPropertyParser so it could set/add the longhands for initial and inherit cases. I would do :

// For initial and inherit cases.
const CSSPropertyParser&amp; handler = m_parserPropertyArray.propertyParser(propertyId);
if (handler.isValid() &amp;&amp; handler.isShorthandHandler())
   return handler.setLonghands(...)

which is more efficient than having again a switch case where I need to compare the current propId and then finally set everything.

You could argue that to solve 73002, I could still enter in the existing switch case of parseValue and do some magic to make sure the longhands are added but it looked like an horrible hack when I did it.

One thing that this patch bring is that every properties that is handled by the array will be parse faster O(1) whereas the switch is such big that O(1) is not guarantee.

In a similar approach CSSStyleApplyProperty is not sexy to read, but is efficient.

I&apos;m open on ideas on how to improve the patch to make it nicer.

&gt; 
&gt; What is the performance impact of this change? Does it make the code faster? Or slower? Or neither?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554658</commentid>
    <comment_count>25</comment_count>
      <attachid>125903</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-11 11:39:52 -0800</bug_when>
    <thetext>Comment on attachment 125903
Patch

This patch clearly doesn&apos;t simplify the CSS property parsing and so fails to fix the bug. It does the opposite, making it very hard to see how a given property gets parsed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566977</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-28 12:35:21 -0800</bug_when>
    <thetext>If the argument is about efficiency then we need to measure performance to show the gains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567080</commentid>
    <comment_count>27</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-02-28 14:14:26 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; If the argument is about efficiency then we need to measure performance to show the gains.

I ran the perf test css-parser-yui and the differences are not enough to motivate that change. It is slightly faster but I think it&apos;s not worth the big move. It&apos;s called research, I failed. I will close that bug. Thanks for the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567127</commentid>
    <comment_count>28</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-02-28 14:55:29 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; If the argument is about efficiency then we need to measure performance to show the gains.
&gt; 
&gt; I ran the perf test css-parser-yui and the differences are not enough to motivate that change. It is slightly faster but I think it&apos;s not worth the big move. It&apos;s called research, I failed. I will close that bug. Thanks for the time.

Trying something that didn&apos;t work out is not failure - that&apos;s called research success! You now know something that you could only have speculated about otherwise.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124160</attachid>
            <date>2012-01-26 12:16:28 -0800</date>
            <delta_ts>2012-01-27 11:41:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77129-20120126171617.patch</filename>
            <type>text/plain</type>
            <size>57840</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA2YjZhMTRiODIyYTAz
M2FiNmZkYjhhYTNmMWQxMTU1MTRkYTQyOWFiLi4zMjZjZDFjYWI4YmE1MmQ0OTE1Nzg3MGJmYzMx
OWNkNjk0ZWFlZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTQxOSw2ICs0MTksNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBjc3MvQ1NTT01VdGlscy5jcHAgXAogICAgIGNzcy9DU1NQYWdlUnVsZS5jcHAgXAog
ICAgIGNzcy9DU1NQYXJzZXIuY3BwIFwKKyAgICBjc3MvQ1NTUGFyc2VyU2hvcnRoYW5kcy5jcHAg
XAogICAgIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwIFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwIFwKICAgICBjc3MvQ1NTUHJvcGVydHkuY3BwIFwKQEAgLTE1MzIsNiArMTUzMyw3IEBA
IEhFQURFUlMgKz0gXAogICAgIGNzcy9DU1NPTVV0aWxzLmggXAogICAgIGNzcy9DU1NQYWdlUnVs
ZS5oIFwKICAgICBjc3MvQ1NTUGFyc2VyLmggXAorICAgIGNzcy9DU1NQYXJzZXJTaG9ydGhhbmRz
LmggXAogICAgIGNzcy9DU1NQYXJzZXJWYWx1ZXMuaCBcCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmggXAogICAgIGNzcy9DU1NQcm9wZXJ0eS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
aW5kZXggZWFmNjcwMzEzOWU0NmI1MzYzNmFiOGJkNDViZDg1OGRiZDcxOGExNi4uYTU2ZGM2Y2M0
NTkzNjc5ZDQ4Njc3MzIyNWM2MWFjNzQ1Y2VkMWRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJDU1NNZWRpYVJ1bGUuaCIKICNpbmNsdWRl
ICJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1BhZ2VSdWxlLmgi
CisjaW5jbHVkZSAiQ1NTUGFyc2VyU2hvcnRoYW5kcy5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCkBAIC0xMDYsMzMgKzEwNyw2IEBAIGV4dGVybiBpbnQgY3NzeXlwYXJzZSh2b2lk
KiBwYXJzZXIpOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAK
LW5hbWVzcGFjZSB7Ci0KLWVudW0gUHJvcGVydHlUeXBlIHsKLSAgICBQcm9wZXJ0eUV4cGxpY2l0
LAotICAgIFByb3BlcnR5SW1wbGljaXQKLX07Ci0KLWNsYXNzIEltcGxpY2l0U2NvcGUgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEltcGxpY2l0U2NvcGUpOwotcHVibGljOgotICAgIEltcGxp
Y2l0U2NvcGUoV2ViQ29yZTo6Q1NTUGFyc2VyKiBwYXJzZXIsIFByb3BlcnR5VHlwZSBwcm9wZXJ0
eVR5cGUpCi0gICAgICAgIDogbV9wYXJzZXIocGFyc2VyKQotICAgIHsKLSAgICAgICAgbV9wYXJz
ZXItPm1faW1wbGljaXRTaG9ydGhhbmQgPSBwcm9wZXJ0eVR5cGUgPT0gUHJvcGVydHlJbXBsaWNp
dDsKLSAgICB9Ci0KLSAgICB+SW1wbGljaXRTY29wZSgpCi0gICAgewotICAgICAgICBtX3BhcnNl
ci0+bV9pbXBsaWNpdFNob3J0aGFuZCA9IGZhbHNlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBX
ZWJDb3JlOjpDU1NQYXJzZXIqIG1fcGFyc2VyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgSU5WQUxJRF9OVU1fUEFS
U0VEX1BST1BFUlRJRVMgPSBVSU5UX01BWDsKQEAgLTIwNiw2ICsxODAsNyBAQCBDU1NQYXJzZXI6
OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2xhc3RTZWxlY3RvckxpbmVO
dW1iZXIoMCkKICAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0cnVlKQogICAgICwgbV9hbGxvd05h
bWVzcGFjZURlY2xhcmF0aW9ucyh0cnVlKQorICAgICwgbV9zaG9ydGhhbmRQYXJzZXIoQ1NTUGFy
c2VyU2hvcnRoYW5kczo6c2hhcmVkQ1NTUGFyc2VyU2hvcnRoYW5kcygpKQogewogI2lmIFlZREVC
VUcgPiAwCiAgICAgY3NzeXlkZWJ1ZyA9IDE7CkBAIC04NzgsNyArODUzLDEzIEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGJvb2wg
dmFsaWRQcmltaXRpdmUgPSBmYWxzZTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVl
OwogCi0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpKSB7Cisg
ICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4o
cHJvcElkKTsKKyAgICAvLyBCZWZvcmUgY29udGludWluZyBsZXRzIGxvb2sgaWYgdGhlcmUgaXMg
YSBwYXJzaW5nIGhhbmRsZXIuCisgICAgY29uc3QgU2hvcnRoYW5kSGFuZGxlciYgaGFuZGxlciA9
IG1fc2hvcnRoYW5kUGFyc2VyLnNob3J0aGFuZEhhbmRsZXIocHJvcGVydHlJZCk7CisgICAgaWYg
KGhhbmRsZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gaGFuZGxlci5wYXJzZVZhbHVlKHBy
b3BJZCwgdGhpcywgaW1wb3J0YW50KTsKKworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewogICAg
ICAgICAvKiBUaGUgY29tbWVudCB0byB0aGUgbGVmdCBkZWZpbmVzIGFsbCB2YWxpZCB2YWx1ZSBv
ZiB0aGlzIHByb3BlcnRpZXMgYXMgZGVmaW5lZAogICAgICAgICAgKiBpbiBDU1MgMiwgQXBwZW5k
aXggRi4gUHJvcGVydHkgaW5kZXgKICAgICAgICAgICovCkBAIC0xMDcxLDI1ICsxMDUyLDYgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6ICAvLyBub3JtYWwgfCBib2xkIHwgYm9sZGVy
IHwgbGlnaHRlciB8IDEwMCB8IDIwMCB8IDMwMCB8IDQwMCB8IDUwMCB8IDYwMCB8IDcwMCB8IDgw
MCB8IDkwMCB8IGluaGVyaXQKICAgICAgICAgcmV0dXJuIHBhcnNlRm9udFdlaWdodChpbXBvcnRh
bnQpOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmc6IHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRh
bFNwYWNpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OwotICAgICAgICBpZiAobnVtID09IDEpIHsK
LSAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVy
U3BhY2luZyk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1w
b3J0YW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NW
YWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFd
LT52YWx1ZSgpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUs
IGltcG9ydGFudCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIGlmIChudW0gPT0gMikgewotICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUo
dGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VW
YWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNb
MV0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzoKICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmlj
dCk7CkBAIC0xNjUzLDEyICsxNjE1LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhX
cmFwOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlTm93cmFwIHx8IGlk
ID09IENTU1ZhbHVlV3JhcCB8fCBpZCA9PSBDU1NWYWx1ZVdyYXBSZXZlcnNlOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZTogewotICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9u
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
U3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07Ci0gICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGltcG9ydGFudCk7Ci0gICAgfQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgogICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVGb3J3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUJhY2t3YXJkcyB8fCBpZCA9
PSBDU1NWYWx1ZUFoZWFkIHx8CiAgICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVJldmVyc2UgfHwg
aWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFs
dWVEb3duIHx8CkBAIC0xODA3LDI1ICsxNzYzLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEdyaWRSb3dzOgogICAgICAgICByZXR1cm4gcGFyc2VHcmlkVHJhY2tMaXN0KHByb3BJZCwgaW1w
b3J0YW50KTsKICNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgICAgICBpZiAobnVtID09IDEpIHsKLSAgICAgICAgICAg
IFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFw
c2UpOwotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFu
dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUq
IHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFs
dWUoKTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBv
cnRhbnQpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSBpZiAobnVtID09IDIpIHsKLSAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMs
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwotICAgICAgICAgICAgaWYgKCFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGll
c1sxXSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CkBAIC0yMDI0LDEzNCArMTk2MSw2IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0gICAgICAgIC8qIHNob3J0aGFuZCBwcm9w
ZXJ0aWVzICovCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKLSAgICAgICAgLy8g
UG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlzIGFycmF5IGJlY2F1c2UgYSBw
bGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKLSAgICAgICAgLy8gaW4gcXVpcmtzIG1vZGUg
YnV0IGl0J3MgdXN1YWxseSB0aGUgWCBjb29yZGluYXRlIG9mIGEgcG9zaXRpb24uCi0gICAgICAg
IC8vIEZJWE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0aGUgc2hvcnRoYW5k
LgotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91
bmRJbWFnZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlw
LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VGaWxs
U2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgNywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrQXR0YWNobWVudCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdp
biwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCB9OwotICAgICAgICByZXR1cm4gcGFyc2VGaWxs
U2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgNiwgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKLSAgICAgICAgLy8gWyAnYm9yZGVyLXdpZHRoJyB8fCAn
Ym9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyQ29sb3IgfTsKLSAgICAgICAgaWYgKHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMywgaW1wb3J0YW50KSkgewotICAgICAgICAgICAgLy8gVGhlIENTUzMgQm9y
ZGVycyBhbmQgQmFja2dyb3VuZHMgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgYm9yZGVyIGFsc28g
cmVzZXRzIGJvcmRlci1pbWFnZS4gSXQncyBhcwotICAgICAgICAgICAgLy8gdGhvdWdoIGEgdmFs
dWUgb2Ygbm9uZSB3YXMgc3BlY2lmaWVkIGZvciB0aGUgaW1hZ2UuCi0gICAgICAgICAgICBhZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1w
bGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclRvcDoKLSAgICAgICAgLy8gWyAnYm9yZGVyLXRvcC13aWR0aCcgfHwgJ2Jv
cmRlci1zdHlsZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5k
KHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0OgotICAgICAgICAvLyBbICdib3JkZXItcmlnaHQtd2lkdGgnIHx8
ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgotICAgICAgICAvLyBbICdib3JkZXItYm90
dG9tLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IgfTsKLSAg
ICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0
YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6Ci0gICAgICAgIC8v
IFsgJ2JvcmRlci1sZWZ0LXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBp
bmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3Ig
fTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywg
aW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
OgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyU3RhcnRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxl
LAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yIH07Ci0gICAg
ICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6Ci0gICAgewot
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwKLSAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNl
U2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRo
LCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlLAotICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckFmdGVyQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHBy
b3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmU6Ci0gICAgICAgIC8vIFsgJ291dGxpbmUtY29sb3InIHx8ICdvdXRsaW5lLXN0
eWxlJyB8fCAnb3V0bGluZS13aWR0aCcgXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgQ1NTUHJvcGVy
dHlPdXRsaW5lU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQ
cm9wZXJ0eU91dGxpbmVDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJv
cElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQ29sb3I6Ci0gICAgICAgIC8vIDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRv
cENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwg
cHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
cldpZHRoOgotICAgICAgICAvLyA8Ym9yZGVyLXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAgIHsK
LSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9w
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFdpZHRoIH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBw
cm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
U3R5bGU6Ci0gICAgICAgIC8vIDxib3JkZXItc3R5bGU+ezEsNH0gfCBpbmhlcml0Ci0gICAgewot
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BT
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0U3R5bGUgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHBy
b3BlcnRpZXMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46
Ci0gICAgICAgIC8vIDxtYXJnaW4td2lkdGg+ezEsNH0gfCBpbmhlcml0Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1By
b3BlcnR5TWFyZ2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0IH07Ci0gICAgICAg
IHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAg
IH0KLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZzoKLSAgICAgICAgLy8gPHBhZGRpbmctd2lk
dGg+ezEsNH0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0
XSA9IHsgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRv
bSwgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVz
KHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhGbG93OgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZs
ZXhXcmFwIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRp
ZXMsIDIsIGltcG9ydGFudCk7Ci0gICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgogICAg
ICAgICAvLyBbIFsgJ2ZvbnQtc3R5bGUnIHx8ICdmb250LXZhcmlhbnQnIHx8ICdmb250LXdlaWdo
dCcgXT8gJ2ZvbnQtc2l6ZScgWyAvICdsaW5lLWhlaWdodCcgXT8KICAgICAgICAgLy8gJ2ZvbnQt
ZmFtaWx5JyBdIHwgY2FwdGlvbiB8IGljb24gfCBtZW51IHwgbWVzc2FnZS1ib3ggfCBzbWFsbC1j
YXB0aW9uIHwgc3RhdHVzLWJhciB8IGluaGVyaXQKQEAgLTIxNjAsMjUgKzE5NjksNiBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udChpbXBvcnRhbnQpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgotICAgIHsKLSAgICAgICAg
Y29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NT
UHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNl
U2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uQ291bnQgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGU6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChw
cm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJd
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U3Ryb2tlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbjoKICAgICAgICAgcmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGlt
cG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBAIC0yMjAz
LDExICsxOTkzLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAg
IGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczogewotICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpc1N0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yIH07Ci0gICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgocHJvcGVydGllcyksIGltcG9ydGFudCk7Ci0gICAgfQotCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVP
dmVyIHx8IGlkID09IENTU1ZhbHVlVW5kZXIpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7CkBAIC0yMjY3LDEwICsyMDUyLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdy
YXBQYWRkaW5nOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXA6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdywgQ1NTUHJvcGVydHlXZWJraXRXcmFw
TWFyZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQYWRkaW5nIH07Ci0gICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVy
dGllcyksIGltcG9ydGFudCk7Ci0gICAgfQogI2lmIEVOQUJMRShTVkcpCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIHBhcnNlU1ZHVmFsdWUocHJvcElkLCBpbXBvcnRhbnQpOwpAQCAtMjMw
Nyw3ICsyMDg4LDcgQEAgdm9pZCBDU1NQYXJzZXI6OmFkZEZpbGxWYWx1ZShSZWZQdHI8Q1NTVmFs
dWU+JiBsdmFsLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBydmFsKQogICAgICAgICBsdmFsID0gcnZh
bDsKIH0KIAotc3RhdGljIGJvb2wgcGFyc2VCYWNrZ3JvdW5kQ2xpcChDU1NQYXJzZXJWYWx1ZSog
cGFyc2VyVmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4mIGNzc1ZhbHVlLCBDU1NWYWx1ZVBvb2wqIGNz
c1ZhbHVlUG9vbCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUJhY2tncm91bmRDbGlwKENTU1BhcnNl
clZhbHVlKiBwYXJzZXJWYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiYgY3NzVmFsdWUsIENTU1ZhbHVl
UG9vbCogY3NzVmFsdWVQb29sKQogewogICAgIGlmIChwYXJzZXJWYWx1ZS0+aWQgPT0gQ1NTVmFs
dWVCb3JkZXJCb3ggfHwgcGFyc2VyVmFsdWUtPmlkID09IENTU1ZhbHVlUGFkZGluZ0JveAogICAg
ICAgICB8fCBwYXJzZXJWYWx1ZS0+aWQgPT0gQ1NTVmFsdWVDb250ZW50Qm94IHx8IHBhcnNlclZh
bHVlLT5pZCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQpIHsKQEAgLTIzMTcsMTM3ICsyMDk4LDYgQEAg
c3RhdGljIGJvb2wgcGFyc2VCYWNrZ3JvdW5kQ2xpcChDU1NQYXJzZXJWYWx1ZSogcGFyc2VyVmFs
dWUsIFJlZlB0cjxDU1NWYWx1ZT4mIGMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWNvbnN0IGlu
dCBjTWF4RmlsbFByb3BlcnRpZXMgPSA5OwotCi1ib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hv
cnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRp
ZXMsIGJvb2wgaW1wb3J0YW50KQotewotICAgIEFTU0VSVChudW1Qcm9wZXJ0aWVzIDw9IGNNYXhG
aWxsUHJvcGVydGllcyk7Ci0gICAgaWYgKG51bVByb3BlcnRpZXMgPiBjTWF4RmlsbFByb3BlcnRp
ZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRo
aXMsIHByb3BJZCk7Ci0KLSAgICBib29sIHBhcnNlZFByb3BlcnR5W2NNYXhGaWxsUHJvcGVydGll
c10gPSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZXNbY01heEZpbGxQcm9w
ZXJ0aWVzXTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGNsaXBWYWx1ZTsKLSAgICBSZWZQdHI8Q1NT
VmFsdWU+IHBvc2l0aW9uWVZhbHVlOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVwZWF0WVZhbHVl
OwotICAgIGJvb2wgZm91bmRDbGlwID0gZmFsc2U7Ci0gICAgaW50IGk7Ci0KLSAgICB3aGlsZSAo
bV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewotICAgICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsID0g
bV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKLSAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQYXJz
ZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7Ci0gICAgICAgICAgICAv
LyBXZSBoaXQgdGhlIGVuZC4gIEZpbGwgaW4gYWxsIHJlbWFpbmluZyB2YWx1ZXMgd2l0aCB0aGUg
aW5pdGlhbCB2YWx1ZS4KLSAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0gICAgICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgJiYgcGFy
c2VkUHJvcGVydHlbaV0pCi0gICAgICAgICAgICAgICAgICAgIC8vIENvbG9yIGlzIG5vdCBhbGxv
d2VkIGV4Y2VwdCBhcyB0aGUgbGFzdCBpdGVtIGluIGEgbGlzdCBmb3IgYmFja2dyb3VuZHMuCi0g
ICAgICAgICAgICAgICAgICAgIC8vIFJlamVjdCB0aGUgZW50aXJlIHByb3BlcnR5LgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXBhcnNl
ZFByb3BlcnR5W2ldICYmIHByb3BlcnRpZXNbaV0gIT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwgY3NzVmFs
dWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8
fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZhbHVlLCBjc3NWYWx1ZVBv
b2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCB8fCBwcm9w
ZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZEZpbGxWYWx1ZShyZXBlYXRZVmFsdWUsIGNzc1ZhbHVlUG9vbCgpLT5jcmVh
dGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9w
ZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiB8fCBwcm9wZXJ0aWVzW2ld
ID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgJiYgIXBhcnNlZFByb3BlcnR5W2ldKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBiYWNrZ3JvdW5kLW9yaWdpbiB3YXNuJ3Qg
cHJlc2VudCwgdGhlbiByZXNldCBiYWNrZ3JvdW5kLWNsaXAgYWxzby4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZEZpbGxWYWx1ZShjbGlwVmFsdWUsIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJ
bXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb3VuZCA9IGZh
bHNlOwotICAgICAgICBmb3IgKGkgPSAwOyAhZm91bmQgJiYgaSA8IG51bVByb3BlcnRpZXM7ICsr
aSkgewotICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgewotICAgICAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMTsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHZhbDI7Ci0gICAgICAgICAgICAgICAgaW50IHByb3BJZDEsIHByb3BJZDI7Ci0gICAgICAg
ICAgICAgICAgQ1NTUGFyc2VyVmFsdWUqIHBhcnNlclZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJl
bnQoKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VGaWxsUHJvcGVydHkocHJvcGVydGllc1tp
XSwgcHJvcElkMSwgcHJvcElkMiwgdmFsMSwgdmFsMikpIHsKLSAgICAgICAgICAgICAgICAgICAg
cGFyc2VkUHJvcGVydHlbaV0gPSBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGFk
ZEZpbGxWYWx1ZSh2YWx1ZXNbaV0sIHZhbDEucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwg
cHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZEZpbGxWYWx1ZShwb3NpdGlvbllWYWx1ZSwgdmFsMi5yZWxlYXNl
KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXQgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocmVwZWF0WVZh
bHVlLCB2YWwyLnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVz
W2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiB8fCBwcm9wZXJ0aWVzW2ldID09IENT
U1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
UmVwYXJzZSB0aGUgdmFsdWUgYXMgYSBjbGlwLCBhbmQgc2VlIGlmIHdlIHN1Y2NlZWQuCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VCYWNrZ3JvdW5kQ2xpcChwYXJzZXJWYWx1ZSwg
dmFsMSwgY3NzVmFsdWVQb29sKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZp
bGxWYWx1ZShjbGlwVmFsdWUsIHZhbDEucmVsZWFzZSgpKTsgLy8gVGhlIHByb3BlcnR5IHBhcnNl
ZCBzdWNjZXNzZnVsbHkuCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgY3NzVmFsdWVQb29sKCkt
PmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOyAvLyBTb21lIHZhbHVlIHdhcyB1c2VkIGZv
ciBvcmlnaW4gdGhhdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGNsaXAuIEp1c3QgcmVzZXQgY2xpcCBp
bnN0ZWFkLgotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChw
cm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBVcGRhdGUgY2xpcFZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFs
dWUoY2xpcFZhbHVlLCB2YWwxLnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZENsaXAgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZp
bmQgYXQgbGVhc3Qgb25lIG1hdGNoLCB0aGlzIGlzIGFuCi0gICAgICAgIC8vIGludmFsaWQgc2hv
cnRoYW5kIGFuZCB3ZSBoYXZlIHRvIGlnbm9yZSBpdAotICAgICAgICBpZiAoIWZvdW5kKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIEZpbGwgaW4gYW55IHJlbWFp
bmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCi0gICAgZm9yIChpID0gMDsg
aSA8IG51bVByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ld
KSB7Ci0gICAgICAgICAgICBhZGRGaWxsVmFsdWUodmFsdWVzW2ldLCBjc3NWYWx1ZVBvb2woKS0+
Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICBpZiAocHJvcGVydGll
c1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBwcm9wZXJ0aWVzW2ldID09
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQotICAgICAgICAgICAgICAgIGFkZEZpbGxW
YWx1ZShwb3NpdGlvbllWYWx1ZSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlh
bFZhbHVlKCkpOwotICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNr
UmVwZWF0KQotICAgICAgICAgICAgICAgIGFkZEZpbGxWYWx1ZShyZXBlYXRZVmFsdWUsIGNzc1Zh
bHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKLSAgICAgICAgICAgIGlm
ICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4gfHwgcHJvcGVy
dGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pICYmICFwYXJzZWRQcm9wZXJ0
eVtpXSkgewotICAgICAgICAgICAgICAgIC8vIElmIGJhY2tncm91bmQtb3JpZ2luIHdhc24ndCBw
cmVzZW50LCB0aGVuIHJlc2V0IGJhY2tncm91bmQtY2xpcCBhbHNvLgotICAgICAgICAgICAgICAg
IGFkZEZpbGxWYWx1ZShjbGlwVmFsdWUsIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdElu
aXRpYWxWYWx1ZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgotICAgIGZvciAoaSA9IDA7
IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKLSAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKLSAgICAgICAgICAgIC8vIGl0J3MgT0sgdG8gY2FsbCBwb3NpdGlvbllWYWx1ZS5y
ZWxlYXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24g
b25jZQotICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b25ZLCBwb3NpdGlvbllWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikgewot
ICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCB2
YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgLy8gaXQncyBPSyB0
byBjYWxsIHBvc2l0aW9uWVZhbHVlLnJlbGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiBvbmNlCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIHBvc2l0aW9uWVZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdCkgewotICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0WCwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKLSAgICAg
ICAgICAgIC8vIGl0J3MgT0sgdG8gY2FsbCByZXBlYXRZVmFsdWUucmVsZWFzZSgpIHNpbmNlIHdl
IG9ubHkgc2VlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIG9uY2UKLSAgICAgICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIHJlcGVhdFlWYWx1ZS5y
ZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydGllc1tpXSA9
PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQpIHsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9y
dGFudCk7Ci0gICAgICAgICAgICAvLyBpdCdzIE9LIHRvIGNhbGwgcmVwZWF0WVZhbHVlLnJlbGVh
c2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiBvbmNl
Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBy
ZXBlYXRZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICB9IGVsc2UgaWYgKChw
cm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiAhZm91bmRDbGlwKQotICAgICAgICAg
ICAgLy8gVmFsdWUgaXMgYWxyZWFkeSBzZXQgd2hpbGUgdXBkYXRpbmcgb3JpZ2luCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJv
cGVydGllc1tpXSwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKLQotICAgICAgICAv
LyBBZGQgaW4gY2xpcCB2YWx1ZXMgd2hlbiB3ZSBoaXQgdGhlIGNvcnJlc3BvbmRpbmcgb3JpZ2lu
IHByb3BlcnR5LgotICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRPcmlnaW4gJiYgIWZvdW5kQ2xpcCkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1By
b3BlcnR5QmFja2dyb3VuZENsaXAsIGNsaXBWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0g
ICAgICAgIGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3Jp
Z2luICYmICFmb3VuZENsaXApCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tDbGlwLCBjbGlwVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgIH0KLQot
ICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIENTU1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFsdWUo
UmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcnZhbCkKIHsKICAg
ICBpZiAobHZhbCkgewpAQCAtMjU4NCwxMDEgKzIyMzQsNiBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50
ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpCi17Ci0gICAg
Ly8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkgcHJvcGVydGllcyBhcyBwb3NzaWJsZQotICAgIC8v
IFdlIHNldCB1cCBhbiBhcnJheSBvZiBib29sZWFucyB0byBtYXJrIHdoaWNoIHByb3BlcnR5IGhh
cyBiZWVuIGZvdW5kLAotICAgIC8vIGFuZCB3ZSB0cnkgdG8gc2VhcmNoIGZvciBwcm9wZXJ0aWVz
IHVudGlsIGl0IG1ha2VzIG5vIGxvbmdlciBhbnkgc2Vuc2UuCi0gICAgU2hvcnRoYW5kU2NvcGUg
c2NvcGUodGhpcywgcHJvcElkKTsKLQotICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBib29s
IGZuZFs2XTsgLy8gVHJ1c3QgbWUgOykKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3Bl
cnRpZXM7IGkrKykKLSAgICAgICAgZm5kW2ldID0gZmFsc2U7Ci0KLSAgICB3aGlsZSAobV92YWx1
ZUxpc3QtPmN1cnJlbnQoKSkgewotICAgICAgICBmb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3Ig
KGludCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwgbnVtUHJvcGVydGllczsg
Kytwcm9wSW5kZXgpIHsKLSAgICAgICAgICAgIGlmICghZm5kW3Byb3BJbmRleF0pIHsKLSAgICAg
ICAgICAgICAgICBpZiAocGFyc2VWYWx1ZShwcm9wZXJ0aWVzW3Byb3BJbmRleF0sIGltcG9ydGFu
dCkpCi0gICAgICAgICAgICAgICAgICAgIGZuZFtwcm9wSW5kZXhdID0gZm91bmQgPSB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQg
YXQgbGVhc3Qgb25lIG1hdGNoLCB0aGlzIGlzIGFuCi0gICAgICAgIC8vIGludmFsaWQgc2hvcnRo
YW5kIGFuZCB3ZSBoYXZlIHRvIGlnbm9yZSBpdAotICAgICAgICBpZiAoIWZvdW5kKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIEZpbGwgaW4gYW55IHJlbWFpbmlu
ZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCi0gICAgSW1wbGljaXRTY29wZSBp
bXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7Ci0gICAgICAgIGlmICghZm5kW2ldKQotICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1tpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUlt
cGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3Qg
aW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBpbXBvcnRhbnQpCi17Ci0gICAgLyogRnJvbSB0aGUgQ1NT
IDIgc3BlY3MsIDguMwotICAgICAqIElmIHRoZXJlIGlzIG9ubHkgb25lIHZhbHVlLCBpdCBhcHBs
aWVzIHRvIGFsbCBzaWRlcy4gSWYgdGhlcmUgYXJlIHR3byB2YWx1ZXMsIHRoZSB0b3AgYW5kCi0g
ICAgICogYm90dG9tIG1hcmdpbnMgYXJlIHNldCB0byB0aGUgZmlyc3QgdmFsdWUgYW5kIHRoZSBy
aWdodCBhbmQgbGVmdCBtYXJnaW5zIGFyZSBzZXQgdG8gdGhlIHNlY29uZC4KLSAgICAgKiBJZiB0
aGVyZSBhcmUgdGhyZWUgdmFsdWVzLCB0aGUgdG9wIGlzIHNldCB0byB0aGUgZmlyc3QgdmFsdWUs
IHRoZSBsZWZ0IGFuZCByaWdodCBhcmUgc2V0IHRvIHRoZQotICAgICAqIHNlY29uZCwgYW5kIHRo
ZSBib3R0b20gaXMgc2V0IHRvIHRoZSB0aGlyZC4gSWYgdGhlcmUgYXJlIGZvdXIgdmFsdWVzLCB0
aGV5IGFwcGx5IHRvIHRoZSB0b3AsCi0gICAgICogcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQsIHJl
c3BlY3RpdmVseS4KLSAgICAgKi8KLQotICAgIGludCBudW0gPSBpblNob3J0aGFuZCgpID8gMSA6
IG1fdmFsdWVMaXN0LT5zaXplKCk7Ci0KLSAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBw
cm9wSWQpOwotCi0gICAgLy8gdGhlIG9yZGVyIGlzIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdAot
ICAgIHN3aXRjaCAobnVtKSB7Ci0gICAgICAgIGNhc2UgMTogewotICAgICAgICAgICAgaWYgKCFw
YXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0
aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIEltcGxp
Y2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKLSAgICAgICAg
ICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAg
ICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgMjogewotICAgICAgICAg
ICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFs
dWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9u
dW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOwotICAgICAgICAgICAgSW1wbGljaXRTY29w
ZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgICAgICAgICAgYWRk
UHJvcGVydHkocHJvcGVydGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVl
KCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0
YW50KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgMzogewot
ICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwg
IXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9w
ZXJ0aWVzWzJdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNl
ZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxp
Y2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0
eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgNDogewotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVl
KHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwg
aW1wb3J0YW50KSB8fAotICAgICAgICAgICAgICAgICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMl0s
IGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1szXSwgaW1wb3J0YW50KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogLy8gYXV0byB8IDxpZGVudGlmaWVy
PgogYm9vbCBDU1NQYXJzZXI6OnBhcnNlUGFnZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCAzYmYwNDVlNjNmYmExZDY2YzgzZGI1OWRjZmVl
NTE5NWFjZjNiZmZiLi5mYTAyNjdmYTdiMjBiNzY5MDM1Y2QyMzJkYWQ1NmNhZjc3YjkyNmQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIENTU01hcHBlZEF0
dHJpYnV0ZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiBj
bGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNsYXNzIENTU1ZhbHVlUG9vbDsKK2NsYXNzIENTU1Bh
cnNlclNob3J0aGFuZHM7CiBjbGFzcyBDU1NQcm9wZXJ0eTsKIGNsYXNzIENTU1J1bGU7CiBjbGFz
cyBDU1NSdWxlTGlzdDsKQEAgLTg3LDggKzg4LDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUHJv
cGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyc2VkUHJvcGVydGllcyA+IDA7IH0KIAog
ICAgIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9v
bCBwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBu
dW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZTRWYWx1ZXMoaW50
IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9v
bCBwYXJzZUNvbnRlbnQoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFy
c2VRdW90ZXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogCkBAIC0xMDgsNyArMTA3LDYg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlRmlsbFNpemUoaW50IHBy
b3BJZCwgYm9vbCAmYWxsb3dDb21tYSk7CiAKICAgICBib29sIHBhcnNlRmlsbFByb3BlcnR5KGlu
dCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBSZWZQdHI8Q1NTVmFsdWU+Jiwg
UmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIGJvb2wgcGFyc2VGaWxsU2hvcnRoYW5kKGludCBwcm9w
SWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0
YW50KTsKIAogICAgIHZvaWQgYWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpOwogCkBAIC0xNTAsNiArMTQ4LDggQEAgcHVibGljOgog
ICAgIGJvb2wgcGFyc2VDb3VudGVyKGludCBwcm9wSWQsIGludCBkZWZhdWx0VmFsdWUsIGJvb2wg
aW1wb3J0YW50KTsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUNvdW50ZXJDb250ZW50
KENTU1BhcnNlclZhbHVlTGlzdCogYXJncywgYm9vbCBjb3VudGVycyk7CiAKKyAgICBib29sIHBh
cnNlQmFja2dyb3VuZENsaXAoQ1NTUGFyc2VyVmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+JiwgQ1NT
VmFsdWVQb29sKik7CisKICAgICBib29sIHBhcnNlQ29sb3JQYXJhbWV0ZXJzKENTU1BhcnNlclZh
bHVlKiwgaW50KiBjb2xvclZhbHVlcywgYm9vbCBwYXJzZUFscGhhKTsKICAgICBib29sIHBhcnNl
SFNMUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSosIGRvdWJsZSogY29sb3JWYWx1ZXMsIGJvb2wg
cGFyc2VBbHBoYSk7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VDb2xv
cihDU1NQYXJzZXJWYWx1ZSogPSAwKTsKQEAgLTM4OCw2ICszODgsOCBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVzYWJsZVNlbGVjdG9yVmVj
dG9yOwogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVzYWJsZVJl
Z2lvblNlbGVjdG9yVmVjdG9yOwogCisgICAgY29uc3QgQ1NTUGFyc2VyU2hvcnRoYW5kcyYgbV9z
aG9ydGhhbmRQYXJzZXI7CisKICAgICAvLyBkZWZpbmVzIHVuaXRzIGFsbG93ZWQgZm9yIGEgY2Vy
dGFpbiBwcm9wZXJ0eSwgdXNlZCBpbiBwYXJzZVVuaXQKICAgICBlbnVtIFVuaXRzIHsKICAgICAg
ICAgRlVua25vd24gICA9IDB4MDAwMCwKQEAgLTQxNCw2ICs0MTYsNyBAQCBwcml2YXRlOgogICAg
IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZU51bWVyaWNWYWx1
ZShDU1NQYXJzZXJWYWx1ZSopOwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNy
ZWF0ZVByaW1pdGl2ZVN0cmluZ1ZhbHVlKENTU1BhcnNlclZhbHVlKik7CiAKKyAgICBmcmllbmQg
Y2xhc3MgQ1NTUGFyc2VyU2hvcnRoYW5kczsKICAgICBmcmllbmQgY2xhc3MgVHJhbnNmb3JtT3Bl
cmF0aW9uSW5mbzsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgZnJpZW5kIGNsYXNzIEZp
bHRlck9wZXJhdGlvbkluZm87CkBAIC00NDIsNiArNDQ1LDI5IEBAIHByaXZhdGU6CiAgICAgQ1NT
UGFyc2VyKiBtX3BhcnNlcjsKIH07CiAKK2VudW0gUHJvcGVydHlUeXBlIHsKKyAgICBQcm9wZXJ0
eUV4cGxpY2l0LAorICAgIFByb3BlcnR5SW1wbGljaXQKK307CisKK2NsYXNzIEltcGxpY2l0U2Nv
cGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltcGxpY2l0U2NvcGUpOworcHVibGljOgor
ICAgIEltcGxpY2l0U2NvcGUoV2ViQ29yZTo6Q1NTUGFyc2VyKiBwYXJzZXIsIFByb3BlcnR5VHlw
ZSBwcm9wZXJ0eVR5cGUpCisgICAgICAgIDogbV9wYXJzZXIocGFyc2VyKQorICAgIHsKKyAgICAg
ICAgbV9wYXJzZXItPm1faW1wbGljaXRTaG9ydGhhbmQgPSBwcm9wZXJ0eVR5cGUgPT0gUHJvcGVy
dHlJbXBsaWNpdDsKKyAgICB9CisKKyAgICB+SW1wbGljaXRTY29wZSgpCisgICAgeworICAgICAg
ICBtX3BhcnNlci0+bV9pbXBsaWNpdFNob3J0aGFuZCA9IGZhbHNlOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBXZWJDb3JlOjpDU1NQYXJzZXIqIG1fcGFyc2VyOworfTsKKwogU3RyaW5nIHF1b3Rl
Q1NTU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJik7CiBTdHJpbmcgcXVvdGVDU1NVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmRzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZGVjNmJjNWIyM2Y0OWQ0NGM4YTY5NmNiNjI4NGUzYzIyOGEwZjkyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclNob3J0aGFuZHMuY3BwCkBAIC0wLDAg
KzEsMzgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDU1NQYXJzZXJTaG9ydGhhbmRzLmgiCisKKyNpbmNsdWRlICJDU1NQYXJz
ZXIuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5o
IgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit0ZW1wbGF0
ZSA8Q1NTUHJvcGVydHlJRCBvbmUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQg
dHdvID0gQ1NTUHJvcGVydHlJbnZhbGlkPgorY2xhc3MgVHdvVmFsdWVzU2hvcnRoYW5kSGFuZGxl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBDU1NQ
YXJzZXIqIHBhcnNlciwgYm9vbCBpbXBvcnRhbnQpCisgICAgeworICAgICAgICBpbnQgbnVtID0g
cGFyc2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAxIDogcGFyc2VyLT5tX3ZhbHVlTGlzdC0+c2l6
ZSgpOworCisgICAgICAgIGlmIChudW0gPT0gMSkgeworICAgICAgICAgICAgU2hvcnRoYW5kU2Nv
cGUgc2NvcGUocGFyc2VyLCBwcm9wSWQpOworICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNl
VmFsdWUob25lLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzW3Bh
cnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOworICAgICAgICAgICAgcGFy
c2VyLT5hZGRQcm9wZXJ0eSh0d28sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAobnVtID09IDIpIHsKKyAgICAgICAg
ICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElkKTsKKyAgICAgICAgICAgIGlm
ICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZh
bHVlKHR3bywgaW1wb3J0YW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgc3RhdGljIFNob3J0aGFuZEhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAg
eworICAgICAgICByZXR1cm4gU2hvcnRoYW5kSGFuZGxlcigmcGFyc2VWYWx1ZSk7CisgICAgfQor
fTsKKwordGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBD
U1NQcm9wZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCB0aHJl
ZSA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmb3VyID0gQ1NTUHJvcGVydHlJ
bnZhbGlkPgorY2xhc3MgRm91clZhbHVlc1Nob3J0aGFuZEhhbmRsZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJv
b2wgaW1wb3J0YW50KQorICAgIHsKKyAgICAgICAgLyogRnJvbSB0aGUgQ1NTIDIgc3BlY3MsIDgu
MworICAgICAgICAgKiBJZiB0aGVyZSBpcyBvbmx5IG9uZSB2YWx1ZSwgaXQgYXBwbGllcyB0byBh
bGwgc2lkZXMuIElmIHRoZXJlIGFyZSB0d28gdmFsdWVzLCB0aGUgdG9wIGFuZAorICAgICAgICAg
KiBib3R0b20gbWFyZ2lucyBhcmUgc2V0IHRvIHRoZSBmaXJzdCB2YWx1ZSBhbmQgdGhlIHJpZ2h0
IGFuZCBsZWZ0IG1hcmdpbnMgYXJlIHNldCB0byB0aGUgc2Vjb25kLgorICAgICAgICAgKiBJZiB0
aGVyZSBhcmUgdGhyZWUgdmFsdWVzLCB0aGUgdG9wIGlzIHNldCB0byB0aGUgZmlyc3QgdmFsdWUs
IHRoZSBsZWZ0IGFuZCByaWdodCBhcmUgc2V0IHRvIHRoZQorICAgICAgICAgKiBzZWNvbmQsIGFu
ZCB0aGUgYm90dG9tIGlzIHNldCB0byB0aGUgdGhpcmQuIElmIHRoZXJlIGFyZSBmb3VyIHZhbHVl
cywgdGhleSBhcHBseSB0byB0aGUgdG9wLAorICAgICAgICAgKiByaWdodCwgYm90dG9tLCBhbmQg
bGVmdCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgKi8KKworICAgICAgICBpbnQgbnVtID0gcGFy
c2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAxIDogcGFyc2VyLT5tX3ZhbHVlTGlzdC0+c2l6ZSgp
OworCisgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElkKTsKKworICAg
ICAgICAvLyB0aGUgb3JkZXIgaXMgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0CisgICAgICAgIHN3
aXRjaCAobnVtKSB7CisgICAgICAgIGNhc2UgMTogeworICAgICAgICAgICAgaWYgKCFwYXJzZXIt
PnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0
aWVzW3BhcnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOworICAgICAgICAg
ICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBhcnNlciwgUHJvcGVydHlJbXBsaWNpdCk7
CisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHR3bywgdmFsdWUsIGltcG9ydGFudCk7
CisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHRocmVlLCB2YWx1ZSwgaW1wb3J0YW50
KTsKKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoZm91ciwgdmFsdWUsIGltcG9ydGFu
dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDI6IHsKKyAg
ICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSB8fCAhcGFy
c2VyLT5wYXJzZVZhbHVlKHR3bywgaW1wb3J0YW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXItPm1fcGFyc2VkUHJv
cGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAg
ICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZShwYXJzZXIsIFByb3BlcnR5SW1wbGlj
aXQpOworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0aHJlZSwgdmFsdWUsIGltcG9y
dGFudCk7CisgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzW3Bh
cnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgcGFy
c2VyLT5hZGRQcm9wZXJ0eShmb3VyLCB2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMzogeworICAgICAgICAgICAgaWYgKCFwYXJz
ZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQpIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUodHdv
LCBpbXBvcnRhbnQpIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUodGhyZWUsIGltcG9ydGFudCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVl
ID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXNbcGFyc2VyLT5tX251bVBhcnNlZFByb3BlcnRp
ZXMtMl0tPnZhbHVlKCk7CisgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUo
cGFyc2VyLCBQcm9wZXJ0eUltcGxpY2l0KTsKKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVy
dHkoZm91ciwgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIDQ6IHsKKyAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVl
KG9uZSwgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHR3bywgaW1wb3J0YW50KQor
ICAgICAgICAgICAgICAgIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUodGhyZWUsIGltcG9ydGFudCkg
fHwgIXBhcnNlci0+cGFyc2VWYWx1ZShmb3VyLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRl
ZmF1bHQ6IHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIFNob3J0aGFuZEhh
bmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAgeworICAgICAgICByZXR1cm4gU2hvcnRoYW5kSGFu
ZGxlcigmcGFyc2VWYWx1ZSk7CisgICAgfQorfTsKKwordGVtcGxhdGUgPHVuc2lnbmVkIG51bVBy
b3BlcnRpZXMsIENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9w
ZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCB0aHJlZSA9IENT
U1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmb3VyID0gQ1NTUHJvcGVydHlJbnZhbGlk
LCBDU1NQcm9wZXJ0eUlEIGZpdmUgPSBDU1NQcm9wZXJ0eUludmFsaWQ+CitjbGFzcyBHZW5lcmlj
U2hvcnRoYW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNlciwgYm9vbCBpbXBvcnRhbnQpCisgICAgeworICAg
ICAgICAvLyBXZSB0cnkgdG8gbWF0Y2ggYXMgbWFueSBwcm9wZXJ0aWVzIGFzIHBvc3NpYmxlCisg
ICAgICAgIC8vIFdlIHNldCB1cCBhbiBhcnJheSBvZiBib29sZWFucyB0byBtYXJrIHdoaWNoIHBy
b3BlcnR5IGhhcyBiZWVuIGZvdW5kLAorICAgICAgICAvLyBhbmQgd2UgdHJ5IHRvIHNlYXJjaCBm
b3IgcHJvcGVydGllcyB1bnRpbCBpdCBtYWtlcyBubyBsb25nZXIgYW55IHNlbnNlLgorICAgICAg
ICBTaG9ydGhhbmRTY29wZSBzY29wZShwYXJzZXIsIHByb3BJZCk7CisKKyAgICAgICAgYm9vbCBm
b3VuZCA9IGZhbHNlOworICAgICAgICBib29sIGZuZFs2XTsgLy8gVHJ1c3QgbWUgOykKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCisgICAgICAgICAgICBm
bmRbaV0gPSBmYWxzZTsKKworICAgICAgICB3aGlsZSAocGFyc2VyLT5tX3ZhbHVlTGlzdC0+Y3Vy
cmVudCgpKSB7CisgICAgICAgICAgICBmb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChp
bnQgcHJvcEluZGV4ID0gMDsgIWZvdW5kICYmIHByb3BJbmRleCA8IG51bVByb3BlcnRpZXM7ICsr
cHJvcEluZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKCFmbmRbcHJvcEluZGV4XSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAocGFyc2VyLT5wYXJzZVZhbHVlKHByb3BlcnRpZXNbcHJvcElu
ZGV4XSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuZFtwcm9wSW5kZXhd
ID0gZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgYXQgbGVhc3Qgb25lIG1hdGNoLCB0aGlzIGlz
IGFuCisgICAgICAgICAgICAvLyBpbnZhbGlkIHNob3J0aGFuZCBhbmQgd2UgaGF2ZSB0byBpZ25v
cmUgaXQKKyAgICAgICAgICAgIGlmICghZm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsbCBpbiBhbnkgcmVtYWluaW5nIHByb3Bl
cnRpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZS4KKyAgICAgICAgSW1wbGljaXRTY29wZSBpbXBs
aWNpdFNjb3BlKHBhcnNlciwgUHJvcGVydHlJbXBsaWNpdCk7CisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgICAgICBpZiAoIWZuZFtpXSkK
KyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHBhcnNl
ci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFu
dCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRSA6IG5vdCB2ZXJ5IGdlbmVyaWMgaGVy
ZS4KKyAgICAgICAgaWYgKHByb3BJZCA9PSBDU1NQcm9wZXJ0eUJvcmRlcikgeworICAgICAgICAg
ICAgLy8gVGhlIENTUzMgQm9yZGVycyBhbmQgQmFja2dyb3VuZHMgc3BlY2lmaWNhdGlvbiBzYXlz
IHRoYXQgYm9yZGVyIGFsc28gcmVzZXRzIGJvcmRlci1pbWFnZS4gSXQncyBhcworICAgICAgICAg
ICAgLy8gdGhvdWdoIGEgdmFsdWUgb2Ygbm9uZSB3YXMgc3BlY2lmaWVkIGZvciB0aGUgaW1hZ2Uu
CisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2Us
IHBhcnNlci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGlt
cG9ydGFudCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU2hvcnRoYW5kSGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBTaG9ydGhhbmRIYW5kbGVyKCZwYXJzZVZhbHVlKTsKKyAgICB9Citwcml2YXRlOgor
ICAgIHN0YXRpYyBjb25zdCBpbnQgcHJvcGVydGllc1s1XTsKK307Cit0ZW1wbGF0ZSA8dW5zaWdu
ZWQgbnVtUHJvcGVydGllcywgQ1NTUHJvcGVydHlJRCBvbmUsIENTU1Byb3BlcnR5SUQgdHdvICwg
Q1NTUHJvcGVydHlJRCB0aHJlZSAsIENTU1Byb3BlcnR5SUQgZm91ciwgQ1NTUHJvcGVydHlJRCBm
aXZlPgorY29uc3QgaW50IEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPG51bVByb3BlcnRpZXMsIG9u
ZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZT46OnByb3BlcnRpZXNbNV0gPSAgeyBvbmUsIHR3bywg
dGhyZWUsIGZvdXIsIGZpdmUgfTsKKworY29uc3QgaW50IGNNYXhGaWxsUHJvcGVydGllcyA9IDk7
CisKK3RlbXBsYXRlIDx1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzLCBDU1NQcm9wZXJ0eUlEIG9uZSA9
IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCB0d28gPSBDU1NQcm9wZXJ0eUludmFs
aWQsIENTU1Byb3BlcnR5SUQgdGhyZWUgPSBDU1NQcm9wZXJ0eUludmFsaWQsCisgICAgICAgICAg
Q1NTUHJvcGVydHlJRCBmb3VyID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIGZp
dmUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQgc2l4ID0gQ1NTUHJvcGVydHlJ
bnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHNldmVuID0gQ1NTUHJvcGVydHlJbnZhbGlkPgorY2xhc3Mg
RmlsbFNob3J0aGFuZEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFs
dWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG51bVByb3BlcnRpZXMgPD0gY01heEZpbGxQcm9wZXJ0aWVzKTsKKyAg
ICAgICAgaWYgKG51bVByb3BlcnRpZXMgPiBjTWF4RmlsbFByb3BlcnRpZXMpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUocGFyc2VyLCBw
cm9wSWQpOworCisgICAgICAgIGJvb2wgcGFyc2VkUHJvcGVydHlbY01heEZpbGxQcm9wZXJ0aWVz
XSA9IHsgZmFsc2UgfTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZXNbY01heEZpbGxQ
cm9wZXJ0aWVzXTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBjbGlwVmFsdWU7CisgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gcG9zaXRpb25ZVmFsdWU7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZT4gcmVwZWF0WVZhbHVlOworICAgICAgICBib29sIGZvdW5kQ2xpcCA9IGZhbHNlOworICAgICAg
ICBpbnQgaTsKKworICAgICAgICB3aGlsZSAocGFyc2VyLT5tX3ZhbHVlTGlzdC0+Y3VycmVudCgp
KSB7CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsID0gcGFyc2VyLT5tX3ZhbHVlTGlz
dC0+Y3VycmVudCgpOworICAgICAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1
ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7CisgICAgICAgICAgICAgICAgLy8g
V2UgaGl0IHRoZSBlbmQuICBGaWxsIGluIGFsbCByZW1haW5pbmcgdmFsdWVzIHdpdGggdGhlIGlu
aXRpYWwgdmFsdWUuCisgICAgICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdC0+bmV4dCgp
OworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IgJiYgcGFyc2VkUHJvcGVydHlbaV0pCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBDb2xvciBpcyBub3QgYWxsb3dlZCBleGNlcHQgYXMgdGhlIGxhc3QgaXRlbSBpbiBhIGxp
c3QgZm9yIGJhY2tncm91bmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVqZWN0IHRo
ZSBlbnRpcmUgcHJvcGVydHkuCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSAmJiBwcm9wZXJ0
aWVzW2ldICE9IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJzZXItPmFkZEZpbGxWYWx1ZSh2YWx1ZXNbaV0sIHBhcnNlci0+Y3NzVmFsdWVQ
b29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24g
fHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxWYWx1ZShwb3NpdGlvbllWYWx1
ZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXQgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFs
dWUocmVwZWF0WVZhbHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdElu
aXRpYWxWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pICYmICFwYXJzZWRQcm9wZXJ0eVtpXSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGJhY2tncm91bmQtb3JpZ2luIHdhc24ndCBwcmVz
ZW50LCB0aGVuIHJlc2V0IGJhY2tncm91bmQtY2xpcCBhbHNvLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgcGFyc2VyLT5jc3NWYWx1
ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGFy
c2VkUHJvcGVydHlbaV0gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKCFwYXJzZXItPm1fdmFsdWVMaXN0LT5jdXJyZW50KCkpCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sIGZvdW5kID0gZmFs
c2U7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyAhZm91bmQgJiYgaSA8IG51bVByb3BlcnRpZXM7
ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwxOworICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDI7CisgICAgICAgICAgICAgICAgICAgIGludCBwcm9wSWQx
LCBwcm9wSWQyOworICAgICAgICAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSogcGFyc2VyVmFs
dWUgPSBwYXJzZXItPm1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChwYXJzZXItPnBhcnNlRmlsbFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHByb3BJZDEsIHBy
b3BJZDIsIHZhbDEsIHZhbDIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRQcm9w
ZXJ0eVtpXSA9IGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+
YWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwgdmFsMS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b24gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxWYWx1ZShwb3NpdGlvbllW
YWx1ZSwgdmFsMi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3Bl
cnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0IHx8IHByb3BlcnRpZXNbaV0g
PT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHJlcGVhdFlWYWx1ZSwgdmFsMi5yZWxlYXNlKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kT3JpZ2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNr
T3JpZ2luKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwYXJzZSB0aGUgdmFs
dWUgYXMgYSBjbGlwLCBhbmQgc2VlIGlmIHdlIHN1Y2NlZWQuCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHBhcnNlci0+cGFyc2VCYWNrZ3JvdW5kQ2xpcChwYXJzZXJWYWx1ZSwgdmFs
MSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgdmFsMS5yZWxlYXNlKCkpOyAvLyBU
aGUgcHJvcGVydHkgcGFyc2VkIHN1Y2Nlc3NmdWxseS4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmls
bFZhbHVlKGNsaXBWYWx1ZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJ
bml0aWFsVmFsdWUoKSk7IC8vIFNvbWUgdmFsdWUgd2FzIHVzZWQgZm9yIG9yaWdpbiB0aGF0IGlz
IG5vdCBzdXBwb3J0ZWQgYnkgY2xpcC4gSnVzdCByZXNldCBjbGlwIGluc3RlYWQuCisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGll
c1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NT
UHJvcGVydHlXZWJraXRNYXNrQ2xpcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFVwZGF0ZSBjbGlwVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFk
ZEZpbGxWYWx1ZShjbGlwVmFsdWUsIHZhbDEucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3VuZENsaXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gsIHRo
aXMgaXMgYW4KKyAgICAgICAgICAgIC8vIGludmFsaWQgc2hvcnRoYW5kIGFuZCB3ZSBoYXZlIHRv
IGlnbm9yZSBpdAorICAgICAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaWxsIGluIGFueSByZW1haW5pbmcg
cHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgorICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5
W2ldKSB7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUodmFsdWVzW2ldLCBw
YXJzZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKKyAg
ICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvbiB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
KQorICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxWYWx1ZShwb3NpdGlvbllWYWx1
ZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7
CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
KQorICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxWYWx1ZShyZXBlYXRZVmFsdWUs
IHBhcnNlci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwor
ICAgICAgICAgICAgICAgIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW4gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4p
ICYmICFwYXJzZWRQcm9wZXJ0eVtpXSkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiBiYWNr
Z3JvdW5kLW9yaWdpbiB3YXNuJ3QgcHJlc2VudCwgdGhlbiByZXNldCBiYWNrZ3JvdW5kLWNsaXAg
YWxzby4KKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUoY2xpcFZhbHVl
LCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBOb3cgYWRkIGFsbCBvZiB0aGUgcHJvcGVydGllcyB3ZSBmb3VuZC4KKyAgICAgICAgZm9yIChp
ID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykgeworICAgICAgICAgICAgaWYgKHByb3BlcnRp
ZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAg
ICBwYXJzZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgdmFs
dWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgICAgICAvLyBpdCdzIE9L
IHRvIGNhbGwgcG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2VlIENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIG9uY2UKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgcG9zaXRpb25ZVmFsdWUu
cmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0aWVz
W2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAg
cGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIHZhbHVl
c1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgLy8gaXQncyBPSyB0
byBjYWxsIHBvc2l0aW9uWVZhbHVlLnJlbGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiBvbmNlCisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIHBvc2l0aW9uWVZhbHVlLnJl
bGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQpIHsKKyAgICAgICAgICAgICAgICBwYXJz
ZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIHZhbHVlc1tpXS5y
ZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxs
IHJlcGVhdFlWYWx1ZS5yZWxlYXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb24gb25jZQorICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgcmVwZWF0WVZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXQpIHsKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIHZhbHVlc1tpXS5yZWxlYXNlKCksIGlt
cG9ydGFudCk7CisgICAgICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxsIHJlcGVhdFlWYWx1
ZS5yZWxlYXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b24gb25jZQorICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WSwgcmVwZWF0WVZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ2xpcCB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApICYm
ICFmb3VuZENsaXApCisgICAgICAgICAgICAgICAgLy8gVmFsdWUgaXMgYWxyZWFkeSBzZXQgd2hp
bGUgdXBkYXRpbmcgb3JpZ2luCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ld
LCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworCisgICAgICAgICAgICAvLyBBZGQg
aW4gY2xpcCB2YWx1ZXMgd2hlbiB3ZSBoaXQgdGhlIGNvcnJlc3BvbmRpbmcgb3JpZ2luIHByb3Bl
cnR5LgorICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kT3JpZ2luICYmICFmb3VuZENsaXApCisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBjbGlwVmFsdWUucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tPcmlnaW4gJiYgIWZvdW5kQ2xpcCkKKyAgICAgICAgICAgICAgICBwYXJzZXIt
PmFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIGNsaXBWYWx1ZS5yZWxlYXNl
KCksIGltcG9ydGFudCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBzdGF0aWMgU2hvcnRoYW5kSGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTaG9ydGhhbmRIYW5kbGVyKCZwYXJzZVZhbHVlKTsKKyAgICB9Citwcml2
YXRlOgorICAgIHN0YXRpYyBjb25zdCBpbnQgcHJvcGVydGllc1s3XTsKK307CisKK3RlbXBsYXRl
IDx1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzLCBDU1NQcm9wZXJ0eUlEIG9uZSwgQ1NTUHJvcGVydHlJ
RCB0d28gLCBDU1NQcm9wZXJ0eUlEIHRocmVlICwgQ1NTUHJvcGVydHlJRCBmb3VyLCBDU1NQcm9w
ZXJ0eUlEIGZpdmUsIENTU1Byb3BlcnR5SUQgc2l4LCBDU1NQcm9wZXJ0eUlEIHNldmVuPgorY29u
c3QgaW50IEZpbGxTaG9ydGhhbmRIYW5kbGVyPG51bVByb3BlcnRpZXMsIG9uZSwgdHdvLCB0aHJl
ZSwgZm91ciwgZml2ZSwgc2l4LCBzZXZlbj46OnByb3BlcnRpZXNbN10gPSAgeyBvbmUsIHR3bywg
dGhyZWUsIGZvdXIsIGZpdmUsIHNpeCwgc2V2ZW4gfTsKKworY29uc3QgQ1NTUGFyc2VyU2hvcnRo
YW5kcyYgQ1NTUGFyc2VyU2hvcnRoYW5kczo6c2hhcmVkQ1NTUGFyc2VyU2hvcnRoYW5kcygpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQYXJzZXJTaG9ydGhhbmRzLCBjc3NDU1NQYXJz
ZXJTaG9ydGhhbmRzSW5zdGFuY2UsICgpKTsKKyAgICByZXR1cm4gY3NzQ1NTUGFyc2VyU2hvcnRo
YW5kc0luc3RhbmNlOworfQorCitDU1NQYXJzZXJTaG9ydGhhbmRzOjpDU1NQYXJzZXJTaG9ydGhh
bmRzKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkK
KyAgICAgICAgbV9oYW5kbGVyTWFwW2ldID0gU2hvcnRoYW5kSGFuZGxlcigpOworCisgICAgLy8g
UG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlzIGFycmF5IGJlY2F1c2UgYSBw
bGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKKyAgICAvLyBpbiBxdWlya3MgbW9kZSBidXQg
aXQncyB1c3VhbGx5IHRoZSBYIGNvb3JkaW5hdGUgb2YgYSBwb3NpdGlvbi4KKyAgICAvLyBGSVhN
RTogQWRkIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUgdG8gdGhlIHNob3J0aGFuZC4KKyAgICBz
ZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgRmlsbFNob3J0aGFuZEhh
bmRsZXI8NywgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb24sIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENT
U1Byb3BlcnR5Qm9yZGVyLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eUJv
cmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbUNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5k
bGVyKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIEZvdXJWYWx1ZXNTaG9ydGhhbmRIYW5kbGVyPENT
U1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0LCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENv
bG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHQsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRs
ZXIoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBUd29WYWx1ZXNTaG9ydGhhbmRIYW5kbGVyPENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyVmVydGljYWxTcGFjaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhh
bmRIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIEZvdXJWYWx1ZXNTaG9ydGhhbmRIYW5k
bGVyPENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHls
ZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5
bGU+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVy
dHlCb3JkZXJUb3AsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9w
Q29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJv
cGVydHlCb3JkZXJXaWR0aCwgRm91clZhbHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlC
b3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aD46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUxpc3RTdHlsZSwgR2Vu
ZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5TWFyZ2luLCBG
b3VyVmFsdWVzU2hvcnRoYW5kSGFuZGxlcjxDU1NQcm9wZXJ0eU1hcmdpblRvcCwgQ1NTUHJvcGVy
dHlNYXJnaW5SaWdodCwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIENTU1Byb3BlcnR5TWFyZ2lu
TGVmdD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9w
ZXJ0eU91dGxpbmUsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5T3V0bGlu
ZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlQ
YWRkaW5nLCBGb3VyVmFsdWVzU2hvcnRoYW5kSGFuZGxlcjxDU1NQcm9wZXJ0eVBhZGRpbmdUb3As
IENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sIENTU1By
b3BlcnR5UGFkZGluZ0xlZnQ+OjpjcmVhdGVIYW5kbGVyKCkpOworCisgICAgc2V0U2hvcnRoYW5k
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyLCBHZW5lcmljU2hvcnRoYW5kSGFu
ZGxlcjwzLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgsIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yPjo6
Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxl
LCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kLCBHZW5l
cmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoLCBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVu
ZENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDMsIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dFN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3I+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zLCBH
ZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwyLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRT
aG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZSwgR2VuZXJpY1Nob3J0
aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xv
cj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEZsZXhGbG93LCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwyLCBDU1NQcm9wZXJ0eVdl
YmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXA+OjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5D
b2xsYXBzZSwgVHdvVmFsdWVzU2hvcnRoYW5kSGFuZGxlcjxDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkJlZm9yZUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjw1LCBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5
bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAg
ICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFzaywgRmlsbFNob3J0aGFu
ZEhhbmRsZXI8NiwgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQ2xpcD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcywgR2VuZXJpY1Nob3J0aGFuZEhhbmRs
ZXI8MiwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXNDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5k
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UsIEdlbmVyaWNTaG9ydGhhbmRIYW5k
bGVyPDIsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2VDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFdyYXAsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDMsIENT
U1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbj46OmNy
ZWF0ZUhhbmRsZXIoKSk7Cit9CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlclNob3J0aGFuZHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9y
dGhhbmRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM2ZGQxZTJiNWNhOGNlNWRlMTdjM2QwMTZhYTkzMjFhY2I4
MWQ1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9y
dGhhbmRzLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIENTU1BhcnNlclNob3J0aGFuZHNfaAorI2RlZmluZSBDU1NQYXJzZXJTaG9ydGhhbmRz
X2gKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDU1NQYXJzZXI7CisKK2NsYXNzIFNob3J0aGFuZEhhbmRsZXIgeworcHVi
bGljOgorICAgIHR5cGVkZWYgYm9vbCAoKlBhcnNlRnVuY3Rpb24pKGludCwgQ1NTUGFyc2VyKiwg
Ym9vbCk7CisgICAgU2hvcnRoYW5kSGFuZGxlcigpIDogbV9wYXJzZSgwKSB7IH0KKyAgICBTaG9y
dGhhbmRIYW5kbGVyKFBhcnNlRnVuY3Rpb24gcGFyc2UpIDogbV9wYXJzZShwYXJzZSkgeyB9Cisg
ICAgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIENTU1BhcnNlciogcGFyc2VyLCBib29sIGlt
cG9ydGFudCkgY29uc3QgeyBBU1NFUlQobV9wYXJzZSk7IHJldHVybiAoKm1fcGFyc2UpKHByb3BJ
ZCwgcGFyc2VyLCBpbXBvcnRhbnQpOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZTsgfQorICAgIFBhcnNlRnVuY3Rpb24gcGFyc2VGdW5jdGlvbigpIHsgcmV0dXJu
IG1fcGFyc2U7IH0KK3ByaXZhdGU6CisgICAgUGFyc2VGdW5jdGlvbiBtX3BhcnNlOworfTsKKwor
Y2xhc3MgQ1NTUGFyc2VyU2hvcnRoYW5kcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NT
UGFyc2VyU2hvcnRoYW5kcyk7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IENTU1BhcnNlclNo
b3J0aGFuZHMmIHNoYXJlZENTU1BhcnNlclNob3J0aGFuZHMoKTsKKworICAgIGNvbnN0IFNob3J0
aGFuZEhhbmRsZXImIHNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWxpZChwcm9wZXJ0eSkpOworICAgICAgICByZXR1
cm4gbV9oYW5kbGVyTWFwW2luZGV4KHByb3BlcnR5KV07CisgICAgfQorCitwcml2YXRlOgorICAg
IENTU1BhcnNlclNob3J0aGFuZHMoKTsKKworICAgIHN0YXRpYyBpbnQgaW5kZXgoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eSAtIGZpcnN0Q1NT
UHJvcGVydHk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgdmFsaWQoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGludCBpID0gaW5kZXgocHJvcGVydHkpOworICAgICAg
ICByZXR1cm4gaSA+PSAwICYmIGkgPCBudW1DU1NQcm9wZXJ0aWVzOworICAgIH0KKworICAgIHZv
aWQgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBTaG9ydGhhbmRI
YW5kbGVyIGhhbmRsZXIpCisgICAgeworICAgICAgICBBU1NFUlQodmFsaWQocHJvcGVydHkpKTsK
KyAgICAgICAgQVNTRVJUKCFzaG9ydGhhbmRIYW5kbGVyKHByb3BlcnR5KS5pc1ZhbGlkKCkpOwor
ICAgICAgICBtX2hhbmRsZXJNYXBbaW5kZXgocHJvcGVydHkpXSA9IGhhbmRsZXI7CisgICAgfQor
CisgICAgU2hvcnRoYW5kSGFuZGxlciBtX2hhbmRsZXJNYXBbbnVtQ1NTUHJvcGVydGllc107Cit9
OworCit9CisKKyNlbmRpZiAvLyBDU1NQYXJzZXJTaG9ydGhhbmRzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124341</attachid>
            <date>2012-01-27 11:42:09 -0800</date>
            <delta_ts>2012-01-27 12:06:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77129-20120127164206.patch</filename>
            <type>text/plain</type>
            <size>70806</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDczYzg5Y2NkNWFhMjM3
OWZiMDQ2N2E2ZTU0NTM1YzQ5MzBkYjYwYS4uM2JhZTkxZDMxODBjY2NkZDE1Nzg2YmNlNDFmMWMw
YmZhNzYyNWJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAxLTI3ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFNpbXBs
aWZ5IENTUyBzaG9ydGhhbmQgaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIENTUyBzaG9ydGhhbmQgaGFuZGxpbmcgaW50byBh
IHNlcGFyYXRlIGNsYXNzIGluc3BpcmVkCisgICAgICAgIGEgYml0IGZyb20gQ1NTU3R5bGVBcHBs
eVZhbHVlLiBJdCB1c2VzIGhhbmRsZXIgdGhhdCBlYWNoIHNob3J0aGFuZAorICAgICAgICBzcGVj
aWZ5LiBUaGlzIGhhbmRsZXIgaXMgcmVzcG9uc2libGUgdG8gcGFyc2UgdGhlIHNob3J0aGFuZCBj
b3JyZWN0bHkuCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2UgY291bGQgZXh0ZW5kIHRoaXMgaGFu
ZGxlciB0byBleHBhbmQgdGhlIGxvbmdoYW5kcworICAgICAgICBhbmQgc2V0IHRoZW0gdG8gaW5p
dGlhbCBvciBpbmhlcml0LiAKKworICAgICAgICBObyBuZXcgdGVzdHMgOiBJdCdzIGEgcmVmYWN0
b3JpbmcKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9u
ZS5jcHA6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJhY2tncm91bmRDbGlw
KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENTU1BhcnNlcik6CisgICAgICAgICgpOgorICAgICAgICAoSW1wbGljaXRTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdFNjb3BlOjpJbXBsaWNpdFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltcGxpY2l0U2NvcGU6On5JbXBsaWNpdFNjb3BlKToKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyU2hvcnRoYW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFR3b1ZhbHVlc1Nob3J0aGFuZEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHdvVmFs
dWVzU2hvcnRoYW5kSGFuZGxlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUd29W
YWx1ZXNTaG9ydGhhbmRIYW5kbGVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEZvdXJWYWx1
ZXNTaG9ydGhhbmRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvdXJWYWx1ZXNTaG9ydGhh
bmRIYW5kbGVyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvdXJWYWx1ZXNTaG9y
dGhhbmRIYW5kbGVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEdlbmVyaWNTaG9ydGhhbmRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyOjpwYXJz
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyOjpjcmVh
dGVIYW5kbGVyKToKKyAgICAgICAgKCk6CisgICAgICAgIChGaWxsU2hvcnRoYW5kSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpGaWxsU2hvcnRoYW5kSGFuZGxlcjo6cGFyc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsU2hvcnRoYW5kSGFuZGxlcjo6Y3JlYXRlSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnNoYXJlZENTU1BhcnNlclNob3J0
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OkNTU1BhcnNlclNo
b3J0aGFuZCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlclNob3J0aGFuZC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hvcnRoYW5kSGFuZGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaG9ydGhhbmRIYW5kbGVyOjpTaG9ydGhhbmRIYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNob3J0aGFuZEhhbmRsZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hvcnRoYW5kSGFuZGxlcjo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTaG9ydGhhbmRI
YW5kbGVyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKENTU1BhcnNlclNob3J0aGFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnNob3J0aGFuZEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2hvcnRoYW5kOjppbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNob3J0aGFuZDo6c2V0U2hvcnRoYW5kSGFuZGxlcik6CisKIDIwMTItMDEtMjcgIE5v
J2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
W1dLMl0gQ2hpbGQgbGF5ZXJzIGFwcGVhciBpbiB3cm9uZyBwb3NpdGlvbiB3aGVuIHNjcm9sbGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxODMwNmE3NjRhZTVmZDFlNjFmYjRlZTNhMjY3ODQ0
YTBkODIyMTkzLi40NDAzMmEyMTJlYjlhMzk1ZDY3NjgyNDE3ZWQwNWY4ZmZjOWRmOTNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtNDU2LDYgKzQ1Niw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBjc3MvQ1NTT01VdGlscy5jcHAKICAgICBjc3MvQ1NTUGFnZVJ1bGUuY3BwCiAgICAgY3Nz
L0NTU1BhcnNlci5jcHAKKyAgICBjc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcAogICAgIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAogICAgIGNz
cy9DU1NQcm9wZXJ0eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDY4MGRi
ZDY1Mzk1OTRmNDA0OWJmM2JhMjgzNmU0NjljMDVkZTZjMGUuLjY0ZDc1ZmZmNjczODlmZjk1ZDgy
Yzk0YWQzOGRhOTgwMDRjNjVkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MTMzNyw2ICsxMzM3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFnZVJ1bGUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclNob3J0aGFuZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9y
dGhhbmQuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA2ZjU0NDY1MGI3Y2VjYWYw
NjE5M2YwYzU0NjJhY2Y0NDA0NWZmYTcyLi44MzZjMzM4ODczMzJhZWM0ZDEwZGNmOGUyNmIzODQw
NTcyMzY5OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTQxOSw2ICs0MTksNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBjc3MvQ1NTT01VdGlscy5jcHAgXAogICAgIGNzcy9DU1NQYWdlUnVsZS5jcHAgXAogICAg
IGNzcy9DU1NQYXJzZXIuY3BwIFwKKyAgICBjc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcCBcCiAg
ICAgY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAgXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eS5jcHAgXApAQCAtMTUzMSw2ICsxNTMyLDcgQEAgSEVB
REVSUyArPSBcCiAgICAgY3NzL0NTU09NVXRpbHMuaCBcCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmgg
XAogICAgIGNzcy9DU1NQYXJzZXIuaCBcCisgICAgY3NzL0NTU1BhcnNlclNob3J0aGFuZC5oIFwK
ICAgICBjc3MvQ1NTUGFyc2VyVmFsdWVzLmggXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
IFwKICAgICBjc3MvQ1NTUHJvcGVydHkuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzQyY2ViMmIw
Y2U2YjA5NGQxZGJkMmJiN2MwZjY2NDI0Y2M1ZmJkMy4uMzI0MGY3MDdjY2E4ZjVlYzA0YzRjMDU3
NWMxZmM5YTIxZjY0M2YwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAyNSw2ICsyMDI1LDggQEAK
ICAgICAgICAgICAgICdjc3MvQ1NTUGFnZVJ1bGUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Bh
cnNlci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQYXJzZXIuaCcsCisgICAgICAgICAgICAn
Y3NzL0NTU1BhcnNlclNob3J0aGFuZC5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQYXJzZXJT
aG9ydGhhbmQuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAnLAogICAg
ICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwMzUwMzk5MzRhNjE1NTU4MGI1N2U0MDkyZDUyMGNh
MWNhYTYxMzExLi5lNjc3NzFiMDRkYTg5NGE4NWFkYWJiYTc4MWNkOWIwMWMzYjA2MmQ4IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzQxNjEs
NiArMzQxNjEsNjIgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQYXJzZXIuaCIKIAkJ
CQk+CiAJCQk8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQYXJzZXJTaG9y
dGhhbmQuY3BwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IkRlYnVnfFdpbjMyIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOYW1lPSJSZWxlYXNlfFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGVD
b25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZUNvbmZp
Z3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJE
ZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZp
Z3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJh
dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlJlbGVh
c2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1
cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRp
b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQYXJzZXJTaG9y
dGhhbmQuaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAg
ICAgICAgICAgICAgPC9GaWxlPgogCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xD
U1NQYXJzZXJWYWx1ZXMuY3BwIgogCQkJCT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YmRhMGFlNWQzZTkzMWZmOWYxMDQwOWM3
MDY3ZTgyNzk1N2ZkNjczLi5kNDJhYmQ4NjNjYzk3MTMzZTQwMGI2NDA1ZDcyMTVlMDQ0MGY4MWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC01NzcyLDYgKzU3NzIsOCBAQAogCQlFMUNBNUNCQzBFOENEQ0FGMDBFOEVGOTAgLyog
SlNXb3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFDQTVDQkIwRThDRENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCAq
LzsgfTsKIAkJRTFDQUE1QzYwRThCRDIzNjAwQTczRUNBIC8qIEpTV29ya2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNBQTVDNTBFOEJEMjM2MDBB
NzNFQ0EgLyogSlNXb3JrZXIuaCAqLzsgfTsKIAkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8q
IFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUUxQkVGRjExNUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJk
Q29kZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMUU1REQxODE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTVERDE2MTREMzEx
RjUwMDg3RUQ1NSAvKiBDU1NQYXJzZXJTaG9ydGhhbmQuY3BwICovOyB9OworCQlFMUU1REQxOTE0
RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1REQxNzE0RDMxMUY1MDA4N0VENTUgLyog
Q1NTUGFyc2VyU2hvcnRoYW5kLmggKi87IH07CiAJCUUxRTZFRUE0MEI2MjhEQTgwMDVGMkY3MCAv
KiBKU0hUTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRTZFRUEzMEI2MjhEQTgwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RF
bGVtZW50LmNwcCAqLzsgfTsKIAkJRTFFNkVFQTgwQjYyOERCMzAwNUYyRjcwIC8qIEpTSFRNTFNl
bGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxRTZFRUE3MEI2MjhEQjMwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmggKi87
IH07CiAJCUUxRUJCQkQ0MEFBQzlCODcwMDFGRThFMiAvKiBDU1NDaGFyc2V0UnVsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVCQkJEMzBBQUM5
Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICovOyB9OwpAQCAtMTI3MjEsNiArMTI3
MjMsOCBAQAogCQlFMUNBNUNCQjBFOENEQ0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0Eg
LyogSlNXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFMUJFRkYxMTVGRjZGQjAwNkY1MkNB
IC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdpbmRvd3NLZXlib2FyZENvZGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUxRTVERDE2MTREMzExRjUwMDg3RUQ1NSAvKiBDU1NQYXJzZXJTaG9ydGhhbmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFNUREMTcxNEQzMTFGNTAwODdFRDU1IC8q
IENTU1BhcnNlclNob3J0aGFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NQYXJzZXJTaG9ydGhhbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFNkVF
QTMwQjYyOERBODAwNUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MU2VsZWN0RWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRTZFRUE3MEI2MjhEQjMwMDVGMkY3MCAvKiBKU0hU
TUxTZWxlY3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gSlNI
VE1MU2VsZWN0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVCQkJE
MzBBQUM5Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ2hhcnNldFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTk5NTgsNiArMTk5NjIsOCBAQAogCQkJCTg1QzU2Q0E2MEFBODlENUYw
MEQ5NTc1NSAvKiBDU1NQYWdlUnVsZS5pZGwgKi8sCiAJCQkJQkM3NzJCMzcwQzRFQTkxRTAwODMy
ODVGIC8qIENTU1BhcnNlci5jcHAgKi8sCiAJCQkJQkM3NzJCMzgwQzRFQTkxRTAwODMyODVGIC8q
IENTU1BhcnNlci5oICovLAorCQkJCUUxRTVERDE2MTREMzExRjUwMDg3RUQ1NSAvKiBDU1NQYXJz
ZXJTaG9ydGhhbmQuY3BwICovLAorCQkJCUUxRTVERDE3MTREMzExRjUwMDg3RUQ1NSAvKiBDU1NQ
YXJzZXJTaG9ydGhhbmQuaCAqLywKIAkJCQlCQzAyQTUzRjBFMDk5QzVBMDA0QjZEMkIgLyogQ1NT
UGFyc2VyVmFsdWVzLmNwcCAqLywKIAkJCQlCQzAyQTRCNjBFMDk5N0I5MDA0QjZEMkIgLyogQ1NT
UGFyc2VyVmFsdWVzLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1By
aW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI0MDg1LDYgKzI0MDkxLDcgQEAKIAkJCQk4QUQwQTU5
NTE0Qzg4MzM2MDAwRDgzQzUgLyogSlNXZWJLaXRDU1NSZWdpb25SdWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4QUQwQTU5NjE0Qzg4MzU4MDAwRDgzQzUgLyogRE9NV2ViS2l0Q1NTUmVnaW9uUnVs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEFEMEE1OTgxNEM4ODM1ODAwMEQ4M0M1IC8qIERPTVdl
YktpdENTU1JlZ2lvblJ1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFFNUREMTkx
NEQzMTFGNTAwODdFRDU1IC8qIENTU1BhcnNlclNob3J0aGFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNzAxMCw2ICsyNzAxNyw3IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhT
U0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENF
IC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3
QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUU1
REQxODE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggN2Q1ZjI1MGQxYmM4Y2M3NzEx
YWU0ZDUxNGQ5OWRmMTJjNDlkZjQ2Yi4uZDI5NzljOTI0YTFkOTU1ZWZiMjAyY2VkZjA0NDU4MGY5
ZjM5YTBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCkBAIC01Miw2ICs1Miw3IEBA
CiAjaW5jbHVkZSAiQ1NTT01VdGlscy5jcHAiCiAjaW5jbHVkZSAiQ1NTUGFnZVJ1bGUuY3BwIgog
I2luY2x1ZGUgIkNTU1BhcnNlci5jcHAiCisjaW5jbHVkZSAiQ1NTUGFyc2VyU2hvcnRoYW5kLmNw
cCIKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuY3BwIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TG9uZ2hhbmQuY3BwIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGVhZjY3MDMxMzllNDZiNTM2MzZhYjhiZDQ1YmQ4NThk
YmQ3MThhMTYuLjAyOTFlNGZmZjNhZWJlZDFmMjllZDU3ODQ2YmE5YWJiYmVmODMyZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiQ1NTTWVk
aWFSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNs
dWRlICJDU1NQYWdlUnVsZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclNob3J0aGFuZC5oIgogI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCkBAIC0xMDYsMzMgKzEwNyw2IEBAIGV4dGVybiBp
bnQgY3NzeXlwYXJzZSh2b2lkKiBwYXJzZXIpOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiAKLW5hbWVzcGFjZSB7Ci0KLWVudW0gUHJvcGVydHlUeXBlIHsKLSAg
ICBQcm9wZXJ0eUV4cGxpY2l0LAotICAgIFByb3BlcnR5SW1wbGljaXQKLX07Ci0KLWNsYXNzIElt
cGxpY2l0U2NvcGUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltcGxpY2l0U2NvcGUpOwot
cHVibGljOgotICAgIEltcGxpY2l0U2NvcGUoV2ViQ29yZTo6Q1NTUGFyc2VyKiBwYXJzZXIsIFBy
b3BlcnR5VHlwZSBwcm9wZXJ0eVR5cGUpCi0gICAgICAgIDogbV9wYXJzZXIocGFyc2VyKQotICAg
IHsKLSAgICAgICAgbV9wYXJzZXItPm1faW1wbGljaXRTaG9ydGhhbmQgPSBwcm9wZXJ0eVR5cGUg
PT0gUHJvcGVydHlJbXBsaWNpdDsKLSAgICB9Ci0KLSAgICB+SW1wbGljaXRTY29wZSgpCi0gICAg
ewotICAgICAgICBtX3BhcnNlci0+bV9pbXBsaWNpdFNob3J0aGFuZCA9IGZhbHNlOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpDU1NQYXJzZXIqIG1fcGFyc2VyOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMgPSBVSU5UX01BWDsKQEAgLTIwNiw2ICsx
ODAsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBt
X2xhc3RTZWxlY3RvckxpbmVOdW1iZXIoMCkKICAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0cnVl
KQogICAgICwgbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyh0cnVlKQorICAgICwgbV9zaG9y
dGhhbmRQYXJzZXIoQ1NTUGFyc2VyU2hvcnRoYW5kOjpzaGFyZWRDU1NQYXJzZXJTaG9ydGhhbmQo
KSkKIHsKICNpZiBZWURFQlVHID4gMAogICAgIGNzc3l5ZGVidWcgPSAxOwpAQCAtODc4LDcgKzg1
MywxMyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CiAgICAgUmVmUHRyPENTU1Zh
bHVlPiBwYXJzZWRWYWx1ZTsKIAotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4ocHJvcElkKSkgeworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCA9IHN0YXRpY19jYXN0
PENTU1Byb3BlcnR5SUQ+KHByb3BJZCk7CisgICAgLy8gQmVmb3JlIGNvbnRpbnVpbmcgbGV0cyBs
b29rIGlmIHRoZXJlIGlzIGEgcGFyc2luZyBoYW5kbGVyLgorICAgIGNvbnN0IFNob3J0aGFuZEhh
bmRsZXImIGhhbmRsZXIgPSBtX3Nob3J0aGFuZFBhcnNlci5zaG9ydGhhbmRIYW5kbGVyKHByb3Bl
cnR5SWQpOworICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGhhbmRs
ZXIucGFyc2VWYWx1ZShwcm9wSWQsIHRoaXMsIGltcG9ydGFudCk7CisKKyAgICBzd2l0Y2ggKHBy
b3BlcnR5SWQpIHsKICAgICAgICAgLyogVGhlIGNvbW1lbnQgdG8gdGhlIGxlZnQgZGVmaW5lcyBh
bGwgdmFsaWQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0aWVzIGFzIGRlZmluZWQKICAgICAgICAgICog
aW4gQ1NTIDIsIEFwcGVuZGl4IEYuIFByb3BlcnR5IGluZGV4CiAgICAgICAgICAqLwpAQCAtMTA3
MSwyNSArMTA1Miw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OiAgLy8gbm9ybWFs
IHwgYm9sZCB8IGJvbGRlciB8IGxpZ2h0ZXIgfCAxMDAgfCAyMDAgfCAzMDAgfCA0MDAgfCA1MDAg
fCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCBpbmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUZv
bnRXZWlnaHQoaW1wb3J0YW50KTsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5n
OiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcgfTsKLSAgICAgICAg
aWYgKG51bSA9PSAxKSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBD
U1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpOwotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHBy
b3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFy
c2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3Bl
cnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnVtID09IDIpIHsKLSAgICAgICAgICAgIFNob3J0
aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZyk7Ci0gICAgICAg
ICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VW
YWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmc6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwg
Rk5vbk5lZywgbV9zdHJpY3QpOwpAQCAtMTY1MywxMiArMTYxNSw2IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRGbGV4V3JhcDoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NW
YWx1ZU5vd3JhcCB8fCBpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwUmV2
ZXJzZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWU6
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNV0gPSB7IENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZURpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
UmVwZXRpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCB9Owot
ICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCA1LCBpbXBv
cnRhbnQpOwotICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlv
bjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRm9yd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVC
YWNrd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVBaGVhZCB8fAogICAgICAgICAgICAgaWQgPT0gQ1NT
VmFsdWVSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0
IHx8IGlkID09IENTU1ZhbHVlRG93biB8fApAQCAtMTgwNywyNSArMTc2Myw2IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRHcmlkUm93czoKICAgICAgICAgcmV0dXJuIHBhcnNlR3JpZFRyYWNr
TGlzdChwcm9wSWQsIGltcG9ydGFudCk7CiAjZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQ29sbGFwc2U6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsCi0gICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UgfTsKLSAgICAgICAgaWYgKG51bSA9PSAx
KSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkNvbGxhcHNlKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0
aWVzWzBdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFBy
b3BlcnRpZXMtMV0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVz
WzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKG51bSA9PSAyKSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRT
Y29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsKLSAgICAg
ICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3Jl
Q29sbGFwc2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgpAQCAtMjAyNCwx
MzQgKzE5NjEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAgICBicmVhazsKICNlbmRpZgotICAgICAgICAv
KiBzaG9ydGhhbmQgcHJvcGVydGllcyAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
OiB7Ci0gICAgICAgIC8vIFBvc2l0aW9uIG11c3QgY29tZSBiZWZvcmUgY29sb3IgaW4gdGhpcyBh
cnJheSBiZWNhdXNlIGEgcGxhaW4gb2xkICIwIiBpcyBhIGxlZ2FsIGNvbG9yCi0gICAgICAgIC8v
IGluIHF1aXJrcyBtb2RlIGJ1dCBpdCdzIHVzdWFsbHkgdGhlIFggY29vcmRpbmF0ZSBvZiBhIHBv
c2l0aW9uLgotICAgICAgICAvLyBGSVhNRTogQWRkIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUg
dG8gdGhlIHNob3J0aGFuZC4KLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0
YWNobWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIENTU1Byb3BlcnR5QmFja2dy
b3VuZE9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ2xpcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlRmlsbFNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDcsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOiB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tPcmlnaW4sIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlRmlsbFNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDYsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Ci0gICAgICAgIC8vIFsgJ2Jv
cmRlci13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAg
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVy
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yIH07Ci0gICAgICAgIGlmIChwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCkpIHsKLSAgICAgICAgICAg
IC8vIFRoZSBDU1MzIEJvcmRlcnMgYW5kIEJhY2tncm91bmRzIHNwZWNpZmljYXRpb24gc2F5cyB0
aGF0IGJvcmRlciBhbHNvIHJlc2V0cyBib3JkZXItaW1hZ2UuIEl0J3MgYXMKLSAgICAgICAgICAg
IC8vIHRob3VnaCBhIHZhbHVlIG9mIG5vbmUgd2FzIHNwZWNpZmllZCBmb3IgdGhlIGltYWdlLgot
ICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgY3NzVmFsdWVQ
b29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6Ci0gICAgICAgIC8vIFsgJ2JvcmRlci10
b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRv
cFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcn07Ci0gICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKLSAgICAgICAgLy8gWyAnYm9yZGVy
LXJpZ2h0LXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0g
ICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAg
ICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0
YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKLSAgICAgICAg
Ly8gWyAnYm9yZGVyLWJvdHRvbS13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBd
IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3Bl
cnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0OgotICAgICAgICAvLyBbICdib3JkZXItbGVmdC13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScg
fHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdENvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQs
IHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNd
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3Rh
cnRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0
aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRW5kOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5
bGUsCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yIH07Ci0gICAg
ICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmU6Ci0gICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwKLSAg
ICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgotICAgIHsKLSAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QWZ0ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLAotICAgICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yIH07Ci0gICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgotICAgICAgICAvLyBbICdvdXRsaW5lLWNvbG9y
JyB8fCAnb3V0bGluZS1zdHlsZScgfHwgJ291dGxpbmUtd2lkdGgnIF0gfCBpbmhlcml0Ci0gICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlPdXRsaW5l
V2lkdGgsIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBh
cnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgICAgICAvLyA8Y29sb3I+ezEsNH0g
fCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NT
UHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21D
b2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNl
NFZhbHVlcyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKLSAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8
IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0
VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclN0eWxlOgotICAgICAgICAvLyA8Ym9yZGVyLXN0eWxlPnsxLDR9IHwg
aW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlIH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRW
YWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENT
U1Byb3BlcnR5TWFyZ2luOgotICAgICAgICAvLyA8bWFyZ2luLXdpZHRoPnsxLDR9IHwgaW5oZXJp
dAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5
TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywg
aW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6Ci0gICAgICAg
IC8vIDxwYWRkaW5nLXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgQ1NTUHJvcGVydHlQ
YWRkaW5nUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eVBhZGRpbmdCb3R0b20sIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQgfTsKLSAgICAgICAgcmV0
dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFudCk7Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NT
UHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwotICAgIH0KICAgICBjYXNlIENTU1By
b3BlcnR5Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8fCAnZm9udC12YXJpYW50
JyB8fCAnZm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGluZS1oZWlnaHQnIF0/CiAg
ICAgICAgIC8vICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29uIHwgbWVudSB8IG1lc3Nh
Z2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhlcml0CkBAIC0yMTYwLDI1
ICsxOTY5LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBwYXJzZUZvbnQoaW1w
b3J0YW50KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUxp
c3RTdHlsZVR5cGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlIH07Ci0gICAg
ICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zOiB7Ci0gICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRo
LCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDIsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciB9OwotICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0K
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZTogewotICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDIsIGltcG9ydGFudCk7Ci0gICAgfQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246CiAgICAgICAgIHJldHVybiBwYXJzZUFuaW1h
dGlvblNob3J0aGFuZChpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uOgpAQCAtMjIwMywxMSArMTk5Myw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXND
b2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KLQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKICAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlT3ZlciB8fCBpZCA9PSBDU1NWYWx1ZVVuZGVyKQogICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjI2NywxMCArMjA1Miw2IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlk
ICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOiB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1By
b3BlcnR5V2Via2l0V3JhcE1hcmdpbiwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9Owot
ICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KICNpZiBFTkFCTEUoU1ZH
KQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBwYXJzZVNWR1ZhbHVlKHByb3BJZCwgaW1w
b3J0YW50KTsKQEAgLTIzMDcsNyArMjA4OCw3IEBAIHZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFs
dWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcnZhbCkKICAg
ICAgICAgbHZhbCA9IHJ2YWw7CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlQmFja2dyb3VuZENsaXAo
Q1NTUGFyc2VyVmFsdWUqIHBhcnNlclZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiBjc3NWYWx1ZSwg
Q1NTVmFsdWVQb29sKiBjc3NWYWx1ZVBvb2wpCitib29sIENTU1BhcnNlcjo6cGFyc2VCYWNrZ3Jv
dW5kQ2xpcChDU1NQYXJzZXJWYWx1ZSogcGFyc2VyVmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4mIGNz
c1ZhbHVlLCBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCkKIHsKICAgICBpZiAocGFyc2VyVmFs
dWUtPmlkID09IENTU1ZhbHVlQm9yZGVyQm94IHx8IHBhcnNlclZhbHVlLT5pZCA9PSBDU1NWYWx1
ZVBhZGRpbmdCb3gKICAgICAgICAgfHwgcGFyc2VyVmFsdWUtPmlkID09IENTU1ZhbHVlQ29udGVu
dEJveCB8fCBwYXJzZXJWYWx1ZS0+aWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0KSB7CkBAIC0yMzE3
LDEzNyArMjA5OCw2IEBAIHN0YXRpYyBib29sIHBhcnNlQmFja2dyb3VuZENsaXAoQ1NTUGFyc2Vy
VmFsdWUqIHBhcnNlclZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiBjCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1jb25zdCBpbnQgY01heEZpbGxQcm9wZXJ0aWVzID0gOTsKLQotYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlRmlsbFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCkKLXsKLSAgICBBU1NFUlQobnVtUHJv
cGVydGllcyA8PSBjTWF4RmlsbFByb3BlcnRpZXMpOwotICAgIGlmIChudW1Qcm9wZXJ0aWVzID4g
Y01heEZpbGxQcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTaG9ydGhh
bmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwotCi0gICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtj
TWF4RmlsbFByb3BlcnRpZXNdID0geyBmYWxzZSB9OwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
dWVzW2NNYXhGaWxsUHJvcGVydGllc107Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBjbGlwVmFsdWU7
Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBwb3NpdGlvbllWYWx1ZTsKLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IHJlcGVhdFlWYWx1ZTsKLSAgICBib29sIGZvdW5kQ2xpcCA9IGZhbHNlOwotICAgIGludCBp
OwotCi0gICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKLSAgICAgICAgQ1NTUGFy
c2VyVmFsdWUqIHZhbCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgICAgIGlmICh2YWwt
PnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcsJykg
ewotICAgICAgICAgICAgLy8gV2UgaGl0IHRoZSBlbmQuICBGaWxsIGluIGFsbCByZW1haW5pbmcg
dmFsdWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCi0gICAgICAgICAgICBtX3ZhbHVlTGlzdC0+
bmV4dCgpOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkg
ewotICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yICYmIHBhcnNlZFByb3BlcnR5W2ldKQotICAgICAgICAgICAgICAgICAgICAvLyBD
b2xvciBpcyBub3QgYWxsb3dlZCBleGNlcHQgYXMgdGhlIGxhc3QgaXRlbSBpbiBhIGxpc3QgZm9y
IGJhY2tncm91bmRzLgotICAgICAgICAgICAgICAgICAgICAvLyBSZWplY3QgdGhlIGVudGlyZSBw
cm9wZXJ0eS4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAg
ICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSAmJiBwcm9wZXJ0aWVzW2ldICE9IENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZEZpbGxWYWx1ZSh2
YWx1ZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZpbGxWYWx1ZShwb3NpdGlvbllW
YWx1ZSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXQgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocmVwZWF0WVZhbHVlLCBjc3NW
YWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4g
fHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pICYmICFwYXJz
ZWRQcm9wZXJ0eVtpXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYmFja2dyb3Vu
ZC1vcmlnaW4gd2Fzbid0IHByZXNlbnQsIHRoZW4gcmVzZXQgYmFja2dyb3VuZC1jbGlwIGFsc28u
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCBjc3NWYWx1
ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlb
aV0gPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghbV92YWx1ZUxpc3Qt
PmN1cnJlbnQoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChpID0gMDsgIWZvdW5kICYmIGkgPCBu
dW1Qcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0p
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDE7Ci0gICAgICAgICAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwyOwotICAgICAgICAgICAgICAgIGludCBwcm9wSWQxLCBw
cm9wSWQyOwotICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlKiBwYXJzZXJWYWx1ZSA9IG1f
dmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlRmlsbFByb3Bl
cnR5KHByb3BlcnRpZXNbaV0sIHByb3BJZDEsIHByb3BJZDIsIHZhbDEsIHZhbDIpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUodmFsdWVzW2ldLCB2YWwxLnJlbGVhc2UoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocG9zaXRpb25ZVmFs
dWUsIHZhbDIucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNb
aV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmls
bFZhbHVlKHJlcGVhdFlWYWx1ZSwgdmFsMi5yZWxlYXNlKCkpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4gfHwgcHJv
cGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFJlcGFyc2UgdGhlIHZhbHVlIGFzIGEgY2xpcCwgYW5kIHNlZSBpZiB3
ZSBzdWNjZWVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlQmFja2dyb3VuZENs
aXAocGFyc2VyVmFsdWUsIHZhbDEsIGNzc1ZhbHVlUG9vbCgpKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCB2YWwxLnJlbGVhc2UoKSk7IC8vIFRo
ZSBwcm9wZXJ0eSBwYXJzZWQgc3VjY2Vzc2Z1bGx5LgotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZpbGxWYWx1ZShjbGlwVmFsdWUs
IGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsgLy8gU29tZSB2
YWx1ZSB3YXMgdXNlZCBmb3Igb3JpZ2luIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSBjbGlwLiBK
dXN0IHJlc2V0IGNsaXAgaW5zdGVhZC4KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlw
IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNsaXBWYWx1ZQotICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgdmFsMS5yZWxlYXNlKCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZm91bmRDbGlwID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8v
IGlmIHdlIGRpZG4ndCBmaW5kIGF0IGxlYXN0IG9uZSBtYXRjaCwgdGhpcyBpcyBhbgotICAgICAg
ICAvLyBpbnZhbGlkIHNob3J0aGFuZCBhbmQgd2UgaGF2ZSB0byBpZ25vcmUgaXQKLSAgICAgICAg
aWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBG
aWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgot
ICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgaWYgKCFw
YXJzZWRQcm9wZXJ0eVtpXSkgewotICAgICAgICAgICAgYWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwg
Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwotICAgICAgICAg
ICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwg
cHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKLSAgICAgICAg
ICAgICAgICBhZGRGaWxsVmFsdWUocG9zaXRpb25ZVmFsdWUsIGNzc1ZhbHVlUG9vbCgpLT5jcmVh
dGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ld
ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1By
b3BlcnR5V2Via2l0TWFza1JlcGVhdCkKLSAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocmVw
ZWF0WVZhbHVlLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7
Ci0gICAgICAgICAgICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
T3JpZ2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSAm
JiAhcGFyc2VkUHJvcGVydHlbaV0pIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBiYWNrZ3JvdW5k
LW9yaWdpbiB3YXNuJ3QgcHJlc2VudCwgdGhlbiByZXNldCBiYWNrZ3JvdW5kLWNsaXAgYWxzby4K
LSAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCBjc3NWYWx1ZVBvb2woKS0+
Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBOb3cgYWRkIGFsbCBvZiB0aGUgcHJvcGVydGllcyB3ZSBmb3VuZC4K
LSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7Ci0gICAgICAgIGlmIChw
cm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uKSB7Ci0gICAgICAg
ICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIHZhbHVlc1tp
XS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgICAgICAvLyBpdCdzIE9LIHRvIGNhbGwg
cG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2VlIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uIG9uY2UKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWSwgcG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQp
OwotICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uWCwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKLSAgICAgICAg
ICAgIC8vIGl0J3MgT0sgdG8gY2FsbCBwb3NpdGlvbllWYWx1ZS5yZWxlYXNlKCkgc2luY2Ugd2Ug
b25seSBzZWUgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24gb25jZQotICAgICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBwb3NpdGlvbllWYWx1
ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQpIHsKLSAgICAgICAgICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIHZhbHVlc1tpXS5yZWxlYXNlKCksIGlt
cG9ydGFudCk7Ci0gICAgICAgICAgICAvLyBpdCdzIE9LIHRvIGNhbGwgcmVwZWF0WVZhbHVlLnJl
bGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiBv
bmNlCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZ
LCByZXBlYXRZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICB9IGVsc2UgaWYg
KHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KSB7Ci0gICAgICAg
ICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCB2YWx1ZXNbaV0u
cmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxsIHJl
cGVhdFlWYWx1ZS5yZWxlYXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb24gb25jZQotICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUmVwZWF0WSwgcmVwZWF0WVZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKLSAgICAg
ICAgfSBlbHNlIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlw
IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkgJiYgIWZvdW5k
Q2xpcCkKLSAgICAgICAgICAgIC8vIFZhbHVlIGlzIGFscmVhZHkgc2V0IHdoaWxlIHVwZGF0aW5n
IG9yaWdpbgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFu
dCk7Ci0KLSAgICAgICAgLy8gQWRkIGluIGNsaXAgdmFsdWVzIHdoZW4gd2UgaGl0IHRoZSBjb3Jy
ZXNwb25kaW5nIG9yaWdpbiBwcm9wZXJ0eS4KLSAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luICYmICFmb3VuZENsaXApCi0gICAgICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBjbGlwVmFsdWUucmVsZWFzZSgp
LCBpbXBvcnRhbnQpOwotICAgICAgICBlbHNlIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3Bl
cnR5V2Via2l0TWFza09yaWdpbiAmJiAhZm91bmRDbGlwKQotICAgICAgICAgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgY2xpcFZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0
YW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBDU1NQYXJzZXI6OmFk
ZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IHJ2YWwpCiB7CiAgICAgaWYgKGx2YWwpIHsKQEAgLTI1ODQsMTAxICsyMjM0LDYgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGludCBw
cm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1w
b3J0YW50KQotewotICAgIC8vIFdlIHRyeSB0byBtYXRjaCBhcyBtYW55IHByb3BlcnRpZXMgYXMg
cG9zc2libGUKLSAgICAvLyBXZSBzZXQgdXAgYW4gYXJyYXkgb2YgYm9vbGVhbnMgdG8gbWFyayB3
aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3VuZCwKLSAgICAvLyBhbmQgd2UgdHJ5IHRvIHNlYXJj
aCBmb3IgcHJvcGVydGllcyB1bnRpbCBpdCBtYWtlcyBubyBsb25nZXIgYW55IHNlbnNlLgotICAg
IFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7Ci0KLSAgICBib29sIGZvdW5kID0g
ZmFsc2U7Ci0gICAgYm9vbCBmbmRbNl07IC8vIFRydXN0IG1lIDspCi0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGZuZFtpXSA9IGZhbHNlOwotCi0g
ICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKLSAgICAgICAgZm91bmQgPSBmYWxz
ZTsKLSAgICAgICAgZm9yIChpbnQgcHJvcEluZGV4ID0gMDsgIWZvdW5kICYmIHByb3BJbmRleCA8
IG51bVByb3BlcnRpZXM7ICsrcHJvcEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAoIWZuZFtwcm9w
SW5kZXhdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlVmFsdWUocHJvcGVydGllc1twcm9w
SW5kZXhdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgICAgICBmbmRbcHJvcEluZGV4XSA9
IGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIGlm
IHdlIGRpZG4ndCBmaW5kIGF0IGxlYXN0IG9uZSBtYXRjaCwgdGhpcyBpcyBhbgotICAgICAgICAv
LyBpbnZhbGlkIHNob3J0aGFuZCBhbmQgd2UgaGF2ZSB0byBpZ25vcmUgaXQKLSAgICAgICAgaWYg
KCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBGaWxs
IGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgotICAg
IEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBpZiAo
IWZuZFtpXSkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIGNzc1ZhbHVl
UG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGlu
dCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQotewotICAg
IC8qIEZyb20gdGhlIENTUyAyIHNwZWNzLCA4LjMKLSAgICAgKiBJZiB0aGVyZSBpcyBvbmx5IG9u
ZSB2YWx1ZSwgaXQgYXBwbGllcyB0byBhbGwgc2lkZXMuIElmIHRoZXJlIGFyZSB0d28gdmFsdWVz
LCB0aGUgdG9wIGFuZAotICAgICAqIGJvdHRvbSBtYXJnaW5zIGFyZSBzZXQgdG8gdGhlIGZpcnN0
IHZhbHVlIGFuZCB0aGUgcmlnaHQgYW5kIGxlZnQgbWFyZ2lucyBhcmUgc2V0IHRvIHRoZSBzZWNv
bmQuCi0gICAgICogSWYgdGhlcmUgYXJlIHRocmVlIHZhbHVlcywgdGhlIHRvcCBpcyBzZXQgdG8g
dGhlIGZpcnN0IHZhbHVlLCB0aGUgbGVmdCBhbmQgcmlnaHQgYXJlIHNldCB0byB0aGUKLSAgICAg
KiBzZWNvbmQsIGFuZCB0aGUgYm90dG9tIGlzIHNldCB0byB0aGUgdGhpcmQuIElmIHRoZXJlIGFy
ZSBmb3VyIHZhbHVlcywgdGhleSBhcHBseSB0byB0aGUgdG9wLAotICAgICAqIHJpZ2h0LCBib3R0
b20sIGFuZCBsZWZ0LCByZXNwZWN0aXZlbHkuCi0gICAgICovCi0KLSAgICBpbnQgbnVtID0gaW5T
aG9ydGhhbmQoKSA/IDEgOiBtX3ZhbHVlTGlzdC0+c2l6ZSgpOwotCi0gICAgU2hvcnRoYW5kU2Nv
cGUgc2NvcGUodGhpcywgcHJvcElkKTsKLQotICAgIC8vIHRoZSBvcmRlciBpcyB0b3AsIHJpZ2h0
LCBib3R0b20sIGxlZnQKLSAgICBzd2l0Y2ggKG51bSkgewotICAgICAgICBjYXNlIDE6IHsKLSAg
ICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9
IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7Ci0g
ICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBs
aWNpdCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1w
b3J0YW50KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBp
bXBvcnRhbnQpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUs
IGltcG9ydGFudCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IDI6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRh
bnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKLSAgICAgICAg
ICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsK
LSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQp
OwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzLTJdLT52YWx1ZSgpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sz
XSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIDM6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBd
LCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkgfHwg
IXBhcnNlVmFsdWUocHJvcGVydGllc1syXSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3Bl
cnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOwotICAgICAgICAgICAgSW1w
bGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIDQ6IHsKLSAgICAgICAgICAg
IGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVl
KHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkgfHwKLSAgICAgICAgICAgICAgICAhcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbM10s
IGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8vIGF1
dG8gfCA8aWRlbnRpZmllcj4KIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVBhZ2UoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggM2JmMDQ1ZTYzZmJh
MWQ2NmM4M2RiNTlkY2ZlZTUxOTVhY2YzYmZmYi4uN2EwMjcyZjk2YjhjNDhiMjFhMGI3MGY2YmNj
M2Y5MjI2MzE4M2VhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNDYsNiArNDYsNyBAQCBj
bGFzcyBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiBjbGFzcyBDU1NWYWx1ZVBv
b2w7CitjbGFzcyBDU1NQYXJzZXJTaG9ydGhhbmQ7CiBjbGFzcyBDU1NQcm9wZXJ0eTsKIGNsYXNz
IENTU1J1bGU7CiBjbGFzcyBDU1NSdWxlTGlzdDsKQEAgLTg3LDggKzg4LDYgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyc2VkUHJvcGVy
dGllcyA+IDA7IH0KIAogICAgIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCk7Ci0gICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHBy
b3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBw
YXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBib29sIGltcG9y
dGFudCk7CiAgICAgYm9vbCBwYXJzZUNvbnRlbnQoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
OwogICAgIGJvb2wgcGFyc2VRdW90ZXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogCkBA
IC0xMDgsNyArMTA3LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNl
RmlsbFNpemUoaW50IHByb3BJZCwgYm9vbCAmYWxsb3dDb21tYSk7CiAKICAgICBib29sIHBhcnNl
RmlsbFByb3BlcnR5KGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBSZWZQ
dHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIGJvb2wgcGFyc2VGaWxsU2hv
cnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRp
ZXMsIGJvb2wgaW1wb3J0YW50KTsKIAogICAgIHZvaWQgYWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NW
YWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpOwogCkBAIC0xNTAsNiArMTQ4
LDggQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VDb3VudGVyKGludCBwcm9wSWQsIGludCBkZWZh
dWx0VmFsdWUsIGJvb2wgaW1wb3J0YW50KTsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCogYXJncywgYm9vbCBjb3VudGVycyk7
CiAKKyAgICBib29sIHBhcnNlQmFja2dyb3VuZENsaXAoQ1NTUGFyc2VyVmFsdWUqLCBSZWZQdHI8
Q1NTVmFsdWU+JiwgQ1NTVmFsdWVQb29sKik7CisKICAgICBib29sIHBhcnNlQ29sb3JQYXJhbWV0
ZXJzKENTU1BhcnNlclZhbHVlKiwgaW50KiBjb2xvclZhbHVlcywgYm9vbCBwYXJzZUFscGhhKTsK
ICAgICBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSosIGRvdWJsZSogY29s
b3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gcGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogPSAwKTsKQEAgLTM4OCw2ICszODgsOCBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVz
YWJsZVNlbGVjdG9yVmVjdG9yOwogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4gbV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOwogCisgICAgY29uc3QgQ1NTUGFyc2Vy
U2hvcnRoYW5kJiBtX3Nob3J0aGFuZFBhcnNlcjsKKwogICAgIC8vIGRlZmluZXMgdW5pdHMgYWxs
b3dlZCBmb3IgYSBjZXJ0YWluIHByb3BlcnR5LCB1c2VkIGluIHBhcnNlVW5pdAogICAgIGVudW0g
VW5pdHMgewogICAgICAgICBGVW5rbm93biAgID0gMHgwMDAwLApAQCAtNDE0LDYgKzQxNiw3IEBA
IHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0
aXZlTnVtZXJpY1ZhbHVlKENTU1BhcnNlclZhbHVlKik7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsK
IAorICAgIGZyaWVuZCBjbGFzcyBDU1NQYXJzZXJTaG9ydGhhbmQ7CiAgICAgZnJpZW5kIGNsYXNz
IFRyYW5zZm9ybU9wZXJhdGlvbkluZm87CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGZy
aWVuZCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25JbmZvOwpAQCAtNDQyLDYgKzQ0NSwyOSBAQCBwcml2
YXRlOgogICAgIENTU1BhcnNlciogbV9wYXJzZXI7CiB9OwogCitlbnVtIFByb3BlcnR5VHlwZSB7
CisgICAgUHJvcGVydHlFeHBsaWNpdCwKKyAgICBQcm9wZXJ0eUltcGxpY2l0Cit9OworCitjbGFz
cyBJbXBsaWNpdFNjb3BlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbXBsaWNpdFNjb3Bl
KTsKK3B1YmxpYzoKKyAgICBJbXBsaWNpdFNjb3BlKFdlYkNvcmU6OkNTU1BhcnNlciogcGFyc2Vy
LCBQcm9wZXJ0eVR5cGUgcHJvcGVydHlUeXBlKQorICAgICAgICA6IG1fcGFyc2VyKHBhcnNlcikK
KyAgICB7CisgICAgICAgIG1fcGFyc2VyLT5tX2ltcGxpY2l0U2hvcnRoYW5kID0gcHJvcGVydHlU
eXBlID09IFByb3BlcnR5SW1wbGljaXQ7CisgICAgfQorCisgICAgfkltcGxpY2l0U2NvcGUoKQor
ICAgIHsKKyAgICAgICAgbV9wYXJzZXItPm1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6Q1NTUGFyc2VyKiBtX3BhcnNlcjsKK307CisK
IFN0cmluZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBxdW90ZUNTU1N0
cmluZ0lmTmVlZGVkKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIHF1b3RlQ1NTVVJMSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
U2hvcnRoYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVkZWZhMWUxNjNjYThmZGNmZWZkNTM1M2RhMWU0ZmRkMDczNjE0YzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmNw
cApAQCAtMCwwICsxLDM4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyU2hvcnRoYW5kLmgiCisKKyNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Zh
bHVlUG9vbC5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7
Cit0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBvbmUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1By
b3BlcnR5SUQgdHdvID0gQ1NTUHJvcGVydHlJbnZhbGlkPgorY2xhc3MgVHdvVmFsdWVzU2hvcnRo
YW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBDU1NQYXJzZXIqIHBhcnNlciwgYm9vbCBpbXBvcnRhbnQpCisgICAgeworICAgICAgICBp
bnQgbnVtID0gcGFyc2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAxIDogcGFyc2VyLT5tX3ZhbHVl
TGlzdC0+c2l6ZSgpOworCisgICAgICAgIGlmIChudW0gPT0gMSkgeworICAgICAgICAgICAgU2hv
cnRoYW5kU2NvcGUgc2NvcGUocGFyc2VyLCBwcm9wSWQpOworICAgICAgICAgICAgaWYgKCFwYXJz
ZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci0+bV9wYXJzZWRQcm9w
ZXJ0aWVzW3BhcnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOworICAgICAg
ICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0d28sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAobnVtID09IDIpIHsK
KyAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElkKTsKKyAgICAg
ICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSB8fCAhcGFyc2Vy
LT5wYXJzZVZhbHVlKHR3bywgaW1wb3J0YW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIFNob3J0aGFuZEhhbmRsZXIgY3JlYXRlSGFuZGxl
cigpCisgICAgeworICAgICAgICByZXR1cm4gU2hvcnRoYW5kSGFuZGxlcigmcGFyc2VWYWx1ZSk7
CisgICAgfQorfTsKKwordGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVydHlJ
bnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVy
dHlJRCB0aHJlZSA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmb3VyID0gQ1NT
UHJvcGVydHlJbnZhbGlkPgorY2xhc3MgRm91clZhbHVlc1Nob3J0aGFuZEhhbmRsZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBw
YXJzZXIsIGJvb2wgaW1wb3J0YW50KQorICAgIHsKKyAgICAgICAgLyogRnJvbSB0aGUgQ1NTIDIg
c3BlY3MsIDguMworICAgICAgICAgKiBJZiB0aGVyZSBpcyBvbmx5IG9uZSB2YWx1ZSwgaXQgYXBw
bGllcyB0byBhbGwgc2lkZXMuIElmIHRoZXJlIGFyZSB0d28gdmFsdWVzLCB0aGUgdG9wIGFuZAor
ICAgICAgICAgKiBib3R0b20gbWFyZ2lucyBhcmUgc2V0IHRvIHRoZSBmaXJzdCB2YWx1ZSBhbmQg
dGhlIHJpZ2h0IGFuZCBsZWZ0IG1hcmdpbnMgYXJlIHNldCB0byB0aGUgc2Vjb25kLgorICAgICAg
ICAgKiBJZiB0aGVyZSBhcmUgdGhyZWUgdmFsdWVzLCB0aGUgdG9wIGlzIHNldCB0byB0aGUgZmly
c3QgdmFsdWUsIHRoZSBsZWZ0IGFuZCByaWdodCBhcmUgc2V0IHRvIHRoZQorICAgICAgICAgKiBz
ZWNvbmQsIGFuZCB0aGUgYm90dG9tIGlzIHNldCB0byB0aGUgdGhpcmQuIElmIHRoZXJlIGFyZSBm
b3VyIHZhbHVlcywgdGhleSBhcHBseSB0byB0aGUgdG9wLAorICAgICAgICAgKiByaWdodCwgYm90
dG9tLCBhbmQgbGVmdCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgKi8KKworICAgICAgICBpbnQg
bnVtID0gcGFyc2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAxIDogcGFyc2VyLT5tX3ZhbHVlTGlz
dC0+c2l6ZSgpOworCisgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElk
KTsKKworICAgICAgICAvLyBUaGUgb3JkZXIgaXMgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0Lgor
ICAgICAgICBzd2l0Y2ggKG51bSkgeworICAgICAgICBjYXNlIDE6IHsKKyAgICAgICAgICAgIGlm
ICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXItPm1fcGFy
c2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsK
KyAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZShwYXJzZXIsIFByb3BlcnR5
SW1wbGljaXQpOworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0d28sIHZhbHVlLCBp
bXBvcnRhbnQpOworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0aHJlZSwgdmFsdWUs
IGltcG9ydGFudCk7CisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KGZvdXIsIHZhbHVl
LCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSAyOiB7CisgICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFu
dCkgfHwgIXBhcnNlci0+cGFyc2VWYWx1ZSh0d28sIGltcG9ydGFudCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLT5t
X3BhcnNlZFByb3BlcnRpZXNbcGFyc2VyLT5tX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVl
KCk7CisgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUocGFyc2VyLCBQcm9w
ZXJ0eUltcGxpY2l0KTsKKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkodGhyZWUsIHZh
bHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgdmFsdWUgPSBwYXJzZXItPm1fcGFyc2VkUHJv
cGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAg
ICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoZm91ciwgdmFsdWUsIGltcG9ydGFudCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDM6IHsKKyAgICAgICAgICAg
IGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJz
ZVZhbHVlKHR3bywgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHRocmVlLCBpbXBv
cnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIENTU1Zh
bHVlKiB2YWx1ZSA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzW3BhcnNlci0+bV9udW1QYXJz
ZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBs
aWNpdFNjb3BlKHBhcnNlciwgUHJvcGVydHlJbXBsaWNpdCk7CisgICAgICAgICAgICBwYXJzZXIt
PmFkZFByb3BlcnR5KGZvdXIsIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICBpZiAoIXBhcnNlci0+
cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFudCkgfHwgIXBhcnNlci0+cGFyc2VWYWx1ZSh0d28sIGlt
cG9ydGFudCkKKyAgICAgICAgICAgICAgICB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHRocmVlLCBp
bXBvcnRhbnQpIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUoZm91ciwgaW1wb3J0YW50KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBT
aG9ydGhhbmRIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNo
b3J0aGFuZEhhbmRsZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK307CisKK3RlbXBsYXRlIDx1bnNp
Z25lZCBudW1Qcm9wZXJ0aWVzLCBDU1NQcm9wZXJ0eUlEIG9uZSA9IENTU1Byb3BlcnR5SW52YWxp
ZCwgQ1NTUHJvcGVydHlJRCB0d28gPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQg
dGhyZWUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQgZm91ciA9IENTU1Byb3Bl
cnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmaXZlID0gQ1NTUHJvcGVydHlJbnZhbGlkPgorY2xh
c3MgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBh
cnNlVmFsdWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KQor
ICAgIHsKKyAgICAgICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkgcHJvcGVydGllcyBhcyBw
b3NzaWJsZQorICAgICAgICAvLyBXZSBzZXQgdXAgYW4gYXJyYXkgb2YgYm9vbGVhbnMgdG8gbWFy
ayB3aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3VuZCwKKyAgICAgICAgLy8gYW5kIHdlIHRyeSB0
byBzZWFyY2ggZm9yIHByb3BlcnRpZXMgdW50aWwgaXQgbWFrZXMgbm8gbG9uZ2VyIGFueSBzZW5z
ZS4KKyAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUocGFyc2VyLCBwcm9wSWQpOworCisgICAg
ICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBmbmRbNl07IC8vIFRydXN0IG1l
IDspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKysp
CisgICAgICAgICAgICBmbmRbaV0gPSBmYWxzZTsKKworICAgICAgICB3aGlsZSAocGFyc2VyLT5t
X3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CisgICAgICAgICAgICBmb3VuZCA9IGZhbHNlOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4
IDwgbnVtUHJvcGVydGllczsgKytwcm9wSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWZu
ZFtwcm9wSW5kZXhdKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXItPnBhcnNlVmFs
dWUocHJvcGVydGllc1twcm9wSW5kZXhdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZm5kW3Byb3BJbmRleF0gPSBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhdCBsZWFz
dCBvbmUgbWF0Y2gsIHRoaXMgaXMgYW4KKyAgICAgICAgICAgIC8vIGludmFsaWQgc2hvcnRoYW5k
IGFuZCB3ZSBoYXZlIHRvIGlnbm9yZSBpdC4KKyAgICAgICAgICAgIGlmICghZm91bmQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsbCBp
biBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZS4KKyAgICAg
ICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBhcnNlciwgUHJvcGVydHlJbXBsaWNpdCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsK
KyAgICAgICAgICAgIGlmICghZm5kW2ldKQorICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJv
cGVydHkocHJvcGVydGllc1tpXSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGlj
aXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJ
WE1FIDogbm90IHZlcnkgZ2VuZXJpYyBoZXJlLgorICAgICAgICBpZiAocHJvcElkID09IENTU1By
b3BlcnR5Qm9yZGVyKSB7CisgICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNr
Z3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVy
LWltYWdlLiBJdCdzIGFzCisgICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdh
cyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRl
SW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBTaG9ydGhhbmRIYW5kbGVyIGNyZWF0
ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNob3J0aGFuZEhhbmRsZXIoJnBhcnNl
VmFsdWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzVdOworfTsKK3RlbXBsYXRlIDx1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzLCBDU1NQcm9wZXJ0eUlE
IG9uZSwgQ1NTUHJvcGVydHlJRCB0d28gLCBDU1NQcm9wZXJ0eUlEIHRocmVlICwgQ1NTUHJvcGVy
dHlJRCBmb3VyLCBDU1NQcm9wZXJ0eUlEIGZpdmU+Citjb25zdCBpbnQgR2VuZXJpY1Nob3J0aGFu
ZEhhbmRsZXI8bnVtUHJvcGVydGllcywgb25lLCB0d28sIHRocmVlLCBmb3VyLCBmaXZlPjo6cHJv
cGVydGllc1s1XSA9ICB7IG9uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZSB9OworCitjb25zdCBp
bnQgY01heEZpbGxQcm9wZXJ0aWVzID0gOTsKKwordGVtcGxhdGUgPHVuc2lnbmVkIG51bVByb3Bl
cnRpZXMsIENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0
eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCB0aHJlZSA9IENTU1By
b3BlcnR5SW52YWxpZCwKKyAgICAgICAgICBDU1NQcm9wZXJ0eUlEIGZvdXIgPSBDU1NQcm9wZXJ0
eUludmFsaWQsIENTU1Byb3BlcnR5SUQgZml2ZSA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJv
cGVydHlJRCBzaXggPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQgc2V2ZW4gPSBD
U1NQcm9wZXJ0eUludmFsaWQ+CitjbGFzcyBGaWxsU2hvcnRoYW5kSGFuZGxlciB7CitwdWJsaWM6
CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNl
ciwgYm9vbCBpbXBvcnRhbnQpCisgICAgeworICAgICAgICBBU1NFUlQobnVtUHJvcGVydGllcyA8
PSBjTWF4RmlsbFByb3BlcnRpZXMpOworICAgICAgICBpZiAobnVtUHJvcGVydGllcyA+IGNNYXhG
aWxsUHJvcGVydGllcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBTaG9y
dGhhbmRTY29wZSBzY29wZShwYXJzZXIsIHByb3BJZCk7CisKKyAgICAgICAgYm9vbCBwYXJzZWRQ
cm9wZXJ0eVtjTWF4RmlsbFByb3BlcnRpZXNdID0geyBmYWxzZSB9OworICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlc1tjTWF4RmlsbFByb3BlcnRpZXNdOworICAgICAgICBSZWZQdHI8Q1NT
VmFsdWU+IGNsaXBWYWx1ZTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBwb3NpdGlvbllWYWx1
ZTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiByZXBlYXRZVmFsdWU7CisgICAgICAgIGJvb2wg
Zm91bmRDbGlwID0gZmFsc2U7CisgICAgICAgIHVuc2lnbmVkIGk7CisKKyAgICAgICAgd2hpbGUg
KHBhcnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgeworICAgICAgICAgICAgQ1NTUGFyc2Vy
VmFsdWUqIHZhbCA9IHBhcnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKyAgICAgICAgICAg
IGlmICh2YWwtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVl
ID09ICcsJykgeworICAgICAgICAgICAgICAgIC8vIFdlIGhpdCB0aGUgZW5kLiBGaWxsIGluIGFs
bCByZW1haW5pbmcgdmFsdWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCisgICAgICAgICAgICAg
ICAgcGFyc2VyLT5tX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBy
b3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgJiYgcGFyc2VkUHJvcGVy
dHlbaV0pCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb2xvciBpcyBub3QgYWxsb3dlZCBl
eGNlcHQgYXMgdGhlIGxhc3QgaXRlbSBpbiBhIGxpc3QgZm9yIGJhY2tncm91bmRzLgorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gUmVqZWN0IHRoZSBlbnRpcmUgcHJvcGVydHkuCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFwYXJzZWRQcm9wZXJ0eVtpXSAmJiBwcm9wZXJ0aWVzW2ldICE9IENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxWYWx1
ZSh2YWx1ZXNbaV0sIHBhcnNlci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlh
bFZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJz
ZXItPmFkZEZpbGxWYWx1ZShwb3NpdGlvbllWYWx1ZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+
Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgfHwgcHJvcGVy
dGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUocmVwZWF0WVZhbHVlLCBwYXJzZXItPmNz
c1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRP
cmlnaW4gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pICYm
ICFwYXJzZWRQcm9wZXJ0eVtpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IGJhY2tncm91bmQtb3JpZ2luIHdhc24ndCBwcmVzZW50LCB0aGVuIHJlc2V0IGJhY2tncm91bmQt
Y2xpcCBhbHNvLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZh
bHVlKGNsaXBWYWx1ZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0
aWFsVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXItPm1fdmFsdWVMaXN0
LT5jdXJyZW50KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGkgPSAw
OyAhZm91bmQgJiYgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgICAgICAgICAgICAgIGlm
ICghcGFyc2VkUHJvcGVydHlbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWwxOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDI7Cisg
ICAgICAgICAgICAgICAgICAgIGludCBwcm9wSWQxLCBwcm9wSWQyOworICAgICAgICAgICAgICAg
ICAgICBDU1NQYXJzZXJWYWx1ZSogcGFyc2VyVmFsdWUgPSBwYXJzZXItPm1fdmFsdWVMaXN0LT5j
dXJyZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXItPnBhcnNlRmlsbFByb3Bl
cnR5KHByb3BlcnRpZXNbaV0sIHByb3BJZDEsIHByb3BJZDIsIHZhbDEsIHZhbDIpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZvdW5kID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwgdmFs
MS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0g
PT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJzZXItPmFkZEZpbGxWYWx1ZShwb3NpdGlvbllWYWx1ZSwgdmFsMi5yZWxlYXNlKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHJl
cGVhdFlWYWx1ZSwgdmFsMi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luIHx8IHByb3BlcnRp
ZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gUmVwYXJzZSB0aGUgdmFsdWUgYXMgYSBjbGlwLCBhbmQgc2VlIGlmIHdl
IHN1Y2NlZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlci0+cGFyc2VC
YWNrZ3JvdW5kQ2xpcChwYXJzZXJWYWx1ZSwgdmFsMSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKSkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKGNs
aXBWYWx1ZSwgdmFsMS5yZWxlYXNlKCkpOyAvLyBUaGUgcHJvcGVydHkgcGFyc2VkIHN1Y2Nlc3Nm
dWxseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgcGFyc2VyLT5j
c3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7IC8vIFNvbWUgdmFs
dWUgd2FzIHVzZWQgZm9yIG9yaWdpbiB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgY2xpcC4gSnVz
dCByZXNldCBjbGlwIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDbGlwIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjbGlwVmFsdWUuCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCB2YWwx
LnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRDbGlwID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgd2UgZGlk
bid0IGZpbmQgYXQgbGVhc3Qgb25lIG1hdGNoLCB0aGlzIGlzIGFuCisgICAgICAgICAgICAvLyBp
bnZhbGlkIHNob3J0aGFuZCBhbmQgd2UgaGF2ZSB0byBpZ25vcmUgaXQuCisgICAgICAgICAgICBp
ZiAoIWZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEZpbGwgaW4gYW55IHJlbWFpbmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRp
YWwgdmFsdWUuCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsK
KyAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0pIHsKKyAgICAgICAgICAgICAgICBw
YXJzZXItPmFkZEZpbGxWYWx1ZSh2YWx1ZXNbaV0sIHBhcnNlci0+Y3NzVmFsdWVQb29sKCktPmNy
ZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIHx8IHByb3BlcnRpZXNbaV0g
PT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgIHBh
cnNlci0+YWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZhbHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgp
LT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAocHJv
cGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgfHwgcHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQpCisgICAgICAgICAgICAgICAgICAgIHBh
cnNlci0+YWRkRmlsbFZhbHVlKHJlcGVhdFlWYWx1ZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+
Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKChwcm9w
ZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiB8fCBwcm9wZXJ0aWVzW2ld
ID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgJiYgIXBhcnNlZFByb3BlcnR5W2ldKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIElmIGJhY2tncm91bmQtb3JpZ2luIHdhc24ndCBwcmVz
ZW50LCB0aGVuIHJlc2V0IGJhY2tncm91bmQtY2xpcCBhbHNvLgorICAgICAgICAgICAgICAgICAg
ICBwYXJzZXItPmFkZEZpbGxWYWx1ZShjbGlwVmFsdWUsIHBhcnNlci0+Y3NzVmFsdWVQb29sKCkt
PmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9w
ZXJ0aWVzIHdlIGZvdW5kLgorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsg
aSsrKSB7CisgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvbikgeworICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRh
bnQpOworICAgICAgICAgICAgICAgIC8vIGl0J3MgT0sgdG8gY2FsbCBwb3NpdGlvbllWYWx1ZS5y
ZWxlYXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24g
b25jZS4KKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uWSwgcG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxsIHBvc2l0aW9uWVZhbHVlLnJl
bGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiBv
bmNlLgorICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25ZLCBwb3NpdGlvbllWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0KSB7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRYLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgICAgIC8vIGl0J3MgT0sgdG8gY2FsbCByZXBlYXRZVmFsdWUucmVsZWFzZSgp
IHNpbmNlIHdlIG9ubHkgc2VlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIG9uY2UuCisg
ICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRZLCByZXBlYXRZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAg
fSBlbHNlIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkg
eworICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0WCwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAg
ICAgICAvLyBpdCdzIE9LIHRvIGNhbGwgcmVwZWF0WVZhbHVlLnJlbGVhc2UoKSBzaW5jZSB3ZSBv
bmx5IHNlZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiBvbmNlLgorICAgICAgICAgICAg
ICAgIHBhcnNlci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgcmVw
ZWF0WVZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
KHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBwcm9wZXJ0aWVz
W2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApICYmICFmb3VuZENsaXApCisgICAgICAg
ICAgICAgICAgLy8gVmFsdWUgaXMgYWxyZWFkeSBzZXQgd2hpbGUgdXBkYXRpbmcgb3JpZ2luCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgp
LCBpbXBvcnRhbnQpOworCisgICAgICAgICAgICAvLyBBZGQgaW4gY2xpcCB2YWx1ZXMgd2hlbiB3
ZSBoaXQgdGhlIGNvcnJlc3BvbmRpbmcgb3JpZ2luIHByb3BlcnR5LgorICAgICAgICAgICAgaWYg
KHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luICYmICFmb3VuZENs
aXApCisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDbGlwLCBjbGlwVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAg
ZWxzZSBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4gJiYg
IWZvdW5kQ2xpcCkKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5V2Via2l0TWFza0NsaXAsIGNsaXBWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU2hvcnRo
YW5kSGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBTaG9ydGhh
bmRIYW5kbGVyKCZwYXJzZVZhbHVlKTsKKyAgICB9Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25z
dCBpbnQgcHJvcGVydGllc1s3XTsKK307CisKK3RlbXBsYXRlIDx1bnNpZ25lZCBudW1Qcm9wZXJ0
aWVzLCBDU1NQcm9wZXJ0eUlEIG9uZSwgQ1NTUHJvcGVydHlJRCB0d28gLCBDU1NQcm9wZXJ0eUlE
IHRocmVlICwgQ1NTUHJvcGVydHlJRCBmb3VyLCBDU1NQcm9wZXJ0eUlEIGZpdmUsIENTU1Byb3Bl
cnR5SUQgc2l4LCBDU1NQcm9wZXJ0eUlEIHNldmVuPgorY29uc3QgaW50IEZpbGxTaG9ydGhhbmRI
YW5kbGVyPG51bVByb3BlcnRpZXMsIG9uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZSwgc2l4LCBz
ZXZlbj46OnByb3BlcnRpZXNbN10gPSAgeyBvbmUsIHR3bywgdGhyZWUsIGZvdXIsIGZpdmUsIHNp
eCwgc2V2ZW4gfTsKKworY29uc3QgQ1NTUGFyc2VyU2hvcnRoYW5kJiBDU1NQYXJzZXJTaG9ydGhh
bmQ6OnNoYXJlZENTU1BhcnNlclNob3J0aGFuZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQYXJzZXJTaG9ydGhhbmQsIGNzc0NTU1BhcnNlclNob3J0aGFuZHNJbnN0YW5jZSwgKCkp
OworICAgIHJldHVybiBjc3NDU1NQYXJzZXJTaG9ydGhhbmRzSW5zdGFuY2U7Cit9CisKK0NTU1Bh
cnNlclNob3J0aGFuZDo6Q1NTUGFyc2VyU2hvcnRoYW5kKCkKK3sKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkKKyAgICAgICAgbV9oYW5kbGVyQXJyYXlbaV0g
PSBTaG9ydGhhbmRIYW5kbGVyKCk7CisKKyAgICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVmb3Jl
IGNvbG9yIGluIHRoaXMgYXJyYXkgYmVjYXVzZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdhbCBj
b2xvcgorICAgIC8vIGluIHF1aXJrcyBtb2RlIGJ1dCBpdCdzIHVzdWFsbHkgdGhlIFggY29vcmRp
bmF0ZSBvZiBhIHBvc2l0aW9uLgorICAgIC8vIEZJWE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kU2l6ZSB0byB0aGUgc2hvcnRoYW5kLgorICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kLCBGaWxsU2hvcnRoYW5kSGFuZGxlcjw3LCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRJbWFnZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRBdHRhY2htZW50LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ2xpcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXIsIEdlbmVyaWNT
aG9ydGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAg
IHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIEdlbmVyaWNTaG9y
dGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJDb2xv
ciwgRm91clZhbHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwg
Q1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9y
LCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckxlZnQsIEdlbmVyaWNTaG9ydGhhbmRI
YW5kbGVyPDMsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgR2VuZXJpY1No
b3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcj46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclNwYWNp
bmcsIFR3b1ZhbHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jp
em9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlCb3Jk
ZXJTdHlsZSwgRm91clZhbHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlCb3JkZXJUb3BT
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZT46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcCwgR2VuZXJpY1Nob3J0
aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7
CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBGb3VyVmFs
dWVzU2hvcnRoYW5kSGFuZGxlcjxDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFdpZHRoPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRI
YW5kbGVyKENTU1Byb3BlcnR5TGlzdFN0eWxlLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBD
U1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIENT
U1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0
aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlNYXJnaW4sIEZvdXJWYWx1ZXNTaG9ydGhhbmRIYW5kbGVy
PENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NQcm9wZXJ0
eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0Pjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5T3V0bGluZSwgR2VuZXJpY1Nob3J0
aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIENTU1Byb3BlcnR5T3V0bGlu
ZVN0eWxlLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVBhZGRpbmcsIEZvdXJWYWx1ZXNTaG9ydGhh
bmRIYW5kbGVyPENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQs
IENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdD46OmNyZWF0
ZUhhbmRsZXIoKSk7CisKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXIsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNl
dFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmUsIEdlbmVyaWNT
aG9ydGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDMsIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5k
U3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydCwg
R2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDIs
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291
bnQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5SdWxlLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUs
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAg
ICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3csIEdlbmVyaWNT
aG9ydGhhbmRIYW5kbGVyPDIsIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NTUHJv
cGVydHlXZWJraXRGbGV4V3JhcD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5k
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCBUd29WYWx1ZXNTaG9ydGhh
bmRIYW5kbGVyPENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUsIEdlbmVyaWNTaG9ydGhh
bmRIYW5kbGVyPDUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0
aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlU3BlZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRNYXNrLCBGaWxsU2hvcnRoYW5kSGFuZGxlcjw2LCBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0LCBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tBdHRhY2htZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgQ1NTUHJv
cGVydHlXZWJraXRNYXNrT3JpZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwyLCBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1N0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZSwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MiwgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U3Ryb2tlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0V3Jh
cCwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdywg
Q1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luPjo6Y3JlYXRlSGFuZGxlcigpKTsKK30KKworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ2ODRj
MTY4Y2VmZThlN2FhNDZhMWY3MjU0MzdkNjJlOWJmODAzNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQuaApAQCAtMCwwICsxLDg2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ1NTUGFyc2VyU2hvcnRoYW5kX2gK
KyNkZWZpbmUgQ1NTUGFyc2VyU2hvcnRoYW5kX2gKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFt
ZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NQYXJzZXI7CisKK2Ns
YXNzIFNob3J0aGFuZEhhbmRsZXIgeworcHVibGljOgorICAgIHR5cGVkZWYgYm9vbCAoKlBhcnNl
RnVuY3Rpb24pKGludCwgQ1NTUGFyc2VyKiwgYm9vbCk7CisgICAgU2hvcnRoYW5kSGFuZGxlcigp
IDogbV9wYXJzZSgwKSB7IH0KKyAgICBTaG9ydGhhbmRIYW5kbGVyKFBhcnNlRnVuY3Rpb24gcGFy
c2UpIDogbV9wYXJzZShwYXJzZSkgeyB9CisgICAgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQs
IENTU1BhcnNlciogcGFyc2VyLCBib29sIGltcG9ydGFudCkgY29uc3QgeyBBU1NFUlQobV9wYXJz
ZSk7IHJldHVybiAoKm1fcGFyc2UpKHByb3BJZCwgcGFyc2VyLCBpbXBvcnRhbnQpOyB9CisgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZTsgfQorICAgIFBhcnNlRnVuY3Rp
b24gcGFyc2VGdW5jdGlvbigpIHsgcmV0dXJuIG1fcGFyc2U7IH0KK3ByaXZhdGU6CisgICAgUGFy
c2VGdW5jdGlvbiBtX3BhcnNlOworfTsKKworY2xhc3MgQ1NTUGFyc2VyU2hvcnRoYW5kIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NQYXJzZXJTaG9ydGhhbmQpOworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdCBDU1NQYXJzZXJTaG9ydGhhbmQmIHNoYXJlZENTU1BhcnNlclNob3J0aGFu
ZCgpOworCisgICAgY29uc3QgU2hvcnRoYW5kSGFuZGxlciYgc2hvcnRoYW5kSGFuZGxlcihDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkKHBy
b3BlcnR5KSk7CisgICAgICAgIHJldHVybiBtX2hhbmRsZXJBcnJheVtpbmRleChwcm9wZXJ0eSld
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBDU1NQYXJzZXJTaG9ydGhhbmQoKTsKKworICAgIHN0
YXRpYyBpbnQgaW5kZXgoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBwcm9wZXJ0eSAtIGZpcnN0Q1NTUHJvcGVydHk7CisgICAgfQorCisgICAgc3RhdGljIGJv
b2wgdmFsaWQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGludCBpID0g
aW5kZXgocHJvcGVydHkpOworICAgICAgICByZXR1cm4gaSA+PSAwICYmIGkgPCBudW1DU1NQcm9w
ZXJ0aWVzOworICAgIH0KKworICAgIHZvaWQgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBTaG9ydGhhbmRIYW5kbGVyIGhhbmRsZXIpCisgICAgeworICAgICAgICBB
U1NFUlQodmFsaWQocHJvcGVydHkpKTsKKyAgICAgICAgQVNTRVJUKCFzaG9ydGhhbmRIYW5kbGVy
KHByb3BlcnR5KS5pc1ZhbGlkKCkpOworICAgICAgICBtX2hhbmRsZXJBcnJheVtpbmRleChwcm9w
ZXJ0eSldID0gaGFuZGxlcjsKKyAgICB9CisKKyAgICBTaG9ydGhhbmRIYW5kbGVyIG1faGFuZGxl
ckFycmF5W251bUNTU1Byb3BlcnRpZXNdOworfTsKKworfQorCisjZW5kaWYgLy8gQ1NTUGFyc2Vy
U2hvcnRoYW5kX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124345</attachid>
            <date>2012-01-27 12:06:26 -0800</date>
            <delta_ts>2012-01-27 13:16:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77129-20120127170622.patch</filename>
            <type>text/plain</type>
            <size>70811</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDczYzg5Y2NkNWFhMjM3
OWZiMDQ2N2E2ZTU0NTM1YzQ5MzBkYjYwYS4uM2JhZTkxZDMxODBjY2NkZDE1Nzg2YmNlNDFmMWMw
YmZhNzYyNWJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAxLTI3ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFNpbXBs
aWZ5IENTUyBzaG9ydGhhbmQgaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIENTUyBzaG9ydGhhbmQgaGFuZGxpbmcgaW50byBh
IHNlcGFyYXRlIGNsYXNzIGluc3BpcmVkCisgICAgICAgIGEgYml0IGZyb20gQ1NTU3R5bGVBcHBs
eVZhbHVlLiBJdCB1c2VzIGhhbmRsZXIgdGhhdCBlYWNoIHNob3J0aGFuZAorICAgICAgICBzcGVj
aWZ5LiBUaGlzIGhhbmRsZXIgaXMgcmVzcG9uc2libGUgdG8gcGFyc2UgdGhlIHNob3J0aGFuZCBj
b3JyZWN0bHkuCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2UgY291bGQgZXh0ZW5kIHRoaXMgaGFu
ZGxlciB0byBleHBhbmQgdGhlIGxvbmdoYW5kcworICAgICAgICBhbmQgc2V0IHRoZW0gdG8gaW5p
dGlhbCBvciBpbmhlcml0LiAKKworICAgICAgICBObyBuZXcgdGVzdHMgOiBJdCdzIGEgcmVmYWN0
b3JpbmcKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9u
ZS5jcHA6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJhY2tncm91bmRDbGlw
KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENTU1BhcnNlcik6CisgICAgICAgICgpOgorICAgICAgICAoSW1wbGljaXRTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdFNjb3BlOjpJbXBsaWNpdFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltcGxpY2l0U2NvcGU6On5JbXBsaWNpdFNjb3BlKToKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyU2hvcnRoYW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFR3b1ZhbHVlc1Nob3J0aGFuZEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHdvVmFs
dWVzU2hvcnRoYW5kSGFuZGxlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUd29W
YWx1ZXNTaG9ydGhhbmRIYW5kbGVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEZvdXJWYWx1
ZXNTaG9ydGhhbmRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvdXJWYWx1ZXNTaG9ydGhh
bmRIYW5kbGVyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvdXJWYWx1ZXNTaG9y
dGhhbmRIYW5kbGVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEdlbmVyaWNTaG9ydGhhbmRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyOjpwYXJz
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyOjpjcmVh
dGVIYW5kbGVyKToKKyAgICAgICAgKCk6CisgICAgICAgIChGaWxsU2hvcnRoYW5kSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpGaWxsU2hvcnRoYW5kSGFuZGxlcjo6cGFyc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsU2hvcnRoYW5kSGFuZGxlcjo6Y3JlYXRlSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnNoYXJlZENTU1BhcnNlclNob3J0
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OkNTU1BhcnNlclNo
b3J0aGFuZCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlclNob3J0aGFuZC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hvcnRoYW5kSGFuZGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaG9ydGhhbmRIYW5kbGVyOjpTaG9ydGhhbmRIYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNob3J0aGFuZEhhbmRsZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hvcnRoYW5kSGFuZGxlcjo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTaG9ydGhhbmRI
YW5kbGVyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKENTU1BhcnNlclNob3J0aGFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnNob3J0aGFuZEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2hvcnRoYW5kOjppbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNob3J0aGFuZDo6c2V0U2hvcnRoYW5kSGFuZGxlcik6CisKIDIwMTItMDEtMjcgIE5v
J2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
W1dLMl0gQ2hpbGQgbGF5ZXJzIGFwcGVhciBpbiB3cm9uZyBwb3NpdGlvbiB3aGVuIHNjcm9sbGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxODMwNmE3NjRhZTVmZDFlNjFmYjRlZTNhMjY3ODQ0
YTBkODIyMTkzLi40NDAzMmEyMTJlYjlhMzk1ZDY3NjgyNDE3ZWQwNWY4ZmZjOWRmOTNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtNDU2LDYgKzQ1Niw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBjc3MvQ1NTT01VdGlscy5jcHAKICAgICBjc3MvQ1NTUGFnZVJ1bGUuY3BwCiAgICAgY3Nz
L0NTU1BhcnNlci5jcHAKKyAgICBjc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcAogICAgIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAogICAgIGNz
cy9DU1NQcm9wZXJ0eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDY4MGRi
ZDY1Mzk1OTRmNDA0OWJmM2JhMjgzNmU0NjljMDVkZTZjMGUuLjY0ZDc1ZmZmNjczODlmZjk1ZDgy
Yzk0YWQzOGRhOTgwMDRjNjVkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MTMzNyw2ICsxMzM3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFnZVJ1bGUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclNob3J0aGFuZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9y
dGhhbmQuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA2ZjU0NDY1MGI3Y2VjYWYw
NjE5M2YwYzU0NjJhY2Y0NDA0NWZmYTcyLi44MzZjMzM4ODczMzJhZWM0ZDEwZGNmOGUyNmIzODQw
NTcyMzY5OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTQxOSw2ICs0MTksNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBjc3MvQ1NTT01VdGlscy5jcHAgXAogICAgIGNzcy9DU1NQYWdlUnVsZS5jcHAgXAogICAg
IGNzcy9DU1NQYXJzZXIuY3BwIFwKKyAgICBjc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcCBcCiAg
ICAgY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAgXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eS5jcHAgXApAQCAtMTUzMSw2ICsxNTMyLDcgQEAgSEVB
REVSUyArPSBcCiAgICAgY3NzL0NTU09NVXRpbHMuaCBcCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmgg
XAogICAgIGNzcy9DU1NQYXJzZXIuaCBcCisgICAgY3NzL0NTU1BhcnNlclNob3J0aGFuZC5oIFwK
ICAgICBjc3MvQ1NTUGFyc2VyVmFsdWVzLmggXAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
IFwKICAgICBjc3MvQ1NTUHJvcGVydHkuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzQyY2ViMmIw
Y2U2YjA5NGQxZGJkMmJiN2MwZjY2NDI0Y2M1ZmJkMy4uMzI0MGY3MDdjY2E4ZjVlYzA0YzRjMDU3
NWMxZmM5YTIxZjY0M2YwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAyNSw2ICsyMDI1LDggQEAK
ICAgICAgICAgICAgICdjc3MvQ1NTUGFnZVJ1bGUuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1Bh
cnNlci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQYXJzZXIuaCcsCisgICAgICAgICAgICAn
Y3NzL0NTU1BhcnNlclNob3J0aGFuZC5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQYXJzZXJT
aG9ydGhhbmQuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAnLAogICAg
ICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwMzUwMzk5MzRhNjE1NTU4MGI1N2U0MDkyZDUyMGNh
MWNhYTYxMzExLi5lNjc3NzFiMDRkYTg5NGE4NWFkYWJiYTc4MWNkOWIwMWMzYjA2MmQ4IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzQxNjEs
NiArMzQxNjEsNjIgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQYXJzZXIuaCIKIAkJ
CQk+CiAJCQk8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQYXJzZXJTaG9y
dGhhbmQuY3BwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IkRlYnVnfFdpbjMyIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOYW1lPSJSZWxlYXNlfFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGVD
b25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZUNvbmZp
Z3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJE
ZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZp
Z3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJh
dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlJlbGVh
c2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1
cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRp
b24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NQYXJzZXJTaG9y
dGhhbmQuaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAg
ICAgICAgICAgICAgPC9GaWxlPgogCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xD
U1NQYXJzZXJWYWx1ZXMuY3BwIgogCQkJCT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YmRhMGFlNWQzZTkzMWZmOWYxMDQwOWM3
MDY3ZTgyNzk1N2ZkNjczLi5kNDJhYmQ4NjNjYzk3MTMzZTQwMGI2NDA1ZDcyMTVlMDQ0MGY4MWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC01NzcyLDYgKzU3NzIsOCBAQAogCQlFMUNBNUNCQzBFOENEQ0FGMDBFOEVGOTAgLyog
SlNXb3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFDQTVDQkIwRThDRENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCAq
LzsgfTsKIAkJRTFDQUE1QzYwRThCRDIzNjAwQTczRUNBIC8qIEpTV29ya2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNBQTVDNTBFOEJEMjM2MDBB
NzNFQ0EgLyogSlNXb3JrZXIuaCAqLzsgfTsKIAkJRTFFMUJGMDAxMTVGRjZGQjAwNkY1MkNBIC8q
IFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUUxQkVGRjExNUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJk
Q29kZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMUU1REQxODE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTVERDE2MTREMzEx
RjUwMDg3RUQ1NSAvKiBDU1NQYXJzZXJTaG9ydGhhbmQuY3BwICovOyB9OworCQlFMUU1REQxOTE0
RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1REQxNzE0RDMxMUY1MDA4N0VENTUgLyog
Q1NTUGFyc2VyU2hvcnRoYW5kLmggKi87IH07CiAJCUUxRTZFRUE0MEI2MjhEQTgwMDVGMkY3MCAv
KiBKU0hUTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRTZFRUEzMEI2MjhEQTgwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RF
bGVtZW50LmNwcCAqLzsgfTsKIAkJRTFFNkVFQTgwQjYyOERCMzAwNUYyRjcwIC8qIEpTSFRNTFNl
bGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxRTZFRUE3MEI2MjhEQjMwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmggKi87
IH07CiAJCUUxRUJCQkQ0MEFBQzlCODcwMDFGRThFMiAvKiBDU1NDaGFyc2V0UnVsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVCQkJEMzBBQUM5
Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICovOyB9OwpAQCAtMTI3MjEsNiArMTI3
MjMsOCBAQAogCQlFMUNBNUNCQjBFOENEQ0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0Eg
LyogSlNXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFMUJFRkYxMTVGRjZGQjAwNkY1MkNB
IC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdpbmRvd3NLZXlib2FyZENvZGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUxRTVERDE2MTREMzExRjUwMDg3RUQ1NSAvKiBDU1NQYXJzZXJTaG9ydGhhbmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFNUREMTcxNEQzMTFGNTAwODdFRDU1IC8q
IENTU1BhcnNlclNob3J0aGFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NQYXJzZXJTaG9ydGhhbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFNkVF
QTMwQjYyOERBODAwNUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MU2VsZWN0RWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRTZFRUE3MEI2MjhEQjMwMDVGMkY3MCAvKiBKU0hU
TUxTZWxlY3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gSlNI
VE1MU2VsZWN0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVCQkJE
MzBBQUM5Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ2hhcnNldFJ1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTk5NTgsNiArMTk5NjIsOCBAQAogCQkJCTg1QzU2Q0E2MEFBODlENUYw
MEQ5NTc1NSAvKiBDU1NQYWdlUnVsZS5pZGwgKi8sCiAJCQkJQkM3NzJCMzcwQzRFQTkxRTAwODMy
ODVGIC8qIENTU1BhcnNlci5jcHAgKi8sCiAJCQkJQkM3NzJCMzgwQzRFQTkxRTAwODMyODVGIC8q
IENTU1BhcnNlci5oICovLAorCQkJCUUxRTVERDE2MTREMzExRjUwMDg3RUQ1NSAvKiBDU1NQYXJz
ZXJTaG9ydGhhbmQuY3BwICovLAorCQkJCUUxRTVERDE3MTREMzExRjUwMDg3RUQ1NSAvKiBDU1NQ
YXJzZXJTaG9ydGhhbmQuaCAqLywKIAkJCQlCQzAyQTUzRjBFMDk5QzVBMDA0QjZEMkIgLyogQ1NT
UGFyc2VyVmFsdWVzLmNwcCAqLywKIAkJCQlCQzAyQTRCNjBFMDk5N0I5MDA0QjZEMkIgLyogQ1NT
UGFyc2VyVmFsdWVzLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1By
aW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI0MDg1LDYgKzI0MDkxLDcgQEAKIAkJCQk4QUQwQTU5
NTE0Qzg4MzM2MDAwRDgzQzUgLyogSlNXZWJLaXRDU1NSZWdpb25SdWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4QUQwQTU5NjE0Qzg4MzU4MDAwRDgzQzUgLyogRE9NV2ViS2l0Q1NTUmVnaW9uUnVs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEFEMEE1OTgxNEM4ODM1ODAwMEQ4M0M1IC8qIERPTVdl
YktpdENTU1JlZ2lvblJ1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFFNUREMTkx
NEQzMTFGNTAwODdFRDU1IC8qIENTU1BhcnNlclNob3J0aGFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yNzAxMCw2ICsyNzAxNyw3IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhT
U0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENF
IC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3
QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUU1
REQxODE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggN2Q1ZjI1MGQxYmM4Y2M3NzEx
YWU0ZDUxNGQ5OWRmMTJjNDlkZjQ2Yi4uZDI5NzljOTI0YTFkOTU1ZWZiMjAyY2VkZjA0NDU4MGY5
ZjM5YTBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCkBAIC01Miw2ICs1Miw3IEBA
CiAjaW5jbHVkZSAiQ1NTT01VdGlscy5jcHAiCiAjaW5jbHVkZSAiQ1NTUGFnZVJ1bGUuY3BwIgog
I2luY2x1ZGUgIkNTU1BhcnNlci5jcHAiCisjaW5jbHVkZSAiQ1NTUGFyc2VyU2hvcnRoYW5kLmNw
cCIKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuY3BwIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TG9uZ2hhbmQuY3BwIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGVhZjY3MDMxMzllNDZiNTM2MzZhYjhiZDQ1YmQ4NThk
YmQ3MThhMTYuLjAyOTFlNGZmZjNhZWJlZDFmMjllZDU3ODQ2YmE5YWJiYmVmODMyZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiQ1NTTWVk
aWFSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNs
dWRlICJDU1NQYWdlUnVsZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclNob3J0aGFuZC5oIgogI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCkBAIC0xMDYsMzMgKzEwNyw2IEBAIGV4dGVybiBp
bnQgY3NzeXlwYXJzZSh2b2lkKiBwYXJzZXIpOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiAKLW5hbWVzcGFjZSB7Ci0KLWVudW0gUHJvcGVydHlUeXBlIHsKLSAg
ICBQcm9wZXJ0eUV4cGxpY2l0LAotICAgIFByb3BlcnR5SW1wbGljaXQKLX07Ci0KLWNsYXNzIElt
cGxpY2l0U2NvcGUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltcGxpY2l0U2NvcGUpOwot
cHVibGljOgotICAgIEltcGxpY2l0U2NvcGUoV2ViQ29yZTo6Q1NTUGFyc2VyKiBwYXJzZXIsIFBy
b3BlcnR5VHlwZSBwcm9wZXJ0eVR5cGUpCi0gICAgICAgIDogbV9wYXJzZXIocGFyc2VyKQotICAg
IHsKLSAgICAgICAgbV9wYXJzZXItPm1faW1wbGljaXRTaG9ydGhhbmQgPSBwcm9wZXJ0eVR5cGUg
PT0gUHJvcGVydHlJbXBsaWNpdDsKLSAgICB9Ci0KLSAgICB+SW1wbGljaXRTY29wZSgpCi0gICAg
ewotICAgICAgICBtX3BhcnNlci0+bV9pbXBsaWNpdFNob3J0aGFuZCA9IGZhbHNlOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpDU1NQYXJzZXIqIG1fcGFyc2VyOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMgPSBVSU5UX01BWDsKQEAgLTIwNiw2ICsx
ODAsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBt
X2xhc3RTZWxlY3RvckxpbmVOdW1iZXIoMCkKICAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0cnVl
KQogICAgICwgbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyh0cnVlKQorICAgICwgbV9zaG9y
dGhhbmRQYXJzZXIoQ1NTUGFyc2VyU2hvcnRoYW5kOjpzaGFyZWRDU1NQYXJzZXJTaG9ydGhhbmQo
KSkKIHsKICNpZiBZWURFQlVHID4gMAogICAgIGNzc3l5ZGVidWcgPSAxOwpAQCAtODc4LDcgKzg1
MywxMyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CiAgICAgUmVmUHRyPENTU1Zh
bHVlPiBwYXJzZWRWYWx1ZTsKIAotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4ocHJvcElkKSkgeworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCA9IHN0YXRpY19jYXN0
PENTU1Byb3BlcnR5SUQ+KHByb3BJZCk7CisgICAgLy8gQmVmb3JlIGNvbnRpbnVpbmcgbGV0cyBs
b29rIGlmIHRoZXJlIGlzIGEgcGFyc2luZyBoYW5kbGVyLgorICAgIGNvbnN0IFNob3J0aGFuZEhh
bmRsZXImIGhhbmRsZXIgPSBtX3Nob3J0aGFuZFBhcnNlci5zaG9ydGhhbmRIYW5kbGVyKHByb3Bl
cnR5SWQpOworICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGhhbmRs
ZXIucGFyc2VWYWx1ZShwcm9wSWQsIHRoaXMsIGltcG9ydGFudCk7CisKKyAgICBzd2l0Y2ggKHBy
b3BlcnR5SWQpIHsKICAgICAgICAgLyogVGhlIGNvbW1lbnQgdG8gdGhlIGxlZnQgZGVmaW5lcyBh
bGwgdmFsaWQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0aWVzIGFzIGRlZmluZWQKICAgICAgICAgICog
aW4gQ1NTIDIsIEFwcGVuZGl4IEYuIFByb3BlcnR5IGluZGV4CiAgICAgICAgICAqLwpAQCAtMTA3
MSwyNSArMTA1Miw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OiAgLy8gbm9ybWFs
IHwgYm9sZCB8IGJvbGRlciB8IGxpZ2h0ZXIgfCAxMDAgfCAyMDAgfCAzMDAgfCA0MDAgfCA1MDAg
fCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCBpbmhlcml0CiAgICAgICAgIHJldHVybiBwYXJzZUZv
bnRXZWlnaHQoaW1wb3J0YW50KTsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5n
OiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcgfTsKLSAgICAgICAg
aWYgKG51bSA9PSAxKSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBD
U1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpOwotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHBy
b3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFy
c2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3Bl
cnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnVtID09IDIpIHsKLSAgICAgICAgICAgIFNob3J0
aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZyk7Ci0gICAgICAg
ICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VW
YWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmc6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwg
Rk5vbk5lZywgbV9zdHJpY3QpOwpAQCAtMTY1MywxMiArMTYxNSw2IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRGbGV4V3JhcDoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NW
YWx1ZU5vd3JhcCB8fCBpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwUmV2
ZXJzZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWU6
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNV0gPSB7IENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZURpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
UmVwZXRpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCB9Owot
ICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCA1LCBpbXBv
cnRhbnQpOwotICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlv
bjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRm9yd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVC
YWNrd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVBaGVhZCB8fAogICAgICAgICAgICAgaWQgPT0gQ1NT
VmFsdWVSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0
IHx8IGlkID09IENTU1ZhbHVlRG93biB8fApAQCAtMTgwNywyNSArMTc2Myw2IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRHcmlkUm93czoKICAgICAgICAgcmV0dXJuIHBhcnNlR3JpZFRyYWNr
TGlzdChwcm9wSWQsIGltcG9ydGFudCk7CiAjZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQ29sbGFwc2U6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsCi0gICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UgfTsKLSAgICAgICAgaWYgKG51bSA9PSAx
KSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkNvbGxhcHNlKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0
aWVzWzBdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFBy
b3BlcnRpZXMtMV0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVz
WzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKG51bSA9PSAyKSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRT
Y29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsKLSAgICAg
ICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3Jl
Q29sbGFwc2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgpAQCAtMjAyNCwx
MzQgKzE5NjEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAgICBicmVhazsKICNlbmRpZgotICAgICAgICAv
KiBzaG9ydGhhbmQgcHJvcGVydGllcyAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
OiB7Ci0gICAgICAgIC8vIFBvc2l0aW9uIG11c3QgY29tZSBiZWZvcmUgY29sb3IgaW4gdGhpcyBh
cnJheSBiZWNhdXNlIGEgcGxhaW4gb2xkICIwIiBpcyBhIGxlZ2FsIGNvbG9yCi0gICAgICAgIC8v
IGluIHF1aXJrcyBtb2RlIGJ1dCBpdCdzIHVzdWFsbHkgdGhlIFggY29vcmRpbmF0ZSBvZiBhIHBv
c2l0aW9uLgotICAgICAgICAvLyBGSVhNRTogQWRkIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUg
dG8gdGhlIHNob3J0aGFuZC4KLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0
YWNobWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIENTU1Byb3BlcnR5QmFja2dy
b3VuZE9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ2xpcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlRmlsbFNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDcsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOiB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tPcmlnaW4sIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlRmlsbFNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDYsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Ci0gICAgICAgIC8vIFsgJ2Jv
cmRlci13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAg
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVy
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yIH07Ci0gICAgICAgIGlmIChwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCkpIHsKLSAgICAgICAgICAg
IC8vIFRoZSBDU1MzIEJvcmRlcnMgYW5kIEJhY2tncm91bmRzIHNwZWNpZmljYXRpb24gc2F5cyB0
aGF0IGJvcmRlciBhbHNvIHJlc2V0cyBib3JkZXItaW1hZ2UuIEl0J3MgYXMKLSAgICAgICAgICAg
IC8vIHRob3VnaCBhIHZhbHVlIG9mIG5vbmUgd2FzIHNwZWNpZmllZCBmb3IgdGhlIGltYWdlLgot
ICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgY3NzVmFsdWVQ
b29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6Ci0gICAgICAgIC8vIFsgJ2JvcmRlci10
b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRv
cFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcn07Ci0gICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKLSAgICAgICAgLy8gWyAnYm9yZGVy
LXJpZ2h0LXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0g
ICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAg
ICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0
YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKLSAgICAgICAg
Ly8gWyAnYm9yZGVyLWJvdHRvbS13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBd
IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3Bl
cnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0OgotICAgICAgICAvLyBbICdib3JkZXItbGVmdC13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScg
fHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdENvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQs
IHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNd
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3Rh
cnRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0
aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRW5kOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5
bGUsCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yIH07Ci0gICAg
ICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmU6Ci0gICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwKLSAg
ICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgotICAgIHsKLSAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QWZ0ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLAotICAgICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yIH07Ci0gICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgotICAgICAgICAvLyBbICdvdXRsaW5lLWNvbG9y
JyB8fCAnb3V0bGluZS1zdHlsZScgfHwgJ291dGxpbmUtd2lkdGgnIF0gfCBpbmhlcml0Ci0gICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlPdXRsaW5l
V2lkdGgsIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBh
cnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgICAgICAvLyA8Y29sb3I+ezEsNH0g
fCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NT
UHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21D
b2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNl
NFZhbHVlcyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKLSAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8
IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0
VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclN0eWxlOgotICAgICAgICAvLyA8Ym9yZGVyLXN0eWxlPnsxLDR9IHwg
aW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlIH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRW
YWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENT
U1Byb3BlcnR5TWFyZ2luOgotICAgICAgICAvLyA8bWFyZ2luLXdpZHRoPnsxLDR9IHwgaW5oZXJp
dAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5
TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywg
aW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6Ci0gICAgICAg
IC8vIDxwYWRkaW5nLXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgQ1NTUHJvcGVydHlQ
YWRkaW5nUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eVBhZGRpbmdCb3R0b20sIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQgfTsKLSAgICAgICAgcmV0
dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFudCk7Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NT
UHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwotICAgIH0KICAgICBjYXNlIENTU1By
b3BlcnR5Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8fCAnZm9udC12YXJpYW50
JyB8fCAnZm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGluZS1oZWlnaHQnIF0/CiAg
ICAgICAgIC8vICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29uIHwgbWVudSB8IG1lc3Nh
Z2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhlcml0CkBAIC0yMTYwLDI1
ICsxOTY5LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBwYXJzZUZvbnQoaW1w
b3J0YW50KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUxp
c3RTdHlsZVR5cGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlIH07Ci0gICAg
ICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zOiB7Ci0gICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRo
LCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDIsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciB9OwotICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0K
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZTogewotICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDIsIGltcG9ydGFudCk7Ci0gICAgfQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246CiAgICAgICAgIHJldHVybiBwYXJzZUFuaW1h
dGlvblNob3J0aGFuZChpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uOgpAQCAtMjIwMywxMSArMTk5Myw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXND
b2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KLQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKICAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlT3ZlciB8fCBpZCA9PSBDU1NWYWx1ZVVuZGVyKQogICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjI2NywxMCArMjA1Miw2IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlk
ICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOiB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1By
b3BlcnR5V2Via2l0V3JhcE1hcmdpbiwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9Owot
ICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KICNpZiBFTkFCTEUoU1ZH
KQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBwYXJzZVNWR1ZhbHVlKHByb3BJZCwgaW1w
b3J0YW50KTsKQEAgLTIzMDcsNyArMjA4OCw3IEBAIHZvaWQgQ1NTUGFyc2VyOjphZGRGaWxsVmFs
dWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcnZhbCkKICAg
ICAgICAgbHZhbCA9IHJ2YWw7CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlQmFja2dyb3VuZENsaXAo
Q1NTUGFyc2VyVmFsdWUqIHBhcnNlclZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiBjc3NWYWx1ZSwg
Q1NTVmFsdWVQb29sKiBjc3NWYWx1ZVBvb2wpCitib29sIENTU1BhcnNlcjo6cGFyc2VCYWNrZ3Jv
dW5kQ2xpcChDU1NQYXJzZXJWYWx1ZSogcGFyc2VyVmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4mIGNz
c1ZhbHVlLCBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCkKIHsKICAgICBpZiAocGFyc2VyVmFs
dWUtPmlkID09IENTU1ZhbHVlQm9yZGVyQm94IHx8IHBhcnNlclZhbHVlLT5pZCA9PSBDU1NWYWx1
ZVBhZGRpbmdCb3gKICAgICAgICAgfHwgcGFyc2VyVmFsdWUtPmlkID09IENTU1ZhbHVlQ29udGVu
dEJveCB8fCBwYXJzZXJWYWx1ZS0+aWQgPT0gQ1NTVmFsdWVXZWJraXRUZXh0KSB7CkBAIC0yMzE3
LDEzNyArMjA5OCw2IEBAIHN0YXRpYyBib29sIHBhcnNlQmFja2dyb3VuZENsaXAoQ1NTUGFyc2Vy
VmFsdWUqIHBhcnNlclZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiBjCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1jb25zdCBpbnQgY01heEZpbGxQcm9wZXJ0aWVzID0gOTsKLQotYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlRmlsbFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCkKLXsKLSAgICBBU1NFUlQobnVtUHJv
cGVydGllcyA8PSBjTWF4RmlsbFByb3BlcnRpZXMpOwotICAgIGlmIChudW1Qcm9wZXJ0aWVzID4g
Y01heEZpbGxQcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBTaG9ydGhh
bmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwotCi0gICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtj
TWF4RmlsbFByb3BlcnRpZXNdID0geyBmYWxzZSB9OwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
dWVzW2NNYXhGaWxsUHJvcGVydGllc107Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBjbGlwVmFsdWU7
Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBwb3NpdGlvbllWYWx1ZTsKLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IHJlcGVhdFlWYWx1ZTsKLSAgICBib29sIGZvdW5kQ2xpcCA9IGZhbHNlOwotICAgIGludCBp
OwotCi0gICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKLSAgICAgICAgQ1NTUGFy
c2VyVmFsdWUqIHZhbCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgICAgIGlmICh2YWwt
PnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcsJykg
ewotICAgICAgICAgICAgLy8gV2UgaGl0IHRoZSBlbmQuICBGaWxsIGluIGFsbCByZW1haW5pbmcg
dmFsdWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCi0gICAgICAgICAgICBtX3ZhbHVlTGlzdC0+
bmV4dCgpOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkg
ewotICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yICYmIHBhcnNlZFByb3BlcnR5W2ldKQotICAgICAgICAgICAgICAgICAgICAvLyBD
b2xvciBpcyBub3QgYWxsb3dlZCBleGNlcHQgYXMgdGhlIGxhc3QgaXRlbSBpbiBhIGxpc3QgZm9y
IGJhY2tncm91bmRzLgotICAgICAgICAgICAgICAgICAgICAvLyBSZWplY3QgdGhlIGVudGlyZSBw
cm9wZXJ0eS4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAg
ICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSAmJiBwcm9wZXJ0aWVzW2ldICE9IENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZEZpbGxWYWx1ZSh2
YWx1ZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZpbGxWYWx1ZShwb3NpdGlvbllW
YWx1ZSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXQgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocmVwZWF0WVZhbHVlLCBjc3NW
YWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4g
fHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pICYmICFwYXJz
ZWRQcm9wZXJ0eVtpXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYmFja2dyb3Vu
ZC1vcmlnaW4gd2Fzbid0IHByZXNlbnQsIHRoZW4gcmVzZXQgYmFja2dyb3VuZC1jbGlwIGFsc28u
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCBjc3NWYWx1
ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlb
aV0gPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghbV92YWx1ZUxpc3Qt
PmN1cnJlbnQoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChpID0gMDsgIWZvdW5kICYmIGkgPCBu
dW1Qcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0p
IHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDE7Ci0gICAgICAgICAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwyOwotICAgICAgICAgICAgICAgIGludCBwcm9wSWQxLCBw
cm9wSWQyOwotICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlKiBwYXJzZXJWYWx1ZSA9IG1f
dmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlRmlsbFByb3Bl
cnR5KHByb3BlcnRpZXNbaV0sIHByb3BJZDEsIHByb3BJZDIsIHZhbDEsIHZhbDIpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUodmFsdWVzW2ldLCB2YWwxLnJlbGVhc2UoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocG9zaXRpb25ZVmFs
dWUsIHZhbDIucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNb
aV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmls
bFZhbHVlKHJlcGVhdFlWYWx1ZSwgdmFsMi5yZWxlYXNlKCkpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4gfHwgcHJv
cGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFJlcGFyc2UgdGhlIHZhbHVlIGFzIGEgY2xpcCwgYW5kIHNlZSBpZiB3
ZSBzdWNjZWVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlQmFja2dyb3VuZENs
aXAocGFyc2VyVmFsdWUsIHZhbDEsIGNzc1ZhbHVlUG9vbCgpKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCB2YWwxLnJlbGVhc2UoKSk7IC8vIFRo
ZSBwcm9wZXJ0eSBwYXJzZWQgc3VjY2Vzc2Z1bGx5LgotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZpbGxWYWx1ZShjbGlwVmFsdWUs
IGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsgLy8gU29tZSB2
YWx1ZSB3YXMgdXNlZCBmb3Igb3JpZ2luIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSBjbGlwLiBK
dXN0IHJlc2V0IGNsaXAgaW5zdGVhZC4KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlw
IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNsaXBWYWx1ZQotICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgdmFsMS5yZWxlYXNlKCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZm91bmRDbGlwID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8v
IGlmIHdlIGRpZG4ndCBmaW5kIGF0IGxlYXN0IG9uZSBtYXRjaCwgdGhpcyBpcyBhbgotICAgICAg
ICAvLyBpbnZhbGlkIHNob3J0aGFuZCBhbmQgd2UgaGF2ZSB0byBpZ25vcmUgaXQKLSAgICAgICAg
aWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBG
aWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgot
ICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgaWYgKCFw
YXJzZWRQcm9wZXJ0eVtpXSkgewotICAgICAgICAgICAgYWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwg
Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwotICAgICAgICAg
ICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwg
cHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKLSAgICAgICAg
ICAgICAgICBhZGRGaWxsVmFsdWUocG9zaXRpb25ZVmFsdWUsIGNzc1ZhbHVlUG9vbCgpLT5jcmVh
dGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ld
ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1By
b3BlcnR5V2Via2l0TWFza1JlcGVhdCkKLSAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocmVw
ZWF0WVZhbHVlLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7
Ci0gICAgICAgICAgICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
T3JpZ2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSAm
JiAhcGFyc2VkUHJvcGVydHlbaV0pIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBiYWNrZ3JvdW5k
LW9yaWdpbiB3YXNuJ3QgcHJlc2VudCwgdGhlbiByZXNldCBiYWNrZ3JvdW5kLWNsaXAgYWxzby4K
LSAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCBjc3NWYWx1ZVBvb2woKS0+
Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBOb3cgYWRkIGFsbCBvZiB0aGUgcHJvcGVydGllcyB3ZSBmb3VuZC4K
LSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7Ci0gICAgICAgIGlmIChw
cm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uKSB7Ci0gICAgICAg
ICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIHZhbHVlc1tp
XS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgICAgICAvLyBpdCdzIE9LIHRvIGNhbGwg
cG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2VlIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uIG9uY2UKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWSwgcG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQp
OwotICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uWCwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKLSAgICAgICAg
ICAgIC8vIGl0J3MgT0sgdG8gY2FsbCBwb3NpdGlvbllWYWx1ZS5yZWxlYXNlKCkgc2luY2Ugd2Ug
b25seSBzZWUgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24gb25jZQotICAgICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBwb3NpdGlvbllWYWx1
ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQpIHsKLSAgICAgICAgICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIHZhbHVlc1tpXS5yZWxlYXNlKCksIGlt
cG9ydGFudCk7Ci0gICAgICAgICAgICAvLyBpdCdzIE9LIHRvIGNhbGwgcmVwZWF0WVZhbHVlLnJl
bGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiBv
bmNlCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZ
LCByZXBlYXRZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICB9IGVsc2UgaWYg
KHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KSB7Ci0gICAgICAg
ICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCB2YWx1ZXNbaV0u
cmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxsIHJl
cGVhdFlWYWx1ZS5yZWxlYXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb24gb25jZQotICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUmVwZWF0WSwgcmVwZWF0WVZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKLSAgICAg
ICAgfSBlbHNlIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlw
IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkgJiYgIWZvdW5k
Q2xpcCkKLSAgICAgICAgICAgIC8vIFZhbHVlIGlzIGFscmVhZHkgc2V0IHdoaWxlIHVwZGF0aW5n
IG9yaWdpbgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFu
dCk7Ci0KLSAgICAgICAgLy8gQWRkIGluIGNsaXAgdmFsdWVzIHdoZW4gd2UgaGl0IHRoZSBjb3Jy
ZXNwb25kaW5nIG9yaWdpbiBwcm9wZXJ0eS4KLSAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luICYmICFmb3VuZENsaXApCi0gICAgICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBjbGlwVmFsdWUucmVsZWFzZSgp
LCBpbXBvcnRhbnQpOwotICAgICAgICBlbHNlIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3Bl
cnR5V2Via2l0TWFza09yaWdpbiAmJiAhZm91bmRDbGlwKQotICAgICAgICAgICAgYWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgY2xpcFZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0
YW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBDU1NQYXJzZXI6OmFk
ZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IHJ2YWwpCiB7CiAgICAgaWYgKGx2YWwpIHsKQEAgLTI1ODQsMTAxICsyMjM0LDYgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGludCBw
cm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1w
b3J0YW50KQotewotICAgIC8vIFdlIHRyeSB0byBtYXRjaCBhcyBtYW55IHByb3BlcnRpZXMgYXMg
cG9zc2libGUKLSAgICAvLyBXZSBzZXQgdXAgYW4gYXJyYXkgb2YgYm9vbGVhbnMgdG8gbWFyayB3
aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3VuZCwKLSAgICAvLyBhbmQgd2UgdHJ5IHRvIHNlYXJj
aCBmb3IgcHJvcGVydGllcyB1bnRpbCBpdCBtYWtlcyBubyBsb25nZXIgYW55IHNlbnNlLgotICAg
IFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7Ci0KLSAgICBib29sIGZvdW5kID0g
ZmFsc2U7Ci0gICAgYm9vbCBmbmRbNl07IC8vIFRydXN0IG1lIDspCi0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGZuZFtpXSA9IGZhbHNlOwotCi0g
ICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKLSAgICAgICAgZm91bmQgPSBmYWxz
ZTsKLSAgICAgICAgZm9yIChpbnQgcHJvcEluZGV4ID0gMDsgIWZvdW5kICYmIHByb3BJbmRleCA8
IG51bVByb3BlcnRpZXM7ICsrcHJvcEluZGV4KSB7Ci0gICAgICAgICAgICBpZiAoIWZuZFtwcm9w
SW5kZXhdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlVmFsdWUocHJvcGVydGllc1twcm9w
SW5kZXhdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgICAgICBmbmRbcHJvcEluZGV4XSA9
IGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIGlm
IHdlIGRpZG4ndCBmaW5kIGF0IGxlYXN0IG9uZSBtYXRjaCwgdGhpcyBpcyBhbgotICAgICAgICAv
LyBpbnZhbGlkIHNob3J0aGFuZCBhbmQgd2UgaGF2ZSB0byBpZ25vcmUgaXQKLSAgICAgICAgaWYg
KCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBGaWxs
IGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgotICAg
IEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBpZiAo
IWZuZFtpXSkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIGNzc1ZhbHVl
UG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGlu
dCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQotewotICAg
IC8qIEZyb20gdGhlIENTUyAyIHNwZWNzLCA4LjMKLSAgICAgKiBJZiB0aGVyZSBpcyBvbmx5IG9u
ZSB2YWx1ZSwgaXQgYXBwbGllcyB0byBhbGwgc2lkZXMuIElmIHRoZXJlIGFyZSB0d28gdmFsdWVz
LCB0aGUgdG9wIGFuZAotICAgICAqIGJvdHRvbSBtYXJnaW5zIGFyZSBzZXQgdG8gdGhlIGZpcnN0
IHZhbHVlIGFuZCB0aGUgcmlnaHQgYW5kIGxlZnQgbWFyZ2lucyBhcmUgc2V0IHRvIHRoZSBzZWNv
bmQuCi0gICAgICogSWYgdGhlcmUgYXJlIHRocmVlIHZhbHVlcywgdGhlIHRvcCBpcyBzZXQgdG8g
dGhlIGZpcnN0IHZhbHVlLCB0aGUgbGVmdCBhbmQgcmlnaHQgYXJlIHNldCB0byB0aGUKLSAgICAg
KiBzZWNvbmQsIGFuZCB0aGUgYm90dG9tIGlzIHNldCB0byB0aGUgdGhpcmQuIElmIHRoZXJlIGFy
ZSBmb3VyIHZhbHVlcywgdGhleSBhcHBseSB0byB0aGUgdG9wLAotICAgICAqIHJpZ2h0LCBib3R0
b20sIGFuZCBsZWZ0LCByZXNwZWN0aXZlbHkuCi0gICAgICovCi0KLSAgICBpbnQgbnVtID0gaW5T
aG9ydGhhbmQoKSA/IDEgOiBtX3ZhbHVlTGlzdC0+c2l6ZSgpOwotCi0gICAgU2hvcnRoYW5kU2Nv
cGUgc2NvcGUodGhpcywgcHJvcElkKTsKLQotICAgIC8vIHRoZSBvcmRlciBpcyB0b3AsIHJpZ2h0
LCBib3R0b20sIGxlZnQKLSAgICBzd2l0Y2ggKG51bSkgewotICAgICAgICBjYXNlIDE6IHsKLSAg
ICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9
IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7Ci0g
ICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBs
aWNpdCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1w
b3J0YW50KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBp
bXBvcnRhbnQpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUs
IGltcG9ydGFudCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IDI6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRh
bnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJz
ZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKLSAgICAgICAg
ICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsK
LSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQp
OwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzLTJdLT52YWx1ZSgpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sz
XSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIDM6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBd
LCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkgfHwg
IXBhcnNlVmFsdWUocHJvcGVydGllc1syXSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3Bl
cnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOwotICAgICAgICAgICAgSW1w
bGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgICAg
ICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIDQ6IHsKLSAgICAgICAgICAg
IGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVl
KHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkgfHwKLSAgICAgICAgICAgICAgICAhcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbM10s
IGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8vIGF1
dG8gfCA8aWRlbnRpZmllcj4KIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVBhZ2UoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggM2JmMDQ1ZTYzZmJh
MWQ2NmM4M2RiNTlkY2ZlZTUxOTVhY2YzYmZmYi4uN2EwMjcyZjk2YjhjNDhiMjFhMGI3MGY2YmNj
M2Y5MjI2MzE4M2VhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNDYsNiArNDYsNyBAQCBj
bGFzcyBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiBjbGFzcyBDU1NWYWx1ZVBv
b2w7CitjbGFzcyBDU1NQYXJzZXJTaG9ydGhhbmQ7CiBjbGFzcyBDU1NQcm9wZXJ0eTsKIGNsYXNz
IENTU1J1bGU7CiBjbGFzcyBDU1NSdWxlTGlzdDsKQEAgLTg3LDggKzg4LDYgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyc2VkUHJvcGVy
dGllcyA+IDA7IH0KIAogICAgIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCk7Ci0gICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHBy
b3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBw
YXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBib29sIGltcG9y
dGFudCk7CiAgICAgYm9vbCBwYXJzZUNvbnRlbnQoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
OwogICAgIGJvb2wgcGFyc2VRdW90ZXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogCkBA
IC0xMDgsNyArMTA3LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNl
RmlsbFNpemUoaW50IHByb3BJZCwgYm9vbCAmYWxsb3dDb21tYSk7CiAKICAgICBib29sIHBhcnNl
RmlsbFByb3BlcnR5KGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBSZWZQ
dHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIGJvb2wgcGFyc2VGaWxsU2hv
cnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRp
ZXMsIGJvb2wgaW1wb3J0YW50KTsKIAogICAgIHZvaWQgYWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NW
YWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpOwogCkBAIC0xNTAsNiArMTQ4
LDggQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VDb3VudGVyKGludCBwcm9wSWQsIGludCBkZWZh
dWx0VmFsdWUsIGJvb2wgaW1wb3J0YW50KTsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCogYXJncywgYm9vbCBjb3VudGVycyk7
CiAKKyAgICBib29sIHBhcnNlQmFja2dyb3VuZENsaXAoQ1NTUGFyc2VyVmFsdWUqLCBSZWZQdHI8
Q1NTVmFsdWU+JiwgQ1NTVmFsdWVQb29sKik7CisKICAgICBib29sIHBhcnNlQ29sb3JQYXJhbWV0
ZXJzKENTU1BhcnNlclZhbHVlKiwgaW50KiBjb2xvclZhbHVlcywgYm9vbCBwYXJzZUFscGhhKTsK
ICAgICBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSosIGRvdWJsZSogY29s
b3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gcGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogPSAwKTsKQEAgLTM4OCw2ICszODgsOCBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVz
YWJsZVNlbGVjdG9yVmVjdG9yOwogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4gbV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOwogCisgICAgY29uc3QgQ1NTUGFyc2Vy
U2hvcnRoYW5kJiBtX3Nob3J0aGFuZFBhcnNlcjsKKwogICAgIC8vIGRlZmluZXMgdW5pdHMgYWxs
b3dlZCBmb3IgYSBjZXJ0YWluIHByb3BlcnR5LCB1c2VkIGluIHBhcnNlVW5pdAogICAgIGVudW0g
VW5pdHMgewogICAgICAgICBGVW5rbm93biAgID0gMHgwMDAwLApAQCAtNDE0LDYgKzQxNiw3IEBA
IHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0
aXZlTnVtZXJpY1ZhbHVlKENTU1BhcnNlclZhbHVlKik7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsK
IAorICAgIGZyaWVuZCBjbGFzcyBDU1NQYXJzZXJTaG9ydGhhbmQ7CiAgICAgZnJpZW5kIGNsYXNz
IFRyYW5zZm9ybU9wZXJhdGlvbkluZm87CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGZy
aWVuZCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25JbmZvOwpAQCAtNDQyLDYgKzQ0NSwyOSBAQCBwcml2
YXRlOgogICAgIENTU1BhcnNlciogbV9wYXJzZXI7CiB9OwogCitlbnVtIFByb3BlcnR5VHlwZSB7
CisgICAgUHJvcGVydHlFeHBsaWNpdCwKKyAgICBQcm9wZXJ0eUltcGxpY2l0Cit9OworCitjbGFz
cyBJbXBsaWNpdFNjb3BlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbXBsaWNpdFNjb3Bl
KTsKK3B1YmxpYzoKKyAgICBJbXBsaWNpdFNjb3BlKFdlYkNvcmU6OkNTU1BhcnNlciogcGFyc2Vy
LCBQcm9wZXJ0eVR5cGUgcHJvcGVydHlUeXBlKQorICAgICAgICA6IG1fcGFyc2VyKHBhcnNlcikK
KyAgICB7CisgICAgICAgIG1fcGFyc2VyLT5tX2ltcGxpY2l0U2hvcnRoYW5kID0gcHJvcGVydHlU
eXBlID09IFByb3BlcnR5SW1wbGljaXQ7CisgICAgfQorCisgICAgfkltcGxpY2l0U2NvcGUoKQor
ICAgIHsKKyAgICAgICAgbV9wYXJzZXItPm1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6Q1NTUGFyc2VyKiBtX3BhcnNlcjsKK307CisK
IFN0cmluZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBxdW90ZUNTU1N0
cmluZ0lmTmVlZGVkKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIHF1b3RlQ1NTVVJMSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
U2hvcnRoYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZjOTg1MzQ0OTkzN2QxOWI0ZWQwZWE1MTY2ZjE4ZTFhY2I4ZDVmMzkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmNw
cApAQCAtMCwwICsxLDM4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyU2hvcnRoYW5kLmgiCisKKyNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNTU1Zh
bHVlUG9vbC5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7
Cit0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBvbmUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1By
b3BlcnR5SUQgdHdvID0gQ1NTUHJvcGVydHlJbnZhbGlkPgorY2xhc3MgVHdvVmFsdWVzU2hvcnRo
YW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBDU1NQYXJzZXIqIHBhcnNlciwgYm9vbCBpbXBvcnRhbnQpCisgICAgeworICAgICAgICBp
bnQgbnVtID0gcGFyc2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAxIDogcGFyc2VyLT5tX3ZhbHVl
TGlzdC0+c2l6ZSgpOworCisgICAgICAgIGlmIChudW0gPT0gMSkgeworICAgICAgICAgICAgU2hv
cnRoYW5kU2NvcGUgc2NvcGUocGFyc2VyLCBwcm9wSWQpOworICAgICAgICAgICAgaWYgKCFwYXJz
ZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci0+bV9wYXJzZWRQcm9w
ZXJ0aWVzW3BhcnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOworICAgICAg
ICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0d28sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAobnVtID09IDIpIHsK
KyAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElkKTsKKyAgICAg
ICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSB8fCAhcGFyc2Vy
LT5wYXJzZVZhbHVlKHR3bywgaW1wb3J0YW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIFNob3J0aGFuZEhhbmRsZXIgY3JlYXRlSGFuZGxl
cigpCisgICAgeworICAgICAgICByZXR1cm4gU2hvcnRoYW5kSGFuZGxlcigmcGFyc2VWYWx1ZSk7
CisgICAgfQorfTsKKwordGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVydHlJ
bnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVy
dHlJRCB0aHJlZSA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmb3VyID0gQ1NT
UHJvcGVydHlJbnZhbGlkPgorY2xhc3MgRm91clZhbHVlc1Nob3J0aGFuZEhhbmRsZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBw
YXJzZXIsIGJvb2wgaW1wb3J0YW50KQorICAgIHsKKyAgICAgICAgLyogRnJvbSB0aGUgQ1NTIDIg
c3BlY3MsIDguMworICAgICAgICAgKiBJZiB0aGVyZSBpcyBvbmx5IG9uZSB2YWx1ZSwgaXQgYXBw
bGllcyB0byBhbGwgc2lkZXMuIElmIHRoZXJlIGFyZSB0d28gdmFsdWVzLCB0aGUgdG9wIGFuZAor
ICAgICAgICAgKiBib3R0b20gbWFyZ2lucyBhcmUgc2V0IHRvIHRoZSBmaXJzdCB2YWx1ZSBhbmQg
dGhlIHJpZ2h0IGFuZCBsZWZ0IG1hcmdpbnMgYXJlIHNldCB0byB0aGUgc2Vjb25kLgorICAgICAg
ICAgKiBJZiB0aGVyZSBhcmUgdGhyZWUgdmFsdWVzLCB0aGUgdG9wIGlzIHNldCB0byB0aGUgZmly
c3QgdmFsdWUsIHRoZSBsZWZ0IGFuZCByaWdodCBhcmUgc2V0IHRvIHRoZQorICAgICAgICAgKiBz
ZWNvbmQsIGFuZCB0aGUgYm90dG9tIGlzIHNldCB0byB0aGUgdGhpcmQuIElmIHRoZXJlIGFyZSBm
b3VyIHZhbHVlcywgdGhleSBhcHBseSB0byB0aGUgdG9wLAorICAgICAgICAgKiByaWdodCwgYm90
dG9tLCBhbmQgbGVmdCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgKi8KKworICAgICAgICBpbnQg
bnVtID0gcGFyc2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAxIDogcGFyc2VyLT5tX3ZhbHVlTGlz
dC0+c2l6ZSgpOworCisgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElk
KTsKKworICAgICAgICAvLyBUaGUgb3JkZXIgaXMgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0Lgor
ICAgICAgICBzd2l0Y2ggKG51bSkgeworICAgICAgICBjYXNlIDE6IHsKKyAgICAgICAgICAgIGlm
ICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXItPm1fcGFy
c2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsK
KyAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZShwYXJzZXIsIFByb3BlcnR5
SW1wbGljaXQpOworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0d28sIHZhbHVlLCBp
bXBvcnRhbnQpOworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0aHJlZSwgdmFsdWUs
IGltcG9ydGFudCk7CisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KGZvdXIsIHZhbHVl
LCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSAyOiB7CisgICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFu
dCkgfHwgIXBhcnNlci0+cGFyc2VWYWx1ZSh0d28sIGltcG9ydGFudCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLT5t
X3BhcnNlZFByb3BlcnRpZXNbcGFyc2VyLT5tX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVl
KCk7CisgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUocGFyc2VyLCBQcm9w
ZXJ0eUltcGxpY2l0KTsKKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkodGhyZWUsIHZh
bHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgdmFsdWUgPSBwYXJzZXItPm1fcGFyc2VkUHJv
cGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAg
ICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoZm91ciwgdmFsdWUsIGltcG9ydGFudCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDM6IHsKKyAgICAgICAgICAg
IGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJz
ZVZhbHVlKHR3bywgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHRocmVlLCBpbXBv
cnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIENTU1Zh
bHVlKiB2YWx1ZSA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzW3BhcnNlci0+bV9udW1QYXJz
ZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBs
aWNpdFNjb3BlKHBhcnNlciwgUHJvcGVydHlJbXBsaWNpdCk7CisgICAgICAgICAgICBwYXJzZXIt
PmFkZFByb3BlcnR5KGZvdXIsIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAgICBpZiAoIXBhcnNlci0+
cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFudCkgfHwgIXBhcnNlci0+cGFyc2VWYWx1ZSh0d28sIGlt
cG9ydGFudCkKKyAgICAgICAgICAgICAgICB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHRocmVlLCBp
bXBvcnRhbnQpIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUoZm91ciwgaW1wb3J0YW50KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBT
aG9ydGhhbmRIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNo
b3J0aGFuZEhhbmRsZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK307CisKK3RlbXBsYXRlIDx1bnNp
Z25lZCBudW1Qcm9wZXJ0aWVzLCBDU1NQcm9wZXJ0eUlEIG9uZSA9IENTU1Byb3BlcnR5SW52YWxp
ZCwgQ1NTUHJvcGVydHlJRCB0d28gPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQg
dGhyZWUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQgZm91ciA9IENTU1Byb3Bl
cnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmaXZlID0gQ1NTUHJvcGVydHlJbnZhbGlkPgorY2xh
c3MgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBh
cnNlVmFsdWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KQor
ICAgIHsKKyAgICAgICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkgcHJvcGVydGllcyBhcyBw
b3NzaWJsZQorICAgICAgICAvLyBXZSBzZXQgdXAgYW4gYXJyYXkgb2YgYm9vbGVhbnMgdG8gbWFy
ayB3aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3VuZCwKKyAgICAgICAgLy8gYW5kIHdlIHRyeSB0
byBzZWFyY2ggZm9yIHByb3BlcnRpZXMgdW50aWwgaXQgbWFrZXMgbm8gbG9uZ2VyIGFueSBzZW5z
ZS4KKyAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUocGFyc2VyLCBwcm9wSWQpOworCisgICAg
ICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBmbmRbNl07IC8vIFRydXN0IG1l
IDspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKysp
CisgICAgICAgICAgICBmbmRbaV0gPSBmYWxzZTsKKworICAgICAgICB3aGlsZSAocGFyc2VyLT5t
X3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CisgICAgICAgICAgICBmb3VuZCA9IGZhbHNlOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4
IDwgbnVtUHJvcGVydGllczsgKytwcm9wSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWZu
ZFtwcm9wSW5kZXhdKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZXItPnBhcnNlVmFs
dWUocHJvcGVydGllc1twcm9wSW5kZXhdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZm5kW3Byb3BJbmRleF0gPSBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhdCBsZWFz
dCBvbmUgbWF0Y2gsIHRoaXMgaXMgYW4KKyAgICAgICAgICAgIC8vIGludmFsaWQgc2hvcnRoYW5k
IGFuZCB3ZSBoYXZlIHRvIGlnbm9yZSBpdC4KKyAgICAgICAgICAgIGlmICghZm91bmQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsbCBp
biBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZS4KKyAgICAg
ICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBhcnNlciwgUHJvcGVydHlJbXBsaWNpdCk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsK
KyAgICAgICAgICAgIGlmICghZm5kW2ldKQorICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJv
cGVydHkocHJvcGVydGllc1tpXSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGlj
aXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJ
WE1FIDogbm90IHZlcnkgZ2VuZXJpYyBoZXJlLgorICAgICAgICBpZiAocHJvcElkID09IENTU1By
b3BlcnR5Qm9yZGVyKSB7CisgICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNr
Z3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVy
LWltYWdlLiBJdCdzIGFzCisgICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdh
cyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRl
SW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBTaG9ydGhhbmRIYW5kbGVyIGNyZWF0
ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNob3J0aGFuZEhhbmRsZXIoJnBhcnNl
VmFsdWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzVdOworfTsKK3RlbXBsYXRlIDx1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzLCBDU1NQcm9wZXJ0eUlE
IG9uZSwgQ1NTUHJvcGVydHlJRCB0d28gLCBDU1NQcm9wZXJ0eUlEIHRocmVlICwgQ1NTUHJvcGVy
dHlJRCBmb3VyLCBDU1NQcm9wZXJ0eUlEIGZpdmU+Citjb25zdCBpbnQgR2VuZXJpY1Nob3J0aGFu
ZEhhbmRsZXI8bnVtUHJvcGVydGllcywgb25lLCB0d28sIHRocmVlLCBmb3VyLCBmaXZlPjo6cHJv
cGVydGllc1s1XSA9ICB7IG9uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZSB9OworCitjb25zdCB1
bnNpZ25lZCBjTWF4RmlsbFByb3BlcnRpZXMgPSA5OworCit0ZW1wbGF0ZSA8dW5zaWduZWQgbnVt
UHJvcGVydGllcywgQ1NTUHJvcGVydHlJRCBvbmUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1By
b3BlcnR5SUQgdHdvID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHRocmVlID0g
Q1NTUHJvcGVydHlJbnZhbGlkLAorICAgICAgICAgIENTU1Byb3BlcnR5SUQgZm91ciA9IENTU1By
b3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmaXZlID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBD
U1NQcm9wZXJ0eUlEIHNpeCA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBzZXZl
biA9IENTU1Byb3BlcnR5SW52YWxpZD4KK2NsYXNzIEZpbGxTaG9ydGhhbmRIYW5kbGVyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIENTU1BhcnNlciog
cGFyc2VyLCBib29sIGltcG9ydGFudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChudW1Qcm9wZXJ0
aWVzIDw9IGNNYXhGaWxsUHJvcGVydGllcyk7CisgICAgICAgIGlmIChudW1Qcm9wZXJ0aWVzID4g
Y01heEZpbGxQcm9wZXJ0aWVzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElkKTsKKworICAgICAgICBib29sIHBh
cnNlZFByb3BlcnR5W2NNYXhGaWxsUHJvcGVydGllc10gPSB7IGZhbHNlIH07CisgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWVzW2NNYXhGaWxsUHJvcGVydGllc107CisgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZT4gY2xpcFZhbHVlOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9u
WVZhbHVlOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlcGVhdFlWYWx1ZTsKKyAgICAgICAg
Ym9vbCBmb3VuZENsaXAgPSBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgaTsKKworICAgICAgICB3
aGlsZSAocGFyc2VyLT5tX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CisgICAgICAgICAgICBDU1NQ
YXJzZXJWYWx1ZSogdmFsID0gcGFyc2VyLT5tX3ZhbHVlTGlzdC0+Y3VycmVudCgpOworICAgICAg
ICAgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsLT5p
VmFsdWUgPT0gJywnKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgaGl0IHRoZSBlbmQuIEZpbGwg
aW4gYWxsIHJlbWFpbmluZyB2YWx1ZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZS4KKyAgICAgICAg
ICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICAgICAgZm9y
IChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciAmJiBwYXJzZWRQ
cm9wZXJ0eVtpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbG9yIGlzIG5vdCBhbGxv
d2VkIGV4Y2VwdCBhcyB0aGUgbGFzdCBpdGVtIGluIGEgbGlzdCBmb3IgYmFja2dyb3VuZHMuCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWplY3QgdGhlIGVudGlyZSBwcm9wZXJ0eS4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldICYmIHByb3BlcnRpZXNbaV0gIT0gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmls
bFZhbHVlKHZhbHVlc1tpXSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJ
bml0aWFsVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBwcm9wZXJ0aWVzW2ldID09IENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcnNlci0+YWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZhbHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9v
bCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCB8fCBw
cm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxWYWx1ZShyZXBlYXRZVmFsdWUsIHBhcnNl
ci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZE9yaWdpbiB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdp
bikgJiYgIXBhcnNlZFByb3BlcnR5W2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgYmFja2dyb3VuZC1vcmlnaW4gd2Fzbid0IHByZXNlbnQsIHRoZW4gcmVzZXQgYmFja2dy
b3VuZC1jbGlwIGFsc28uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRG
aWxsVmFsdWUoY2xpcFZhbHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNp
dEluaXRpYWxWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZhbHNl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIXBhcnNlci0+bV92YWx1
ZUxpc3QtPmN1cnJlbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAo
aSA9IDA7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbDE7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
MjsKKyAgICAgICAgICAgICAgICAgICAgaW50IHByb3BJZDEsIHByb3BJZDI7CisgICAgICAgICAg
ICAgICAgICAgIENTU1BhcnNlclZhbHVlKiBwYXJzZXJWYWx1ZSA9IHBhcnNlci0+bV92YWx1ZUxp
c3QtPmN1cnJlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlci0+cGFyc2VGaWxs
UHJvcGVydHkocHJvcGVydGllc1tpXSwgcHJvcElkMSwgcHJvcElkMiwgdmFsMSwgdmFsMikpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUodmFsdWVzW2ld
LCB2YWwxLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGll
c1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBwcm9wZXJ0aWVzW2ldID09
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZhbHVlLCB2YWwyLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXQgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFs
dWUocmVwZWF0WVZhbHVlLCB2YWwyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4gfHwgcHJv
cGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBSZXBhcnNlIHRoZSB2YWx1ZSBhcyBhIGNsaXAsIGFuZCBzZWUg
aWYgd2Ugc3VjY2VlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VyLT5w
YXJzZUJhY2tncm91bmRDbGlwKHBhcnNlclZhbHVlLCB2YWwxLCBwYXJzZXItPmNzc1ZhbHVlUG9v
bCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFs
dWUoY2xpcFZhbHVlLCB2YWwxLnJlbGVhc2UoKSk7IC8vIFRoZSBwcm9wZXJ0eSBwYXJzZWQgc3Vj
Y2Vzc2Z1bGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCBwYXJz
ZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsgLy8gU29t
ZSB2YWx1ZSB3YXMgdXNlZCBmb3Igb3JpZ2luIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSBjbGlw
LiBKdXN0IHJlc2V0IGNsaXAgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFj
a2dyb3VuZENsaXAgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlw
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNsaXBWYWx1ZS4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxWYWx1ZShjbGlwVmFsdWUs
IHZhbDEucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZENsaXAg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3
ZSBkaWRuJ3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gsIHRoaXMgaXMgYW4KKyAgICAgICAgICAg
IC8vIGludmFsaWQgc2hvcnRoYW5kIGFuZCB3ZSBoYXZlIHRvIGlnbm9yZSBpdC4KKyAgICAgICAg
ICAgIGlmICghZm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgLy8gRmlsbCBpbiBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUg
aW5pdGlhbCB2YWx1ZS4KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsr
aSkgeworICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgeworICAgICAgICAgICAg
ICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2wo
KS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgaWYgKHBy
b3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydGll
c1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUocG9zaXRpb25ZVmFsdWUsIHBhcnNlci0+Y3NzVmFsdWVQ
b29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlm
IChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCB8fCBwcm9wZXJ0
aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKKyAgICAgICAgICAgICAgICAg
ICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUocmVwZWF0WVZhbHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9v
bCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAo
KHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luIHx8IHByb3BlcnRp
ZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSAmJiAhcGFyc2VkUHJvcGVydHlb
aV0pIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgYmFja2dyb3VuZC1vcmlnaW4gd2Fzbid0
IHByZXNlbnQsIHRoZW4gcmVzZXQgYmFja2dyb3VuZC1jbGlwIGFsc28uCisgICAgICAgICAgICAg
ICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgcGFyc2VyLT5jc3NWYWx1ZVBv
b2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTm93IGFkZCBhbGwgb2YgdGhl
IHByb3BlcnRpZXMgd2UgZm91bmQuCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0
aWVzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIHZhbHVlc1tpXS5yZWxlYXNlKCksIGlt
cG9ydGFudCk7CisgICAgICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxsIHBvc2l0aW9uWVZh
bHVlLnJlbGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvbiBvbmNlLgorICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBwb3NpdGlvbllWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKKyAgICAgICAgICAgICAgICAvLyBpdCdzIE9LIHRvIGNhbGwgcG9zaXRpb25ZVmFs
dWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2VlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uIG9uY2UuCisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblksIHBvc2l0aW9uWVZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXQpIHsKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFu
dCk7CisgICAgICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxsIHJlcGVhdFlWYWx1ZS5yZWxl
YXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gb25j
ZS4KKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFksIHJlcGVhdFlWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0KSB7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRYLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAg
ICAgICAgICAgIC8vIGl0J3MgT0sgdG8gY2FsbCByZXBlYXRZVmFsdWUucmVsZWFzZSgpIHNpbmNl
IHdlIG9ubHkgc2VlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIG9uY2UuCisgICAgICAg
ICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZ
LCByZXBlYXRZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgfSBlbHNl
IGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwIHx8IHByb3Bl
cnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkgJiYgIWZvdW5kQ2xpcCkKKyAg
ICAgICAgICAgICAgICAvLyBWYWx1ZSBpcyBhbHJlYWR5IHNldCB3aGlsZSB1cGRhdGluZyBvcmln
aW4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxl
YXNlKCksIGltcG9ydGFudCk7CisKKyAgICAgICAgICAgIC8vIEFkZCBpbiBjbGlwIHZhbHVlcyB3
aGVuIHdlIGhpdCB0aGUgY29ycmVzcG9uZGluZyBvcmlnaW4gcHJvcGVydHkuCisgICAgICAgICAg
ICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4gJiYgIWZv
dW5kQ2xpcCkKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5
QmFja2dyb3VuZENsaXAsIGNsaXBWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAg
ICAgICBlbHNlIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdp
biAmJiAhZm91bmRDbGlwKQorICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgY2xpcFZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBT
aG9ydGhhbmRIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNo
b3J0aGFuZEhhbmRsZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgc3RhdGlj
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzddOworfTsKKwordGVtcGxhdGUgPHVuc2lnbmVkIG51bVBy
b3BlcnRpZXMsIENTU1Byb3BlcnR5SUQgb25lLCBDU1NQcm9wZXJ0eUlEIHR3byAsIENTU1Byb3Bl
cnR5SUQgdGhyZWUgLCBDU1NQcm9wZXJ0eUlEIGZvdXIsIENTU1Byb3BlcnR5SUQgZml2ZSwgQ1NT
UHJvcGVydHlJRCBzaXgsIENTU1Byb3BlcnR5SUQgc2V2ZW4+Citjb25zdCBpbnQgRmlsbFNob3J0
aGFuZEhhbmRsZXI8bnVtUHJvcGVydGllcywgb25lLCB0d28sIHRocmVlLCBmb3VyLCBmaXZlLCBz
aXgsIHNldmVuPjo6cHJvcGVydGllc1s3XSA9ICB7IG9uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2
ZSwgc2l4LCBzZXZlbiB9OworCitjb25zdCBDU1NQYXJzZXJTaG9ydGhhbmQmIENTU1BhcnNlclNo
b3J0aGFuZDo6c2hhcmVkQ1NTUGFyc2VyU2hvcnRoYW5kKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1BhcnNlclNob3J0aGFuZCwgY3NzQ1NTUGFyc2VyU2hvcnRoYW5kc0luc3RhbmNl
LCAoKSk7CisgICAgcmV0dXJuIGNzc0NTU1BhcnNlclNob3J0aGFuZHNJbnN0YW5jZTsKK30KKwor
Q1NTUGFyc2VyU2hvcnRoYW5kOjpDU1NQYXJzZXJTaG9ydGhhbmQoKQoreworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQorICAgICAgICBtX2hhbmRsZXJBcnJh
eVtpXSA9IFNob3J0aGFuZEhhbmRsZXIoKTsKKworICAgIC8vIFBvc2l0aW9uIG11c3QgY29tZSBi
ZWZvcmUgY29sb3IgaW4gdGhpcyBhcnJheSBiZWNhdXNlIGEgcGxhaW4gb2xkICIwIiBpcyBhIGxl
Z2FsIGNvbG9yCisgICAgLy8gaW4gcXVpcmtzIG1vZGUgYnV0IGl0J3MgdXN1YWxseSB0aGUgWCBj
b29yZGluYXRlIG9mIGEgcG9zaXRpb24uCisgICAgLy8gRklYTUU6IEFkZCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRTaXplIHRvIHRoZSBzaG9ydGhhbmQuCisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihD
U1NQcm9wZXJ0eUJhY2tncm91bmQsIEZpbGxTaG9ydGhhbmRIYW5kbGVyPDcsIENTU1Byb3BlcnR5
QmFja2dyb3VuZEltYWdlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsIENTU1Byb3BlcnR5
QmFja2dyb3VuZEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDbGlwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcj46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlciwgR2Vu
ZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7
CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgR2VuZXJp
Y1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcj46OmNy
ZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRl
ckNvbG9yLCBGb3VyVmFsdWVzU2hvcnRoYW5kSGFuZGxlcjxDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAg
ICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgR2VuZXJpY1Nob3J0
aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcj46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBHZW5l
cmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVy
U3BhY2luZywgVHdvVmFsdWVzU2hvcnRoYW5kSGFuZGxlcjxDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2lu
Zz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0
eUJvcmRlclN0eWxlLCBGb3VyVmFsdWVzU2hvcnRoYW5kSGFuZGxlcjxDU1NQcm9wZXJ0eUJvcmRl
clRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBHZW5lcmlj
U2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0
eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIEZv
dXJWYWx1ZXNTaG9ydGhhbmRIYW5kbGVyPENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0
aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlMaXN0U3R5bGUsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVy
PDMsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlv
biwgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eU1hcmdpbiwgRm91clZhbHVlc1Nob3J0aGFuZEhh
bmRsZXI8Q1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1By
b3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlPdXRsaW5lLCBHZW5lcmlj
U2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgQ1NTUHJvcGVydHlP
dXRsaW5lU3R5bGUsIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5UGFkZGluZywgRm91clZhbHVlc1No
b3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlQYWRkaW5nVG9wLCBDU1NQcm9wZXJ0eVBhZGRpbmdS
aWdodCwgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0Pjo6
Y3JlYXRlSGFuZGxlcigpKTsKKworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJBZnRlciwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUs
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZSwgR2Vu
ZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0
aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmVDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8
MywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcj46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0LCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhh
bmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucywgR2VuZXJpY1Nob3J0aGFuZEhhbmRs
ZXI8MiwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5Db3VudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDMsIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVT
dHlsZSwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdywgR2Vu
ZXJpY1Nob3J0aGFuZEhhbmRsZXI8MiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBD
U1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9y
dGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UsIFR3b1ZhbHVlc1No
b3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAg
ICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSwgR2VuZXJpY1No
b3J0aGFuZEhhbmRsZXI8NSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJl
cGV0aXRpb24sIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTcGVlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdE1hc2ssIEZpbGxTaG9ydGhhbmRIYW5kbGVyPDYsIENTU1Byb3Bl
cnR5V2Via2l0TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIENTU1Byb3Bl
cnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXMsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDIsIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwyLCBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRXcmFwLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBG
bG93LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4+OjpjcmVhdGVIYW5kbGVyKCkpOworfQor
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NDY4NGMxNjhjZWZlOGU3YWE0NmExZjcyNTQzN2Q2MmU5YmY4MDM3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclNob3J0aGFuZC5oCkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDU1NQYXJzZXJTaG9ydGhh
bmRfaAorI2RlZmluZSBDU1NQYXJzZXJTaG9ydGhhbmRfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1BhcnNlcjsK
KworY2xhc3MgU2hvcnRoYW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBib29sICgq
UGFyc2VGdW5jdGlvbikoaW50LCBDU1NQYXJzZXIqLCBib29sKTsKKyAgICBTaG9ydGhhbmRIYW5k
bGVyKCkgOiBtX3BhcnNlKDApIHsgfQorICAgIFNob3J0aGFuZEhhbmRsZXIoUGFyc2VGdW5jdGlv
biBwYXJzZSkgOiBtX3BhcnNlKHBhcnNlKSB7IH0KKyAgICBib29sIHBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KSBjb25zdCB7IEFTU0VSVCht
X3BhcnNlKTsgcmV0dXJuICgqbV9wYXJzZSkocHJvcElkLCBwYXJzZXIsIGltcG9ydGFudCk7IH0K
KyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlOyB9CisgICAgUGFyc2VG
dW5jdGlvbiBwYXJzZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9wYXJzZTsgfQorcHJpdmF0ZToKKyAg
ICBQYXJzZUZ1bmN0aW9uIG1fcGFyc2U7Cit9OworCitjbGFzcyBDU1NQYXJzZXJTaG9ydGhhbmQg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1BhcnNlclNob3J0aGFuZCk7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0IENTU1BhcnNlclNob3J0aGFuZCYgc2hhcmVkQ1NTUGFyc2VyU2hv
cnRoYW5kKCk7CisKKyAgICBjb25zdCBTaG9ydGhhbmRIYW5kbGVyJiBzaG9ydGhhbmRIYW5kbGVy
KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodmFs
aWQocHJvcGVydHkpKTsKKyAgICAgICAgcmV0dXJuIG1faGFuZGxlckFycmF5W2luZGV4KHByb3Bl
cnR5KV07CisgICAgfQorCitwcml2YXRlOgorICAgIENTU1BhcnNlclNob3J0aGFuZCgpOworCisg
ICAgc3RhdGljIGludCBpbmRleChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHByb3BlcnR5IC0gZmlyc3RDU1NQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCB2YWxpZChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaW50
IGkgPSBpbmRleChwcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBpID49IDAgJiYgaSA8IG51bUNT
U1Byb3BlcnRpZXM7CisgICAgfQorCisgICAgdm9pZCBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1By
b3BlcnR5SUQgcHJvcGVydHksIFNob3J0aGFuZEhhbmRsZXIgaGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEFTU0VSVCh2YWxpZChwcm9wZXJ0eSkpOworICAgICAgICBBU1NFUlQoIXNob3J0aGFuZEhh
bmRsZXIocHJvcGVydHkpLmlzVmFsaWQoKSk7CisgICAgICAgIG1faGFuZGxlckFycmF5W2luZGV4
KHByb3BlcnR5KV0gPSBoYW5kbGVyOworICAgIH0KKworICAgIFNob3J0aGFuZEhhbmRsZXIgbV9o
YW5kbGVyQXJyYXlbbnVtQ1NTUHJvcGVydGllc107Cit9OworCit9CisKKyNlbmRpZiAvLyBDU1NQ
YXJzZXJTaG9ydGhhbmRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124358</attachid>
            <date>2012-01-27 13:16:38 -0800</date>
            <delta_ts>2012-01-30 06:31:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77129-20120127181627.patch</filename>
            <type>text/plain</type>
            <size>70856</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzkyM2M5MDZkMTVkZWEw
YzMxZmVlZTZlZTUyOTQ3MjdjM2U5ZGM4My4uYzM4Y2EyNDhjMmRkMjFiMjU3NjY5YzZkZDQzZjA4
M2I2NDhlNTY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAxLTI3ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFNpbXBs
aWZ5IENTUyBzaG9ydGhhbmQgaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIENTUyBzaG9ydGhhbmQgaGFuZGxpbmcgaW50byBh
IHNlcGFyYXRlIGNsYXNzIGluc3BpcmVkCisgICAgICAgIGEgYml0IGZyb20gQ1NTU3R5bGVBcHBs
eVZhbHVlLiBJdCB1c2VzIGhhbmRsZXIgdGhhdCBlYWNoIHNob3J0aGFuZAorICAgICAgICBzcGVj
aWZ5LiBUaGlzIGhhbmRsZXIgaXMgcmVzcG9uc2libGUgdG8gcGFyc2UgdGhlIHNob3J0aGFuZCBj
b3JyZWN0bHkuCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2UgY291bGQgZXh0ZW5kIHRoaXMgaGFu
ZGxlciB0byBleHBhbmQgdGhlIGxvbmdoYW5kcworICAgICAgICBhbmQgc2V0IHRoZW0gdG8gaW5p
dGlhbCBvciBpbmhlcml0LiAKKworICAgICAgICBObyBuZXcgdGVzdHMgOiBJdCdzIGEgcmVmYWN0
b3JpbmcKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9u
ZS5jcHA6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJhY2tncm91bmRDbGlw
KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENTU1BhcnNlcik6CisgICAgICAgICgpOgorICAgICAgICAoSW1wbGljaXRTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdFNjb3BlOjpJbXBsaWNpdFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltcGxpY2l0U2NvcGU6On5JbXBsaWNpdFNjb3BlKToKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyU2hvcnRoYW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFR3b1ZhbHVlc1Nob3J0aGFuZEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHdvVmFs
dWVzU2hvcnRoYW5kSGFuZGxlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUd29W
YWx1ZXNTaG9ydGhhbmRIYW5kbGVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEZvdXJWYWx1
ZXNTaG9ydGhhbmRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvdXJWYWx1ZXNTaG9ydGhh
bmRIYW5kbGVyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvdXJWYWx1ZXNTaG9y
dGhhbmRIYW5kbGVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEdlbmVyaWNTaG9ydGhhbmRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyOjpwYXJz
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyOjpjcmVh
dGVIYW5kbGVyKToKKyAgICAgICAgKCk6CisgICAgICAgIChGaWxsU2hvcnRoYW5kSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpGaWxsU2hvcnRoYW5kSGFuZGxlcjo6cGFyc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsU2hvcnRoYW5kSGFuZGxlcjo6Y3JlYXRlSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnNoYXJlZENTU1BhcnNlclNob3J0
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OkNTU1BhcnNlclNo
b3J0aGFuZCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlclNob3J0aGFuZC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hvcnRoYW5kSGFuZGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaG9ydGhhbmRIYW5kbGVyOjpTaG9ydGhhbmRIYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNob3J0aGFuZEhhbmRsZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hvcnRoYW5kSGFuZGxlcjo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTaG9ydGhhbmRI
YW5kbGVyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKENTU1BhcnNlclNob3J0aGFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnNob3J0aGFuZEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2hvcnRoYW5kOjppbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNob3J0aGFuZDo6c2V0U2hvcnRoYW5kSGFuZGxlcik6CisKIDIwMTItMDEtMjcgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVuIHRocmVh
ZGVkIHNjcm9sbGluZyBpcyBlbmFibGVkIGZvciBhIEZyYW1lVmlldywgYWx3YXlzIHB1dCBzY3Jv
bGxiYXJzIGluIGxheWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxODMwNmE3NjRhZTVmZDFl
NjFmYjRlZTNhMjY3ODQ0YTBkODIyMTkzLi40NDAzMmEyMTJlYjlhMzk1ZDY3NjgyNDE3ZWQwNWY4
ZmZjOWRmOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDU2LDYgKzQ1Niw3IEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTT01VdGlscy5jcHAKICAgICBjc3MvQ1NTUGFnZVJ1
bGUuY3BwCiAgICAgY3NzL0NTU1BhcnNlci5jcHAKKyAgICBjc3MvQ1NTUGFyc2VyU2hvcnRoYW5k
LmNwcAogICAgIGNzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCiAgICAgY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAogICAgIGNzcy9DU1NQcm9wZXJ0eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDY4MGRiZDY1Mzk1OTRmNDA0OWJmM2JhMjgzNmU0NjljMDVkZTZjMGUuLjY0ZDc1
ZmZmNjczODlmZjk1ZDgyYzk0YWQzOGRhOTgwMDRjNjVkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtMTMzNyw2ICsxMzM3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBcCisJU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlclNob3J0aGFuZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJTaG9ydGhhbmQuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZh
bHVlcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaCBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA2
ZjU0NDY1MGI3Y2VjYWYwNjE5M2YwYzU0NjJhY2Y0NDA0NWZmYTcyLi44MzZjMzM4ODczMzJhZWM0
ZDEwZGNmOGUyNmIzODQwNTcyMzY5OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTQxOSw2ICs0MTksNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBjc3MvQ1NTT01VdGlscy5jcHAgXAogICAgIGNzcy9DU1NQYWdl
UnVsZS5jcHAgXAogICAgIGNzcy9DU1NQYXJzZXIuY3BwIFwKKyAgICBjc3MvQ1NTUGFyc2VyU2hv
cnRoYW5kLmNwcCBcCiAgICAgY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAgXAogICAgIGNzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NQcm9wZXJ0eS5jcHAgXApAQCAtMTUzMSw2
ICsxNTMyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU09NVXRpbHMuaCBcCiAgICAgY3Nz
L0NTU1BhZ2VSdWxlLmggXAogICAgIGNzcy9DU1NQYXJzZXIuaCBcCisgICAgY3NzL0NTU1BhcnNl
clNob3J0aGFuZC5oIFwKICAgICBjc3MvQ1NTUGFyc2VyVmFsdWVzLmggXAogICAgIGNzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oIFwKICAgICBjc3MvQ1NTUHJvcGVydHkuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggYmI5ODgzZGE2YWVmYjUxZTNjZjU1ZWU4ZGRjYjZhNzEzYmZhNTk0MS4uMDYzNzZmNWIz
OTE2NjE4MzE1NzQ0M2M3MWM5MWYzMTUxNzBlOGJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAy
NSw2ICsyMDI1LDggQEAKICAgICAgICAgICAgICdjc3MvQ1NTUGFnZVJ1bGUuaCcsCiAgICAgICAg
ICAgICAnY3NzL0NTU1BhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQYXJzZXIuaCcs
CisgICAgICAgICAgICAnY3NzL0NTU1BhcnNlclNob3J0aGFuZC5jcHAnLAorICAgICAgICAgICAg
J2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1BhcnNlclZh
bHVlcy5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAnLAogICAg
ICAgICAgICAgJ2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwMzUwMzk5MzRhNjE1NTU4
MGI1N2U0MDkyZDUyMGNhMWNhYTYxMzExLi5lNjc3NzFiMDRkYTg5NGE4NWFkYWJiYTc4MWNkOWIw
MWMzYjA2MmQ4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMzQxNjEsNiArMzQxNjEsNjIgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xD
U1NQYXJzZXIuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8
RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGNz
c1xDU1NQYXJzZXJTaG9ydGhhbmQuY3BwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IkRlYnVnfFdpbjMy
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJSZWxlYXNlfFdpbjMyIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZp
Z3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJh
dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+Cisg
ICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8
RmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGNz
c1xDU1NQYXJzZXJTaG9ydGhhbmQuaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgogCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGNzc1xDU1NQYXJzZXJWYWx1ZXMuY3BwIgogCQkJCT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YmRhMGFlNWQz
ZTkzMWZmOWYxMDQwOWM3MDY3ZTgyNzk1N2ZkNjczLi5kNDJhYmQ4NjNjYzk3MTMzZTQwMGI2NDA1
ZDcyMTVlMDQ0MGY4MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NzcyLDYgKzU3NzIsOCBAQAogCQlFMUNBNUNCQzBFOENE
Q0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQTVDQkIwRThDRENBRjAwRThFRjkwIC8qIEpTV29y
a2VyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJRTFDQUE1QzYwRThCRDIzNjAwQTczRUNBIC8qIEpTV29y
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNB
QTVDNTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCAqLzsgfTsKIAkJRTFFMUJGMDAxMTVG
RjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUUxQkVGRjExNUZGNkZCMDA2RjUyQ0EgLyog
V2luZG93c0tleWJvYXJkQ29kZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMUU1REQxODE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hv
cnRoYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxRTVERDE2MTREMzExRjUwMDg3RUQ1NSAvKiBDU1NQYXJzZXJTaG9ydGhhbmQuY3BwICovOyB9
OworCQlFMUU1REQxOTE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1REQxNzE0RDMx
MUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmggKi87IH07CiAJCUUxRTZFRUE0MEI2
MjhEQTgwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTZFRUEzMEI2MjhEQTgwMDVGMkY3MCAv
KiBKU0hUTUxTZWxlY3RFbGVtZW50LmNwcCAqLzsgfTsKIAkJRTFFNkVFQTgwQjYyOERCMzAwNUYy
RjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTZFRUE3MEI2MjhEQjMwMDVGMkY3MCAvKiBKU0hUTUxTZWxl
Y3RFbGVtZW50LmggKi87IH07CiAJCUUxRUJCQkQ0MEFBQzlCODcwMDFGRThFMiAvKiBDU1NDaGFy
c2V0UnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUVCQkJEMzBBQUM5Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICovOyB9OwpA
QCAtMTI3MjEsNiArMTI3MjMsOCBAQAogCQlFMUNBNUNCQjBFOENEQ0FGMDBFOEVGOTAgLyogSlNX
b3JrZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
b3JrZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNBQTVDNTBF
OEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFMUJFRkYx
MTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd3NLZXlib2FyZENvZGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxRTVERDE2MTREMzExRjUwMDg3RUQ1NSAvKiBDU1NQYXJzZXJTaG9y
dGhhbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUGFyc2Vy
U2hvcnRoYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFNUREMTcxNEQz
MTFGNTAwODdFRDU1IC8qIENTU1BhcnNlclNob3J0aGFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDU1NQYXJzZXJTaG9ydGhhbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTFFNkVFQTMwQjYyOERBODAwNUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MU2VsZWN0RWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRTZFRUE3MEI2MjhEQjMw
MDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gSlNIVE1MU2VsZWN0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUVCQkJEMzBBQUM5Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ2hhcnNldFJ1bGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk5NTgsNiArMTk5NjIsOCBAQAogCQkJCTg1
QzU2Q0E2MEFBODlENUYwMEQ5NTc1NSAvKiBDU1NQYWdlUnVsZS5pZGwgKi8sCiAJCQkJQkM3NzJC
MzcwQzRFQTkxRTAwODMyODVGIC8qIENTU1BhcnNlci5jcHAgKi8sCiAJCQkJQkM3NzJCMzgwQzRF
QTkxRTAwODMyODVGIC8qIENTU1BhcnNlci5oICovLAorCQkJCUUxRTVERDE2MTREMzExRjUwMDg3
RUQ1NSAvKiBDU1NQYXJzZXJTaG9ydGhhbmQuY3BwICovLAorCQkJCUUxRTVERDE3MTREMzExRjUw
MDg3RUQ1NSAvKiBDU1NQYXJzZXJTaG9ydGhhbmQuaCAqLywKIAkJCQlCQzAyQTUzRjBFMDk5QzVB
MDA0QjZEMkIgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCAqLywKIAkJCQlCQzAyQTRCNjBFMDk5N0I5
MDA0QjZEMkIgLyogQ1NTUGFyc2VyVmFsdWVzLmggKi8sCiAJCQkJQTgwRTZDREIwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCAqLywKQEAgLTI0MDg1LDYgKzI0MDkxLDcg
QEAKIAkJCQk4QUQwQTU5NTE0Qzg4MzM2MDAwRDgzQzUgLyogSlNXZWJLaXRDU1NSZWdpb25SdWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4QUQwQTU5NjE0Qzg4MzU4MDAwRDgzQzUgLyogRE9NV2Vi
S2l0Q1NTUmVnaW9uUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEFEMEE1OTgxNEM4ODM1ODAw
MEQ4M0M1IC8qIERPTVdlYktpdENTU1JlZ2lvblJ1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTFFNUREMTkxNEQzMTFGNTAwODdFRDU1IC8qIENTU1BhcnNlclNob3J0aGFuZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yNzAxMCw2ICsyNzAxNyw3IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5
QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3M0Qx
MzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMUU1REQxODE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5k
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Fs
bEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggN2Q1
ZjI1MGQxYmM4Y2M3NzExYWU0ZDUxNGQ5OWRmMTJjNDlkZjQ2Yi4uZDI5NzljOTI0YTFkOTU1ZWZi
MjAyY2VkZjA0NDU4MGY5ZjM5YTBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCkBA
IC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiQ1NTT01VdGlscy5jcHAiCiAjaW5jbHVkZSAiQ1NT
UGFnZVJ1bGUuY3BwIgogI2luY2x1ZGUgIkNTU1BhcnNlci5jcHAiCisjaW5jbHVkZSAiQ1NTUGFy
c2VyU2hvcnRoYW5kLmNwcCIKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuY3BwIgogI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5U291cmNl
RGF0YS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGVhZjY3MDMxMzllNDZiNTM2
MzZhYjhiZDQ1YmQ4NThkYmQ3MThhMTYuLjAyOTFlNGZmZjNhZWJlZDFmMjllZDU3ODQ2YmE5YWJi
YmVmODMyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAj
aW5jbHVkZSAiQ1NTTWVkaWFSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uaCIKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclNo
b3J0aGFuZC5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCkBAIC0xMDYsMzMgKzEw
Nyw2IEBAIGV4dGVybiBpbnQgY3NzeXlwYXJzZSh2b2lkKiBwYXJzZXIpOwogdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLW5hbWVzcGFjZSB7Ci0KLWVudW0gUHJv
cGVydHlUeXBlIHsKLSAgICBQcm9wZXJ0eUV4cGxpY2l0LAotICAgIFByb3BlcnR5SW1wbGljaXQK
LX07Ci0KLWNsYXNzIEltcGxpY2l0U2NvcGUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElt
cGxpY2l0U2NvcGUpOwotcHVibGljOgotICAgIEltcGxpY2l0U2NvcGUoV2ViQ29yZTo6Q1NTUGFy
c2VyKiBwYXJzZXIsIFByb3BlcnR5VHlwZSBwcm9wZXJ0eVR5cGUpCi0gICAgICAgIDogbV9wYXJz
ZXIocGFyc2VyKQotICAgIHsKLSAgICAgICAgbV9wYXJzZXItPm1faW1wbGljaXRTaG9ydGhhbmQg
PSBwcm9wZXJ0eVR5cGUgPT0gUHJvcGVydHlJbXBsaWNpdDsKLSAgICB9Ci0KLSAgICB+SW1wbGlj
aXRTY29wZSgpCi0gICAgewotICAgICAgICBtX3BhcnNlci0+bV9pbXBsaWNpdFNob3J0aGFuZCA9
IGZhbHNlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpDU1NQYXJzZXIqIG1fcGFy
c2VyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgY29uc3QgdW5zaWduZWQgSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMgPSBVSU5UX01B
WDsKQEAgLTIwNiw2ICsxODAsNyBAQCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBh
cnNpbmcpCiAgICAgLCBtX2xhc3RTZWxlY3RvckxpbmVOdW1iZXIoMCkKICAgICAsIG1fYWxsb3dJ
bXBvcnRSdWxlcyh0cnVlKQogICAgICwgbV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyh0cnVl
KQorICAgICwgbV9zaG9ydGhhbmRQYXJzZXIoQ1NTUGFyc2VyU2hvcnRoYW5kOjpzaGFyZWRDU1NQ
YXJzZXJTaG9ydGhhbmQoKSkKIHsKICNpZiBZWURFQlVHID4gMAogICAgIGNzc3l5ZGVidWcgPSAx
OwpAQCAtODc4LDcgKzg1MywxMyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CiAg
ICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKIAotICAgIHN3aXRjaCAoc3RhdGljX2Nh
c3Q8Q1NTUHJvcGVydHlJRD4ocHJvcElkKSkgeworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
ZCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BJZCk7CisgICAgLy8gQmVmb3JlIGNv
bnRpbnVpbmcgbGV0cyBsb29rIGlmIHRoZXJlIGlzIGEgcGFyc2luZyBoYW5kbGVyLgorICAgIGNv
bnN0IFNob3J0aGFuZEhhbmRsZXImIGhhbmRsZXIgPSBtX3Nob3J0aGFuZFBhcnNlci5zaG9ydGhh
bmRIYW5kbGVyKHByb3BlcnR5SWQpOworICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIGhhbmRsZXIucGFyc2VWYWx1ZShwcm9wSWQsIHRoaXMsIGltcG9ydGFudCk7CisK
KyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKICAgICAgICAgLyogVGhlIGNvbW1lbnQgdG8gdGhl
IGxlZnQgZGVmaW5lcyBhbGwgdmFsaWQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0aWVzIGFzIGRlZmlu
ZWQKICAgICAgICAgICogaW4gQ1NTIDIsIEFwcGVuZGl4IEYuIFByb3BlcnR5IGluZGV4CiAgICAg
ICAgICAqLwpAQCAtMTA3MSwyNSArMTA1Miw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2Vp
Z2h0OiAgLy8gbm9ybWFsIHwgYm9sZCB8IGJvbGRlciB8IGxpZ2h0ZXIgfCAxMDAgfCAyMDAgfCAz
MDAgfCA0MDAgfCA1MDAgfCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCBpbmhlcml0CiAgICAgICAg
IHJldHVybiBwYXJzZUZvbnRXZWlnaHQoaW1wb3J0YW50KTsKIAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJTcGFjaW5nOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmcgfTsKLSAgICAgICAgaWYgKG51bSA9PSAxKSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRTY29w
ZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpOwotICAgICAgICAgICAgaWYg
KCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnVtID09IDIpIHsKLSAg
ICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3Bh
Y2luZyk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0
YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJWZXJ0aWNhbFNwYWNpbmc6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgbV9zdHJpY3QpOwpAQCAtMTY1MywxMiArMTYxNSw2IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcDoKICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSBpZCA9PSBDU1NWYWx1ZU5vd3JhcCB8fCBpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0g
Q1NTVmFsdWVXcmFwUmV2ZXJzZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWU6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNV0gPSB7IENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
SW5jcmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTcGVlZCB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9w
ZXJ0aWVzLCA1LCBpbXBvcnRhbnQpOwotICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZURpcmVjdGlvbjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRm9yd2FyZHMgfHwg
aWQgPT0gQ1NTVmFsdWVCYWNrd2FyZHMgfHwgaWQgPT0gQ1NTVmFsdWVBaGVhZCB8fAogICAgICAg
ICAgICAgaWQgPT0gQ1NTVmFsdWVSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9
PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlRG93biB8fApAQCAtMTgwNywyNSArMTc2
Myw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czoKICAgICAgICAgcmV0dXJu
IHBhcnNlR3JpZFRyYWNrTGlzdChwcm9wSWQsIGltcG9ydGFudCk7CiAjZW5kaWYKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2U6IHsKLSAgICAgICAgY29uc3QgaW50IHBy
b3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsCi0g
ICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UgfTsKLSAgICAg
ICAgaWYgKG51bSA9PSAxKSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlz
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsKLSAgICAgICAgICAgIGlmICghcGFy
c2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGll
c1ttX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG51bSA9PSAyKSB7Ci0gICAgICAg
ICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNv
bGxhcHNlKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBv
cnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyQ29sbGFwc2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxh
cHNlOgpAQCAtMjAyNCwxMzQgKzE5NjEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgfQogICAgICAgICBicmVhazsKICNl
bmRpZgotICAgICAgICAvKiBzaG9ydGhhbmQgcHJvcGVydGllcyAqLwotICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kOiB7Ci0gICAgICAgIC8vIFBvc2l0aW9uIG11c3QgY29tZSBiZWZvcmUg
Y29sb3IgaW4gdGhpcyBhcnJheSBiZWNhdXNlIGEgcGxhaW4gb2xkICIwIiBpcyBhIGxlZ2FsIGNv
bG9yCi0gICAgICAgIC8vIGluIHF1aXJrcyBtb2RlIGJ1dCBpdCdzIHVzdWFsbHkgdGhlIFggY29v
cmRpbmF0ZSBvZiBhIHBvc2l0aW9uLgotICAgICAgICAvLyBGSVhNRTogQWRkIENTU1Byb3BlcnR5
QmFja2dyb3VuZFNpemUgdG8gdGhlIHNob3J0aGFuZC4KLSAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIENT
U1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlRmlsbFNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRp
ZXMsIDcsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
OiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXAgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlRmlsbFNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRp
ZXMsIDYsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Ci0g
ICAgICAgIC8vIFsgJ2JvcmRlci13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBd
IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yIH07Ci0gICAg
ICAgIGlmIChwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCkp
IHsKLSAgICAgICAgICAgIC8vIFRoZSBDU1MzIEJvcmRlcnMgYW5kIEJhY2tncm91bmRzIHNwZWNp
ZmljYXRpb24gc2F5cyB0aGF0IGJvcmRlciBhbHNvIHJlc2V0cyBib3JkZXItaW1hZ2UuIEl0J3Mg
YXMKLSAgICAgICAgICAgIC8vIHRob3VnaCBhIHZhbHVlIG9mIG5vbmUgd2FzIHNwZWNpZmllZCBm
b3IgdGhlIGltYWdlLgotICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9y
dGFudCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6Ci0gICAgICAg
IC8vIFsgJ2JvcmRlci10b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8
IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcn07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGlt
cG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKLSAgICAg
ICAgLy8gWyAnYm9yZGVyLXJpZ2h0LXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+
IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsg
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVy
dGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbToKLSAgICAgICAgLy8gWyAnYm9yZGVyLWJvdHRvbS13aWR0aCcgfHwgJ2JvcmRlci1zdHls
ZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFu
ZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0OgotICAgICAgICAvLyBbICdib3JkZXItbGVmdC13aWR0aCcgfHwg
J2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRW5kOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgsIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kU3R5bGUsCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVu
ZENvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRp
ZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmU6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29s
b3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywg
MywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0
eWxlLAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yIH07Ci0g
ICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9y
dGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgotICAgICAgICAvLyBb
ICdvdXRsaW5lLWNvbG9yJyB8fCAnb3V0bGluZS1zdHlsZScgfHwgJ291dGxpbmUtd2lkdGgnIF0g
fCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NT
UHJvcGVydHlPdXRsaW5lV2lkdGgsIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IgfTsKLSAg
ICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0
YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgICAgICAv
LyA8Y29sb3I+ezEsNH0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1s0XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAg
ICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFudCk7Ci0g
ICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKLSAgICAgICAgLy8gPGJvcmRl
ci13aWR0aD57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0V2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAg
ICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgotICAgICAgICAvLyA8Ym9yZGVy
LXN0eWxlPnsxLDR9IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbNF0gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlIH07Ci0gICAgICAg
IHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAg
IH0KLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgotICAgICAgICAvLyA8bWFyZ2luLXdpZHRo
PnsxLDR9IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0g
PSB7IENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIENT
U1Byb3BlcnR5TWFyZ2luTGVmdCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJ
ZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBh
ZGRpbmc6Ci0gICAgICAgIC8vIDxwYWRkaW5nLXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAgIHsK
LSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5UGFkZGluZ1Rv
cCwgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQg
fTsKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9y
dGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Rmxl
eERpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwotICAgIH0K
ICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8
fCAnZm9udC12YXJpYW50JyB8fCAnZm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGlu
ZS1oZWlnaHQnIF0/CiAgICAgICAgIC8vICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29u
IHwgbWVudSB8IG1lc3NhZ2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhl
cml0CkBAIC0yMTYwLDI1ICsxOTY5LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVy
biBwYXJzZUZvbnQoaW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZToKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0g
eyBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHls
ZUltYWdlIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRp
ZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5zOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07Ci0gICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDIsIGltcG9ydGFudCk7
Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOiB7Ci0gICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciB9Owot
ICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBv
cnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZTogewot
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0
U3Ryb2tlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDIsIGltcG9ydGFudCk7
Ci0gICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246CiAgICAgICAgIHJl
dHVybiBwYXJzZUFuaW1hdGlvblNob3J0aGFuZChpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uOgpAQCAtMjIwMywxMSArMTk5Myw2IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXNDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJv
cElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQp
OwotICAgIH0KLQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlv
bjoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlT3ZlciB8fCBpZCA9PSBDU1NWYWx1ZVVuZGVy
KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjI2NywxMCArMjA1Miw2
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1f
c3RyaWN0KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFw
OiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
V3JhcEZsb3csIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwgQ1NTUHJvcGVydHlXZWJraXRX
cmFwUGFkZGluZyB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0K
ICNpZiBFTkFCTEUoU1ZHKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBwYXJzZVNWR1Zh
bHVlKHByb3BJZCwgaW1wb3J0YW50KTsKQEAgLTIzMDcsNyArMjA4OCw3IEBAIHZvaWQgQ1NTUGFy
c2VyOjphZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gcnZhbCkKICAgICAgICAgbHZhbCA9IHJ2YWw7CiB9CiAKLXN0YXRpYyBib29sIHBhcnNl
QmFja2dyb3VuZENsaXAoQ1NTUGFyc2VyVmFsdWUqIHBhcnNlclZhbHVlLCBSZWZQdHI8Q1NTVmFs
dWU+JiBjc3NWYWx1ZSwgQ1NTVmFsdWVQb29sKiBjc3NWYWx1ZVBvb2wpCitib29sIENTU1BhcnNl
cjo6cGFyc2VCYWNrZ3JvdW5kQ2xpcChDU1NQYXJzZXJWYWx1ZSogcGFyc2VyVmFsdWUsIFJlZlB0
cjxDU1NWYWx1ZT4mIGNzc1ZhbHVlLCBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCkKIHsKICAg
ICBpZiAocGFyc2VyVmFsdWUtPmlkID09IENTU1ZhbHVlQm9yZGVyQm94IHx8IHBhcnNlclZhbHVl
LT5pZCA9PSBDU1NWYWx1ZVBhZGRpbmdCb3gKICAgICAgICAgfHwgcGFyc2VyVmFsdWUtPmlkID09
IENTU1ZhbHVlQ29udGVudEJveCB8fCBwYXJzZXJWYWx1ZS0+aWQgPT0gQ1NTVmFsdWVXZWJraXRU
ZXh0KSB7CkBAIC0yMzE3LDEzNyArMjA5OCw2IEBAIHN0YXRpYyBib29sIHBhcnNlQmFja2dyb3Vu
ZENsaXAoQ1NTUGFyc2VyVmFsdWUqIHBhcnNlclZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiBjCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1jb25zdCBpbnQgY01heEZpbGxQcm9wZXJ0aWVzID0gOTsK
LQotYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBp
bnQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCkKLXsKLSAg
ICBBU1NFUlQobnVtUHJvcGVydGllcyA8PSBjTWF4RmlsbFByb3BlcnRpZXMpOwotICAgIGlmIChu
dW1Qcm9wZXJ0aWVzID4gY01heEZpbGxQcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwotCi0gICAgYm9vbCBw
YXJzZWRQcm9wZXJ0eVtjTWF4RmlsbFByb3BlcnRpZXNdID0geyBmYWxzZSB9OwotICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdmFsdWVzW2NNYXhGaWxsUHJvcGVydGllc107Ci0gICAgUmVmUHRyPENTU1Zh
bHVlPiBjbGlwVmFsdWU7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBwb3NpdGlvbllWYWx1ZTsKLSAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHJlcGVhdFlWYWx1ZTsKLSAgICBib29sIGZvdW5kQ2xpcCA9IGZh
bHNlOwotICAgIGludCBpOwotCi0gICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsK
LSAgICAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0g
ICAgICAgIGlmICh2YWwtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+
aVZhbHVlID09ICcsJykgewotICAgICAgICAgICAgLy8gV2UgaGl0IHRoZSBlbmQuICBGaWxsIGlu
IGFsbCByZW1haW5pbmcgdmFsdWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCi0gICAgICAgICAg
ICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bVBy
b3BlcnRpZXM7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yICYmIHBhcnNlZFByb3BlcnR5W2ldKQotICAgICAgICAg
ICAgICAgICAgICAvLyBDb2xvciBpcyBub3QgYWxsb3dlZCBleGNlcHQgYXMgdGhlIGxhc3QgaXRl
bSBpbiBhIGxpc3QgZm9yIGJhY2tncm91bmRzLgotICAgICAgICAgICAgICAgICAgICAvLyBSZWpl
Y3QgdGhlIGVudGlyZSBwcm9wZXJ0eS4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSAmJiBwcm9wZXJ0aWVz
W2ldICE9IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGFkZEZpbGxWYWx1ZSh2YWx1ZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdElu
aXRpYWxWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZpbGxW
YWx1ZShwb3NpdGlvbllWYWx1ZSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlh
bFZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocmVw
ZWF0WVZhbHVlLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRPcmlnaW4gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tP
cmlnaW4pICYmICFwYXJzZWRQcm9wZXJ0eVtpXSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgYmFja2dyb3VuZC1vcmlnaW4gd2Fzbid0IHByZXNlbnQsIHRoZW4gcmVzZXQgYmFja2dy
b3VuZC1jbGlwIGFsc28uCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xp
cFZhbHVlLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cGFyc2VkUHJvcGVydHlbaV0gPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
ICghbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChpID0gMDsg
IWZvdW5kICYmIGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghcGFy
c2VkUHJvcGVydHlbaV0pIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDE7
Ci0gICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwyOwotICAgICAgICAgICAgICAg
IGludCBwcm9wSWQxLCBwcm9wSWQyOwotICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlKiBw
YXJzZXJWYWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHBhcnNlRmlsbFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHByb3BJZDEsIHByb3BJZDIsIHZhbDEs
IHZhbDIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQg
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUodmFsdWVzW2ldLCB2YWwx
LnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFs
dWUocG9zaXRpb25ZVmFsdWUsIHZhbDIucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0IHx8IHByb3Bl
cnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KQotICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkRmlsbFZhbHVlKHJlcGVhdFlWYWx1ZSwgdmFsMi5yZWxlYXNlKCkpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW4gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGFyc2UgdGhlIHZhbHVlIGFzIGEgY2xp
cCwgYW5kIHNlZSBpZiB3ZSBzdWNjZWVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBh
cnNlQmFja2dyb3VuZENsaXAocGFyc2VyVmFsdWUsIHZhbDEsIGNzc1ZhbHVlUG9vbCgpKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCB2YWwxLnJl
bGVhc2UoKSk7IC8vIFRoZSBwcm9wZXJ0eSBwYXJzZWQgc3VjY2Vzc2Z1bGx5LgotICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZpbGxW
YWx1ZShjbGlwVmFsdWUsIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1
ZSgpKTsgLy8gU29tZSB2YWx1ZSB3YXMgdXNlZCBmb3Igb3JpZ2luIHRoYXQgaXMgbm90IHN1cHBv
cnRlZCBieSBjbGlwLiBKdXN0IHJlc2V0IGNsaXAgaW5zdGVhZC4KLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRDbGlwIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q2xpcCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNsaXBWYWx1ZQotICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgdmFsMS5yZWxlYXNl
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRDbGlwID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGF0IGxlYXN0IG9uZSBtYXRjaCwgdGhp
cyBpcyBhbgotICAgICAgICAvLyBpbnZhbGlkIHNob3J0aGFuZCBhbmQgd2UgaGF2ZSB0byBpZ25v
cmUgaXQKLSAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICAvLyBGaWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBp
bml0aWFsIHZhbHVlLgotICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsK
LSAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgewotICAgICAgICAgICAgYWRkRmlsbFZh
bHVlKHZhbHVlc1tpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVl
KCkpOwotICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb24gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvbikKLSAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocG9zaXRpb25ZVmFsdWUsIGNzc1Zh
bHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKLSAgICAgICAgICAgIGlm
IChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCB8fCBwcm9wZXJ0
aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKLSAgICAgICAgICAgICAgICBh
ZGRGaWxsVmFsdWUocmVwZWF0WVZhbHVlLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJ
bml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kT3JpZ2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrT3JpZ2luKSAmJiAhcGFyc2VkUHJvcGVydHlbaV0pIHsKLSAgICAgICAgICAgICAgICAv
LyBJZiBiYWNrZ3JvdW5kLW9yaWdpbiB3YXNuJ3QgcHJlc2VudCwgdGhlbiByZXNldCBiYWNrZ3Jv
dW5kLWNsaXAgYWxzby4KLSAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCBj
c3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOb3cgYWRkIGFsbCBvZiB0aGUgcHJvcGVy
dGllcyB3ZSBmb3VuZC4KLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7
Ci0gICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uKSB7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvblgsIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgICAgICAvLyBp
dCdzIE9LIHRvIGNhbGwgcG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2Vl
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIG9uY2UKLSAgICAgICAgICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgcG9zaXRpb25ZVmFsdWUucmVsZWFz
ZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0
YW50KTsKLSAgICAgICAgICAgIC8vIGl0J3MgT0sgdG8gY2FsbCBwb3NpdGlvbllWYWx1ZS5yZWxl
YXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24gb25j
ZQotICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Z
LCBwb3NpdGlvbllWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQpIHsKLSAgICAg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIHZhbHVlc1tp
XS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgICAgICAvLyBpdCdzIE9LIHRvIGNhbGwg
cmVwZWF0WVZhbHVlLnJlbGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvbiBvbmNlCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRZLCByZXBlYXRZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAg
ICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0KSB7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRYLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgLy8gaXQn
cyBPSyB0byBjYWxsIHJlcGVhdFlWYWx1ZS5yZWxlYXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gb25jZQotICAgICAgICAgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgcmVwZWF0WVZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKLSAgICAgICAgfSBlbHNlIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRDbGlwIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q2xpcCkgJiYgIWZvdW5kQ2xpcCkKLSAgICAgICAgICAgIC8vIFZhbHVlIGlzIGFscmVhZHkgc2V0
IHdoaWxlIHVwZGF0aW5nIG9yaWdpbgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxl
YXNlKCksIGltcG9ydGFudCk7Ci0KLSAgICAgICAgLy8gQWRkIGluIGNsaXAgdmFsdWVzIHdoZW4g
d2UgaGl0IHRoZSBjb3JyZXNwb25kaW5nIG9yaWdpbiBwcm9wZXJ0eS4KLSAgICAgICAgaWYgKHBy
b3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luICYmICFmb3VuZENsaXAp
Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBjbGlw
VmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICBlbHNlIGlmIChwcm9wZXJ0aWVz
W2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiAmJiAhZm91bmRDbGlwKQotICAgICAg
ICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgY2xpcFZhbHVlLnJl
bGVhc2UoKSwgaW1wb3J0YW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9p
ZCBDU1NQYXJzZXI6OmFkZEFuaW1hdGlvblZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpCiB7CiAgICAgaWYgKGx2YWwpIHsKQEAgLTI1ODQsMTAx
ICsyMjM0LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29s
IGltcG9ydGFudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3Bl
cnRpZXMsIGJvb2wgaW1wb3J0YW50KQotewotICAgIC8vIFdlIHRyeSB0byBtYXRjaCBhcyBtYW55
IHByb3BlcnRpZXMgYXMgcG9zc2libGUKLSAgICAvLyBXZSBzZXQgdXAgYW4gYXJyYXkgb2YgYm9v
bGVhbnMgdG8gbWFyayB3aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3VuZCwKLSAgICAvLyBhbmQg
d2UgdHJ5IHRvIHNlYXJjaCBmb3IgcHJvcGVydGllcyB1bnRpbCBpdCBtYWtlcyBubyBsb25nZXIg
YW55IHNlbnNlLgotICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7Ci0KLSAg
ICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgYm9vbCBmbmRbNl07IC8vIFRydXN0IG1lIDspCi0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGZuZFtp
XSA9IGZhbHNlOwotCi0gICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKLSAgICAg
ICAgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChpbnQgcHJvcEluZGV4ID0gMDsgIWZvdW5k
ICYmIHByb3BJbmRleCA8IG51bVByb3BlcnRpZXM7ICsrcHJvcEluZGV4KSB7Ci0gICAgICAgICAg
ICBpZiAoIWZuZFtwcm9wSW5kZXhdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlVmFsdWUo
cHJvcGVydGllc1twcm9wSW5kZXhdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgICAgICBm
bmRbcHJvcEluZGV4XSA9IGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGF0IGxlYXN0IG9uZSBtYXRjaCwgdGhpcyBp
cyBhbgotICAgICAgICAvLyBpbnZhbGlkIHNob3J0aGFuZCBhbmQgd2UgaGF2ZSB0byBpZ25vcmUg
aXQKLSAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICAvLyBGaWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0
aWFsIHZhbHVlLgotICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0
eUltcGxpY2l0KTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkg
ewotICAgICAgICBpZiAoIWZuZFtpXSkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRp
ZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBv
cnRhbnQpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENTU1BhcnNlcjo6
cGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1w
b3J0YW50KQotewotICAgIC8qIEZyb20gdGhlIENTUyAyIHNwZWNzLCA4LjMKLSAgICAgKiBJZiB0
aGVyZSBpcyBvbmx5IG9uZSB2YWx1ZSwgaXQgYXBwbGllcyB0byBhbGwgc2lkZXMuIElmIHRoZXJl
IGFyZSB0d28gdmFsdWVzLCB0aGUgdG9wIGFuZAotICAgICAqIGJvdHRvbSBtYXJnaW5zIGFyZSBz
ZXQgdG8gdGhlIGZpcnN0IHZhbHVlIGFuZCB0aGUgcmlnaHQgYW5kIGxlZnQgbWFyZ2lucyBhcmUg
c2V0IHRvIHRoZSBzZWNvbmQuCi0gICAgICogSWYgdGhlcmUgYXJlIHRocmVlIHZhbHVlcywgdGhl
IHRvcCBpcyBzZXQgdG8gdGhlIGZpcnN0IHZhbHVlLCB0aGUgbGVmdCBhbmQgcmlnaHQgYXJlIHNl
dCB0byB0aGUKLSAgICAgKiBzZWNvbmQsIGFuZCB0aGUgYm90dG9tIGlzIHNldCB0byB0aGUgdGhp
cmQuIElmIHRoZXJlIGFyZSBmb3VyIHZhbHVlcywgdGhleSBhcHBseSB0byB0aGUgdG9wLAotICAg
ICAqIHJpZ2h0LCBib3R0b20sIGFuZCBsZWZ0LCByZXNwZWN0aXZlbHkuCi0gICAgICovCi0KLSAg
ICBpbnQgbnVtID0gaW5TaG9ydGhhbmQoKSA/IDEgOiBtX3ZhbHVlTGlzdC0+c2l6ZSgpOwotCi0g
ICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKLQotICAgIC8vIHRoZSBvcmRl
ciBpcyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQKLSAgICBzd2l0Y2ggKG51bSkgewotICAgICAg
ICBjYXNlIDE6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBp
bXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENT
U1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMt
MV0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhp
cywgUHJvcGVydHlJbXBsaWNpdCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVz
WzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRp
ZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVy
dGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIDI6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0
aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFu
dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUg
KnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFs
dWUoKTsKLSAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9w
ZXJ0eUltcGxpY2l0KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZh
bHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNb
bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOwotICAgICAgICAgICAgYWRkUHJvcGVy
dHkocHJvcGVydGllc1szXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIDM6IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0s
IGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1syXSwgaW1wb3J0YW50KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUg
PSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOwot
ICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1w
bGljaXQpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1szXSwgdmFsdWUsIGlt
cG9ydGFudCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIDQ6
IHsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQp
IHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkgfHwKLSAgICAgICAgICAg
ICAgICAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVl
KHByb3BlcnRpZXNbM10sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDogewotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KIC8vIGF1dG8gfCA8aWRlbnRpZmllcj4KIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVBh
Z2UoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5k
ZXggM2JmMDQ1ZTYzZmJhMWQ2NmM4M2RiNTlkY2ZlZTUxOTVhY2YzYmZmYi4uN2EwMjcyZjk2Yjhj
NDhiMjFhMGI3MGY2YmNjM2Y5MjI2MzE4M2VhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAt
NDYsNiArNDYsNyBAQCBjbGFzcyBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjsKIGNsYXNz
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiBj
bGFzcyBDU1NWYWx1ZVBvb2w7CitjbGFzcyBDU1NQYXJzZXJTaG9ydGhhbmQ7CiBjbGFzcyBDU1NQ
cm9wZXJ0eTsKIGNsYXNzIENTU1J1bGU7CiBjbGFzcyBDU1NSdWxlTGlzdDsKQEAgLTg3LDggKzg4
LDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtUGFyc2VkUHJvcGVydGllcyA+IDA7IH0KIAogICAgIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQgcHJvcElk
LCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFu
dCk7Ci0gICAgYm9vbCBwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0
aWVzLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUNvbnRlbnQoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VRdW90ZXMoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpOwogCkBAIC0xMDgsNyArMTA3LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHBhcnNlRmlsbFNpemUoaW50IHByb3BJZCwgYm9vbCAmYWxsb3dDb21tYSk7CiAK
ICAgICBib29sIHBhcnNlRmlsbFByb3BlcnR5KGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50
JiBwcm9wSWQyLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIGJv
b2wgcGFyc2VGaWxsU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywg
aW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKIAogICAgIHZvaWQgYWRkRmlsbFZh
bHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpOwog
CkBAIC0xNTAsNiArMTQ4LDggQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VDb3VudGVyKGludCBw
cm9wSWQsIGludCBkZWZhdWx0VmFsdWUsIGJvb2wgaW1wb3J0YW50KTsKICAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCogYXJncywg
Ym9vbCBjb3VudGVycyk7CiAKKyAgICBib29sIHBhcnNlQmFja2dyb3VuZENsaXAoQ1NTUGFyc2Vy
VmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+JiwgQ1NTVmFsdWVQb29sKik7CisKICAgICBib29sIHBh
cnNlQ29sb3JQYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlKiwgaW50KiBjb2xvclZhbHVlcywgYm9v
bCBwYXJzZUFscGhhKTsKICAgICBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1
ZSosIGRvdWJsZSogY29sb3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7CiAgICAgUGFzc1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogPSAwKTsKQEAg
LTM4OCw2ICszODgsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+ID4gbV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yOwogICAgIFZlY3RvcjxPd25QdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+ID4gbV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOwogCisgICAg
Y29uc3QgQ1NTUGFyc2VyU2hvcnRoYW5kJiBtX3Nob3J0aGFuZFBhcnNlcjsKKwogICAgIC8vIGRl
ZmluZXMgdW5pdHMgYWxsb3dlZCBmb3IgYSBjZXJ0YWluIHByb3BlcnR5LCB1c2VkIGluIHBhcnNl
VW5pdAogICAgIGVudW0gVW5pdHMgewogICAgICAgICBGVW5rbm93biAgID0gMHgwMDAwLApAQCAt
NDE0LDYgKzQxNiw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKENTU1BhcnNlclZhbHVlKik7CiAgICAgUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NT
UGFyc2VyVmFsdWUqKTsKIAorICAgIGZyaWVuZCBjbGFzcyBDU1NQYXJzZXJTaG9ydGhhbmQ7CiAg
ICAgZnJpZW5kIGNsYXNzIFRyYW5zZm9ybU9wZXJhdGlvbkluZm87CiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQogICAgIGZyaWVuZCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25JbmZvOwpAQCAtNDQyLDYg
KzQ0NSwyOSBAQCBwcml2YXRlOgogICAgIENTU1BhcnNlciogbV9wYXJzZXI7CiB9OwogCitlbnVt
IFByb3BlcnR5VHlwZSB7CisgICAgUHJvcGVydHlFeHBsaWNpdCwKKyAgICBQcm9wZXJ0eUltcGxp
Y2l0Cit9OworCitjbGFzcyBJbXBsaWNpdFNjb3BlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbXBsaWNpdFNjb3BlKTsKK3B1YmxpYzoKKyAgICBJbXBsaWNpdFNjb3BlKFdlYkNvcmU6OkNT
U1BhcnNlciogcGFyc2VyLCBQcm9wZXJ0eVR5cGUgcHJvcGVydHlUeXBlKQorICAgICAgICA6IG1f
cGFyc2VyKHBhcnNlcikKKyAgICB7CisgICAgICAgIG1fcGFyc2VyLT5tX2ltcGxpY2l0U2hvcnRo
YW5kID0gcHJvcGVydHlUeXBlID09IFByb3BlcnR5SW1wbGljaXQ7CisgICAgfQorCisgICAgfklt
cGxpY2l0U2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9wYXJzZXItPm1faW1wbGljaXRTaG9ydGhh
bmQgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6Q1NTUGFyc2VyKiBt
X3BhcnNlcjsKK307CisKIFN0cmluZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmKTsKIFN0
cmluZyBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIHF1b3Rl
Q1NTVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXJTaG9ydGhhbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYjQ5MWU5NjQyNDIzYTk4MWQ0N2NmN2U1MDdl
M2Q3YWQ4ODBmOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyU2hvcnRoYW5kLmNwcApAQCAtMCwwICsxLDM4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyU2hvcnRoYW5k
LmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgor
I2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1l
c3BhY2UgV2ViQ29yZSB7Cit0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBvbmUgPSBDU1NQcm9wZXJ0
eUludmFsaWQsIENTU1Byb3BlcnR5SUQgdHdvID0gQ1NTUHJvcGVydHlJbnZhbGlkPgorY2xhc3Mg
VHdvVmFsdWVzU2hvcnRoYW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNlciwgYm9vbCBpbXBvcnRhbnQpCisg
ICAgeworICAgICAgICBpbnQgbnVtID0gcGFyc2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAxIDog
cGFyc2VyLT5tX3ZhbHVlTGlzdC0+c2l6ZSgpOworCisgICAgICAgIGlmIChudW0gPT0gMSkgewor
ICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUocGFyc2VyLCBwcm9wSWQpOworICAgICAg
ICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNl
ci0+bV9wYXJzZWRQcm9wZXJ0aWVzW3BhcnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52
YWx1ZSgpOworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0d28sIHZhbHVlLCBpbXBv
cnRhbnQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobnVtID09IDIpIHsKKyAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwg
cHJvcElkKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0
YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHR3bywgaW1wb3J0YW50KSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RhdGljIFNob3J0aGFuZEhhbmRs
ZXIgY3JlYXRlSGFuZGxlcigpCisgICAgeworICAgICAgICByZXR1cm4gU2hvcnRoYW5kSGFuZGxl
cigmcGFyc2VWYWx1ZSk7CisgICAgfQorfTsKKwordGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgb25l
ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52
YWxpZCwgQ1NTUHJvcGVydHlJRCB0aHJlZSA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVy
dHlJRCBmb3VyID0gQ1NTUHJvcGVydHlJbnZhbGlkPgorY2xhc3MgRm91clZhbHVlc1Nob3J0aGFu
ZEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KQorICAgIHsKKyAgICAgICAgLyog
RnJvbSB0aGUgQ1NTIDIgc3BlY3MsIDguMworICAgICAgICAgKiBJZiB0aGVyZSBpcyBvbmx5IG9u
ZSB2YWx1ZSwgaXQgYXBwbGllcyB0byBhbGwgc2lkZXMuIElmIHRoZXJlIGFyZSB0d28gdmFsdWVz
LCB0aGUgdG9wIGFuZAorICAgICAgICAgKiBib3R0b20gbWFyZ2lucyBhcmUgc2V0IHRvIHRoZSBm
aXJzdCB2YWx1ZSBhbmQgdGhlIHJpZ2h0IGFuZCBsZWZ0IG1hcmdpbnMgYXJlIHNldCB0byB0aGUg
c2Vjb25kLgorICAgICAgICAgKiBJZiB0aGVyZSBhcmUgdGhyZWUgdmFsdWVzLCB0aGUgdG9wIGlz
IHNldCB0byB0aGUgZmlyc3QgdmFsdWUsIHRoZSBsZWZ0IGFuZCByaWdodCBhcmUgc2V0IHRvIHRo
ZQorICAgICAgICAgKiBzZWNvbmQsIGFuZCB0aGUgYm90dG9tIGlzIHNldCB0byB0aGUgdGhpcmQu
IElmIHRoZXJlIGFyZSBmb3VyIHZhbHVlcywgdGhleSBhcHBseSB0byB0aGUgdG9wLAorICAgICAg
ICAgKiByaWdodCwgYm90dG9tLCBhbmQgbGVmdCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgKi8K
KworICAgICAgICBpbnQgbnVtID0gcGFyc2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAxIDogcGFy
c2VyLT5tX3ZhbHVlTGlzdC0+c2l6ZSgpOworCisgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3Bl
KHBhcnNlciwgcHJvcElkKTsKKworICAgICAgICAvLyBUaGUgb3JkZXIgaXMgdG9wLCByaWdodCwg
Ym90dG9tLCBsZWZ0LgorICAgICAgICBzd2l0Y2ggKG51bSkgeworICAgICAgICBjYXNlIDE6IHsK
KyAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUg
PSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGll
cy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZShw
YXJzZXIsIFByb3BlcnR5SW1wbGljaXQpOworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0
eSh0d28sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0
eSh0aHJlZSwgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3Bl
cnR5KGZvdXIsIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSAyOiB7CisgICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1
ZShvbmUsIGltcG9ydGFudCkgfHwgIXBhcnNlci0+cGFyc2VWYWx1ZSh0d28sIGltcG9ydGFudCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZh
bHVlID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXNbcGFyc2VyLT5tX251bVBhcnNlZFByb3Bl
cnRpZXMtMl0tPnZhbHVlKCk7CisgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2Nv
cGUocGFyc2VyLCBQcm9wZXJ0eUltcGxpY2l0KTsKKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJv
cGVydHkodGhyZWUsIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgdmFsdWUgPSBwYXJz
ZXItPm1fcGFyc2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+
dmFsdWUoKTsKKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoZm91ciwgdmFsdWUsIGlt
cG9ydGFudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDM6
IHsKKyAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSB8
fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHR3bywgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZh
bHVlKHRocmVlLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzW3Bh
cnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAgICAgSW1w
bGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBhcnNlciwgUHJvcGVydHlJbXBsaWNpdCk7CisgICAg
ICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KGZvdXIsIHZhbHVlLCBpbXBvcnRhbnQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSA0OiB7CisgICAgICAgICAg
ICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFudCkgfHwgIXBhcnNlci0+cGFy
c2VWYWx1ZSh0d28sIGltcG9ydGFudCkKKyAgICAgICAgICAgICAgICB8fCAhcGFyc2VyLT5wYXJz
ZVZhbHVlKHRocmVlLCBpbXBvcnRhbnQpIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUoZm91ciwgaW1w
b3J0YW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHN0YXRpYyBTaG9ydGhhbmRIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFNob3J0aGFuZEhhbmRsZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK307CisK
K3RlbXBsYXRlIDx1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzLCBDU1NQcm9wZXJ0eUlEIG9uZSA9IENT
U1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCB0d28gPSBDU1NQcm9wZXJ0eUludmFsaWQs
IENTU1Byb3BlcnR5SUQgdGhyZWUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQg
Zm91ciA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmaXZlID0gQ1NTUHJvcGVy
dHlJbnZhbGlkPgorY2xhc3MgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJv
b2wgaW1wb3J0YW50KQorICAgIHsKKyAgICAgICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkg
cHJvcGVydGllcyBhcyBwb3NzaWJsZQorICAgICAgICAvLyBXZSBzZXQgdXAgYW4gYXJyYXkgb2Yg
Ym9vbGVhbnMgdG8gbWFyayB3aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3VuZCwKKyAgICAgICAg
Ly8gYW5kIHdlIHRyeSB0byBzZWFyY2ggZm9yIHByb3BlcnRpZXMgdW50aWwgaXQgbWFrZXMgbm8g
bG9uZ2VyIGFueSBzZW5zZS4KKyAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUocGFyc2VyLCBw
cm9wSWQpOworCisgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBmbmRb
Nl07IC8vIFRydXN0IG1lIDspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Q
cm9wZXJ0aWVzOyBpKyspCisgICAgICAgICAgICBmbmRbaV0gPSBmYWxzZTsKKworICAgICAgICB3
aGlsZSAocGFyc2VyLT5tX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CisgICAgICAgICAgICBmb3Vu
ZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91
bmQgJiYgcHJvcEluZGV4IDwgbnVtUHJvcGVydGllczsgKytwcm9wSW5kZXgpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIWZuZFtwcm9wSW5kZXhdKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChw
YXJzZXItPnBhcnNlVmFsdWUocHJvcGVydGllc1twcm9wSW5kZXhdLCBpbXBvcnRhbnQpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZm5kW3Byb3BJbmRleF0gPSBmb3VuZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkaWRu
J3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gsIHRoaXMgaXMgYW4KKyAgICAgICAgICAgIC8vIGlu
dmFsaWQgc2hvcnRoYW5kIGFuZCB3ZSBoYXZlIHRvIGlnbm9yZSBpdC4KKyAgICAgICAgICAgIGlm
ICghZm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gRmlsbCBpbiBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5pdGlh
bCB2YWx1ZS4KKyAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBhcnNlciwgUHJv
cGVydHlJbXBsaWNpdCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Qcm9w
ZXJ0aWVzOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghZm5kW2ldKQorICAgICAgICAgICAgICAg
IHBhcnNlci0+YWRkUHJvcGVydHkocHJvcGVydGllc1tpXSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2wo
KS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZJWE1FIDogbm90IHZlcnkgZ2VuZXJpYyBoZXJlLgorICAgICAgICBpZiAo
cHJvcElkID09IENTU1Byb3BlcnR5Qm9yZGVyKSB7CisgICAgICAgICAgICAvLyBUaGUgQ1NTMyBC
b3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBib3JkZXIgYWxz
byByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCisgICAgICAgICAgICAvLyB0aG91Z2ggYSB2
YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIHBh
cnNlci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgcGFyc2VyLT5jc3NWYWx1
ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBTaG9ydGhh
bmRIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNob3J0aGFu
ZEhhbmRsZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzVdOworfTsKK3RlbXBsYXRlIDx1bnNpZ25lZCBudW1Qcm9wZXJ0aWVz
LCBDU1NQcm9wZXJ0eUlEIG9uZSwgQ1NTUHJvcGVydHlJRCB0d28gLCBDU1NQcm9wZXJ0eUlEIHRo
cmVlICwgQ1NTUHJvcGVydHlJRCBmb3VyLCBDU1NQcm9wZXJ0eUlEIGZpdmU+Citjb25zdCBpbnQg
R2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8bnVtUHJvcGVydGllcywgb25lLCB0d28sIHRocmVlLCBm
b3VyLCBmaXZlPjo6cHJvcGVydGllc1s1XSA9ICB7IG9uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2
ZSB9OworCitjb25zdCB1bnNpZ25lZCBjTWF4RmlsbFByb3BlcnRpZXMgPSA5OworCit0ZW1wbGF0
ZSA8dW5zaWduZWQgbnVtUHJvcGVydGllcywgQ1NTUHJvcGVydHlJRCBvbmUgPSBDU1NQcm9wZXJ0
eUludmFsaWQsIENTU1Byb3BlcnR5SUQgdHdvID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9w
ZXJ0eUlEIHRocmVlID0gQ1NTUHJvcGVydHlJbnZhbGlkLAorICAgICAgICAgIENTU1Byb3BlcnR5
SUQgZm91ciA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmaXZlID0gQ1NTUHJv
cGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHNpeCA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NT
UHJvcGVydHlJRCBzZXZlbiA9IENTU1Byb3BlcnR5SW52YWxpZD4KK2NsYXNzIEZpbGxTaG9ydGhh
bmRIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9w
SWQsIENTU1BhcnNlciogcGFyc2VyLCBib29sIGltcG9ydGFudCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChudW1Qcm9wZXJ0aWVzIDw9IGNNYXhGaWxsUHJvcGVydGllcyk7CisgICAgICAgIGlmIChu
dW1Qcm9wZXJ0aWVzID4gY01heEZpbGxQcm9wZXJ0aWVzKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElkKTsKKwor
ICAgICAgICBib29sIHBhcnNlZFByb3BlcnR5W2NNYXhGaWxsUHJvcGVydGllc10gPSB7IGZhbHNl
IH07CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWVzW2NNYXhGaWxsUHJvcGVydGllc107
CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gY2xpcFZhbHVlOworICAgICAgICBSZWZQdHI8Q1NT
VmFsdWU+IHBvc2l0aW9uWVZhbHVlOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlcGVhdFlW
YWx1ZTsKKyAgICAgICAgYm9vbCBmb3VuZENsaXAgPSBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQg
aTsKKworICAgICAgICB3aGlsZSAocGFyc2VyLT5tX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7Cisg
ICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsID0gcGFyc2VyLT5tX3ZhbHVlTGlzdC0+Y3Vy
cmVudCgpOworICAgICAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3Bl
cmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgaGl0
IHRoZSBlbmQuIEZpbGwgaW4gYWxsIHJlbWFpbmluZyB2YWx1ZXMgd2l0aCB0aGUgaW5pdGlhbCB2
YWx1ZS4KKyAgICAgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAg
ICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciAmJiBwYXJzZWRQcm9wZXJ0eVtpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENv
bG9yIGlzIG5vdCBhbGxvd2VkIGV4Y2VwdCBhcyB0aGUgbGFzdCBpdGVtIGluIGEgbGlzdCBmb3Ig
YmFja2dyb3VuZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWplY3QgdGhlIGVudGly
ZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldICYmIHByb3BlcnRpZXNbaV0g
IT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBhcnNlci0+YWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+
Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBwcm9w
ZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZhbHVlLCBwYXJz
ZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdCB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxWYWx1ZShyZXBl
YXRZVmFsdWUsIHBhcnNlci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZh
bHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9wZXJ0aWVzW2ldID09IENT
U1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5
V2Via2l0TWFza09yaWdpbikgJiYgIXBhcnNlZFByb3BlcnR5W2ldKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgYmFja2dyb3VuZC1vcmlnaW4gd2Fzbid0IHByZXNlbnQsIHRo
ZW4gcmVzZXQgYmFja2dyb3VuZC1jbGlwIGFsc28uCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgp
LT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJzZWRQcm9w
ZXJ0eVtpXSA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
IXBhcnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGZvciAoaSA9IDA7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7
CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgeworICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDE7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdmFsMjsKKyAgICAgICAgICAgICAgICAgICAgaW50IHByb3BJZDEsIHByb3BJ
ZDI7CisgICAgICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlKiBwYXJzZXJWYWx1ZSA9IHBh
cnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBh
cnNlci0+cGFyc2VGaWxsUHJvcGVydHkocHJvcGVydGllc1tpXSwgcHJvcElkMSwgcHJvcElkMiwg
dmFsMSwgdmFsMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ld
ID0gZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxs
VmFsdWUodmFsdWVzW2ldLCB2YWwxLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB8fCBw
cm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZhbHVlLCB2
YWwyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
c2VyLT5hZGRGaWxsVmFsdWUocmVwZWF0WVZhbHVlLCB2YWwyLnJlbGVhc2UoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW4gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBhcnNlIHRoZSB2YWx1ZSBhcyBh
IGNsaXAsIGFuZCBzZWUgaWYgd2Ugc3VjY2VlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocGFyc2VyLT5wYXJzZUJhY2tncm91bmRDbGlwKHBhcnNlclZhbHVlLCB2YWwxLCBwYXJz
ZXItPmNzc1ZhbHVlUG9vbCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
c2VyLT5hZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCB2YWwxLnJlbGVhc2UoKSk7IC8vIFRoZSBwcm9w
ZXJ0eSBwYXJzZWQgc3VjY2Vzc2Z1bGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUo
Y2xpcFZhbHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxW
YWx1ZSgpKTsgLy8gU29tZSB2YWx1ZSB3YXMgdXNlZCBmb3Igb3JpZ2luIHRoYXQgaXMgbm90IHN1
cHBvcnRlZCBieSBjbGlwLiBKdXN0IHJlc2V0IGNsaXAgaW5zdGVhZC4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09
IENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tDbGlwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRl
IGNsaXBWYWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxW
YWx1ZShjbGlwVmFsdWUsIHZhbDEucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3VuZENsaXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gsIHRoaXMgaXMg
YW4KKyAgICAgICAgICAgIC8vIGludmFsaWQgc2hvcnRoYW5kIGFuZCB3ZSBoYXZlIHRvIGlnbm9y
ZSBpdC4KKyAgICAgICAgICAgIGlmICghZm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsbCBpbiBhbnkgcmVtYWluaW5nIHByb3Bl
cnRpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZS4KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51
bVByb3BlcnRpZXM7ICsraSkgeworICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkg
eworICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwgcGFyc2Vy
LT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CisgICAgICAg
ICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b24gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUocG9zaXRpb25ZVmFsdWUsIHBh
cnNlci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOworICAg
ICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFJl
cGVhdCB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKKyAg
ICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUocmVwZWF0WVZhbHVlLCBwYXJz
ZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3Jp
Z2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSAmJiAh
cGFyc2VkUHJvcGVydHlbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgYmFja2dyb3Vu
ZC1vcmlnaW4gd2Fzbid0IHByZXNlbnQsIHRoZW4gcmVzZXQgYmFja2dyb3VuZC1jbGlwIGFsc28u
CisgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgcGFy
c2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTm93
IGFkZCBhbGwgb2YgdGhlIHByb3BlcnRpZXMgd2UgZm91bmQuCisgICAgICAgIGZvciAoaSA9IDA7
IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ld
ID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAgcGFy
c2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIHZhbHVlc1tp
XS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgLy8gaXQncyBPSyB0byBj
YWxsIHBvc2l0aW9uWVZhbHVlLnJlbGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvbiBvbmNlLgorICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBwb3NpdGlvbllWYWx1ZS5yZWxl
YXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0g
PT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBwYXJz
ZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgdmFsdWVzW2ld
LnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgICAgICAvLyBpdCdzIE9LIHRvIGNh
bGwgcG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2VlIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uIG9uY2UuCisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIHBvc2l0aW9uWVZhbHVlLnJlbGVh
c2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydGllc1tpXSA9
PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQpIHsKKyAgICAgICAgICAgICAgICBwYXJzZXIt
PmFkZFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIHZhbHVlc1tpXS5yZWxl
YXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxsIHJl
cGVhdFlWYWx1ZS5yZWxlYXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb24gb25jZS4KKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIHJlcGVhdFlWYWx1ZS5yZWxlYXNlKCksIGltcG9y
dGFudCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0KSB7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBv
cnRhbnQpOworICAgICAgICAgICAgICAgIC8vIGl0J3MgT0sgdG8gY2FsbCByZXBlYXRZVmFsdWUu
cmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2VlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9u
IG9uY2UuCisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRZLCByZXBlYXRZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAg
ICAgICAgICAgfSBlbHNlIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDbGlwIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkgJiYg
IWZvdW5kQ2xpcCkKKyAgICAgICAgICAgICAgICAvLyBWYWx1ZSBpcyBhbHJlYWR5IHNldCB3aGls
ZSB1cGRhdGluZyBvcmlnaW4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0s
IHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisKKyAgICAgICAgICAgIC8vIEFkZCBp
biBjbGlwIHZhbHVlcyB3aGVuIHdlIGhpdCB0aGUgY29ycmVzcG9uZGluZyBvcmlnaW4gcHJvcGVy
dHkuCisgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW4gJiYgIWZvdW5kQ2xpcCkKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIGNsaXBWYWx1ZS5yZWxlYXNlKCksIGltcG9y
dGFudCk7CisgICAgICAgICAgICBlbHNlIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5
V2Via2l0TWFza09yaWdpbiAmJiAhZm91bmRDbGlwKQorICAgICAgICAgICAgICAgIHBhcnNlci0+
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgY2xpcFZhbHVlLnJlbGVhc2Uo
KSwgaW1wb3J0YW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHN0YXRpYyBTaG9ydGhhbmRIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFNob3J0aGFuZEhhbmRsZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK3ByaXZh
dGU6CisgICAgc3RhdGljIGNvbnN0IGludCBwcm9wZXJ0aWVzWzddOworfTsKKwordGVtcGxhdGUg
PHVuc2lnbmVkIG51bVByb3BlcnRpZXMsIENTU1Byb3BlcnR5SUQgb25lLCBDU1NQcm9wZXJ0eUlE
IHR3byAsIENTU1Byb3BlcnR5SUQgdGhyZWUgLCBDU1NQcm9wZXJ0eUlEIGZvdXIsIENTU1Byb3Bl
cnR5SUQgZml2ZSwgQ1NTUHJvcGVydHlJRCBzaXgsIENTU1Byb3BlcnR5SUQgc2V2ZW4+Citjb25z
dCBpbnQgRmlsbFNob3J0aGFuZEhhbmRsZXI8bnVtUHJvcGVydGllcywgb25lLCB0d28sIHRocmVl
LCBmb3VyLCBmaXZlLCBzaXgsIHNldmVuPjo6cHJvcGVydGllc1s3XSA9ICB7IG9uZSwgdHdvLCB0
aHJlZSwgZm91ciwgZml2ZSwgc2l4LCBzZXZlbiB9OworCitjb25zdCBDU1NQYXJzZXJTaG9ydGhh
bmQmIENTU1BhcnNlclNob3J0aGFuZDo6c2hhcmVkQ1NTUGFyc2VyU2hvcnRoYW5kKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1BhcnNlclNob3J0aGFuZCwgY3NzQ1NTUGFyc2VyU2hv
cnRoYW5kc0luc3RhbmNlLCAoKSk7CisgICAgcmV0dXJuIGNzc0NTU1BhcnNlclNob3J0aGFuZHNJ
bnN0YW5jZTsKK30KKworQ1NTUGFyc2VyU2hvcnRoYW5kOjpDU1NQYXJzZXJTaG9ydGhhbmQoKQor
eworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQorICAgICAg
ICBtX2hhbmRsZXJBcnJheVtpXSA9IFNob3J0aGFuZEhhbmRsZXIoKTsKKworICAgIC8vIFBvc2l0
aW9uIG11c3QgY29tZSBiZWZvcmUgY29sb3IgaW4gdGhpcyBhcnJheSBiZWNhdXNlIGEgcGxhaW4g
b2xkICIwIiBpcyBhIGxlZ2FsIGNvbG9yCisgICAgLy8gaW4gcXVpcmtzIG1vZGUgYnV0IGl0J3Mg
dXN1YWxseSB0aGUgWCBjb29yZGluYXRlIG9mIGEgcG9zaXRpb24uCisgICAgLy8gRklYTUU6IEFk
ZCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplIHRvIHRoZSBzaG9ydGhhbmQuCisgICAgc2V0U2hv
cnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmQsIEZpbGxTaG9ydGhhbmRIYW5kbGVy
PDcsIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9w
ZXJ0eUJvcmRlciwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcj46OmNy
ZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbSwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21Db2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBGb3VyVmFsdWVzU2hvcnRoYW5kSGFuZGxlcjxDU1NQcm9w
ZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyTGVm
dCwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgs
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcj46
OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0LCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENT
U1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgVHdvVmFsdWVzU2hvcnRoYW5kSGFuZGxlcjxDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clZlcnRpY2FsU3BhY2luZz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFu
ZGxlcihDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBGb3VyVmFsdWVzU2hvcnRoYW5kSGFuZGxlcjxD
U1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlPjo6
Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9y
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5
Qm9yZGVyV2lkdGgsIEZvdXJWYWx1ZXNTaG9ydGhhbmRIYW5kbGVyPENTU1Byb3BlcnR5Qm9yZGVy
VG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg+OjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlMaXN0U3R5bGUsIEdlbmVyaWNT
aG9ydGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTUHJvcGVydHlM
aXN0U3R5bGVQb3NpdGlvbiwgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZT46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eU1hcmdpbiwgRm91clZh
bHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFy
Z2luUmlnaHQsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlP
dXRsaW5lLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0
aCwgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5UGFkZGlu
ZywgRm91clZhbHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlQYWRkaW5nVG9wLCBDU1NQ
cm9wZXJ0eVBhZGRpbmdSaWdodCwgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0
eVBhZGRpbmdMZWZ0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKworICAgIHNldFNob3J0aGFuZEhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlciwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8
MywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcj46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZSwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCwgR2VuZXJpY1No
b3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xv
cj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclN0YXJ0LCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHls
ZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucywgR2VuZXJp
Y1Nob3J0aGFuZEhhbmRsZXI8MiwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5Db3VudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRo
YW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUsIEdlbmVyaWNTaG9ydGhhbmRI
YW5kbGVyPDMsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3I+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRGbGV4RmxvdywgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MiwgQ1NTUHJvcGVydHlXZWJraXRG
bGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFw
c2UsIFR3b1ZhbHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZv
cmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZSwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8NSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVJlcGV0aXRpb24sIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2ssIEZpbGxTaG9ydGhhbmRIYW5k
bGVyPDYsIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tS
ZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0NsaXA+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDIs
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwy
LCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0
U3Ryb2tlQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRXcmFwLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9w
ZXJ0eVdlYmtpdFdyYXBGbG93LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sIENTU1Byb3Bl
cnR5V2Via2l0V3JhcFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOworfQorCisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDY4NGMxNjhjZWZl
OGU3YWE0NmExZjcyNTQzN2Q2MmU5YmY4MDM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlclNob3J0aGFuZC5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDU1NQYXJzZXJTaG9ydGhhbmRfaAorI2RlZmlu
ZSBDU1NQYXJzZXJTaG9ydGhhbmRfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgor
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1BhcnNlcjsKKworY2xhc3MgU2hv
cnRoYW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBib29sICgqUGFyc2VGdW5jdGlv
bikoaW50LCBDU1NQYXJzZXIqLCBib29sKTsKKyAgICBTaG9ydGhhbmRIYW5kbGVyKCkgOiBtX3Bh
cnNlKDApIHsgfQorICAgIFNob3J0aGFuZEhhbmRsZXIoUGFyc2VGdW5jdGlvbiBwYXJzZSkgOiBt
X3BhcnNlKHBhcnNlKSB7IH0KKyAgICBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgQ1NTUGFy
c2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KSBjb25zdCB7IEFTU0VSVChtX3BhcnNlKTsgcmV0
dXJuICgqbV9wYXJzZSkocHJvcElkLCBwYXJzZXIsIGltcG9ydGFudCk7IH0KKyAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlOyB9CisgICAgUGFyc2VGdW5jdGlvbiBwYXJz
ZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9wYXJzZTsgfQorcHJpdmF0ZToKKyAgICBQYXJzZUZ1bmN0
aW9uIG1fcGFyc2U7Cit9OworCitjbGFzcyBDU1NQYXJzZXJTaG9ydGhhbmQgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENTU1BhcnNlclNob3J0aGFuZCk7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0IENTU1BhcnNlclNob3J0aGFuZCYgc2hhcmVkQ1NTUGFyc2VyU2hvcnRoYW5kKCk7CisK
KyAgICBjb25zdCBTaG9ydGhhbmRIYW5kbGVyJiBzaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5
SUQgcHJvcGVydHkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodmFsaWQocHJvcGVydHkp
KTsKKyAgICAgICAgcmV0dXJuIG1faGFuZGxlckFycmF5W2luZGV4KHByb3BlcnR5KV07CisgICAg
fQorCitwcml2YXRlOgorICAgIENTU1BhcnNlclNob3J0aGFuZCgpOworCisgICAgc3RhdGljIGlu
dCBpbmRleChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBy
b3BlcnR5IC0gZmlyc3RDU1NQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCB2YWxp
ZChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaW50IGkgPSBpbmRleChw
cm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBpID49IDAgJiYgaSA8IG51bUNTU1Byb3BlcnRpZXM7
CisgICAgfQorCisgICAgdm9pZCBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5SUQgcHJv
cGVydHksIFNob3J0aGFuZEhhbmRsZXIgaGFuZGxlcikKKyAgICB7CisgICAgICAgIEFTU0VSVCh2
YWxpZChwcm9wZXJ0eSkpOworICAgICAgICBBU1NFUlQoIXNob3J0aGFuZEhhbmRsZXIocHJvcGVy
dHkpLmlzVmFsaWQoKSk7CisgICAgICAgIG1faGFuZGxlckFycmF5W2luZGV4KHByb3BlcnR5KV0g
PSBoYW5kbGVyOworICAgIH0KKworICAgIFNob3J0aGFuZEhhbmRsZXIgbV9oYW5kbGVyQXJyYXlb
bnVtQ1NTUHJvcGVydGllc107Cit9OworCit9CisKKyNlbmRpZiAvLyBDU1NQYXJzZXJTaG9ydGhh
bmRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124542</attachid>
            <date>2012-01-30 06:32:08 -0800</date>
            <delta_ts>2012-02-06 12:33:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77129-20120130113156.patch</filename>
            <type>text/plain</type>
            <size>70922</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODY4Y2FlMWIwNTliZDUx
MDM3NWJiNTc3MGM2MWI1OWMzNGRkYjMzNC4uN2I4ZDliMGQ2YThkYTM3ZTBmZTNjOWNjZjc5OTlh
YzY5MDJkNzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAxLTI3ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFNpbXBs
aWZ5IENTUyBzaG9ydGhhbmQgaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIENTUyBzaG9ydGhhbmQgaGFuZGxpbmcgaW50byBh
IHNlcGFyYXRlIGNsYXNzIGluc3BpcmVkCisgICAgICAgIGEgYml0IGZyb20gQ1NTU3R5bGVBcHBs
eVZhbHVlLiBJdCB1c2VzIGhhbmRsZXIgdGhhdCBlYWNoIHNob3J0aGFuZAorICAgICAgICBzcGVj
aWZ5LiBUaGlzIGhhbmRsZXIgaXMgcmVzcG9uc2libGUgdG8gcGFyc2UgdGhlIHNob3J0aGFuZCBj
b3JyZWN0bHkuCisgICAgICAgIEluIHRoZSBmdXR1cmUgd2UgY291bGQgZXh0ZW5kIHRoaXMgaGFu
ZGxlciB0byBleHBhbmQgdGhlIGxvbmdoYW5kcworICAgICAgICBhbmQgc2V0IHRoZW0gdG8gaW5p
dGlhbCBvciBpbmhlcml0LiAKKworICAgICAgICBObyBuZXcgdGVzdHMgOiBJdCdzIGEgcmVmYWN0
b3JpbmcKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NBbGxJbk9u
ZS5jcHA6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJhY2tncm91bmRDbGlw
KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENTU1BhcnNlcik6CisgICAgICAgICgpOgorICAgICAgICAoSW1wbGljaXRTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdFNjb3BlOjpJbXBsaWNpdFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltcGxpY2l0U2NvcGU6On5JbXBsaWNpdFNjb3BlKToKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyU2hvcnRoYW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFR3b1ZhbHVlc1Nob3J0aGFuZEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHdvVmFs
dWVzU2hvcnRoYW5kSGFuZGxlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUd29W
YWx1ZXNTaG9ydGhhbmRIYW5kbGVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEZvdXJWYWx1
ZXNTaG9ydGhhbmRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvdXJWYWx1ZXNTaG9ydGhh
bmRIYW5kbGVyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvdXJWYWx1ZXNTaG9y
dGhhbmRIYW5kbGVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEdlbmVyaWNTaG9ydGhhbmRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyOjpwYXJz
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyOjpjcmVh
dGVIYW5kbGVyKToKKyAgICAgICAgKCk6CisgICAgICAgIChGaWxsU2hvcnRoYW5kSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpGaWxsU2hvcnRoYW5kSGFuZGxlcjo6cGFyc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsU2hvcnRoYW5kSGFuZGxlcjo6Y3JlYXRlSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnNoYXJlZENTU1BhcnNlclNob3J0
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OkNTU1BhcnNlclNo
b3J0aGFuZCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlclNob3J0aGFuZC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hvcnRoYW5kSGFuZGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaG9ydGhhbmRIYW5kbGVyOjpTaG9ydGhhbmRIYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNob3J0aGFuZEhhbmRsZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hvcnRoYW5kSGFuZGxlcjo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTaG9ydGhhbmRI
YW5kbGVyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKENTU1BhcnNlclNob3J0aGFuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnNob3J0aGFuZEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2hvcnRoYW5kOjppbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTaG9ydGhhbmQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNob3J0aGFuZDo6c2V0U2hvcnRoYW5kSGFuZGxlcik6CisKIDIwMTItMDEtMjcgIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogVGFiYmVkRWRpdG9yQ29udGFpbmVyIHNob3VsZCBzYXZlIG9wZW4gdGFicy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggZWZiZjlmNjg0Mjk3MGY2ZDUxODc4YTQ0NWRlMDVjMGU4YmI0YzNl
OS4uOWVmZDg5NzFkMDBkMGRkNWI3MTk5ZDExMTliY2U4MGU1MDFjNmUzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTQ1Nyw2ICs0NTcsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3Nz
L0NTU09NVXRpbHMuY3BwCiAgICAgY3NzL0NTU1BhZ2VSdWxlLmNwcAogICAgIGNzcy9DU1NQYXJz
ZXIuY3BwCisgICAgY3NzL0NTU1BhcnNlclNob3J0aGFuZC5jcHAKICAgICBjc3MvQ1NTUGFyc2Vy
VmFsdWVzLmNwcAogICAgIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKICAgICBjc3MvQ1NTUHJv
cGVydHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBkNDg1ZWU1OWY2NzEx
NTJhNDE4MzY5ODQ5MDNlNTI3M2MxOTMzZDQzLi5iMTIyMjRlMWVmNmMzMmQ2N2I4ZDQyMTc0MTEy
YTE0YjhlMDZiMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEzMzYsNiAr
MTMzNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
Z2VSdWxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJT
aG9ydGhhbmQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyU2hvcnRoYW5kLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYjM0YzU0MjI5ZTExOThiMTBhODNkZDdj
MzYwMjM4YjdkNzZlYTAwNC4uZDhkZjMyOWI0NDNmMDg3NzE3OTkyZWQwNDBjYzNlNmFiNDY3NGRh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCkBAIC00MjAsNiArNDIwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgY3Nz
L0NTU09NVXRpbHMuY3BwIFwKICAgICBjc3MvQ1NTUGFnZVJ1bGUuY3BwIFwKICAgICBjc3MvQ1NT
UGFyc2VyLmNwcCBcCisgICAgY3NzL0NTU1BhcnNlclNob3J0aGFuZC5jcHAgXAogICAgIGNzcy9D
U1NQYXJzZXJWYWx1ZXMuY3BwIFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIFwKICAg
ICBjc3MvQ1NTUHJvcGVydHkuY3BwIFwKQEAgLTE1MzUsNiArMTUzNiw3IEBAIEhFQURFUlMgKz0g
XAogICAgIGNzcy9DU1NPTVV0aWxzLmggXAogICAgIGNzcy9DU1NQYWdlUnVsZS5oIFwKICAgICBj
c3MvQ1NTUGFyc2VyLmggXAorICAgIGNzcy9DU1NQYXJzZXJTaG9ydGhhbmQuaCBcCiAgICAgY3Nz
L0NTU1BhcnNlclZhbHVlcy5oIFwKICAgICBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBcCiAgICAg
Y3NzL0NTU1Byb3BlcnR5LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDAzMzBmMTBkNGY3NmJmMWE5
NWI2OTE2MTBjYmMwNzVhMGIzZTM3OWUuLmQ0MDMxOGNjNDRkZGU5NDE4ZDJkOTIyNjBlOGRjMTVj
OTM1MTc3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMjcsNiArMjAyNyw4IEBACiAgICAgICAg
ICAgICAnY3NzL0NTU1BhZ2VSdWxlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQYXJzZXIuY3Bw
JywKICAgICAgICAgICAgICdjc3MvQ1NTUGFyc2VyLmgnLAorICAgICAgICAgICAgJ2Nzcy9DU1NQ
YXJzZXJTaG9ydGhhbmQuY3BwJywKKyAgICAgICAgICAgICdjc3MvQ1NTUGFyc2VyU2hvcnRoYW5k
LmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwJywKICAgICAgICAgICAg
ICdjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTUHJpbWl0
aXZlVmFsdWVNYXBwaW5ncy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggZjE4ZjQ3MDU5OGYxMzA3ZDRmYjU2MjQxY2M3ZDczN2M2N2YxZTZh
NS4uOGM4OTdiMTAxNmJjYzIzM2FjZDM4NmQ3Y2NkZjYyZmFlN2Q5OTYyMiAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM0MTc3LDYgKzM0MTc3
LDYyIEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUGFyc2VyLmgiCiAJCQkJPgogCQkJ
PC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUGFyc2VyU2hvcnRoYW5kLmNw
cCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z3xXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZp
bGVDb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmFtZT0iUmVsZWFzZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJh
dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9u
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQ2Fp
cm9fQ0ZMaXRlfFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9v
bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9u
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJSZWxlYXNlX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2wK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Lz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9uCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQWxsfFdpbjMy
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAg
PC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUGFyc2VyU2hvcnRoYW5kLmgi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIDwvRmlsZT4KIAkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTUGFyc2Vy
VmFsdWVzLmNwcCIKIAkJCQk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjNkODY4YTY0ZDQ3Y2VmYjk3OWEwN2RkMTlhOGExZGVm
NjMzMmZkMC4uYjcwNDQ0OThlNDY2NjdkMDRhYjRiOTRhZWZmNzNmZDNhZjg4MTY2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTc3Nyw2ICs1Nzc3LDggQEAKIAkJRTFDQTVDQkMwRThDRENBRjAwRThFRjkwIC8qIEpTV29ya2Vy
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxQ0E1Q0JCMEU4Q0RDQUYwMEU4RUY5MCAvKiBKU1dvcmtlckN1c3RvbS5jcHAgKi87IH07CiAJ
CUUxQ0FBNUM2MEU4QkQyMzYwMEE3M0VDQSAvKiBKU1dvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQUE1QzUwRThCRDIzNjAwQTczRUNBIC8q
IEpTV29ya2VyLmggKi87IH07CiAJCUUxRTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dz
S2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFFMUJFRkYxMTVGRjZGQjAwNkY1MkNBIC8qIFdpbmRvd3NLZXlib2FyZENvZGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTFFNURE
MTgxNEQzMTFGNTAwODdFRDU1IC8qIENTU1BhcnNlclNob3J0aGFuZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1REQxNjE0RDMxMUY1MDA4N0VE
NTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcCAqLzsgfTsKKwkJRTFFNUREMTkxNEQzMTFGNTAw
ODdFRDU1IC8qIENTU1BhcnNlclNob3J0aGFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFNUREMTcxNEQzMTFGNTAwODdFRDU1IC8qIENTU1BhcnNl
clNob3J0aGFuZC5oICovOyB9OwogCQlFMUU2RUVBNDBCNjI4REE4MDA1RjJGNzAgLyogSlNIVE1M
U2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUU2RUVBMzBCNjI4REE4MDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0RWxlbWVudC5j
cHAgKi87IH07CiAJCUUxRTZFRUE4MEI2MjhEQjMwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU2
RUVBNzBCNjI4REIzMDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0RWxlbWVudC5oICovOyB9OwogCQlF
MUVCQkJENDBBQUM5Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFQkJCRDMwQUFDOUI4NzAwMUZF
OEUyIC8qIENTU0NoYXJzZXRSdWxlLmNwcCAqLzsgfTsKQEAgLTEyNzMwLDYgKzEyNzMyLDggQEAK
IAkJRTFDQTVDQkIwRThDRENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV29ya2VyQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDQUE1QzUwRThCRDIzNjAwQTczRUNBIC8qIEpTV29y
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV29ya2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRTFCRUZGMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5k
b3dzS2V5Ym9hcmRDb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5k
b3dzS2V5Ym9hcmRDb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUU1REQx
NjE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRoYW5kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1BhcnNlclNob3J0aGFuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRTVERDE3MTREMzExRjUwMDg3RUQ1NSAvKiBDU1NQYXJz
ZXJTaG9ydGhhbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUGFyc2Vy
U2hvcnRoYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRTZFRUEzMEI2MjhE
QTgwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFNlbGVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUU2RUVBNzBCNjI4REIzMDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IEpTSFRNTFNlbGVj
dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFQkJCRDMwQUFDOUI4
NzAwMUZFOEUyIC8qIENTU0NoYXJzZXRSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENTU0NoYXJzZXRSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE5OTcwLDYgKzE5OTc0LDggQEAKIAkJCQk4NUM1NkNBNjBBQTg5RDVGMDBEOTU3NTUg
LyogQ1NTUGFnZVJ1bGUuaWRsICovLAogCQkJCUJDNzcyQjM3MEM0RUE5MUUwMDgzMjg1RiAvKiBD
U1NQYXJzZXIuY3BwICovLAogCQkJCUJDNzcyQjM4MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NQYXJz
ZXIuaCAqLywKKwkJCQlFMUU1REQxNjE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hvcnRo
YW5kLmNwcCAqLywKKwkJCQlFMUU1REQxNzE0RDMxMUY1MDA4N0VENTUgLyogQ1NTUGFyc2VyU2hv
cnRoYW5kLmggKi8sCiAJCQkJQkMwMkE1M0YwRTA5OUM1QTAwNEI2RDJCIC8qIENTU1BhcnNlclZh
bHVlcy5jcHAgKi8sCiAJCQkJQkMwMkE0QjYwRTA5OTdCOTAwNEI2RDJCIC8qIENTU1BhcnNlclZh
bHVlcy5oICovLAogCQkJCUE4MEU2Q0RCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcmltaXRpdmVW
YWx1ZS5jcHAgKi8sCkBAIC0yNDEwMSw2ICsyNDEwNyw3IEBACiAJCQkJOEFEMEE1OTYxNEM4ODM1
ODAwMEQ4M0M1IC8qIERPTVdlYktpdENTU1JlZ2lvblJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CThBRDBBNTk4MTRDODgzNTgwMDBEODNDNSAvKiBET01XZWJLaXRDU1NSZWdpb25SdWxlSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5l
cmljRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFFNUREMTkxNEQzMTFGNTAwODdF
RDU1IC8qIENTU1BhcnNlclNob3J0aGFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzAzMCw2ICsy
NzAzNyw3IEBACiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTU3M0QxMzQ3MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JU
eXBlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1MDA2NDI5
NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFFNUREMTgx
NEQzMTFGNTAwODdFRDU1IC8qIENTU1BhcnNlclNob3J0aGFuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCmluZGV4IDdkNWYyNTBkMWJjOGNjNzcxMWFlNGQ1
MTRkOTlkZjEyYzQ5ZGY0NmIuLmQyOTc5YzkyNGExZDk1NWVmYjIwMmNlZGYwNDQ1ODBmOWYzOWEw
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2lu
Y2x1ZGUgIkNTU09NVXRpbHMuY3BwIgogI2luY2x1ZGUgIkNTU1BhZ2VSdWxlLmNwcCIKICNpbmNs
dWRlICJDU1NQYXJzZXIuY3BwIgorI2luY2x1ZGUgIkNTU1BhcnNlclNob3J0aGFuZC5jcHAiCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmNwcCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eUxvbmdo
YW5kLmNwcCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAppbmRleCA0NDVhOGUzN2EzMjQxM2I3OWIyNWI5N2YyNjY0Mjc5MzU5ZDdl
M2Q2Li40YzFlMzUzMDVjYzMyZDRjNzRkYmY3MGVmZTMxODMzMjlhMGFhNDlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkNTU01lZGlhUnVs
ZS5oIgogI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAi
Q1NTUGFnZVJ1bGUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJTaG9ydGhhbmQuaCIKICNpbmNsdWRl
ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgpAQCAtMTA2LDMzICsxMDcsNiBAQCBleHRlcm4gaW50IGNz
c3l5cGFyc2Uodm9pZCogcGFyc2VyKTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1l
c3BhY2UgV1RGOwogCi1uYW1lc3BhY2UgewotCi1lbnVtIFByb3BlcnR5VHlwZSB7Ci0gICAgUHJv
cGVydHlFeHBsaWNpdCwKLSAgICBQcm9wZXJ0eUltcGxpY2l0Ci19OwotCi1jbGFzcyBJbXBsaWNp
dFNjb3BlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbXBsaWNpdFNjb3BlKTsKLXB1Ymxp
YzoKLSAgICBJbXBsaWNpdFNjb3BlKFdlYkNvcmU6OkNTU1BhcnNlciogcGFyc2VyLCBQcm9wZXJ0
eVR5cGUgcHJvcGVydHlUeXBlKQotICAgICAgICA6IG1fcGFyc2VyKHBhcnNlcikKLSAgICB7Ci0g
ICAgICAgIG1fcGFyc2VyLT5tX2ltcGxpY2l0U2hvcnRoYW5kID0gcHJvcGVydHlUeXBlID09IFBy
b3BlcnR5SW1wbGljaXQ7Ci0gICAgfQotCi0gICAgfkltcGxpY2l0U2NvcGUoKQotICAgIHsKLSAg
ICAgICAgbV9wYXJzZXItPm1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgV2ViQ29yZTo6Q1NTUGFyc2VyKiBtX3BhcnNlcjsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIElO
VkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTID0gVUlOVF9NQVg7CkBAIC0yMDgsNiArMTgyLDcg
QEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogICAgICwgbV9sYXN0
U2VsZWN0b3JMaW5lTnVtYmVyKDApCiAgICAgLCBtX2FsbG93SW1wb3J0UnVsZXModHJ1ZSkKICAg
ICAsIG1fYWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnModHJ1ZSkKKyAgICAsIG1fc2hvcnRoYW5k
UGFyc2VyKENTU1BhcnNlclNob3J0aGFuZDo6c2hhcmVkQ1NTUGFyc2VyU2hvcnRoYW5kKCkpCiB7
CiAjaWYgWVlERUJVRyA+IDAKICAgICBjc3N5eWRlYnVnID0gMTsKQEAgLTkzMyw3ICs5MDgsMTMg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgYm9vbCB2YWxpZFByaW1pdGl2ZSA9IGZhbHNlOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4g
cGFyc2VkVmFsdWU7CiAKLSAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHBy
b3BJZCkpIHsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQgPSBzdGF0aWNfY2FzdDxDU1NQ
cm9wZXJ0eUlEPihwcm9wSWQpOworICAgIC8vIEJlZm9yZSBjb250aW51aW5nIGxldHMgbG9vayBp
ZiB0aGVyZSBpcyBhIHBhcnNpbmcgaGFuZGxlci4KKyAgICBjb25zdCBTaG9ydGhhbmRIYW5kbGVy
JiBoYW5kbGVyID0gbV9zaG9ydGhhbmRQYXJzZXIuc2hvcnRoYW5kSGFuZGxlcihwcm9wZXJ0eUlk
KTsKKyAgICBpZiAoaGFuZGxlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBoYW5kbGVyLnBh
cnNlVmFsdWUocHJvcElkLCB0aGlzLCBpbXBvcnRhbnQpOworCisgICAgc3dpdGNoIChwcm9wZXJ0
eUlkKSB7CiAgICAgICAgIC8qIFRoZSBjb21tZW50IHRvIHRoZSBsZWZ0IGRlZmluZXMgYWxsIHZh
bGlkIHZhbHVlIG9mIHRoaXMgcHJvcGVydGllcyBhcyBkZWZpbmVkCiAgICAgICAgICAqIGluIENT
UyAyLCBBcHBlbmRpeCBGLiBQcm9wZXJ0eSBpbmRleAogICAgICAgICAgKi8KQEAgLTExMjYsMjUg
KzExMDcsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFdlaWdodDogIC8vIG5vcm1hbCB8IGJv
bGQgfCBib2xkZXIgfCBsaWdodGVyIHwgMTAwIHwgMjAwIHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAw
IHwgNzAwIHwgODAwIHwgOTAwIHwgaW5oZXJpdAogICAgICAgICByZXR1cm4gcGFyc2VGb250V2Vp
Z2h0KGltcG9ydGFudCk7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzogewot
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJIb3Jpem9udGFsU3BhY2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIH07Ci0gICAgICAgIGlmIChu
dW0gPT0gMSkgewotICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJv
cGVydHlCb3JkZXJTcGFjaW5nKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0
aWVzWzBdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFBy
b3BlcnRpZXMtMV0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVz
WzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKG51bSA9PSAyKSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRT
Y29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpOwotICAgICAgICAgICAg
aWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUo
cHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3Bh
Y2luZzoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOgog
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25O
ZWcsIG1fc3RyaWN0KTsKQEAgLTE3MDgsMTIgKzE2NzAsNiBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0RmxleFdyYXA6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVO
b3dyYXAgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwIHx8IGlkID09IENTU1ZhbHVlV3JhcFJldmVyc2U7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOiB7Ci0g
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0
aXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQgfTsKLSAgICAg
ICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgNSwgaW1wb3J0YW50
KTsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246CiAg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZvcndhcmRzIHx8IGlkID09IENTU1ZhbHVlQmFja3dh
cmRzIHx8IGlkID09IENTU1ZhbHVlQWhlYWQgfHwKICAgICAgICAgICAgIGlkID09IENTU1ZhbHVl
UmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBp
ZCA9PSBDU1NWYWx1ZURvd24gfHwKQEAgLTE4NjIsMjUgKzE4MTgsNiBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0R3JpZFJvd3M6CiAgICAgICAgIHJldHVybiBwYXJzZUdyaWRUcmFja0xpc3Qo
cHJvcElkLCBpbXBvcnRhbnQpOwogI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLAotICAgICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07Ci0gICAgICAgIGlmIChudW0gPT0gMSkgewot
ICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1sw
XSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0
aWVzLTFdLT52YWx1ZSgpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwg
dmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewotICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUg
c2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgICAg
ICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxh
cHNlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKQEAgLTIwNzksMTM0ICsy
MDE2LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICAgICAgLyogc2hv
cnRoYW5kIHByb3BlcnRpZXMgKi8KLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDogewot
ICAgICAgICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVmb3JlIGNvbG9yIGluIHRoaXMgYXJyYXkg
YmVjYXVzZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdhbCBjb2xvcgotICAgICAgICAvLyBpbiBx
dWlya3MgbW9kZSBidXQgaXQncyB1c3VhbGx5IHRoZSBYIGNvb3JkaW5hdGUgb2YgYSBwb3NpdGlv
bi4KLSAgICAgICAgLy8gRklYTUU6IEFkZCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplIHRvIHRo
ZSBzaG9ydGhhbmQuCi0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5QmFja2dyb3VuZEltYWdlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1l
bnQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRP
cmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFj
a2dyb3VuZENsaXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yIH07Ci0gICAgICAgIHJldHVy
biBwYXJzZUZpbGxTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCA3LCBpbXBvcnRhbnQpOwot
ICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazogewotICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrT3JpZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwIH07Ci0gICAgICAgIHJldHVy
biBwYXJzZUZpbGxTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCA2LCBpbXBvcnRhbnQpOwot
ICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgotICAgICAgICAvLyBbICdib3JkZXIt
d2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0g
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlcldpZHRo
LCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9OwotICAgICAgICBpZiAocGFyc2VTaG9ydGhh
bmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpKSB7Ci0gICAgICAgICAgICAvLyBU
aGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBi
b3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCi0gICAgICAgICAgICAvLyB0
aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KLSAgICAg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGNzc1ZhbHVlUG9vbCgp
LT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgotICAgICAgICAvLyBbICdib3JkZXItdG9wLXdp
ZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0
aCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3J9OwotICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6Ci0gICAgICAgIC8vIFsgJ2JvcmRlci1yaWdo
dC13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAgIHsK
LSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07Ci0gICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7
Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206Ci0gICAgICAgIC8vIFsg
J2JvcmRlci1ib3R0b20td2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGlu
aGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21D
b2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVz
LCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoK
LSAgICAgICAgLy8gWyAnYm9yZGVyLWxlZnQtd2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxj
b2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNd
ID0geyBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5
bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9w
ZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clN0YXJ0U3R5bGUsCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29s
b3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywg
MywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVu
ZDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckVuZFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlLAot
ICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciB9OwotICAgICAgICBy
ZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwot
ICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgotICAgIHsKLSAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsCi0gICAgICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yIH07Ci0gICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKLSAgICB7Ci0gICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSwKLSAgICAgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VT
aG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5T3V0bGluZToKLSAgICAgICAgLy8gWyAnb3V0bGluZS1jb2xvcicgfHwg
J291dGxpbmUtc3R5bGUnIHx8ICdvdXRsaW5lLXdpZHRoJyBdIHwgaW5oZXJpdAotICAgIHsKLSAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5T3V0bGluZVdpZHRo
LCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKLSAgICAgICAgLy8gPGNvbG9yPnsxLDR9IHwgaW5o
ZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3Bl
cnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3Is
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1
ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyV2lkdGg6Ci0gICAgICAgIC8vIDxib3JkZXItd2lkdGg+ezEsNH0gfCBpbmhl
cml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwg
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVl
cyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJTdHlsZToKLSAgICAgICAgLy8gPGJvcmRlci1zdHlsZT57MSw0fSB8IGluaGVy
aXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0
eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVz
KHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eU1hcmdpbjoKLSAgICAgICAgLy8gPG1hcmdpbi13aWR0aD57MSw0fSB8IGluaGVyaXQKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eU1hcmdp
blRvcCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQg
fTsKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9y
dGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgotICAgICAgICAvLyA8
cGFkZGluZy13aWR0aD57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBw
cm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGlu
Z1JpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlQ
YWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0IH07Ci0gICAgICAgIHJldHVybiBw
YXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3c6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3Bl
cnR5V2Via2l0RmxleFdyYXAgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJ
ZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eUZvbnQ6CiAgICAgICAgIC8vIFsgWyAnZm9udC1zdHlsZScgfHwgJ2ZvbnQtdmFyaWFudCcgfHwg
J2ZvbnQtd2VpZ2h0JyBdPyAnZm9udC1zaXplJyBbIC8gJ2xpbmUtaGVpZ2h0JyBdPwogICAgICAg
ICAvLyAnZm9udC1mYW1pbHknIF0gfCBjYXB0aW9uIHwgaWNvbiB8IG1lbnUgfCBtZXNzYWdlLWJv
eCB8IHNtYWxsLWNhcHRpb24gfCBzdGF0dXMtYmFyIHwgaW5oZXJpdApAQCAtMjIxNSwyNSArMjAy
NCw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VGb250KGltcG9ydGFu
dCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6Ci0gICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlMaXN0U3R5
bGVUeXBlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSB9OwotICAgICAgICBy
ZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwot
ICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uczogewotICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5Db3VudCB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhh
bmQocHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGll
c1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZVN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNl
U2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6IHsKLSAgICAgICAgY29uc3QgaW50IHBy
b3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhh
bmQocHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwotICAgIH0KICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgogICAgICAgICByZXR1cm4gcGFyc2VBbmltYXRpb25T
aG9ydGhhbmQoaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlv
bjoKQEAgLTIyNTgsMTEgKzIwNDgsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3Ig
fTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0YW50KTsKLSAgICB9Ci0KICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246CiAgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZU92ZXIgfHwgaWQgPT0gQ1NTVmFsdWVVbmRlcikKICAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTIzMjIsMTAgKzIxMDcsNiBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0V3JhcFBhZGRpbmc6CiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2
YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDogewotICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LCBDU1NQcm9wZXJ0
eVdlYmtpdFdyYXBNYXJnaW4sIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcgfTsKLSAgICAg
ICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0YW50KTsKLSAgICB9CiAjaWYgRU5BQkxFKFNWRykKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gcGFyc2VTVkdWYWx1ZShwcm9wSWQsIGltcG9ydGFu
dCk7CkBAIC0yMzYzLDcgKzIxNDQsNyBAQCB2b2lkIENTU1BhcnNlcjo6YWRkRmlsbFZhbHVlKFJl
ZlB0cjxDU1NWYWx1ZT4mIGx2YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpCiAgICAgICAg
IGx2YWwgPSBydmFsOwogfQogCi1zdGF0aWMgYm9vbCBwYXJzZUJhY2tncm91bmRDbGlwKENTU1Bh
cnNlclZhbHVlKiBwYXJzZXJWYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiYgY3NzVmFsdWUsIENTU1Zh
bHVlUG9vbCogY3NzVmFsdWVQb29sKQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlQmFja2dyb3VuZENs
aXAoQ1NTUGFyc2VyVmFsdWUqIHBhcnNlclZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiBjc3NWYWx1
ZSwgQ1NTVmFsdWVQb29sKiBjc3NWYWx1ZVBvb2wpCiB7CiAgICAgaWYgKHBhcnNlclZhbHVlLT5p
ZCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8fCBwYXJzZXJWYWx1ZS0+aWQgPT0gQ1NTVmFsdWVQYWRk
aW5nQm94CiAgICAgICAgIHx8IHBhcnNlclZhbHVlLT5pZCA9PSBDU1NWYWx1ZUNvbnRlbnRCb3gg
fHwgcGFyc2VyVmFsdWUtPmlkID09IENTU1ZhbHVlV2Via2l0VGV4dCkgewpAQCAtMjM3MywxMzcg
KzIxNTQsNiBAQCBzdGF0aWMgYm9vbCBwYXJzZUJhY2tncm91bmRDbGlwKENTU1BhcnNlclZhbHVl
KiBwYXJzZXJWYWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiYgYwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotY29uc3QgaW50IGNNYXhGaWxsUHJvcGVydGllcyA9IDk7Ci0KLWJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUZpbGxTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQg
bnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpCi17Ci0gICAgQVNTRVJUKG51bVByb3BlcnRp
ZXMgPD0gY01heEZpbGxQcm9wZXJ0aWVzKTsKLSAgICBpZiAobnVtUHJvcGVydGllcyA+IGNNYXhG
aWxsUHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU2hvcnRoYW5kU2Nv
cGUgc2NvcGUodGhpcywgcHJvcElkKTsKLQotICAgIGJvb2wgcGFyc2VkUHJvcGVydHlbY01heEZp
bGxQcm9wZXJ0aWVzXSA9IHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlc1tj
TWF4RmlsbFByb3BlcnRpZXNdOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gY2xpcFZhbHVlOwotICAg
IFJlZlB0cjxDU1NWYWx1ZT4gcG9zaXRpb25ZVmFsdWU7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBy
ZXBlYXRZVmFsdWU7Ci0gICAgYm9vbCBmb3VuZENsaXAgPSBmYWxzZTsKLSAgICBpbnQgaTsKLQot
ICAgIHdoaWxlIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7Ci0gICAgICAgIENTU1BhcnNlclZh
bHVlKiB2YWwgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwotICAgICAgICBpZiAodmFsLT51bml0
ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWwtPmlWYWx1ZSA9PSAnLCcpIHsKLSAg
ICAgICAgICAgIC8vIFdlIGhpdCB0aGUgZW5kLiAgRmlsbCBpbiBhbGwgcmVtYWluaW5nIHZhbHVl
cyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgotICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQo
KTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciAmJiBwYXJzZWRQcm9wZXJ0eVtpXSkKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29sb3Ig
aXMgbm90IGFsbG93ZWQgZXhjZXB0IGFzIHRoZSBsYXN0IGl0ZW0gaW4gYSBsaXN0IGZvciBiYWNr
Z3JvdW5kcy4KLSAgICAgICAgICAgICAgICAgICAgLy8gUmVqZWN0IHRoZSBlbnRpcmUgcHJvcGVy
dHkuCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAg
IGlmICghcGFyc2VkUHJvcGVydHlbaV0gJiYgcHJvcGVydGllc1tpXSAhPSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcikgewotICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUodmFsdWVz
W2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b24pCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUocG9zaXRpb25ZVmFsdWUs
IGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0IHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KQotICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKHJlcGVhdFlWYWx1ZSwgY3NzVmFsdWVQ
b29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luIHx8IHBy
b3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSAmJiAhcGFyc2VkUHJv
cGVydHlbaV0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGJhY2tncm91bmQtb3Jp
Z2luIHdhc24ndCBwcmVzZW50LCB0aGVuIHJlc2V0IGJhY2tncm91bmQtY2xpcCBhbHNvLgotICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgY3NzVmFsdWVQb29s
KCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIW1fdmFsdWVMaXN0LT5jdXJy
ZW50KCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaSA9IDA7ICFmb3VuZCAmJiBpIDwgbnVtUHJv
cGVydGllczsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldKSB7Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwxOwotICAgICAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsMjsKLSAgICAgICAgICAgICAgICBpbnQgcHJvcElkMSwgcHJvcElk
MjsKLSAgICAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSogcGFyc2VyVmFsdWUgPSBtX3ZhbHVl
TGlzdC0+Y3VycmVudCgpOwotICAgICAgICAgICAgICAgIGlmIChwYXJzZUZpbGxQcm9wZXJ0eShw
cm9wZXJ0aWVzW2ldLCBwcm9wSWQxLCBwcm9wSWQyLCB2YWwxLCB2YWwyKSkgewotICAgICAgICAg
ICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgYWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwgdmFsMS5yZWxlYXNlKCkpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvbiB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
KQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZhbHVlLCB2
YWwyLnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3Bl
cnR5V2Via2l0TWFza1JlcGVhdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZEZpbGxWYWx1
ZShyZXBlYXRZVmFsdWUsIHZhbDIucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luIHx8IHByb3BlcnRp
ZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBSZXBhcnNlIHRoZSB2YWx1ZSBhcyBhIGNsaXAsIGFuZCBzZWUgaWYgd2Ugc3Vj
Y2VlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUJhY2tncm91bmRDbGlwKHBh
cnNlclZhbHVlLCB2YWwxLCBjc3NWYWx1ZVBvb2woKSkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgdmFsMS5yZWxlYXNlKCkpOyAvLyBUaGUgcHJv
cGVydHkgcGFyc2VkIHN1Y2Nlc3NmdWxseS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCBjc3NW
YWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7IC8vIFNvbWUgdmFsdWUg
d2FzIHVzZWQgZm9yIG9yaWdpbiB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgY2xpcC4gSnVzdCBy
ZXNldCBjbGlwIGluc3RlYWQuCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBw
cm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFVwZGF0ZSBjbGlwVmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFkZEZpbGxWYWx1ZShjbGlwVmFsdWUsIHZhbDEucmVsZWFzZSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZvdW5kQ2xpcCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBpZiB3
ZSBkaWRuJ3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gsIHRoaXMgaXMgYW4KLSAgICAgICAgLy8g
aW52YWxpZCBzaG9ydGhhbmQgYW5kIHdlIGhhdmUgdG8gaWdub3JlIGl0Ci0gICAgICAgIGlmICgh
Zm91bmQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gRmlsbCBp
biBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZS4KLSAgICBm
b3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7Ci0gICAgICAgIGlmICghcGFyc2Vk
UHJvcGVydHlbaV0pIHsKLSAgICAgICAgICAgIGFkZEZpbGxWYWx1ZSh2YWx1ZXNbaV0sIGNzc1Zh
bHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKLSAgICAgICAgICAgIGlm
IChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uIHx8IHByb3Bl
cnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pCi0gICAgICAgICAgICAg
ICAgYWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZhbHVlLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1w
bGljaXRJbml0aWFsVmFsdWUoKSk7Ci0gICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tSZXBlYXQpCi0gICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKHJlcGVhdFlW
YWx1ZSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwotICAg
ICAgICAgICAgaWYgKChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdp
biB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgJiYgIXBh
cnNlZFByb3BlcnR5W2ldKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgYmFja2dyb3VuZC1vcmln
aW4gd2Fzbid0IHByZXNlbnQsIHRoZW4gcmVzZXQgYmFja2dyb3VuZC1jbGlwIGFsc28uCi0gICAg
ICAgICAgICAgICAgYWRkRmlsbFZhbHVlKGNsaXBWYWx1ZSwgY3NzVmFsdWVQb29sKCktPmNyZWF0
ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gTm93IGFkZCBhbGwgb2YgdGhlIHByb3BlcnRpZXMgd2UgZm91bmQuCi0gICAg
Zm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykgewotICAgICAgICBpZiAocHJvcGVy
dGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbikgewotICAgICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCB2YWx1ZXNbaV0ucmVs
ZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxsIHBvc2l0
aW9uWVZhbHVlLnJlbGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvbiBvbmNlCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblksIHBvc2l0aW9uWVZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKLSAg
ICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uKSB7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvblgsIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgICAgICAv
LyBpdCdzIE9LIHRvIGNhbGwgcG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkg
c2VlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uIG9uY2UKLSAgICAgICAgICAgIGFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgcG9zaXRpb25ZVmFsdWUucmVs
ZWFzZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0KSB7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRh
bnQpOwotICAgICAgICAgICAgLy8gaXQncyBPSyB0byBjYWxsIHJlcGVhdFlWYWx1ZS5yZWxlYXNl
KCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gb25jZQot
ICAgICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgcmVw
ZWF0WVZhbHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChwcm9w
ZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkgewotICAgICAgICAgICAg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgdmFsdWVzW2ldLnJlbGVh
c2UoKSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIC8vIGl0J3MgT0sgdG8gY2FsbCByZXBlYXRZ
VmFsdWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2VlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uIG9uY2UKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFksIHJlcGVhdFlWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB8fCBw
cm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApICYmICFmb3VuZENsaXAp
Ci0gICAgICAgICAgICAvLyBWYWx1ZSBpcyBhbHJlYWR5IHNldCB3aGlsZSB1cGRhdGluZyBvcmln
aW4KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwot
Ci0gICAgICAgIC8vIEFkZCBpbiBjbGlwIHZhbHVlcyB3aGVuIHdlIGhpdCB0aGUgY29ycmVzcG9u
ZGluZyBvcmlnaW4gcHJvcGVydHkuCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1By
b3BlcnR5QmFja2dyb3VuZE9yaWdpbiAmJiAhZm91bmRDbGlwKQotICAgICAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgY2xpcFZhbHVlLnJlbGVhc2UoKSwgaW1w
b3J0YW50KTsKLSAgICAgICAgZWxzZSBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tPcmlnaW4gJiYgIWZvdW5kQ2xpcCkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIGNsaXBWYWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQ1NTUGFyc2VyOjphZGRBbmlt
YXRpb25WYWx1ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBy
dmFsKQogewogICAgIGlmIChsdmFsKSB7CkBAIC0yNjQwLDEwMSArMjI5MCw2IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElk
LCBjb25zdCBpbnQgKnByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFu
dCkKLXsKLSAgICAvLyBXZSB0cnkgdG8gbWF0Y2ggYXMgbWFueSBwcm9wZXJ0aWVzIGFzIHBvc3Np
YmxlCi0gICAgLy8gV2Ugc2V0IHVwIGFuIGFycmF5IG9mIGJvb2xlYW5zIHRvIG1hcmsgd2hpY2gg
cHJvcGVydHkgaGFzIGJlZW4gZm91bmQsCi0gICAgLy8gYW5kIHdlIHRyeSB0byBzZWFyY2ggZm9y
IHByb3BlcnRpZXMgdW50aWwgaXQgbWFrZXMgbm8gbG9uZ2VyIGFueSBzZW5zZS4KLSAgICBTaG9y
dGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwotCi0gICAgYm9vbCBmb3VuZCA9IGZhbHNl
OwotICAgIGJvb2wgZm5kWzZdOyAvLyBUcnVzdCBtZSA7KQotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtUHJvcGVydGllczsgaSsrKQotICAgICAgICBmbmRbaV0gPSBmYWxzZTsKLQotICAgIHdo
aWxlIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7Ci0gICAgICAgIGZvdW5kID0gZmFsc2U7Ci0g
ICAgICAgIGZvciAoaW50IHByb3BJbmRleCA9IDA7ICFmb3VuZCAmJiBwcm9wSW5kZXggPCBudW1Q
cm9wZXJ0aWVzOyArK3Byb3BJbmRleCkgewotICAgICAgICAgICAgaWYgKCFmbmRbcHJvcEluZGV4
XSkgewotICAgICAgICAgICAgICAgIGlmIChwYXJzZVZhbHVlKHByb3BlcnRpZXNbcHJvcEluZGV4
XSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICAgICAgZm5kW3Byb3BJbmRleF0gPSBmb3Vu
ZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBpZiB3ZSBk
aWRuJ3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gsIHRoaXMgaXMgYW4KLSAgICAgICAgLy8gaW52
YWxpZCBzaG9ydGhhbmQgYW5kIHdlIGhhdmUgdG8gaWdub3JlIGl0Ci0gICAgICAgIGlmICghZm91
bmQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gRmlsbCBpbiBh
bnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZS4KLSAgICBJbXBs
aWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgaWYgKCFmbmRb
aV0pCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCBjc3NWYWx1ZVBvb2wo
KS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJv
cElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKLXsKLSAgICAvKiBG
cm9tIHRoZSBDU1MgMiBzcGVjcywgOC4zCi0gICAgICogSWYgdGhlcmUgaXMgb25seSBvbmUgdmFs
dWUsIGl0IGFwcGxpZXMgdG8gYWxsIHNpZGVzLiBJZiB0aGVyZSBhcmUgdHdvIHZhbHVlcywgdGhl
IHRvcCBhbmQKLSAgICAgKiBib3R0b20gbWFyZ2lucyBhcmUgc2V0IHRvIHRoZSBmaXJzdCB2YWx1
ZSBhbmQgdGhlIHJpZ2h0IGFuZCBsZWZ0IG1hcmdpbnMgYXJlIHNldCB0byB0aGUgc2Vjb25kLgot
ICAgICAqIElmIHRoZXJlIGFyZSB0aHJlZSB2YWx1ZXMsIHRoZSB0b3AgaXMgc2V0IHRvIHRoZSBm
aXJzdCB2YWx1ZSwgdGhlIGxlZnQgYW5kIHJpZ2h0IGFyZSBzZXQgdG8gdGhlCi0gICAgICogc2Vj
b25kLCBhbmQgdGhlIGJvdHRvbSBpcyBzZXQgdG8gdGhlIHRoaXJkLiBJZiB0aGVyZSBhcmUgZm91
ciB2YWx1ZXMsIHRoZXkgYXBwbHkgdG8gdGhlIHRvcCwKLSAgICAgKiByaWdodCwgYm90dG9tLCBh
bmQgbGVmdCwgcmVzcGVjdGl2ZWx5LgotICAgICAqLwotCi0gICAgaW50IG51bSA9IGluU2hvcnRo
YW5kKCkgPyAxIDogbV92YWx1ZUxpc3QtPnNpemUoKTsKLQotICAgIFNob3J0aGFuZFNjb3BlIHNj
b3BlKHRoaXMsIHByb3BJZCk7Ci0KLSAgICAvLyB0aGUgb3JkZXIgaXMgdG9wLCByaWdodCwgYm90
dG9tLCBsZWZ0Ci0gICAgc3dpdGNoIChudW0pIHsKLSAgICAgICAgY2FzZSAxOiB7Ci0gICAgICAg
ICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBtX3Bh
cnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOwotICAgICAg
ICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQp
OwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUsIGltcG9ydGFu
dCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0
YW50KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBv
cnRhbnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSAyOiB7
Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8
fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJv
cGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBJ
bXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7Ci0gICAg
ICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAg
ICAgICAgICAgIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGll
cy0yXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZh
bHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSAzOiB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1w
b3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8ICFwYXJz
ZVZhbHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
W21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIEltcGxpY2l0
U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKLSAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSA0OiB7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9w
ZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8Ci0gICAgICAgICAgICAgICAgIXBhcnNlVmFsdWUocHJv
cGVydGllc1syXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzNdLCBpbXBv
cnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCiAvLyBhdXRvIHwg
PGlkZW50aWZpZXI+CiBib29sIENTU1BhcnNlcjo6cGFyc2VQYWdlKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGI3Mzg0ZWVlOWUwOWQ3YjY1
NzM1YTFmNDg4ZDRkZTdjYTczNmE4MGMuLmE0MThhMTI5YjlkZTkwMTkzZTRjOWNiNjczMTRhZTk5
N2YxNWQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3Mg
Q1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjsKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwogY2xhc3MgQ1NTVmFsdWVQb29sOwor
Y2xhc3MgQ1NTUGFyc2VyU2hvcnRoYW5kOwogY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBDU1NS
dWxlOwogY2xhc3MgQ1NTUnVsZUxpc3Q7CkBAIC04OCw4ICs4OSw2IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX251bVBhcnNlZFByb3BlcnRpZXMg
PiAwOyB9CiAKICAgICBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
OwotICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0
aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpOwotICAgIGJvb2wgcGFyc2U0
VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQp
OwogICAgIGJvb2wgcGFyc2VDb250ZW50KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAg
ICBib29sIHBhcnNlUXVvdGVzKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKIApAQCAtMTA5
LDcgKzEwOCw2IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxT
aXplKGludCBwcm9wSWQsIGJvb2wgJmFsbG93Q29tbWEpOwogCiAgICAgYm9vbCBwYXJzZUZpbGxQ
cm9wZXJ0eShpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgUmVmUHRyPENT
U1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAgICBib29sIHBhcnNlRmlsbFNob3J0aGFu
ZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBi
b29sIGltcG9ydGFudCk7CiAKICAgICB2b2lkIGFkZEZpbGxWYWx1ZShSZWZQdHI8Q1NTVmFsdWU+
JiBsdmFsLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBydmFsKTsKIApAQCAtMTUxLDYgKzE0OSw4IEBA
IHB1YmxpYzoKICAgICBib29sIHBhcnNlQ291bnRlcihpbnQgcHJvcElkLCBpbnQgZGVmYXVsdFZh
bHVlLCBib29sIGltcG9ydGFudCk7CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VDb3Vu
dGVyQ29udGVudChDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MsIGJvb2wgY291bnRlcnMpOwogCisg
ICAgYm9vbCBwYXJzZUJhY2tncm91bmRDbGlwKENTU1BhcnNlclZhbHVlKiwgUmVmUHRyPENTU1Zh
bHVlPiYsIENTU1ZhbHVlUG9vbCopOworCiAgICAgYm9vbCBwYXJzZUNvbG9yUGFyYW1ldGVycyhD
U1NQYXJzZXJWYWx1ZSosIGludCogY29sb3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7CiAgICAg
Ym9vbCBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUqLCBkb3VibGUqIGNvbG9yVmFs
dWVzLCBib29sIHBhcnNlQWxwaGEpOwogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHBhcnNlQ29sb3IoQ1NTUGFyc2VyVmFsdWUqID0gMCk7CkBAIC00MTAsNiArNDEwLDggQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPiA+IG1fcmV1c2FibGVS
ZWdpb25TZWxlY3RvclZlY3RvcjsKIAogICAgIFJlZlB0cjxDU1NDYWxjVmFsdWU+IG1fcGFyc2Vk
Q2FsY3VsYXRpb247CisgICAgY29uc3QgQ1NTUGFyc2VyU2hvcnRoYW5kJiBtX3Nob3J0aGFuZFBh
cnNlcjsKKwogCiAgICAgLy8gZGVmaW5lcyB1bml0cyBhbGxvd2VkIGZvciBhIGNlcnRhaW4gcHJv
cGVydHksIHVzZWQgaW4gcGFyc2VVbml0CiAgICAgZW51bSBVbml0cyB7CkBAIC00NDMsNiArNDQ1
LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgcGFyc2VkRG91YmxlKENTU1BhcnNlclZhbHVlKiwg
UmVsZWFzZVBhcnNlZENhbGNWYWx1ZUNvbmRpdGlvbiByZWxlYXNlQ2FsYyA9IERvTm90UmVsZWFz
ZVBhcnNlZENhbGNWYWx1ZSk7CiAgICAgYm9vbCBpc0NhbGN1bGF0aW9uKENTU1BhcnNlclZhbHVl
Kik7CiAgICAgCisgICAgZnJpZW5kIGNsYXNzIENTU1BhcnNlclNob3J0aGFuZDsKICAgICBmcmll
bmQgY2xhc3MgVHJhbnNmb3JtT3BlcmF0aW9uSW5mbzsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CiAgICAgZnJpZW5kIGNsYXNzIEZpbHRlck9wZXJhdGlvbkluZm87CkBAIC00NzEsNiArNDc0LDI5
IEBAIHByaXZhdGU6CiAgICAgQ1NTUGFyc2VyKiBtX3BhcnNlcjsKIH07CiAKK2VudW0gUHJvcGVy
dHlUeXBlIHsKKyAgICBQcm9wZXJ0eUV4cGxpY2l0LAorICAgIFByb3BlcnR5SW1wbGljaXQKK307
CisKK2NsYXNzIEltcGxpY2l0U2NvcGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltcGxp
Y2l0U2NvcGUpOworcHVibGljOgorICAgIEltcGxpY2l0U2NvcGUoV2ViQ29yZTo6Q1NTUGFyc2Vy
KiBwYXJzZXIsIFByb3BlcnR5VHlwZSBwcm9wZXJ0eVR5cGUpCisgICAgICAgIDogbV9wYXJzZXIo
cGFyc2VyKQorICAgIHsKKyAgICAgICAgbV9wYXJzZXItPm1faW1wbGljaXRTaG9ydGhhbmQgPSBw
cm9wZXJ0eVR5cGUgPT0gUHJvcGVydHlJbXBsaWNpdDsKKyAgICB9CisKKyAgICB+SW1wbGljaXRT
Y29wZSgpCisgICAgeworICAgICAgICBtX3BhcnNlci0+bV9pbXBsaWNpdFNob3J0aGFuZCA9IGZh
bHNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpDU1NQYXJzZXIqIG1fcGFyc2Vy
OworfTsKKwogU3RyaW5nIHF1b3RlQ1NTU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIHF1
b3RlQ1NTU3RyaW5nSWZOZWVkZWQoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgcXVvdGVDU1NVUkxJ
Zk5lZWRlZChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXJTaG9ydGhhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclNob3J0
aGFuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY5ZDc3OTNjMWVmYjE1ODYxNzQwMzUyZDdiYTc3YmQ3MjNj
MGNlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9y
dGhhbmQuY3BwCkBAIC0wLDAgKzEsMzg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJTaG9ydGhhbmQuaCIKKwor
I2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCisjaW5jbHVk
ZSAiQ1NTVmFsdWVQb29sLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK3RlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIG9uZSA9IENTU1Byb3BlcnR5SW52YWxp
ZCwgQ1NTUHJvcGVydHlJRCB0d28gPSBDU1NQcm9wZXJ0eUludmFsaWQ+CitjbGFzcyBUd29WYWx1
ZXNTaG9ydGhhbmRIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVl
KGludCBwcm9wSWQsIENTU1BhcnNlciogcGFyc2VyLCBib29sIGltcG9ydGFudCkKKyAgICB7Cisg
ICAgICAgIGludCBudW0gPSBwYXJzZXItPm1faW5QYXJzZVNob3J0aGFuZCA/IDEgOiBwYXJzZXIt
Pm1fdmFsdWVMaXN0LT5zaXplKCk7CisKKyAgICAgICAgaWYgKG51bSA9PSAxKSB7CisgICAgICAg
ICAgICBTaG9ydGhhbmRTY29wZSBzY29wZShwYXJzZXIsIHByb3BJZCk7CisgICAgICAgICAgICBp
ZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFudCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLT5tX3Bh
cnNlZFByb3BlcnRpZXNbcGFyc2VyLT5tX251bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7
CisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHR3bywgdmFsdWUsIGltcG9ydGFudCk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChudW0g
PT0gMikgeworICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUocGFyc2VyLCBwcm9wSWQp
OworICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQpIHx8
ICFwYXJzZXItPnBhcnNlVmFsdWUodHdvLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgU2hvcnRoYW5kSGFuZGxlciBjcmVh
dGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBTaG9ydGhhbmRIYW5kbGVyKCZwYXJz
ZVZhbHVlKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBvbmUgPSBDU1NQ
cm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQgdHdvID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBD
U1NQcm9wZXJ0eUlEIHRocmVlID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIGZv
dXIgPSBDU1NQcm9wZXJ0eUludmFsaWQ+CitjbGFzcyBGb3VyVmFsdWVzU2hvcnRoYW5kSGFuZGxl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBDU1NQ
YXJzZXIqIHBhcnNlciwgYm9vbCBpbXBvcnRhbnQpCisgICAgeworICAgICAgICAvKiBGcm9tIHRo
ZSBDU1MgMiBzcGVjcywgOC4zCisgICAgICAgICAqIElmIHRoZXJlIGlzIG9ubHkgb25lIHZhbHVl
LCBpdCBhcHBsaWVzIHRvIGFsbCBzaWRlcy4gSWYgdGhlcmUgYXJlIHR3byB2YWx1ZXMsIHRoZSB0
b3AgYW5kCisgICAgICAgICAqIGJvdHRvbSBtYXJnaW5zIGFyZSBzZXQgdG8gdGhlIGZpcnN0IHZh
bHVlIGFuZCB0aGUgcmlnaHQgYW5kIGxlZnQgbWFyZ2lucyBhcmUgc2V0IHRvIHRoZSBzZWNvbmQu
CisgICAgICAgICAqIElmIHRoZXJlIGFyZSB0aHJlZSB2YWx1ZXMsIHRoZSB0b3AgaXMgc2V0IHRv
IHRoZSBmaXJzdCB2YWx1ZSwgdGhlIGxlZnQgYW5kIHJpZ2h0IGFyZSBzZXQgdG8gdGhlCisgICAg
ICAgICAqIHNlY29uZCwgYW5kIHRoZSBib3R0b20gaXMgc2V0IHRvIHRoZSB0aGlyZC4gSWYgdGhl
cmUgYXJlIGZvdXIgdmFsdWVzLCB0aGV5IGFwcGx5IHRvIHRoZSB0b3AsCisgICAgICAgICAqIHJp
Z2h0LCBib3R0b20sIGFuZCBsZWZ0LCByZXNwZWN0aXZlbHkuCisgICAgICAgICAqLworCisgICAg
ICAgIGludCBudW0gPSBwYXJzZXItPm1faW5QYXJzZVNob3J0aGFuZCA/IDEgOiBwYXJzZXItPm1f
dmFsdWVMaXN0LT5zaXplKCk7CisKKyAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUocGFyc2Vy
LCBwcm9wSWQpOworCisgICAgICAgIC8vIFRoZSBvcmRlciBpcyB0b3AsIHJpZ2h0LCBib3R0b20s
IGxlZnQuCisgICAgICAgIHN3aXRjaCAobnVtKSB7CisgICAgICAgIGNhc2UgMTogeworICAgICAg
ICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNl
ci0+bV9wYXJzZWRQcm9wZXJ0aWVzW3BhcnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52
YWx1ZSgpOworICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBhcnNlciwg
UHJvcGVydHlJbXBsaWNpdCk7CisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHR3bywg
dmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHRocmVl
LCB2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoZm91
ciwgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIDI6IHsKKyAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwg
aW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHR3bywgaW1wb3J0YW50KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBw
YXJzZXItPm1fcGFyc2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0y
XS0+dmFsdWUoKTsKKyAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZShwYXJz
ZXIsIFByb3BlcnR5SW1wbGljaXQpOworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0
aHJlZSwgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlci0+bV9w
YXJzZWRQcm9wZXJ0aWVzW3BhcnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgp
OworICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShmb3VyLCB2YWx1ZSwgaW1wb3J0YW50
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMzogeworICAg
ICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQpIHx8ICFwYXJz
ZXItPnBhcnNlVmFsdWUodHdvLCBpbXBvcnRhbnQpIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUodGhy
ZWUsIGltcG9ydGFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXNbcGFyc2VyLT5t
X251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7CisgICAgICAgICAgICBJbXBsaWNpdFNj
b3BlIGltcGxpY2l0U2NvcGUocGFyc2VyLCBQcm9wZXJ0eUltcGxpY2l0KTsKKyAgICAgICAgICAg
IHBhcnNlci0+YWRkUHJvcGVydHkoZm91ciwgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDQ6IHsKKyAgICAgICAgICAgIGlmICgh
cGFyc2VyLT5wYXJzZVZhbHVlKG9uZSwgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZhbHVl
KHR3bywgaW1wb3J0YW50KQorICAgICAgICAgICAgICAgIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUo
dGhyZWUsIGltcG9ydGFudCkgfHwgIXBhcnNlci0+cGFyc2VWYWx1ZShmb3VyLCBpbXBvcnRhbnQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
c3RhdGljIFNob3J0aGFuZEhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAgeworICAgICAgICBy
ZXR1cm4gU2hvcnRoYW5kSGFuZGxlcigmcGFyc2VWYWx1ZSk7CisgICAgfQorfTsKKwordGVtcGxh
dGUgPHVuc2lnbmVkIG51bVByb3BlcnRpZXMsIENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVy
dHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJv
cGVydHlJRCB0aHJlZSA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmb3VyID0g
Q1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIGZpdmUgPSBDU1NQcm9wZXJ0eUludmFs
aWQ+CitjbGFzcyBHZW5lcmljU2hvcnRoYW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNlciwgYm9vbCBpbXBv
cnRhbnQpCisgICAgeworICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSB0cnkgdG8gbWF0Y2gg
YXMgbWFueSBwcm9wZXJ0aWVzIGFzIHBvc3NpYmxlCisgICAgICAgICAgICAvLyBXZSBzZXQgdXAg
YW4gYXJyYXkgb2YgYm9vbGVhbnMgdG8gbWFyayB3aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3Vu
ZCwKKyAgICAgICAgICAgIC8vIGFuZCB3ZSB0cnkgdG8gc2VhcmNoIGZvciBwcm9wZXJ0aWVzIHVu
dGlsIGl0IG1ha2VzIG5vIGxvbmdlciBhbnkgc2Vuc2UuCisgICAgICAgICAgICBTaG9ydGhhbmRT
Y29wZSBzY29wZShwYXJzZXIsIHByb3BJZCk7CisKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKKyAgICAgICAgICAgIGJvb2wgZm5kWzZdOyAvLyBUcnVzdCBtZSA7KQorICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKKyAgICAgICAg
ICAgICAgICBmbmRbaV0gPSBmYWxzZTsKKworICAgICAgICAgICAgd2hpbGUgKHBhcnNlci0+bV92
YWx1ZUxpc3QtPmN1cnJlbnQoKSkgeworICAgICAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJv
cEluZGV4IDwgbnVtUHJvcGVydGllczsgKytwcm9wSW5kZXgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFmbmRbcHJvcEluZGV4XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBh
cnNlci0+cGFyc2VWYWx1ZShwcm9wZXJ0aWVzW3Byb3BJbmRleF0sIGltcG9ydGFudCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm5kW3Byb3BJbmRleF0gPSBmb3VuZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gsIHRoaXMgaXMgYW4KKyAg
ICAgICAgICAgICAgICAvLyBpbnZhbGlkIHNob3J0aGFuZCBhbmQgd2UgaGF2ZSB0byBpZ25vcmUg
aXQuCisgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGaWxsIGluIGFueSBy
ZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgorICAgICAgICAgICAg
SW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBhcnNlciwgUHJvcGVydHlJbXBsaWNpdCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7
CisgICAgICAgICAgICAgICAgaWYgKCFmbmRbaV0pCisgICAgICAgICAgICAgICAgICAgIHBhcnNl
ci0+YWRkUHJvcGVydHkocHJvcGVydGllc1tpXSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3Jl
YXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FIDogbm90IHZlcnkgZ2VuZXJpYyBoZXJlLgorICAg
ICAgICBpZiAocHJvcElkID09IENTU1Byb3BlcnR5Qm9yZGVyKSB7CisgICAgICAgICAgICAvLyBU
aGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBi
b3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCisgICAgICAgICAgICAvLyB0
aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KKyAgICAg
ICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgcGFyc2Vy
LT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRp
YyBTaG9ydGhhbmRIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFNob3J0aGFuZEhhbmRsZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK3ByaXZhdGU6CisgICAgc3Rh
dGljIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVdOworfTsKK3RlbXBsYXRlIDx1bnNpZ25lZCBudW1Q
cm9wZXJ0aWVzLCBDU1NQcm9wZXJ0eUlEIG9uZSwgQ1NTUHJvcGVydHlJRCB0d28gLCBDU1NQcm9w
ZXJ0eUlEIHRocmVlICwgQ1NTUHJvcGVydHlJRCBmb3VyLCBDU1NQcm9wZXJ0eUlEIGZpdmU+Citj
b25zdCBpbnQgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8bnVtUHJvcGVydGllcywgb25lLCB0d28s
IHRocmVlLCBmb3VyLCBmaXZlPjo6cHJvcGVydGllc1s1XSA9ICB7IG9uZSwgdHdvLCB0aHJlZSwg
Zm91ciwgZml2ZSB9OworCitjb25zdCB1bnNpZ25lZCBjTWF4RmlsbFByb3BlcnRpZXMgPSA5Owor
Cit0ZW1wbGF0ZSA8dW5zaWduZWQgbnVtUHJvcGVydGllcywgQ1NTUHJvcGVydHlJRCBvbmUgPSBD
U1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQgdHdvID0gQ1NTUHJvcGVydHlJbnZhbGlk
LCBDU1NQcm9wZXJ0eUlEIHRocmVlID0gQ1NTUHJvcGVydHlJbnZhbGlkLAorICAgICAgICAgIENT
U1Byb3BlcnR5SUQgZm91ciA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmaXZl
ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHNpeCA9IENTU1Byb3BlcnR5SW52
YWxpZCwgQ1NTUHJvcGVydHlJRCBzZXZlbiA9IENTU1Byb3BlcnR5SW52YWxpZD4KK2NsYXNzIEZp
bGxTaG9ydGhhbmRIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVl
KGludCBwcm9wSWQsIENTU1BhcnNlciogcGFyc2VyLCBib29sIGltcG9ydGFudCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChudW1Qcm9wZXJ0aWVzIDw9IGNNYXhGaWxsUHJvcGVydGllcyk7CisgICAg
ICAgIGlmIChudW1Qcm9wZXJ0aWVzID4gY01heEZpbGxQcm9wZXJ0aWVzKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJv
cElkKTsKKworICAgICAgICBib29sIHBhcnNlZFByb3BlcnR5W2NNYXhGaWxsUHJvcGVydGllc10g
PSB7IGZhbHNlIH07CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWVzW2NNYXhGaWxsUHJv
cGVydGllc107CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gY2xpcFZhbHVlOworICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHBvc2l0aW9uWVZhbHVlOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHJlcGVhdFlWYWx1ZTsKKyAgICAgICAgYm9vbCBmb3VuZENsaXAgPSBmYWxzZTsKKyAgICAgICAg
dW5zaWduZWQgaTsKKworICAgICAgICB3aGlsZSAocGFyc2VyLT5tX3ZhbHVlTGlzdC0+Y3VycmVu
dCgpKSB7CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsID0gcGFyc2VyLT5tX3ZhbHVl
TGlzdC0+Y3VycmVudCgpOworICAgICAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQYXJzZXJW
YWx1ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7CisgICAgICAgICAgICAgICAg
Ly8gV2UgaGl0IHRoZSBlbmQuIEZpbGwgaW4gYWxsIHJlbWFpbmluZyB2YWx1ZXMgd2l0aCB0aGUg
aW5pdGlhbCB2YWx1ZS4KKyAgICAgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0LT5uZXh0
KCk7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciAmJiBwYXJzZWRQcm9wZXJ0eVtpXSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIENvbG9yIGlzIG5vdCBhbGxvd2VkIGV4Y2VwdCBhcyB0aGUgbGFzdCBpdGVtIGluIGEg
bGlzdCBmb3IgYmFja2dyb3VuZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWplY3Qg
dGhlIGVudGlyZSBwcm9wZXJ0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldICYmIHByb3Bl
cnRpZXNbaV0gIT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHZhbHVlc1tpXSwgcGFyc2VyLT5jc3NWYWx1
ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
biB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZh
bHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdCB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPmFkZEZpbGxW
YWx1ZShyZXBlYXRZVmFsdWUsIHBhcnNlci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0
SW5pdGlhbFZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9wZXJ0aWVz
W2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiB8fCBwcm9wZXJ0aWVzW2ldID09IENT
U1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgJiYgIXBhcnNlZFByb3BlcnR5W2ldKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYmFja2dyb3VuZC1vcmlnaW4gd2Fzbid0IHBy
ZXNlbnQsIHRoZW4gcmVzZXQgYmFja2dyb3VuZC1jbGlwIGFsc28uCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCBwYXJzZXItPmNzc1Zh
bHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBw
YXJzZWRQcm9wZXJ0eVtpXSA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAoIXBhcnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGll
czsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgeworICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDE7CisgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMjsKKyAgICAgICAgICAgICAgICAgICAgaW50IHByb3BJ
ZDEsIHByb3BJZDI7CisgICAgICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlKiBwYXJzZXJW
YWx1ZSA9IHBhcnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhcnNlci0+cGFyc2VGaWxsUHJvcGVydHkocHJvcGVydGllc1tpXSwgcHJvcElkMSwg
cHJvcElkMiwgdmFsMSwgdmFsMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFBy
b3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2Vy
LT5hZGRGaWxsVmFsdWUodmFsdWVzW2ldLCB2YWwxLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvbiB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHBvc2l0aW9u
WVZhbHVlLCB2YWwyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQgfHwgcHJvcGVydGllc1tp
XSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUocmVwZWF0WVZhbHVlLCB2YWwyLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRPcmlnaW4gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tPcmlnaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBhcnNlIHRoZSB2
YWx1ZSBhcyBhIGNsaXAsIGFuZCBzZWUgaWYgd2Ugc3VjY2VlZC4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocGFyc2VyLT5wYXJzZUJhY2tncm91bmRDbGlwKHBhcnNlclZhbHVlLCB2
YWwxLCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUoY2xpcFZhbHVlLCB2YWwxLnJlbGVhc2UoKSk7IC8v
IFRoZSBwcm9wZXJ0eSBwYXJzZWQgc3VjY2Vzc2Z1bGx5LgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRG
aWxsVmFsdWUoY2xpcFZhbHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNp
dEluaXRpYWxWYWx1ZSgpKTsgLy8gU29tZSB2YWx1ZSB3YXMgdXNlZCBmb3Igb3JpZ2luIHRoYXQg
aXMgbm90IHN1cHBvcnRlZCBieSBjbGlwLiBKdXN0IHJlc2V0IGNsaXAgaW5zdGVhZC4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAgfHwgcHJvcGVydGllc1tpXSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gVXBkYXRlIGNsaXBWYWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIt
PmFkZEZpbGxWYWx1ZShjbGlwVmFsdWUsIHZhbDEucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3VuZENsaXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gs
IHRoaXMgaXMgYW4KKyAgICAgICAgICAgIC8vIGludmFsaWQgc2hvcnRoYW5kIGFuZCB3ZSBoYXZl
IHRvIGlnbm9yZSBpdC4KKyAgICAgICAgICAgIGlmICghZm91bmQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsbCBpbiBhbnkgcmVtYWlu
aW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZS4KKyAgICAgICAgZm9yIChpID0g
MDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9w
ZXJ0eVtpXSkgeworICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKHZhbHVlc1tp
XSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7
CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb24gfHwgcHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUocG9zaXRpb25Z
VmFsdWUsIHBhcnNlci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVl
KCkpOworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdCB8fCBwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdCkKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRGaWxsVmFsdWUocmVwZWF0WVZh
bHVlLCBwYXJzZXItPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICBpZiAoKHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kT3JpZ2luIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3Jp
Z2luKSAmJiAhcGFyc2VkUHJvcGVydHlbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYg
YmFja2dyb3VuZC1vcmlnaW4gd2Fzbid0IHByZXNlbnQsIHRoZW4gcmVzZXQgYmFja2dyb3VuZC1j
bGlwIGFsc28uCisgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkRmlsbFZhbHVlKGNsaXBW
YWx1ZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUo
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgLy8gTm93IGFkZCBhbGwgb2YgdGhlIHByb3BlcnRpZXMgd2UgZm91bmQuCisgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChwcm9w
ZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uKSB7CisgICAgICAgICAg
ICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgs
IHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgLy8gaXQn
cyBPSyB0byBjYWxsIHBvc2l0aW9uWVZhbHVlLnJlbGVhc2UoKSBzaW5jZSB3ZSBvbmx5IHNlZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiBvbmNlLgorICAgICAgICAgICAgICAgIHBhcnNl
ci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBwb3NpdGlvbllW
YWx1ZS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3Bl
cnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pIHsKKyAgICAgICAgICAg
ICAgICBwYXJzZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwg
dmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgICAgICAvLyBpdCdz
IE9LIHRvIGNhbGwgcG9zaXRpb25ZVmFsdWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2VlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uIG9uY2UuCisgICAgICAgICAgICAgICAgcGFyc2Vy
LT5hZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIHBvc2l0aW9uWVZh
bHVlLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVy
dGllc1tpXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQpIHsKKyAgICAgICAgICAgICAg
ICBwYXJzZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIHZhbHVl
c1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgLy8gaXQncyBPSyB0
byBjYWxsIHJlcGVhdFlWYWx1ZS5yZWxlYXNlKCkgc2luY2Ugd2Ugb25seSBzZWUgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb24gb25jZS4KKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIHJlcGVhdFlWYWx1ZS5yZWxlYXNl
KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXNbaV0gPT0g
Q1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KSB7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5h
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCB2YWx1ZXNbaV0ucmVsZWFz
ZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgICAgIC8vIGl0J3MgT0sgdG8gY2FsbCByZXBl
YXRZVmFsdWUucmVsZWFzZSgpIHNpbmNlIHdlIG9ubHkgc2VlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uIG9uY2UuCisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCByZXBlYXRZVmFsdWUucmVsZWFzZSgpLCBpbXBvcnRh
bnQpOworICAgICAgICAgICAgfSBlbHNlIGlmICgocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRDbGlwIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q2xpcCkgJiYgIWZvdW5kQ2xpcCkKKyAgICAgICAgICAgICAgICAvLyBWYWx1ZSBpcyBhbHJlYWR5
IHNldCB3aGlsZSB1cGRhdGluZyBvcmlnaW4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHByb3Bl
cnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisKKyAgICAgICAgICAg
IC8vIEFkZCBpbiBjbGlwIHZhbHVlcyB3aGVuIHdlIGhpdCB0aGUgY29ycmVzcG9uZGluZyBvcmln
aW4gcHJvcGVydHkuCisgICAgICAgICAgICBpZiAocHJvcGVydGllc1tpXSA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRPcmlnaW4gJiYgIWZvdW5kQ2xpcCkKKyAgICAgICAgICAgICAgICBwYXJzZXIt
PmFkZFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIGNsaXBWYWx1ZS5yZWxlYXNl
KCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBlbHNlIGlmIChwcm9wZXJ0aWVzW2ldID09IENT
U1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiAmJiAhZm91bmRDbGlwKQorICAgICAgICAgICAgICAg
IHBhcnNlci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgY2xpcFZhbHVl
LnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHN0YXRpYyBTaG9ydGhhbmRIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFNob3J0aGFuZEhhbmRsZXIoJnBhcnNlVmFsdWUpOworICAg
IH0KK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IGludCBwcm9wZXJ0aWVzWzddOworfTsKKwor
dGVtcGxhdGUgPHVuc2lnbmVkIG51bVByb3BlcnRpZXMsIENTU1Byb3BlcnR5SUQgb25lLCBDU1NQ
cm9wZXJ0eUlEIHR3byAsIENTU1Byb3BlcnR5SUQgdGhyZWUgLCBDU1NQcm9wZXJ0eUlEIGZvdXIs
IENTU1Byb3BlcnR5SUQgZml2ZSwgQ1NTUHJvcGVydHlJRCBzaXgsIENTU1Byb3BlcnR5SUQgc2V2
ZW4+Citjb25zdCBpbnQgRmlsbFNob3J0aGFuZEhhbmRsZXI8bnVtUHJvcGVydGllcywgb25lLCB0
d28sIHRocmVlLCBmb3VyLCBmaXZlLCBzaXgsIHNldmVuPjo6cHJvcGVydGllc1s3XSA9ICB7IG9u
ZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZSwgc2l4LCBzZXZlbiB9OworCitjb25zdCBDU1NQYXJz
ZXJTaG9ydGhhbmQmIENTU1BhcnNlclNob3J0aGFuZDo6c2hhcmVkQ1NTUGFyc2VyU2hvcnRoYW5k
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1BhcnNlclNob3J0aGFuZCwgY3NzQ1NT
UGFyc2VyU2hvcnRoYW5kc0luc3RhbmNlLCAoKSk7CisgICAgcmV0dXJuIGNzc0NTU1BhcnNlclNo
b3J0aGFuZHNJbnN0YW5jZTsKK30KKworQ1NTUGFyc2VyU2hvcnRoYW5kOjpDU1NQYXJzZXJTaG9y
dGhhbmQoKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytp
KQorICAgICAgICBtX2hhbmRsZXJBcnJheVtpXSA9IFNob3J0aGFuZEhhbmRsZXIoKTsKKworICAg
IC8vIFBvc2l0aW9uIG11c3QgY29tZSBiZWZvcmUgY29sb3IgaW4gdGhpcyBhcnJheSBiZWNhdXNl
IGEgcGxhaW4gb2xkICIwIiBpcyBhIGxlZ2FsIGNvbG9yCisgICAgLy8gaW4gcXVpcmtzIG1vZGUg
YnV0IGl0J3MgdXN1YWxseSB0aGUgWCBjb29yZGluYXRlIG9mIGEgcG9zaXRpb24uCisgICAgLy8g
RklYTUU6IEFkZCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplIHRvIHRoZSBzaG9ydGhhbmQuCisg
ICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmQsIEZpbGxTaG9ydGhh
bmRIYW5kbGVyPDcsIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxl
cihDU1NQcm9wZXJ0eUJvcmRlciwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJD
b2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbSwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21Db2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5k
SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBGb3VyVmFsdWVzU2hvcnRoYW5kSGFuZGxl
cjxDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3Is
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9y
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5
Qm9yZGVyTGVmdCwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0LCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRI
YW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgVHdvVmFsdWVzU2hvcnRoYW5kSGFuZGxl
cjxDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hv
cnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBGb3VyVmFsdWVzU2hvcnRoYW5k
SGFuZGxlcjxDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFN0eWxlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1By
b3BlcnR5Qm9yZGVyVG9wLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eUJv
cmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
clRvcENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIEZvdXJWYWx1ZXNTaG9ydGhhbmRIYW5kbGVyPENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlMaXN0U3R5bGUs
IEdlbmVyaWNTaG9ydGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NT
UHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZT46OmNy
ZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eU1hcmdp
biwgRm91clZhbHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1By
b3BlcnR5TWFyZ2luUmlnaHQsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NT
UHJvcGVydHlPdXRsaW5lLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBDU1NQcm9wZXJ0eU91
dGxpbmVXaWR0aCwgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsIENTU1Byb3BlcnR5T3V0bGluZUNv
bG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3Bl
cnR5UGFkZGluZywgRm91clZhbHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlQYWRkaW5n
VG9wLCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBD
U1NQcm9wZXJ0eVBhZGRpbmdMZWZ0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKworICAgIHNldFNob3J0
aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlciwgR2VuZXJpY1Nob3J0aGFu
ZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xv
cj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZSwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVT
dHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcj46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCwg
R2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0
aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0LCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwzLCBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
U3RhcnRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
cywgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MiwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0
aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUsIEdlbmVyaWNT
aG9ydGhhbmRIYW5kbGVyPDMsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxl
Q29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFuZEhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRGbGV4RmxvdywgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8MiwgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQ29sbGFwc2UsIFR3b1ZhbHVlc1Nob3J0aGFuZEhhbmRsZXI8Q1NTUHJvcGVydHlXZWJraXRN
YXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNl
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZSwgR2VuZXJpY1Nob3J0aGFuZEhhbmRsZXI8NSwgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZD46OmNyZWF0ZUhhbmRsZXIoKSk7
CisgICAgc2V0U2hvcnRoYW5kSGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2ssIEZpbGxTaG9y
dGhhbmRIYW5kbGVyPDYsIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIENTU1By
b3BlcnR5V2Via2l0TWFza0NsaXA+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFu
ZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIEdlbmVyaWNTaG9ydGhhbmRI
YW5kbGVyPDIsIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0
aGFuZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBHZW5lcmljU2hvcnRoYW5k
SGFuZGxlcjwyLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFNob3J0aGFu
ZEhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRXcmFwLCBHZW5lcmljU2hvcnRoYW5kSGFuZGxlcjwz
LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4s
IENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOworfQorCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJTaG9ydGhhbmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDY4
NGMxNjhjZWZlOGU3YWE0NmExZjcyNTQzN2Q2MmU5YmY4MDM3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclNob3J0aGFuZC5oCkBAIC0wLDAgKzEsODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDU1NQYXJzZXJTaG9ydGhhbmRf
aAorI2RlZmluZSBDU1NQYXJzZXJTaG9ydGhhbmRfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlO
YW1lcy5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1BhcnNlcjsKKwor
Y2xhc3MgU2hvcnRoYW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBib29sICgqUGFy
c2VGdW5jdGlvbikoaW50LCBDU1NQYXJzZXIqLCBib29sKTsKKyAgICBTaG9ydGhhbmRIYW5kbGVy
KCkgOiBtX3BhcnNlKDApIHsgfQorICAgIFNob3J0aGFuZEhhbmRsZXIoUGFyc2VGdW5jdGlvbiBw
YXJzZSkgOiBtX3BhcnNlKHBhcnNlKSB7IH0KKyAgICBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KSBjb25zdCB7IEFTU0VSVChtX3Bh
cnNlKTsgcmV0dXJuICgqbV9wYXJzZSkocHJvcElkLCBwYXJzZXIsIGltcG9ydGFudCk7IH0KKyAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlOyB9CisgICAgUGFyc2VGdW5j
dGlvbiBwYXJzZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9wYXJzZTsgfQorcHJpdmF0ZToKKyAgICBQ
YXJzZUZ1bmN0aW9uIG1fcGFyc2U7Cit9OworCitjbGFzcyBDU1NQYXJzZXJTaG9ydGhhbmQgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1BhcnNlclNob3J0aGFuZCk7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0IENTU1BhcnNlclNob3J0aGFuZCYgc2hhcmVkQ1NTUGFyc2VyU2hvcnRo
YW5kKCk7CisKKyAgICBjb25zdCBTaG9ydGhhbmRIYW5kbGVyJiBzaG9ydGhhbmRIYW5kbGVyKENT
U1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodmFsaWQo
cHJvcGVydHkpKTsKKyAgICAgICAgcmV0dXJuIG1faGFuZGxlckFycmF5W2luZGV4KHByb3BlcnR5
KV07CisgICAgfQorCitwcml2YXRlOgorICAgIENTU1BhcnNlclNob3J0aGFuZCgpOworCisgICAg
c3RhdGljIGludCBpbmRleChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHByb3BlcnR5IC0gZmlyc3RDU1NQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBzdGF0aWMg
Ym9vbCB2YWxpZChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaW50IGkg
PSBpbmRleChwcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBpID49IDAgJiYgaSA8IG51bUNTU1By
b3BlcnRpZXM7CisgICAgfQorCisgICAgdm9pZCBzZXRTaG9ydGhhbmRIYW5kbGVyKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIFNob3J0aGFuZEhhbmRsZXIgaGFuZGxlcikKKyAgICB7CisgICAgICAg
IEFTU0VSVCh2YWxpZChwcm9wZXJ0eSkpOworICAgICAgICBBU1NFUlQoIXNob3J0aGFuZEhhbmRs
ZXIocHJvcGVydHkpLmlzVmFsaWQoKSk7CisgICAgICAgIG1faGFuZGxlckFycmF5W2luZGV4KHBy
b3BlcnR5KV0gPSBoYW5kbGVyOworICAgIH0KKworICAgIFNob3J0aGFuZEhhbmRsZXIgbV9oYW5k
bGVyQXJyYXlbbnVtQ1NTUHJvcGVydGllc107Cit9OworCit9CisKKyNlbmRpZiAvLyBDU1NQYXJz
ZXJTaG9ydGhhbmRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125692</attachid>
            <date>2012-02-06 12:33:59 -0800</date>
            <delta_ts>2012-02-07 12:51:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77129-20120206173345.patch</filename>
            <type>text/plain</type>
            <size>102699</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1OGYwYjJjZGVhMDBi
ZDJiYTEzYzBhZWQxOGUxOWRiMGFmNWY4MC4uMTBiYzU1ODM3ZDVmNDEzZTFlZTMyOWM3Njc5OGY0
ZjI2ZTA0ZmE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAyLTA2ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFNpbXBs
aWZ5IENTUyBwcm9wZXJ0eSBwYXJzaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIENTUyBwcm9wZXJ0eSBwYXJzaW5nIHNpbXBsaWVyIGJ5IHVz
aW5nIGEgbW9yZSBnZW5lcmljIGFwcHJvYWNoLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyA6IEl0
J3MgYSByZWZhY3Rvciwgbm8gbmV3IGZlYXR1cmVzLCBubyBidWcgZml4LgorCisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChDU1NQcm9wZXJ0eVBhcnNlcik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlQYXJzZXI6OnBhcnNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZVByaW1pdGl2ZSk6CisgICAgICAgIChWYWx1ZU9yUmFuZ2VPclR5
cGVQcm9wZXJ0eVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpWYWx1ZU9yUmFuZ2VPclR5cGVQ
cm9wZXJ0eVBhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWx1ZU9yUmFu
Z2VPclR5cGVQcm9wZXJ0eVBhcnNlcjo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKFZhbHVlT3JV
bml0UHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVPclVuaXRQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWx1ZU9yVW5pdFByb3Bl
cnR5UGFyc2VyOjpjcmVhdGVQYXJzZXIpOgorICAgICAgICAoVmFsdWVNYXRjaFByb3BlcnR5UGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjo6cGFyc2VW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI6OmNyZWF0
ZVBhcnNlcik6CisgICAgICAgIChUd29WYWx1ZXNTaG9ydGhhbmRQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VHdvVmFsdWVzU2hvcnRoYW5kUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlR3b1ZhbHVlc1Nob3J0aGFuZFBhcnNlcjo6Y3JlYXRlUGFyc2VyKToKKyAgICAg
ICAgKEZvdXJWYWx1ZXNTaG9ydGhhbmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Rm91clZh
bHVlc1Nob3J0aGFuZFBhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3Vy
VmFsdWVzU2hvcnRoYW5kUGFyc2VyOjpjcmVhdGVQYXJzZXIpOgorICAgICAgICAoR2VuZXJpY1No
b3J0aGFuZFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljU2hvcnRoYW5kUGFyc2Vy
OjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNTaG9ydGhhbmRQYXJzZXI6
OmNyZWF0ZVBhcnNlcik6CisgICAgICAgIChDU1NQYXJzZXJQcm9wZXJ0eUFycmF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclByb3BlcnR5QXJyYXk6OnNoYXJlZENTU1BhcnNlclByb3Bl
cnR5QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyUHJvcGVydHlBcnJheTo6cHJv
cGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyUHJvcGVydHlBcnJheTo6
Q1NTUGFyc2VyUHJvcGVydHlBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJQcm9w
ZXJ0eUFycmF5Ojp2YWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJQcm9wZXJ0eUFy
cmF5OjppbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJQcm9wZXJ0eUFycmF5Ojpz
ZXRQcm9wZXJ0eVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNl
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTUGFyc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6b3BlcmF0b3IgfCApOgorCiAyMDEyLTAy
LTA2ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCiAg
ICAgICAgIEVuc3VyZSB0aW1lcnMgYW5kIG90aGVyIGFjdGl2ZSBET00gb2JqZWN0cyBkbyBub3Qg
ZmlyZSBpbiBzdXNwZW5kZWQgZG9jdW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCAxMWFjOWNmYTNiYmNmZTBkMGUxNjQ5ZTEyMjUyYmY5NjA3ZDE5ZTNiLi44NDM3Yzg3ZDJiYmNh
ZTMyYTIzZmU2ZDA3NDQ3ODRmMDhjZjRjZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtMTcyLDYgKzE3Miw0OTQgQEAgc3RhdGljIGJvb2wgaGFzUHJlZml4KGNvbnN0IGNoYXIqIHN0
cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyKiBwcmVmaXgpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitjbGFzcyBDU1NQcm9wZXJ0eVBhcnNlciB7CisgcHVibGljOgorICAgICB0eXBl
ZGVmIGJvb2wgKCpQYXJzZUZ1bmN0aW9uKShpbnQsIENTU1BhcnNlciosIGJvb2wpOworICAgICBD
U1NQcm9wZXJ0eVBhcnNlcigpIDogbV9wYXJzZSgwKSB7IH0KKyAgICAgQ1NTUHJvcGVydHlQYXJz
ZXIoUGFyc2VGdW5jdGlvbiBwYXJzZSkgOiBtX3BhcnNlKHBhcnNlKSB7IH0KKyAgICAgYm9vbCBw
YXJzZVZhbHVlKGludCBwcm9wSWQsIENTU1BhcnNlciogcGFyc2VyLCBib29sIGltcG9ydGFudCkg
Y29uc3QgeyBBU1NFUlQobV9wYXJzZSk7IHJldHVybiAoKm1fcGFyc2UpKHByb3BJZCwgcGFyc2Vy
LCBpbXBvcnRhbnQpOyB9CisgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
c2U7IH0KKyAgICAgUGFyc2VGdW5jdGlvbiBwYXJzZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9wYXJz
ZTsgfQorIHByaXZhdGU6CisgICAgIFBhcnNlRnVuY3Rpb24gbV9wYXJzZTsKK307CisKK3N0YXRp
YyBib29sIHBhcnNlUHJpbWl0aXZlKGludCBwcm9wSWQsIENTU1BhcnNlciogcGFyc2VyLCBib29s
IGltcG9ydGFudCkKK3sKKyAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBwYXJzZXItPm1fdmFs
dWVMaXN0LT5jdXJyZW50KCk7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKKyAg
ICBwYXJzZWRWYWx1ZSA9IHBhcnNlci0+cGFyc2VWYWxpZFByaW1pdGl2ZSh2YWx1ZS0+aWQsIHZh
bHVlKTsKKyAgICBwYXJzZXItPm1fdmFsdWVMaXN0LT5uZXh0KCk7CisKKyAgICBBU1NFUlQoIXBh
cnNlci0+bV9wYXJzZWRDYWxjdWxhdGlvbik7CisgICAgaWYgKHBhcnNlZFZhbHVlICYmICghcGFy
c2VyLT5tX3ZhbHVlTGlzdC0+Y3VycmVudCgpIHx8IHBhcnNlci0+bV9pblBhcnNlU2hvcnRoYW5k
KSkgeworICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHByb3BJZCwgcGFyc2VkVmFsdWUucmVs
ZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZSA8aW50IG1pblJhbmdlID0gQ1NTVmFsdWVJbnZhbGlk
LCBpbnQgbWF4UmFuZ2UgPSBDU1NWYWx1ZUludmFsaWQsIHVuc2lnbmVkIHR5cGUgPSAwLCBpbnQg
b3RoZXJWYWx1ZSA9IENTU1ZhbHVlSW52YWxpZCwgIGludCBvdGhlclZhbHVlMiA9IENTU1ZhbHVl
SW52YWxpZCwgIGludCBvdGhlclZhbHVlMyA9IENTU1ZhbHVlSW52YWxpZCwgIGludCBvdGhlclZh
bHVlNCA9IENTU1ZhbHVlSW52YWxpZD4KK2NsYXNzIFZhbHVlT3JSYW5nZU9yVHlwZVByb3BlcnR5
UGFyc2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQs
IENTU1BhcnNlciogcGFyc2VyLCBib29sIGltcG9ydGFudCkKKyAgICB7CisgICAgICAgIENTU1Bh
cnNlclZhbHVlKiB2YWx1ZSA9IHBhcnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKyAgICAg
ICAgaW50IGlkID0gdmFsdWUtPmlkOworICAgICAgICBpZiAoIWlkKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBmYWxzZTsKKyAgICAg
ICAgaWYgKGlkID49IG1pblJhbmdlICYmIGlkIDw9IG1heFJhbmdlKQorICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChpZCA9PSBvdGhlclZhbHVlIHx8
IGlkID09IG90aGVyVmFsdWUyIHx8IGlkID09IG90aGVyVmFsdWUzIHx8IGlkID09IG90aGVyVmFs
dWU0KQorICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOworICAgICAgICBlbHNlIGlm
ICh2YWx1ZS0+dW5pdCA9PSB0eXBlKQorICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OworICAgICAgIGlmICh2YWxpZFByaW1pdGl2ZSkKKyAgICAgICAgICAgcmV0dXJuIHBhcnNlUHJp
bWl0aXZlKHByb3BJZCwgcGFyc2VyLCBpbXBvcnRhbnQpOworCisgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHN0YXRpYyBDU1NQcm9wZXJ0eVBhcnNlciBjcmVhdGVQYXJzZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VyKCZwYXJzZVZhbHVlKTsKKyAg
ICB9CisKK307CisKK3RlbXBsYXRlIDx1bnNpZ25lZCB1bml0RmxhZ3MgPSAwLCBpbnQgb25lID0g
Q1NTVmFsdWVJbnZhbGlkLCBpbnQgdHdvID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgdGhyZWUgPSBD
U1NWYWx1ZUludmFsaWQsIGludCBmb3VyID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZml2ZSA9IENT
U1ZhbHVlSW52YWxpZD4KK2NsYXNzIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXIgeworcHVibGlj
OgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBwYXJz
ZXIsIGJvb2wgaW1wb3J0YW50KQorICAgIHsKKyAgICAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVl
ID0gcGFyc2VyLT5tX3ZhbHVlTGlzdC0+Y3VycmVudCgpOworICAgICAgICBpbnQgaWQgPSB2YWx1
ZS0+aWQ7CisgICAgICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBmYWxzZTsKKyAgICAgICAgaWYg
KGlkICYmIChpZCA9PSBvbmUgfHwgaWQgPT0gdHdvIHx8IGlkID09IHRocmVlIHx8IGlkID09IGZv
dXIgfHwgaWQgPT0gZml2ZSkpCisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gIWlkICYmIHBhcnNlci0+
dmFsaWRVbml0KHZhbHVlLCBzdGF0aWNfY2FzdDxDU1NQYXJzZXI6OlVuaXRzPih1bml0RmxhZ3Mp
LCBwYXJzZXItPm1fc3RyaWN0KTsKKworICAgICAgICBpZiAodmFsaWRQcmltaXRpdmUpCisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VQcmltaXRpdmUocHJvcElkLCBwYXJzZXIsIGltcG9ydGFudCk7
CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyBDU1NQcm9wZXJ0
eVBhcnNlciBjcmVhdGVQYXJzZXIoKQorICAgIHsKKyAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlQ
YXJzZXIoJnBhcnNlVmFsdWUpOworICAgIH0KKworfTsKKwordGVtcGxhdGUgPGludCBvbmUgPSBD
U1NWYWx1ZUludmFsaWQsIGludCB0d28gPSBDU1NWYWx1ZUludmFsaWQsIGludCB0aHJlZSA9IENT
U1ZhbHVlSW52YWxpZCwgaW50IGZvdXIgPSBDU1NWYWx1ZUludmFsaWQsIGludCBmaXZlID0gQ1NT
VmFsdWVJbnZhbGlkLCBpbnQgc2l4ID0gQ1NTVmFsdWVJbnZhbGlkLAorICAgICAgICAgICAgICAg
IGludCBzZXZlbiA9IENTU1ZhbHVlSW52YWxpZCwgaW50IGVpZ2h0ID0gQ1NTVmFsdWVJbnZhbGlk
LCBpbnQgbmluZSA9IENTU1ZhbHVlSW52YWxpZD4KK2NsYXNzIFZhbHVlTWF0Y2hQcm9wZXJ0eVBh
cnNlciB7CitwdWJsaWM6CisgICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Q1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KQorICAgICB7CisgICAgICAgIGludCBp
ZCA9IHBhcnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKS0+aWQ7CisgICAgICAgIGJvb2wgdmFs
aWRQcmltaXRpdmUgPSBpZCAhPSBDU1NWYWx1ZUludmFsaWQgJiYgKGlkID09IG9uZSB8fCBpZCA9
PSB0d28gfHwgaWQgPT0gdGhyZWUgfHwgaWQgPT0gZm91ciB8fCBpZCA9PSBmaXZlIHx8IGlkID09
IHNpeCB8fCBpZCA9PSBzZXZlbiB8fCBpZCA9PSBlaWdodCB8fCBpZCA9PSBuaW5lKTsKKyAgICAg
ICAgaWYgKHZhbGlkUHJpbWl0aXZlKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlUHJpbWl0aXZl
KHByb3BJZCwgcGFyc2VyLCBpbXBvcnRhbnQpOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgfQorICAgICBzdGF0aWMgQ1NTUHJvcGVydHlQYXJzZXIgY3JlYXRlUGFyc2VyKCkKKyAgICAg
eworICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXIoJnBhcnNlVmFsdWUpOworICAgICB9
Cit9OworCit0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBvbmUgPSBDU1NQcm9wZXJ0eUludmFsaWQs
IENTU1Byb3BlcnR5SUQgdHdvID0gQ1NTUHJvcGVydHlJbnZhbGlkPgorY2xhc3MgVHdvVmFsdWVz
U2hvcnRoYW5kUGFyc2VyIHsKK3B1YmxpYzoKKyAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1
ZShpbnQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNlciwgYm9vbCBpbXBvcnRhbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGludCBudW0gPSBwYXJzZXItPm1faW5QYXJzZVNob3J0aGFuZCA/IDEg
OiBwYXJzZXItPm1fdmFsdWVMaXN0LT5zaXplKCk7CisKKyAgICAgICAgICAgIGlmIChudW0gPT0g
MSkgeworICAgICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElk
KTsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFu
dCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBD
U1NWYWx1ZSogdmFsdWUgPSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVt
UGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFk
ZFByb3BlcnR5KHR3bywgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChudW0gPT0gMikgeworICAg
ICAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHBhcnNlciwgcHJvcElkKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFudCkgfHwgIXBh
cnNlci0+cGFyc2VWYWx1ZSh0d28sIGltcG9ydGFudCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgc3RhdGljIENTU1By
b3BlcnR5UGFyc2VyIGNyZWF0ZVBhcnNlcigpCisgICAgeworICAgICAgICByZXR1cm4gQ1NTUHJv
cGVydHlQYXJzZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK307CisKK3RlbXBsYXRlIDxDU1NQcm9w
ZXJ0eUlEIG9uZSA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCB0d28gPSBDU1NQ
cm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQgdGhyZWUgPSBDU1NQcm9wZXJ0eUludmFsaWQs
IENTU1Byb3BlcnR5SUQgZm91ciA9IENTU1Byb3BlcnR5SW52YWxpZD4KK2NsYXNzIEZvdXJWYWx1
ZXNTaG9ydGhhbmRQYXJzZXIgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUo
aW50IHByb3BJZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KQorICAgIHsKKyAg
ICAgICAgLyogRnJvbSB0aGUgQ1NTIDIgc3BlY3MsIDguMworICAgICAgICAqIElmIHRoZXJlIGlz
IG9ubHkgb25lIHZhbHVlLCBpdCBhcHBsaWVzIHRvIGFsbCBzaWRlcy4gSWYgdGhlcmUgYXJlIHR3
byB2YWx1ZXMsIHRoZSB0b3AgYW5kCisgICAgICAgICogYm90dG9tIG1hcmdpbnMgYXJlIHNldCB0
byB0aGUgZmlyc3QgdmFsdWUgYW5kIHRoZSByaWdodCBhbmQgbGVmdCBtYXJnaW5zIGFyZSBzZXQg
dG8gdGhlIHNlY29uZC4KKyAgICAgICAgKiBJZiB0aGVyZSBhcmUgdGhyZWUgdmFsdWVzLCB0aGUg
dG9wIGlzIHNldCB0byB0aGUgZmlyc3QgdmFsdWUsIHRoZSBsZWZ0IGFuZCByaWdodCBhcmUgc2V0
IHRvIHRoZQorICAgICAgICAqIHNlY29uZCwgYW5kIHRoZSBib3R0b20gaXMgc2V0IHRvIHRoZSB0
aGlyZC4gSWYgdGhlcmUgYXJlIGZvdXIgdmFsdWVzLCB0aGV5IGFwcGx5IHRvIHRoZSB0b3AsCisg
ICAgICAgICogcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQsIHJlc3BlY3RpdmVseS4KKyAgICAgICAg
Ki8KKworICAgICAgICBpbnQgbnVtID0gcGFyc2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAxIDog
cGFyc2VyLT5tX3ZhbHVlTGlzdC0+c2l6ZSgpOworCisgICAgICAgIFNob3J0aGFuZFNjb3BlIHNj
b3BlKHBhcnNlciwgcHJvcElkKTsKKworICAgICAgICAvLyBUaGUgb3JkZXIgaXMgdG9wLCByaWdo
dCwgYm90dG9tLCBsZWZ0LgorICAgICAgICBzd2l0Y2ggKG51bSkgeworICAgICAgICBjYXNlIDE6
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFu
dCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBD
U1NWYWx1ZSogdmFsdWUgPSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVt
UGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKKyAgICAgICAgICAgICAgICBJbXBsaWNpdFNj
b3BlIGltcGxpY2l0U2NvcGUocGFyc2VyLCBQcm9wZXJ0eUltcGxpY2l0KTsKKyAgICAgICAgICAg
ICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHR3bywgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAg
ICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0aHJlZSwgdmFsdWUsIGltcG9ydGFudCk7Cisg
ICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShmb3VyLCB2YWx1ZSwgaW1wb3J0YW50
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIDI6IHsK
KyAgICAgICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShvbmUsIGltcG9ydGFudCkg
fHwgIXBhcnNlci0+cGFyc2VWYWx1ZSh0d28sIGltcG9ydGFudCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJz
ZXItPm1fcGFyc2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+
dmFsdWUoKTsKKyAgICAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUocGFy
c2VyLCBQcm9wZXJ0eUltcGxpY2l0KTsKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3Bl
cnR5KHRocmVlLCB2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHBh
cnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzW3BhcnNlci0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJd
LT52YWx1ZSgpOworICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoZm91ciwgdmFs
dWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSAzOiB7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUob25l
LCBpbXBvcnRhbnQpIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUodHdvLCBpbXBvcnRhbnQpIHx8ICFw
YXJzZXItPnBhcnNlVmFsdWUodGhyZWUsIGltcG9ydGFudCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBwYXJzZXIt
Pm1fcGFyc2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFs
dWUoKTsKKyAgICAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUocGFyc2Vy
LCBQcm9wZXJ0eUltcGxpY2l0KTsKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5
KGZvdXIsIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgNDogeworICAgICAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJz
ZVZhbHVlKG9uZSwgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHR3bywgaW1wb3J0
YW50KQorICAgICAgICAgICAgICAgIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUodGhyZWUsIGltcG9y
dGFudCkgfHwgIXBhcnNlci0+cGFyc2VWYWx1ZShmb3VyLCBpbXBvcnRhbnQpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgQ1NTUHJv
cGVydHlQYXJzZXIgY3JlYXRlUGFyc2VyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBDU1NQcm9w
ZXJ0eVBhcnNlcigmcGFyc2VWYWx1ZSk7CisgICAgfQorfTsKKworCit0ZW1wbGF0ZSA8dW5zaWdu
ZWQgbnVtUHJvcGVydGllcywgQ1NTUHJvcGVydHlJRCBvbmUgPSBDU1NQcm9wZXJ0eUludmFsaWQs
IENTU1Byb3BlcnR5SUQgdHdvID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHRo
cmVlID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIGZvdXIgPSBDU1NQcm9wZXJ0
eUludmFsaWQsIENTU1Byb3BlcnR5SUQgZml2ZSA9IENTU1Byb3BlcnR5SW52YWxpZD4KK2NsYXNz
IEdlbmVyaWNTaG9ydGhhbmRQYXJzZXIgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBhcnNl
VmFsdWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KQorICAg
IHsKKyAgICAgICAgeworICAgICAgICAvLyBXZSB0cnkgdG8gbWF0Y2ggYXMgbWFueSBwcm9wZXJ0
aWVzIGFzIHBvc3NpYmxlCisgICAgICAgIC8vIFdlIHNldCB1cCBhbiBhcnJheSBvZiBib29sZWFu
cyB0byBtYXJrIHdoaWNoIHByb3BlcnR5IGhhcyBiZWVuIGZvdW5kLAorICAgICAgICAvLyBhbmQg
d2UgdHJ5IHRvIHNlYXJjaCBmb3IgcHJvcGVydGllcyB1bnRpbCBpdCBtYWtlcyBubyBsb25nZXIg
YW55IHNlbnNlLgorICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZShwYXJzZXIsIHByb3BJZCk7
CisKKyAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgICAgICBib29sIGZuZFs2XTsgLy8g
VHJ1c3QgbWUgOykKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVByb3BlcnRp
ZXM7IGkrKykKKyAgICAgICAgZm5kW2ldID0gZmFsc2U7CisKKyAgICAgICAgd2hpbGUgKHBhcnNl
ci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgeworICAgICAgICAgICAgZm91bmQgPSBmYWxzZTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJvcEluZGV4ID0gMDsgIWZvdW5kICYmIHByb3BJ
bmRleCA8IG51bVByb3BlcnRpZXM7ICsrcHJvcEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWZu
ZFtwcm9wSW5kZXhdKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlci0+cGFyc2VWYWx1ZShw
cm9wZXJ0aWVzW3Byb3BJbmRleF0sIGltcG9ydGFudCkpCisgICAgICAgICAgICAgICAgZm5kW3By
b3BJbmRleF0gPSBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gsIHRoaXMgaXMgYW4K
KyAgICAgICAgLy8gaW52YWxpZCBzaG9ydGhhbmQgYW5kIHdlIGhhdmUgdG8gaWdub3JlIGl0Lgor
ICAgICAgICBpZiAoIWZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgLy8gRmlsbCBpbiBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUg
aW5pdGlhbCB2YWx1ZS4KKyAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBhcnNl
ciwgUHJvcGVydHlJbXBsaWNpdCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1Qcm9wZXJ0aWVzOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghZm5kW2ldKQorICAgICAgICAg
ICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkocHJvcGVydGllc1tpXSwgcGFyc2VyLT5jc3NWYWx1
ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FIDogbm90IHZlcnkgZ2VuZXJp
YyBoZXJlLgorICAgICAgICBpZiAocHJvcElkID09IENTU1Byb3BlcnR5Qm9yZGVyKSB7CisgICAg
ICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0aW9u
IHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCisgICAg
ICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRoZSBp
bWFnZS4KKyAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZSwgcGFyc2VyLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUo
KSwgaW1wb3J0YW50KTsKKyAgICAgICAgfQorCisgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgc3RhdGljIENTU1Byb3BlcnR5UGFyc2VyIGNyZWF0ZVBhcnNlcigpCisgICAgeworICAgICAg
ICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK3ByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVdOworfTsKK3RlbXBsYXRlIDx1bnNp
Z25lZCBudW1Qcm9wZXJ0aWVzLCBDU1NQcm9wZXJ0eUlEIG9uZSwgQ1NTUHJvcGVydHlJRCB0d28g
LCBDU1NQcm9wZXJ0eUlEIHRocmVlICwgQ1NTUHJvcGVydHlJRCBmb3VyLCBDU1NQcm9wZXJ0eUlE
IGZpdmU+Citjb25zdCBpbnQgR2VuZXJpY1Nob3J0aGFuZFBhcnNlcjxudW1Qcm9wZXJ0aWVzLCBv
bmUsIHR3bywgdGhyZWUsIGZvdXIsIGZpdmU+Ojpwcm9wZXJ0aWVzWzVdID0gIHsgb25lLCB0d28s
IHRocmVlLCBmb3VyLCBmaXZlIH07CisKK2NsYXNzIENTU1BhcnNlclByb3BlcnR5QXJyYXkgewor
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUGFyc2VyUHJvcGVydHlBcnJheSk7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0IENTU1BhcnNlclByb3BlcnR5QXJyYXkmIHNoYXJlZENTU1BhcnNlclBy
b3BlcnR5QXJyYXkoKQorICAgIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQYXJz
ZXJQcm9wZXJ0eUFycmF5LCBjc3NQYXJzZXJQcm9wZXJ0eUFycmF5SW5zdGFuY2UsICgpKTsKKyAg
ICAgICAgcmV0dXJuIGNzc1BhcnNlclByb3BlcnR5QXJyYXlJbnN0YW5jZTsKKyAgICB9CisKKyAg
ICBjb25zdCBDU1NQcm9wZXJ0eVBhcnNlciBwcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkKHByb3BlcnR5KSk7Cisg
ICAgICAgIHJldHVybiBtX3Byb3BlcnR5UGFyc2VyQXJyYXlbaW5kZXgocHJvcGVydHkpXTsKKyAg
ICB9CisgcHJpdmF0ZToKKyAgICBDU1NQYXJzZXJQcm9wZXJ0eUFycmF5KCkKKyAgICB7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQorICAgICAgICAg
ICAgbV9wcm9wZXJ0eVBhcnNlckFycmF5W2ldID0gQ1NTUHJvcGVydHlQYXJzZXIoKTsKKworICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eUJvcmRlciwgR2VuZXJpY1Nob3J0aGFu
ZFBhcnNlcjwzLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxl
LCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQ
cm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgR2VuZXJpY1Nob3J0aGFuZFBh
cnNlcjwzLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yPjo6Y3JlYXRlUGFyc2VyKCkp
OworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRo
LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyks
IENTU1ZhbHVlVGhpbiwgQ1NTVmFsdWVNZWRpdW0sIENTU1ZhbHVlVGhpY2s+OjpjcmVhdGVQYXJz
ZXIoKSk7IC8vIHRoaW4gfCBtZWRpdW0gfCB0aGljayB8IDxsZW5ndGg+IHwgaW5oZXJpdAorICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlLCBWYWx1ZU1h
dGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVDb2xsYXBzZSwgQ1NTVmFsdWVTZXBhcmF0ZT46OmNy
ZWF0ZVBhcnNlcigpKTsgLy8gY29sbGFwc2UgfCBzZXBhcmF0ZSB8IGluaGVyaXQKKyAgICAgICAg
c2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgRm91clZhbHVlc1Nob3J0
aGFuZFBhcnNlcjxDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdENvbG9yPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eUJvcmRlckxlZnQsIEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8MywgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQ
YXJzZXIoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJz
ZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKSwgQ1NTVmFsdWVUaGluLCBDU1NWYWx1ZU1l
ZGl1bSwgQ1NTVmFsdWVUaGljaz46OmNyZWF0ZVBhcnNlcigpKTsgLy8gdGhpbiB8IG1lZGl1bSB8
IHRoaWNrIHwgPGxlbmd0aD4gfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHQsIEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8MywgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVy
dHlQYXJzZXIoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBWYWx1ZU9yVW5pdFByb3BlcnR5
UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlVGhpbiwgQ1NTVmFs
dWVNZWRpdW0sIENTU1ZhbHVlVGhpY2s+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIHRoaW4gfCBtZWRp
dW0gfCB0aGljayB8IDxsZW5ndGg+IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNl
cihDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsIFR3b1ZhbHVlc1Nob3J0aGFuZFBhcnNlcjxDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclZlcnRpY2FsU3BhY2luZz46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVy
dHlQYXJzZXIoQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgRm91clZhbHVlc1Nob3J0aGFuZFBhcnNl
cjxDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxl
Pjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0
eUJvcmRlclRvcCwgR2VuZXJpY1Nob3J0aGFuZFBhcnNlcjwzLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eUJvcmRlclRvcFdpZHRoLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0
PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENT
U1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlVGhpbiwgQ1NTVmFsdWVNZWRpdW0sIENTU1ZhbHVl
VGhpY2s+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIHRoaW4gfCBtZWRpdW0gfCB0aGljayB8IDxsZW5n
dGg+IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eUJvcmRl
cldpZHRoLCBGb3VyVmFsdWVzU2hvcnRoYW5kUGFyc2VyPENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21X
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAg
ICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5Qm90dG9tLCBWYWx1ZU9yVW5pdFByb3Bl
cnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpLCBDU1NWYWx1ZUF1dG8+Ojpj
cmVhdGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVy
aXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlCb3hTaXppbmcsIFZhbHVl
TWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUJvcmRlckJveCwgQ1NTVmFsdWVDb250ZW50Qm94
Pjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0
eUNhcHRpb25TaWRlLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVMZWZ0LCBDU1NW
YWx1ZVJpZ2h0LCBDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20+OjpjcmVhdGVQYXJzZXIoKSk7
IC8vIHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJv
cGVydHlQYXJzZXIoQ1NTUHJvcGVydHlDbGVhciwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENT
U1ZhbHVlTm9uZSwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZUJvdGg+Ojpj
cmVhdGVQYXJzZXIoKSk7IC8vIG5vbmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwgaW5oZXJpdAor
ICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eURpcmVjdGlvbiwgVmFsdWVNYXRj
aFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTHRyLCBDU1NWYWx1ZVJ0bD46OmNyZWF0ZVBhcnNlcigp
KTsKKyAgICAgICAgLy8gaW5saW5lIHwgYmxvY2sgfCBsaXN0LWl0ZW0gfCBydW4taW4gfCBpbmxp
bmUtYmxvY2sgfCB0YWJsZSB8CisgICAgICAgIC8vIGlubGluZS10YWJsZSB8IHRhYmxlLXJvdy1n
cm91cCB8IHRhYmxlLWhlYWRlci1ncm91cCB8IHRhYmxlLWZvb3Rlci1ncm91cCB8IHRhYmxlLXJv
dyB8CisgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxl
LWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3gg
fCBub25lIHwgaW5oZXJpdAorICAgICAgICAvLyAtd2Via2l0LWZsZXhib3ggfCAtd2Via2l0LWlu
bGluZS1mbGV4Ym94IHwgLXdlYmtpdC1ncmlkIHwgLXdlYmtpdC1pbmxpbmUtZ3JpZAorICAgICAg
ICAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlEaXNwbGF5LCBWYWx1ZU9yUmFuZ2VPclR5cGVQcm9wZXJ0eVBhcnNlcjxDU1NW
YWx1ZUlubGluZSwgQ1NTVmFsdWVXZWJraXRJbmxpbmVGbGV4Ym94LCAwLCBDU1NWYWx1ZU5vbmUs
IENTU1ZhbHVlV2Via2l0R3JpZCwgQ1NTVmFsdWVXZWJraXRJbmxpbmVHcmlkPjo6Y3JlYXRlUGFy
c2VyKCkpOworICAgICAgICAjZWxzZQorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eURpc3BsYXksIFZhbHVlT3JSYW5nZU9yVHlwZVByb3BlcnR5UGFyc2VyPENTU1ZhbHVlSW5s
aW5lLCBDU1NWYWx1ZVdlYmtpdElubGluZUZsZXhib3gsIDAsIENTU1ZhbHVlTm9uZT46OmNyZWF0
ZVBhcnNlcigpKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENT
U1Byb3BlcnR5RW1wdHlDZWxscywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlU2hv
dywgQ1NTVmFsdWVIaWRlPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBzaG93IHwgaGlkZSB8IGluaGVy
aXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlGbG9hdCwgVmFsdWVNYXRj
aFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVOb25l
LCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVXZWJraXRQb3NpdGlvbmVkPjo6Y3JlYXRlUGFyc2Vy
KCkpOyAvLyBsZWZ0IHwgcmlnaHQgfCBub25lIHwgcG9zaXRpb25lZCB8IGNlbnRlciAoZm9yIGJ1
Z2d5IENTUywgbWFwcyB0byBub25lKQorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eUltYWdlUmVuZGVyaW5nLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVBdXRv
LCBDU1NWYWx1ZVdlYmtpdE9wdGltaXplQ29udHJhc3Q+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGF1
dG8gfCBvcHRpbWl6ZUNvbnRyYXN0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3Bl
cnR5TGVmdCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQ
ZXJjZW50KSwgQ1NTVmFsdWVBdXRvPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8IDxw
ZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENT
U1Byb3BlcnR5TGV0dGVyU3BhY2luZywgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxDU1NQYXJz
ZXI6OkZMZW5ndGgsIENTU1ZhbHVlTm9ybWFsPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBub3JtYWwg
fCA8bGVuZ3RoPiB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVy
dHlMaW5lSGVpZ2h0LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2ln
bmVkPihDU1NQYXJzZXI6OkZOdW1iZXIpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNl
cjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCkg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKSwgQ1NTVmFsdWVOb3Jt
YWw+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIG5vcm1hbCB8IDxudW1iZXI+IHwgPGxlbmd0aD4gfCA8
cGVyY2VudGFnZT4gfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3Bl
cnR5TGlzdFN0eWxlLCBHZW5lcmljU2hvcnRoYW5kUGFyc2VyPDMsIENTU1Byb3BlcnR5TGlzdFN0
eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwgQ1NTUHJvcGVydHlMaXN0U3R5
bGVJbWFnZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NT
UHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1Zh
bHVlSW5zaWRlLCBDU1NWYWx1ZU91dHNpZGU+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGluc2lkZSB8
IG91dHNpZGUgfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5
TGlzdFN0eWxlVHlwZSwgVmFsdWVPclJhbmdlT3JUeXBlUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVE
aXNjLCBDU1NWYWx1ZUthdGFrYW5hSXJvaGEsIDAsIENTU1ZhbHVlTm9uZT46OmNyZWF0ZVBhcnNl
cigpKTsgLy8gU2VlIHNlY3Rpb24gQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFIG9mIGZpbGUgQ1NT
VmFsdWVLZXl3b3Jkcy5pbiBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpc3Qtc3R5bGUtdHlw
ZXMuCisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5TWFyZ2luLCBGb3VyVmFs
dWVzU2hvcnRoYW5kUGFyc2VyPENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0LCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0Pjo6
Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU1h
cmdpbkJvdHRvbSwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6
OkZQZXJjZW50KSwgQ1NTVmFsdWVBdXRvPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8
IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2Vy
KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihDU1NQYXJzZXI6OkZQZXJjZW50KSwgQ1NTVmFsdWVBdXRvPjo6Y3JlYXRlUGFyc2VyKCkpOyAv
LyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0CisgICAgICAgIHNldFBy
b3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIFZhbHVlT3JVbml0UHJvcGVydHlQ
YXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCksIENTU1ZhbHVlQXV0bz46OmNyZWF0
ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJpdAor
ICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU1hcmdpblRvcCwgVmFsdWVPclVu
aXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3Ro
KSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSwgQ1NTVmFsdWVB
dXRvPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8g
fCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5TWF4SGVpZ2h0
LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQp
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlTm9u
ZSwgQ1NTVmFsdWVJbnRyaW5zaWMsIENTU1ZhbHVlTWluSW50cmluc2ljPjo6Y3JlYXRlUGFyc2Vy
KCkpOyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IG5vbmUgfCBpbmhlcml0CisgICAgICAg
IHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5TWF4V2lkdGgsIFZhbHVlT3JVbml0UHJvcGVy
dHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUludHJpbnNp
YywgQ1NTVmFsdWVNaW5JbnRyaW5zaWM+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwg
PHBlcmNlbnRhZ2U+IHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlNaW5IZWlnaHQsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
Tm9uTmVnKSwgQ1NTVmFsdWVJbnRyaW5zaWMsIENTU1ZhbHVlTWluSW50cmluc2ljPjo6Y3JlYXRl
UGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQKKyAgICAgICAg
c2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlNaW5XaWR0aCwgVmFsdWVPclVuaXRQcm9wZXJ0
eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihDU1NQYXJzZXI6OkZOb25OZWcpLCBDU1NWYWx1ZUludHJpbnNpYywgQ1NTVmFsdWVNaW5J
bnRyaW5zaWM+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwg
aW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU9wYWNpdHksIFZh
bHVlT3JVbml0UHJvcGVydHlQYXJzZXI8Q1NTUGFyc2VyOjpGTnVtYmVyPjo6Y3JlYXRlUGFyc2Vy
KCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU91dGxpbmUsIEdlbmVy
aWNTaG9ydGhhbmRQYXJzZXI8MywgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIENTU1Byb3BlcnR5
T3V0bGluZVN0eWxlLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsK
KyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0LCBWYWx1
ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZM
ZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpPjo6Y3Jl
YXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU91dGxp
bmVTdHlsZSwgVmFsdWVPclJhbmdlT3JUeXBlUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVJbnNldCwg
Q1NTVmFsdWVEb3VibGUsIDAsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb25lPjo6Y3JlYXRlUGFy
c2VyKCkpOyAvLyAoPGJvcmRlci1zdHlsZT4gZXhjZXB0IGhpZGRlbikgfCBhdXRvIHwgaW5oZXJp
dAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgVmFs
dWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
TGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpLCBDU1NW
YWx1ZVRoaW4sIENTU1ZhbHVlTWVkaXVtLCBDU1NWYWx1ZVRoaWNrPjo6Y3JlYXRlUGFyc2VyKCkp
OyAvLyA8Ym9yZGVyLXdpZHRoPiB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlPdmVyZmxvd1gsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZVZp
c2libGUsIENTU1ZhbHVlSGlkZGVuLCBDU1NWYWx1ZVNjcm9sbCwgQ1NTVmFsdWVBdXRvLCBDU1NW
YWx1ZU92ZXJsYXksIENTU1ZhbHVlV2Via2l0TWFycXVlZT46OmNyZWF0ZVBhcnNlcigpKTsgLy8g
dmlzaWJsZSB8IGhpZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBtYXJxdWVlIHwgb3ZlcmxheSB8IGlu
aGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIFZh
bHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuLCBD
U1NWYWx1ZVNjcm9sbCwgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU92ZXJsYXksIENTU1ZhbHVlV2Vi
a2l0TWFycXVlZT46OmNyZWF0ZVBhcnNlcigpKTsgLy8gdmlzaWJsZSB8IGhpZGRlbiB8IHNjcm9s
bCB8IGF1dG8gfCBtYXJxdWVlIHwgb3ZlcmxheSB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVy
dHlQYXJzZXIoQ1NTUHJvcGVydHlQYWRkaW5nLCBGb3VyVmFsdWVzU2hvcnRoYW5kUGFyc2VyPENT
U1Byb3BlcnR5UGFkZGluZ1RvcCwgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIENTU1Byb3BlcnR5
UGFkZGluZ0JvdHRvbSwgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdD46OmNyZWF0ZVBhcnNlcigpKTsK
KyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBWYWx1
ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZM
ZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyk+OjpjcmVhdGVQYXJzZXIoKSk7
IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENT
U1Byb3BlcnR5UGFkZGluZ0xlZnQsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
Tm9uTmVnKT46OmNyZWF0ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4KKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIFZhbHVlT3JV
bml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0
aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKT46OmNyZWF0ZVBhcnNlcigpKTsgLy8g
PGxlbmd0aD4gfCA8cGVyY2VudGFnZT4KKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJv
cGVydHlQYWRkaW5nVG9wLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVu
c2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1Bh
cnNlcjo6RlBlcmNlbnQpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5l
Zyk+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+CisgICAgICAg
IHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXIsIFZhbHVlTWF0Y2hQ
cm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlQWx3YXlzLCBDU1NWYWx1ZUF2b2lk
LCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGF1dG8g
fCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJv
cGVydHlQYXJzZXIoQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsIFZhbHVlTWF0Y2hQcm9wZXJ0
eVBhcnNlcjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlQWx3YXlzLCBDU1NWYWx1ZUF2b2lkLCBDU1NW
YWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGF1dG8gfCBhbHdh
eXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQ
YXJzZXIoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNl
cjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlQXZvaWQ+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGF2b2lk
IHwgYXV0byB8IGluaGVyaXQKKyAgICAgICAgLy8gbm9uZSB8IHZpc2libGVQYWludGVkIHwgdmlz
aWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwgdmlzaWJsZSB8CisgICAgICAgIC8vIHBhaW50ZWQg
fCBmaWxsIHwgc3Ryb2tlIHwgYXV0byB8IGFsbCB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVy
dHlQYXJzZXIoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBWYWx1ZU9yUmFuZ2VPclR5cGVQcm9w
ZXJ0eVBhcnNlcjxDU1NWYWx1ZVZpc2libGVwYWludGVkLCBDU1NWYWx1ZVN0cm9rZSwgMCwgQ1NT
VmFsdWVWaXNpYmxlLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQWxsLCBDU1NWYWx1ZUF1dG8+Ojpj
cmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5UG9z
aXRpb24sIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZVN0YXRpYywgQ1NTVmFsdWVS
ZWxhdGl2ZSwgQ1NTVmFsdWVBYnNvbHV0ZSwgQ1NTVmFsdWVGaXhlZD46OmNyZWF0ZVBhcnNlcigp
KTsgLy8gc3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgaW5oZXJpdAorICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVJlc2l6ZSwgVmFsdWVNYXRjaFByb3Bl
cnR5UGFyc2VyPENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVCb3RoLCBDU1NWYWx1ZUhvcml6b250YWws
IENTU1ZhbHVlVmVydGljYWwsIENTU1ZhbHVlQXV0bz46OmNyZWF0ZVBhcnNlcigpKTsgLy8gbm9u
ZSB8IGJvdGggfCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBhdXRvCisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5UmlnaHQsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCksIENTU1ZhbHVlQXV0bz46OmNyZWF0ZVBhcnNlcigp
KTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJpdAorICAgICAgICBz
ZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVNwZWFrLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJz
ZXI8Q1NTVmFsdWVOb25lLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTcGVsbE91dCwgQ1NTVmFs
dWVEaWdpdHMsIENTU1ZhbHVlTGl0ZXJhbFB1bmN0dWF0aW9uLCBDU1NWYWx1ZU5vUHVuY3R1YXRp
b24+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIG5vbmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdp
dHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24gfCBpbmhlcml0CisgICAg
ICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5VGFibGVMYXlvdXQsIFZhbHVlTWF0Y2hQ
cm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlRml4ZWQ+OjpjcmVhdGVQYXJzZXIo
KSk7IC8vIGF1dG8gfCBmaXhlZCB8IGluaGVyaXQKKyAgICAgICAgLy8gbGVmdCB8IHJpZ2h0IHwg
Y2VudGVyIHwganVzdGlmeSB8IHdlYmtpdF9sZWZ0IHwgd2Via2l0X3JpZ2h0IHwgd2Via2l0X2Nl
bnRlciB8IHdlYmtpdF9tYXRjaF9wYXJlbnQgfAorICAgICAgICAvLyBzdGFydCB8IGVuZCB8IDxz
dHJpbmc+IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVRl
eHRBbGlnbiwgVmFsdWVPclJhbmdlT3JUeXBlUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVXZWJraXRB
dXRvLCBDU1NWYWx1ZVdlYmtpdE1hdGNoUGFyZW50LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NU
UklORywgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQ+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAg
ICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5VGV4dEluZGVudCwgVmFsdWVPclVuaXRQ
cm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KT46OmNyZWF0ZVBhcnNl
cigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CisgICAgICAgIHNldFBy
b3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZSwgVmFsdWVNYXRjaFBy
b3BlcnR5UGFyc2VyPENTU1ZhbHVlQ29udGludW91cywgQ1NTVmFsdWVTa2lwV2hpdGVTcGFjZT46
OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlU
ZXh0TGluZVRocm91Z2hTdHlsZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTm9u
ZSwgQ1NTVmFsdWVTb2xpZCwgQ1NTVmFsdWVEb3VibGUsIENTU1ZhbHVlRGFzaGVkLCBDU1NWYWx1
ZURvdERhc2gsIENTU1ZhbHVlRG90RG90RGFzaCwgQ1NTVmFsdWVXYXZlPjo6Y3JlYXRlUGFyc2Vy
KCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3Vn
aFdpZHRoLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihD
U1NQYXJzZXI6OkZOdW1iZXIpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxl
bmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCksIENTU1Zh
bHVlQXV0bywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlVGhpbiwgQ1NTVmFsdWVNZWRpdW0sIENT
U1ZhbHVlVGhpY2s+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2Vy
KENTU1Byb3BlcnR5VGV4dE92ZXJmbG93LCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFs
dWVDbGlwLCBDU1NWYWx1ZUVsbGlwc2lzPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBjbGlwIHwgZWxs
aXBzaXMKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVN
b2RlLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVDb250aW51b3VzLCBDU1NWYWx1
ZVNraXBXaGl0ZVNwYWNlPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBh
cnNlcihDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJz
ZXI8Q1NTVmFsdWVOb25lLCBDU1NWYWx1ZVNvbGlkLCBDU1NWYWx1ZURvdWJsZSwgQ1NTVmFsdWVE
YXNoZWQsIENTU1ZhbHVlRG90RGFzaCwgQ1NTVmFsdWVEb3REb3REYXNoLCBDU1NWYWx1ZVdhdmU+
OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lV2lkdGgsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk51bWJlcikgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NT
UGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJj
ZW50KSwgQ1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVUaGluLCBDU1NWYWx1
ZU1lZGl1bSwgQ1NTVmFsdWVUaGljaz46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJv
cGVydHlQYXJzZXIoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZSwgVmFsdWVNYXRjaFByb3Bl
cnR5UGFyc2VyPENTU1ZhbHVlQ29udGludW91cywgQ1NTVmFsdWVTa2lwV2hpdGVTcGFjZT46OmNy
ZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlUZXh0
VW5kZXJsaW5lU3R5bGUsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZU5vbmUsIENT
U1ZhbHVlU29saWQsIENTU1ZhbHVlRG91YmxlLCBDU1NWYWx1ZURhc2hlZCwgQ1NTVmFsdWVEb3RE
YXNoLCBDU1NWYWx1ZURvdERvdERhc2gsIENTU1ZhbHVlV2F2ZT46OmNyZWF0ZVBhcnNlcigpKTsK
KyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgs
IFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNl
cjo6Rk51bWJlcikgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSwgQ1NTVmFsdWVBdXRv
LCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVUaGluLCBDU1NWYWx1ZU1lZGl1bSwgQ1NTVmFsdWVU
aGljaz46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJv
cGVydHlUZXh0UmVuZGVyaW5nLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVBdXRv
LCBDU1NWYWx1ZU9wdGltaXplc3BlZWQsIENTU1ZhbHVlT3B0aW1pemVsZWdpYmlsaXR5LCBDU1NW
YWx1ZUdlb21ldHJpY3ByZWNpc2lvbj46OmNyZWF0ZVBhcnNlcigpKTsgLy8gYXV0byB8IG9wdGlt
aXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBnZW9tZXRyaWNQcmVjaXNpb24KKyAgICAg
ICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlUb3AsIFZhbHVlT3JVbml0UHJvcGVydHlQ
YXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCksIENTU1ZhbHVlQXV0bz46OmNyZWF0
ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJpdAor
ICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBWYWx1ZU1h
dGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlRW1iZWQsIENTU1ZhbHVl
QmlkaU92ZXJyaWRlLCBDU1NWYWx1ZVdlYmtpdElzb2xhdGUsIENTU1ZhbHVlV2Via2l0UGxhaW50
ZXh0Pjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBub3JtYWwgfCBlbWJlZCB8IGJpZGktb3ZlcnJpZGUg
fCBpc29sYXRlIHwgcGxhaW50ZXh0IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNl
cihDU1NQcm9wZXJ0eVZpc2liaWxpdHksIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1
ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuLCBDU1NWYWx1ZUNvbGxhcHNlPjo6Y3JlYXRlUGFyc2Vy
KCkpOyAvLyB2aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFwc2UgfCBpbmhlcml0CisgICAgICAgIHNl
dFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgVmFsdWVNYXRjaFByb3BlcnR5
UGFyc2VyPENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVByZSwgQ1NTVmFsdWVQcmVXcmFwLCBDU1NW
YWx1ZVByZUxpbmUsIENTU1ZhbHVlTm93cmFwPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBub3JtYWwg
fCBwcmUgfCBub3dyYXAgfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1By
b3BlcnR5V29yZEJyZWFrLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVOb3JtYWws
IENTU1ZhbHVlQnJlYWtBbGwsIENTU1ZhbHVlQnJlYWtXb3JkPjo6Y3JlYXRlUGFyc2VyKCkpOyAv
LyBub3JtYWwgfCBicmVhay1hbGwgfCBicmVhay13b3JkICh0aGlzIGlzIGEgY3VzdG9tIGV4dGVu
c2lvbikKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywg
VmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxDU1NQYXJzZXI6OkZMZW5ndGgsIENTU1ZhbHVlTm9y
bWFsPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBub3JtYWwgfCA8bGVuZ3RoPiB8IGluaGVyaXQKKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXb3JkV3JhcCwgVmFsdWVNYXRjaFBy
b3BlcnR5UGFyc2VyPENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUJyZWFrV29yZD46OmNyZWF0ZVBh
cnNlcigpKTsgLy8gbm9ybWFsIHwgYnJlYWstd29yZAorCisgICAgICAgIHNldFByb3BlcnR5UGFy
c2VyKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgVmFsdWVPclJhbmdlT3JUeXBlUHJvcGVy
dHlQYXJzZXI8Q1NTVmFsdWVDaGVja2JveCwgQ1NTVmFsdWVUZXh0YXJlYSwgMCwgQ1NTVmFsdWVO
b25lPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENT
U1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVIaWRkZW4+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAg
IHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXIsIEdlbmVyaWNT
aG9ydGhhbmRQYXJzZXI8MywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXJDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2Vy
PHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlVGhpbiwgQ1NTVmFsdWVNZWRp
dW0sIENTU1ZhbHVlVGhpY2s+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIHRoaW4gfCBtZWRpdW0gfCB0
aGljayB8IDxsZW5ndGg+IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZSwgR2VuZXJpY1Nob3J0aGFuZFBhcnNlcjwzLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yPjo6Y3JlYXRlUGFy
c2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZVdpZHRoLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2ln
bmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNl
cjo6Rk5vbk5lZyksIENTU1ZhbHVlVGhpbiwgQ1NTVmFsdWVNZWRpdW0sIENTU1ZhbHVlVGhpY2s+
OjpjcmVhdGVQYXJzZXIoKSk7IC8vIHRoaW4gfCBtZWRpdW0gfCB0aGljayB8IDxsZW5ndGg+IHwg
aW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckVuZCwgR2VuZXJpY1Nob3J0aGFuZFBhcnNlcjwzLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVu
ZFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckVuZENvbG9yPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBh
cnNlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoLCBWYWx1ZU9yVW5pdFByb3BlcnR5
UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlVGhpbiwgQ1NTVmFs
dWVNZWRpdW0sIENTU1ZhbHVlVGhpY2s+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIHRoaW4gfCBtZWRp
dW0gfCB0aGljayB8IDxsZW5ndGg+IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNl
cihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdCwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENT
U1ZhbHVlQm9yZGVyLCBDU1NWYWx1ZUxpbmVzPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBz
ZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5n
LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyk+
OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyU3RhcnQsIEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8MywgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUs
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRo
LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyks
IENTU1ZhbHVlVGhpbiwgQ1NTVmFsdWVNZWRpdW0sIENTU1ZhbHVlVGhpY2s+OjpjcmVhdGVQYXJz
ZXIoKSk7IC8vIHRoaW4gfCBtZWRpdW0gfCB0aGljayB8IDxsZW5ndGg+IHwgaW5oZXJpdAorICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3Bh
Y2luZywgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NT
UGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25O
ZWcpPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eVdlYmtpdEJveEFsaWduLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVTdHJl
dGNoLCBDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVl
QmFzZWxpbmU+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENT
U1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NT
VmFsdWVOb3JtYWwsIENTU1ZhbHVlUmV2ZXJzZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAg
c2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4LCBWYWx1ZU9yVW5pdFBy
b3BlcnR5UGFyc2VyPENTU1BhcnNlcjo6Rk51bWJlcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAg
ICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcywgVmFsdWVNYXRj
aFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlU2luZ2xlLCBDU1NWYWx1ZU11bHRpcGxlPjo6Y3JlYXRl
UGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEJv
eE9yaWVudCwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlSG9yaXpvbnRhbCwgQ1NT
VmFsdWVWZXJ0aWNhbCwgQ1NTVmFsdWVJbmxpbmVBeGlzLCBDU1NWYWx1ZUJsb2NrQXhpcz46OmNy
ZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJr
aXRCb3hQYWNrLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVTdGFydCwgQ1NTVmFs
dWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUp1c3RpZnk+OjpjcmVhdGVQYXJzZXIoKSk7
CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0
aW9uLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVTcmdiLCBDU1NWYWx1ZURlZmF1
bHQ+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uQXhpcywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlSG9y
aXpvbnRhbCwgQ1NTVmFsdWVWZXJ0aWNhbCwgQ1NTVmFsdWVBdXRvPjo6Y3JlYXRlUGFyc2VyKCkp
OworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFr
QWZ0ZXIsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlQWx3
YXlzLCBDU1NWYWx1ZUF2b2lkLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+OjpjcmVhdGVQ
YXJzZXIoKSk7IC8vIGF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IGluaGVy
aXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVh
a0JlZm9yZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVB
bHdheXMsIENTU1ZhbHVlQXZvaWQsIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD46OmNyZWF0
ZVBhcnNlcigpKTsgLy8gYXV0byB8IGFsd2F5cyB8IGF2b2lkIHwgbGVmdCB8IHJpZ2h0IHwgaW5o
ZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJy
ZWFrSW5zaWRlLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1
ZUF2b2lkPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBhdm9pZCB8IGF1dG8gfCBpbmhlcml0CisgICAg
ICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQsIFZhbHVl
T3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rklu
dGVnZXIpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1Zh
bHVlQXV0bz46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5HYXAsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKSwgQ1NTVmFsdWVOb3JtYWw+OjpjcmVhdGVQYXJzZXIoKSk7
IC8vIG5vcm1hbCB8IDxsZW5ndGg+CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uUnVsZSwgR2VuZXJpY1Nob3J0aGFuZFBhcnNlcjwzLCBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUs
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yPjo6Y3JlYXRlUGFyc2VyKCkpOworICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwg
VmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2Vy
OjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpLCBD
U1NWYWx1ZVRoaW4sIENTU1ZhbHVlTWVkaXVtLCBDU1NWYWx1ZVRoaWNrPjo6Y3JlYXRlUGFyc2Vy
KCkpOyAvLyB0aGluIHwgbWVkaXVtIHwgdGhpY2sgfCA8bGVuZ3RoPiB8IGluaGVyaXQKKyAgICAg
ICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zLCBHZW5lcmljU2hv
cnRoYW5kUGFyc2VyPDIsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQ291bnQ+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5
UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0RmxleEFsaWduLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJz
ZXI8Q1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUJh
c2VsaW5lLCBDU1NWYWx1ZVN0cmV0Y2g+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFBy
b3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgVmFsdWVNYXRjaFBy
b3BlcnR5UGFyc2VyPENTU1ZhbHVlUm93LCBDU1NWYWx1ZVJvd1JldmVyc2UsIENTU1ZhbHVlQ29s
dW1uLCBDU1NWYWx1ZUNvbHVtblJldmVyc2U+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNl
dFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3csIEdlbmVyaWNTaG9ydGhh
bmRQYXJzZXI8MiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdl
YmtpdEZsZXhXcmFwPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNl
cihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ24sIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNl
cjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRl
ciwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVTdHJldGNoPjo6Y3JlYXRlUGFyc2VyKCkpOwor
ICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhQYWNrLCBWYWx1
ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVl
Q2VudGVyLCBDU1NWYWx1ZUp1c3RpZnksIENTU1ZhbHVlRGlzdHJpYnV0ZT46OmNyZWF0ZVBhcnNl
cigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRGbGV4V3Jh
cCwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTm93cmFwLCBDU1NWYWx1ZVdyYXAs
IENTU1ZhbHVlV3JhcFJldmVyc2U+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmcsIFZhbHVlTWF0Y2hQcm9wZXJ0
eVBhcnNlcjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZU5vbmU+OjpjcmVh
dGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0
Rm9udFNpemVEZWx0YSwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxDU1NQYXJzZXI6OkZMZW5n
dGg+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3Bl
cnR5V2Via2l0Rm9udFNtb290aGluZywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVl
QXV0bywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUFudGlhbGlhc2VkLCBDU1NWYWx1ZVN1YnBpeGVs
QW50aWFsaWFzZWQ+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2Vy
KENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0LCBWYWx1ZU9yUmFuZ2VPclR5cGVQcm9wZXJ0eVBh
cnNlcjxDU1NWYWx1ZUludmFsaWQsIENTU1ZhbHVlSW52YWxpZCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TVFJJTkcsIENTU1ZhbHVlTm9uZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0
UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIsIFZhbHVl
T3JSYW5nZU9yVHlwZVByb3BlcnR5UGFyc2VyPENTU1ZhbHVlSW52YWxpZCwgQ1NTVmFsdWVJbnZh
bGlkLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORywgQ1NTVmFsdWVBdXRvPjo6Y3JlYXRl
UGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEh5
cGhlbnMsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlTWFu
dWFsLCBDU1NWYWx1ZUF1dG8+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5
UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJz
ZXI8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNlPjo6Y3JlYXRlUGFyc2Vy
KCkpOyAvLyBub3JtYWwgfCBhZnRlci13aGl0ZS1zcGFjZQorICAgICAgICBzZXRQcm9wZXJ0eVBh
cnNlcihDU1NQcm9wZXJ0eVdlYmtpdExpbmVHcmlkU25hcCwgVmFsdWVNYXRjaFByb3BlcnR5UGFy
c2VyPENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVDb250YWluPjo6Y3Jl
YXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkFmdGVyLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2ln
bmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNl
cjo6RlBlcmNlbnQpLCBDU1NWYWx1ZUF1dG8+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNl
dFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgVmFs
dWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQ29sbGFwc2UsIENTU1ZhbHVlU2VwYXJhdGUs
IENTU1ZhbHVlRGlzY2FyZD46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQ
YXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmUsIFZhbHVlT3JVbml0UHJvcGVydHlQ
YXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCksIENTU1ZhbHVlQXV0bz46OmNyZWF0
ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5CZWZvcmVDb2xsYXBzZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQ29s
bGFwc2UsIENTU1ZhbHVlU2VwYXJhdGUsIENTU1ZhbHVlRGlzY2FyZD46OmNyZWF0ZVBhcnNlcigp
KTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0
b21Db2xsYXBzZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQ29sbGFwc2UsIENT
U1ZhbHVlU2VwYXJhdGUsIENTU1ZhbHVlRGlzY2FyZD46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAg
ICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgVHdv
VmFsdWVzU2hvcnRoYW5kUGFyc2VyPENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFw
c2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZT46OmNyZWF0ZVBhcnNlcigp
KTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQs
IFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNl
cjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCks
IENTU1ZhbHVlQXV0bz46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJz
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNl
cjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSwgQ1NTVmFsdWVBdXRvPjo6Y3JlYXRlUGFy
c2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
blRvcENvbGxhcHNlLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVDb2xsYXBzZSwg
Q1NTVmFsdWVTZXBhcmF0ZSwgQ1NTVmFsdWVEaXNjYXJkPjo6Y3JlYXRlUGFyc2VyKCkpOworICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUsIEdlbmVyaWNT
aG9ydGhhbmRQYXJzZXI8NSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJl
cGV0aXRpb24sIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTcGVlZD46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJz
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBWYWx1ZU1hdGNoUHJvcGVydHlQ
YXJzZXI8Q1NTVmFsdWVGb3J3YXJkcywgQ1NTVmFsdWVCYWNrd2FyZHMsIENTU1ZhbHVlQWhlYWQs
IENTU1ZhbHVlUmV2ZXJzZSwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZURv
d24sIENTU1ZhbHVlVXAsIENTU1ZhbHVlQXV0bz46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAg
c2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LCBWYWx1
ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZM
ZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpLCBDU1NW
YWx1ZVNtYWxsLCBDU1NWYWx1ZUxhcmdlLCBDU1NWYWx1ZU1lZGl1bT46OmNyZWF0ZVBhcnNlcigp
KTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVw
ZXRpdGlvbiwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQ
ZXJjZW50KSwgQ1NTVmFsdWVJbmZpbml0ZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0
UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQsIFZhbHVlT3JVbml0
UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlRpbWUpIHwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RkludGVnZXIpIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVNs
b3csIENTU1ZhbHVlRmFzdD46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQ
YXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBh
cnNlcjxDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlU2xpZGUsIENTU1ZhbHVlU2Nyb2xsLCBDU1NWYWx1
ZUFsdGVybmF0ZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBWYWx1ZU1h
dGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlTWF0Y2g+OjpjcmVhdGVQ
YXJzZXIoKSk7IC8vIG5vcm1hbCB8IG1hdGNoCisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENT
U1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNl
cjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihD
U1NQYXJzZXI6OkZOb25OZWcpLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlSW50cmluc2ljLCBDU1NW
YWx1ZU1pbkludHJpbnNpYz46OmNyZWF0ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2Vu
dGFnZT4gfCBub25lIHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZOb25OZWcpLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlSW50cmluc2ljLCBDU1NWYWx1ZU1p
bkludHJpbnNpYz46OmNyZWF0ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4g
fCBub25lIHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdl
YmtpdE1pbkxvZ2ljYWxIZWlnaHQsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
Tm9uTmVnKSwgQ1NTVmFsdWVJbnRyaW5zaWMsIENTU1ZhbHVlTWluSW50cmluc2ljPjo6Y3JlYXRl
UGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQKKyAgICAgICAg
c2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGgsIFZhbHVl
T3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxl
bmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKSwgQ1NTVmFsdWVJbnRyaW5zaWMs
IENTU1ZhbHVlTWluSW50cmluc2ljPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8IDxw
ZXJjZW50YWdlPiB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVy
dHlXZWJraXROYnNwTW9kZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTm9ybWFs
LCBDU1NWYWx1ZVNwYWNlPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBub3JtYWwgfCBzcGFjZQorICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlciwgVmFs
dWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
TGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpPjo6Y3JlYXRlUGFyc2VyKCkp
OyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPgorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NT
UGFyc2VyOjpGTm9uTmVnKT46OmNyZWF0ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2Vu
dGFnZT4KKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5n
RW5kLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQ
YXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNl
bnQpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyk+OjpjcmVhdGVQ
YXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+CisgICAgICAgIHNldFByb3BlcnR5
UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0LCBWYWx1ZU9yVW5pdFByb3BlcnR5
UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpIHwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyk+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwg
PHBlcmNlbnRhZ2U+CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0
UHJpbnRDb2xvckFkanVzdCwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlRXhhY3Qs
IENTU1ZhbHVlRWNvbm9teT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQ
YXJzZXIoQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0FmdGVyLCBWYWx1ZU1hdGNoUHJvcGVy
dHlQYXJzZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUFsd2F5cywgQ1NTVmFsdWVBdm9pZCwgQ1NT
VmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0Pjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBhdXRvIHwgYWx3
YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5
UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtCZWZvcmUsIFZhbHVlTWF0Y2hQcm9w
ZXJ0eVBhcnNlcjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlQWx3YXlzLCBDU1NWYWx1ZUF2b2lkLCBD
U1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGF1dG8gfCBh
bHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVy
dHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZSwgVmFsdWVNYXRjaFBy
b3BlcnR5UGFyc2VyPENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVBdm9pZD46OmNyZWF0ZVBhcnNlcigp
KTsgLy8gYXZvaWQgfCBhdXRvIHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbk92ZXJmbG93LCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8
Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUJyZWFrPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBz
ZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBWYWx1ZU1hdGNo
UHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVMb2dpY2FsLCBDU1NWYWx1ZVZpc3VhbD46OmNyZWF0ZVBh
cnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0
Q29tYmluZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVI
b3Jpem9udGFsPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcywgR2VuZXJpY1Nob3J0aGFuZFBhcnNlcjwyLCBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc0NvbG9yPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNl
cihDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBWYWx1ZU1hdGNoUHJvcGVy
dHlQYXJzZXI8Q1NTVmFsdWVPdmVyLCBDU1NWYWx1ZVVuZGVyPjo6Y3JlYXRlUGFyc2VyKCkpOwor
ICAgICAgICAvLyBGSVhNRTogRm9yIG5vdyBqdXN0IHN1cHBvcnQgdXByaWdodCBhbmQgdmVydGlj
YWwtcmlnaHQuCisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0VGV4
dE9yaWVudGF0aW9uLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVWZXJ0aWNhbFJp
Z2h0LCBDU1NWYWx1ZVVwcmlnaHQ+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5LCBWYWx1ZU1hdGNoUHJvcGVy
dHlQYXJzZXI8Q1NTVmFsdWVEaXNjLCBDU1NWYWx1ZUNpcmNsZSwgQ1NTVmFsdWVTcXVhcmUsIENT
U1ZhbHVlTm9uZT46OmNyZWF0ZVBhcnNlcigpKTsgLy8gZGlzYyB8IGNpcmNsZSB8IHNxdWFyZSB8
IG5vbmUgfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFNpemVBZGp1c3QsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUF1dG8s
IENTU1ZhbHVlTm9uZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJz
ZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBHZW5lcmljU2hvcnRoYW5kUGFyc2VyPDIs
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
dHJva2VDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJz
ZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKSwgQ1NTVmFsdWVUaGluLCBDU1NWYWx1ZU1l
ZGl1bSwgQ1NTVmFsdWVUaGljaz46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVy
dHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZSwgVmFsdWVNYXRjaFByb3Bl
cnR5UGFyc2VyPENTU1ZhbHVlRmxhdCwgQ1NTVmFsdWVQcmVzZXJ2ZTNkPjo6Y3JlYXRlUGFyc2Vy
KCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFn
LCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vbmUsIENT
U1ZhbHVlRWxlbWVudD46OmNyZWF0ZVBhcnNlcigpKTsgLy8gYXV0byB8IG5vbmUgfCBlbGVtZW50
CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwg
VmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlUmVhZE9ubHksIENTU1ZhbHVlUmVhZFdy
aXRlLCBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9ubHk+OjpjcmVhdGVQYXJzZXIoKSk7IC8v
IHJlYWQtb25seSB8IHJlYWQtd3JpdGUKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJv
cGVydHlXZWJraXRVc2VyU2VsZWN0LCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVB
dXRvLCBDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlVGV4dD46OmNyZWF0ZVBhcnNlcigpKTsgLy8gYXV0
byB8IG5vbmUgfCB0ZXh0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Vi
a2l0V3JhcCwgR2VuZXJpY1Nob3J0aGFuZFBhcnNlcjwzLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBG
bG93LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sIENTU1Byb3BlcnR5V2Via2l0V3JhcFBh
ZGRpbmc+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1By
b3BlcnR5V2Via2l0V3JhcEZsb3csIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUF1
dG8sIENTU1ZhbHVlQm90aCwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0LCBDU1NWYWx1ZU1h
eGltdW0sIENTU1ZhbHVlQ2xlYXI+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwgVmFsdWVPclVuaXRQcm9wZXJ0
eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpPjo6Y3JlYXRlUGFyc2VyKCkpOwor
ICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQYWRkaW5nLCBW
YWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6
OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyk+Ojpj
cmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Vi
a2l0V3JhcFRocm91Z2gsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZVdyYXAsIENT
U1ZhbHVlTm9uZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZSwgVmFsdWVPclJhbmdlT3JUeXBlUHJvcGVydHlQ
YXJzZXI8Q1NTVmFsdWVIb3Jpem9udGFsVGIsIENTU1ZhbHVlSG9yaXpvbnRhbEJ0Pjo6Y3JlYXRl
UGFyc2VyKCkpOworCisgICAgfQorCisgICAgc3RhdGljIGJvb2wgdmFsaWQoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGludCBpID0gaW5kZXgocHJvcGVydHkpOworICAg
ICAgICByZXR1cm4gaSA+PSAwICYmIGkgPCBudW1DU1NQcm9wZXJ0aWVzOworICAgIH0KKworICAg
IHN0YXRpYyBpbnQgaW5kZXgoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKKyAgICB7CisgICAgICAg
IHJldHVybiBwcm9wZXJ0eSAtIGZpcnN0Q1NTUHJvcGVydHk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQcm9wZXJ0eVBhcnNl
ciBoYW5kbGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkKHByb3BlcnR5KSk7CisgICAg
ICAgIEFTU0VSVCghcHJvcGVydHlQYXJzZXIocHJvcGVydHkpLmlzVmFsaWQoKSk7CisgICAgICAg
IG1fcHJvcGVydHlQYXJzZXJBcnJheVtpbmRleChwcm9wZXJ0eSldID0gaGFuZGxlcjsKKyAgICB9
CisKKyAgICBDU1NQcm9wZXJ0eVBhcnNlciBtX3Byb3BlcnR5UGFyc2VyQXJyYXlbbnVtQ1NTUHJv
cGVydGllc107Cit9OworCiBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OmVuc3VyZUNTU1ZhbHVlUG9v
bCgpCiB7CiAgICAgaWYgKCFtX2Nzc1ZhbHVlUG9vbCkKQEAgLTIwOCw2ICs2OTYsNyBAQCBDU1NQ
YXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2xhc3RTZWxlY3Rv
ckxpbmVOdW1iZXIoMCkKICAgICAsIG1fYWxsb3dJbXBvcnRSdWxlcyh0cnVlKQogICAgICwgbV9h
bGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyh0cnVlKQorICAgICwgbV9wYXJzZXJQcm9wZXJ0eUFy
cmF5KENTU1BhcnNlclByb3BlcnR5QXJyYXk6OnNoYXJlZENTU1BhcnNlclByb3BlcnR5QXJyYXko
KSkKIHsKICNpZiBZWURFQlVHID4gMAogICAgIGNzc3l5ZGVidWcgPSAxOwpAQCAtOTQ5LDcgKzE0
MzgsMTMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgYm9vbCB2YWxpZFByaW1pdGl2ZSA9IGZhbHNlOwogICAgIFJlZlB0cjxDU1NW
YWx1ZT4gcGFyc2VkVmFsdWU7CiAKLSAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5
SUQ+KHByb3BJZCkpIHsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQgPSBzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpOworICAgIC8vIEJlZm9yZSBjb250aW51aW5nIGxldHMg
bG9vayBpZiB0aGVyZSBpcyBhIHBhcnNpbmcgaGFuZGxlci4KKyAgICBjb25zdCBDU1NQcm9wZXJ0
eVBhcnNlciYgaGFuZGxlciA9IG1fcGFyc2VyUHJvcGVydHlBcnJheS5wcm9wZXJ0eVBhcnNlcihw
cm9wZXJ0eUlkKTsKKyAgICBpZiAoaGFuZGxlci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBo
YW5kbGVyLnBhcnNlVmFsdWUocHJvcElkLCB0aGlzLCBpbXBvcnRhbnQpOworCisgICAgc3dpdGNo
IChwcm9wZXJ0eUlkKSB7CiAgICAgICAgIC8qIFRoZSBjb21tZW50IHRvIHRoZSBsZWZ0IGRlZmlu
ZXMgYWxsIHZhbGlkIHZhbHVlIG9mIHRoaXMgcHJvcGVydGllcyBhcyBkZWZpbmVkCiAgICAgICAg
ICAqIGluIENTUyAyLCBBcHBlbmRpeCBGLiBQcm9wZXJ0eSBpbmRleAogICAgICAgICAgKi8KQEAg
LTk2OCw2MyArMTQ2MywxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIHBhcnNl
UXVvdGVzKHByb3BJZCwgaW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVVuaWNvZGVCaWRpOiAvLyBub3JtYWwgfCBlbWJlZCB8IGJpZGktb3ZlcnJpZGUgfCBp
c29sYXRlIHwgcGxhaW50ZXh0IHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVO
b3JtYWwKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlRW1iZWQKLSAgICAgICAgICAgIHx8
IGlkID09IENTU1ZhbHVlQmlkaU92ZXJyaWRlCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1
ZVdlYmtpdElzb2xhdGUKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlV2Via2l0UGxhaW50
ZXh0KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjogICAgICAgICAgICAgLy8gc3RhdGljIHwg
cmVsYXRpdmUgfCBhYnNvbHV0ZSB8IGZpeGVkIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVTdGF0aWMKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUmVsYXRpdmUKLSAg
ICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlQWJzb2x1dGUKLSAgICAgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlRml4ZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOiAgICAgICAv
LyBhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQnJlYWtBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtC
ZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXI6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlOgotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVBdXRvCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUFsd2F5cwotICAg
ICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVBdm9pZAotICAgICAgICAgICAgfHwgaWQgPT0gQ1NT
VmFsdWVMZWZ0Ci0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0KQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6ICAgICAvLyBhdm9pZCB8IGF1dG8gfCBpbmhlcml0Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRSZWdpb25CcmVha0luc2lkZToKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUF2b2lkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNl
bGxzOiAgICAgICAgICAvLyBzaG93IHwgaGlkZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlU2hvdwotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVIaWRlKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb250ZW50OiAgICAgICAgICAgICAgLy8gWyA8c3RyaW5nPiB8IDx1cmk+IHwg
PGNvdW50ZXI+IHwgYXR0cihYKSB8IG9wZW4tcXVvdGUgfAogICAgICAgICAvLyBjbG9zZS1xdW90
ZSB8IG5vLW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90ZSBdKyB8IGluaGVyaXQKICAgICAgICAg
cmV0dXJuIHBhcnNlQ29udGVudChwcm9wSWQsIGltcG9ydGFudCk7CiAKLSAgICBjYXNlIENTU1By
b3BlcnR5V2hpdGVTcGFjZTogICAgICAgICAgLy8gbm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgaW5o
ZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwKLSAgICAgICAgICAgIHx8IGlk
ID09IENTU1ZhbHVlUHJlCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVByZVdyYXAKLSAg
ICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlUHJlTGluZQotICAgICAgICAgICAgfHwgaWQgPT0g
Q1NTVmFsdWVOb3dyYXApCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6ICAgICAgICAgICAgICAgICAv
LyA8c2hhcGU+IHwgYXV0byB8IGluaGVyaXQKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0
bykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTEwMzIsMjUgKzE0NzUs
NiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICAgICAgICAgIHJldHVybiBwYXJzZVNoYXBlKHByb3BJZCwgaW1wb3J0YW50KTsKICAg
ICAgICAgYnJlYWs7CiAKLSAgICAvKiBTdGFydCBvZiBzdXBwb3J0ZWQgQ1NTIHByb3BlcnRpZXMg
d2l0aCB2YWxpZGF0aW9uLiBUaGlzIGlzIG5lZWRlZCBmb3IgcGFyc2VTaG9ydGhhbmQgdG8gd29y
awotICAgICAqIGNvcnJlY3RseSBhbmQgYWxsb3dzIG9wdGltaXphdGlvbiBpbiBXZWJDb3JlOjph
cHBseVJ1bGUoLi4pCi0gICAgICovCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOiAg
ICAgICAgIC8vIHRvcCB8IGJvdHRvbSB8IGxlZnQgfCByaWdodCB8IGluaGVyaXQKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8Ci0gICAgICAg
ICAgICBpZCA9PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6ICAgICAgLy8gY29sbGFwc2UgfCBzZXBhcmF0ZSB8IGlu
aGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ29sbGFwc2UgfHwgaWQgPT0gQ1NTVmFs
dWVTZXBhcmF0ZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eTogICAgICAgICAgIC8vIHZp
c2libGUgfCBoaWRkZW4gfCBjb2xsYXBzZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBDU1NWYWx1ZUhpZGRlbiB8fCBpZCA9PSBDU1NWYWx1ZUNv
bGxhcHNlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVh
azsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzogewogICAgICAgICBTaG9ydGhhbmRT
Y29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwogICAgICAgICBpZiAobnVtICE9IDEgfHwgIXBhcnNl
VmFsdWUoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIGltcG9ydGFudCkpCkBAIC0xMDU5LDczICsxNDgz
LDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgdmFsdWUsIGlt
cG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5T3ZlcmZsb3dYOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6ICAgICAgICAgICAv
LyB2aXNpYmxlIHwgaGlkZGVuIHwgc2Nyb2xsIHwgYXV0byB8IG1hcnF1ZWUgfCBvdmVybGF5IHwg
aW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8IGlkID09IENTU1Zh
bHVlSGlkZGVuIHx8IGlkID09IENTU1ZhbHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQXV0byB8
fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVPdmVybGF5IHx8IGlkID09IENTU1ZhbHVlV2Vi
a2l0TWFycXVlZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246ICAvLyBpbnNp
ZGUgfCBvdXRzaWRlIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbnNpZGUg
fHwgaWQgPT0gQ1NTVmFsdWVPdXRzaWRlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
OgotICAgICAgICAvLyBTZWUgc2VjdGlvbiBDU1NfUFJPUF9MSVNUX1NUWUxFX1RZUEUgb2YgZmls
ZSBDU1NWYWx1ZUtleXdvcmRzLmluCi0gICAgICAgIC8vIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0
ZWQgbGlzdC1zdHlsZS10eXBlcy4KLSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZURpc2MgJiYg
aWQgPD0gQ1NTVmFsdWVLYXRha2FuYUlyb2hhKSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eURpc3BsYXk6Ci0gICAgICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1p
dGVtIHwgcnVuLWluIHwgaW5saW5lLWJsb2NrIHwgdGFibGUgfAotICAgICAgICAvLyBpbmxpbmUt
dGFibGUgfCB0YWJsZS1yb3ctZ3JvdXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290
ZXItZ3JvdXAgfCB0YWJsZS1yb3cgfAotICAgICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0
YWJsZS1jb2x1bW4gfCB0YWJsZS1jZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwg
LXdlYmtpdC1pbmxpbmUtYm94IHwgbm9uZSB8IGluaGVyaXQKLSAgICAgICAgLy8gLXdlYmtpdC1m
bGV4Ym94IHwgLXdlYmtpdC1pbmxpbmUtZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQt
aW5saW5lLWdyaWQKLSAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUlubGluZSAmJiBpZCA8PSBD
U1NWYWx1ZVdlYmtpdElubGluZUZsZXhib3gpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VU
KQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRHcmlkIHx8IGlkID09IENTU1ZhbHVl
V2Via2l0SW5saW5lR3JpZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSNl
bmRpZgotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246ICAg
ICAgICAgICAgLy8gbHRyIHwgcnRsIHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVMdHIgfHwgaWQgPT0gQ1NTVmFsdWVSdGwpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm06ICAgICAgIC8vIGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBub25lIHwg
aW5oZXJpdAogICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlQ2FwaXRhbGl6ZSAmJiBpZCA8PSBD
U1NWYWx1ZUxvd2VyY2FzZSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlGbG9hdDogICAgICAgICAgICAgICAgLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZSB8IHBvc2l0aW9u
ZWQgfCBjZW50ZXIgKGZvciBidWdneSBDU1MsIG1hcHMgdG8gbm9uZSkKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0Ci0gICAgICAgICAgICB8fCBp
ZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFs
dWVXZWJraXRQb3NpdGlvbmVkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjogICAgICAgICAgICAg
ICAgLy8gbm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGggfCBpbmhlcml0Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0Ci0gICAgICAgICAgICB8fCBp
ZCA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGlkID09IENTU1ZhbHVlQm90aCkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dEFsaWduOgotICAgICAgICAvLyBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5
IHwgd2Via2l0X2xlZnQgfCB3ZWJraXRfcmlnaHQgfCB3ZWJraXRfY2VudGVyIHwgd2Via2l0X21h
dGNoX3BhcmVudCB8Ci0gICAgICAgIC8vIHN0YXJ0IHwgZW5kIHwgPHN0cmluZz4gfCBpbmhlcml0
Ci0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVXZWJraXRBdXRvICYmIGlkIDw9IENTU1ZhbHVl
V2Via2l0TWF0Y2hQYXJlbnQpIHx8IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFs
dWVFbmQKLSAgICAgICAgICAgIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfU1RSSU5HKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6ICAgICAgICAvLyAoPGJv
cmRlci1zdHlsZT4gZXhjZXB0IGhpZGRlbikgfCBhdXRvIHwgaW5oZXJpdAotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCAoaWQgPj0gQ1NTVmFs
dWVJbnNldCAmJiBpZCA8PSBDU1NWYWx1ZURvdWJsZSkpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clRvcFN0eWxlOiAgICAgLy8vLyA8Ym9yZGVyLXN0eWxlPiB8IGluaGVyaXQKICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZTogICAvLyAgIERlZmluZWQgYXM6ICAgIG5vbmUgfCBo
aWRkZW4gfCBkb3R0ZWQgfCBkYXNoZWQgfAogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21TdHlsZTogIC8vICAgc29saWQgfCBkb3VibGUgfCBncm9vdmUgfCByaWRnZSB8IGluc2V0IHwg
b3V0c2V0CkBAIC0xMTQyLDI5ICsxNTA1LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWln
aHQ6ICAvLyBub3JtYWwgfCBib2xkIHwgYm9sZGVyIHwgbGlnaHRlciB8IDEwMCB8IDIwMCB8IDMw
MCB8IDQwMCB8IDUwMCB8IDYwMCB8IDcwMCB8IDgwMCB8IDkwMCB8IGluaGVyaXQKICAgICAgICAg
cmV0dXJuIHBhcnNlRm9udFdlaWdodChpbXBvcnRhbnQpOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclNwYWNpbmc6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2lu
ZyB9OwotICAgICAgICBpZiAobnVtID09IDEpIHsKLSAgICAgICAgICAgIFNob3J0aGFuZFNjb3Bl
IHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZyk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3Bl
cnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOwotICAgICAgICAgICAgYWRk
UHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewotICAg
ICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlCb3JkZXJTcGFj
aW5nKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRh
bnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clZlcnRpY2FsU3BhY2luZzoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFs
dWUsIEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6ICAgICAgICAvLyA8Y29sb3I+IHwgaW52ZXJ0IHwg
aW5oZXJpdAogICAgICAgICAvLyBPdXRsaW5lIGNvbG9yIGhhcyAiaW52ZXJ0IiBhcyBhZGRpdGlv
bmFsIGtleXdvcmQuCiAgICAgICAgIC8vIEFsc28sIHdlIHdhbnQgdG8gYWxsb3cgdGhlIHNwZWNp
YWwgZm9jdXMgY29sb3IgZXZlbiBpbiBzdHJpY3QgcGFyc2luZyBtb2RlLgpAQCAtMTMyOCwxNTIg
KzE2NjgsNTMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lV2lk
dGg6ICAgICAgICAvLyA8Ym9yZGVyLXdpZHRoPiB8IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGg6ICAgICAvLy8vIDxib3JkZXItd2lkdGg+IHwgaW5oZXJpdAotICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoOiAgIC8vICAgV2hpY2ggaXMgZGVmaW5l
ZCBhcwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aDogIC8vICAgdGhpbiB8
IG1lZGl1bSB8IHRoaWNrIHwgPGxlbmd0aD4KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0
aDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVGhpbiB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1
bSB8fCBpZCA9PSBDU1NWYWx1ZVRoaWNrKQorICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToK
KyAgICAgICAgLy8gPGFic29sdXRlLXNpemU+IHwgPHJlbGF0aXZlLXNpemU+IHwgPGxlbmd0aD4g
fCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CisgICAgICAgIGlmIChpZCA+PSBDU1NWYWx1ZVh4U21h
bGwgJiYgaWQgPD0gQ1NTVmFsdWVMYXJnZXIpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRV
bml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgbV9zdHJpY3QpOworICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSAodmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9u
TmVnLCBtX3N0cmljdCkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlM
ZXR0ZXJTcGFjaW5nOiAgICAgICAvLyBub3JtYWwgfCA8bGVuZ3RoPiB8IGluaGVyaXQKLSAgICBj
YXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6ICAgICAgICAgLy8gbm9ybWFsIHwgPGxlbmd0aD4g
fCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFN0eWxlOiAvLyBub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlIHwgaW5oZXJp
dAorICAgICAgICByZXR1cm4gcGFyc2VGb250U3R5bGUoaW1wb3J0YW50KTsKKworICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250VmFyaWFudDogLy8gbm9ybWFsIHwgc21hbGwtY2FwcyB8IGluaGVyaXQK
KyAgICAgICAgcmV0dXJuIHBhcnNlRm9udFZhcmlhbnQoaW1wb3J0YW50KTsKKworICAgIGNhc2Ug
Q1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduOgorICAgICAgICAvLyBiYXNlbGluZSB8IHN1YiB8IHN1
cGVyIHwgdG9wIHwgdGV4dC10b3AgfCBtaWRkbGUgfCBib3R0b20gfCB0ZXh0LWJvdHRvbSB8Cisg
ICAgICAgIC8vIDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IHwgaW5oZXJpdAorCisgICAgICAgIGlm
IChpZCA+PSBDU1NWYWx1ZUJhc2VsaW5lICYmIGlkIDw9IENTU1ZhbHVlV2Via2l0QmFzZWxpbmVN
aWRkbGUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoLCBt
X3N0cmljdCk7CisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0
KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJyZWFrOwog
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazogICAgICAgICAgLy8gbm9ybWFsIHwgYnJl
YWstYWxsIHwgYnJlYWstd29yZCAodGhpcyBpcyBhIGN1c3RvbSBleHRlbnNpb24pCi0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IGlk
ID09IENTU1ZhbHVlQnJlYWtXb3JkKQorICAgIGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6IC8vIDxs
ZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2lkdGg6IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRMb2dpY2FsSGVpZ2h0OgorICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8
IGlkID09IENTU1ZhbHVlSW50cmluc2ljIHx8IGlkID09IENTU1ZhbHVlTWluSW50cmluc2ljKQor
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOworICAgICAgICBlbHNlIGlmICghaWQg
JiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0cmlj
dCkpCisgICAgICAgICAgICAvLyAjIyMgaGFuZGxlIG11bHRpbGVuZ3RoIGNhc2Ugd2hlcmUgd2Ug
YWxsb3cgcmVsYXRpdmUgdW5pdHMKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
KyAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9u
KQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxleChwcm9wSWQsIGltcG9ydGFudCk7CiAgICAg
ICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOiAgICAgICAgICAgLy8g
bm9ybWFsIHwgYnJlYWstd29yZAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwg
aWQgPT0gQ1NTVmFsdWVCcmVha1dvcmQpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRleDogICAg
ICAgICAgICAgIC8vIGF1dG8gfCA8aW50ZWdlcj4gfCBpbmhlcml0CisgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8pIHsKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOiAgICAgICAgICAgLy8gbm9u
ZSB8IG5vcm1hbCB8IHNwZWxsLW91dCB8IGRpZ2l0cyB8IGxpdGVyYWwtcHVuY3R1YXRpb24gfCBu
by1wdW5jdHVhdGlvbiB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8
fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNwZWxsT3V0IHx8IGlkID09
IENTU1ZhbHVlRGlnaXRzCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUxpdGVyYWxQdW5j
dHVhdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRpb24pCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRJbmRlbnQ6ICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJp
dAotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVu
Z3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eVBhZGRpbmdUb3A6ICAgICAgICAgIC8vLy8gPHBhZGRpbmctd2lkdGg+IHwgaW5o
ZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6ICAgICAgICAvLyAgIFdoaWNo
IGlzIGRlZmluZWQgYXMKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbTogICAgICAg
Ly8gICA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
TGVmdDogICAgICAgICAvLy8vCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFy
dDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0VuZDoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFk
ZGluZ0FmdGVyOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0cmljdCkpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6ICAgICAgICAgICAvLyA8bGVu
Z3RoPiB8IDxwZXJjZW50YWdlPiB8IG5vbmUgfCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eU1heFdpZHRoOiAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgbm9uZSB8
IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OgotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVOb25lKSB7Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAvKiBub2JyZWFrICovCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDogICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNl
bnRhZ2U+IHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDogICAgICAgICAg
ICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWluTG9naWNhbFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5M
b2dpY2FsSGVpZ2h0OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbnRyaW5zaWMgfHwgaWQg
PT0gQ1NTVmFsdWVNaW5JbnRyaW5zaWMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2
YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplOgotICAgICAg
ICAvLyA8YWJzb2x1dGUtc2l6ZT4gfCA8cmVsYXRpdmUtc2l6ZT4gfCA8bGVuZ3RoPiB8IDxwZXJj
ZW50YWdlPiB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlWHhTbWFsbCAmJiBp
ZCA8PSBDU1NWYWx1ZUxhcmdlcikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAodmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0cmljdCkpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6ICAgICAgICAgICAvLyBub3Jt
YWwgfCBpdGFsaWMgfCBvYmxpcXVlIHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFyc2VGb250
U3R5bGUoaW1wb3J0YW50KTsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDogICAg
ICAgICAvLyBub3JtYWwgfCBzbWFsbC1jYXBzIHwgaW5oZXJpdAotICAgICAgICByZXR1cm4gcGFy
c2VGb250VmFyaWFudChpbXBvcnRhbnQpOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVZlcnRpY2Fs
QWxpZ246Ci0gICAgICAgIC8vIGJhc2VsaW5lIHwgc3ViIHwgc3VwZXIgfCB0b3AgfCB0ZXh0LXRv
cCB8IG1pZGRsZSB8IGJvdHRvbSB8IHRleHQtYm90dG9tIHwKLSAgICAgICAgLy8gPHBlcmNlbnRh
Z2U+IHwgPGxlbmd0aD4gfCBpbmhlcml0Ci0KLSAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlQmFz
ZWxpbmUgJiYgaWQgPD0gQ1NTVmFsdWVXZWJraXRCYXNlbGluZU1pZGRsZSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBt
X3N0cmljdCkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6
ICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJp
dAotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDogICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4g
fCA8cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMb2dpY2FsV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVJbnRyaW5z
aWMgfHwgaWQgPT0gQ1NTVmFsdWVNaW5JbnRyaW5zaWMpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZM
ZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSkKLSAgICAgICAgICAgIC8vICMj
IyBoYW5kbGUgbXVsdGlsZW5ndGggY2FzZSB3aGVyZSB3ZSBhbGxvdyByZWxhdGl2ZSB1bml0cwot
ICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNlIGlmICh2YWx1
ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4g
cGFyc2VGbGV4KHByb3BJZCwgaW1wb3J0YW50KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IENTU1Byb3BlcnR5Qm90dG9tOiAgICAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRh
Z2U+IHwgYXV0byB8IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDogICAgICAgICAg
ICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKLSAgICBj
YXNlIENTU1Byb3BlcnR5UmlnaHQ6ICAgICAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNl
bnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3BlcnR5VG9wOiAgICAgICAg
ICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKLSAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOiAgICAgICAgICAgLy8vLyA8bWFyZ2luLXdpZHRo
PiB8IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6ICAgICAgICAgLy8g
ICBXaGljaCBpcyBkZWZpbmVkIGFzCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbTog
ICAgICAgIC8vICAgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJpdAotICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OiAgICAgICAgICAvLy8vCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5FbmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXI6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUF1dG8pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZM
ZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IENTU1Byb3BlcnR5WkluZGV4OiAgICAgICAgICAgICAgLy8gYXV0byB8IDxpbnRlZ2VyPiB8IGlu
aGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgLyogbm9icmVhayAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOiAgICAgICAgICAg
ICAgLy8gPGludGVnZXI+IHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6ICAg
ICAgICAgICAgICAgLy8gPGludGVnZXI+IHwgaW5oZXJpdAotICAgICAgICAvLyAjIyMgbm90IHN1
cHBvcnRlZCBsYXRlciBvbgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRV
bml0KHZhbHVlLCBGSW50ZWdlciwgZmFsc2UpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IENTU1Byb3BlcnR5TGluZUhlaWdodDogICAgICAgICAgLy8gbm9ybWFsIHwgPG51bWJlcj4gfCA8
bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTm9ybWFsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVl
LCBGTnVtYmVyIHwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8qIG5vYnJlYWsgKi8KKyAgICBj
YXNlIENTU1Byb3BlcnR5T3JwaGFuczogICAgICAgICAgICAgIC8vIDxpbnRlZ2VyPiB8IGluaGVy
aXQKKyAgICBjYXNlIENTU1Byb3BlcnR5V2lkb3dzOiAgICAgICAgICAgICAgIC8vIDxpbnRlZ2Vy
PiB8IGluaGVyaXQKKyAgICAgICAgLy8gIyMjIG5vdCBzdXBwb3J0ZWQgbGF0ZXIgb24KKyAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIsIGZh
bHNlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVt
ZW50OiAgICAvLyBbIDxpZGVudGlmaWVyPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSB8IGluaGVyaXQK
ICAgICAgICAgaWYgKGlkICE9IENTU1ZhbHVlTm9uZSkKQEAgLTE1MjgsMTEgKzE3NjksNiBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZOdW1i
ZXIgfCBGUGVyY2VudCB8IEZOb25OZWcsIHRydWUpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBj
YXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6ICAgICAgICAgLy8gYXV0byB8IGZpeGVkIHwgaW5o
ZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlRml4
ZWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwot
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNyYzogIC8vIE9ubHkgdXNlZCB3aXRoaW4gQGZvbnQtZmFj
ZSwgc28gY2Fubm90IHVzZSBpbmhlcml0IHwgaW5pdGlhbCBvciBiZSAhaW1wb3J0YW50LiAgVGhp
cyBpcyBhIGxpc3Qgb2YgdXJscyBvciBsb2NhbCByZWZlcmVuY2VzLgogICAgICAgICByZXR1cm4g
cGFyc2VGb250RmFjZVNyYygpOwogCkBAIC0xNTQwLDExICsxNzc2LDYgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIHJldHVy
biBwYXJzZUZvbnRGYWNlVW5pY29kZVJhbmdlKCk7CiAKICAgICAvKiBDU1MzIHByb3BlcnRpZXMg
Ki8KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKLSAgICAgICAgaWYgKChp
ZCA+PSBDU1NWYWx1ZUNoZWNrYm94ICYmIGlkIDw9IENTU1ZhbHVlVGV4dGFyZWEpIHx8IGlkID09
IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6IHsKICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiByZXN1bHQ7CiAgICAgICAgIHJldHVybiBwYXJzZUJvcmRlckltYWdl
KHByb3BJZCwgcmVzdWx0LCBpbXBvcnRhbnQpOwpAQCAtMTYyNCw5ICsxODU1LDYgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyUmFkaXVzOgogICAgICAgICByZXR1cm4gcGFyc2VCb3JkZXJSYWRpdXMocHJvcElkLCBpbXBv
cnRhbnQpOwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0OgotICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmlj
dCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2hhZG93OiAvLyBD
U1MyIHByb3BlcnR5LCBkcm9wcGVkIGluIENTUzIuMSwgYmFjayBpbiBDU1MzLCBzbyB0cmVhdCBh
cyBDU1MzCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm94U2hhZG93OgpAQCAtMTY0OCw0NSArMTg3NiwxMCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVmbGVjdChwcm9wSWQsIGltcG9ydGFudCk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgotICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgbV9zdHJpY3QpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVN0cmV0Y2ggfHwgaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NW
YWx1ZUVuZCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NT
VmFsdWVCYXNlbGluZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbjoKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1ZhbHVlUmV2ZXJzZSkKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVT
aW5nbGUgfHwgaWQgPT0gQ1NTVmFsdWVNdWx0aXBsZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eE9yaWVudDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCBpZCA9PSBD
U1NWYWx1ZVZlcnRpY2FsIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZUlubGluZUF4aXMg
fHwgaWQgPT0gQ1NTVmFsdWVCbG9ja0F4aXMpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNr
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8
fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVKdXN0
aWZ5KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleDoKLSAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIsIG1fc3RyaWN0KTsKLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cDoKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZh
bGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCB0cnVlKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSBpZCA9PSBDU1NWYWx1ZUJvcmRlckJveCB8fCBpZCA9PSBDU1NWYWx1ZUNvbnRlbnRCb3g7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246
Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVTcmdiIHx8IGlkID09IENT
U1ZhbHVlRGVmYXVsdDsKLSAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXI6CiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vbmUpCkBAIC0xNzA5LDgwICsxOTAyLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3Qt
Pm5leHQoKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0RmxleFBhY2s6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVT
dGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9
PSBDU1NWYWx1ZUp1c3RpZnkgfHwgaWQgPT0gQ1NTVmFsdWVEaXN0cmlidXRlOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEFsaWduOgotICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwg
aWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9PSBD
U1NWYWx1ZVN0cmV0Y2g7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRGbGV4SXRlbUFsaWduOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVl
QXV0byB8fCBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8IGlkID09
IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0gQ1NTVmFs
dWVTdHJldGNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxl
eERpcmVjdGlvbjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVJvdyB8
fCBpZCA9PSBDU1NWYWx1ZVJvd1JldmVyc2UgfHwgaWQgPT0gQ1NTVmFsdWVDb2x1bW4gfHwgaWQg
PT0gQ1NTVmFsdWVDb2x1bW5SZXZlcnNlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleFdyYXA6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NT
VmFsdWVOb3dyYXAgfHwgaWQgPT0gQ1NTVmFsdWVXcmFwIHx8IGlkID09IENTU1ZhbHVlV3JhcFJl
dmVyc2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
OiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzVdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZVJlcGV0aXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgNSwgaW1w
b3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rp
b246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUZvcndhcmRzIHx8IGlkID09IENTU1ZhbHVl
QmFja3dhcmRzIHx8IGlkID09IENTU1ZhbHVlQWhlYWQgfHwKLSAgICAgICAgICAgIGlkID09IENT
U1ZhbHVlUmV2ZXJzZSB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdo
dCB8fCBpZCA9PSBDU1NWYWx1ZURvd24gfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlVXAg
fHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3Jl
bWVudDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVM
YXJnZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxp
ZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlU2xpZGUgfHwgaWQgPT0gQ1NTVmFs
dWVTY3JvbGwgfHwgaWQgPT0gQ1NTVmFsdWVBbHRlcm5hdGUpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlUmVwZXRpdGlvbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5maW5pdGUp
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGSW50ZWdlciB8IEZOb25O
ZWcsIG1fc3RyaWN0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTcGVlZDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09
IENTU1ZhbHVlU2xvdyB8fCBpZCA9PSBDU1NWYWx1ZUZhc3QpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdmFsaWRVbml0KHZhbHVlLCBGVGltZSB8IEZJbnRlZ2VyIHwgRk5vbk5lZywgbV9zdHJpY3Qp
OwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG86CiAg
ICAgICAgIHJldHVybiBwYXJzZUZsb3dUaHJlYWQocHJvcElkLCBpbXBvcnRhbnQpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRGbG93RnJvbToKICAgICAgICAgcmV0dXJuIHBhcnNlUmVnaW9u
VGhyZWFkKHByb3BJZCwgaW1wb3J0YW50KTsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UmVn
aW9uT3ZlcmZsb3c6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NT
VmFsdWVCcmVhaykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6IC8vIGF1dG8gfCBu
b25lIHwgZWxlbWVudAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENT
U1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUVsZW1lbnQpCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCi0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZVJlYWRPbmx5IHx8IGlkID09IENTU1ZhbHVlUmVhZFdyaXRlIHx8IGlkID09IENT
U1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJT
ZWxlY3Q6IC8vIGF1dG8gfCBub25lIHwgdGV4dAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVB
dXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVRleHQpCi0gICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0T3ZlcmZsb3c6IC8vIGNsaXAgfCBlbGxpcHNpcwotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVDbGlwIHx8IGlkID09IENTU1ZhbHVlRWxsaXBzaXMpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm06CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xODEzLDE4ICsxOTM3LDYgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtU3R5bGU6Ci0gICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVG
bGF0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6Ci0gICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFs
dWVWaXNpYmxlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhpZGRlbikKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFByaW50Q29sb3JBZGp1c3Q6Ci0gICAgICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFs
dWVFeGFjdCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFY29ub215KQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UGVyc3BlY3RpdmU6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xODc4LDgwICsxOTkwLDYgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRSb3dzOgogICAgICAgICByZXR1cm4gcGFyc2VHcmlk
VHJhY2tMaXN0KHByb3BJZCwgaW1wb3J0YW50KTsKICNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5Db2xsYXBzZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1sy
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwKLSAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgICAgICBpZiAobnVt
ID09IDEpIHsKLSAgICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHBy
b3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFy
c2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3Bl
cnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnVtID09IDIpIHsKLSAgICAgICAgICAgIFNob3J0
aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpOwot
ICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwg
IXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
ZWZvcmVDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xs
YXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVDb2xsYXBzZSB8fCBpZCA9PSBDU1NWYWx1ZVNlcGFyYXRlIHx8IGlkID09
IENTU1ZhbHVlRGlzY2FyZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVNb2RlOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDb250aW51b3Vz
IHx8IGlkID09IENTU1ZhbHVlU2tpcFdoaXRlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2hTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVNvbGlkIHx8IGlkID09IENTU1ZhbHVlRG91
YmxlIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZURhc2hlZCB8fCBpZCA9PSBDU1NWYWx1
ZURvdERhc2ggfHwgaWQgPT0gQ1NTVmFsdWVEb3REb3REYXNoIHx8Ci0gICAgICAgICAgICBpZCA9
PSBDU1NWYWx1ZVdhdmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiAvLyBhdXRvIHwg
b3B0aW1pemVTcGVlZCB8IG9wdGltaXplTGVnaWJpbGl0eSB8IGdlb21ldHJpY1ByZWNpc2lvbgot
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlT3B0aW1pemVz
cGVlZCB8fCBpZCA9PSBDU1NWYWx1ZU9wdGltaXplbGVnaWJpbGl0eQotICAgICAgICAgICAgfHwg
aWQgPT0gQ1NTVmFsdWVHZW9tZXRyaWNwcmVjaXNpb24pCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2hXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGg6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVRo
aW4gfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlTWVkaXVtIHx8IGlkID09IENTU1ZhbHVl
VGhpY2spCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRk51
bWJlciB8IEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOiAvLyBub25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2
ZXJ0aWNhbCB8IGF1dG8KLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBD
U1NWYWx1ZUJvdGggfHwgaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsIHx8IGlkID09IENTU1ZhbHVl
VmVydGljYWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQ291bnQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCBmYWxz
ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXA6
ICAgICAgICAgLy8gbm9ybWFsIHwgPGxlbmd0aD4KLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Tm9ybWFsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8
IEZOb25OZWcsIG1fc3RyaWN0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkF4aXM6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwg
fHwgaWQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOiAgICAgICAgLy8gYWxsIHwgMQogICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVBbGwpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBA
IC0xOTY0LDE3ICsyMDAyLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVsc2UgLy8gQWx3YXlzIHBhcnNlIHRoaXMgcHJv
cGVydHkgaW4gc3RyaWN0IG1vZGUsIHNpbmNlIGl0IHdvdWxkIGJlIGFtYmlndW91cyBvdGhlcndp
c2Ugd2hlbiB1c2VkIGluIHRoZSAnY29sdW1ucycgc2hvcnRoYW5kIHByb3BlcnR5LgogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIHRydWUpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKLSAgICAg
ICAgLy8gbm9uZSB8IHZpc2libGVQYWludGVkIHwgdmlzaWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tl
IHwgdmlzaWJsZSB8Ci0gICAgICAgIC8vIHBhaW50ZWQgfCBmaWxsIHwgc3Ryb2tlIHwgYXV0byB8
IGFsbCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9
PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVBbGwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRv
IHx8Ci0gICAgICAgICAgICAoaWQgPj0gQ1NTVmFsdWVWaXNpYmxlcGFpbnRlZCAmJiBpZCA8PSBD
U1NWYWx1ZVN0cm9rZSkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZzogLy8gYXV0byB8
IG9wdGltaXplQ29udHJhc3QKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9
PSBDU1NWYWx1ZVdlYmtpdE9wdGltaXplQ29udHJhc3QpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwogICAgIC8vIEVuZCBvZiBDU1MzIHByb3BlcnRp
ZXMKIAogICAgIC8vIEFwcGxlIHNwZWNpZmljIHByb3BlcnRpZXMuICBUaGVzZSB3aWxsIG5ldmVy
IGJlIHN0YW5kYXJkaXplZCBhbmQgYXJlIHB1cmVseSB0bwpAQCAtMTk4NCw0OCArMjAxMSw2IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQog
ICAgICAgICAvLyBXaGVuIHNwZWNpZnlpbmcgZWl0aGVyIHR5cGUgb2YgdW5pdCwgcmVxdWlyZSBu
b24tbmVnYXRpdmUgaW50ZWdlcnMKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmICh2
YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgfHwgdmFsdWUt
PmZWYWx1ZSkgJiYgdmFsaWRVbml0KHZhbHVlLCBGSW50ZWdlciB8IEZQZXJjZW50IHwgRk5vbk5l
ZywgZmFsc2UpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTaXplQWRqdXN0OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENT
U1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgotICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVMb2dpY2FsIHx8IGlkID09IENTU1ZhbHVlVmlzdWFsKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOiAgICAgICAgICAgLy8gPGxlbmd0aD4KLSAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0
KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6
ICAgICAvLyBub3JtYWwgfCBzcGFjZQotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwg
fHwgaWQgPT0gQ1NTVmFsdWVTcGFjZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFr
OiAgIC8vIG5vcm1hbCB8IGFmdGVyLXdoaXRlLXNwYWNlCi0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSkKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjogICAvLyBub3JtYWwg
fCBtYXRjaAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFs
dWVNYXRjaCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0OgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfU1RSSU5HKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlTWFudWFsIHx8IGlkID09IENTU1Zh
bHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOgotICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfU1RSSU5HKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1p
dEJlZm9yZToKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcjoK
QEAgLTIwNDksMzIgKzIwMzQsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVHcmlkU25hcDoKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09
IENTU1ZhbHVlQ29udGFpbikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToKICAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OgotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVCb3JkZXIgfHwgaWQgPT0gQ1NTVmFsdWVMaW5lcykKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5OgotICAgICAgICAvLyBkaXNjIHwgY2lyY2xl
IHwgc3F1YXJlIHwgbm9uZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlRGlz
YyB8fCBpZCA9PSBDU1NWYWx1ZUNpcmNsZSB8fCBpZCA9PSBDU1NWYWx1ZVNxdWFyZXx8IGlkID09
IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzoKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUKLSAgICAg
ICAgICAgIHx8IGlkID09IENTU1ZhbHVlQW50aWFsaWFzZWQgfHwgaWQgPT0gQ1NTVmFsdWVTdWJw
aXhlbEFudGlhbGlhc2VkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOiAvLyA8ZGFzaGJvYXJkLXJlZ2lvbj4gfCA8
ZGFzaGJvYXJkLXJlZ2lvbj4KICAgICAgICAgaWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZh
bHVlOjpGdW5jdGlvbiB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCkBAIC0yMTExLDExOCArMjA3NSw2
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tPcmlnaW4sIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAgfTsKICAgICAgICAgcmV0dXJuIHBh
cnNlRmlsbFNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDYsIGltcG9ydGFudCk7CiAgICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Ci0gICAgICAgIC8vIFsgJ2JvcmRlci13aWR0
aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAgIHsKLSAgICAg
ICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENT
U1Byb3BlcnR5Qm9yZGVyU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yIH07Ci0gICAgICAgIGlmIChwYXJzZVNob3J0aGFuZChw
cm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCkpIHsKLSAgICAgICAgICAgIC8vIFRoZSBD
U1MzIEJvcmRlcnMgYW5kIEJhY2tncm91bmRzIHNwZWNpZmljYXRpb24gc2F5cyB0aGF0IGJvcmRl
ciBhbHNvIHJlc2V0cyBib3JkZXItaW1hZ2UuIEl0J3MgYXMKLSAgICAgICAgICAgIC8vIHRob3Vn
aCBhIHZhbHVlIG9mIG5vbmUgd2FzIHNwZWNpZmllZCBmb3IgdGhlIGltYWdlLgotICAgICAgICAg
ICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgY3NzVmFsdWVQb29sKCktPmNy
ZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6Ci0gICAgICAgIC8vIFsgJ2JvcmRlci10b3Atd2lkdGgn
IHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcn07Ci0gICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKLSAgICAgICAgLy8gWyAnYm9yZGVyLXJpZ2h0LXdp
ZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKLSAgICAgICAgLy8gWyAnYm9y
ZGVyLWJvdHRvbS13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJp
dAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9y
IH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMs
IGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OgotICAg
ICAgICAvLyBbICdib3JkZXItbGVmdC13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9y
PiBdIHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVm
dENvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRp
ZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3Rh
cnRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9
OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBp
bXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgot
ICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUsCi0gICAg
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yIH07Ci0gICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmU6Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwKLSAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBh
cnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgotICAgIHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0
aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLAotICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlPdXRsaW5lOgotICAgICAgICAvLyBbICdvdXRsaW5lLWNvbG9yJyB8fCAnb3V0
bGluZS1zdHlsZScgfHwgJ291dGxpbmUtd2lkdGgnIF0gfCBpbmhlcml0Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIENT
U1Byb3BlcnR5T3V0bGluZVN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgICAgICAvLyA8Y29sb3I+ezEsNH0gfCBpbmhlcml0
Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlC
b3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhw
cm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aDoKLSAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8IGluaGVyaXQK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJv
cmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHBy
b3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclN0eWxlOgotICAgICAgICAvLyA8Ym9yZGVyLXN0eWxlPnsxLDR9IHwgaW5oZXJpdAot
ICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyTGVmdFN0eWxlIH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJv
cElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5
TWFyZ2luOgotICAgICAgICAvLyA8bWFyZ2luLXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAgIHsK
LSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5TWFyZ2luVG9w
LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIENTU1Byb3BlcnR5TWFyZ2luTGVmdCB9Owot
ICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50
KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6Ci0gICAgICAgIC8vIDxwYWRk
aW5nLXdpZHRoPnsxLDR9IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgQ1NTUHJvcGVydHlQYWRkaW5nUmln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVBhZGRp
bmdCb3R0b20sIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNl
NFZhbHVlcyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NTUHJvcGVydHlX
ZWJraXRGbGV4V3JhcCB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBw
cm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwotICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8fCAnZm9udC12YXJpYW50JyB8fCAnZm9u
dC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGluZS1oZWlnaHQnIF0/CiAgICAgICAgIC8v
ICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29uIHwgbWVudSB8IG1lc3NhZ2UtYm94IHwg
c21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhlcml0CkBAIC0yMjMxLDI1ICsyMDgzLDYg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBwYXJzZUZvbnQoaW1wb3J0YW50KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKLSAgICB7Ci0g
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlIH07Ci0gICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChw
cm9wSWQsIHByb3BlcnRpZXMsIDIsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNd
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5SdWxlU3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChw
cm9wSWQsIHByb3BlcnRpZXMsIDIsIGltcG9ydGFudCk7Ci0gICAgfQogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb246CiAgICAgICAgIHJldHVybiBwYXJzZUFuaW1hdGlvblNob3J0
aGFuZChpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uOgpA
QCAtMjI2MywzNiArMjA5NiwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lOgogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5n
IHN1cHBvcnQKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGU6Ci0gICAgICAg
IGlmIChpZCA+PSBDU1NWYWx1ZUhvcml6b250YWxUYiAmJiBpZCA8PSBDU1NWYWx1ZUhvcml6b250
YWxCdCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6Ci0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFsKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRh
bnQpOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3Np
dGlvbjoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlT3ZlciB8fCBpZCA9PSBDU1NWYWx1ZVVu
ZGVyKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZToKICAgICAgICAg
cmV0dXJuIHBhcnNlVGV4dEVtcGhhc2lzU3R5bGUoaW1wb3J0YW50KTsKIAotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb246Ci0gICAgICAgIC8vIEZJWE1FOiBGb3Igbm93
IGp1c3Qgc3VwcG9ydCB1cHJpZ2h0IGFuZCB2ZXJ0aWNhbC1yaWdodC4KLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlVmVydGljYWxSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZVVwcmlnaHQpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluOgogICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVOb25lKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjMwNiwx
MSArMjExMyw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udEZlYXR1cmVTZXR0aW5ncyhp
bXBvcnRhbnQpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
b250S2VybmluZzoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NW
YWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEZvbnRWYXJpYW50TGlnYXR1cmVzOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwp
CiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0yMzI1LDIzICsyMTI3LDYg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
bikKICAgICAgICAgICAgIHJldHVybiBwYXJzZVdyYXBTaGFwZSgocHJvcElkID09IENTU1Byb3Bl
cnR5V2Via2l0V3JhcFNoYXBlSW5zaWRlKSwgaW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93OgotICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlQm90aCB8fCBpZCA9PSBDU1NWYWx1ZUxlZnQgfHwg
aWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZU1heGltdW0gfHwgaWQgPT0gQ1NT
VmFsdWVDbGVhcikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFRocm91Z2g6Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZVdyYXAgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0V3JhcE1hcmdpbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFBh
ZGRpbmc6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUs
IEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0V3JhcDogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1td
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJn
aW4sIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNl
U2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVz
KSwgaW1wb3J0YW50KTsKLSAgICB9CiAjaWYgRU5BQkxFKFNWRykKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gcGFyc2VTVkdWYWx1ZShwcm9wSWQsIGltcG9ydGFudCk7CkBAIC0yNjU2LDEw
MSArMjQ0MSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9v
bCBpbXBvcnRhbnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsIGludCBudW1Qcm9w
ZXJ0aWVzLCBib29sIGltcG9ydGFudCkKLXsKLSAgICAvLyBXZSB0cnkgdG8gbWF0Y2ggYXMgbWFu
eSBwcm9wZXJ0aWVzIGFzIHBvc3NpYmxlCi0gICAgLy8gV2Ugc2V0IHVwIGFuIGFycmF5IG9mIGJv
b2xlYW5zIHRvIG1hcmsgd2hpY2ggcHJvcGVydHkgaGFzIGJlZW4gZm91bmQsCi0gICAgLy8gYW5k
IHdlIHRyeSB0byBzZWFyY2ggZm9yIHByb3BlcnRpZXMgdW50aWwgaXQgbWFrZXMgbm8gbG9uZ2Vy
IGFueSBzZW5zZS4KLSAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwotCi0g
ICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIGJvb2wgZm5kWzZdOyAvLyBUcnVzdCBtZSA7KQot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQotICAgICAgICBmbmRb
aV0gPSBmYWxzZTsKLQotICAgIHdoaWxlIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7Ci0gICAg
ICAgIGZvdW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaW50IHByb3BJbmRleCA9IDA7ICFmb3Vu
ZCAmJiBwcm9wSW5kZXggPCBudW1Qcm9wZXJ0aWVzOyArK3Byb3BJbmRleCkgewotICAgICAgICAg
ICAgaWYgKCFmbmRbcHJvcEluZGV4XSkgewotICAgICAgICAgICAgICAgIGlmIChwYXJzZVZhbHVl
KHByb3BlcnRpZXNbcHJvcEluZGV4XSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICAgICAg
Zm5kW3Byb3BJbmRleF0gPSBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZmluZCBhdCBsZWFzdCBvbmUgbWF0Y2gsIHRoaXMg
aXMgYW4KLSAgICAgICAgLy8gaW52YWxpZCBzaG9ydGhhbmQgYW5kIHdlIGhhdmUgdG8gaWdub3Jl
IGl0Ci0gICAgICAgIGlmICghZm91bmQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgLy8gRmlsbCBpbiBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5p
dGlhbCB2YWx1ZS4KLSAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVy
dHlJbXBsaWNpdCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kp
IHsKLSAgICAgICAgaWYgKCFmbmRbaV0pCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0
aWVzW2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1w
b3J0YW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBDU1NQYXJzZXI6
OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsICBib29sIGlt
cG9ydGFudCkKLXsKLSAgICAvKiBGcm9tIHRoZSBDU1MgMiBzcGVjcywgOC4zCi0gICAgICogSWYg
dGhlcmUgaXMgb25seSBvbmUgdmFsdWUsIGl0IGFwcGxpZXMgdG8gYWxsIHNpZGVzLiBJZiB0aGVy
ZSBhcmUgdHdvIHZhbHVlcywgdGhlIHRvcCBhbmQKLSAgICAgKiBib3R0b20gbWFyZ2lucyBhcmUg
c2V0IHRvIHRoZSBmaXJzdCB2YWx1ZSBhbmQgdGhlIHJpZ2h0IGFuZCBsZWZ0IG1hcmdpbnMgYXJl
IHNldCB0byB0aGUgc2Vjb25kLgotICAgICAqIElmIHRoZXJlIGFyZSB0aHJlZSB2YWx1ZXMsIHRo
ZSB0b3AgaXMgc2V0IHRvIHRoZSBmaXJzdCB2YWx1ZSwgdGhlIGxlZnQgYW5kIHJpZ2h0IGFyZSBz
ZXQgdG8gdGhlCi0gICAgICogc2Vjb25kLCBhbmQgdGhlIGJvdHRvbSBpcyBzZXQgdG8gdGhlIHRo
aXJkLiBJZiB0aGVyZSBhcmUgZm91ciB2YWx1ZXMsIHRoZXkgYXBwbHkgdG8gdGhlIHRvcCwKLSAg
ICAgKiByaWdodCwgYm90dG9tLCBhbmQgbGVmdCwgcmVzcGVjdGl2ZWx5LgotICAgICAqLwotCi0g
ICAgaW50IG51bSA9IGluU2hvcnRoYW5kKCkgPyAxIDogbV92YWx1ZUxpc3QtPnNpemUoKTsKLQot
ICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7Ci0KLSAgICAvLyB0aGUgb3Jk
ZXIgaXMgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0Ci0gICAgc3dpdGNoIChudW0pIHsKLSAgICAg
ICAgY2FzZSAxOiB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwg
aW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBD
U1NWYWx1ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVz
LTFdLT52YWx1ZSgpOwotICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRo
aXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGll
c1sxXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0
aWVzWzJdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3Bl
cnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSAyOiB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVy
dGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRh
bnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVl
ICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZh
bHVlKCk7Ci0gICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJv
cGVydHlJbXBsaWNpdCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzJdLCB2
YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVz
W21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFkZFByb3Bl
cnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSAzOiB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFs
dWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFd
LCBpbXBvcnRhbnQpIHx8ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVl
ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsK
LSAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUlt
cGxpY2l0KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbM10sIHZhbHVlLCBp
bXBvcnRhbnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSA0
OiB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpIHx8Ci0gICAgICAgICAg
ICAgICAgIXBhcnNlVmFsdWUocHJvcGVydGllc1syXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1
ZShwcm9wZXJ0aWVzWzNdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6IHsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0
cnVlOwotfQotCiAvLyBhdXRvIHwgPGlkZW50aWZpZXI+CiBib29sIENTU1BhcnNlcjo6cGFyc2VQ
YWdlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmlu
ZGV4IDU1MjdkMzYxNjZmMTg5YzU3NzViMDk0MTA1NzA2Y2RhOTQ4YTNjYzYuLmM1ZTFjMDgzOGQ3
ODE5NmEzODYzZjNmOGI0MTg3YzY3MWVjZGUwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAg
LTQzLDYgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlOworY2xhc3MgQ1NTUGFyc2VyUHJvcGVydHlBcnJheTsKIGNsYXNzIENTU1By
aW1pdGl2ZVZhbHVlOwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xhc3MgQ1NTUHJvcGVydHk7CkBA
IC04NSw4ICs4Niw2IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7
IHJldHVybiBtX251bVBhcnNlZFByb3BlcnRpZXMgPiAwOyB9CiAKICAgICBib29sIHBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwotICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQo
aW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9v
bCBpbXBvcnRhbnQpOwotICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGlu
dCogcHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VDb250ZW50KGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlUXVvdGVzKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KTsKIApAQCAtMzIwLDYgKzMxOSwyNyBAQCBwdWJsaWM6CiAKICAg
ICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFs
dWUoQ1NTUGFyc2VyVmFsdWUqKTsKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
cmVhdGVQcmltaXRpdmVTdHJpbmdWYWx1ZShDU1NQYXJzZXJWYWx1ZSopOworCisgICAgLy8gRGVm
aW5lcyB1bml0cyBhbGxvd2VkIGZvciBhIGNlcnRhaW4gcHJvcGVydHksIHVzZWQgaW4gcGFyc2VV
bml0LgorICAgIGVudW0gVW5pdHMgeworICAgICAgICBGVW5rbm93biAgID0gMHgwMDAwLAorICAg
ICAgICBGSW50ZWdlciAgID0gMHgwMDAxLAorICAgICAgICBGTnVtYmVyICAgID0gMHgwMDAyLCAv
LyBSZWFsIE51bWJlcnMuCisgICAgICAgIEZQZXJjZW50ICAgPSAweDAwMDQsCisgICAgICAgIEZM
ZW5ndGggICAgPSAweDAwMDgsCisgICAgICAgIEZBbmdsZSAgICAgPSAweDAwMTAsCisgICAgICAg
IEZUaW1lICAgICAgPSAweDAwMjAsCisgICAgICAgIEZGcmVxdWVuY3kgPSAweDAwNDAsCisgICAg
ICAgIEZSZWxhdGl2ZSAgPSAweDAxMDAsCisgICAgICAgIEZOb25OZWcgICAgPSAweDAyMDAKKyAg
ICB9OworCisgICAgZnJpZW5kIGlubGluZSBVbml0cyBvcGVyYXRvciB8IChVbml0cyBhLCBVbml0
cyBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuaXRzPihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYSkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYikpOworICAgIH0KKworICAg
IGJvb2wgdmFsaWRVbml0KENTU1BhcnNlclZhbHVlKiwgVW5pdHMsIGJvb2wgc3RyaWN0KTsKICAg
ICAgICAgCiBwcml2YXRlOgogICAgIGlubGluZSBib29sIGlzSWRlbnRpZmllclN0YXJ0KCk7CkBA
IC00MDcsMjggKzQyNyw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPE93blB0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gPiBtX3JldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3I7CiAKICAgICBSZWZQdHI8
Q1NTQ2FsY1ZhbHVlPiBtX3BhcnNlZENhbGN1bGF0aW9uOwotCi0gICAgLy8gZGVmaW5lcyB1bml0
cyBhbGxvd2VkIGZvciBhIGNlcnRhaW4gcHJvcGVydHksIHVzZWQgaW4gcGFyc2VVbml0Ci0gICAg
ZW51bSBVbml0cyB7Ci0gICAgICAgIEZVbmtub3duICAgPSAweDAwMDAsCi0gICAgICAgIEZJbnRl
Z2VyICAgPSAweDAwMDEsCi0gICAgICAgIEZOdW1iZXIgICAgPSAweDAwMDIsICAvLyBSZWFsIE51
bWJlcnMKLSAgICAgICAgRlBlcmNlbnQgICA9IDB4MDAwNCwKLSAgICAgICAgRkxlbmd0aCAgICA9
IDB4MDAwOCwKLSAgICAgICAgRkFuZ2xlICAgICA9IDB4MDAxMCwKLSAgICAgICAgRlRpbWUgICAg
ICA9IDB4MDAyMCwKLSAgICAgICAgRkZyZXF1ZW5jeSA9IDB4MDA0MCwKLSAgICAgICAgRlJlbGF0
aXZlICA9IDB4MDEwMCwKLSAgICAgICAgRk5vbk5lZyAgICA9IDB4MDIwMAotICAgIH07Ci0KLSAg
ICBmcmllbmQgaW5saW5lIFVuaXRzIG9wZXJhdG9yfChVbml0cyBhLCBVbml0cyBiKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuaXRzPihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
YSkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYikpOwotICAgIH0KKyAgICBjb25zdCBDU1NQYXJz
ZXJQcm9wZXJ0eUFycmF5JiBtX3BhcnNlclByb3BlcnR5QXJyYXk7CiAKICAgICBib29sIHZhbGlk
Q2FsY3VsYXRpb25Vbml0KENTU1BhcnNlclZhbHVlKiwgVW5pdHMpOwotICAgIGJvb2wgdmFsaWRV
bml0KENTU1BhcnNlclZhbHVlKiwgVW5pdHMsIGJvb2wgc3RyaWN0KTsKIAogICAgIGJvb2wgcGFy
c2VCb3JkZXJJbWFnZVF1YWQoVW5pdHMsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mKTsKICAg
ICBpbnQgY29sb3JJbnRGcm9tVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125903</attachid>
            <date>2012-02-07 12:51:21 -0800</date>
            <delta_ts>2012-02-11 11:39:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77129-20120207175108.patch</filename>
            <type>text/plain</type>
            <size>103271</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM1OGYwYjJjZGVhMDBi
ZDJiYTEzYzBhZWQxOGUxOWRiMGFmNWY4MC4uYWNmNWE5Mzk5ZGVlYzI4N2UxOTJlMTA1NWEyYjg2
NjU2MmZhOGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAyLTA2ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFNpbXBs
aWZ5IENTUyBwcm9wZXJ0eSBwYXJzaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzcxMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIENTUyBwcm9wZXJ0eSBwYXJzaW5nIHNpbXBsaWVyIGJ5IHVz
aW5nIGEgbW9yZSBnZW5lcmljIGFwcHJvYWNoLgorICAgICAgICBXZSBub3cgaGF2ZSBvYmplY3Rz
IHdoaWNoIGFyZSB0YWtpbmcgY2FyZSBvZiBwYXJzaW5nIGEgcHJvcGVydHkgZGVwZW5kaW5nCisg
ICAgICAgIG9uIGl0cyB0eXBlLiBUaG9zZSBvYmplY3RzIGFyZSBzdG9yZWQgaW4gYW4gYXJyYXkg
Zm9yIGZhc3QgbG9va3VwIHdoZW4KKyAgICAgICAgcGFyc2luZyBhbmQgc2hhcmVkIGJldHdlZW4g
bXVsdGlwbGUgQ1NTUGFyc2VyIGluc3RhbmNlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiBJ
dCdzIGEgcmVmYWN0b3IsIG5vIG5ldyBmZWF0dXJlcywgbm8gYnVnIGZpeC4KKworICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoQ1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OkNTU1Byb3BlcnR5UGFyc2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5UGFyc2VyOjpwYXJzZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VQcmltaXRpdmUpOgorICAgICAgICAoVmFsdWVPclJhbmdlT3JU
eXBlUHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVPclJhbmdlT3JUeXBl
UHJvcGVydHlQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVPclJh
bmdlT3JUeXBlUHJvcGVydHlQYXJzZXI6OmNyZWF0ZVBhcnNlcik6CisgICAgICAgIChWYWx1ZU9y
VW5pdFByb3BlcnR5UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbHVlT3JVbml0UHJvcGVy
dHlQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVPclVuaXRQcm9w
ZXJ0eVBhcnNlcjo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKFZhbHVlTWF0Y2hQcm9wZXJ0eVBh
cnNlcik6CisgICAgICAgIChXZWJDb3JlOjpWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI6OnBhcnNl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6VmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyOjpjcmVh
dGVQYXJzZXIpOgorICAgICAgICAoVHdvVmFsdWVzU2hvcnRoYW5kUGFyc2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlR3b1ZhbHVlc1Nob3J0aGFuZFBhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpUd29WYWx1ZXNTaG9ydGhhbmRQYXJzZXI6OmNyZWF0ZVBhcnNlcik6CisgICAg
ICAgIChGb3VyVmFsdWVzU2hvcnRoYW5kUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvdXJW
YWx1ZXNTaG9ydGhhbmRQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Rm91
clZhbHVlc1Nob3J0aGFuZFBhcnNlcjo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKEdlbmVyaWNT
aG9ydGhhbmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY1Nob3J0aGFuZFBhcnNl
cjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljU2hvcnRoYW5kUGFyc2Vy
OjpjcmVhdGVQYXJzZXIpOgorICAgICAgICAoQ1NTUGFyc2VyUHJvcGVydHlBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJQcm9wZXJ0eUFycmF5OjpzaGFyZWRDU1NQYXJzZXJQcm9w
ZXJ0eUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclByb3BlcnR5QXJyYXk6OnBy
b3BlcnR5UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclByb3BlcnR5QXJyYXk6
OkNTU1BhcnNlclByb3BlcnR5QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyUHJv
cGVydHlBcnJheTo6dmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyUHJvcGVydHlB
cnJheTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyUHJvcGVydHlBcnJheTo6
c2V0UHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpDU1NQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1BhcnNl
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om9wZXJhdG9yIHwgKToKKwogMjAxMi0w
Mi0wNiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAog
ICAgICAgICBFbnN1cmUgdGltZXJzIGFuZCBvdGhlciBhY3RpdmUgRE9NIG9iamVjdHMgZG8gbm90
IGZpcmUgaW4gc3VzcGVuZGVkIGRvY3VtZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggMTFhYzljZmEzYmJjZmUwZDBlMTY0OWUxMjI1MmJmOTYwN2QxOWUzYi4uODQzN2M4N2QyYmJj
YWUzMmEyM2ZlNmQwNzQ0Nzg0ZjA4Y2Y0Y2YwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE3Miw2ICsxNzIsNDk0IEBAIHN0YXRpYyBib29sIGhhc1ByZWZpeChjb25zdCBjaGFyKiBz
dHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhciogcHJlZml4KQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorY2xhc3MgQ1NTUHJvcGVydHlQYXJzZXIgeworIHB1YmxpYzoKKyAgICAgdHlw
ZWRlZiBib29sICgqUGFyc2VGdW5jdGlvbikoaW50LCBDU1NQYXJzZXIqLCBib29sKTsKKyAgICAg
Q1NTUHJvcGVydHlQYXJzZXIoKSA6IG1fcGFyc2UoMCkgeyB9CisgICAgIENTU1Byb3BlcnR5UGFy
c2VyKFBhcnNlRnVuY3Rpb24gcGFyc2UpIDogbV9wYXJzZShwYXJzZSkgeyB9CisgICAgIGJvb2wg
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNlciwgYm9vbCBpbXBvcnRhbnQp
IGNvbnN0IHsgQVNTRVJUKG1fcGFyc2UpOyByZXR1cm4gKCptX3BhcnNlKShwcm9wSWQsIHBhcnNl
ciwgaW1wb3J0YW50KTsgfQorICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlOyB9CisgICAgIFBhcnNlRnVuY3Rpb24gcGFyc2VGdW5jdGlvbigpIHsgcmV0dXJuIG1fcGFy
c2U7IH0KKyBwcml2YXRlOgorICAgICBQYXJzZUZ1bmN0aW9uIG1fcGFyc2U7Cit9OworCitzdGF0
aWMgYm9vbCBwYXJzZVByaW1pdGl2ZShpbnQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNlciwgYm9v
bCBpbXBvcnRhbnQpCit7CisgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gcGFyc2VyLT5tX3Zh
bHVlTGlzdC0+Y3VycmVudCgpOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWU7Cisg
ICAgcGFyc2VkVmFsdWUgPSBwYXJzZXItPnBhcnNlVmFsaWRQcmltaXRpdmUodmFsdWUtPmlkLCB2
YWx1ZSk7CisgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdC0+bmV4dCgpOworCisgICAgQVNTRVJUKCFw
YXJzZXItPm1fcGFyc2VkQ2FsY3VsYXRpb24pOworICAgIGlmIChwYXJzZWRWYWx1ZSAmJiAoIXBh
cnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKSB8fCBwYXJzZXItPm1faW5QYXJzZVNob3J0aGFu
ZCkpIHsKKyAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShwcm9wSWQsIHBhcnNlZFZhbHVlLnJl
bGVhc2UoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGludCBtaW5SYW5nZSA9IENTU1ZhbHVlSW52YWxp
ZCwgaW50IG1heFJhbmdlID0gQ1NTVmFsdWVJbnZhbGlkLCB1bnNpZ25lZCB0eXBlID0gMCwgaW50
IG90aGVyVmFsdWUgPSBDU1NWYWx1ZUludmFsaWQsICBpbnQgb3RoZXJWYWx1ZTIgPSBDU1NWYWx1
ZUludmFsaWQsICBpbnQgb3RoZXJWYWx1ZTMgPSBDU1NWYWx1ZUludmFsaWQsICBpbnQgb3RoZXJW
YWx1ZTQgPSBDU1NWYWx1ZUludmFsaWQ+CitjbGFzcyBWYWx1ZU9yUmFuZ2VPclR5cGVQcm9wZXJ0
eVBhcnNlciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBDU1NQYXJzZXIqIHBhcnNlciwgYm9vbCBpbXBvcnRhbnQpCisgICAgeworICAgICAgICBDU1NQ
YXJzZXJWYWx1ZSogdmFsdWUgPSBwYXJzZXItPm1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CisgICAg
ICAgIGludCBpZCA9IHZhbHVlLT5pZDsKKyAgICAgICAgaWYgKCFpZCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CisgICAg
ICAgIGlmIChpZCA+PSBtaW5SYW5nZSAmJiBpZCA8PSBtYXhSYW5nZSkKKyAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gb3RoZXJWYWx1ZSB8
fCBpZCA9PSBvdGhlclZhbHVlMiB8fCBpZCA9PSBvdGhlclZhbHVlMyB8fCBpZCA9PSBvdGhlclZh
bHVlNCkKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBp
ZiAodmFsdWUtPnVuaXQgPT0gdHlwZSkKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKKyAgICAgICBpZiAodmFsaWRQcmltaXRpdmUpCisgICAgICAgICAgIHJldHVybiBwYXJzZVBy
aW1pdGl2ZShwcm9wSWQsIHBhcnNlciwgaW1wb3J0YW50KTsKKworICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgQ1NTUHJvcGVydHlQYXJzZXIgY3JlYXRlUGFyc2VyKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eVBhcnNlcigmcGFyc2VWYWx1ZSk7Cisg
ICAgfQorCit9OworCit0ZW1wbGF0ZSA8dW5zaWduZWQgdW5pdEZsYWdzID0gMCwgaW50IG9uZSA9
IENTU1ZhbHVlSW52YWxpZCwgaW50IHR3byA9IENTU1ZhbHVlSW52YWxpZCwgaW50IHRocmVlID0g
Q1NTVmFsdWVJbnZhbGlkLCBpbnQgZm91ciA9IENTU1ZhbHVlSW52YWxpZCwgaW50IGZpdmUgPSBD
U1NWYWx1ZUludmFsaWQ+CitjbGFzcyBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIENTU1BhcnNlciogcGFy
c2VyLCBib29sIGltcG9ydGFudCkKKyAgICB7CisgICAgICAgIENTU1BhcnNlclZhbHVlKiB2YWx1
ZSA9IHBhcnNlci0+bV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKyAgICAgICAgaW50IGlkID0gdmFs
dWUtPmlkOworICAgICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CisgICAgICAgIGlm
IChpZCAmJiAoaWQgPT0gb25lIHx8IGlkID09IHR3byB8fCBpZCA9PSB0aHJlZSB8fCBpZCA9PSBm
b3VyIHx8IGlkID09IGZpdmUpKQorICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICFpZCAmJiBwYXJzZXIt
PnZhbGlkVW5pdCh2YWx1ZSwgc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyOjpVbml0cz4odW5pdEZsYWdz
KSwgcGFyc2VyLT5tX3N0cmljdCk7CisKKyAgICAgICAgaWYgKHZhbGlkUHJpbWl0aXZlKQorICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUHJpbWl0aXZlKHByb3BJZCwgcGFyc2VyLCBpbXBvcnRhbnQp
OworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgQ1NTUHJvcGVy
dHlQYXJzZXIgY3JlYXRlUGFyc2VyKCkKKyAgICB7CisgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5
UGFyc2VyKCZwYXJzZVZhbHVlKTsKKyAgICB9CisKK307CisKK3RlbXBsYXRlIDxpbnQgb25lID0g
Q1NTVmFsdWVJbnZhbGlkLCBpbnQgdHdvID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgdGhyZWUgPSBD
U1NWYWx1ZUludmFsaWQsIGludCBmb3VyID0gQ1NTVmFsdWVJbnZhbGlkLCBpbnQgZml2ZSA9IENT
U1ZhbHVlSW52YWxpZCwgaW50IHNpeCA9IENTU1ZhbHVlSW52YWxpZCwKKyAgICAgICAgICAgICAg
ICBpbnQgc2V2ZW4gPSBDU1NWYWx1ZUludmFsaWQsIGludCBlaWdodCA9IENTU1ZhbHVlSW52YWxp
ZCwgaW50IG5pbmUgPSBDU1NWYWx1ZUludmFsaWQ+CitjbGFzcyBWYWx1ZU1hdGNoUHJvcGVydHlQ
YXJzZXIgeworcHVibGljOgorICAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQs
IENTU1BhcnNlciogcGFyc2VyLCBib29sIGltcG9ydGFudCkKKyAgICAgeworICAgICAgICBpbnQg
aWQgPSBwYXJzZXItPm1fdmFsdWVMaXN0LT5jdXJyZW50KCktPmlkOworICAgICAgICBib29sIHZh
bGlkUHJpbWl0aXZlID0gaWQgIT0gQ1NTVmFsdWVJbnZhbGlkICYmIChpZCA9PSBvbmUgfHwgaWQg
PT0gdHdvIHx8IGlkID09IHRocmVlIHx8IGlkID09IGZvdXIgfHwgaWQgPT0gZml2ZSB8fCBpZCA9
PSBzaXggfHwgaWQgPT0gc2V2ZW4gfHwgaWQgPT0gZWlnaHQgfHwgaWQgPT0gbmluZSk7CisgICAg
ICAgIGlmICh2YWxpZFByaW1pdGl2ZSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVByaW1pdGl2
ZShwcm9wSWQsIHBhcnNlciwgaW1wb3J0YW50KTsKKworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgIH0KKyAgICAgc3RhdGljIENTU1Byb3BlcnR5UGFyc2VyIGNyZWF0ZVBhcnNlcigpCisgICAg
IHsKKyAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VyKCZwYXJzZVZhbHVlKTsKKyAgICAg
fQorfTsKKwordGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVydHlJbnZhbGlk
LCBDU1NQcm9wZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZD4KK2NsYXNzIFR3b1ZhbHVl
c1Nob3J0aGFuZFBhcnNlciB7CitwdWJsaWM6CisgICAgICAgIHN0YXRpYyBib29sIHBhcnNlVmFs
dWUoaW50IHByb3BJZCwgQ1NTUGFyc2VyKiBwYXJzZXIsIGJvb2wgaW1wb3J0YW50KQorICAgICAg
ICB7CisgICAgICAgICAgICBpbnQgbnVtID0gcGFyc2VyLT5tX2luUGFyc2VTaG9ydGhhbmQgPyAx
IDogcGFyc2VyLT5tX3ZhbHVlTGlzdC0+c2l6ZSgpOworCisgICAgICAgICAgICBpZiAobnVtID09
IDEpIHsKKyAgICAgICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZShwYXJzZXIsIHByb3BJ
ZCk7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRh
bnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
Q1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXNbcGFyc2VyLT5tX251
bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5h
ZGRQcm9wZXJ0eSh0d28sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobnVtID09IDIpIHsKKyAg
ICAgICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZShwYXJzZXIsIHByb3BJZCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQpIHx8ICFw
YXJzZXItPnBhcnNlVmFsdWUodHdvLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgIHN0YXRpYyBDU1NQ
cm9wZXJ0eVBhcnNlciBjcmVhdGVQYXJzZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIENTU1By
b3BlcnR5UGFyc2VyKCZwYXJzZVZhbHVlKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8Q1NTUHJv
cGVydHlJRCBvbmUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIENTU1Byb3BlcnR5SUQgdHdvID0gQ1NT
UHJvcGVydHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIHRocmVlID0gQ1NTUHJvcGVydHlJbnZhbGlk
LCBDU1NQcm9wZXJ0eUlEIGZvdXIgPSBDU1NQcm9wZXJ0eUludmFsaWQ+CitjbGFzcyBGb3VyVmFs
dWVzU2hvcnRoYW5kUGFyc2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVl
KGludCBwcm9wSWQsIENTU1BhcnNlciogcGFyc2VyLCBib29sIGltcG9ydGFudCkKKyAgICB7Cisg
ICAgICAgIC8qIEZyb20gdGhlIENTUyAyIHNwZWNzLCA4LjMKKyAgICAgICAgKiBJZiB0aGVyZSBp
cyBvbmx5IG9uZSB2YWx1ZSwgaXQgYXBwbGllcyB0byBhbGwgc2lkZXMuIElmIHRoZXJlIGFyZSB0
d28gdmFsdWVzLCB0aGUgdG9wIGFuZAorICAgICAgICAqIGJvdHRvbSBtYXJnaW5zIGFyZSBzZXQg
dG8gdGhlIGZpcnN0IHZhbHVlIGFuZCB0aGUgcmlnaHQgYW5kIGxlZnQgbWFyZ2lucyBhcmUgc2V0
IHRvIHRoZSBzZWNvbmQuCisgICAgICAgICogSWYgdGhlcmUgYXJlIHRocmVlIHZhbHVlcywgdGhl
IHRvcCBpcyBzZXQgdG8gdGhlIGZpcnN0IHZhbHVlLCB0aGUgbGVmdCBhbmQgcmlnaHQgYXJlIHNl
dCB0byB0aGUKKyAgICAgICAgKiBzZWNvbmQsIGFuZCB0aGUgYm90dG9tIGlzIHNldCB0byB0aGUg
dGhpcmQuIElmIHRoZXJlIGFyZSBmb3VyIHZhbHVlcywgdGhleSBhcHBseSB0byB0aGUgdG9wLAor
ICAgICAgICAqIHJpZ2h0LCBib3R0b20sIGFuZCBsZWZ0LCByZXNwZWN0aXZlbHkuCisgICAgICAg
ICovCisKKyAgICAgICAgaW50IG51bSA9IHBhcnNlci0+bV9pblBhcnNlU2hvcnRoYW5kID8gMSA6
IHBhcnNlci0+bV92YWx1ZUxpc3QtPnNpemUoKTsKKworICAgICAgICBTaG9ydGhhbmRTY29wZSBz
Y29wZShwYXJzZXIsIHByb3BJZCk7CisKKyAgICAgICAgLy8gVGhlIG9yZGVyIGlzIHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdC4KKyAgICAgICAgc3dpdGNoIChudW0pIHsKKyAgICAgICAgY2FzZSAx
OiB7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRh
bnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
Q1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXNbcGFyc2VyLT5tX251
bVBhcnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICAgICAgSW1wbGljaXRT
Y29wZSBpbXBsaWNpdFNjb3BlKHBhcnNlciwgUHJvcGVydHlJbXBsaWNpdCk7CisgICAgICAgICAg
ICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eSh0d28sIHZhbHVlLCBpbXBvcnRhbnQpOworICAgICAg
ICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkodGhyZWUsIHZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkoZm91ciwgdmFsdWUsIGltcG9ydGFu
dCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAyOiB7
CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUob25lLCBpbXBvcnRhbnQp
IHx8ICFwYXJzZXItPnBhcnNlVmFsdWUodHdvLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFy
c2VyLT5tX3BhcnNlZFByb3BlcnRpZXNbcGFyc2VyLT5tX251bVBhcnNlZFByb3BlcnRpZXMtMl0t
PnZhbHVlKCk7CisgICAgICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBh
cnNlciwgUHJvcGVydHlJbXBsaWNpdCk7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9w
ZXJ0eSh0aHJlZSwgdmFsdWUsIGltcG9ydGFudCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBw
YXJzZXItPm1fcGFyc2VkUHJvcGVydGllc1twYXJzZXItPm1fbnVtUGFyc2VkUHJvcGVydGllcy0y
XS0+dmFsdWUoKTsKKyAgICAgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KGZvdXIsIHZh
bHVlLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgMzogeworICAgICAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKG9u
ZSwgaW1wb3J0YW50KSB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHR3bywgaW1wb3J0YW50KSB8fCAh
cGFyc2VyLT5wYXJzZVZhbHVlKHRocmVlLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2Vy
LT5tX3BhcnNlZFByb3BlcnRpZXNbcGFyc2VyLT5tX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZh
bHVlKCk7CisgICAgICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHBhcnNl
ciwgUHJvcGVydHlJbXBsaWNpdCk7CisgICAgICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0
eShmb3VyLCB2YWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIDQ6IHsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFy
c2VWYWx1ZShvbmUsIGltcG9ydGFudCkgfHwgIXBhcnNlci0+cGFyc2VWYWx1ZSh0d28sIGltcG9y
dGFudCkKKyAgICAgICAgICAgICAgICB8fCAhcGFyc2VyLT5wYXJzZVZhbHVlKHRocmVlLCBpbXBv
cnRhbnQpIHx8ICFwYXJzZXItPnBhcnNlVmFsdWUoZm91ciwgaW1wb3J0YW50KSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIENTU1By
b3BlcnR5UGFyc2VyIGNyZWF0ZVBhcnNlcigpCisgICAgeworICAgICAgICByZXR1cm4gQ1NTUHJv
cGVydHlQYXJzZXIoJnBhcnNlVmFsdWUpOworICAgIH0KK307CisKKwordGVtcGxhdGUgPHVuc2ln
bmVkIG51bVByb3BlcnRpZXMsIENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVydHlJbnZhbGlk
LCBDU1NQcm9wZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCB0
aHJlZSA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmb3VyID0gQ1NTUHJvcGVy
dHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIGZpdmUgPSBDU1NQcm9wZXJ0eUludmFsaWQ+CitjbGFz
cyBHZW5lcmljU2hvcnRoYW5kUGFyc2VyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIENTU1BhcnNlciogcGFyc2VyLCBib29sIGltcG9ydGFudCkKKyAg
ICB7CisgICAgICAgIHsKKyAgICAgICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkgcHJvcGVy
dGllcyBhcyBwb3NzaWJsZQorICAgICAgICAvLyBXZSBzZXQgdXAgYW4gYXJyYXkgb2YgYm9vbGVh
bnMgdG8gbWFyayB3aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3VuZCwKKyAgICAgICAgLy8gYW5k
IHdlIHRyeSB0byBzZWFyY2ggZm9yIHByb3BlcnRpZXMgdW50aWwgaXQgbWFrZXMgbm8gbG9uZ2Vy
IGFueSBzZW5zZS4KKyAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUocGFyc2VyLCBwcm9wSWQp
OworCisgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBmbmRbNl07IC8v
IFRydXN0IG1lIDspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0
aWVzOyBpKyspCisgICAgICAgIGZuZFtpXSA9IGZhbHNlOworCisgICAgICAgIHdoaWxlIChwYXJz
ZXItPm1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKKyAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByb3BJbmRleCA9IDA7ICFmb3VuZCAmJiBwcm9w
SW5kZXggPCBudW1Qcm9wZXJ0aWVzOyArK3Byb3BJbmRleCkgeworICAgICAgICAgICAgaWYgKCFm
bmRbcHJvcEluZGV4XSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZXItPnBhcnNlVmFsdWUo
cHJvcGVydGllc1twcm9wSW5kZXhdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIGZuZFtw
cm9wSW5kZXhdID0gZm91bmQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQgYXQgbGVhc3Qgb25lIG1hdGNoLCB0aGlzIGlzIGFu
CisgICAgICAgIC8vIGludmFsaWQgc2hvcnRoYW5kIGFuZCB3ZSBoYXZlIHRvIGlnbm9yZSBpdC4K
KyAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEZpbGwgaW4gYW55IHJlbWFpbmluZyBwcm9wZXJ0aWVzIHdpdGggdGhl
IGluaXRpYWwgdmFsdWUuCisgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZShwYXJz
ZXIsIFByb3BlcnR5SW1wbGljaXQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtUHJvcGVydGllczsgKytpKSB7CisgICAgICAgICAgICBpZiAoIWZuZFtpXSkKKyAgICAgICAg
ICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHBhcnNlci0+Y3NzVmFs
dWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRSA6IG5vdCB2ZXJ5IGdlbmVy
aWMgaGVyZS4KKyAgICAgICAgaWYgKHByb3BJZCA9PSBDU1NQcm9wZXJ0eUJvcmRlcikgeworICAg
ICAgICAgICAgLy8gVGhlIENTUzMgQm9yZGVycyBhbmQgQmFja2dyb3VuZHMgc3BlY2lmaWNhdGlv
biBzYXlzIHRoYXQgYm9yZGVyIGFsc28gcmVzZXRzIGJvcmRlci1pbWFnZS4gSXQncyBhcworICAg
ICAgICAgICAgLy8gdGhvdWdoIGEgdmFsdWUgb2Ygbm9uZSB3YXMgc3BlY2lmaWVkIGZvciB0aGUg
aW1hZ2UuCisgICAgICAgICAgICBwYXJzZXItPmFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2UsIHBhcnNlci0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVl
KCksIGltcG9ydGFudCk7CisgICAgICAgIH0KKworICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHN0YXRpYyBDU1NQcm9wZXJ0eVBhcnNlciBjcmVhdGVQYXJzZXIoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VyKCZwYXJzZVZhbHVlKTsKKyAgICB9Citwcml2YXRl
OgorICAgIHN0YXRpYyBjb25zdCBpbnQgcHJvcGVydGllc1s1XTsKK307Cit0ZW1wbGF0ZSA8dW5z
aWduZWQgbnVtUHJvcGVydGllcywgQ1NTUHJvcGVydHlJRCBvbmUsIENTU1Byb3BlcnR5SUQgdHdv
ICwgQ1NTUHJvcGVydHlJRCB0aHJlZSAsIENTU1Byb3BlcnR5SUQgZm91ciwgQ1NTUHJvcGVydHlJ
RCBmaXZlPgorY29uc3QgaW50IEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8bnVtUHJvcGVydGllcywg
b25lLCB0d28sIHRocmVlLCBmb3VyLCBmaXZlPjo6cHJvcGVydGllc1s1XSA9ICB7IG9uZSwgdHdv
LCB0aHJlZSwgZm91ciwgZml2ZSB9OworCitjbGFzcyBDU1NQYXJzZXJQcm9wZXJ0eUFycmF5IHsK
K1dURl9NQUtFX05PTkNPUFlBQkxFKENTU1BhcnNlclByb3BlcnR5QXJyYXkpOworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCBDU1NQYXJzZXJQcm9wZXJ0eUFycmF5JiBzaGFyZWRDU1NQYXJzZXJQ
cm9wZXJ0eUFycmF5KCkKKyAgICB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUGFy
c2VyUHJvcGVydHlBcnJheSwgY3NzUGFyc2VyUHJvcGVydHlBcnJheUluc3RhbmNlLCAoKSk7Cisg
ICAgICAgIHJldHVybiBjc3NQYXJzZXJQcm9wZXJ0eUFycmF5SW5zdGFuY2U7CisgICAgfQorCisg
ICAgY29uc3QgQ1NTUHJvcGVydHlQYXJzZXIgcHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWxpZChwcm9wZXJ0eSkpOwor
ICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVBhcnNlckFycmF5W2luZGV4KHByb3BlcnR5KV07Cisg
ICAgfQorIHByaXZhdGU6CisgICAgQ1NTUGFyc2VyUHJvcGVydHlBcnJheSgpCisgICAgeworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkKKyAgICAgICAg
ICAgIG1fcHJvcGVydHlQYXJzZXJBcnJheVtpXSA9IENTU1Byb3BlcnR5UGFyc2VyKCk7CisKKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlCb3JkZXIsIEdlbmVyaWNTaG9ydGhh
bmRQYXJzZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHls
ZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0
UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIEdlbmVyaWNTaG9ydGhhbmRQ
YXJzZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcj46OmNyZWF0ZVBhcnNlcigp
KTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0
aCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFy
c2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcp
LCBDU1NWYWx1ZVRoaW4sIENTU1ZhbHVlTWVkaXVtLCBDU1NWYWx1ZVRoaWNrPjo6Y3JlYXRlUGFy
c2VyKCkpOyAvLyB0aGluIHwgbWVkaXVtIHwgdGhpY2sgfCA8bGVuZ3RoPiB8IGluaGVyaXQKKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgVmFsdWVN
YXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQ29sbGFwc2UsIENTU1ZhbHVlU2VwYXJhdGU+Ojpj
cmVhdGVQYXJzZXIoKSk7IC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUgfCBpbmhlcml0CisgICAgICAg
IHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIEZvdXJWYWx1ZXNTaG9y
dGhhbmRQYXJzZXI8Q1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0LCBHZW5lcmljU2hvcnRoYW5kUGFyc2VyPDMsIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0Q29sb3I+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5
UGFyc2VyKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFy
c2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlVGhpbiwgQ1NTVmFsdWVN
ZWRpdW0sIENTU1ZhbHVlVGhpY2s+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIHRoaW4gfCBtZWRpdW0g
fCB0aGljayB8IDxsZW5ndGg+IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBHZW5lcmljU2hvcnRoYW5kUGFyc2VyPDMsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3I+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgVmFsdWVPclVuaXRQcm9wZXJ0
eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpLCBDU1NWYWx1ZVRoaW4sIENTU1Zh
bHVlTWVkaXVtLCBDU1NWYWx1ZVRoaWNrPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyB0aGluIHwgbWVk
aXVtIHwgdGhpY2sgfCA8bGVuZ3RoPiB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJz
ZXIoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBUd29WYWx1ZXNTaG9ydGhhbmRQYXJzZXI8Q1NT
UHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJWZXJ0aWNhbFNwYWNpbmc+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIEZvdXJWYWx1ZXNTaG9ydGhhbmRQYXJz
ZXI8Q1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxl
LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVy
dHlCb3JkZXJUb3AsIEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8MywgQ1NTUHJvcGVydHlCb3JkZXJU
b3BXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BD
b2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJv
cGVydHlCb3JkZXJUb3BXaWR0aCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihD
U1NQYXJzZXI6OkZOb25OZWcpLCBDU1NWYWx1ZVRoaW4sIENTU1ZhbHVlTWVkaXVtLCBDU1NWYWx1
ZVRoaWNrPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyB0aGluIHwgbWVkaXVtIHwgdGhpY2sgfCA8bGVu
Z3RoPiB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlCb3Jk
ZXJXaWR0aCwgRm91clZhbHVlc1Nob3J0aGFuZFBhcnNlcjxDU1NQcm9wZXJ0eUJvcmRlclRvcFdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoPjo6Y3JlYXRlUGFyc2VyKCkpOworICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eUJvdHRvbSwgVmFsdWVPclVuaXRQcm9w
ZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSwgQ1NTVmFsdWVBdXRvPjo6
Y3JlYXRlUGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhl
cml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5Qm94U2l6aW5nLCBWYWx1
ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVCb3JkZXJCb3gsIENTU1ZhbHVlQ29udGVudEJv
eD46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVy
dHlDYXB0aW9uU2lkZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTGVmdCwgQ1NT
VmFsdWVSaWdodCwgQ1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tPjo6Y3JlYXRlUGFyc2VyKCkp
OyAvLyB0b3AgfCBib3R0b20gfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0CisgICAgICAgIHNldFBy
b3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5Q2xlYXIsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxD
U1NWYWx1ZU5vbmUsIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVCb3RoPjo6
Y3JlYXRlUGFyc2VyKCkpOyAvLyBub25lIHwgbGVmdCB8IHJpZ2h0IHwgYm90aCB8IGluaGVyaXQK
KyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIFZhbHVlTWF0
Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUx0ciwgQ1NTVmFsdWVSdGw+OjpjcmVhdGVQYXJzZXIo
KSk7CisgICAgICAgIC8vIGlubGluZSB8IGJsb2NrIHwgbGlzdC1pdGVtIHwgcnVuLWluIHwgaW5s
aW5lLWJsb2NrIHwgdGFibGUgfAorICAgICAgICAvLyBpbmxpbmUtdGFibGUgfCB0YWJsZS1yb3ct
Z3JvdXAgfCB0YWJsZS1oZWFkZXItZ3JvdXAgfCB0YWJsZS1mb290ZXItZ3JvdXAgfCB0YWJsZS1y
b3cgfAorICAgICAgICAvLyB0YWJsZS1jb2x1bW4tZ3JvdXAgfCB0YWJsZS1jb2x1bW4gfCB0YWJs
ZS1jZWxsIHwgdGFibGUtY2FwdGlvbiB8IC13ZWJraXQtYm94IHwgLXdlYmtpdC1pbmxpbmUtYm94
IHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgLy8gLXdlYmtpdC1mbGV4Ym94IHwgLXdlYmtpdC1p
bmxpbmUtZmxleGJveCB8IC13ZWJraXQtZ3JpZCB8IC13ZWJraXQtaW5saW5lLWdyaWQKKyAgICAg
ICAgI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCisgICAgICAgIHNldFByb3BlcnR5UGFyc2Vy
KENTU1Byb3BlcnR5RGlzcGxheSwgVmFsdWVPclJhbmdlT3JUeXBlUHJvcGVydHlQYXJzZXI8Q1NT
VmFsdWVJbmxpbmUsIENTU1ZhbHVlV2Via2l0SW5saW5lRmxleGJveCwgMCwgQ1NTVmFsdWVOb25l
LCBDU1NWYWx1ZVdlYmtpdEdyaWQsIENTU1ZhbHVlV2Via2l0SW5saW5lR3JpZD46OmNyZWF0ZVBh
cnNlcigpKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJv
cGVydHlEaXNwbGF5LCBWYWx1ZU9yUmFuZ2VPclR5cGVQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUlu
bGluZSwgQ1NTVmFsdWVXZWJraXRJbmxpbmVGbGV4Ym94LCAwLCBDU1NWYWx1ZU5vbmU+OjpjcmVh
dGVQYXJzZXIoKSk7CisgICAgICAgICNlbmRpZgorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eUVtcHR5Q2VsbHMsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZVNo
b3csIENTU1ZhbHVlSGlkZT46OmNyZWF0ZVBhcnNlcigpKTsgLy8gc2hvdyB8IGhpZGUgfCBpbmhl
cml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5RmxvYXQsIFZhbHVlTWF0
Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQsIENTU1ZhbHVlTm9u
ZSwgQ1NTVmFsdWVDZW50ZXIsIENTU1ZhbHVlV2Via2l0UG9zaXRpb25lZD46OmNyZWF0ZVBhcnNl
cigpKTsgLy8gbGVmdCB8IHJpZ2h0IHwgbm9uZSB8IHBvc2l0aW9uZWQgfCBjZW50ZXIgKGZvciBi
dWdneSBDU1MsIG1hcHMgdG8gbm9uZSkKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJv
cGVydHlJbWFnZVJlbmRlcmluZywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQXV0
bywgQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0Pjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBh
dXRvIHwgb3B0aW1pemVDb250cmFzdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eUxlZnQsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
UGVyY2VudCksIENTU1ZhbHVlQXV0bz46OmNyZWF0ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8
cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8Q1NTUGFy
c2VyOjpGTGVuZ3RoLCBDU1NWYWx1ZU5vcm1hbD46OmNyZWF0ZVBhcnNlcigpKTsgLy8gbm9ybWFs
IHwgPGxlbmd0aD4gfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3Bl
cnR5TGluZUhlaWdodCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQ1NTUGFyc2VyOjpGTnVtYmVyKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQp
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlTm9y
bWFsPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBub3JtYWwgfCA8bnVtYmVyPiB8IDxsZW5ndGg+IHwg
PHBlcmNlbnRhZ2U+IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eUxpc3RTdHlsZSwgR2VuZXJpY1Nob3J0aGFuZFBhcnNlcjwzLCBDU1NQcm9wZXJ0eUxpc3RT
dHlsZVR5cGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIENTU1Byb3BlcnR5TGlzdFN0
eWxlSW1hZ2U+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENT
U1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NW
YWx1ZUluc2lkZSwgQ1NTVmFsdWVPdXRzaWRlPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBpbnNpZGUg
fCBvdXRzaWRlIHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0
eUxpc3RTdHlsZVR5cGUsIFZhbHVlT3JSYW5nZU9yVHlwZVByb3BlcnR5UGFyc2VyPENTU1ZhbHVl
RGlzYywgQ1NTVmFsdWVLYXRha2FuYUlyb2hhLCAwLCBDU1NWYWx1ZU5vbmU+OjpjcmVhdGVQYXJz
ZXIoKSk7IC8vIFNlZSBzZWN0aW9uIENTU19QUk9QX0xJU1RfU1RZTEVfVFlQRSBvZiBmaWxlIENT
U1ZhbHVlS2V5d29yZHMuaW4gZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBsaXN0LXN0eWxlLXR5
cGVzLgorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU1hcmdpbiwgRm91clZh
bHVlc1Nob3J0aGFuZFBhcnNlcjxDU1NQcm9wZXJ0eU1hcmdpblRvcCwgQ1NTUHJvcGVydHlNYXJn
aW5SaWdodCwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIENTU1Byb3BlcnR5TWFyZ2luTGVmdD46
OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlN
YXJnaW5Cb3R0b20sIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2Vy
OjpGUGVyY2VudCksIENTU1ZhbHVlQXV0bz46OmNyZWF0ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4g
fCA8cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNl
cihDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCksIENTU1ZhbHVlQXV0bz46OmNyZWF0ZVBhcnNlcigpKTsg
Ly8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJpdAorICAgICAgICBzZXRQ
cm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBWYWx1ZU9yVW5pdFByb3BlcnR5
UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpLCBDU1NWYWx1ZUF1dG8+OjpjcmVh
dGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQK
KyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIFZhbHVlT3JV
bml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0
aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCksIENTU1ZhbHVl
QXV0bz46OmNyZWF0ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRv
IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU1heEhlaWdo
dCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFy
c2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50
KSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpLCBDU1NWYWx1ZU5v
bmUsIENTU1ZhbHVlSW50cmluc2ljLCBDU1NWYWx1ZU1pbkludHJpbnNpYz46OmNyZWF0ZVBhcnNl
cigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBub25lIHwgaW5oZXJpdAorICAgICAg
ICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eU1heFdpZHRoLCBWYWx1ZU9yVW5pdFByb3Bl
cnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVJbnRyaW5z
aWMsIENTU1ZhbHVlTWluSW50cmluc2ljPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8
IDxwZXJjZW50YWdlPiB8IG5vbmUgfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2Vy
KENTU1Byb3BlcnR5TWluSGVpZ2h0LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19j
YXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KENTU1BhcnNlcjo6RlBlcmNlbnQpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6
Rk5vbk5lZyksIENTU1ZhbHVlSW50cmluc2ljLCBDU1NWYWx1ZU1pbkludHJpbnNpYz46OmNyZWF0
ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CisgICAgICAg
IHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5TWluV2lkdGgsIFZhbHVlT3JVbml0UHJvcGVy
dHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKSwgQ1NTVmFsdWVJbnRyaW5zaWMsIENTU1ZhbHVlTWlu
SW50cmluc2ljPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8
IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlPcGFjaXR5LCBW
YWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPENTU1BhcnNlcjo6Rk51bWJlcj46OmNyZWF0ZVBhcnNl
cigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlPdXRsaW5lLCBHZW5l
cmljU2hvcnRoYW5kUGFyc2VyPDMsIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0
eU91dGxpbmVTdHlsZSwgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I+OjpjcmVhdGVQYXJzZXIoKSk7
CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5T3V0bGluZU9mZnNldCwgVmFs
dWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
TGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KT46OmNy
ZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlPdXRs
aW5lU3R5bGUsIFZhbHVlT3JSYW5nZU9yVHlwZVByb3BlcnR5UGFyc2VyPENTU1ZhbHVlSW5zZXQs
IENTU1ZhbHVlRG91YmxlLCAwLCBDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9uZT46OmNyZWF0ZVBh
cnNlcigpKTsgLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0byB8IGluaGVy
aXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIFZh
bHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6
Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKSwgQ1NT
VmFsdWVUaGluLCBDU1NWYWx1ZU1lZGl1bSwgQ1NTVmFsdWVUaGljaz46OmNyZWF0ZVBhcnNlcigp
KTsgLy8gPGJvcmRlci13aWR0aD4gfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2Vy
KENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVW
aXNpYmxlLCBDU1NWYWx1ZUhpZGRlbiwgQ1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlQXV0bywgQ1NT
VmFsdWVPdmVybGF5LCBDU1NWYWx1ZVdlYmtpdE1hcnF1ZWU+OjpjcmVhdGVQYXJzZXIoKSk7IC8v
IHZpc2libGUgfCBoaWRkZW4gfCBzY3JvbGwgfCBhdXRvIHwgbWFycXVlZSB8IG92ZXJsYXkgfCBp
bmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBW
YWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRlbiwg
Q1NTVmFsdWVTY3JvbGwsIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVPdmVybGF5LCBDU1NWYWx1ZVdl
YmtpdE1hcnF1ZWU+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIHZpc2libGUgfCBoaWRkZW4gfCBzY3Jv
bGwgfCBhdXRvIHwgbWFycXVlZSB8IG92ZXJsYXkgfCBpbmhlcml0CisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5UGFkZGluZywgRm91clZhbHVlc1Nob3J0aGFuZFBhcnNlcjxD
U1NQcm9wZXJ0eVBhZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBDU1NQcm9wZXJ0
eVBhZGRpbmdCb3R0b20sIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQ+OjpjcmVhdGVQYXJzZXIoKSk7
CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgVmFs
dWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
TGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpPjo6Y3JlYXRlUGFyc2VyKCkp
OyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPgorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19j
YXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KENTU1BhcnNlcjo6RlBlcmNlbnQpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6
Rk5vbk5lZyk+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+Cisg
ICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBWYWx1ZU9y
VW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5n
dGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyk+OjpjcmVhdGVQYXJzZXIoKSk7IC8v
IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1By
b3BlcnR5UGFkZGluZ1RvcCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQ
YXJzZXI6OkZQZXJjZW50KSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25O
ZWcpPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPgorICAgICAg
ICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBWYWx1ZU1hdGNo
UHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUFsd2F5cywgQ1NTVmFsdWVBdm9p
ZCwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0Pjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBhdXRv
IHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0CisgICAgICAgIHNldFBy
b3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlLCBWYWx1ZU1hdGNoUHJvcGVy
dHlQYXJzZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUFsd2F5cywgQ1NTVmFsdWVBdm9pZCwgQ1NT
VmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0Pjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBhdXRvIHwgYWx3
YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5
UGFyc2VyKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJz
ZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUF2b2lkPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBhdm9p
ZCB8IGF1dG8gfCBpbmhlcml0CisgICAgICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZp
c2libGVGaWxsIHwgdmlzaWJsZVN0cm9rZSB8IHZpc2libGUgfAorICAgICAgICAvLyBwYWludGVk
IHwgZmlsbCB8IHN0cm9rZSB8IGF1dG8gfCBhbGwgfCBpbmhlcml0CisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgVmFsdWVPclJhbmdlT3JUeXBlUHJv
cGVydHlQYXJzZXI8Q1NTVmFsdWVWaXNpYmxlcGFpbnRlZCwgQ1NTVmFsdWVTdHJva2UsIDAsIENT
U1ZhbHVlVmlzaWJsZSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUFsbCwgQ1NTVmFsdWVBdXRvPjo6
Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVBv
c2l0aW9uLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVTdGF0aWMsIENTU1ZhbHVl
UmVsYXRpdmUsIENTU1ZhbHVlQWJzb2x1dGUsIENTU1ZhbHVlRml4ZWQ+OjpjcmVhdGVQYXJzZXIo
KSk7IC8vIHN0YXRpYyB8IHJlbGF0aXZlIHwgYWJzb2x1dGUgfCBmaXhlZCB8IGluaGVyaXQKKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlSZXNpemUsIFZhbHVlTWF0Y2hQcm9w
ZXJ0eVBhcnNlcjxDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQm90aCwgQ1NTVmFsdWVIb3Jpem9udGFs
LCBDU1NWYWx1ZVZlcnRpY2FsLCBDU1NWYWx1ZUF1dG8+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIG5v
bmUgfCBib3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYXV0bworICAgICAgICBzZXRQcm9w
ZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVJpZ2h0LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0
YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpLCBDU1NWYWx1ZUF1dG8+OjpjcmVhdGVQYXJzZXIo
KSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKKyAgICAgICAg
c2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlTcGVhaywgVmFsdWVNYXRjaFByb3BlcnR5UGFy
c2VyPENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlU3BlbGxPdXQsIENTU1Zh
bHVlRGlnaXRzLCBDU1NWYWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiwgQ1NTVmFsdWVOb1B1bmN0dWF0
aW9uPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBub25lIHwgbm9ybWFsIHwgc3BlbGwtb3V0IHwgZGln
aXRzIHwgbGl0ZXJhbC1wdW5jdHVhdGlvbiB8IG5vLXB1bmN0dWF0aW9uIHwgaW5oZXJpdAorICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0LCBWYWx1ZU1hdGNo
UHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUZpeGVkPjo6Y3JlYXRlUGFyc2Vy
KCkpOyAvLyBhdXRvIHwgZml4ZWQgfCBpbmhlcml0CisgICAgICAgIC8vIGxlZnQgfCByaWdodCB8
IGNlbnRlciB8IGp1c3RpZnkgfCB3ZWJraXRfbGVmdCB8IHdlYmtpdF9yaWdodCB8IHdlYmtpdF9j
ZW50ZXIgfCB3ZWJraXRfbWF0Y2hfcGFyZW50IHwKKyAgICAgICAgLy8gc3RhcnQgfCBlbmQgfCA8
c3RyaW5nPiB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlU
ZXh0QWxpZ24sIFZhbHVlT3JSYW5nZU9yVHlwZVByb3BlcnR5UGFyc2VyPENTU1ZhbHVlV2Via2l0
QXV0bywgQ1NTVmFsdWVXZWJraXRNYXRjaFBhcmVudCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19T
VFJJTkcsIENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kPjo6Y3JlYXRlUGFyc2VyKCkpOworICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVRleHRJbmRlbnQsIFZhbHVlT3JVbml0
UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCk+OjpjcmVhdGVQYXJz
ZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdAorICAgICAgICBzZXRQ
cm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUsIFZhbHVlTWF0Y2hQ
cm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUNvbnRpbnVvdXMsIENTU1ZhbHVlU2tpcFdoaXRlU3BhY2U+
OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5
VGV4dExpbmVUaHJvdWdoU3R5bGUsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZU5v
bmUsIENTU1ZhbHVlU29saWQsIENTU1ZhbHVlRG91YmxlLCBDU1NWYWx1ZURhc2hlZCwgQ1NTVmFs
dWVEb3REYXNoLCBDU1NWYWx1ZURvdERvdERhc2gsIENTU1ZhbHVlV2F2ZT46OmNyZWF0ZVBhcnNl
cigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91
Z2hXaWR0aCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q1NTUGFyc2VyOjpGTnVtYmVyKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZM
ZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpLCBDU1NW
YWx1ZUF1dG8sIENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVRoaW4sIENTU1ZhbHVlTWVkaXVtLCBD
U1NWYWx1ZVRoaWNrPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNl
cihDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1Zh
bHVlQ2xpcCwgQ1NTVmFsdWVFbGxpcHNpcz46OmNyZWF0ZVBhcnNlcigpKTsgLy8gY2xpcCB8IGVs
bGlwc2lzCisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5l
TW9kZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQ29udGludW91cywgQ1NTVmFs
dWVTa2lwV2hpdGVTcGFjZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQ
YXJzZXIoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFy
c2VyPENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVTb2xpZCwgQ1NTVmFsdWVEb3VibGUsIENTU1ZhbHVl
RGFzaGVkLCBDU1NWYWx1ZURvdERhc2gsIENTU1ZhbHVlRG90RG90RGFzaCwgQ1NTVmFsdWVXYXZl
Pjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0
eVRleHRPdmVybGluZVdpZHRoLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0
PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOdW1iZXIpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENT
U1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVy
Y2VudCksIENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlVGhpbiwgQ1NTVmFs
dWVNZWRpdW0sIENTU1ZhbHVlVGhpY2s+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFBy
b3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUsIFZhbHVlTWF0Y2hQcm9w
ZXJ0eVBhcnNlcjxDU1NWYWx1ZUNvbnRpbnVvdXMsIENTU1ZhbHVlU2tpcFdoaXRlU3BhY2U+Ojpj
cmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVN0eWxlLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVOb25lLCBD
U1NWYWx1ZVNvbGlkLCBDU1NWYWx1ZURvdWJsZSwgQ1NTVmFsdWVEYXNoZWQsIENTU1ZhbHVlRG90
RGFzaCwgQ1NTVmFsdWVEb3REb3REYXNoLCBDU1NWYWx1ZVdhdmU+OjpjcmVhdGVQYXJzZXIoKSk7
CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRo
LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZOdW1iZXIpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCksIENTU1ZhbHVlQXV0
bywgQ1NTVmFsdWVOb3JtYWwsIENTU1ZhbHVlVGhpbiwgQ1NTVmFsdWVNZWRpdW0sIENTU1ZhbHVl
VGhpY2s+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1By
b3BlcnR5VGV4dFJlbmRlcmluZywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQXV0
bywgQ1NTVmFsdWVPcHRpbWl6ZXNwZWVkLCBDU1NWYWx1ZU9wdGltaXplbGVnaWJpbGl0eSwgQ1NT
VmFsdWVHZW9tZXRyaWNwcmVjaXNpb24+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGF1dG8gfCBvcHRp
bWl6ZVNwZWVkIHwgb3B0aW1pemVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uCisgICAg
ICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5VG9wLCBWYWx1ZU9yVW5pdFByb3BlcnR5
UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpLCBDU1NWYWx1ZUF1dG8+OjpjcmVh
dGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQK
KyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgVmFsdWVN
YXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUVtYmVkLCBDU1NWYWx1
ZUJpZGlPdmVycmlkZSwgQ1NTVmFsdWVXZWJraXRJc29sYXRlLCBDU1NWYWx1ZVdlYmtpdFBsYWlu
dGV4dD46OmNyZWF0ZVBhcnNlcigpKTsgLy8gbm9ybWFsIHwgZW1iZWQgfCBiaWRpLW92ZXJyaWRl
IHwgaXNvbGF0ZSB8IHBsYWludGV4dCB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJz
ZXIoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFs
dWVWaXNpYmxlLCBDU1NWYWx1ZUhpZGRlbiwgQ1NTVmFsdWVDb2xsYXBzZT46OmNyZWF0ZVBhcnNl
cigpKTsgLy8gdmlzaWJsZSB8IGhpZGRlbiB8IGNvbGxhcHNlIHwgaW5oZXJpdAorICAgICAgICBz
ZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIFZhbHVlTWF0Y2hQcm9wZXJ0
eVBhcnNlcjxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVQcmUsIENTU1ZhbHVlUHJlV3JhcCwgQ1NT
VmFsdWVQcmVMaW5lLCBDU1NWYWx1ZU5vd3JhcD46OmNyZWF0ZVBhcnNlcigpKTsgLy8gbm9ybWFs
IHwgcHJlIHwgbm93cmFwIHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQ
cm9wZXJ0eVdvcmRCcmVhaywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTm9ybWFs
LCBDU1NWYWx1ZUJyZWFrQWxsLCBDU1NWYWx1ZUJyZWFrV29yZD46OmNyZWF0ZVBhcnNlcigpKTsg
Ly8gbm9ybWFsIHwgYnJlYWstYWxsIHwgYnJlYWstd29yZCAodGhpcyBpcyBhIGN1c3RvbSBleHRl
bnNpb24pCisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V29yZFNwYWNpbmcs
IFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8Q1NTUGFyc2VyOjpGTGVuZ3RoLCBDU1NWYWx1ZU5v
cm1hbD46OmNyZWF0ZVBhcnNlcigpKTsgLy8gbm9ybWFsIHwgPGxlbmd0aD4gfCBpbmhlcml0Cisg
ICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V29yZFdyYXAsIFZhbHVlTWF0Y2hQ
cm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVCcmVha1dvcmQ+OjpjcmVhdGVQ
YXJzZXIoKSk7IC8vIG5vcm1hbCB8IGJyZWFrLXdvcmQKKworICAgICAgICBzZXRQcm9wZXJ0eVBh
cnNlcihDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UsIFZhbHVlT3JSYW5nZU9yVHlwZVByb3Bl
cnR5UGFyc2VyPENTU1ZhbHVlQ2hlY2tib3gsIENTU1ZhbHVlVGV4dGFyZWEsIDAsIENTU1ZhbHVl
Tm9uZT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJv
cGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHksIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxD
U1NWYWx1ZVZpc2libGUsIENTU1ZhbHVlSGlkZGVuPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAg
ICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyLCBHZW5lcmlj
U2hvcnRoYW5kUGFyc2VyPDMsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyQ29sb3I+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNl
cjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpLCBDU1NWYWx1ZVRoaW4sIENTU1ZhbHVlTWVk
aXVtLCBDU1NWYWx1ZVRoaWNrPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyB0aGluIHwgbWVkaXVtIHwg
dGhpY2sgfCA8bGVuZ3RoPiB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmUsIEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8MywgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcj46OmNyZWF0ZVBh
cnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVXaWR0aCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZOb25OZWcpLCBDU1NWYWx1ZVRoaW4sIENTU1ZhbHVlTWVkaXVtLCBDU1NWYWx1ZVRoaWNr
Pjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyB0aGluIHwgbWVkaXVtIHwgdGhpY2sgfCA8bGVuZ3RoPiB8
IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmQsIEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8MywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQ
YXJzZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgVmFsdWVPclVuaXRQcm9wZXJ0
eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpLCBDU1NWYWx1ZVRoaW4sIENTU1Zh
bHVlTWVkaXVtLCBDU1NWYWx1ZVRoaWNrPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyB0aGluIHwgbWVk
aXVtIHwgdGhpY2sgfCA8bGVuZ3RoPiB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJz
ZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxD
U1NWYWx1ZUJvcmRlciwgQ1NTVmFsdWVMaW5lcz46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAg
c2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2lu
ZywgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFy
c2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcp
Pjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclN0YXJ0LCBHZW5lcmljU2hvcnRoYW5kUGFyc2VyPDMsIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyU3RhcnRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxl
LCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3I+OjpjcmVhdGVQYXJzZXIoKSk7Cisg
ICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0
aCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFy
c2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcp
LCBDU1NWYWx1ZVRoaW4sIENTU1ZhbHVlTWVkaXVtLCBDU1NWYWx1ZVRoaWNrPjo6Y3JlYXRlUGFy
c2VyKCkpOyAvLyB0aGluIHwgbWVkaXVtIHwgdGhpY2sgfCA8bGVuZ3RoPiB8IGluaGVyaXQKKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNw
YWNpbmcsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENT
U1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9u
TmVnKT46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJv
cGVydHlXZWJraXRCb3hBbGlnbiwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlU3Ry
ZXRjaCwgQ1NTVmFsdWVTdGFydCwgQ1NTVmFsdWVFbmQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1
ZUJhc2VsaW5lPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbiwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENT
U1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZVJldmVyc2U+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAg
IHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCwgVmFsdWVPclVuaXRQ
cm9wZXJ0eVBhcnNlcjxDU1NQYXJzZXI6OkZOdW1iZXI+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAg
ICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMsIFZhbHVlTWF0
Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZVNpbmdsZSwgQ1NTVmFsdWVNdWx0aXBsZT46OmNyZWF0
ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRC
b3hPcmllbnQsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUhvcml6b250YWwsIENT
U1ZhbHVlVmVydGljYWwsIENTU1ZhbHVlSW5saW5lQXhpcywgQ1NTVmFsdWVCbG9ja0F4aXM+Ojpj
cmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Vi
a2l0Qm94UGFjaywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlU3RhcnQsIENTU1Zh
bHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVKdXN0aWZ5Pjo6Y3JlYXRlUGFyc2VyKCkp
OworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVj
dGlvbiwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlU3JnYiwgQ1NTVmFsdWVEZWZh
dWx0Pjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkF4aXMsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUhv
cml6b250YWwsIENTU1ZhbHVlVmVydGljYWwsIENTU1ZhbHVlQXV0bz46OmNyZWF0ZVBhcnNlcigp
KTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVh
a0FmdGVyLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUFs
d2F5cywgQ1NTVmFsdWVBdm9pZCwgQ1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0Pjo6Y3JlYXRl
UGFyc2VyKCkpOyAvLyBhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBpbmhl
cml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJl
YWtCZWZvcmUsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVl
QWx3YXlzLCBDU1NWYWx1ZUF2b2lkLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+OjpjcmVh
dGVQYXJzZXIoKSk7IC8vIGF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IGlu
aGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5C
cmVha0luc2lkZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQXV0bywgQ1NTVmFs
dWVBdm9pZD46OmNyZWF0ZVBhcnNlcigpKTsgLy8gYXZvaWQgfCBhdXRvIHwgaW5oZXJpdAorICAg
ICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50LCBWYWx1
ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZJ
bnRlZ2VyKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpLCBDU1NW
YWx1ZUF1dG8+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uR2FwLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlTm9ybWFsPjo6Y3JlYXRlUGFyc2VyKCkp
OyAvLyBub3JtYWwgfCA8bGVuZ3RoPgorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtblJ1bGUsIEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8MywgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxl
LCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgs
IFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNl
cjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKSwg
Q1NTVmFsdWVUaGluLCBDU1NWYWx1ZU1lZGl1bSwgQ1NTVmFsdWVUaGljaz46OmNyZWF0ZVBhcnNl
cigpKTsgLy8gdGhpbiB8IG1lZGl1bSB8IHRoaWNrIHwgPGxlbmd0aD4gfCBpbmhlcml0CisgICAg
ICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucywgR2VuZXJpY1No
b3J0aGFuZFBhcnNlcjwyLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkNvdW50Pjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0
eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbiwgVmFsdWVNYXRjaFByb3BlcnR5UGFy
c2VyPENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVC
YXNlbGluZSwgQ1NTVmFsdWVTdHJldGNoPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQ
cm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIFZhbHVlTWF0Y2hQ
cm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZVJvdywgQ1NTVmFsdWVSb3dSZXZlcnNlLCBDU1NWYWx1ZUNv
bHVtbiwgQ1NTVmFsdWVDb2x1bW5SZXZlcnNlPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBz
ZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93LCBHZW5lcmljU2hvcnRo
YW5kUGFyc2VyPDIsIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NTUHJvcGVydHlX
ZWJraXRGbGV4V3JhcD46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJz
ZXIoQ1NTUHJvcGVydHlXZWJraXRGbGV4SXRlbUFsaWduLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJz
ZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVN0YXJ0LCBDU1NWYWx1ZUVuZCwgQ1NTVmFsdWVDZW50
ZXIsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlU3RyZXRjaD46OmNyZWF0ZVBhcnNlcigpKTsK
KyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRGbGV4UGFjaywgVmFs
dWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlRW5kLCBDU1NWYWx1
ZUNlbnRlciwgQ1NTVmFsdWVKdXN0aWZ5LCBDU1NWYWx1ZURpc3RyaWJ1dGU+OjpjcmVhdGVQYXJz
ZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0RmxleFdy
YXAsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZU5vd3JhcCwgQ1NTVmFsdWVXcmFw
LCBDU1NWYWx1ZVdyYXBSZXZlcnNlPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9w
ZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nLCBWYWx1ZU1hdGNoUHJvcGVy
dHlQYXJzZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVOb25lPjo6Y3Jl
YXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtp
dEZvbnRTaXplRGVsdGEsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8Q1NTUGFyc2VyOjpGTGVu
Z3RoPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9w
ZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1
ZUF1dG8sIENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVBbnRpYWxpYXNlZCwgQ1NTVmFsdWVTdWJwaXhl
bEFudGlhbGlhc2VkPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNl
cihDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCwgVmFsdWVPclJhbmdlT3JUeXBlUHJvcGVydHlQ
YXJzZXI8Q1NTVmFsdWVJbnZhbGlkLCBDU1NWYWx1ZUludmFsaWQsIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HLCBDU1NWYWx1ZU5vbmU+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNl
dFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyLCBWYWx1
ZU9yUmFuZ2VPclR5cGVQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUludmFsaWQsIENTU1ZhbHVlSW52
YWxpZCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcsIENTU1ZhbHVlQXV0bz46OmNyZWF0
ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRI
eXBoZW5zLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVOb25lLCBDU1NWYWx1ZU1h
bnVhbCwgQ1NTVmFsdWVBdXRvPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0
eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgVmFsdWVNYXRjaFByb3BlcnR5UGFy
c2VyPENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZT46OmNyZWF0ZVBhcnNl
cigpKTsgLy8gbm9ybWFsIHwgYWZ0ZXItd2hpdGUtc3BhY2UKKyAgICAgICAgc2V0UHJvcGVydHlQ
YXJzZXIoQ1NTUHJvcGVydHlXZWJraXRMaW5lR3JpZFNuYXAsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBh
cnNlcjxDU1NWYWx1ZU5vbmUsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlQ29udGFpbj46OmNy
ZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5BZnRlciwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZQZXJjZW50KSwgQ1NTVmFsdWVBdXRvPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBz
ZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIFZh
bHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUNvbGxhcHNlLCBDU1NWYWx1ZVNlcGFyYXRl
LCBDU1NWYWx1ZURpc2NhcmQ+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5
UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlLCBWYWx1ZU9yVW5pdFByb3BlcnR5
UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpLCBDU1NWYWx1ZUF1dG8+OjpjcmVh
dGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2UsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUNv
bGxhcHNlLCBDU1NWYWx1ZVNlcGFyYXRlLCBDU1NWYWx1ZURpc2NhcmQ+OjpjcmVhdGVQYXJzZXIo
KSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90
dG9tQ29sbGFwc2UsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUNvbGxhcHNlLCBD
U1NWYWx1ZVNlcGFyYXRlLCBDU1NWYWx1ZURpc2NhcmQ+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAg
ICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UsIFR3
b1ZhbHVlc1Nob3J0aGFuZFBhcnNlcjxDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxh
cHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U+OjpjcmVhdGVQYXJzZXIo
KSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5k
LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJz
ZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQp
LCBDU1NWYWx1ZUF1dG8+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFy
c2VyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJz
ZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCksIENTU1ZhbHVlQXV0bz46OmNyZWF0ZVBh
cnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Ub3BDb2xsYXBzZSwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQ29sbGFwc2Us
IENTU1ZhbHVlU2VwYXJhdGUsIENTU1ZhbHVlRGlzY2FyZD46OmNyZWF0ZVBhcnNlcigpKTsKKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlLCBHZW5lcmlj
U2hvcnRoYW5kUGFyc2VyPDUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVS
ZXBldGl0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3BlZWQ+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFy
c2VyKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgVmFsdWVNYXRjaFByb3BlcnR5
UGFyc2VyPENTU1ZhbHVlRm9yd2FyZHMsIENTU1ZhbHVlQmFja3dhcmRzLCBDU1NWYWx1ZUFoZWFk
LCBDU1NWYWx1ZVJldmVyc2UsIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVE
b3duLCBDU1NWYWx1ZVVwLCBDU1NWYWx1ZUF1dG8+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAg
IHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwgVmFs
dWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
TGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSwgQ1NT
VmFsdWVTbWFsbCwgQ1NTVmFsdWVMYXJnZSwgQ1NTVmFsdWVNZWRpdW0+OjpjcmVhdGVQYXJzZXIo
KSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJl
cGV0aXRpb24sIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpG
UGVyY2VudCksIENTU1ZhbHVlSW5maW5pdGU+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNl
dFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkLCBWYWx1ZU9yVW5p
dFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZUaW1lKSB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZJbnRlZ2VyKSB8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpLCBDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVT
bG93LCBDU1NWYWx1ZUZhc3Q+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5
UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBWYWx1ZU1hdGNoUHJvcGVydHlQ
YXJzZXI8Q1NTVmFsdWVOb25lLCBDU1NWYWx1ZVNsaWRlLCBDU1NWYWx1ZVNjcm9sbCwgQ1NTVmFs
dWVBbHRlcm5hdGU+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2Vy
KENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgVmFsdWVN
YXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTm9ybWFsLCBDU1NWYWx1ZU1hdGNoPjo6Y3JlYXRl
UGFyc2VyKCkpOyAvLyBub3JtYWwgfCBtYXRjaAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihD
U1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJz
ZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q1NTUGFyc2VyOjpGTm9uTmVnKSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUludHJpbnNpYywgQ1NT
VmFsdWVNaW5JbnRyaW5zaWM+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNl
bnRhZ2U+IHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJv
cGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGgsIFZhbHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFy
c2VyOjpGTm9uTmVnKSwgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZUludHJpbnNpYywgQ1NTVmFsdWVN
aW5JbnRyaW5zaWM+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+
IHwgbm9uZSB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlX
ZWJraXRNaW5Mb2dpY2FsSGVpZ2h0LCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19j
YXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KENTU1BhcnNlcjo6RlBlcmNlbnQpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6
Rk5vbk5lZyksIENTU1ZhbHVlSW50cmluc2ljLCBDU1NWYWx1ZU1pbkludHJpbnNpYz46OmNyZWF0
ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0CisgICAgICAg
IHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoLCBWYWx1
ZU9yVW5pdFByb3BlcnR5UGFyc2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZM
ZW5ndGgpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlSW50cmluc2lj
LCBDU1NWYWx1ZU1pbkludHJpbnNpYz46OmNyZWF0ZVBhcnNlcigpKTsgLy8gPGxlbmd0aD4gfCA8
cGVyY2VudGFnZT4gfCBpbmhlcml0CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3Bl
cnR5V2Via2l0TmJzcE1vZGUsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZU5vcm1h
bCwgQ1NTVmFsdWVTcGFjZT46OmNyZWF0ZVBhcnNlcigpKTsgLy8gbm9ybWFsIHwgc3BhY2UKKyAg
ICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXIsIFZh
bHVlT3JVbml0UHJvcGVydHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6
Rkxlbmd0aCkgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGUGVyY2VudCkgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKT46OmNyZWF0ZVBhcnNlcigp
KTsgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4KKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFyc2Vy
PHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENTU1BhcnNlcjo6RlBlcmNlbnQpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENT
U1BhcnNlcjo6Rk5vbk5lZyk+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIDxsZW5ndGg+IHwgPHBlcmNl
bnRhZ2U+CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0UGFkZGlu
Z0VuZCwgVmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NT
UGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJj
ZW50KSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpPjo6Y3JlYXRl
UGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPgorICAgICAgICBzZXRQcm9wZXJ0
eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydCwgVmFsdWVPclVuaXRQcm9wZXJ0
eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTGVuZ3RoKSB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZQZXJjZW50KSB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihDU1NQYXJzZXI6OkZOb25OZWcpPjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyA8bGVuZ3RoPiB8
IDxwZXJjZW50YWdlPgorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtp
dFByaW50Q29sb3JBZGp1c3QsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUV4YWN0
LCBDU1NWYWx1ZUVjb25vbXk+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5
UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlciwgVmFsdWVNYXRjaFByb3Bl
cnR5UGFyc2VyPENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVBbHdheXMsIENTU1ZhbHVlQXZvaWQsIENT
U1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD46OmNyZWF0ZVBhcnNlcigpKTsgLy8gYXV0byB8IGFs
d2F5cyB8IGF2b2lkIHwgbGVmdCB8IHJpZ2h0IHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0
eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlLCBWYWx1ZU1hdGNoUHJv
cGVydHlQYXJzZXI8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZUFsd2F5cywgQ1NTVmFsdWVBdm9pZCwg
Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0Pjo6Y3JlYXRlUGFyc2VyKCkpOyAvLyBhdXRvIHwg
YWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0CisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUsIFZhbHVlTWF0Y2hQ
cm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlQXZvaWQ+OjpjcmVhdGVQYXJzZXIo
KSk7IC8vIGF2b2lkIHwgYXV0byB8IGluaGVyaXQKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlXZWJraXRSZWdpb25PdmVyZmxvdywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2Vy
PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVCcmVhaz46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAg
c2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZywgVmFsdWVNYXRj
aFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlTG9naWNhbCwgQ1NTVmFsdWVWaXN1YWw+OjpjcmVhdGVQ
YXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0VGV4
dENvbWJpbmUsIFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZU5vbmUsIENTU1ZhbHVl
SG9yaXpvbnRhbD46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8Miwg
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvcj46OmNyZWF0ZVBhcnNlcigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJz
ZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgVmFsdWVNYXRjaFByb3Bl
cnR5UGFyc2VyPENTU1ZhbHVlT3ZlciwgQ1NTVmFsdWVVbmRlcj46OmNyZWF0ZVBhcnNlcigpKTsK
KyAgICAgICAgLy8gRklYTUU6IEZvciBub3cganVzdCBzdXBwb3J0IHVwcmlnaHQgYW5kIHZlcnRp
Y2FsLXJpZ2h0LgorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRPcmllbnRhdGlvbiwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlVmVydGljYWxS
aWdodCwgQ1NTVmFsdWVVcHJpZ2h0Pjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9w
ZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwgVmFsdWVNYXRjaFByb3Bl
cnR5UGFyc2VyPENTU1ZhbHVlRGlzYywgQ1NTVmFsdWVDaXJjbGUsIENTU1ZhbHVlU3F1YXJlLCBD
U1NWYWx1ZU5vbmU+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGRpc2MgfCBjaXJjbGUgfCBzcXVhcmUg
fCBub25lIHwgaW5oZXJpdAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTaXplQWRqdXN0LCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVBdXRv
LCBDU1NWYWx1ZU5vbmU+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFy
c2VyKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgR2VuZXJpY1Nob3J0aGFuZFBhcnNlcjwy
LCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0
U3Ryb2tlQ29sb3I+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2Vy
KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBWYWx1ZU9yVW5pdFByb3BlcnR5UGFy
c2VyPHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZMZW5ndGgpIHwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rk5vbk5lZyksIENTU1ZhbHVlVGhpbiwgQ1NTVmFsdWVN
ZWRpdW0sIENTU1ZhbHVlVGhpY2s+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3Bl
cnR5UGFyc2VyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUsIFZhbHVlTWF0Y2hQcm9w
ZXJ0eVBhcnNlcjxDU1NWYWx1ZUZsYXQsIENTU1ZhbHVlUHJlc2VydmUzZD46OmNyZWF0ZVBhcnNl
cigpKTsKKyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJh
ZywgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb25lLCBD
U1NWYWx1ZUVsZW1lbnQ+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGF1dG8gfCBub25lIHwgZWxlbWVu
dAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnks
IFZhbHVlTWF0Y2hQcm9wZXJ0eVBhcnNlcjxDU1NWYWx1ZVJlYWRPbmx5LCBDU1NWYWx1ZVJlYWRX
cml0ZSwgQ1NTVmFsdWVSZWFkV3JpdGVQbGFpbnRleHRPbmx5Pjo6Y3JlYXRlUGFyc2VyKCkpOyAv
LyByZWFkLW9ubHkgfCByZWFkLXdyaXRlCisgICAgICAgIHNldFByb3BlcnR5UGFyc2VyKENTU1By
b3BlcnR5V2Via2l0VXNlclNlbGVjdCwgVmFsdWVNYXRjaFByb3BlcnR5UGFyc2VyPENTU1ZhbHVl
QXV0bywgQ1NTVmFsdWVOb25lLCBDU1NWYWx1ZVRleHQ+OjpjcmVhdGVQYXJzZXIoKSk7IC8vIGF1
dG8gfCBub25lIHwgdGV4dAorICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdl
YmtpdFdyYXAsIEdlbmVyaWNTaG9ydGhhbmRQYXJzZXI8MywgQ1NTUHJvcGVydHlXZWJraXRXcmFw
RmxvdywgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQ
YWRkaW5nPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQ
cm9wZXJ0eVdlYmtpdFdyYXBGbG93LCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVB
dXRvLCBDU1NWYWx1ZUJvdGgsIENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodCwgQ1NTVmFsdWVN
YXhpbXVtLCBDU1NWYWx1ZUNsZWFyPjo6Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9w
ZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sIFZhbHVlT3JVbml0UHJvcGVy
dHlQYXJzZXI8c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENTU1BhcnNlcjo6Rkxlbmd0aCkgfCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2VyOjpGTm9uTmVnKT46OmNyZWF0ZVBhcnNlcigpKTsK
KyAgICAgICAgc2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZywg
VmFsdWVPclVuaXRQcm9wZXJ0eVBhcnNlcjxzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1NTUGFyc2Vy
OjpGTGVuZ3RoKSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDU1NQYXJzZXI6OkZOb25OZWcpPjo6
Y3JlYXRlUGFyc2VyKCkpOworICAgICAgICBzZXRQcm9wZXJ0eVBhcnNlcihDU1NQcm9wZXJ0eVdl
YmtpdFdyYXBUaHJvdWdoLCBWYWx1ZU1hdGNoUHJvcGVydHlQYXJzZXI8Q1NTVmFsdWVXcmFwLCBD
U1NWYWx1ZU5vbmU+OjpjcmVhdGVQYXJzZXIoKSk7CisgICAgICAgIHNldFByb3BlcnR5UGFyc2Vy
KENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGUsIFZhbHVlT3JSYW5nZU9yVHlwZVByb3BlcnR5
UGFyc2VyPENTU1ZhbHVlSG9yaXpvbnRhbFRiLCBDU1NWYWx1ZUhvcml6b250YWxCdD46OmNyZWF0
ZVBhcnNlcigpKTsKKworICAgIH0KKworICAgIHN0YXRpYyBib29sIHZhbGlkKENTU1Byb3BlcnR5
SUQgcHJvcGVydHkpCisgICAgeworICAgICAgICBpbnQgaSA9IGluZGV4KHByb3BlcnR5KTsKKyAg
ICAgICAgcmV0dXJuIGkgPj0gMCAmJiBpIDwgbnVtQ1NTUHJvcGVydGllczsKKyAgICB9CisKKyAg
ICBzdGF0aWMgaW50IGluZGV4KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCisgICAgeworICAgICAg
ICByZXR1cm4gcHJvcGVydHkgLSBmaXJzdENTU1Byb3BlcnR5OworICAgIH0KKworICAgIHZvaWQg
c2V0UHJvcGVydHlQYXJzZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlQYXJz
ZXIgaGFuZGxlcikKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWxpZChwcm9wZXJ0eSkpOworICAg
ICAgICBBU1NFUlQoIXByb3BlcnR5UGFyc2VyKHByb3BlcnR5KS5pc1ZhbGlkKCkpOworICAgICAg
ICBtX3Byb3BlcnR5UGFyc2VyQXJyYXlbaW5kZXgocHJvcGVydHkpXSA9IGhhbmRsZXI7CisgICAg
fQorCisgICAgQ1NTUHJvcGVydHlQYXJzZXIgbV9wcm9wZXJ0eVBhcnNlckFycmF5W251bUNTU1By
b3BlcnRpZXNdOworfTsKKwogaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjplbnN1cmVDU1NWYWx1ZVBv
b2woKQogewogICAgIGlmICghbV9jc3NWYWx1ZVBvb2wpCkBAIC0yMDgsNiArNjk2LDcgQEAgQ1NT
UGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQogICAgICwgbV9sYXN0U2VsZWN0
b3JMaW5lTnVtYmVyKDApCiAgICAgLCBtX2FsbG93SW1wb3J0UnVsZXModHJ1ZSkKICAgICAsIG1f
YWxsb3dOYW1lc3BhY2VEZWNsYXJhdGlvbnModHJ1ZSkKKyAgICAsIG1fcGFyc2VyUHJvcGVydHlB
cnJheShDU1NQYXJzZXJQcm9wZXJ0eUFycmF5OjpzaGFyZWRDU1NQYXJzZXJQcm9wZXJ0eUFycmF5
KCkpCiB7CiAjaWYgWVlERUJVRyA+IDAKICAgICBjc3N5eWRlYnVnID0gMTsKQEAgLTk0OSw3ICsx
NDM4LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgIGJvb2wgdmFsaWRQcmltaXRpdmUgPSBmYWxzZTsKICAgICBSZWZQdHI8Q1NT
VmFsdWU+IHBhcnNlZFZhbHVlOwogCi0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0
eUlEPihwcm9wSWQpKSB7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0gc3RhdGljX2Nh
c3Q8Q1NTUHJvcGVydHlJRD4ocHJvcElkKTsKKyAgICAvLyBCZWZvcmUgY29udGludWluZyBsZXRz
IGxvb2sgaWYgdGhlcmUgaXMgYSBwYXJzaW5nIGhhbmRsZXIuCisgICAgY29uc3QgQ1NTUHJvcGVy
dHlQYXJzZXImIGhhbmRsZXIgPSBtX3BhcnNlclByb3BlcnR5QXJyYXkucHJvcGVydHlQYXJzZXIo
cHJvcGVydHlJZCk7CisgICAgaWYgKGhhbmRsZXIuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4g
aGFuZGxlci5wYXJzZVZhbHVlKHByb3BJZCwgdGhpcywgaW1wb3J0YW50KTsKKworICAgIHN3aXRj
aCAocHJvcGVydHlJZCkgewogICAgICAgICAvKiBUaGUgY29tbWVudCB0byB0aGUgbGVmdCBkZWZp
bmVzIGFsbCB2YWxpZCB2YWx1ZSBvZiB0aGlzIHByb3BlcnRpZXMgYXMgZGVmaW5lZAogICAgICAg
ICAgKiBpbiBDU1MgMiwgQXBwZW5kaXggRi4gUHJvcGVydHkgaW5kZXgKICAgICAgICAgICovCkBA
IC05NjgsNjMgKzE0NjMsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBwYXJz
ZVF1b3Rlcyhwcm9wSWQsIGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlVbmljb2RlQmlkaTogLy8gbm9ybWFsIHwgZW1iZWQgfCBiaWRpLW92ZXJyaWRlIHwg
aXNvbGF0ZSB8IHBsYWludGV4dCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Tm9ybWFsCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUVtYmVkCi0gICAgICAgICAgICB8
fCBpZCA9PSBDU1NWYWx1ZUJpZGlPdmVycmlkZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFs
dWVXZWJraXRJc29sYXRlCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVdlYmtpdFBsYWlu
dGV4dCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246ICAgICAgICAgICAgIC8vIHN0YXRpYyB8
IHJlbGF0aXZlIHwgYWJzb2x1dGUgfCBmaXhlZCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlU3RhdGljCi0gICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVJlbGF0aXZlCi0g
ICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUFic29sdXRlCi0gICAgICAgICAgICB8fCBpZCA9
PSBDU1NWYWx1ZUZpeGVkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjogICAgICAg
Ly8gYXV0byB8IGFsd2F5cyB8IGF2b2lkIHwgbGVmdCB8IHJpZ2h0IHwgaW5oZXJpdAotICAgIGNh
c2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFr
QmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0FmdGVyOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSZWdpb25CcmVha0JlZm9yZToKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlQXV0bwotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVBbHdheXMKLSAg
ICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlQXZvaWQKLSAgICAgICAgICAgIHx8IGlkID09IENT
U1ZhbHVlTGVmdAotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlOiAgICAgLy8gYXZvaWQgfCBhdXRvIHwgaW5oZXJpdAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZToKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGU6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVBdm9pZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlD
ZWxsczogICAgICAgICAgLy8gc2hvdyB8IGhpZGUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZVNob3cKLSAgICAgICAgICAgIHx8IGlkID09IENTU1ZhbHVlSGlkZSkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IENTU1Byb3BlcnR5Q29udGVudDogICAgICAgICAgICAgIC8vIFsgPHN0cmluZz4gfCA8dXJpPiB8
IDxjb3VudGVyPiB8IGF0dHIoWCkgfCBvcGVuLXF1b3RlIHwKICAgICAgICAgLy8gY2xvc2UtcXVv
dGUgfCBuby1vcGVuLXF1b3RlIHwgbm8tY2xvc2UtcXVvdGUgXSsgfCBpbmhlcml0CiAgICAgICAg
IHJldHVybiBwYXJzZUNvbnRlbnQocHJvcElkLCBpbXBvcnRhbnQpOwogCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdoaXRlU3BhY2U6ICAgICAgICAgIC8vIG5vcm1hbCB8IHByZSB8IG5vd3JhcCB8IGlu
aGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsCi0gICAgICAgICAgICB8fCBp
ZCA9PSBDU1NWYWx1ZVByZQotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVQcmVXcmFwCi0g
ICAgICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZVByZUxpbmUKLSAgICAgICAgICAgIHx8IGlkID09
IENTU1ZhbHVlTm93cmFwKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOiAgICAgICAgICAgICAgICAg
Ly8gPHNoYXBlPiB8IGF1dG8gfCBpbmhlcml0CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1
dG8pCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBAIC0xMDMyLDI1ICsxNDc1
LDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VTaGFwZShwcm9wSWQsIGltcG9ydGFudCk7CiAg
ICAgICAgIGJyZWFrOwogCi0gICAgLyogU3RhcnQgb2Ygc3VwcG9ydGVkIENTUyBwcm9wZXJ0aWVz
IHdpdGggdmFsaWRhdGlvbi4gVGhpcyBpcyBuZWVkZWQgZm9yIHBhcnNlU2hvcnRoYW5kIHRvIHdv
cmsKLSAgICAgKiBjb3JyZWN0bHkgYW5kIGFsbG93cyBvcHRpbWl6YXRpb24gaW4gV2ViQ29yZTo6
YXBwbHlSdWxlKC4uKQotICAgICAqLwotICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZTog
ICAgICAgICAvLyB0b3AgfCBib3R0b20gfCBsZWZ0IHwgcmlnaHQgfCBpbmhlcml0Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCB8fAotICAgICAg
ICAgICAgaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20pCi0gICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOiAgICAgIC8vIGNvbGxhcHNlIHwgc2VwYXJhdGUgfCBp
bmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNvbGxhcHNlIHx8IGlkID09IENTU1Zh
bHVlU2VwYXJhdGUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6ICAgICAgICAgICAvLyB2
aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFwc2UgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZVZpc2libGUgfHwgaWQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgaWQgPT0gQ1NTVmFsdWVD
b2xsYXBzZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWs7Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6IHsKICAgICAgICAgU2hvcnRoYW5k
U2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKICAgICAgICAgaWYgKG51bSAhPSAxIHx8ICFwYXJz
ZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBpbXBvcnRhbnQpKQpAQCAtMTA1OSw3MyArMTQ4
MywxMiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHZhbHVlLCBp
bXBvcnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eU92ZXJmbG93WDoKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOiAgICAgICAgICAg
Ly8gdmlzaWJsZSB8IGhpZGRlbiB8IHNjcm9sbCB8IGF1dG8gfCBtYXJxdWVlIHwgb3ZlcmxheSB8
IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCBpZCA9PSBDU1NW
YWx1ZUhpZGRlbiB8fCBpZCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8g
fHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlT3ZlcmxheSB8fCBpZCA9PSBDU1NWYWx1ZVdl
YmtpdE1hcnF1ZWUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uOiAgLy8gaW5z
aWRlIHwgb3V0c2lkZSB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5zaWRl
IHx8IGlkID09IENTU1ZhbHVlT3V0c2lkZSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlw
ZToKLSAgICAgICAgLy8gU2VlIHNlY3Rpb24gQ1NTX1BST1BfTElTVF9TVFlMRV9UWVBFIG9mIGZp
bGUgQ1NTVmFsdWVLZXl3b3Jkcy5pbgotICAgICAgICAvLyBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9y
dGVkIGxpc3Qtc3R5bGUtdHlwZXMuCi0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVEaXNjICYm
IGlkIDw9IENTU1ZhbHVlS2F0YWthbmFJcm9oYSkgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNh
c2UgQ1NTUHJvcGVydHlEaXNwbGF5OgotICAgICAgICAvLyBpbmxpbmUgfCBibG9jayB8IGxpc3Qt
aXRlbSB8IHJ1bi1pbiB8IGlubGluZS1ibG9jayB8IHRhYmxlIHwKLSAgICAgICAgLy8gaW5saW5l
LXRhYmxlIHwgdGFibGUtcm93LWdyb3VwIHwgdGFibGUtaGVhZGVyLWdyb3VwIHwgdGFibGUtZm9v
dGVyLWdyb3VwIHwgdGFibGUtcm93IHwKLSAgICAgICAgLy8gdGFibGUtY29sdW1uLWdyb3VwIHwg
dGFibGUtY29sdW1uIHwgdGFibGUtY2VsbCB8IHRhYmxlLWNhcHRpb24gfCAtd2Via2l0LWJveCB8
IC13ZWJraXQtaW5saW5lLWJveCB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAgIC8vIC13ZWJraXQt
ZmxleGJveCB8IC13ZWJraXQtaW5saW5lLWZsZXhib3ggfCAtd2Via2l0LWdyaWQgfCAtd2Via2l0
LWlubGluZS1ncmlkCi0gICAgICAgIGlmICgoaWQgPj0gQ1NTVmFsdWVJbmxpbmUgJiYgaWQgPD0g
Q1NTVmFsdWVXZWJraXRJbmxpbmVGbGV4Ym94KSB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENTU19HUklEX0xBWU9V
VCkKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0R3JpZCB8fCBpZCA9PSBDU1NWYWx1
ZVdlYmtpdElubGluZUdyaWQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0j
ZW5kaWYKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOiAg
ICAgICAgICAgIC8vIGx0ciB8IHJ0bCB8IGluaGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlTHRyIHx8IGlkID09IENTU1ZhbHVlUnRsKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNm
b3JtOiAgICAgICAvLyBjYXBpdGFsaXplIHwgdXBwZXJjYXNlIHwgbG93ZXJjYXNlIHwgbm9uZSB8
IGluaGVyaXQKICAgICAgICAgaWYgKChpZCA+PSBDU1NWYWx1ZUNhcGl0YWxpemUgJiYgaWQgPD0g
Q1NTVmFsdWVMb3dlcmNhc2UpIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3Bl
cnR5RmxvYXQ6ICAgICAgICAgICAgICAgIC8vIGxlZnQgfCByaWdodCB8IG5vbmUgfCBwb3NpdGlv
bmVkIHwgY2VudGVyIChmb3IgYnVnZ3kgQ1NTLCBtYXBzIHRvIG5vbmUpCi0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodAotICAgICAgICAgICAgfHwg
aWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1Zh
bHVlV2Via2l0UG9zaXRpb25lZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6ICAgICAgICAgICAg
ICAgIC8vIG5vbmUgfCBsZWZ0IHwgcmlnaHQgfCBib3RoIHwgaW5oZXJpdAotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlTGVmdAotICAgICAgICAgICAgfHwg
aWQgPT0gQ1NTVmFsdWVSaWdodCB8fCBpZCA9PSBDU1NWYWx1ZUJvdGgpCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRBbGlnbjoKLSAgICAgICAgLy8gbGVmdCB8IHJpZ2h0IHwgY2VudGVyIHwganVzdGlm
eSB8IHdlYmtpdF9sZWZ0IHwgd2Via2l0X3JpZ2h0IHwgd2Via2l0X2NlbnRlciB8IHdlYmtpdF9t
YXRjaF9wYXJlbnQgfAotICAgICAgICAvLyBzdGFydCB8IGVuZCB8IDxzdHJpbmc+IHwgaW5oZXJp
dAotICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlV2Via2l0QXV0byAmJiBpZCA8PSBDU1NWYWx1
ZVdlYmtpdE1hdGNoUGFyZW50KSB8fCBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1Zh
bHVlRW5kCi0gICAgICAgICAgICB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOiAgICAgICAgLy8gKDxi
b3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0byB8IGluaGVyaXQKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgKGlkID49IENTU1Zh
bHVlSW5zZXQgJiYgaWQgPD0gQ1NTVmFsdWVEb3VibGUpKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZTogICAgIC8vLy8gPGJvcmRlci1zdHlsZT4gfCBpbmhlcml0CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6ICAgLy8gICBEZWZpbmVkIGFzOiAgICBub25lIHwg
aGlkZGVuIHwgZG90dGVkIHwgZGFzaGVkIHwKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tU3R5bGU6ICAvLyAgIHNvbGlkIHwgZG91YmxlIHwgZ3Jvb3ZlIHwgcmlkZ2UgfCBpbnNldCB8
IG91dHNldApAQCAtMTE0MiwyOSArMTUwNSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250V2Vp
Z2h0OiAgLy8gbm9ybWFsIHwgYm9sZCB8IGJvbGRlciB8IGxpZ2h0ZXIgfCAxMDAgfCAyMDAgfCAz
MDAgfCA0MDAgfCA1MDAgfCA2MDAgfCA3MDAgfCA4MDAgfCA5MDAgfCBpbmhlcml0CiAgICAgICAg
IHJldHVybiBwYXJzZUZvbnRXZWlnaHQoaW1wb3J0YW50KTsKIAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJTcGFjaW5nOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmcgfTsKLSAgICAgICAgaWYgKG51bSA9PSAxKSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRTY29w
ZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpOwotICAgICAgICAgICAgaWYg
KCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0xXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnVtID09IDIpIHsKLSAg
ICAgICAgICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3Bh
Y2luZyk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0
YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJWZXJ0aWNhbFNwYWNpbmc6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgbV9zdHJpY3QpOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOiAgICAgICAgLy8gPGNvbG9yPiB8IGludmVydCB8
IGluaGVyaXQKICAgICAgICAgLy8gT3V0bGluZSBjb2xvciBoYXMgImludmVydCIgYXMgYWRkaXRp
b25hbCBrZXl3b3JkLgogICAgICAgICAvLyBBbHNvLCB3ZSB3YW50IHRvIGFsbG93IHRoZSBzcGVj
aWFsIGZvY3VzIGNvbG9yIGV2ZW4gaW4gc3RyaWN0IHBhcnNpbmcgbW9kZS4KQEAgLTEzMjgsMTUy
ICsxNjY4LDUzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdp
ZHRoOiAgICAgICAgLy8gPGJvcmRlci13aWR0aD4gfCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclRvcFdpZHRoOiAgICAgLy8vLyA8Ym9yZGVyLXdpZHRoPiB8IGluaGVyaXQKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDogICAvLyAgIFdoaWNoIGlzIGRlZmlu
ZWQgYXMKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6ICAvLyAgIHRoaW4g
fCBtZWRpdW0gfCB0aGljayB8IDxsZW5ndGg+Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJBZnRlcldpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lk
dGg6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVRoaW4gfHwgaWQgPT0gQ1NTVmFsdWVNZWRp
dW0gfHwgaWQgPT0gQ1NTVmFsdWVUaGljaykKKyAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6
CisgICAgICAgIC8vIDxhYnNvbHV0ZS1zaXplPiB8IDxyZWxhdGl2ZS1zaXplPiB8IDxsZW5ndGg+
IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdAorICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVYeFNt
YWxsICYmIGlkIDw9IENTU1ZhbHVlTGFyZ2VyKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlk
VW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KTsKKyAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5v
bk5lZywgbV9zdHJpY3QpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5
TGV0dGVyU3BhY2luZzogICAgICAgLy8gbm9ybWFsIHwgPGxlbmd0aD4gfCBpbmhlcml0Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOiAgICAgICAgIC8vIG5vcm1hbCB8IDxsZW5ndGg+
IHwgaW5oZXJpdAotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTdHlsZTogLy8gbm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVy
aXQKKyAgICAgICAgcmV0dXJuIHBhcnNlRm9udFN0eWxlKGltcG9ydGFudCk7CisKKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6IC8vIG5vcm1hbCB8IHNtYWxsLWNhcHMgfCBpbmhlcml0
CisgICAgICAgIHJldHVybiBwYXJzZUZvbnRWYXJpYW50KGltcG9ydGFudCk7CisKKyAgICBjYXNl
IENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoKKyAgICAgICAgLy8gYmFzZWxpbmUgfCBzdWIgfCBz
dXBlciB8IHRvcCB8IHRleHQtdG9wIHwgbWlkZGxlIHwgYm90dG9tIHwgdGV4dC1ib3R0b20gfAor
ICAgICAgICAvLyA8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiB8IGluaGVyaXQKKworICAgICAgICBp
ZiAoaWQgPj0gQ1NTVmFsdWVCYXNlbGluZSAmJiBpZCA8PSBDU1NWYWx1ZVdlYmtpdEJhc2VsaW5l
TWlkZGxlKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwg
bV9zdHJpY3QpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5p
dCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCkpOwogICAgICAgICBicmVhazsK
IAotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6ICAgICAgICAgIC8vIG5vcm1hbCB8IGJy
ZWFrLWFsbCB8IGJyZWFrLXdvcmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVCcmVha0FsbCB8fCBp
ZCA9PSBDU1NWYWx1ZUJyZWFrV29yZCkKKyAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OiAvLyA8
bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdpZHRoOiAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TG9naWNhbEhlaWdodDoKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8
fCBpZCA9PSBDU1NWYWx1ZUludHJpbnNpYyB8fCBpZCA9PSBDU1NWYWx1ZU1pbkludHJpbnNpYykK
KyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoIWlk
ICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJp
Y3QpKQorICAgICAgICAgICAgLy8gIyMjIGhhbmRsZSBtdWx0aWxlbmd0aCBjYXNlIHdoZXJlIHdl
IGFsbG93IHJlbGF0aXZlIHVuaXRzCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
CisgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
bikKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUZsZXgocHJvcElkLCBpbXBvcnRhbnQpOwogICAg
ICAgICBicmVhazsKIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDogICAgICAgICAgIC8v
IG5vcm1hbCB8IGJyZWFrLXdvcmQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8
IGlkID09IENTU1ZhbHVlQnJlYWtXb3JkKQorICAgIGNhc2UgQ1NTUHJvcGVydHlaSW5kZXg6ICAg
ICAgICAgICAgICAvLyBhdXRvIHwgPGludGVnZXI+IHwgaW5oZXJpdAorICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVBdXRvKSB7CiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazogICAgICAgICAgIC8vIG5v
bmUgfCBub3JtYWwgfCBzcGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwg
bm8tcHVuY3R1YXRpb24gfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUg
fHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVTcGVsbE91dCB8fCBpZCA9
PSBDU1NWYWx1ZURpZ2l0cwotICAgICAgICAgICAgfHwgaWQgPT0gQ1NTVmFsdWVMaXRlcmFsUHVu
Y3R1YXRpb24gfHwgaWQgPT0gQ1NTVmFsdWVOb1B1bmN0dWF0aW9uKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0SW5kZW50OiAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVy
aXQKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxl
bmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlQYWRkaW5nVG9wOiAgICAgICAgICAvLy8vIDxwYWRkaW5nLXdpZHRoPiB8IGlu
aGVyaXQKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OiAgICAgICAgLy8gICBXaGlj
aCBpcyBkZWZpbmVkIGFzCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206ICAgICAg
IC8vICAgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4KLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGlu
Z0xlZnQ6ICAgICAgICAgLy8vLwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3Rh
cnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBh
ZGRpbmdBZnRlcjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2
YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0OiAgICAgICAgICAgLy8gPGxl
bmd0aD4gfCA8cGVyY2VudGFnZT4gfCBub25lIHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXhXaWR0aDogICAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IG5vbmUg
fCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodDoKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgLyogbm9icmVhayAqLwotICAg
IGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6ICAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJj
ZW50YWdlPiB8IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6ICAgICAgICAg
ICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWlu
TG9naWNhbEhlaWdodDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW50cmluc2ljIHx8IGlk
ID09IENTU1ZhbHVlTWluSW50cmluc2ljKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYg
dmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0cmljdCkp
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKLSAgICAg
ICAgLy8gPGFic29sdXRlLXNpemU+IHwgPHJlbGF0aXZlLXNpemU+IHwgPGxlbmd0aD4gfCA8cGVy
Y2VudGFnZT4gfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA+PSBDU1NWYWx1ZVh4U21hbGwgJiYg
aWQgPD0gQ1NTVmFsdWVMYXJnZXIpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKHZhbGlkVW5pdCh2
YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOiAgICAgICAgICAgLy8gbm9y
bWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQKLSAgICAgICAgcmV0dXJuIHBhcnNlRm9u
dFN0eWxlKGltcG9ydGFudCk7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQ6ICAg
ICAgICAgLy8gbm9ybWFsIHwgc21hbGwtY2FwcyB8IGluaGVyaXQKLSAgICAgICAgcmV0dXJuIHBh
cnNlRm9udFZhcmlhbnQoaW1wb3J0YW50KTsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlWZXJ0aWNh
bEFsaWduOgotICAgICAgICAvLyBiYXNlbGluZSB8IHN1YiB8IHN1cGVyIHwgdG9wIHwgdGV4dC10
b3AgfCBtaWRkbGUgfCBib3R0b20gfCB0ZXh0LWJvdHRvbSB8Ci0gICAgICAgIC8vIDxwZXJjZW50
YWdlPiB8IDxsZW5ndGg+IHwgaW5oZXJpdAotCi0gICAgICAgIGlmIChpZCA+PSBDU1NWYWx1ZUJh
c2VsaW5lICYmIGlkIDw9IENTU1ZhbHVlV2Via2l0QmFzZWxpbmVNaWRkbGUpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwg
bV9zdHJpY3QpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0
OiAgICAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVy
aXQKLSAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6ICAgICAgICAgICAgICAgIC8vIDxsZW5ndGg+
IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TG9naWNhbFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0
OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlSW50cmlu
c2ljIHx8IGlkID09IENTU1ZhbHVlTWluSW50cmluc2ljKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNlIGlmICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBG
TGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0cmljdCkpCi0gICAgICAgICAgICAvLyAj
IyMgaGFuZGxlIG11bHRpbGVuZ3RoIGNhc2Ugd2hlcmUgd2UgYWxsb3cgcmVsYXRpdmUgdW5pdHMK
LSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAodmFs
dWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKQotICAgICAgICAgICAgcmV0dXJu
IHBhcnNlRmxleChwcm9wSWQsIGltcG9ydGFudCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvdHRvbTogICAgICAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50
YWdlPiB8IGF1dG8gfCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6ICAgICAgICAg
ICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OiAgICAgICAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJj
ZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRvcDogICAgICAg
ICAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8gfCBpbmhlcml0Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRvcDogICAgICAgICAgIC8vLy8gPG1hcmdpbi13aWR0
aD4gfCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OiAgICAgICAgIC8v
ICAgV2hpY2ggaXMgZGVmaW5lZCBhcwotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206
ICAgICAgICAvLyAgIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKLSAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVmdDogICAgICAgICAgLy8vLwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luRW5kOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVBdXRvKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBG
TGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVpJbmRleDogICAgICAgICAgICAgIC8vIGF1dG8gfCA8aW50ZWdlcj4gfCBp
bmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pIHsKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIC8qIG5vYnJlYWsgKi8KLSAgICBjYXNlIENTU1Byb3BlcnR5T3JwaGFuczogICAgICAgICAg
ICAgIC8vIDxpbnRlZ2VyPiB8IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3BlcnR5V2lkb3dzOiAg
ICAgICAgICAgICAgIC8vIDxpbnRlZ2VyPiB8IGluaGVyaXQKLSAgICAgICAgLy8gIyMjIG5vdCBz
dXBwb3J0ZWQgbGF0ZXIgb24KLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlk
VW5pdCh2YWx1ZSwgRkludGVnZXIsIGZhbHNlKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQ6ICAgICAgICAgIC8vIG5vcm1hbCB8IDxudW1iZXI+IHwg
PGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZU5vcm1hbCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1
ZSwgRk51bWJlciB8IEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvKiBub2JyZWFrICovCisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU9ycGhhbnM6ICAgICAgICAgICAgICAvLyA8aW50ZWdlcj4gfCBpbmhl
cml0CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZG93czogICAgICAgICAgICAgICAvLyA8aW50ZWdl
cj4gfCBpbmhlcml0CisgICAgICAgIC8vICMjIyBub3Qgc3VwcG9ydGVkIGxhdGVyIG9uCisgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyLCBm
YWxzZSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlckluY3Jl
bWVudDogICAgLy8gWyA8aWRlbnRpZmllcj4gPGludGVnZXI+PyBdKyB8IG5vbmUgfCBpbmhlcml0
CiAgICAgICAgIGlmIChpZCAhPSBDU1NWYWx1ZU5vbmUpCkBAIC0xNTI4LDExICsxNzY5LDYgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTnVt
YmVyIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCB0cnVlKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiAgICAgICAgIC8vIGF1dG8gfCBmaXhlZCB8IGlu
aGVyaXQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUZp
eGVkKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsK
LQogICAgIGNhc2UgQ1NTUHJvcGVydHlTcmM6ICAvLyBPbmx5IHVzZWQgd2l0aGluIEBmb250LWZh
Y2UsIHNvIGNhbm5vdCB1c2UgaW5oZXJpdCB8IGluaXRpYWwgb3IgYmUgIWltcG9ydGFudC4gIFRo
aXMgaXMgYSBsaXN0IG9mIHVybHMgb3IgbG9jYWwgcmVmZXJlbmNlcy4KICAgICAgICAgcmV0dXJu
IHBhcnNlRm9udEZhY2VTcmMoKTsKIApAQCAtMTU0MCwxMSArMTc3Niw2IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICByZXR1
cm4gcGFyc2VGb250RmFjZVVuaWNvZGVSYW5nZSgpOwogCiAgICAgLyogQ1NTMyBwcm9wZXJ0aWVz
ICovCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6Ci0gICAgICAgIGlmICgo
aWQgPj0gQ1NTVmFsdWVDaGVja2JveCAmJiBpZCA8PSBDU1NWYWx1ZVRleHRhcmVhKSB8fCBpZCA9
PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOiB7CiAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gcmVzdWx0OwogICAgICAgICByZXR1cm4gcGFyc2VCb3JkZXJJbWFn
ZShwcm9wSWQsIHJlc3VsdCwgaW1wb3J0YW50KTsKQEAgLTE2MjQsOSArMTg1NSw2IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXM6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclJhZGl1czoKICAgICAgICAgcmV0dXJuIHBhcnNlQm9yZGVyUmFkaXVzKHByb3BJZCwgaW1w
b3J0YW50KTsKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZU9mZnNldDoKLSAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJp
Y3QpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFNoYWRvdzogLy8g
Q1NTMiBwcm9wZXJ0eSwgZHJvcHBlZCBpbiBDU1MyLjEsIGJhY2sgaW4gQ1NTMywgc28gdHJlYXQg
YXMgQ1NTMwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaGFkb3c6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveFNoYWRvdzoKQEAgLTE2NDgsNDUgKzE4NzYsMTAgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHJldHVybiBwYXJzZVJlZmxlY3QocHJvcElkLCBpbXBvcnRhbnQpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKLSAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIsIG1fc3RyaWN0KTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NT
VmFsdWVFbmQgfHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENT
U1ZhbHVlQmFzZWxpbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVyc2UpCi0g
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
U2luZ2xlIHx8IGlkID09IENTU1ZhbHVlTXVsdGlwbGUpCi0gICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hPcmllbnQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgaWQgPT0g
Q1NTVmFsdWVWZXJ0aWNhbCB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVJbmxpbmVBeGlz
IHx8IGlkID09IENTU1ZhbHVlQmxvY2tBeGlzKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFj
azoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQg
fHwKLSAgICAgICAgICAgIGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlSnVz
dGlmeSkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXg6Ci0gICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7Ci0gICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXA6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cDoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2
YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgdHJ1ZSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gaWQgPT0gQ1NTVmFsdWVCb3JkZXJCb3ggfHwgaWQgPT0gQ1NTVmFsdWVDb250ZW50Qm94Owot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9u
OgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVlU3JnYiB8fCBpZCA9PSBD
U1NWYWx1ZURlZmF1bHQ7Ci0gICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmlsdGVyOgogICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVOb25lKQpAQCAtMTcwOSw4MCArMTkwMiwxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIG1fdmFsdWVMaXN0
LT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEZsZXhQYWNrOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENTU1ZhbHVl
U3RhcnQgfHwgaWQgPT0gQ1NTVmFsdWVFbmQgfHwgaWQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgaWQg
PT0gQ1NTVmFsdWVKdXN0aWZ5IHx8IGlkID09IENTU1ZhbHVlRGlzdHJpYnV0ZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbjoKLSAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09IENTU1ZhbHVlRW5kIHx8
IGlkID09IENTU1ZhbHVlQ2VudGVyIHx8IGlkID09IENTU1ZhbHVlQmFzZWxpbmUgfHwgaWQgPT0g
Q1NTVmFsdWVTdHJldGNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0RmxleEl0ZW1BbGlnbjoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSBpZCA9PSBDU1NWYWx1
ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBDU1NWYWx1ZUVuZCB8fCBpZCA9
PSBDU1NWYWx1ZUNlbnRlciB8fCBpZCA9PSBDU1NWYWx1ZUJhc2VsaW5lIHx8IGlkID09IENTU1Zh
bHVlU3RyZXRjaDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZs
ZXhEaXJlY3Rpb246Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gaWQgPT0gQ1NTVmFsdWVSb3cg
fHwgaWQgPT0gQ1NTVmFsdWVSb3dSZXZlcnNlIHx8IGlkID09IENTU1ZhbHVlQ29sdW1uIHx8IGlk
ID09IENTU1ZhbHVlQ29sdW1uUmV2ZXJzZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhXcmFwOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IGlkID09IENT
U1ZhbHVlTm93cmFwIHx8IGlkID09IENTU1ZhbHVlV3JhcCB8fCBpZCA9PSBDU1NWYWx1ZVdyYXBS
ZXZlcnNlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVSZXBldGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGlt
cG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0
aW9uOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVGb3J3YXJkcyB8fCBpZCA9PSBDU1NWYWx1
ZUJhY2t3YXJkcyB8fCBpZCA9PSBDU1NWYWx1ZUFoZWFkIHx8Ci0gICAgICAgICAgICBpZCA9PSBD
U1NWYWx1ZVJldmVyc2UgfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1ZhbHVlUmln
aHQgfHwgaWQgPT0gQ1NTVmFsdWVEb3duIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZVVw
IHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNy
ZW1lbnQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVNtYWxsIHx8IGlkID09IENTU1ZhbHVl
TGFyZ2UgfHwgaWQgPT0gQ1NTVmFsdWVNZWRpdW0pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFs
aWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZToKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZVNsaWRlIHx8IGlkID09IENTU1Zh
bHVlU2Nyb2xsIHx8IGlkID09IENTU1ZhbHVlQWx0ZXJuYXRlKQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVJlcGV0aXRpb246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluZmluaXRl
KQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9u
TmVnLCBtX3N0cmljdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3BlZWQ6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9
PSBDU1NWYWx1ZVNsb3cgfHwgaWQgPT0gQ1NTVmFsdWVGYXN0KQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRlRpbWUgfCBGSW50ZWdlciB8IEZOb25OZWcsIG1fc3RyaWN0
KTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dJbnRvOgog
ICAgICAgICByZXR1cm4gcGFyc2VGbG93VGhyZWFkKHByb3BJZCwgaW1wb3J0YW50KTsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Rmxvd0Zyb206CiAgICAgICAgIHJldHVybiBwYXJzZVJlZ2lv
blRocmVhZChwcm9wSWQsIGltcG9ydGFudCk7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJl
Z2lvbk92ZXJmbG93OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENT
U1ZhbHVlQnJlYWspCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOiAvLyBhdXRvIHwg
bm9uZSB8IGVsZW1lbnQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBD
U1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVFbGVtZW50KQotICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlck1vZGlmeTogLy8gcmVhZC1vbmx5IHwgcmVhZC13cml0ZQotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVSZWFkT25seSB8fCBpZCA9PSBDU1NWYWx1ZVJlYWRXcml0ZSB8fCBpZCA9PSBD
U1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9ubHkpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2Vy
U2VsZWN0OiAvLyBhdXRvIHwgbm9uZSB8IHRleHQKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVUZXh0KQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dE92ZXJmbG93OiAvLyBjbGlwIHwgZWxsaXBzaXMKLSAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlQ2xpcCB8fCBpZCA9PSBDU1NWYWx1ZUVsbGlwc2lzKQotICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTgxMywxOCArMTkzNyw2IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgotICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVl
RmxhdCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKQotICAgICAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgotICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1Zh
bHVlVmlzaWJsZSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVIaWRkZW4pCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRQcmludENvbG9yQWRqdXN0OgotICAgICAgICBpZiAodmFsdWUtPmlkID09IENTU1Zh
bHVlRXhhY3QgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWNvbm9teSkKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBlcnNwZWN0aXZlOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMTg3OCw4MCArMTk5MCw2IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93czoKICAgICAgICAgcmV0dXJuIHBhcnNlR3Jp
ZFRyYWNrTGlzdChwcm9wSWQsIGltcG9ydGFudCk7CiAjZW5kaWYKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQ29sbGFwc2U6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
Ml0gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsCi0gICAgICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UgfTsKLSAgICAgICAgaWYgKG51
bSA9PSAxKSB7Ci0gICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsKLSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShw
cm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBh
cnNlZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9w
ZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG51bSA9PSAyKSB7Ci0gICAgICAgICAgICBTaG9y
dGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsK
LSAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8
ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29s
bGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQ29sbGFwc2UgfHwgaWQgPT0gQ1NTVmFsdWVTZXBhcmF0ZSB8fCBpZCA9
PSBDU1NWYWx1ZURpc2NhcmQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lTW9kZToKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ29udGludW91
cyB8fCBpZCA9PSBDU1NWYWx1ZVNraXBXaGl0ZVNwYWNlKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVTb2xpZCB8fCBpZCA9PSBDU1NWYWx1ZURv
dWJsZSB8fAotICAgICAgICAgICAgaWQgPT0gQ1NTVmFsdWVEYXNoZWQgfHwgaWQgPT0gQ1NTVmFs
dWVEb3REYXNoIHx8IGlkID09IENTU1ZhbHVlRG90RG90RGFzaCB8fAotICAgICAgICAgICAgaWQg
PT0gQ1NTVmFsdWVXYXZlKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzogLy8gYXV0byB8
IG9wdGltaXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBnZW9tZXRyaWNQcmVjaXNpb24K
LSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZU9wdGltaXpl
c3BlZWQgfHwgaWQgPT0gQ1NTVmFsdWVPcHRpbWl6ZWxlZ2liaWxpdHkKLSAgICAgICAgICAgIHx8
IGlkID09IENTU1ZhbHVlR2VvbWV0cmljcHJlY2lzaW9uKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6Ci0gICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVU
aGluIHx8Ci0gICAgICAgICAgICBpZCA9PSBDU1NWYWx1ZU1lZGl1bSB8fCBpZCA9PSBDU1NWYWx1
ZVRoaWNrKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZO
dW1iZXIgfCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZTogLy8gbm9uZSB8IGJvdGggfCBob3Jpem9udGFsIHwg
dmVydGljYWwgfCBhdXRvCi0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0g
Q1NTVmFsdWVCb3RoIHx8IGlkID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCBpZCA9PSBDU1NWYWx1
ZVZlcnRpY2FsIHx8IGlkID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkNvdW50OgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFBy
aW1pdGl2ZSA9ICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgZmFs
c2UpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2Fw
OiAgICAgICAgIC8vIG5vcm1hbCB8IDxsZW5ndGg+Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vcm1hbCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgg
fCBGTm9uTmVnLCBtX3N0cmljdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5BeGlzOgotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVIb3Jpem9udGFs
IHx8IGlkID09IENTU1ZhbHVlVmVydGljYWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uU3BhbjogICAgICAgIC8vIGFsbCB8IDEKICAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlQWxsKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpA
QCAtMTk2NCwxNyArMjAwMiw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBlbHNlIC8vIEFsd2F5cyBwYXJzZSB0aGlzIHBy
b3BlcnR5IGluIHN0cmljdCBtb2RlLCBzaW5jZSBpdCB3b3VsZCBiZSBhbWJpZ3VvdXMgb3RoZXJ3
aXNlIHdoZW4gdXNlZCBpbiB0aGUgJ2NvbHVtbnMnIHNob3J0aGFuZCBwcm9wZXJ0eS4KICAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoLCB0cnVlKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHM6Ci0gICAg
ICAgIC8vIG5vbmUgfCB2aXNpYmxlUGFpbnRlZCB8IHZpc2libGVGaWxsIHwgdmlzaWJsZVN0cm9r
ZSB8IHZpc2libGUgfAotICAgICAgICAvLyBwYWludGVkIHwgZmlsbCB8IHN0cm9rZSB8IGF1dG8g
fCBhbGwgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZpc2libGUgfHwgaWQg
PT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlQWxsIHx8IGlkID09IENTU1ZhbHVlQXV0
byB8fAotICAgICAgICAgICAgKGlkID49IENTU1ZhbHVlVmlzaWJsZXBhaW50ZWQgJiYgaWQgPD0g
Q1NTVmFsdWVTdHJva2UpKQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6IC8vIGF1dG8g
fCBvcHRpbWl6ZUNvbnRyYXN0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQg
PT0gQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0KQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9wZXJ0
aWVzCiAKICAgICAvLyBBcHBsZSBzcGVjaWZpYyBwcm9wZXJ0aWVzLiAgVGhlc2Ugd2lsbCBuZXZl
ciBiZSBzdGFuZGFyZGl6ZWQgYW5kIGFyZSBwdXJlbHkgdG8KQEAgLTE5ODQsNDggKzIwMTEsNiBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICAgICAgLy8gV2hlbiBzcGVjaWZ5aW5nIGVpdGhlciB0eXBlIG9mIHVuaXQsIHJlcXVpcmUg
bm9uLW5lZ2F0aXZlIGludGVnZXJzCiAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiAo
dmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFIHx8IHZhbHVl
LT5mVmFsdWUpICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGUGVyY2VudCB8IEZOb25O
ZWcsIGZhbHNlKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U2l6ZUFkanVzdDoKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCBpZCA9PSBD
U1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKLSAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlTG9naWNhbCB8fCBpZCA9PSBDU1NWYWx1ZVZpc3VhbCkKLSAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YTogICAgICAgICAgIC8vIDxsZW5ndGg+Ci0g
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoLCBtX3N0cmlj
dCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2Rl
OiAgICAgLy8gbm9ybWFsIHwgc3BhY2UKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFs
IHx8IGlkID09IENTU1ZhbHVlU3BhY2UpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVh
azogICAvLyBub3JtYWwgfCBhZnRlci13aGl0ZS1zcGFjZQotICAgICAgICBpZiAoaWQgPT0gQ1NT
VmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I6ICAgLy8gbm9ybWFs
IHwgbWF0Y2gKLSAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsIHx8IGlkID09IENTU1Zh
bHVlTWF0Y2gpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodDoKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuczoKLSAgICAgICAgaWYg
KGlkID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZU1hbnVhbCB8fCBpZCA9PSBDU1NW
YWx1ZUF1dG8pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjoKLSAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGlt
aXRCZWZvcmU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXI6
CkBAIC0yMDQ5LDMyICsyMDM0LDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lR3JpZFNuYXA6Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVCYXNlbGluZSB8fCBpZCA9
PSBDU1NWYWx1ZUNvbnRhaW4pCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2NhbGU6CiAgICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TVFJJTkcpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAg
ICAgIGJyZWFrOwogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDoKLSAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlQm9yZGVyIHx8IGlkID09IENTU1ZhbHVlTGluZXMpCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eToKLSAgICAgICAgLy8gZGlzYyB8IGNpcmNs
ZSB8IHNxdWFyZSB8IG5vbmUgfCBpbmhlcml0Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZURp
c2MgfHwgaWQgPT0gQ1NTVmFsdWVDaXJjbGUgfHwgaWQgPT0gQ1NTVmFsdWVTcXVhcmV8fCBpZCA9
PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6Ci0g
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVOb25lCi0gICAg
ICAgICAgICB8fCBpZCA9PSBDU1NWYWx1ZUFudGlhbGlhc2VkIHx8IGlkID09IENTU1ZhbHVlU3Vi
cGl4ZWxBbnRpYWxpYXNlZCkKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAg
ICAgICAgYnJlYWs7Ci0KICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbjogLy8gPGRhc2hib2FyZC1yZWdpb24+IHwg
PGRhc2hib2FyZC1yZWdpb24+CiAgICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJW
YWx1ZTo6RnVuY3Rpb24gfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMjExMSwxMTggKzIwNzUs
NiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRN
YXNrT3JpZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwIH07CiAgICAgICAgIHJldHVybiBw
YXJzZUZpbGxTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCA2LCBpbXBvcnRhbnQpOwogICAg
IH0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgotICAgICAgICAvLyBbICdib3JkZXItd2lk
dGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlclN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9OwotICAgICAgICBpZiAocGFyc2VTaG9ydGhhbmQo
cHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpKSB7Ci0gICAgICAgICAgICAvLyBUaGUg
Q1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBib3Jk
ZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCi0gICAgICAgICAgICAvLyB0aG91
Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KLSAgICAgICAg
ICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGNzc1ZhbHVlUG9vbCgpLT5j
cmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgotICAgICAgICAvLyBbICdib3JkZXItdG9wLXdpZHRo
JyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwg
Q1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3J9OwotICAgICAgICByZXR1cm4gcGFyc2VT
aG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6Ci0gICAgICAgIC8vIFsgJ2JvcmRlci1yaWdodC13
aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwgPGNvbG9yPiBdIHwgaW5oZXJpdAotICAgIHsKLSAg
ICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07Ci0gICAgICAgIHJl
dHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0g
ICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206Ci0gICAgICAgIC8vIFsgJ2Jv
cmRlci1ib3R0b20td2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVy
aXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
ciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAz
LCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKLSAg
ICAgICAgLy8gWyAnYm9yZGVyLWxlZnQtd2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xv
cj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0g
eyBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0
aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyU3RhcnQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0U3R5bGUsCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3Ig
fTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywg
aW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckVuZFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlLAotICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciB9OwotICAgICAgICByZXR1
cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAg
IH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgotICAgIHsKLSAgICAg
ICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVm
b3JlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsCi0gICAgICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lk
dGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSwKLSAgICAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5T3V0bGluZToKLSAgICAgICAgLy8gWyAnb3V0bGluZS1jb2xvcicgfHwgJ291
dGxpbmUtc3R5bGUnIHx8ICdvdXRsaW5lLXdpZHRoJyBdIHwgaW5oZXJpdAotICAgIHsKLSAgICAg
ICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBD
U1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKLSAgICAgICAgLy8gPGNvbG9yPnsxLDR9IHwgaW5oZXJp
dAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMo
cHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyV2lkdGg6Ci0gICAgICAgIC8vIDxib3JkZXItd2lkdGg+ezEsNH0gfCBpbmhlcml0
Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlC
b3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhw
cm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZToKLSAgICAgICAgLy8gPGJvcmRlci1zdHlsZT57MSw0fSB8IGluaGVyaXQK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJv
cmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRTdHlsZSB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHBy
b3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eU1hcmdpbjoKLSAgICAgICAgLy8gPG1hcmdpbi13aWR0aD57MSw0fSB8IGluaGVyaXQKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eU1hcmdpblRv
cCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHByb3BlcnRpZXMsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgotICAgICAgICAvLyA8cGFk
ZGluZy13aWR0aD57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1Jp
Z2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlQYWRk
aW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJz
ZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3c6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5
V2Via2l0RmxleFdyYXAgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnQ6CiAgICAgICAgIC8vIFsgWyAnZm9udC1zdHlsZScgfHwgJ2ZvbnQtdmFyaWFudCcgfHwgJ2Zv
bnQtd2VpZ2h0JyBdPyAnZm9udC1zaXplJyBbIC8gJ2xpbmUtaGVpZ2h0JyBdPwogICAgICAgICAv
LyAnZm9udC1mYW1pbHknIF0gfCBjYXB0aW9uIHwgaWNvbiB8IG1lbnUgfCBtZXNzYWdlLWJveCB8
IHNtYWxsLWNhcHRpb24gfCBzdGF0dXMtYmFyIHwgaW5oZXJpdApAQCAtMjIzMSwyNSArMjA4Myw2
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VGb250KGltcG9ydGFudCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6Ci0gICAgewot
ICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlMaXN0U3R5bGVU
eXBlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSB9OwotICAgICAgICByZXR1
cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAg
IH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uczogewotICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5Db3VudCB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwotICAgIH0KLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1sz
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZVN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCBwcm9wZXJ0aWVzLCAyLCBpbXBvcnRhbnQpOwotICAgIH0KICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uOgogICAgICAgICByZXR1cm4gcGFyc2VBbmltYXRpb25TaG9y
dGhhbmQoaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoK
QEAgLTIyNjMsMzYgKzIwOTYsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZToK
ICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGlu
ZyBzdXBwb3J0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgotICAgICAg
ICBpZiAoaWQgPj0gQ1NTVmFsdWVIb3Jpem9udGFsVGIgJiYgaWQgPD0gQ1NTVmFsdWVIb3Jpem9u
dGFsQnQpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgotICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlSG9yaXpvbnRhbCkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5k
KHByb3BJZCwgcHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0
YW50KTsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9z
aXRpb246Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU92ZXIgfHwgaWQgPT0gQ1NTVmFsdWVV
bmRlcikKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGU6CiAgICAgICAg
IHJldHVybiBwYXJzZVRleHRFbXBoYXNpc1N0eWxlKGltcG9ydGFudCk7CiAKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uOgotICAgICAgICAvLyBGSVhNRTogRm9yIG5v
dyBqdXN0IHN1cHBvcnQgdXByaWdodCBhbmQgdmVydGljYWwtcmlnaHQuCi0gICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZVZlcnRpY2FsUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVVcHJpZ2h0KQotICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQm94Q29udGFpbjoKICAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTIzMDYs
MTEgKzIxMTMsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUZvbnRGZWF0dXJlU2V0dGluZ3Mo
aW1wb3J0YW50KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rm9udEtlcm5pbmc6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NT
VmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRGb250VmFyaWFudExpZ2F0dXJlczoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFs
KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMjMyNSwyMyArMjEyNyw2
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgICAgICBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b24pCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VXcmFwU2hhcGUoKHByb3BJZCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdFdyYXBTaGFwZUluc2lkZSksIGltcG9ydGFudCk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlQXV0byB8fCBpZCA9PSBDU1NWYWx1ZUJvdGggfHwgaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8
IGlkID09IENTU1ZhbHVlUmlnaHQgfHwgaWQgPT0gQ1NTVmFsdWVNYXhpbXVtIHx8IGlkID09IENT
U1ZhbHVlQ2xlYXIpCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBUaHJvdWdoOgotICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVXcmFwIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQ
YWRkaW5nOgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVl
LCBGTGVuZ3RoIHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXA6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdywgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFy
Z2luLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQYWRkaW5nIH07Ci0gICAgICAgIHJldHVybiBwYXJz
ZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGll
cyksIGltcG9ydGFudCk7Ci0gICAgfQogI2lmIEVOQUJMRShTVkcpCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIHBhcnNlU1ZHVmFsdWUocHJvcElkLCBpbXBvcnRhbnQpOwpAQCAtMjY1Niwx
MDEgKzI0NDEsNiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJv
b2wgaW1wb3J0YW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFy
c2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJv
cGVydGllcywgYm9vbCBpbXBvcnRhbnQpCi17Ci0gICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1h
bnkgcHJvcGVydGllcyBhcyBwb3NzaWJsZQotICAgIC8vIFdlIHNldCB1cCBhbiBhcnJheSBvZiBi
b29sZWFucyB0byBtYXJrIHdoaWNoIHByb3BlcnR5IGhhcyBiZWVuIGZvdW5kLAotICAgIC8vIGFu
ZCB3ZSB0cnkgdG8gc2VhcmNoIGZvciBwcm9wZXJ0aWVzIHVudGlsIGl0IG1ha2VzIG5vIGxvbmdl
ciBhbnkgc2Vuc2UuCi0gICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKLQot
ICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBib29sIGZuZFs2XTsgLy8gVHJ1c3QgbWUgOykK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKLSAgICAgICAgZm5k
W2ldID0gZmFsc2U7Ci0KLSAgICB3aGlsZSAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewotICAg
ICAgICBmb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3IgKGludCBwcm9wSW5kZXggPSAwOyAhZm91
bmQgJiYgcHJvcEluZGV4IDwgbnVtUHJvcGVydGllczsgKytwcm9wSW5kZXgpIHsKLSAgICAgICAg
ICAgIGlmICghZm5kW3Byb3BJbmRleF0pIHsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VWYWx1
ZShwcm9wZXJ0aWVzW3Byb3BJbmRleF0sIGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgICAg
IGZuZFtwcm9wSW5kZXhdID0gZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgYXQgbGVhc3Qgb25lIG1hdGNoLCB0aGlz
IGlzIGFuCi0gICAgICAgIC8vIGludmFsaWQgc2hvcnRoYW5kIGFuZCB3ZSBoYXZlIHRvIGlnbm9y
ZSBpdAotICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIC8vIEZpbGwgaW4gYW55IHJlbWFpbmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGlu
aXRpYWwgdmFsdWUuCi0gICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3Bl
cnR5SW1wbGljaXQpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytp
KSB7Ci0gICAgICAgIGlmICghZm5kW2ldKQotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVy
dGllc1tpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGlt
cG9ydGFudCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCAgYm9vbCBp
bXBvcnRhbnQpCi17Ci0gICAgLyogRnJvbSB0aGUgQ1NTIDIgc3BlY3MsIDguMwotICAgICAqIElm
IHRoZXJlIGlzIG9ubHkgb25lIHZhbHVlLCBpdCBhcHBsaWVzIHRvIGFsbCBzaWRlcy4gSWYgdGhl
cmUgYXJlIHR3byB2YWx1ZXMsIHRoZSB0b3AgYW5kCi0gICAgICogYm90dG9tIG1hcmdpbnMgYXJl
IHNldCB0byB0aGUgZmlyc3QgdmFsdWUgYW5kIHRoZSByaWdodCBhbmQgbGVmdCBtYXJnaW5zIGFy
ZSBzZXQgdG8gdGhlIHNlY29uZC4KLSAgICAgKiBJZiB0aGVyZSBhcmUgdGhyZWUgdmFsdWVzLCB0
aGUgdG9wIGlzIHNldCB0byB0aGUgZmlyc3QgdmFsdWUsIHRoZSBsZWZ0IGFuZCByaWdodCBhcmUg
c2V0IHRvIHRoZQotICAgICAqIHNlY29uZCwgYW5kIHRoZSBib3R0b20gaXMgc2V0IHRvIHRoZSB0
aGlyZC4gSWYgdGhlcmUgYXJlIGZvdXIgdmFsdWVzLCB0aGV5IGFwcGx5IHRvIHRoZSB0b3AsCi0g
ICAgICogcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQsIHJlc3BlY3RpdmVseS4KLSAgICAgKi8KLQot
ICAgIGludCBudW0gPSBpblNob3J0aGFuZCgpID8gMSA6IG1fdmFsdWVMaXN0LT5zaXplKCk7Ci0K
LSAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwotCi0gICAgLy8gdGhlIG9y
ZGVyIGlzIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdAotICAgIHN3aXRjaCAobnVtKSB7Ci0gICAg
ICAgIGNhc2UgMTogewotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0s
IGltcG9ydGFudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
Q1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGll
cy0xXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0
aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRp
ZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVy
dGllc1syXSwgdmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9w
ZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgMjogewotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3Bl
cnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0
YW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1
ZSAqdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52
YWx1ZSgpOwotICAgICAgICAgICAgSW1wbGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFBy
b3BlcnR5SW1wbGljaXQpOwotICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1syXSwg
dmFsdWUsIGltcG9ydGFudCk7Ci0gICAgICAgICAgICB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGll
c1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgMzogewotICAgICAgICAgICAgaWYgKCFwYXJzZVZh
bHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1sx
XSwgaW1wb3J0YW50KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1
ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7
Ci0gICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJ
bXBsaWNpdCk7Ci0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1ZSwg
aW1wb3J0YW50KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
NDogewotICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9ydGFu
dCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSB8fAotICAgICAgICAg
ICAgICAgICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMl0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFs
dWUocHJvcGVydGllc1szXSwgaW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OiB7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQogLy8gYXV0byB8IDxpZGVudGlmaWVyPgogYm9vbCBDU1NQYXJzZXI6OnBhcnNl
UGFnZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApp
bmRleCA1NTI3ZDM2MTY2ZjE4OWM1Nzc1YjA5NDEwNTcwNmNkYTk0OGEzY2M2Li4wNzE0ODg1YzIy
MzliNWNlNDFhYzAwNzgyNzVhNDkyOTllYWZlNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBA
IC00Myw2ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZTsKK2NsYXNzIENTU1BhcnNlclByb3BlcnR5QXJyYXk7CiBjbGFzcyBDU1NQ
cmltaXRpdmVWYWx1ZTsKIGNsYXNzIENTU1ZhbHVlUG9vbDsKIGNsYXNzIENTU1Byb3BlcnR5OwpA
QCAtODUsOCArODYsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9udW1QYXJzZWRQcm9wZXJ0aWVzID4gMDsgfQogCiAgICAgYm9vbCBwYXJzZVZh
bHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKLSAgICBib29sIHBhcnNlU2hvcnRoYW5k
KGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJv
b2wgaW1wb3J0YW50KTsKLSAgICBib29sIHBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBp
bnQqIHByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlQ29udGVudChp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVF1b3RlcyhpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCk7CiAKQEAgLTMyMCw2ICszMTksMjcgQEAgcHVibGljOgogCiAg
ICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1Zh
bHVlKENTU1BhcnNlclZhbHVlKik7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlUHJpbWl0aXZlU3RyaW5nVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsKKworICAgIC8vIERl
ZmluZXMgdW5pdHMgYWxsb3dlZCBmb3IgYSBjZXJ0YWluIHByb3BlcnR5LCB1c2VkIGluIHBhcnNl
VW5pdC4KKyAgICBlbnVtIFVuaXRzIHsKKyAgICAgICAgRlVua25vd24gICA9IDB4MDAwMCwKKyAg
ICAgICAgRkludGVnZXIgICA9IDB4MDAwMSwKKyAgICAgICAgRk51bWJlciAgICA9IDB4MDAwMiwg
Ly8gUmVhbCBOdW1iZXJzLgorICAgICAgICBGUGVyY2VudCAgID0gMHgwMDA0LAorICAgICAgICBG
TGVuZ3RoICAgID0gMHgwMDA4LAorICAgICAgICBGQW5nbGUgICAgID0gMHgwMDEwLAorICAgICAg
ICBGVGltZSAgICAgID0gMHgwMDIwLAorICAgICAgICBGRnJlcXVlbmN5ID0gMHgwMDQwLAorICAg
ICAgICBGUmVsYXRpdmUgID0gMHgwMTAwLAorICAgICAgICBGTm9uTmVnICAgID0gMHgwMjAwCisg
ICAgfTsKKworICAgIGZyaWVuZCBpbmxpbmUgVW5pdHMgb3BlcmF0b3IgfCAoVW5pdHMgYSwgVW5p
dHMgYikKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxVbml0cz4oc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGEpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGIpKTsKKyAgICB9CisKKyAg
ICBib29sIHZhbGlkVW5pdChDU1NQYXJzZXJWYWx1ZSosIFVuaXRzLCBib29sIHN0cmljdCk7CiAg
ICAgICAgIAogcHJpdmF0ZToKICAgICBpbmxpbmUgYm9vbCBpc0lkZW50aWZpZXJTdGFydCgpOwpA
QCAtNDA3LDI4ICs0MjcsOSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+ID4gbV9yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yOwogCiAgICAgUmVmUHRy
PENTU0NhbGNWYWx1ZT4gbV9wYXJzZWRDYWxjdWxhdGlvbjsKLQotICAgIC8vIGRlZmluZXMgdW5p
dHMgYWxsb3dlZCBmb3IgYSBjZXJ0YWluIHByb3BlcnR5LCB1c2VkIGluIHBhcnNlVW5pdAotICAg
IGVudW0gVW5pdHMgewotICAgICAgICBGVW5rbm93biAgID0gMHgwMDAwLAotICAgICAgICBGSW50
ZWdlciAgID0gMHgwMDAxLAotICAgICAgICBGTnVtYmVyICAgID0gMHgwMDAyLCAgLy8gUmVhbCBO
dW1iZXJzCi0gICAgICAgIEZQZXJjZW50ICAgPSAweDAwMDQsCi0gICAgICAgIEZMZW5ndGggICAg
PSAweDAwMDgsCi0gICAgICAgIEZBbmdsZSAgICAgPSAweDAwMTAsCi0gICAgICAgIEZUaW1lICAg
ICAgPSAweDAwMjAsCi0gICAgICAgIEZGcmVxdWVuY3kgPSAweDAwNDAsCi0gICAgICAgIEZSZWxh
dGl2ZSAgPSAweDAxMDAsCi0gICAgICAgIEZOb25OZWcgICAgPSAweDAyMDAKLSAgICB9OwotCi0g
ICAgZnJpZW5kIGlubGluZSBVbml0cyBvcGVyYXRvcnwoVW5pdHMgYSwgVW5pdHMgYikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxVbml0cz4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGEpIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGIpKTsKLSAgICB9CisgICAgY29uc3QgQ1NTUGFy
c2VyUHJvcGVydHlBcnJheSYgbV9wYXJzZXJQcm9wZXJ0eUFycmF5OwogCiAgICAgYm9vbCB2YWxp
ZENhbGN1bGF0aW9uVW5pdChDU1NQYXJzZXJWYWx1ZSosIFVuaXRzKTsKLSAgICBib29sIHZhbGlk
VW5pdChDU1NQYXJzZXJWYWx1ZSosIFVuaXRzLCBib29sIHN0cmljdCk7CiAKICAgICBib29sIHBh
cnNlQm9yZGVySW1hZ2VRdWFkKFVuaXRzLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+Jik7CiAg
ICAgaW50IGNvbG9ySW50RnJvbVZhbHVlKENTU1BhcnNlclZhbHVlKik7CkBAIC00NDAsNiArNDQx
LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgcGFyc2VkRG91YmxlKENTU1BhcnNlclZhbHVlKiwg
UmVsZWFzZVBhcnNlZENhbGNWYWx1ZUNvbmRpdGlvbiByZWxlYXNlQ2FsYyA9IERvTm90UmVsZWFz
ZVBhcnNlZENhbGNWYWx1ZSk7CiAgICAgYm9vbCBpc0NhbGN1bGF0aW9uKENTU1BhcnNlclZhbHVl
Kik7CiAgICAgCisgICAgZnJpZW5kIGNsYXNzIENTU1BhcnNlclByb3BlcnR5QXJyYXk7CiAgICAg
ZnJpZW5kIGNsYXNzIFRyYW5zZm9ybU9wZXJhdGlvbkluZm87CiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogICAgIGZyaWVuZCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25JbmZvOwo=
</data>
<flag name="review"
          id="127542"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="127559"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>