<?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>79197</bug_id>
          
          <creation_ts>2012-02-21 22:34:45 -0800</creation_ts>
          <short_desc>Implement ReifiedDOMTree traversal APIs for Shadow DOM.</short_desc>
          <delta_ts>2012-03-25 23:44:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78313</dependson>
    
    <dependson>78596</dependson>
    
    <dependson>80405</dependson>
          <blocked>78585</blocked>
    
    <blocked>82019</blocked>
    
    <blocked>82022</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>gustavo</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>561626</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-21 22:34:45 -0800</bug_when>
    <thetext>We need to have APIs which can traverse nodes in ReifiedDOMTree order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561664</commentid>
    <comment_count>1</comment_count>
      <attachid>128141</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-21 23:30:41 -0800</bug_when>
    <thetext>Created attachment 128141
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562029</commentid>
    <comment_count>2</comment_count>
      <attachid>128141</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-22 09:16:17 -0800</bug_when>
    <thetext>Comment on attachment 128141
WIP

I wonder if we should attempt to make a separate class to keep all these functions from being Node members. Here&apos;s a strong indicator -- you add ReifiedDOMTree suffix to all of them :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562867</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-22 23:17:53 -0800</bug_when>
    <thetext>Yes, that&apos;s on my rader. Let me make a separate class in following WIP patches.

(In reply to comment #2)
&gt; (From update of attachment 128141 [details])
&gt; I wonder if we should attempt to make a separate class to keep all these functions from being Node members. Here&apos;s a strong indicator -- you add ReifiedDOMTree suffix to all of them :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565556</commentid>
    <comment_count>4</comment_count>
      <attachid>129007</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-27 03:54:43 -0800</bug_when>
    <thetext>Created attachment 129007
wip. add tests. make a separate class. needs more cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565770</commentid>
    <comment_count>5</comment_count>
      <attachid>129007</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-27 10:13:01 -0800</bug_when>
    <thetext>Comment on attachment 129007
wip. add tests. make a separate class. needs more cleanup

This is starting to look nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566263</commentid>
    <comment_count>6</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-27 19:02:50 -0800</bug_when>
    <thetext>*** Bug 64072 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571759</commentid>
    <comment_count>7</comment_count>
      <attachid>130360</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-06 05:22:13 -0800</bug_when>
    <thetext>Created attachment 130360
WIP. clean-up APIs by use case driven.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571760</commentid>
    <comment_count>8</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-06 05:23:28 -0800</bug_when>
    <thetext>WIP. Still needs more clean-ups. The current code is messy, but some use cases are starting to work nicely. I&apos;d like work on this patch in more use-case driven way. The current use cases on my rader are:

 - Event dispatch
 - Focus Navigation

These two use cases cover almost every APIs in ReifiedTreeTraversal.
Let me continue clean-up tanks and add more comprehensive layout tests.

We need to split this patch into several small patches for easy reviewes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571888</commentid>
    <comment_count>9</comment_count>
      <attachid>130360</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-06 08:51:07 -0800</bug_when>
    <thetext>Comment on attachment 130360
WIP. clean-up APIs by use case driven.

This is starting to look really nice. I think to land this, we&apos;ll need to split this up into smaller chunks. How about this for a plan?
1) Introduce a simpler ReifiedTreeTraversal class, which only implements adjustedParentNode
2) change EventDispatcher to use it
3) Add FocusScope
4) Add logic to ReifitedTreeTraversal to use it
5) ...
6) profit.

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571891</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-06 08:54:22 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 130360 [details])
&gt; This is starting to look really nice. I think to land this, we&apos;ll need to split this up into smaller chunks. How about this for a plan?
&gt; 1) Introduce a simpler ReifiedTreeTraversal class, which only implements adjustedParentNode
&gt; 2) change EventDispatcher to use it
&gt; 3) Add FocusScope
&gt; 4) Add logic to ReifitedTreeTraversal to use it
&gt; 5) ...
&gt; 6) profit.
&gt; 
&gt; WDYT?

Also, Morrita-san, Kawanaka-san -- the ReifiedTreeTraversal is the iterator class I had in mind on bug 80020. Does this make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572775</commentid>
    <comment_count>11</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-07 04:04:03 -0800</bug_when>
    <thetext>I agree. We should land the small part of ReifiedTreeTraversal at first , along with a client which uses APIs.
The first candidate is a EventDispatcher, which only requires parentNodeXXX APIs.

My biggest concern about EventDispatcher is the performance.
We need to make sure that it doesn&apos;t cause any *noticeable* performance regression.

I am not sure what is a recommended way to measure the performance regression for these types of changes in WebKit. It&apos;d be nice to have a good benchmark tool to find any blocking issue which prevents this patch from landing.


(In reply to comment #9)
&gt; (From update of attachment 130360 [details])
&gt; This is starting to look really nice. I think to land this, we&apos;ll need to split this up into smaller chunks. How about this for a plan?
&gt; 1) Introduce a simpler ReifiedTreeTraversal class, which only implements adjustedParentNode
&gt; 2) change EventDispatcher to use it
&gt; 3) Add FocusScope
&gt; 4) Add logic to ReifitedTreeTraversal to use it
&gt; 5) ...
&gt; 6) profit.
&gt; 
&gt; WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572979</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-07 09:53:19 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I agree. We should land the small part of ReifiedTreeTraversal at first , along with a client which uses APIs.
&gt; The first candidate is a EventDispatcher, which only requires parentNodeXXX APIs.
&gt; 
&gt; My biggest concern about EventDispatcher is the performance.
&gt; We need to make sure that it doesn&apos;t cause any *noticeable* performance regression.
&gt; 
&gt; I am not sure what is a recommended way to measure the performance regression for these types of changes in WebKit. It&apos;d be nice to have a good benchmark tool to find any blocking issue which prevents this patch from landing.

Event dispatch is easy to benchmark, since there aren&apos;t too many branches. You can write one fairly easily. Build a DOM tree that&apos;s N nodes deep and then run the benchmark for increasing N. Repeat for all branches where you make the code changes. Record before and after. Post benchmark and results in the patch. I wrote a bunch of microbenchmarks like this for various bits when refactoring shadow DOM.

&gt; 
&gt; 
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 130360 [details] [details])
&gt; &gt; This is starting to look really nice. I think to land this, we&apos;ll need to split this up into smaller chunks. How about this for a plan?
&gt; &gt; 1) Introduce a simpler ReifiedTreeTraversal class, which only implements adjustedParentNode
&gt; &gt; 2) change EventDispatcher to use it
&gt; &gt; 3) Add FocusScope
&gt; &gt; 4) Add logic to ReifitedTreeTraversal to use it
&gt; &gt; 5) ...
&gt; &gt; 6) profit.
&gt; &gt; 
&gt; &gt; WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579290</commentid>
    <comment_count>13</comment_count>
      <attachid>132022</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-15 05:10:45 -0700</bug_when>
    <thetext>Created attachment 132022
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579294</commentid>
    <comment_count>14</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-15 05:19:28 -0700</bug_when>
    <thetext>I&apos;ve changed the plan. Let me split this up into smaller chunks as follows:

A plan:
1) Land ReifiedTreeTraversal class and test.
2) Land updated FocusController, which follows shadow DOM navigation order, using ReifiedTreeTraversal.
3) Land EventDispatcher (and benchmark), which follows new Shadow DOM spec.
4)
5) ...
6) profit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579314</commentid>
    <comment_count>15</comment_count>
      <attachid>132033</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-15 06:23:48 -0700</bug_when>
    <thetext>Created attachment 132033
Reified Tree Traversal APIs. Let me know required symbols on other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579315</commentid>
    <comment_count>16</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-15 06:26:33 -0700</bug_when>
    <thetext>The first one has come, which contains only Reified Tree Traversal APIs and its test.

Although I&apos;ve updated the patch so that we can build this on other platforms, I think the patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579318</commentid>
    <comment_count>17</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-15 06:29:44 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; The first one has come, which contains only Reified Tree Traversal APIs and its test.
&gt; 
&gt; Although I&apos;ve updated the patch so that we can build this on other platforms, I think the patch is ready for review.

s/I&apos;ve updated/I&apos;ll update/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579323</commentid>
    <comment_count>18</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-15 06:37:48 -0700</bug_when>
    <thetext>I am afraid that patch of ReifiedTreeTraversal APIs is a bit bigger for a review. I am happy to split this patch into small patches if it is required.

(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; The first one has come, which contains only Reified Tree Traversal APIs and its test.
&gt; &gt; 
&gt; &gt; Although I&apos;ve updated the patch so that we can build this on other platforms, I think the patch is ready for review.
&gt; 
&gt; s/I&apos;ve updated/I&apos;ll update/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579324</commentid>
    <comment_count>19</comment_count>
      <attachid>132033</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-15 06:38:06 -0700</bug_when>
    <thetext>Comment on attachment 132033
Reified Tree Traversal APIs. Let me know required symbols on other ports.

Attachment 132033 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/11953774</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579327</commentid>
    <comment_count>20</comment_count>
      <attachid>132033</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-15 06:40:22 -0700</bug_when>
    <thetext>Comment on attachment 132033
Reified Tree Traversal APIs. Let me know required symbols on other ports.

Attachment 132033 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11951732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579331</commentid>
    <comment_count>21</comment_count>
      <attachid>132033</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-15 06:44:13 -0700</bug_when>
    <thetext>Comment on attachment 132033
Reified Tree Traversal APIs. Let me know required symbols on other ports.

Attachment 132033 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11955597</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579334</commentid>
    <comment_count>22</comment_count>
      <attachid>132033</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-15 06:47:10 -0700</bug_when>
    <thetext>Comment on attachment 132033
Reified Tree Traversal APIs. Let me know required symbols on other ports.

Attachment 132033 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11956606</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579348</commentid>
    <comment_count>23</comment_count>
      <attachid>132033</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-15 07:13:51 -0700</bug_when>
    <thetext>Comment on attachment 132033
Reified Tree Traversal APIs. Let me know required symbols on other ports.

Attachment 132033 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11958547</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579372</commentid>
    <comment_count>24</comment_count>
      <attachid>132033</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-15 07:42:00 -0700</bug_when>
    <thetext>Comment on attachment 132033
Reified Tree Traversal APIs. Let me know required symbols on other ports.

Attachment 132033 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11955617</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580171</commentid>
    <comment_count>25</comment_count>
      <attachid>132207</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-15 23:10:27 -0700</bug_when>
    <thetext>Created attachment 132207
to get required symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580179</commentid>
    <comment_count>26</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-15 23:21:56 -0700</bug_when>
    <thetext>I can improve the performance of APIs by making some functions inline. But as the first wave, I&apos;d like to leave it later since there is no actual clients yet and I&apos;d like to focus on making sure that APIs works correctly.

Later I&apos;ll work on improving performance using actual use cases, like a FocusNavigation and EventDispatcher.

(In reply to comment #25)
&gt; Created an attachment (id=132207) [details]
&gt; to get required symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580609</commentid>
    <comment_count>27</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-16 09:58:27 -0700</bug_when>
    <thetext>(In reply to comment #14)

&gt; 6) profit.

I like that last point the best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583833</commentid>
    <comment_count>28</comment_count>
      <attachid>132975</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-20 22:51:22 -0700</bug_when>
    <thetext>Created attachment 132975
retry to get required symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583895</commentid>
    <comment_count>29</comment_count>
      <attachid>132991</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-21 01:44:39 -0700</bug_when>
    <thetext>Created attachment 132991
retry to get required symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584305</commentid>
    <comment_count>30</comment_count>
      <attachid>132991</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-21 10:31:13 -0700</bug_when>
    <thetext>Comment on attachment 132991
retry to get required symbols.

Attachment 132991 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12072481</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584930</commentid>
    <comment_count>31</comment_count>
      <attachid>133178</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-21 20:40:32 -0700</bug_when>
    <thetext>Created attachment 133178
fix win build hopefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584947</commentid>
    <comment_count>32</comment_count>
      <attachid>133178</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-21 21:01:30 -0700</bug_when>
    <thetext>Comment on attachment 133178
fix win build hopefully.

Attachment 133178 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12035842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585022</commentid>
    <comment_count>33</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-22 00:25:31 -0700</bug_when>
    <thetext>I&apos;ve done a micro bench mark for Reified Tree Traversal APIs.
Used benchmark is here: https://bugs.webkit.org/show_bug.cgi?id=81495

The result is:

Benchmark for Reified Tree Traversal APIs.
TraverseNext in 10000000 times.

Traverse tree which contains ShadowHost:
 took 57.8ms.  with TraverseNextNode
 took 426ms. with TraverseNextNodeInReifiedTree

Traverse tree which does not contain ShadowHost:
 took 77.6ms.  with TraverseNextNode
 took 358.6ms. with TraverseNextNodeInReifiedTree


The result says that ReifiedTreeTreversal::traverseNextNode is about 8 times as slow as Node::traverseNextNode.

That&apos;s very good starting point for me. Let me improve the performance later as another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585452</commentid>
    <comment_count>34</comment_count>
      <attachid>133178</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-22 10:33:50 -0700</bug_when>
    <thetext>Comment on attachment 133178
fix win build hopefully.

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

This is really close to being done. A lot of awesome work, Hayato-san. I spent a lot of time staring at this code, trying to make sure you&apos;re doing the right thing. Overall, the machinery looks good. Pending a few naming/stylistic comments and build fixes, we can land this.

One question: would ReifiedTreeTraversal be better viewed as a cursor pattern device, like a Walker? Instead of all public functions being static, we give it a node in constructor, then operate on that node with the functions. WDYT? Will this be useful?

&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:83
&gt; +    // FIXME: Add an assertion once InsertionPoint have isActive() function.

URL of the bug?

&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:90
&gt; +    Node* child = traverseLightChildren(node, direction);
&gt; +    return child;

Can just be return traverseLightChildren?

&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:101
&gt; +Node* ReifiedTreeTraversal::traverseMe(const Node* node, ReifiedTreeTraversalDirection direction)

traverseMe -&gt; traverseNode?

&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:131
&gt; +Node* ReifiedTreeTraversal::traverseSiblingMaybeBackToInsertionPoint(const Node* node, ReifiedTreeTraversalDirection direction)

Maybe -&gt; Or

&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:155
&gt; +Node* ReifiedTreeTraversal::traverseBackingToYoungerShadowRoot(const Node* node, ReifiedTreeTraversalDirection direction)

BackingTo -&gt; BackTo? or BackInto?

&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:177
&gt; +Node* ReifiedTreeTraversal::traverseMeEscapingFallbackContents(const Node* node, CrossedUpperBoundary&amp; crossed)

Me -&gt; Node

&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:197
&gt; +    // FIXME: Do not use &apos;unsed&apos; parameter.

UNUSED_PARAM?

&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:216
&gt; +Node* ReifiedTreeTraversal::parentNodeMaybeBackToInsertionPoint(const Node* node, CrossedUpperBoundary&amp; crossed)

Should you set crossed = Crossed at the start?

&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:227
&gt; +    if (Node* parent = node-&gt;parentNode()) {

Ditto?

&gt; Source/WebCore/dom/ReifiedTreeTraversal.h:40
&gt; +// FIXME: Make some functions inline to optimise the performance.

File a bug and put URL here?

&gt; Source/WebCore/dom/ReifiedTreeTraversal.h:62
&gt; +    // FIXME: An &apos;adjusted&apos; is not good name for general use case. Rename this.

File a bug and put URL here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586049</commentid>
    <comment_count>35</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-22 20:48:07 -0700</bug_when>
    <thetext>Thank you for the review. Let me address your comments.

(In reply to comment #34)
&gt; (From update of attachment 133178 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133178&amp;action=review
&gt; 
&gt; This is really close to being done. A lot of awesome work, Hayato-san. I spent a lot of time staring at this code, trying to make sure you&apos;re doing the right thing. Overall, the machinery looks good. Pending a few naming/stylistic comments and build fixes, we can land this.
&gt; 
&gt; One question: would ReifiedTreeTraversal be better viewed as a cursor pattern device, like a Walker? Instead of all public functions being static, we give it a node in constructor, then operate on that node with the functions. WDYT? Will this be useful?

Yes, we can. That&apos;s one of ideas I thought from the beginning. Actually I was tempted to do when I was forced to type a long-name static function when I used APIs in FocusController, but I gave up the idea without deep thinking since it does not make code shorter much.

Current approach:

for (Node* node = start; node; node = ReifiiedTreeTraversal::traverseNextNode(node)) {
  // ..
}

Cursor pattern:

for (ReifinedTreeAwareNode node(start); node.valid(); node.traverseNextNode()) {
  // We should use &apos;get()&apos; inside of for loop to get a backing node to pass Node to another function.
  Node* n = node.get().
}

But I guess many WebKit folks prefer the latter since it looks elegant, right? Either is okay for me. I can not see any reason which causes performance regressions by making it cursor pattern.

I am happy to provide a &apos;cursor patten version&apos; and get rid of current &apos;ugly&apos; static function approach. That&apos;s not difficult task since there is no clients which started to use APIs except for FocusController. Before starting to work, I&apos;d like to compare both versions and get more evidence to judge which is better. Can I work on &apos;cursor pattern version&apos; as another bug? Let me file a bug for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586054</commentid>
    <comment_count>36</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-22 20:58:16 -0700</bug_when>
    <thetext>For cursor pattern, I&apos;ve filed a bug as https://bugs.webkit.org/show_bug.cgi?id=82009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586065</commentid>
    <comment_count>37</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-22 21:16:23 -0700</bug_when>
    <thetext>sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586121</commentid>
    <comment_count>38</comment_count>
      <attachid>133178</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-22 23:34:29 -0700</bug_when>
    <thetext>Comment on attachment 133178
fix win build hopefully.

I&apos;ve addressed the comments. Let me upload the new patch.

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

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:83
&gt;&gt; +    // FIXME: Add an assertion once InsertionPoint have isActive() function.
&gt; 
&gt; URL of the bug?

Done.

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:90
&gt;&gt; +    return child;
&gt; 
&gt; Can just be return traverseLightChildren?

Done.

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:101
&gt;&gt; +Node* ReifiedTreeTraversal::traverseMe(const Node* node, ReifiedTreeTraversalDirection direction)
&gt; 
&gt; traverseMe -&gt; traverseNode?

Done. &apos;Me&apos; has been used since this function existed in WebCore::Node once. &apos;Me&apos; is inappropriate anymore.

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:131
&gt;&gt; +Node* ReifiedTreeTraversal::traverseSiblingMaybeBackToInsertionPoint(const Node* node, ReifiedTreeTraversalDirection direction)
&gt; 
&gt; Maybe -&gt; Or

Done.

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:155
&gt;&gt; +Node* ReifiedTreeTraversal::traverseBackingToYoungerShadowRoot(const Node* node, ReifiedTreeTraversalDirection direction)
&gt; 
&gt; BackingTo -&gt; BackTo? or BackInto?

Done. I chose &apos;BackTo&apos; for consistency.

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:177
&gt;&gt; +Node* ReifiedTreeTraversal::traverseMeEscapingFallbackContents(const Node* node, CrossedUpperBoundary&amp; crossed)
&gt; 
&gt; Me -&gt; Node

Done.

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:197
&gt;&gt; +    // FIXME: Do not use &apos;unsed&apos; parameter.
&gt; 
&gt; UNUSED_PARAM?

Done.

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.cpp:216
&gt;&gt; +Node* ReifiedTreeTraversal::parentNodeMaybeBackToInsertionPoint(const Node* node, CrossedUpperBoundary&amp; crossed)
&gt; 
&gt; Should you set crossed = Crossed at the start?

Yes, we should. I set crossed = NotCrossed at the start of parentNode(const Node* node, CrossedupperBoundary&amp; crossed) and inserted ASSERT(crossed == NotCrossed) into other functions.

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.h:40
&gt;&gt; +// FIXME: Make some functions inline to optimise the performance.
&gt; 
&gt; File a bug and put URL here?

Done.

&gt;&gt; Source/WebCore/dom/ReifiedTreeTraversal.h:62
&gt;&gt; +    // FIXME: An &apos;adjusted&apos; is not good name for general use case. Rename this.
&gt; 
&gt; File a bug and put URL here?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586125</commentid>
    <comment_count>39</comment_count>
      <attachid>133434</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-22 23:45:15 -0700</bug_when>
    <thetext>Created attachment 133434
update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586138</commentid>
    <comment_count>40</comment_count>
      <attachid>133434</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-23 00:11:43 -0700</bug_when>
    <thetext>Comment on attachment 133434
update

Attachment 133434 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12122471</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586155</commentid>
    <comment_count>41</comment_count>
      <attachid>133440</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-23 00:53:08 -0700</bug_when>
    <thetext>Created attachment 133440
fix vcproj</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586180</commentid>
    <comment_count>42</comment_count>
      <attachid>133447</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-23 02:07:38 -0700</bug_when>
    <thetext>Created attachment 133447
fix adjustedParentNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586550</commentid>
    <comment_count>43</comment_count>
      <attachid>133447</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-23 11:44:19 -0700</bug_when>
    <thetext>Comment on attachment 133447
fix adjustedParentNode

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587437</commentid>
    <comment_count>44</comment_count>
      <attachid>133447</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-25 21:52:58 -0700</bug_when>
    <thetext>Comment on attachment 133447
fix adjustedParentNode

Rejecting attachment 133447 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
1 succeeded at 1886 (offset -9 lines).
patching file LayoutTests/platform/qt/Skipped
patching file LayoutTests/platform/win/Skipped
Hunk #1 succeeded at 1469 (offset 1 line).
patching file LayoutTests/platform/wincairo/Skipped
patching file LayoutTests/platform/wk2/Skipped
patching file ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Dimitri Gl...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12129664</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587451</commentid>
    <comment_count>45</comment_count>
      <attachid>133730</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-03-25 22:29:06 -0700</bug_when>
    <thetext>Created attachment 133730
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587494</commentid>
    <comment_count>46</comment_count>
      <attachid>133730</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-25 23:44:35 -0700</bug_when>
    <thetext>Comment on attachment 133730
Patch for landing

Clearing flags on attachment: 133730

Committed r112055: &lt;http://trac.webkit.org/changeset/112055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587495</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-25 23:44:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128141</attachid>
            <date>2012-02-21 23:30:41 -0800</date>
            <delta_ts>2012-02-27 03:54:37 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-79197-20120222163040.patch</filename>
            <type>text/plain</type>
            <size>43193</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTlhNDZmZGE3OGIwNWNj
MWYwODM0YzFmZjdkOWI4NTdhMjJkZTBkMC4uMzFhNDE1ZWZkZWYzYTFmMGUyNzkyNThjMDg5NWIz
OTIyZDYwMTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAxMi0wMi0yMSAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEFk
ZCBSZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20v
c2hhZG93L25vZGUtZGlzdHJpYnV0aW9uLmh0bWwKKworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmZpcnN0Q2hpbGRJblJlaWZpZWRET01UcmVlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Zmlyc3RDaGlsZE9mTGln
aHRDaGlsZHJlbkluUmVpZmllZERPTVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dHJh
dmVyc2VNZUluUmVpZmllZERPTVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bmV4dFNp
YmxpbmdJblJlaWZpZWRET01UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd1Jvb3RMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd1Jvb3RMaXN0T2ZQYXJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6bmV4dFNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50SW5SZWlm
aWVkRE9NVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpuZXh0U2libGluZ0luQ3VycmVu
dFRyZWVJblJlaWZpZWRET01UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5leHRCYWNr
VG9Zb3VuZ2VyU2hhZG93Um9vdEluUmVpZmllZERPTVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6bmV4dEVzY2FwaW5nRmFsbGJhY2tDb250ZW50RWxlbWVudEluUmVpZmllZERPTVRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50Tm9kZUluUmVpZmllZERPTVRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9p
bnRJblJlaWZpZWRET01UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcmVudE5vZGVCYWNrVG9Z
b3VuZ2VyU2hhZG93Um9vdEluUmVpZmllZERPTVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6cGFyZW50Tm9kZUluQ3VycmVudFRyZWVJblJlaWZpZWRET01UcmVlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnRyYXZlcnNlTWVFc2NhcGluZ0ZhbGxiYWNrQ29udGVudHNJblJlaWZpZWRE
T01UcmVlKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAg
ICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpuZXh0UmVuZGVyZXJPZik6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1JlbmRlcmVyT2Yp
OgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RSZW5kZXJlck9mKToKKyAgICAgICAgKFdlYkNvcmU6
Omxhc3RSZW5kZXJlck9mKToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Omluc2VydGlvblBvaW50KToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dS
b290OjpmaXJzdFNoYWRvd0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6
YXR0YWNoKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdExpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6Omluc2VydGlvblBvaW50Rm9yKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6OnNl
bGVjdGlvbkZvcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aXNTZWxlY3Rv
ckFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0
b3IpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290TGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChTaGFkb3dSb290TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
TGlzdDo6aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dS
b290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpzZWxlY3Rvcik6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb250ZW50RWxlbWVudDo6SFRNTENvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b250ZW50RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxl
bWVudDo6dHJhdmVyc2VNZUluUmVpZmllZERPTVRyZWUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChIVE1M
Q29udGVudEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rvcjo6c2VsZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rvcjo6d2lsbFNlbGVjdE92ZXIpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSFRNTENvbnRlbnRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnRlbnRTZWxlY3Rpb246Omluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb250ZW50U2VsZWN0aW9uOjpIVE1MQ29udGVudFNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29udGVudFNlbGVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKEhUTUxDb250ZW50
U2VsZWN0aW9uU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uU2V0
OjpmaW5kKToKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTaGFk
b3dFbGVtZW50Ojp0cmF2ZXJzZU1lSW5SZWlmaWVkRE9NVHJlZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oOgorICAgICAgICAo
SFRNTFNoYWRvd0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9TaGFkb3dFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydGlvblBvaW50OjpzZWxlY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc2Vy
dGlvblBvaW50OjpoYXNTZWxlY3Rpb24pOgorICAgICAgICAoSW5zZXJ0aW9uUG9pbnQpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6YXBwZW5kQXR0cmlidXRlRGVzYyk6CisgICAgICAgIChXZWJDb3JlOjpkdW1w
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpkdW1wUmVpZmllZERPTVRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpkdW1wUmVpZmllZERPTVRyZWVGb3IpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMi0yMCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNo
aUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYlNvY2tldF0gQWRkIGRlZmxhdGVyL2luZmxh
dGVyIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAwOWI5MTU1NDgzNTEzY2RiNjMxZmIwZmVl
NTU1Y2FlMmYyZGY3YmI4Li43MGVhODU5NGQ3YWZkMzlmZjg5YmY1OGE2N2ZkN2Q0MDJjZTM5MTg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC02MCw4ICs2MCwxMSBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2lu
Y2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0
b3IuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVy
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ291bnRlcnMuaCIKICNpbmNsdWRlICJLZXli
b2FyZEV2ZW50LmgiCkBAIC0xMzA4LDYgKzEzMTEsMTQzIEBAIGJvb2wgTm9kZTo6Y29udGFpbnNJ
bmNsdWRpbmdTaGFkb3dET00oTm9kZSogbm9kZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK05v
ZGUqIE5vZGU6OmZpcnN0Q2hpbGRJblJlaWZpZWRET01UcmVlKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQoIWlzQ29udGVudEVsZW1lbnQoKSk7CisgICAgQVNTRVJUKCFpc1NoYWRvd0VsZW1lbnQoKSk7
CisgICAgQVNTRVJUKCFpc1NoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKGlzRWxlbWVudE5vZGUo
KSk7CisgICAgY29uc3QgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudCh0aGlzKTsKKyAgICBT
aGFkb3dSb290TGlzdCogc2hhZG93Um9vdExpc3QgPSBlbGVtZW50LT5zaGFkb3dSb290TGlzdCgp
OworICAgIGlmIChzaGFkb3dSb290TGlzdCAmJiBzaGFkb3dSb290TGlzdC0+aGFzU2hhZG93Um9v
dCgpKQorICAgICAgICByZXR1cm4gc2hhZG93Um9vdExpc3QtPnlvdW5nZXN0U2hhZG93Um9vdCgp
LT5maXJzdENoaWxkT2ZMaWdodENoaWxkcmVuSW5SZWlmaWVkRE9NVHJlZSgpOworICAgIHJldHVy
biBmaXJzdENoaWxkT2ZMaWdodENoaWxkcmVuSW5SZWlmaWVkRE9NVHJlZSgpOworfQorCitOb2Rl
KiBOb2RlOjpmaXJzdENoaWxkT2ZMaWdodENoaWxkcmVuSW5SZWlmaWVkRE9NVHJlZSgpIGNvbnN0
Cit7CisgICAgaWYgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpKQorICAgICAgICByZXR1cm4g
Y2hpbGQtPnRyYXZlcnNlTWVJblJlaWZpZWRET01UcmVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K05vZGUqIE5vZGU6OnRyYXZlcnNlTWVJblJlaWZpZWRET01UcmVlKCkgY29uc3QgCit7CisgICAg
Ly8gVE9ETyhoYXlhdG8pOiBIVE1MU2hhZG93RWxlbWVudDo6d2Fsa01lKCkKKyAgICByZXR1cm4g
Y29uc3RfY2FzdDxOb2RlKj4odGhpcyk7Cit9CisKK05vZGUqIE5vZGU6Om5leHRTaWJsaW5nSW5S
ZWlmaWVkRE9NVHJlZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc0NvbnRlbnRFbGVtZW50KCkp
OworICAgIEFTU0VSVCghaXNTaGFkb3dFbGVtZW50KCkpOworICAgIEFTU0VSVCghaXNTaGFkb3dS
b290KCkpOworICAgIHJldHVybiBuZXh0U2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnRJ
blJlaWZpZWRET01UcmVlKCk7Cit9CisKK3N0YXRpYyBTaGFkb3dSb290TGlzdCogc2hhZG93Um9v
dExpc3QoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1Jvb3RMaXN0KCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBTaGFkb3dSb290TGlzdCogc2hhZG93Um9vdExpc3RP
ZlBhcmVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlKQorICAgICAgICByZXR1
cm4gc2hhZG93Um9vdExpc3Qobm9kZS0+cGFyZW50Tm9kZSgpKTsKKyAgICByZXR1cm4gMDsKK30K
KworTm9kZSogTm9kZTo6bmV4dFNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50SW5SZWlm
aWVkRE9NVHJlZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzRWxlbWVudE5vZGUoKSk7CisgICAg
U2hhZG93Um9vdExpc3QqIHNoYWRvd1Jvb3RMaXN0ID0gc2hhZG93Um9vdExpc3RPZlBhcmVudCh0
aGlzKTsKKyAgICBpZiAoIXNoYWRvd1Jvb3RMaXN0KQorICAgICAgICByZXR1cm4gbmV4dFNpYmxp
bmdJbkN1cnJlbnRUcmVlSW5SZWlmaWVkRE9NVHJlZSgpOworICAgIEhUTUxDb250ZW50U2VsZWN0
aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dSb290TGlzdC0+c2VsZWN0aW9uRm9yKHRoaXMpOworICAg
IGlmICghc2VsZWN0aW9uKQorICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmdJbkN1cnJlbnRUcmVl
SW5SZWlmaWVkRE9NVHJlZSgpOworICAgIGlmIChIVE1MQ29udGVudFNlbGVjdGlvbiogbmV4dFNl
bGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKQorICAgICAgICByZXR1cm4gbmV4dFNlbGVjdGlv
bi0+bm9kZSgpLT50cmF2ZXJzZU1lSW5SZWlmaWVkRE9NVHJlZSgpOworICAgIHJldHVybiBzZWxl
Y3Rpb24tPmluc2VydGlvblBvaW50KCktPm5leHRTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Q
b2ludEluUmVpZmllZERPTVRyZWUoKTsKK30KKworTm9kZSogTm9kZTo6bmV4dFNpYmxpbmdJbkN1
cnJlbnRUcmVlSW5SZWlmaWVkRE9NVHJlZSgpIGNvbnN0Cit7CisgICAgaWYgKG5leHRTaWJsaW5n
KCkpCisgICAgICAgIHJldHVybiBuZXh0U2libGluZygpLT50cmF2ZXJzZU1lSW5SZWlmaWVkRE9N
VHJlZSgpOworICAgIGlmIChOb2RlKiBuZXh0ID0gbmV4dEJhY2tUb1lvdW5nZXJTaGFkb3dSb290
SW5SZWlmaWVkRE9NVHJlZSgpKQorICAgICAgICByZXR1cm4gbmV4dDsKKyAgICByZXR1cm4gbmV4
dEVzY2FwaW5nRmFsbGJhY2tDb250ZW50RWxlbWVudEluUmVpZmllZERPTVRyZWUoKTsKK30KKwor
Tm9kZSogTm9kZTo6bmV4dEJhY2tUb1lvdW5nZXJTaGFkb3dSb290SW5SZWlmaWVkRE9NVHJlZSgp
IGNvbnN0Cit7CisgICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmlzU2hhZG93
Um9vdCgpKSB7CisgICAgICAgIFNoYWRvd1Jvb3QqIHBhcmVudFNoYWRvd1Jvb3QgPSB0b1NoYWRv
d1Jvb3QocGFyZW50Tm9kZSgpKTsKKyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHlvdW5nZXJTaGFk
b3dSb290ID0gcGFyZW50U2hhZG93Um9vdC0+eW91bmdlclNoYWRvd1Jvb3QoKSkgeworICAgICAg
ICAgICAgQVNTRVJUKHlvdW5nZXJTaGFkb3dSb290LT5maXJzdFNoYWRvd0VsZW1lbnQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4geW91bmdlclNoYWRvd1Jvb3QtPmZpcnN0U2hhZG93RWxlbWVudCgp
LT5uZXh0U2libGluZ0luQ3VycmVudFRyZWVJblJlaWZpZWRET01UcmVlKCk7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIE5vZGU6Om5leHRFc2NhcGluZ0ZhbGxi
YWNrQ29udGVudEVsZW1lbnRJblJlaWZpZWRET01UcmVlKCkgY29uc3QKK3sKKyAgICBpZiAocGFy
ZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+aXNDb250ZW50RWxlbWVudCgpKQorICAgICAgICBy
ZXR1cm4gcGFyZW50Tm9kZSgpLT5uZXh0U2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnRJ
blJlaWZpZWRET01UcmVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIE5vZGU6OnBhcmVu
dE5vZGVJblJlaWZpZWRET01UcmVlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzQ29udGVudEVs
ZW1lbnQoKSk7CisgICAgQVNTRVJUKCFpc1NoYWRvd0VsZW1lbnQoKSk7CisgICAgQVNTRVJUKCFp
c1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIHBhcmVudE5vZGVNYXliZUJhY2tUb0luc2VydGlv
blBvaW50SW5SZWlmaWVkRE9NVHJlZSgpOworfQorCitOb2RlKiBOb2RlOjpwYXJlbnROb2RlTWF5
YmVCYWNrVG9JbnNlcnRpb25Qb2ludEluUmVpZmllZERPTVRyZWUoKSBjb25zdAoreworICAgIFNo
YWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290TGlzdCA9IHNoYWRvd1Jvb3RMaXN0T2ZQYXJlbnQodGhp
cyk7CisgICAgaWYgKCFzaGFkb3dSb290TGlzdCkKKyAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVJ
bkN1cnJlbnRUcmVlSW5SZWlmaWVkRE9NVHJlZSgpOworICAgIEhUTUxDb250ZW50U2VsZWN0aW9u
KiBzZWxlY3Rpb24gPSBzaGFkb3dSb290TGlzdC0+c2VsZWN0aW9uRm9yKHRoaXMpOworICAgIGlm
ICghc2VsZWN0aW9uKQorICAgICAgICByZXR1cm4gcGFyZW50Tm9kZUluQ3VycmVudFRyZWVJblJl
aWZpZWRET01UcmVlKCk7CisgICAgcmV0dXJuIHNlbGVjdGlvbi0+aW5zZXJ0aW9uUG9pbnQoKS0+
cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnRJblJlaWZpZWRET01UcmVlKCk7Cit9
CisKK3N0YXRpYyBOb2RlKiBwYXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RJblJlaWZp
ZWRET01UcmVlKGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCit7CisgICAgQVNTRVJUKHNo
YWRvd1Jvb3QpOworICAgIGlmIChTaGFkb3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCA9IHNoYWRv
d1Jvb3QtPnlvdW5nZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAgSFRNTFNoYWRvd0VsZW1lbnQq
IHNoYWRvd0VsZW1lbnQgPSB5b3VuZ2VyU2hhZG93Um9vdC0+Zmlyc3RTaGFkb3dFbGVtZW50KCk7
CisgICAgICAgIEFTU0VSVChzaGFkb3dFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHNoYWRvd0Vs
ZW1lbnQtPnBhcmVudE5vZGVNYXliZUJhY2tUb0luc2VydGlvblBvaW50SW5SZWlmaWVkRE9NVHJl
ZSgpOworICAgIH0KKyAgICByZXR1cm4gc2hhZG93Um9vdC0+aG9zdCgpOworfQorCitOb2RlKiBO
b2RlOjpwYXJlbnROb2RlSW5DdXJyZW50VHJlZUluUmVpZmllZERPTVRyZWUoKSBjb25zdAorewor
ICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKHBhcmVu
dC0+aXNTaGFkb3dSb290KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZUJhY2tUb1lv
dW5nZXJTaGFkb3dSb290SW5SZWlmaWVkRE9NVHJlZSh0b1NoYWRvd1Jvb3QocGFyZW50KSk7Cisg
ICAgICAgIHJldHVybiBwYXJlbnQtPnRyYXZlcnNlTWVFc2NhcGluZ0ZhbGxiYWNrQ29udGVudHNJ
blJlaWZpZWRET01UcmVlKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitOb2RlKiBOb2Rl
Ojp0cmF2ZXJzZU1lRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzSW5SZWlmaWVkRE9NVHJlZSgpIGNv
bnN0Cit7CisgICAgaWYgKGlzQ29udGVudEVsZW1lbnQoKSB8fCBpc1NoYWRvd0VsZW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVNYXliZUJhY2tUb0luc2VydGlvblBvaW50SW5SZWlm
aWVkRE9NVHJlZSgpOworICAgIHJldHVybiBjb25zdF9jYXN0PE5vZGUqPih0aGlzKTsKK30KKwog
dm9pZCBOb2RlOjphdHRhY2goKQogewogICAgIEFTU0VSVCghYXR0YWNoZWQoKSk7CkBAIC0xNDk0
LDYgKzE2MzQsNyBAQCBOb2RlKiBOb2RlOjpzaGFkb3dBbmNlc3Rvck5vZGUoKSBjb25zdAogICAg
IHJldHVybiBjb25zdF9jYXN0PE5vZGUqPih0aGlzKTsKIH0KIAorLy8gRklYTUU6IHJldHVybiBT
aGFkb3dSb290KiBpbnN0ZWFkIG9mIE5vZGUqCiBOb2RlKiBOb2RlOjpzaGFkb3dUcmVlUm9vdE5v
ZGUoKSBjb25zdAogewogICAgIE5vZGUqIHJvb3QgPSBjb25zdF9jYXN0PE5vZGUqPih0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCmluZGV4IDUwMjkyMGM3ZjI1OGIwYjdiNDViNjA1ZGJmYjQ5NTkwM2ZlZTcyODcu
LjdjNTg4NTAxMmU4NjY1ODU3YTUwN2U3ZTk3ODhiNDlkYzNkMmM0OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApA
QCAtNDUzLDYgKzQ1MywzMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2Rl
KikgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShOb2RlKik7CiAK
KyAgICAvLyBTaGFkb3cgRE9NIHRyYXZlcnNhbCBBUElzLgorICAgIE5vZGUqIGZpcnN0Q2hpbGRJ
blJlaWZpZWRET01UcmVlKCkgY29uc3Q7CisgICAgTm9kZSogbmV4dFNpYmxpbmdJblJlaWZpZWRE
T01UcmVlKCkgY29uc3Q7CisgICAgTm9kZSogcGFyZW50Tm9kZUluUmVpZmllZERPTVRyZWUoKSBj
b25zdDsKKworICAgIC8vIEludGVybmFsIGhlbHBlcnMuCisgICAgLy8gUmVtb3ZlIHZpcnR1YWw/
PyBNb3ZlIHRvIHByaXZhdGUuCisgICAgdmlydHVhbCBOb2RlKiB0cmF2ZXJzZU1lSW5SZWlmaWVk
RE9NVHJlZSgpIGNvbnN0OworICAgIE5vZGUqIGZpcnN0Q2hpbGRPZkxpZ2h0Q2hpbGRyZW5JblJl
aWZpZWRET01UcmVlKCkgY29uc3Q7CisKKyAgICBOb2RlKiBuZXh0U2libGluZ01heWJlQmFja1Rv
SW5zZXJ0aW9uUG9pbnRJblJlaWZpZWRET01UcmVlKCkgY29uc3Q7CisgICAgTm9kZSogbmV4dFNp
YmxpbmdJbkN1cnJlbnRUcmVlSW5SZWlmaWVkRE9NVHJlZSgpIGNvbnN0OworICAgIE5vZGUqIG5l
eHRCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdEluUmVpZmllZERPTVRyZWUoKSBjb25zdDsKKyAgICBO
b2RlKiBuZXh0RXNjYXBpbmdGYWxsYmFja0NvbnRlbnRFbGVtZW50SW5SZWlmaWVkRE9NVHJlZSgp
IGNvbnN0OworCisgICAgTm9kZSogcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnRJ
blJlaWZpZWRET01UcmVlKCkgY29uc3Q7CisgICAgTm9kZSogcGFyZW50Tm9kZUluQ3VycmVudFRy
ZWVJblJlaWZpZWRET01UcmVlKCkgY29uc3Q7CisgICAgTm9kZSogdHJhdmVyc2VNZUVzY2FwaW5n
RmFsbGJhY2tDb250ZW50c0luUmVpZmllZERPTVRyZWUoKSBjb25zdDsKKworICAgIAorICAgIC8v
IEZvciB0ZXN0cy4KKyAgICAvLyBFeHBvc2UgdHJhdmVyc2UgQVBJcyB0byB3aW5kb3cuaW50ZXJu
YWxzPz8/PworICAgIAorICAgIC8vIE5vZGUqIHdhbGtQYXJlbnROb2RlKCkgY29uc3Q7CisKICAg
ICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGRvIHN0cmljdCBlcnJvci1jaGVja2luZyB3aGVu
IGFkZGluZyBjaGlsZHJlbiB2aWEKICAgICAvLyB0aGUgcHVibGljIERPTSBBUEkgKGUuZy4sIGFw
cGVuZENoaWxkKCkpLgogICAgIHZvaWQgY2hlY2tBZGRDaGlsZChOb2RlKiBuZXdDaGlsZCwgRXhj
ZXB0aW9uQ29kZSYpOyAvLyBFcnJvci1jaGVja2luZyB3aGVuIGFkZGluZyB2aWEgdGhlIERPTSBB
UEkKQEAgLTU0Niw2ICs1NzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXNB
Y3Jvc3NGcmFtZSgpIGNvbnN0OwogI2VuZGlmCiAKKwogICAgIHZvaWQgcmVnaXN0ZXJEeW5hbWlj
U3VidHJlZU5vZGVMaXN0KER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0KER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqKTsKICAg
ICB2b2lkIGludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmNwcAppbmRleCA4ZTQ1YjQxM2FlY2Q2ZTAyYzIwNTAyZTM4YTEwZWI3NDY5YTRhNjllLi5i
NmJmODZkODkyNDVhOTVjNWZjZWEyZmEwYmMwYWY5NzY3YjQ4NDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY3LDggKzY3LDEwIEBAIE5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgICAg
ICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290ID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRv
d1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOwogCiAgICAgICAgIGlmIChtX3Zpc3Vh
bFBhcmVudFNoYWRvd1Jvb3QpIHsKLSAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9
IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAg
ICAgICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmlzU2VsZWN0b3JBY3Rp
dmUoKSkgeworCisgICAgICAgICAgICBTaGFkb3dSb290TGlzdCogc2hhZG93Um9vdExpc3QgPSBt
X3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmhvc3QoKS0+c2hhZG93Um9vdExpc3QoKTsKKyAgICAg
ICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3RMaXN0LT5pbnNlcnRpb25Q
b2ludEZvcihtX25vZGUpKQorICAgICAgICAgICAgICAgICYmIHNoYWRvd1Jvb3RMaXN0LT5pc1Nl
bGVjdG9yQWN0aXZlKCkpIHsKICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRGlz
dHJpYnV0ZWQ7CiAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5
bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTksNyAr
MTIxLDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJl
bGVhc2VTdHlsZSgpCiAgICAgcmV0dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQogCi1zdGF0aWMg
UmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXJPZihIVE1MQ29udGVudEVsZW1lbnQqIHBhcmVudCwg
Tm9kZSogY3VycmVudCkKK3N0YXRpYyBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlck9mKEluc2Vy
dGlvblBvaW50KiBwYXJlbnQsIE5vZGUqIGN1cnJlbnQpCiB7CiAgICAgSFRNTENvbnRlbnRTZWxl
Y3Rpb24qIGN1cnJlbnRTZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+ZmluZChjdXJy
ZW50KTsKICAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pCkBAIC0xMzMsNyArMTM1LDcgQEAgc3Rh
dGljIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyT2YoSFRNTENvbnRlbnRFbGVtZW50KiBwYXJl
bnQsIE5vZGUqIGN1cnJlbnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBSZW5kZXJPYmpl
Y3QqIHByZXZpb3VzUmVuZGVyZXJPZihIVE1MQ29udGVudEVsZW1lbnQqIHBhcmVudCwgTm9kZSog
Y3VycmVudCkKK3N0YXRpYyBSZW5kZXJPYmplY3QqIHByZXZpb3VzUmVuZGVyZXJPZihJbnNlcnRp
b25Qb2ludCogcGFyZW50LCBOb2RlKiBjdXJyZW50KQogewogICAgIFJlbmRlck9iamVjdCogbGFz
dFJlbmRlcmVyID0gMDsKIApAQCAtMTQ3LDcgKzE0OSw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3Qq
IHByZXZpb3VzUmVuZGVyZXJPZihIVE1MQ29udGVudEVsZW1lbnQqIHBhcmVudCwgTm9kZSogY3Vy
cmVuCiAgICAgcmV0dXJuIGxhc3RSZW5kZXJlcjsKIH0KIAotc3RhdGljIFJlbmRlck9iamVjdCog
Zmlyc3RSZW5kZXJlck9mKEhUTUxDb250ZW50RWxlbWVudCogcGFyZW50KQorc3RhdGljIFJlbmRl
ck9iamVjdCogZmlyc3RSZW5kZXJlck9mKEluc2VydGlvblBvaW50KiBwYXJlbnQpCiB7CiAgICAg
Zm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25z
KCktPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsK
ICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+
cmVuZGVyZXIoKSkKQEAgLTE1Nyw3ICsxNTksNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJz
dFJlbmRlcmVyT2YoSFRNTENvbnRlbnRFbGVtZW50KiBwYXJlbnQpCiAgICAgcmV0dXJuIDA7CiB9
CiAKLXN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKEhUTUxDb250ZW50RWxlbWVu
dCogcGFyZW50KQorc3RhdGljIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyT2YoSW5zZXJ0aW9u
UG9pbnQqIHBhcmVudCkKIHsKICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rp
b24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+bGFzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9
IHNlbGVjdGlvbi0+cHJldmlvdXMoKSkgewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCBlY2MyMmZlMjNhMmE4ZTZkZTQ3N2JhZjE4OWYy
YTI1ODM4ZTA2MDM0Li5mM2Y1MDFhODFlYjU5ZGE1MGQxZTI5NjYxZTlkNmI4ZWRjMTM3NzZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzQsMTEgKzM0
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNz
IERvY3VtZW50OworY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVu
ZGVyRmxvd1RocmVhZDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwot
Y2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OwogY2xhc3MgU2hhZG93Um9vdDsKIAogY2xhc3MgTm9k
ZVJlbmRlcmluZ0NvbnRleHQgewpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVy
T2JqZWN0KiBwYXJlbnRSZW5kZXJlcigpIGNvbnN0OwogICAgIFJlbmRlck9iamVjdCogbmV4dFJl
bmRlcmVyKCkgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyKCkgY29u
c3Q7Ci0gICAgSFRNTENvbnRlbnRFbGVtZW50KiBpbnNlcnRpb25Qb2ludCgpIGNvbnN0OworICAg
IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCgpIGNvbnN0OwogCiAgICAgUmVuZGVyU3R5
bGUqIHN0eWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPik7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV9ub2RlOwogICAg
IENvbnRhaW5lck5vZGUqIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlOwogICAgIFNo
YWRvd1Jvb3QqIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdDsKLSAgICBIVE1MQ29udGVudEVsZW1l
bnQqIG1faW5zZXJ0aW9uUG9pbnQ7CisgICAgSW5zZXJ0aW9uUG9pbnQqIG1faW5zZXJ0aW9uUG9p
bnQ7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOwogICAgIFJlbmRlckZsb3dUaHJl
YWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwogICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7
CkBAIC0xMDMsNyArMTAzLDcgQEAgaW5saW5lIFJlbmRlclN0eWxlKiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6c3R5bGUoKSBjb25zdAogICAgIHJldHVybiBtX3N0eWxlLmdldCgpOwogfQogCi1pbmxp
bmUgSFRNTENvbnRlbnRFbGVtZW50KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aW5zZXJ0aW9uUG9p
bnQoKSBjb25zdAoraW5saW5lIEluc2VydGlvblBvaW50KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
aW5zZXJ0aW9uUG9pbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2luc2VydGlvblBvaW50Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGVkOTBmMGZlYzgwZDU4Yjc4ZGY3YmI3
MDI0ZDExNDIwY2Y2ZjVmZjMuLjVlODQ0NDExZGRlMTVjMzViOWUzMjRlZWQzNGE4ZjJmOTcxYmY4
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNp
bmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCkBAIC0xMjcsNyArMTI5LDggQEAgUGFzc1JlZlB0cjxTaGFkb3dS
b290PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgU2hhZG93Um9vdENyZWF0
aW9uUHUKICAgICBlbGVtZW50LT5zZXRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKICAgICBp
ZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwotCisgICAgQVNTRVJUKGVsZW1lbnQgPT0gc2hhZG93
Um9vdC0+aG9zdCgpKTsKKyAgICBBU1NFUlQoZWxlbWVudC0+aGFzU2hhZG93Um9vdCgpKTsKICAg
ICByZXR1cm4gc2hhZG93Um9vdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTE4MiwxNiArMTg1LDYgQEAg
dm9pZCBTaGFkb3dSb290OjpzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkK
ICAgICAgICAgc2hhZG93SG9zdCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLUhUTUxD
b250ZW50RWxlbWVudCogU2hhZG93Um9vdDo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkg
Y29uc3QKLXsKLSAgICBpZiAoIW1fc2VsZWN0b3IpCi0gICAgICAgIHJldHVybiAwOwotICAgIEhU
TUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IG1fc2VsZWN0b3ItPmZpbmRGb3Iobm9kZSk7Ci0g
ICAgaWYgKCFmb3VuZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZvdW5kLT5pbnNl
cnRpb25Qb2ludCgpOwotfQotCiB2b2lkIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZHJlbkNoYW5nZWQo
KQogewogICAgIGlmICghaGFzQ29udGVudEVsZW1lbnQoKSkKQEAgLTIwMSwxMSArMTk0LDYgQEAg
dm9pZCBTaGFkb3dSb290Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKICAgICBzZXROZWVkc1JlYXR0
YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiB9CiAKLWJvb2wgU2hhZG93Um9vdDo6aXNTZWxl
Y3RvckFjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rv
ci0+aGFzQ2FuZGlkYXRlcygpOwotfQotCiBib29sIFNoYWRvd1Jvb3Q6Omhhc0NvbnRlbnRFbGVt
ZW50KCkgY29uc3QKIHsKICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBu
LT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7CkBAIC0yMTYsNiArMjA0LDE2IEBAIGJvb2wgU2hh
ZG93Um9vdDo6aGFzQ29udGVudEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorLy8gRklYTUU6IENhY2hlIHRoaXMuCitIVE1MU2hhZG93RWxlbWVudCogU2hhZG93Um9vdDo6
Zmlyc3RTaGFkb3dFbGVtZW50KCkgY29uc3QKK3sKKyAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENo
aWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7CisgICAgICAgIGlmIChu
LT5pc1NoYWRvd0VsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0b1NoYWRvd0VsZW1lbnQo
bik7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBib29sIFNoYWRvd1Jvb3Q6OmFwcGx5QXV0
aG9yU2hlZXRzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hcHBseUF1dGhvclNoZWV0czsKQEAg
LTIzMSwxMCArMjI5LDEyIEBAIHZvaWQgU2hhZG93Um9vdDo6YXR0YWNoKCkKICAgICAvLyBDaGls
ZHJlbiBvZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KICAgICAvLyBlbnN1cmVT
ZWxlY3RvcigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0CiAgICAgLy8gaXQgaXMgaW4g
Y2xlYW4gc3RhdGUuCi0gICAgQVNTRVJUKCFtX3NlbGVjdG9yIHx8ICFtX3NlbGVjdG9yLT5oYXND
YW5kaWRhdGVzKCkpOworICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiBicmVha3MgaWYgbXVs
dGlwbGUgc2hhZG93IHJvb3RzIGFyZSBiZWluZyBhdHRhY2hlZC4KKyAgICAvLyBTaGFkb3dSb290
TGlzdCBzaG91bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBvZiBzZWxlY3Rv
ciBpbiBhdHRhY2hpbmcvZGV0YWNoaW5nLgorICAgIEFTU0VSVCghaG9zdCgpLT5zaGFkb3dSb290
TGlzdCgpLT5zZWxlY3RvcigpIHx8ICFob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9y
KCktPmhhc0NhbmRpZGF0ZXMoKSk7CiAgICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7Ci0g
ICAgaWYgKG1fc2VsZWN0b3IpCi0gICAgICAgIG1fc2VsZWN0b3ItPmRpZFNlbGVjdCgpOworICAg
IGlmIChIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IGhvc3QoKS0+c2hhZG93Um9vdExp
c3QoKS0+c2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZWN0b3ItPmRpZFNlbGVjdCgpOwogfQogCiB2
b2lkIFNoYWRvd1Jvb3Q6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKQEAgLTI1Niwx
OCArMjU2LDQgQEAgdm9pZCBTaGFkb3dSb290OjpyZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRv
dygpCiAgICAgfQogfQogCi1IVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290OjpzZWxlY3Rv
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Ci19Ci0KLUhUTUxDb250
ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3Q6OmVuc3VyZVNlbGVjdG9yKCkKLXsKLSAgICBpZiAoIW1f
c2VsZWN0b3IpCi0gICAgICAgIG1fc2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgSFRNTENvbnRlbnRT
ZWxlY3RvcigpKTsKLSAgICBtX3NlbGVjdG9yLT53aWxsU2VsZWN0T3Zlcih0aGlzKTsKLSAgICBy
ZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKLX0KLQotCi19Cit9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKaW5kZXggODNlMTcxMzQ5OTUyOWU0NjRkOGMzNjA5OWJmZGQ1YmMxNWY0
YzFlMS4uM2Y1YjY3MTE2Y2EzY2Y2NjBkYjQxNWZkMWE2YmYxYmY2ZDA4YzFkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIFNoYWRvd1Jvb3RfaAog
CiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVk
ZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KQEAgLTM3LDYgKzM4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7CiBjbGFz
cyBIVE1MQ29udGVudFNlbGVjdG9yOworY2xhc3MgSFRNTFNoYWRvd0VsZW1lbnQ7CitjbGFzcyBJ
bnNlcnRpb25Qb2ludDsKIAogY2xhc3MgU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdt
ZW50LCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93
Um9vdD4gewogICAgIGZyaWVuZCBjbGFzcyBXVEY6OkRvdWJseUxpbmtlZExpc3ROb2RlPFNoYWRv
d1Jvb3Q+OwpAQCAtNTksOSArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck5lZWRzUmVh
dHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICBib29sIG5lZWRzUmVhdHRhY2hIb3N0
Q2hpbGRyZW5BbmRTaGFkb3coKTsKIAotICAgIEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9u
UG9pbnRGb3IoTm9kZSopIGNvbnN0OwogICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwot
ICAgIGJvb2wgaXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaCgpOwogICAgIHZvaWQgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKQEAgLTcx
LDEyICs3MiwxMSBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50KiBob3N0KCkgY29uc3QgeyByZXR1
cm4gc2hhZG93SG9zdCgpOyB9CiAKLSAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3Rvcigp
IGNvbnN0OwotICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIGVuc3VyZVNlbGVjdG9yKCk7Ci0KICAg
ICBTaGFkb3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIHByZXYoKTsg
fQogICAgIFNoYWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIG5leHQo
KTsgfQogCisgICAgSFRNTFNoYWRvd0VsZW1lbnQqIGZpcnN0U2hhZG93RWxlbWVudCgpIGNvbnN0
OworCiBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5T
aGFkb3dSb290KCk7CkBAIC04NiwxMiArODYsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Q7CiAKICAgICBib29sIGhhc0NvbnRl
bnRFbGVtZW50KCkgY29uc3Q7CisgICAgLy8gYm9vbCBoYXNTaGFkb3dFbGVtZW50KCkgY29uc3Q7
CisgICAgSFRNTFNoYWRvd0VsZW1lbnQqIHNoYWRvd0VsZW1lbnQoKSBjb25zdDsKIAogICAgIFNo
YWRvd1Jvb3QqIG1fcHJldjsKICAgICBTaGFkb3dSb290KiBtX25leHQ7CiAgICAgYm9vbCBtX2Fw
cGx5QXV0aG9yU2hlZXRzIDogMTsKICAgICBib29sIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQg
OiAxOwotICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOwogfTsKIAog
aW5saW5lIHZvaWQgU2hhZG93Um9vdDo6Y2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5k
U2hhZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwCmluZGV4IGQxOTU1YWFl
ZTYwMGYwNDcxMGUxYTRiMzlmMzkwNmNlZTI1MTMyNDMuLjQ5N2VjNWRkYWNjODEzNjRjOTczMDQ4
NTg0YzQ5MmExNDg4YmU2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcApA
QCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkluc2Vy
dGlvblBvaW50LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKIApAQCAtMTIzLDQgKzEyNSwzMiBAQCB2b2lkIFNoYWRvd1Jvb3RM
aXN0OjpkZXRhY2goKQogICAgIH0KIH0KIAorSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1Jvb3RMaXN0
OjppbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAoreworICAgIEhUTUxD
b250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IHNlbGVjdGlvbkZvcihub2RlKTsKKyAgICBpZiAoIWZv
dW5kKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50
KCk7CiB9CisKK0hUTUxDb250ZW50U2VsZWN0aW9uKiBTaGFkb3dSb290TGlzdDo6c2VsZWN0aW9u
Rm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NlbGVjdG9yKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKK30K
KworYm9vbCBTaGFkb3dSb290TGlzdDo6aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOworfQorCitI
VE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3IoKQorewor
ICAgIGlmICghbV9zZWxlY3RvcikKKyAgICAgICAgbV9zZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBI
VE1MQ29udGVudFNlbGVjdG9yKCkpOworICAgIG1fc2VsZWN0b3ItPndpbGxTZWxlY3RPdmVyKGhv
c3QoKSk7CisgICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCmluZGV4IGRiZWM3OTU0NjQzZTY1OGEzNDBl
NzZhOTIxMGMwOWVlOTgwZjA0NzkuLjczMWU5M2M4ODgzMDljMzE0MjYzN2IxMTg3NmIyYTU0M2Ez
YmJjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCkBAIC0yNywyMyArMjcsMjgg
QEAKICNpZm5kZWYgU2hhZG93Um9vdExpc3RfaAogI2RlZmluZSBTaGFkb3dSb290TGlzdF9oCiAK
KyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3Qu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFkb3dSb290OworY2xhc3MgTm9kZTsKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1M
Q29udGVudEVsZW1lbnQ7CitjbGFzcyBIVE1MQ29udGVudFNlbGVjdG9yOworY2xhc3MgSFRNTENv
bnRlbnRTZWxlY3Rpb247CiAKIGNsYXNzIFNoYWRvd1Jvb3RMaXN0IHsKIHB1YmxpYzoKICAgICBT
aGFkb3dSb290TGlzdCgpOwogICAgIH5TaGFkb3dSb290TGlzdCgpOwogCi0gICAgYm9vbCBoYXNT
aGFkb3dSb290KCk7Ci0gICAgU2hhZG93Um9vdCogeW91bmdlc3RTaGFkb3dSb290KCk7Ci0gICAg
U2hhZG93Um9vdCogb2xkZXN0U2hhZG93Um9vdCgpOworICAgIGJvb2wgaGFzU2hhZG93Um9vdCgp
IGNvbnN0OworICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0OworICAg
IFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdDsKIAogICAgIHZvaWQgcHVzaFNo
YWRvd1Jvb3QoU2hhZG93Um9vdCopOwogICAgIFNoYWRvd1Jvb3QqIHBvcFNoYWRvd1Jvb3QoKTsK
QEAgLTU5LDI2ICs2NCw0OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRhY2goKTsKICAgICB2b2lk
IGRldGFjaCgpOwogCisgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQoaGFzU2hhZG93Um9vdCgpKTsKKyAgICAgICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9v
dCgpLT5ob3N0KCk7CisgICAgfQorCisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
Rm9yKGNvbnN0IE5vZGUqKSBjb25zdDsKKworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxl
Y3Rpb25Gb3IoY29uc3QgTm9kZSopIGNvbnN0OworCisgICAgLy8gRG9uJ3QgcGFzcyBzZWxlY3Rv
ciB0byBjbGllbnRzLiBTaGFkb3dSb290TGlzdCBzaG91bGQgYWN0IGZhY2FkZS4KKyAgICBIVE1M
Q29udGVudFNlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0
b3IqIGVuc3VyZVNlbGVjdG9yKCk7CisKKyAgICBib29sIGlzU2VsZWN0b3JBY3RpdmUoKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBEb3VibHlMaW5rZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93
Um9vdHM7CisgICAgT3duUHRyPEhUTUxDb250ZW50U2VsZWN0b3I+IG1fc2VsZWN0b3I7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhZG93Um9vdExpc3QpOwogfTsKIAotaW5saW5lIGJvb2wg
U2hhZG93Um9vdExpc3Q6Omhhc1NoYWRvd1Jvb3QoKQoraW5saW5lIGJvb2wgU2hhZG93Um9vdExp
c3Q6Omhhc1NoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIHJldHVybiAhbV9zaGFkb3dSb290cy5p
c0VtcHR5KCk7CiB9CiAKLWlubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6eW91bmdl
c3RTaGFkb3dSb290KCkKK2lubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6eW91bmdl
c3RTaGFkb3dSb290KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy5oZWFkKCk7
CiB9CiAKLWlubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6b2xkZXN0U2hhZG93Um9v
dCgpCitpbmxpbmUgU2hhZG93Um9vdCogU2hhZG93Um9vdExpc3Q6Om9sZGVzdFNoYWRvd1Jvb3Qo
KSBjb25zdAogewogICAgIHJldHVybiBtX3NoYWRvd1Jvb3RzLnRhaWwoKTsKIH0KIAoraW5saW5l
IEhUTUxDb250ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3RMaXN0OjpzZWxlY3RvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVu
dC5jcHAKaW5kZXggNmE2Yjg5YmZhYWRjNDk3YTQ1YjEwMDdlMWRlNjM3Mjc5MTIxMTM0OS4uZjFh
NzA1NzE1MjAxOGMxMzY2MDhhNDM3MjEwZGY0ZWNmYzAwMGVmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAs
NyArNjEsNiBAQCBQYXNzUmVmUHRyPEhUTUxDb250ZW50RWxlbWVudD4gSFRNTENvbnRlbnRFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdAogCiBIVE1MQ29udGVudEVsZW1lbnQ6
OkhUTUxDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBJbnNlcnRpb25Qb2ludChuYW1lLCBkb2N1bWVudCkKLSAgICAsIG1f
c2VsZWN0aW9ucyhhZG9wdFB0cihuZXcgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCkpKQogewog
fQogCkBAIC03NCwxNSArNzQsMTUgQEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OmF0dGFjaCgp
CiAKICAgICAvLyBCZWZvcmUgY2FsbGluZyBTdHlsZWRFbGVtZW50OjphdHRhY2gsIHNlbGVjdG9y
IG11c3QgYmUgY2FsY3VsYXRlZC4KICAgICBpZiAocm9vdCkgewotICAgICAgICBIVE1MQ29udGVu
dFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmVuc3VyZVNlbGVjdG9yKCk7Ci0gICAgICAgIHNl
bGVjdG9yLT51bnNlbGVjdChtX3NlbGVjdGlvbnMuZ2V0KCkpOwotICAgICAgICBzZWxlY3Rvci0+
c2VsZWN0KHRoaXMsIG1fc2VsZWN0aW9ucy5nZXQoKSk7CisgICAgICAgIEhUTUxDb250ZW50U2Vs
ZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+aG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5lbnN1cmVT
ZWxlY3RvcigpOworICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QoJm1fc2VsZWN0aW9ucyk7Cisg
ICAgICAgIHNlbGVjdG9yLT5zZWxlY3QodGhpcywgJm1fc2VsZWN0aW9ucyk7CiAgICAgfQogCiAg
ICAgSW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaCgpOwogCiAgICAgaWYgKHJvb3QpIHsKLSAgICAgICAg
Zm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gbV9zZWxlY3Rpb25zLT5maXJz
dCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKQorICAgICAgICBm
b3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBtX3NlbGVjdGlvbnMuZmlyc3Qo
KTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkKICAgICAgICAgICAg
IHNlbGVjdGlvbi0+bm9kZSgpLT5hdHRhY2goKTsKICAgICB9CiB9CkBAIC05MCwxNSArOTAsMTUg
QEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OmF0dGFjaCgpCiB2b2lkIEhUTUxDb250ZW50RWxl
bWVudDo6ZGV0YWNoKCkKIHsKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93Um9v
dChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKLSAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0
b3IqIHNlbGVjdG9yID0gcm9vdC0+c2VsZWN0b3IoKSkKLSAgICAgICAgICAgIHNlbGVjdG9yLT51
bnNlbGVjdChtX3NlbGVjdGlvbnMuZ2V0KCkpOworICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxl
Y3Rvciogc2VsZWN0b3IgPSByb290LT5ob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9y
KCkpCisgICAgICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QoJm1fc2VsZWN0aW9ucyk7CiAKICAg
ICAgICAgLy8gV2hlbiBjb250ZW50IGVsZW1lbnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNo
b3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2FsY3VsYXRlIHNlbGVjdG9yIGZvcgogICAgICAgICAv
LyBvdGhlciBjb250ZW50IGVsZW1lbnRzLgogICAgICAgICByb290LT5zZXROZWVkc1JlYXR0YWNo
SG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1fc2VsZWN0aW9u
cy0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9zZWxlY3Rpb25zLmlzRW1wdHkoKSk7CiAgICAg
SW5zZXJ0aW9uUG9pbnQ6OmRldGFjaCgpOwogfQogCkBAIC0xMjcsNCArMTI3LDEyIEBAIHZvaWQg
SFRNTENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAg
ICAgIEluc2VydGlvblBvaW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KIAorTm9kZSogSFRN
TENvbnRlbnRFbGVtZW50Ojp0cmF2ZXJzZU1lSW5SZWlmaWVkRE9NVHJlZSgpIGNvbnN0Cit7Cisg
ICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25MaXN0ID0gc2VsZWN0
aW9ucygpOworICAgIGlmIChzZWxlY3Rpb25MaXN0LT5maXJzdCgpKQorICAgICAgICByZXR1cm4g
c2VsZWN0aW9uTGlzdC0+Zmlyc3QoKS0+bm9kZSgpLT50cmF2ZXJzZU1lSW5SZWlmaWVkRE9NVHJl
ZSgpOworICAgIHJldHVybiBmaXJzdENoaWxkT2ZMaWdodENoaWxkcmVuSW5SZWlmaWVkRE9NVHJl
ZSgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5oCmluZGV4IGEwMTNjNmRlODk3ZGIyN2YzODBmNTM1MjFmZDI1NGZlNzg1N2EyNmIu
LmM0M2EwZjRhNmI5ZGRjNjg4MmNmZTQ2Y2I1NjAxYmI5YjdiMWNlY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCkBAIC02MCwxMSArNjAs
MTAgQEAgcHVibGljOgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzYyNjEKICAgICB2b2lkIHNldFNlbGVjdChjb25zdCBBdG9taWNTdHJpbmcmKTsK
IAotICAgIGNvbnN0IEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0aW9ucy5nZXQoKTsgfQotICAgIGJvb2wgaGFzU2VsZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gc2VsZWN0aW9ucygpLT5maXJzdCgpOyB9Ci0KICAgICB2aXJ0dWFsIGJv
b2wgaXNTZWxlY3RWYWxpZCgpIGNvbnN0OwogCisgICAgdmlydHVhbCBOb2RlKiB0cmF2ZXJzZU1l
SW5SZWlmaWVkRE9NVHJlZSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTENvbnRlbnRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC03NCw4ICs3Myw2
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7Ci0KLSAgICBPd25QdHI8SFRN
TENvbnRlbnRTZWxlY3Rpb25MaXN0PiBtX3NlbGVjdGlvbnM7CiB9OwogCiBpbmxpbmUgSFRNTENv
bnRlbnRFbGVtZW50KiB0b0hUTUxDb250ZW50RWxlbWVudChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAppbmRleCA4
N2UxYWQ5ZWJhMDJiMDViOTY2YWZhNmY3ZTY4YWUxMjk3MzEyYjRjLi44N2NhY2ViNWNkMTMyYzI2
YTQ2Yjk5ZGVjMGEwYWM2YmUzN2VkY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcApAQCAtMTIxLDYgKzEyMSw3IEBAIHZvaWQg
SFRNTENvbnRlbnRTZWxlY3Rvcjo6c2VsZWN0KEhUTUxDb250ZW50RWxlbWVudCogY29udGVudEVs
ZW1lbnQsIEhUTUxDb250ZW50CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZWZQ
dHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IHNlbGVjdGlvbiA9IEhUTUxDb250ZW50U2VsZWN0aW9u
OjpjcmVhdGUoY29udGVudEVsZW1lbnQsIGNoaWxkKTsKKwogICAgICAgICBzZWxlY3Rpb25zLT5h
cHBlbmQoc2VsZWN0aW9uKTsKICAgICAgICAgbV9zZWxlY3Rpb25TZXQuYWRkKHNlbGVjdGlvbi5n
ZXQoKSk7CiAgICAgICAgIG1fY2FuZGlkYXRlc1tpXSA9IDA7CkBAIC0xMzQsNyArMTM1LDcgQEAg
dm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp1bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxp
c3QqIGxpc3QpCiAgICAgbGlzdC0+Y2xlYXIoKTsKIH0KIAotSFRNTENvbnRlbnRTZWxlY3Rpb24q
IEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoTm9kZSoga2V5KSBjb25zdAorSFRNTENvbnRl
bnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoY29uc3QgTm9kZSoga2V5
KSBjb25zdAogewogICAgIHJldHVybiBtX3NlbGVjdGlvblNldC5maW5kKGtleSk7CiB9CkBAIC0x
NDQsMTEgKzE0NSwxMiBAQCB2b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OmRpZFNlbGVjdCgpCiAg
ICAgbV9jYW5kaWRhdGVzLmNsZWFyKCk7CiB9CiAKLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6
d2lsbFNlbGVjdE92ZXIoU2hhZG93Um9vdCogc2NvcGUpCit2b2lkIEhUTUxDb250ZW50U2VsZWN0
b3I6OndpbGxTZWxlY3RPdmVyKEVsZW1lbnQqIHNoYWRvd0hvc3QpCiB7CiAgICAgaWYgKCFtX2Nh
bmRpZGF0ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgZm9yIChOb2RlKiBub2Rl
ID0gc2NvcGUtPnNoYWRvd0hvc3QoKS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+
bmV4dFNpYmxpbmcoKSkKKyAgICBBU1NFUlQoc2hhZG93SG9zdCk7CisgICAgZm9yIChOb2RlKiBu
b2RlID0gc2hhZG93SG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNp
YmxpbmcoKSkKICAgICAgICAgbV9jYW5kaWRhdGVzLmFwcGVuZChub2RlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCmluZGV4IGIw
YTI4OTIwMjY5ZTRmNmQzMTE4MDBiNWJjZGJhY2VlODUzODcyNjAuLmYwNWMzMzc4MDFjNTRmMmY0
YjExY2EzNmYwNTgxMmRiN2NmMzZjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKQEAgLTQwLDE0ICs0MCwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7Citj
bGFzcyBJbnNlcnRpb25Qb2ludDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTaGFkb3dSb290OwogCiBj
bGFzcyBIVE1MQ29udGVudFNlbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEhUTUxDb250ZW50
U2VsZWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRT
ZWxlY3Rpb24+IGNyZWF0ZShIVE1MQ29udGVudEVsZW1lbnQqLCBOb2RlKik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IGNyZWF0ZShJbnNlcnRpb25Qb2ludCos
IE5vZGUqKTsKIAotICAgIEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9uUG9pbnQoKSBjb25z
dCB7IHJldHVybiBtX2luc2VydGlvblBvaW50OyB9CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludDsgfQogICAgIE5vZGUq
IG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGUuZ2V0KCk7IH0KICAgICBIVE1MQ29udGVudFNl
bGVjdGlvbiogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dC5nZXQoKTsgfQogICAgIEhUTUxD
b250ZW50U2VsZWN0aW9uKiBwcmV2aW91cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0
KCk7IH0KQEAgLTU2LDE5ICs1NywxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmxpbmsoKTsKIAog
cHJpdmF0ZToKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbihIVE1MQ29udGVudEVsZW1lbnQqLCBO
b2RlKik7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24oSW5zZXJ0aW9uUG9pbnQqLCBOb2RlKik7
CiAKLSAgICBIVE1MQ29udGVudEVsZW1lbnQqIG1faW5zZXJ0aW9uUG9pbnQ7CisgICAgSW5zZXJ0
aW9uUG9pbnQqIG1faW5zZXJ0aW9uUG9pbnQ7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAg
ICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IG1fbmV4dDsKICAgICBSZWZQdHI8SFRNTENv
bnRlbnRTZWxlY3Rpb24+IG1fcHJldmlvdXM7CiB9OwogCi1pbmxpbmUgSFRNTENvbnRlbnRTZWxl
Y3Rpb246OkhUTUxDb250ZW50U2VsZWN0aW9uKEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9u
UG9pbnQsIE5vZGUqIG5vZGUpCitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY3Rpb246OkhUTUxDb250
ZW50U2VsZWN0aW9uKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgTm9kZSogbm9kZSkK
ICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpLCBtX25vZGUobm9kZSkKIHsg
fQogCi1pbmxpbmUgUGFzc1JlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gSFRNTENvbnRlbnRT
ZWxlY3Rpb246OmNyZWF0ZShIVE1MQ29udGVudEVsZW1lbnQqIGluc2VydGlvblBvaW50LCBOb2Rl
KiBub2RlKQoraW5saW5lIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IEhUTUxDb250
ZW50U2VsZWN0aW9uOjpjcmVhdGUoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50LCBOb2Rl
KiBub2RlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTENvbnRlbnRTZWxlY3Rpb24o
aW5zZXJ0aW9uUG9pbnQsIG5vZGUpKTsKIH0KQEAgLTk3LDcgKzk4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkKEhUTUxDb250ZW50U2VsZWN0aW9uKiB2YWx1ZSkgeyBtX3NldC5hZGQodmFsdWUp
OyB9CiAgICAgdm9pZCByZW1vdmUoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0
LnJlbW92ZSh2YWx1ZSk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Nl
dC5pc0VtcHR5KCk7IH0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChOb2RlKiBrZXkp
IGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kKGNvbnN0IE5vZGUqIGtleSkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFRyYW5zbGF0b3IgewpAQCAtMTE3LDkgKzEx
OCw5IEBAIHByaXZhdGU6CiAgICAgUG9pbnRlclNldCBtX3NldDsKIH07CiAKLWlubGluZSBIVE1M
Q29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQoTm9kZSoga2V5
KSBjb25zdAoraW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlv
blNldDo6ZmluZChjb25zdCBOb2RlKiBrZXkpIGNvbnN0CiB7Ci0gICAgUG9pbnRlclNldDo6aXRl
cmF0b3IgZm91bmQgPSBtX3NldC5maW5kPE5vZGUqLCBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6
VHJhbnNsYXRvcj4oa2V5KTsKKyAgICBQb2ludGVyU2V0OjppdGVyYXRvciBmb3VuZCA9IG1fc2V0
LmZpbmQ8Y29uc3QgTm9kZSosIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpUcmFuc2xhdG9yPihr
ZXkpOwogICAgIHJldHVybiBmb3VuZCAhPSBtX3NldC5lbmQoKSA/ICpmb3VuZCA6IDA7CiB9CiAK
QEAgLTEzMSw5ICsxMzIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbGVjdChIVE1MQ29udGVu
dEVsZW1lbnQqLCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKICAgICB2b2lkIHVuc2VsZWN0
KEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBm
aW5kRm9yKE5vZGUqIGtleSkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmRG
b3IoY29uc3QgTm9kZSoga2V5KSBjb25zdDsKIAotICAgIHZvaWQgd2lsbFNlbGVjdE92ZXIoU2hh
ZG93Um9vdCopOworICAgIHZvaWQgd2lsbFNlbGVjdE92ZXIoRWxlbWVudCogc2hhZG93SG9zdCk7
CiAgICAgdm9pZCBkaWRTZWxlY3QoKTsKICAgICBib29sIGhhc0NhbmRpZGF0ZXMoKSBjb25zdCB7
IHJldHVybiAhbV9jYW5kaWRhdGVzLmlzRW1wdHkoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKaW5kZXggY2IwMWNkMjFmZTBlMDA5
YTVlOGUwMDNhYjliODRiNjhmZGQ0MjkzMC4uNGZjYThiZDAyZmUxZTk2YTczZmJkNGFkNzI5YmU2
ZGJkMzBhYWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFk
b3dFbGVtZW50LmNwcApAQCAtMzMsOCArMzMsOCBAQAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
CiAjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKLQogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
NSw2ICs1NSwxNyBAQCBIVE1MU2hhZG93RWxlbWVudDo6fkhUTUxTaGFkb3dFbGVtZW50KCkKIHsK
IH0KIAorTm9kZSogSFRNTFNoYWRvd0VsZW1lbnQ6OnRyYXZlcnNlTWVJblJlaWZpZWRET01UcmVl
KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogRml4IDxzaGFkb3c+IGluIG9sZGVzdFNoYWRvd1Jv
b3QuCisgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93
VHJlZVJvb3ROb2RlKCkpKSB7CisgICAgICAgIGlmIChTaGFkb3dSb290KiBvbGRlclNoYWRvd1Jv
b3QgPSBzaGFkb3dSb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBv
bGRlclNoYWRvd1Jvb3QtPmZpcnN0Q2hpbGRPZkxpZ2h0Q2hpbGRyZW5JblJlaWZpZWRET01UcmVl
KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKaW5kZXggMTUxYzdhMmFiYmQ2YzUwNTc4OTQzZmQ2
ZGNjZmZmMDVjOWM5ZmZmNy4uZDAzYmY5NTM4MGVlMGQ0NWUzODdjNGYwOWMyY2Q2ZjRiMmE2YjMw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5o
CkBAIC00MywxMSArNDMsMTkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SFRNTFNoYWRvd0Vs
ZW1lbnQoKTsKIAorICAgIHZpcnR1YWwgTm9kZSogdHJhdmVyc2VNZUluUmVpZmllZERPTVRyZWUo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBIVE1MU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAoraW5saW5lIEhUTUxTaGFkb3dFbGVtZW50KiB0
b1NoYWRvd0VsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+
aXNTaGFkb3dFbGVtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2hhZG93RWxl
bWVudCo+KG5vZGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmNwcAppbmRleCBmYWU0ZjM4MDU1YjE0MjI0ZjdkNDEwNTdmMTc2NDFiY2NhOGJjODhk
Li5lOTlkYzI2ZDI3YTFiODg3ZGQyYjFhOTk5ZWIxOGYzMDA4YTY2NTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0zMSwxNCArMzEsMTEg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogCi0j
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9j
dW1lbnQ7Ci0KIEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKKyAgICAsIG1fc2VsZWN0aW9ucygpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDNmNTU1NmVjMjA1OTI1MGQz
MWE4NDEwZDBkYzQxNmFjODRhNWI2YWQuLjQwZmFlMjNiNjkxNjEwZmQyMTkxNWQ5ZjE0YzJjYzk3
YTZkNzFmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBJbnNlcnRpb25Qb2ludF9oCiAjZGVmaW5lIElu
c2VydGlvblBvaW50X2gKIAorI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw4ICs0MCwx
MiBAQCBjbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SW5zZXJ0aW9uUG9pbnQoKTsKIAorICAgIGNvbnN0IEhUTUxDb250ZW50
U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuICZtX3NlbGVjdGlvbnM7
IH0KKyAgICBib29sIGhhc1NlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9ucy5m
aXJzdCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QgbV9zZWxl
Y3Rpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDE1NjIwY2QwZGFiZWM2ZjllZTJiMDIxZmZmYTZiZWY5NWRhMzM3
ZDUuLjdjMjk4NjI5ZTkwMmQ0YmNhZDRhOTI4NTcyNmY1NmE0ZDY4NTY5ZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE1Niw2ICsxNTYsNTUgQEAgYm9vbCBJbnRlcm5h
bHM6OmlzVmFsaWRDb250ZW50U2VsZWN0KEVsZW1lbnQqIGNvbnRlbnRFbGVtZW50LCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICByZXR1cm4gdG9IVE1MQ29udGVudEVsZW1lbnQoY29udGVudEVsZW1l
bnQpLT5pc1NlbGVjdFZhbGlkKCk7CiB9CiAKKy8vIEZJWE1FOiBNZXJnZSB0aGlzIHRvIE5vZGU6
OnNob3dOb2RlLgorc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlRGVzYyhjb25zdCBOb2RlKiBu
b2RlLCBTdHJpbmcmIHN0cmluZywgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgY2hh
ciogYXR0ckRlc2MpCit7CisgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAg
ICBTdHJpbmcgYXR0ciA9IHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnQqPihub2RlKS0+Z2V0QXR0
cmlidXRlKG5hbWUpOworICAgICAgICBpZiAoIWF0dHIuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBzdHJpbmcgKz0gYXR0ckRlc2M7CisgICAgICAgICAgICBzdHJpbmcgKz0gYXR0cjsKKyAgICAg
ICAgfQorICAgIH0KK30KKworc3RhdGljIFN0cmluZyBkdW1wTm9kZShjb25zdCBOb2RlKiBub2Rl
KSAKK3sKKyAgICBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgIFN0cmluZyB2YWx1
ZSA9IG5vZGUtPm5vZGVWYWx1ZSgpOworICAgICAgICB2YWx1ZS5yZXBsYWNlKCdcXCcsICJcXFxc
Iik7CisgICAgICAgIHZhbHVlLnJlcGxhY2UoJ1xuJywgIlxcbiIpOworICAgICAgICBUZXh0U3Ry
ZWFtIHRleHRTdHJlYW07CisgICAgICAgIHRleHRTdHJlYW0gPDwgbm9kZS0+bm9kZU5hbWUoKSA8
PCAiXHQiIDw8IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihub2RlKSA8PCAiXHRcIiIgPDwgdmFs
dWUgPDwgIlwiIjsKKyAgICAgICAgcmV0dXJuIHRleHRTdHJlYW0ucmVsZWFzZSgpOworICAgIH0K
KyAgICBTdHJpbmcgYXR0cnMgPSAiIjsKKyAgICBhcHBlbmRBdHRyaWJ1dGVEZXNjKG5vZGUsIGF0
dHJzLCBIVE1MTmFtZXM6OmNsYXNzQXR0ciwgIiBDTEFTUz0iKTsKKyAgICBhcHBlbmRBdHRyaWJ1
dGVEZXNjKG5vZGUsIGF0dHJzLCBIVE1MTmFtZXM6OnN0eWxlQXR0ciwgIiBTVFlMRT0iKTsKKyAg
ICBUZXh0U3RyZWFtIHRleHRTdHJlYW07CisgICAgdGV4dFN0cmVhbSA8PCBub2RlLT5ub2RlTmFt
ZSgpIDw8ICJcdCIgPDwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG5vZGUpIDw8ICJcdCIgPDwg
YXR0cnM7CisgICAgcmV0dXJuIHRleHRTdHJlYW0ucmVsZWFzZSgpOworfQorCitzdGF0aWMgdm9p
ZCBkdW1wUmVpZmllZERPTVRyZWUoTm9kZSogbm9kZSwgU3RyaW5nJiBvdXRwdXQsIFN0cmluZyBp
bmRlbnQpCit7CisgICAgb3V0cHV0ICs9IGluZGVudCArIGR1bXBOb2RlKG5vZGUpICsgIlxuIjsK
KyAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZEluUmVpZmllZERPTVRyZWUo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nSW5SZWlmaWVkRE9NVHJlZSgpKQor
ICAgICAgICBkdW1wUmVpZmllZERPTVRyZWUoY2hpbGQsIG91dHB1dCwgaW5kZW50ICsgIlx0Iik7
Cit9CisKK1N0cmluZyBJbnRlcm5hbHM6OmR1bXBSZWlmaWVkRE9NVHJlZUZvcihOb2RlKiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisgICAg
U3RyaW5nIG91dHB1dDsKKyAgICBTdHJpbmcgc3RhcnRpbmdJbmRlbnQ7CisgICAgZHVtcFJlaWZp
ZWRET01UcmVlKG5vZGUsIG91dHB1dCwgc3RhcnRpbmdJbmRlbnQpOworICAgIHJldHVybiBvdXRw
dXQ7Cit9CisKIFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1l
bnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZWxlbWVudCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggN2NkZWUxNzE3MzQ1NDJhNjA5MDJlMjlh
YzIwMzk1Zjg2NmM4ZjYyZC4uM2EwMzY0NmE2NWVlYmExYjBjNjY3YjRjZTg3YmU3M2Y2YjA3ZWEy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03NSw3ICs3NSw4IEBAIHB1Ymxp
YzoKICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUNvbnRlbnRFbGVtZW50KERvY3VtZW50
KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkSW5TaGFkb3dS
b290KE5vZGUqIHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBib29sIGlzVmFsaWRDb250ZW50U2VsZWN0KEVsZW1lbnQqIGNvbnRlbnRFbGVtZW50LCBF
eGNlcHRpb25Db2RlJik7Ci0KKyAgICBTdHJpbmcgZHVtcFJlaWZpZWRET01UcmVlRm9yKE5vZGUq
LCBFeGNlcHRpb25Db2RlJik7CisgICAgCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogICAgIHZv
aWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBjb2xv
clZhbHVlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDY1
ZGE2Mjk2YTU5NGNhMmI5NGFlZWFjNzQ5YmZkMDBjYTk3NzlmNTEuLjVlMTg3NDMyYjM2NDlhNWY2
MjMzZTVhZjhkODM1Y2RmY2MwMzE5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTUwLDYgKzUwLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEVsZW1lbnQgY3Jl
YXRlQ29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KGluIE5vZGUg
c2hhZG93Um9vdCwgaW4gRE9NU3RyaW5nIGlkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgYm9vbGVhbiBpc1ZhbGlkQ29udGVudFNlbGVjdChpbiBFbGVtZW50IGNvbnRlbnRFbGVtZW50
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgRE9NU3RyaW5nIGR1bXBSZWlmaWVkRE9N
VHJlZUZvcihpbiBOb2RlIG5vZGUpcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICNpZiBkZWZpbmVk
KEVOQUJMRV9JTlBVVF9DT0xPUikgJiYgRU5BQkxFX0lOUFVUX0NPTE9SCiAgICAgICAgIHZvaWQg
c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihpbiBFbGVtZW50IGVsZW1lbnQsIGluIERPTVN0cmlu
ZyBjb2xvclZhbHVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZGY3YzA1Y2NlODIxZmQ4Zjc1MmI3ZWJhZWQ3MTE1ODMx
NjdlMWM4Li5mMzcxMWVkNzRkZGFhZDIwNGI0MWE2MjE4NGNlOGZiYmU1MjRjNDBkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMDItMjEgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBBZGQgUmVpZmllZCBET00gVHJlZSB0cmF2ZXJz
YWwgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc5MTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V0lQLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L25vZGUtZGlzdHJpYnV0aW9uLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTAyLTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBHVEsgYmFzZWxpbmVzIGZvciBhIG5ldyBmYXN0
L2Nzcy1nZW5lcmF0ZWQtY29udGVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L25vZGUtZGlzdHJpYnV0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvbm9kZS1kaXN0cmlidXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWJiNjAyZWZlOGVlODRlNjBj
NjdjYzc4OTMxOWY5ZWRmNjNhYzhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L25vZGUtZGlzdHJpYnV0aW9uLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMv
Y3JlYXRlLWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBmb3IgU2hhZG93Um9vdCBK
UyBBUElzLiBDYW4gb25seSBydW4gd2l0aGluIERSVCIpOworCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgd2luZG93LmludGVybmFscy5zZXRNdWx0aXBsZVNo
YWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKKwordmFyIHNoYWRvd0hvc3QgPSBjcmVhdGVEb20o
J2RpdicsIHsnY2xhc3MnOiAnc2hhZG93SG9zdCd9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRG9tKCdkaXYnLCB7J2NsYXNzJzogJ2xpZ2h0Q2hpbGQxJ30pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdkaXYnLCB7J2NsYXNzJzogJ2xpZ2h0Q2hpbGQy
J30pKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2hhZG93SG9zdCk7CisKK3ZhciBzaGFk
b3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHNoYWRvd0hvc3QpOworc2hhZG93Um9vdDEu
YXBwZW5kQ2hpbGQoCisgICAgY3JlYXRlRG9tKCdkaXYnLCB7J2NsYXNzJzogJ2NsYXNzMSd9LAor
ICAgICAgICAgICAgICBjcmVhdGVEb20oJ2RpdicsIHsnY2xhc3MnOiAnY2xhc3MyJ30pLAorICAg
ICAgICAgICAgICBjcmVhdGVEb20oJ2NvbnRlbnQnLCB7J2NsYXNzJzogJ2NvbnRlbnQnfSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydjbGFzcyc6ICdjbGFzczInfSkpKTsKKwor
dmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qoc2hhZG93SG9zdCk7CitzaGFk
b3dSb290Mi5hcHBlbmRDaGlsZCgKKyAgICBjcmVhdGVEb20oJ2RpdicsIHsnY2xhc3MnOiAnY2xh
c3MxJ30sCisgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydjbGFzcyc6ICdjbGFzczMn
fSksCisgICAgICAgICAgICAgIGNyZWF0ZURvbSgnc2hhZG93JywgeydjbGFzcyc6ICdzaGFkb3cn
fSksCisgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydjbGFzcyc6ICdjbGFzczMnfSkp
KTsKKworZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworCitpZiAod2luZG93LmludGVybmFscykg
eworICAgIGRlYnVnKHdpbmRvdy5pbnRlcm5hbHMuZHVtcFJlaWZpZWRET01UcmVlRm9yKHNoYWRv
d0hvc3QpKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129007</attachid>
            <date>2012-02-27 03:54:43 -0800</date>
            <delta_ts>2012-03-06 05:22:05 -0800</delta_ts>
            <desc>wip. add tests. make a separate class. needs more cleanup</desc>
            <filename>bug-79197-20120227205441.patch</filename>
            <type>text/plain</type>
            <size>39418</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjZDAxNjY1OGM4OGVi
M2YzOGMzMmQ4NTAwZjUxMTVkODNmMzNiOS4uMDkwNjNjYTg5NmM5N2QzYWE1ZTJiYjk4ZDY1MTlh
NTk5ZjQ5N2E3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEyLTAyLTI3ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIEFQSXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUC4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9z
aGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6fkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWRkU2hhZG93Um9vdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290TGlzdCk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9S
ZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZE9mTGlnaHRDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VNZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6c2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dU
cmVlT2ZQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Om5l
eHRTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxpbmdJbkN1cnJlbnRUcmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpuZXh0QmFja1RvWW91bmdlclNoYWRvd1Jv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Om5leHRFc2NhcGlu
Z0ZhbGxiYWNrQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVU
cmF2ZXJzYWw6OnBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2
ZXJzYWw6OnBhcmVudE5vZGVNYXliZUJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRv
d1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5v
ZGVJbkN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
Ojp0cmF2ZXJzZU1lRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzKToKKyAgICAgICAgKiBkb20vUmVp
ZmllZFRyZWVUcmF2ZXJzYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTFNoYWRvd0VsZW1lbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVp
ZmllZFRyZWVUcmF2ZXJzYWwpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmZpcnN0U2hhZG93RWxlbWVudCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hhZG93
Um9vdCk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93VHJlZTo6cHVzaFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJl
ZTo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OmRldGFjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dUcmVlOjpzZWxlY3Rpb25Gb3IpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1RyZWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
U2hhZG93VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKEhUTUxDb250ZW50
U2VsZWN0aW9uU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uU2V0
OjpmaW5kKToKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6dG9TaGFkb3dFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQXR0cmlidXRlRGVzYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpkdW1wTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpkdW1wUmVpZmll
ZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpkdW1wUmVpZmllZFRyZWVGb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZW1vdmVTaGFkb3dSb290KToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDItMjYgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDBmYTU4ODVmNWViMmU0MDgzNzJlMmVhZDI3NDU4OGJhZDJjNzU3OTMuLjU1ZjZhY2NlN2Y2OGQ2
N2VlZjhkZTc0NTBiMzVjOGNjMzE0N2EwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUxMzMsNiAr
NTEzMyw4IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlRXhjZXB0aW9uLmgnLAogICAgICAgICAg
ICAgJ2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1JlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmNwcCcsCisgICAgICAgICAgICAnZG9tL1JlaWZpZWRUcmVlVHJh
dmVyc2FsLmNwcCcsCisgICAgICAgICAgICAnZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmgnLAog
ICAgICAgICAgICAgJ2RvbS9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oJywKICAgICAg
ICAgICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TY29w
ZWRFdmVudFF1ZXVlLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGIzZDJhMGEyZGY0ZDAz
NGU0ZTZiMzNmMGQ2YTc3MDU2MDVhYThlYjguLmRlZmUzZmUxMzI1MjZlZTI0NTgzYjBkY2I0Mjhh
ODgzNjhiZGViYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDEwIEBACiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisj
aW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyMiw3ICsxMjYsNyBA
QCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7Ci0gICAg
cmVtb3ZlU2hhZG93Um9vdCgpOworICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiAgICAgaWYg
KG1fYXR0cmlidXRlTWFwKQogICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+ZGV0YWNoRnJvbUVsZW1l
bnQoKTsKIH0KQEAgLTExNzMsNyArMTE3Nyw3IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlU2hhZG93
Um9vdChEb2N1bWVudCogZG9jdW1lbnQsIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEV4Y2VwCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVm
UHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBFbGVt
ZW50OjphZGRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZVNoYWRvd1Jvb3QoZG9jdW1lbnQo
KSwgc2hhZG93Um9vdC5nZXQoKSwgZWMpKQogICAgICAgICByZXR1cm47CkBAIC0xMTgxLDggKzEx
ODUsMTIgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9v
dD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkp
CiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCk7CiAKLSAgICByZW1vdmVTaGFkb3dSb290KCk7Ci0K
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
Om11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKCkpCisgICAgICAgIHJlbW92ZVNoYWRvd1Jv
b3RMaXN0KCk7CisjZWxzZSAgICAKKyAgICByZW1vdmVTaGFkb3dSb290TGlzdCgpOworI2VuZGlm
CiAgICAgc2hhZG93Um9vdC0+c2V0U2hhZG93SG9zdCh0aGlzKTsKICAgICBzaGFkb3dUcmVlKCkt
PnB1c2hTaGFkb3dSb290KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCkBAIC0xMjAzLDcgKzEyMTEsNyBA
QCBTaGFkb3dSb290KiBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KCkKICAgICByZXR1cm4gU2hh
ZG93Um9vdDo6Y3JlYXRlKHRoaXMsIFNoYWRvd1Jvb3Q6OkNyZWF0aW5nVXNlckFnZW50U2hhZG93
Um9vdCkuZ2V0KCk7CiB9CiAKLXZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCit2b2lk
IEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3RMaXN0KCkKIHsKICAgICBpZiAoIWhhc1NoYWRvd1Jv
b3QoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIxNSwxNiArMTIyMywxOSBAQCB2b2lkIEVsZW1l
bnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQogICAgICAgICAgICAgb2xkUm9vdC0+ZGV0YWNoKCk7CiAK
ICAgICAgICAgb2xkUm9vdC0+c2V0U2hhZG93SG9zdCgwKTsKKyAgICAgICAgb2xkUm9vdC0+c2V0
UHJldigwKTsKKyAgICAgICAgb2xkUm9vdC0+c2V0TmV4dCgwKTsKKyAgICAgICAgCiAgICAgICAg
IGRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQob2xkUm9vdC5nZXQoKSk7CiAgICAgICAgIGlmIChv
bGRSb290LT5pbkRvY3VtZW50KCkpCiAgICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbURv
Y3VtZW50KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9sZFJvb3QtPnJlbW92ZWRGcm9t
VHJlZSh0cnVlKTsKLSAgICAgICAgaWYgKGF0dGFjaGVkKCkpIHsKLSAgICAgICAgICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC0+YXR0YWNoZWQoKSkKLSAgICAg
ICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRhY2goKTsKLSAgICAgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKGF0dGFjaGVkKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
ICAgIGlmICghY2hpbGQtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlB
dHRhY2goKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDRhOWYx
NWIyZWVkYjRmNjc0NTYyOGVkOWNhMTA3MGFmM2MwMzRiYWUuLjVjYTI5MTBiMWQ4M2MwMjM2M2Vh
ZGI2OWUxNDUxZjIwZTdmYmIyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjU4LDkgKzI1OCw5
IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBBUEkgd2lsbCBiZSBtb3ZlZCB0byBT
aGFkb3dUcmVlLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODMxMwotICAgIHZvaWQgc2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+LCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZGRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93
Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTaGFkb3dSb290KiBlbnN1cmVTaGFkb3dSb290
KCk7Ci0gICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CisgICAgdm9pZCByZW1vdmVTaGFkb3dS
b290TGlzdCgpOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaGFkb3dQc2V1ZG9JZChjb25zdCBBdG9taWNTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJT04pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFhMDc2MWZiNGVh
Y2EyMzhjNGE2NTFlY2E2N2VlODgwNDUxYzdlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAKQEAgLTAsMCArMSwxOTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKKwor
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1l
bnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUu
aCIKKworLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgdG8gZ3VhcmQgYnkgU0hBRE9XX0RPTT8KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RD
aGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCghbm9kZS0+aXNDb250ZW50RWxl
bWVudCgpKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93RWxlbWVudCgpKTsKKyAgICBBU1NF
UlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyAgICBBU1NFUlQobm9kZS0+aXNFbGVtZW50Tm9k
ZSgpKTsKKyAgICBjb25zdCBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOworICAg
IFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBlbGVtZW50LT5zaGFkb3dUcmVlKCk7CisgICAgaWYg
KHNoYWRvd1RyZWUgJiYgc2hhZG93VHJlZS0+aGFzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1
cm4gZmlyc3RDaGlsZE9mTGlnaHRDaGlsZHJlbihzaGFkb3dUcmVlLT55b3VuZ2VzdFNoYWRvd1Jv
b3QoKSk7CisgICAgcmV0dXJuIGZpcnN0Q2hpbGRPZkxpZ2h0Q2hpbGRyZW4obm9kZSk7Cit9CisK
K05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpmaXJzdENoaWxkT2ZMaWdodENoaWxkcmVuKGNv
bnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGls
ZCgpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VNZShjaGlsZCk7CisgICAgcmV0dXJuIDA7Cit9
CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1lKGNvbnN0IE5vZGUqIG5v
ZGUpCit7CisgICAgaWYgKG5vZGUtPmlzQ29udGVudEVsZW1lbnQoKSkgeworICAgICAgICBjb25z
dCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqIHNlbGVjdGlvbkxpc3QgPSB0b0hUTUxDb250ZW50
RWxlbWVudChub2RlKS0+c2VsZWN0aW9ucygpOworICAgICAgICBpZiAoc2VsZWN0aW9uTGlzdC0+
Zmlyc3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZU1lKHNlbGVjdGlvbkxpc3QtPmZp
cnN0KCktPm5vZGUoKSk7CisgICAgICAgIHJldHVybiBmaXJzdENoaWxkT2ZMaWdodENoaWxkcmVu
KG5vZGUpOworICAgIH0KKyAgICBpZiAobm9kZS0+aXNTaGFkb3dFbGVtZW50KCkpIHsKKyAgICAg
ICAgLy8gRklYTUU6IEZpeCA8c2hhZG93PiBpbiBvbGRlc3RTaGFkb3dSb290LgorICAgICAgICBp
ZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChub2RlLT5zaGFkb3dUcmVl
Um9vdE5vZGUoKSkpIHsKKyAgICAgICAgICAgIGlmIChTaGFkb3dSb290KiBvbGRlclNoYWRvd1Jv
b3QgPSBzaGFkb3dSb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmlyc3RDaGlsZE9mTGlnaHRDaGlsZHJlbihvbGRlclNoYWRvd1Jvb3QpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4o
bm9kZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyhjb25z
dCBOb2RlKiBub2RlKQoreworICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVkIHRvIHNvZnRlbiB0
aGVzZSByZXN0cmljdGlvbnMuCisgICAgQVNTRVJUKCFub2RlLT5pc0NvbnRlbnRFbGVtZW50KCkp
OworICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dFbGVtZW50KCkpOworICAgIEFTU0VSVCghbm9k
ZS0+aXNTaGFkb3dSb290KCkpOworICAgIHJldHVybiBuZXh0U2libGluZ01heWJlQmFja1RvSW5z
ZXJ0aW9uUG9pbnQobm9kZSk7Cit9CisKK3N0YXRpYyBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlKE5v
ZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAg
ICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dUcmVlKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK3N0YXRpYyBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlT2ZQYXJlbnQoY29uc3QgTm9kZSog
bm9kZSkKK3sKKyAgICBpZiAobm9kZSkKKyAgICAgICAgcmV0dXJuIHNoYWRvd1RyZWUobm9kZS0+
cGFyZW50Tm9kZSgpKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2
ZXJzYWw6Om5leHRTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBu
b2RlKQoreworICAgIEFTU0VSVChub2RlLT5pc0VsZW1lbnROb2RlKCkpOworICAgIFNoYWRvd1Ry
ZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQobm9kZSk7CisgICAgaWYgKCFzaGFk
b3dUcmVlKQorICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUpOwor
ICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rp
b25Gb3Iobm9kZSk7CisgICAgaWYgKCFzZWxlY3Rpb24pCisgICAgICAgIHJldHVybiBuZXh0U2li
bGluZ0luQ3VycmVudFRyZWUobm9kZSk7CisgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBu
ZXh0U2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpCisgICAgICAgIHJldHVybiB0cmF2ZXJz
ZU1lKG5leHRTZWxlY3Rpb24tPm5vZGUoKSk7CisgICAgcmV0dXJuIG5leHRTaWJsaW5nTWF5YmVC
YWNrVG9JbnNlcnRpb25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCkpOworfQorCitO
b2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKE5vZGUqIG5leHQgPSBub2RlLT5uZXh0U2libGluZygp
KQorICAgICAgICByZXR1cm4gdHJhdmVyc2VNZShuZXh0KTsKKyAgICBpZiAoTm9kZSogbmV4dCA9
IG5leHRCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdChub2RlKSkKKyAgICAgICAgcmV0dXJuIG5leHQ7
CisgICAgcmV0dXJuIG5leHRFc2NhcGluZ0ZhbGxiYWNrQ29udGVudEVsZW1lbnQobm9kZSk7Cit9
CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpuZXh0QmFja1RvWW91bmdlclNoYWRvd1Jv
b3QoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICAvLyBGSVhNRTogQXNzaWduIG5vZGUtPnBhcmVu
dE5vZGUoKQorICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkgJiYgbm9kZS0+cGFyZW50Tm9kZSgp
LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBTaGFkb3dSb290KiBwYXJlbnRTaGFkb3dSb290
ID0gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgICAgIGlmIChTaGFkb3dS
b290KiB5b3VuZ2VyU2hhZG93Um9vdCA9IHBhcmVudFNoYWRvd1Jvb3QtPnlvdW5nZXJTaGFkb3dS
b290KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCh5b3VuZ2VyU2hhZG93Um9vdC0+Zmlyc3RTaGFk
b3dFbGVtZW50KCkpOworICAgICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nSW5DdXJyZW50VHJl
ZSh5b3VuZ2VyU2hhZG93Um9vdC0+Zmlyc3RTaGFkb3dFbGVtZW50KCkpOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4
dEVzY2FwaW5nRmFsbGJhY2tDb250ZW50RWxlbWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAg
IC8vIEZJWE1FOiBBc3NpZ24gbm9kZS0+cGFyZW50Tm9kZSgpCisgICAgaWYgKG5vZGUtPnBhcmVu
dE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlzQ29udGVudEVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIG5leHRTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLT5wYXJl
bnROb2RlKCkpOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6cGFyZW50Tm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCghbm9kZS0+aXND
b250ZW50RWxlbWVudCgpKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93RWxlbWVudCgpKTsK
KyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gcGFyZW50Tm9k
ZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVl
VHJhdmVyc2FsOjpwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2Rl
KiBub2RlKQoreworICAgIFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJl
bnQobm9kZSk7CisgICAgaWYgKCFzaGFkb3dUcmVlKQorICAgICAgICByZXR1cm4gcGFyZW50Tm9k
ZUluQ3VycmVudFRyZWUobm9kZSk7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlv
biA9IHNoYWRvd1RyZWUtPnNlbGVjdGlvbkZvcihub2RlKTsKKyAgICBpZiAoIXNlbGVjdGlvbikK
KyAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVJbkN1cnJlbnRUcmVlKG5vZGUpOworICAgIHJldHVy
biBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlv
blBvaW50KCkpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUJh
Y2tUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCit7Cisg
ICAgQVNTRVJUKHNoYWRvd1Jvb3QpOworICAgIGlmIChTaGFkb3dSb290KiB5b3VuZ2VyU2hhZG93
Um9vdCA9IHNoYWRvd1Jvb3QtPnlvdW5nZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAgSFRNTFNo
YWRvd0VsZW1lbnQqIHNoYWRvd0VsZW1lbnQgPSB5b3VuZ2VyU2hhZG93Um9vdC0+Zmlyc3RTaGFk
b3dFbGVtZW50KCk7CisgICAgICAgIEFTU0VSVChzaGFkb3dFbGVtZW50KTsKKyAgICAgICAgcmV0
dXJuIHBhcmVudE5vZGVNYXliZUJhY2tUb0luc2VydGlvblBvaW50KHNoYWRvd0VsZW1lbnQpOwor
ICAgIH0KKyAgICByZXR1cm4gc2hhZG93Um9vdC0+aG9zdCgpOworfQorCitOb2RlKiBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUluQ3VycmVudFRyZWUoY29uc3QgTm9kZSogbm9kZSkK
K3sKKyAgICBpZiAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAg
IGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5v
ZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdCh0b1NoYWRvd1Jvb3QocGFyZW50KSk7CisgICAgICAg
IHJldHVybiB0cmF2ZXJzZU1lRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzKHBhcmVudCk7CisgICAg
fQorICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVy
c2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlm
IChub2RlLT5pc0NvbnRlbnRFbGVtZW50KCkgfHwgbm9kZS0+aXNTaGFkb3dFbGVtZW50KCkpCisg
ICAgICAgIHJldHVybiBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlKTsK
KyAgICByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obm9kZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJi
NGYwMDRiMWFlMmY3Y2YxMTEzZTRiYjg3Njc1ZWNmODRkNDE4NWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaApAQCAtMCwwICsxLDYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBSZWlmaWVkVHJlZVRyYXZlcnNhbF9oCisjZGVmaW5lIFJlaWZpZWRUcmVl
VHJhdmVyc2FsX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb2RlOworY2xhc3Mg
U2hhZG93Um9vdDsKKworY2xhc3MgUmVpZmllZFRyZWVUcmF2ZXJzYWwgeworcHVibGljOgorICAg
IHN0YXRpYyBOb2RlKiBmaXJzdENoaWxkKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSog
bmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlKGNv
bnN0IE5vZGUqKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VNZShjb25z
dCBOb2RlKik7CisKKyAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZE9mTGlnaHRDaGlsZHJlbihj
b25zdCBOb2RlKik7CisKKyAgICBzdGF0aWMgTm9kZSogbmV4dFNpYmxpbmdNYXliZUJhY2tUb0lu
c2VydGlvblBvaW50KGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogbmV4dFNpYmxpbmdJ
bkN1cnJlbnRUcmVlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogbmV4dEJhY2tUb1lv
dW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogbmV4dEVzY2Fw
aW5nRmFsbGJhY2tDb250ZW50RWxlbWVudChjb25zdCBOb2RlKik7CisKKyAgICBzdGF0aWMgTm9k
ZSogcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSopOworICAg
IHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlSW5DdXJyZW50VHJlZShjb25zdCBOb2RlKik7CisgICAg
c3RhdGljIE5vZGUqIHRyYXZlcnNlTWVFc2NhcGluZ0ZhbGxiYWNrQ29udGVudHMoY29uc3QgTm9k
ZSopOworCisgICAgc3RhdGljIE5vZGUqIHBhcmVudE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9v
dChjb25zdCBTaGFkb3dSb290Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBjMTZjODU5ZjVhZWJiOTBlZDA3NTRiNWI2ZmI3
ZjBlNzZmNDY1NmNiLi40NTA3YjFmN2Y0MjU1ODFkYmIwNTg3MGJhMzA2MDU3YThkMDljYzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVk
ZSAiTm9kZVJhcmVEYXRhLmgiCkBAIC0xMjMsNyArMTI0LDcgQEAgUGFzc1JlZlB0cjxTaGFkb3dS
b290PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgU2hhZG93Um9vdENyZWF0
aW9uUHUKICAgICBSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCA9IGFkb3B0UmVmKG5ldyBT
aGFkb3dSb290KGVsZW1lbnQtPmRvY3VtZW50KCkpKTsKIAogICAgIGVjID0gMDsKLSAgICBlbGVt
ZW50LT5zZXRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKKyAgICBlbGVtZW50LT5hZGRTaGFk
b3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIEFTU0VSVChlbGVtZW50ID09IHNoYWRvd1Jvb3QtPmhvc3QoKSk7CkBAIC0xNzQsNiArMTc1
LDE2IEBAIGJvb2wgU2hhZG93Um9vdDo6aGFzQ29udGVudEVsZW1lbnQoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorLy8gRklYTUU6IFRoaXMgaXMgYSBzdHViIGltcGxlbWVudGF0aW9u
LgorSFRNTFNoYWRvd0VsZW1lbnQqIFNoYWRvd1Jvb3Q6OmZpcnN0U2hhZG93RWxlbWVudCgpIGNv
bnN0Cit7CisgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVy
c2VOZXh0Tm9kZSh0aGlzKSkgeworICAgICAgICBpZiAobi0+aXNTaGFkb3dFbGVtZW50KCkpCisg
ICAgICAgICAgICByZXR1cm4gdG9TaGFkb3dFbGVtZW50KG4pOworICAgIH0KKyAgICByZXR1cm4g
MDsKK30KKwogYm9vbCBTaGFkb3dSb290OjphcHBseUF1dGhvclNoZWV0cygpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fYXBwbHlBdXRob3JTaGVldHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRl
eCBjNjZlMTBmZGUwNmM4ZmZmOGU3YmU2NzY5OWRlNTdiMTdmYTZlNGZlLi5kYmI3Y2JhMjY0N2Q5
YjhmMzVlYWNiZjhkMDY1ZjE2OGU1ZTVhNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgU2hhZG93Um9vdF9oCiAKICNpbmNsdWRlICJEb2N1bWVu
dEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2Vk
TGlzdC5oPgpAQCAtMzcsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKIGNsYXNzIEhUTUxDb250ZW50U2VsZWN0
b3I7CitjbGFzcyBIVE1MU2hhZG93RWxlbWVudDsKIGNsYXNzIEluc2VydGlvblBvaW50OwogY2xh
c3MgU2hhZG93VHJlZTsKIApAQCAtNjEsNyArNjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
ck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICBib29sIG5lZWRzUmVh
dHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKIAotICAgIEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludEZvcihOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2Vk
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CkBAIC03Niw2ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICBTaGFkb3dSb290KiBvbGRlclNoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBuZXh0
KCk7IH0KIAogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBjb25zdDsKKyAgICBIVE1MU2hh
ZG93RWxlbWVudCogZmlyc3RTaGFkb3dFbGVtZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
U2hhZG93Um9vdChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCmluZGV4IGYx
YzY4MjY1YTZmYjRhMDFjM2E4MGM2ZmZmZTY3NThjMjE2YjliNzMuLjViMjIxNzJiNzBhNjA0OGI2
NjQwMWFkMDAwYmY4NzFiMDk1ZGZhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9u
UG9pbnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTQ4LDEzICs0OSwxMiBAQCBTaGFk
b3dUcmVlOjp+U2hhZG93VHJlZSgpCiAKIHZvaWQgU2hhZG93VHJlZTo6cHVzaFNoYWRvd1Jvb3Qo
U2hhZG93Um9vdCogc2hhZG93Um9vdCkKIHsKLSNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVk
KCkpCi0gICAgICAgIEFTU0VSVCghaGFzU2hhZG93Um9vdCgpKTsKLSNlbHNlCi0gICAgQVNTRVJU
KCFoYXNTaGFkb3dSb290KCkpOwotI2VuZGlmCi0KKy8vICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
Ky8vICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93U3VidHJl
ZXNFbmFibGVkKCkpCisvLyAgICAgICAgIEFTU0VSVCghaGFzU2hhZG93Um9vdCgpKTsKKy8vICNl
bHNlCisvLyAgICAgQVNTRVJUKCFoYXNTaGFkb3dSb290KCkpOworLy8gI2VuZGlmCiAgICAgbV9z
aGFkb3dSb290cy5wdXNoKHNoYWRvd1Jvb3QpOwogfQogCkBAIC05OSw4ICs5OSwxNSBAQCB2b2lk
IFNoYWRvd1RyZWU6OndpbGxSZW1vdmUoKQogdm9pZCBTaGFkb3dUcmVlOjphdHRhY2goKQogewog
ICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IHRoZSBjYXNlIHRoYXQgdGhl
IHNoYWRvdyByb290IGxpc3QgaGFzIGF0IG1vc3Qgb25lIHNoYWRvdyByb290LgotICAgIC8vIFNl
ZSBhbHNvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUwMyBhbmQg
aXRzIGRlcGVuZGVudCBidWdzLgorICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzUwMyBhbmQgaXRzIGRlcGVuZGVudAorICAgIC8vIGJ1Z3Mu
CisgICAgLy8KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Om11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKCkpCisgICAgICAgIEFTU0VS
VChtX3NoYWRvd1Jvb3RzLnNpemUoKSA8PSAxKTsKKyNlbHNlCiAgICAgQVNTRVJUKG1fc2hhZG93
Um9vdHMuc2l6ZSgpIDw9IDEpOworI2VuZGlmCiAKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3Qg
PSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9v
dCgpKSB7CiAgICAgICAgIGlmICghcm9vdC0+YXR0YWNoZWQoKSkKQEAgLTExMSwyNSArMTE4LDI5
IEBAIHZvaWQgU2hhZG93VHJlZTo6YXR0YWNoKCkKIHZvaWQgU2hhZG93VHJlZTo6ZGV0YWNoKCkK
IHsKICAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUgY2FzZSB0aGF0
IHRoZSBzaGFkb3cgcm9vdCBsaXN0IGhhcyBhdCBtb3N0IG9uZSBzaGFkb3cgcm9vdC4KLSAgICAv
LyBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MDMg
YW5kIGl0cyBkZXBlbmRlbnQgYnVncy4KLSAgICBBU1NFUlQobV9zaGFkb3dSb290cy5zaXplKCkg
PD0gMSk7Ci0KKyAgICAvLyBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzc1MDMgYW5kIGl0cyBkZXBlbmRlbnQKKyAgICAvLyBidWdzLgogICAgIGZvciAo
U2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9v
dC0+b2xkZXJTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKHJvb3QtPmF0dGFjaGVkKCkpCiAg
ICAgICAgICAgICByb290LT5kZXRhY2goKTsKICAgICB9CiB9CiAKLUluc2VydGlvblBvaW50KiBT
aGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAorSW5zZXJ0aW9u
UG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3NlbGVjdG9yKQotICAgICAgICByZXR1cm4gMDsKLSAgICBIVE1M
Q29udGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOworICAg
IEhUTUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IHNlbGVjdGlvbkZvcihub2RlKTsKICAgICBp
ZiAoIWZvdW5kKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZm91bmQtPmluc2VydGlv
blBvaW50KCk7CiB9CiAKK0hUTUxDb250ZW50U2VsZWN0aW9uKiBTaGFkb3dUcmVlOjpzZWxlY3Rp
b25Gb3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fc2VsZWN0b3IpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOwor
fQorCiBib29sIFNoYWRvd1RyZWU6OmlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3NlbGVjdG9yICYmIG1fc2VsZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93VHJlZS5oCmluZGV4IDZlMzdhN2VkNTFmZjE4M2EyNWE4OWVlMzZlOTg4OWUwMjFhZWRh
NzEuLjMwNjg1MzcxZjkyYzUzODUzODFlNTUxNWJjZDQzY2ZhMmRjYWQwMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1RyZWUuaApAQCAtMzcsOCArMzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBOb2RlOwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKIGNs
YXNzIEhUTUxDb250ZW50U2VsZWN0b3I7CiBjbGFzcyBJbnNlcnRpb25Qb2ludDsKK2NsYXNzIEhU
TUxDb250ZW50U2VsZWN0aW9uOwogCiBjbGFzcyBTaGFkb3dUcmVlIHsKIHB1YmxpYzoKQEAgLTcx
LDggKzczLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hh
ZG93KCk7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKLSAgICBJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNvbnN0OworICAgIEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKikgY29uc3Q7CiAKKyAgICBIVE1MQ29udGVu
dFNlbGVjdGlvbiogc2VsZWN0aW9uRm9yKGNvbnN0IE5vZGUqKSBjb25zdDsKKworICAgIC8vIERv
bid0IHBhc3Mgc2VsZWN0b3IgdG8gY2xpZW50cy4gU2hhZG93Um9vdExpc3Qgc2hvdWxkIGFjdCBm
YWNhZGUuCiAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKICAgICBI
VE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCmluZGV4IGMyYTFjMWUzNjliYThm
ZjE4YmIyM2JmNzg4N2EwYzc4NDk4OGJjZjcuLjI3MDE0YmFhYjc5OTFiMWZlZWVmMTk4MjBjY2Fm
NmViYjhmNGExN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxD
b250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50RWxlbWVudC5oCkBAIC02OSwxMCArNjksMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CiB9OwogCi1pbmxpbmUgSFRN
TENvbnRlbnRFbGVtZW50KiB0b0hUTUxDb250ZW50RWxlbWVudChOb2RlKiBub2RlKQoraW5saW5l
IGNvbnN0IEhUTUxDb250ZW50RWxlbWVudCogdG9IVE1MQ29udGVudEVsZW1lbnQoY29uc3QgTm9k
ZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNDb250ZW50RWxlbWVudCgp
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTENvbnRlbnRFbGVtZW50Kj4obm9kZSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDb250ZW50RWxlbWVudCo+KG5vZGUpOwor
fQorCitpbmxpbmUgSFRNTENvbnRlbnRFbGVtZW50KiB0b0hUTUxDb250ZW50RWxlbWVudChOb2Rl
KiBub2RlKQoreworICAgIHJldHVybiBjb25zdF9jYXN0PEhUTUxDb250ZW50RWxlbWVudCo+KHRv
SFRNTENvbnRlbnRFbGVtZW50KHN0YXRpY19jYXN0PGNvbnN0IE5vZGUqPihub2RlKSkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNl
bGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0
b3IuY3BwCmluZGV4IDVjMzBmZjZlMTQzNGUyYTkxNzFiNWIxOTMwNjc3YmZkZDY3Njk2N2EuLjg3
Y2FjZWI1Y2QxMzJjMjZhNDZiOTlkZWMwYTBhYzZiZTM3ZWRjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp1bnNlbGVjdChIVE1MQ29udGVudFNl
bGVjdGlvbkxpc3QqIGxpc3QpCiAgICAgbGlzdC0+Y2xlYXIoKTsKIH0KIAotSFRNTENvbnRlbnRT
ZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoTm9kZSoga2V5KSBjb25zdAor
SFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoY29uc3Qg
Tm9kZSoga2V5KSBjb25zdAogewogICAgIHJldHVybiBtX3NlbGVjdGlvblNldC5maW5kKGtleSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNl
bGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9y
LmgKaW5kZXggMjliZDYxNjNmNTEyYWI0M2RmYjU3Zjc2MTNjN2FhNzdkMjZkOGY1OC4uZjA1YzMz
NzgwMWM1NGYyZjRiMTFjYTM2ZjA1ODEyZGI3Y2YzNmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAtOTgsNyArOTgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGQoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0
LmFkZCh2YWx1ZSk7IH0KICAgICB2b2lkIHJlbW92ZShIVE1MQ29udGVudFNlbGVjdGlvbiogdmFs
dWUpIHsgbV9zZXQucmVtb3ZlKHZhbHVlKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2V0LmlzRW1wdHkoKTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5k
KE5vZGUqIGtleSkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoY29uc3Qg
Tm9kZSoga2V5KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgVHJhbnNsYXRvciB7CkBA
IC0xMTgsOSArMTE4LDkgQEAgcHJpdmF0ZToKICAgICBQb2ludGVyU2V0IG1fc2V0OwogfTsKIAot
aW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6Zmlu
ZChOb2RlKiBrZXkpIGNvbnN0CitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250
ZW50U2VsZWN0aW9uU2V0OjpmaW5kKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKIHsKLSAgICBQb2lu
dGVyU2V0OjppdGVyYXRvciBmb3VuZCA9IG1fc2V0LmZpbmQ8Tm9kZSosIEhUTUxDb250ZW50U2Vs
ZWN0aW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOworICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZv
dW5kID0gbV9zZXQuZmluZDxjb25zdCBOb2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OlRy
YW5zbGF0b3I+KGtleSk7CiAgICAgcmV0dXJuIGZvdW5kICE9IG1fc2V0LmVuZCgpID8gKmZvdW5k
IDogMDsKIH0KIApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VsZWN0
KEhUTUxDb250ZW50RWxlbWVudCosIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwogICAgIHZv
aWQgdW5zZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7Ci0gICAgSFRNTENvbnRlbnRT
ZWxlY3Rpb24qIGZpbmRGb3IoTm9kZSoga2V5KSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVj
dGlvbiogZmluZEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0OwogCiAgICAgdm9pZCB3aWxsU2Vs
ZWN0T3ZlcihFbGVtZW50KiBzaGFkb3dIb3N0KTsKICAgICB2b2lkIGRpZFNlbGVjdCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4
IGNiMDFjZDIxZmUwZTAwOWE1ZThlMDAzYWI5Yjg0YjY4ZmRkNDI5MzAuLmMyY2YwMzJmYWY1MGEy
NzJmZWMzMGY2ZGMyY2VhZmM0NzE2MzAyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKIAogI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCi0KICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVt
ZW50LmgKaW5kZXggMTUxYzdhMmFiYmQ2YzUwNTc4OTQzZmQ2ZGNjZmZmMDVjOWM5ZmZmNy4uMGFh
N2JkMWEzOGU5MmY1NDE4NmYwYzBmMjIzNWE2ZDNkZmFmZDFlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCkBAIC00OCw2ICs0OCwxMiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd0VsZW1lbnQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiB9OwogCitpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIHRvU2hhZG93RWxlbWVu
dChOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd0VsZW1l
bnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxTaGFkb3dFbGVtZW50Kj4obm9kZSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFET1df
RE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDRlMDI5MDMyMGUyOTU4
NDU0NWE3NmExMThkOTE2Y2MxNGRhYTM1NGUuLmQxZGIyOGMxMmFhNWZkMWU3YTc0YTUyNzIzOTQz
YTA1YWUxNjJjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlaWZpZWRUcmVlVHJhdmVyc2Fs
LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4
dC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xNjYsNiArMTY3LDU0IEBAIGJvb2wgSW50
ZXJuYWxzOjphdHRhY2hlZChOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1
cm4gbm9kZS0+YXR0YWNoZWQoKTsKIH0KIAorLy8gRklYTUU6IE1lcmdlIHRoaXMgdG8gTm9kZTo6
c2hvd05vZGUuCitzdGF0aWMgdm9pZCBhcHBlbmRBdHRyaWJ1dGVEZXNjKGNvbnN0IE5vZGUqIG5v
ZGUsIFN0cmluZyYgc3RyaW5nLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBjaGFy
KiBhdHRyRGVzYykKK3sKKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAg
IFN0cmluZyBhdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCo+KG5vZGUpLT5nZXRBdHRy
aWJ1dGUobmFtZSk7CisgICAgICAgIGlmICghYXR0ci5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IHN0cmluZyArPSBhdHRyRGVzYzsKKyAgICAgICAgICAgIHN0cmluZyArPSBhdHRyOworICAgICAg
ICB9CisgICAgfQorfQorCitzdGF0aWMgU3RyaW5nIGR1bXBOb2RlKGNvbnN0IE5vZGUqIG5vZGUp
IAoreworICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgU3RyaW5nIHZhbHVl
ID0gbm9kZS0+bm9kZVZhbHVlKCk7CisgICAgICAgIHZhbHVlLnJlcGxhY2UoJ1xcJywgIlxcXFwi
KTsKKyAgICAgICAgdmFsdWUucmVwbGFjZSgnXG4nLCAiXFxuIik7CisgICAgICAgIFRleHRTdHJl
YW0gdGV4dFN0cmVhbTsKKyAgICAgICAgdGV4dFN0cmVhbSA8PCBub2RlLT5ub2RlTmFtZSgpIDw8
ICJcdFwiIiA8PCB2YWx1ZSA8PCAiXCIiOworICAgICAgICByZXR1cm4gdGV4dFN0cmVhbS5yZWxl
YXNlKCk7CisgICAgfQorICAgIFN0cmluZyBhdHRycyA9ICIiOworICAgIGFwcGVuZEF0dHJpYnV0
ZURlc2Mobm9kZSwgYXR0cnMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiIENMQVNTPSIpOworICAg
IFRleHRTdHJlYW0gdGV4dFN0cmVhbTsKKyAgICB0ZXh0U3RyZWFtIDw8IG5vZGUtPm5vZGVOYW1l
KCkgPDwgIlx0IiA8PCBhdHRyczsKKyAgICByZXR1cm4gdGV4dFN0cmVhbS5yZWxlYXNlKCk7Cit9
CisKK3N0YXRpYyB2b2lkIGR1bXBSZWlmaWVkVHJlZShOb2RlKiBub2RlLCBTdHJpbmcmIG91dHB1
dCwgU3RyaW5nIGluZGVudCkKK3sKKyAgICBvdXRwdXQgKz0gaW5kZW50ICsgZHVtcE5vZGUobm9k
ZSkgKyAiXG4iOworICAgIGZvciAoTm9kZSogY2hpbGQgPSBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6
Zmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6Om5l
eHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgZHVtcFJlaWZpZWRUcmVlKGNoaWxkLCBvdXRwdXQs
IGluZGVudCArICJcdCIpOworfQorCitTdHJpbmcgSW50ZXJuYWxzOjpkdW1wUmVpZmllZFRyZWVG
b3IoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgfQorICAgIFN0cmluZyBvdXRwdXQ7CisgICAgU3RyaW5nIHN0YXJ0aW5nSW5kZW50Owor
ICAgIGR1bXBSZWlmaWVkVHJlZShub2RlLCBvdXRwdXQsIHN0YXJ0aW5nSW5kZW50KTsKKyAgICBy
ZXR1cm4gb3V0cHV0OworfQorCiBTdHJpbmcgSW50ZXJuYWxzOjplbGVtZW50UmVuZGVyVHJlZUFz
VGV4dChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWVs
ZW1lbnQpIHsKQEAgLTI0OCw3ICsyOTcsNyBAQCB2b2lkIEludGVybmFsczo6cmVtb3ZlU2hhZG93
Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGhvc3QtPnJlbW92ZVNoYWRvd1Jvb3QoKTsKKyAgICBob3N0LT5yZW1vdmVT
aGFkb3dSb290TGlzdCgpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0TXVsdGlwbGVTaGFkb3dT
dWJ0cmVlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
aW5kZXggYzViZTM4ZWFiYmUzZjNlMjBmYWQ3M2JkMzQ5ZjRiNzdlNzk4MDllMy4uYjBhODkxNGY3
MmFiN2NmYjQ3YzQzY2NhZDAxNzU2MDI3ZDE5N2FjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCkBAIC03NSw5ICs3NSw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+
IGNyZWF0ZUNvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIEVs
ZW1lbnQqIGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIGNvbnN0
IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGlzVmFsaWRDb250ZW50U2Vs
ZWN0KEVsZW1lbnQqIGNvbnRlbnRFbGVtZW50LCBFeGNlcHRpb25Db2RlJik7Ci0KICAgICBib29s
IGF0dGFjaGVkKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7Ci0KKyAgICBTdHJpbmcgZHVtcFJlaWZp
ZWRUcmVlRm9yKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CisgICAgCiAjaWYgRU5BQkxFKElOUFVU
X0NPTE9SKQogICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihFbGVtZW50KiwgY29u
c3QgU3RyaW5nJiBjb2xvclZhbHVlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCmluZGV4IDlkOGQ4YjIyZDY3ZDM0NmVlZmFhNTY4ZGMxOTAwZWEyYWZjNjA2ZDMuLjlk
NDljMmEyOGRlN2I5NTc0ZTNjMDRjMDE2ZmU2NDI5ZGY3ZGM5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKQEAgLTUwLDYgKzUwLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAg
ICAgIEVsZW1lbnQgY3JlYXRlQ29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJh
aXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlkSW5TaGFk
b3dSb290KGluIE5vZGUgc2hhZG93Um9vdCwgaW4gRE9NU3RyaW5nIGlkKSByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiBpc1ZhbGlkQ29udGVudFNlbGVjdChpbiBFbGVtZW50
IGNvbnRlbnRFbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgRE9NU3RyaW5n
IGR1bXBSZWlmaWVkVHJlZUZvcihpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwog
CiAgICAgICAgIGJvb2xlYW4gYXR0YWNoZWQoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDJiNjk0ZTI5MmFhY2JmNjdkNzQ3ZGI4MzFlOWI4MmFmOTQzZGQ1MDIu
LjAyZTAyMDZjNzdhY2U5ZTZkYjY2ZDRhY2Q4OGVlNzM0ZjBhZDg3ZDkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMi0wMi0yNyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW1NoYWRvdyBET01dIEFkZCBSZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBBUElz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJh
dmVyc2FsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMv
Y3JlYXRlLWRvbS5qczoKKwogMjAxMi0wMi0yNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcsIHNraXAgbmV3
IGZhaWxpbmcgYW5kIGNyYXNoaW5nIHRlc3RzIHRvIHBhaW50IHRoZSBib3RzIGdyZWVuLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJz
YWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJl
ZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MmE1M2VlZmY3ZGFiODQ5MWZh
M2YyZGU0YzVjNmUwNzY1OGQ3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw2MSBAQAorVGVzdHMgZm9yIFNoYWRvd1Jvb3QgSlMgQVBJcy4gQ2FuIG9ubHkgcnVuIHdpdGhp
biBEUlQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NoYWRvd1Jvb3Qgc2hvdWxk
IGJlIHVzZWQuCitESVYJIENMQVNTPWEKKwlESVYJIENMQVNTPWIKKworPGNvbnRlbnQ+IGVsZW1l
bnQgc2hvdWxkIHNlbGVjdCBsaWdodCBjaGlsZHJlbgorRElWCSBDTEFTUz1hCisJRElWCSBDTEFT
Uz1iCisJRElWCSBDTEFTUz1jCisJRElWCSBDTEFTUz1kCisKK3Rlc3QgZm9yIDxjb250ZW50PiBl
bGVtZW50IHNlbGVjdG9yLgorRElWCSBDTEFTUz1hCisJRElWCSBDTEFTUz1iCisJRElWCSBDTEFT
Uz1kCisKK0xpZ2h0IGNoaWxkcmVuIHNob3VsZCBiZSBzZWxlY3RlZCBvbmx5IGF0IG9uZS4KK0RJ
VgkgQ0xBU1M9YQorCURJVgkgQ0xBU1M9YgorCURJVgkgQ0xBU1M9ZAorCURJVgkgQ0xBU1M9Ywor
CURJVgkgQ0xBU1M9ZQorCis8Y29udGVudD4gZWxlbWVudCBjYW4gaGF2ZSBmYWxsYmFjayBlbGVt
ZW50cy4KK0RJVgkgQ0xBU1M9YQorCURJVgkgQ0xBU1M9YgorCURJVgkgQ0xBU1M9ZjEKKwlESVYJ
IENMQVNTPWYyCisKK0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZCBpZiA8Y29u
dGVudD4gZWxlbWVudCBzZWxlY3RzIGFueSBlbGVtZW50cy4KK0RJVgkgQ0xBU1M9YQorCURJVgkg
Q0xBU1M9YgorCURJVgkgQ0xBU1M9YworCitOZXN0ZWQgU2hhZG93Um9vdHMKK0RJVgkgQ0xBU1M9
YQorCURJVgkgQ0xBU1M9YgorCQlESVYJIENMQVNTPWMKKwkJRElWCSBDTEFTUz1lCisJCURJVgkg
Q0xBU1M9ZAorCURJVgkgQ0xBU1M9ZgorCURJVgkgQ0xBU1M9aAorCURJVgkgQ0xBU1M9aQorCURJ
VgkgQ0xBU1M9ZworCitNdWx0aXBsZSBTaGFkb3dSb290cworRElWCSBDTEFTUz1hCisJRElWCSBD
TEFTUz1kCisJRElWCSBDTEFTUz1iCisJRElWCSBDTEFTUz1mCisJRElWCSBDTEFTUz1jCisJRElW
CSBDTEFTUz1lCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10
cmVlLXRyYXZlcnNhbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQt
dHJlZS10cmF2ZXJzYWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2I5NzA3NGU5NmQ5MDRjYzFlODM0ZWFk
NTE2NjhiZjYxOWQ5YzM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApAQCAtMCwwICsxLDEzMCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBmb3IgU2hhZG93
Um9vdCBKUyBBUElzLiBDYW4gb25seSBydW4gd2l0aGluIERSVCIpOworCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgd2luZG93LmludGVybmFscy5zZXRNdWx0
aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKKworZnVuY3Rpb24gc2hhZG93Um9vdCgp
Cit7CisgICAgcmV0dXJuIHsnaXNTaGFkb3dSb290JzogdHJ1ZSwKKyAgICAgICAgICAgICdjaGls
ZHJlbic6IGFyZ3VtZW50c30KK30KKworLy8gVGhpcyBmdW5jdGlvbiBjYW4gdGFrZSBvcHRpb25h
bCBjaGlsZCBlbGVtZW50cywgd2hpY2ggbWlnaHQgYmUgYSBTaGFkb3dSb290LCBhcyBhcmd1bWVu
dHNbMjpdLgorLy8gRklYTUU6IFJlcGxhY2UgY3JlYXRlRG9tIGZ1bnRpb24gaW4gcmVzb3VyY2Vz
L2NyZWF0ZS1kb20uanMgd2l0aCB0aGlzLgorZnVuY3Rpb24gY3JlYXRlRE9NKHRhZ05hbWUsIGF0
dHJpYnV0ZXMpCit7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRh
Z05hbWUpOworICAgIGZvciAodmFyIG5hbWUgaW4gYXR0cmlidXRlcykKKyAgICAgICAgZWxlbWVu
dC5zZXRBdHRyaWJ1dGUobmFtZSwgYXR0cmlidXRlc1tuYW1lXSk7CisgICAgdmFyIGNoaWxkRWxl
bWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY2hpbGRFbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2
YXIgY2hpbGQgPSBjaGlsZEVsZW1lbnRzW2ldOworICAgICAgICBpZiAoY2hpbGQuaXNTaGFkb3dS
b290KSB7CisgICAgICAgICAgICB2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KGVsZW1lbnQpOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGlsZC5jaGlsZHJl
bi5sZW5ndGg7ICsraikKKyAgICAgICAgICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGNo
aWxkLmNoaWxkcmVuW2pdKQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVsZW1lbnQuYXBw
ZW5kQ2hpbGQoY2hpbGQpOworICAgIH0KKyAgICByZXR1cm4gZWxlbWVudDsKK30KKworZnVuY3Rp
b24gZHVtcFRyZWUoY29tbWVudCwgZWxlbWVudCkKK3sKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBpZiAo
d2luZG93LmludGVybmFscykgeworICAgICAgICBkZWJ1Zyhlc2NhcGVIVE1MKGNvbW1lbnQpKTsK
KyAgICAgICAgZGVidWcod2luZG93LmludGVybmFscy5kdW1wUmVpZmllZFRyZWVGb3IoZWxlbWVu
dCkpOworICAgIH0KK30KKworZHVtcFRyZWUoJ1NoYWRvd1Jvb3Qgc2hvdWxkIGJlIHVzZWQuJywK
KyAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdhJ30sCisgICAgICAgICAgICAg
ICAgICAgc2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYid9KSksCisgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2MnfSkpKTsKKworZHVt
cFRyZWUoJzxjb250ZW50PiBlbGVtZW50IHNob3VsZCBzZWxlY3QgbGlnaHQgY2hpbGRyZW4nLAor
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2EnfSwKKyAgICAgICAgICAgICAg
ICAgICBzaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdiJ30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdjJ30pLAorICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdkJ30pKSk7CisKK2R1bXBUcmVlKCd0
ZXN0IGZvciA8Y29udGVudD4gZWxlbWVudCBzZWxlY3Rvci4nLAorICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2NsYXNzJzogJ2EnfSwKKyAgICAgICAgICAgICAgICAgICBzaGFkb3dSb290KGNy
ZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmQnfSkpLAorICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdjJ30pLAorICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdkJ30pLAorICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdlJ30pKSk7CisKK2R1bXBUcmVlKCdMaWdo
dCBjaGlsZHJlbiBzaG91bGQgYmUgc2VsZWN0ZWQgb25seSBhdCBvbmUuJywKKyAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdhJ30sCisgICAgICAgICAgICAgICAgICAgc2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5kJ30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdjJ30pLAorICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdkJ30pLAorICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdlJ30pKSk7CisKK2R1bXBUcmVlKCc8
Y29udGVudD4gZWxlbWVudCBjYW4gaGF2ZSBmYWxsYmFjayBlbGVtZW50cy4nLAorICAgIGNyZWF0
ZURPTSgnZGl2JywgeydjbGFzcyc6ICdhJ30sCisgICAgICAgICAgICAgIHNoYWRvd1Jvb3QoY3Jl
YXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2InfSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLnonfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2YxJ30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3Mn
OiAnZjInfSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2Mn
fSkpKTsKKworZHVtcFRyZWUoJ0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZCBp
ZiA8Y29udGVudD4gZWxlbWVudCBzZWxlY3RzIGFueSBlbGVtZW50cy4nLAorICAgIGNyZWF0ZURP
TSgnZGl2JywgeydjbGFzcyc6ICdhJ30sCisgICAgICAgICAgICAgIHNoYWRvd1Jvb3QoY3JlYXRl
RE9NKCdkaXYnLCB7J2NsYXNzJzogJ2InfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmMnfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2YxJ30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAn
ZjInfSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2MnfSkp
KTsKKworZHVtcFRyZWUoJ05lc3RlZCBTaGFkb3dSb290cycsCisgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnY2xhc3MnOiAnYSd9LAorICAgICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3QoY3Jl
YXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2InfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdjJ30p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZCd9KSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNz
JzogJ2UnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2NsYXNzJzogJ2YnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2NvbnRlbnQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydjbGFzcyc6ICdnJ30pKSwKKyAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnY2xhc3MnOiAnaCd9KSwKKyAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnY2xhc3MnOiAnaSd9KSkpOworCitkdW1wVHJlZSgnTXVsdGlwbGUgU2hhZG93Um9vdHMnLAor
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2EnfSwKKyAgICAgICAgICAgICAg
ICAgICBzaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdiJ30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYyd9KSksCisg
ICAgICAgICAgICAgICAgICAgc2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAn
ZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93Jyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3Mn
OiAnZSd9KSksCisgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzog
J2YnfSkpKTsKKworLy8gRklYTUU6IEFkZCBtb3JlIHRlc3RzLgorCisvLyBGSVhNRTogTW9yZSBy
b2J1c3Qgd2F5IHRvIHJlc2V0IGZsYWcuCitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKGZhbHNlKTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130360</attachid>
            <date>2012-03-06 05:22:13 -0800</date>
            <delta_ts>2012-03-15 05:10:39 -0700</delta_ts>
            <desc>WIP. clean-up APIs by use case driven.</desc>
            <filename>bug-79197-20120306222210.patch</filename>
            <type>text/plain</type>
            <size>78511</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlMWE0NGUyODRmZDdl
NzQ3MDYyMTQ0ZmUxMDcxYWE5NmZlOTgwZi4uYjA5ZmU1YzA3NDAzMzQxOWUzNmRiZjgyZmY3NThj
OWZjZDdlYjE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAxMi0wMy0wNiAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEFk
ZCBSZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9t
L3NoYWRvdy9teS10ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9yZWlm
aWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctYm91bmRhcnktZXZlbnRzLXdpdGgtbm9kZS1kaXN0cmlidXRpb24uaHRtbAorCisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmFk
anVzdFRvU2hhZG93Qm91bmRhcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNo
ZXI6OmVuc3VyZUV2ZW50QW5jZXN0b3JzKToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVy
Lmg6CisgICAgICAgIChFdmVudFRhcmdldEFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50VGFyZ2V0QW5jZXN0b3I6OkV2ZW50VGFyZ2V0QW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRUYXJnZXRBbmNlc3Rvcjo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRh
cmdldEFuY2VzdG9yOjpoYXNTaGFkb3dCb3VuZGFyeUJlbGxvdyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEV2ZW50RGlzcGF0Y2hlcik6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzaG93Tm9kZSk6Cisg
ICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRvbS9SZWlm
aWVkVHJlZVRyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJz
ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJz
ZUxpZ2h0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6
OnRyYXZlcnNlTWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Om5l
eHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwcmV2
aW91c1NpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93VHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzaGFkb3dUcmVlT2ZQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGluZ0lu
Q3VycmVudFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRy
YXZlcnNlQmFja2luZ1RvWW91bmdlclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OmVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTWVFc2NhcGluZ0ZhbGxi
YWNrQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBh
cmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVu
dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
aWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUluQ3Vy
cmVudFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVu
dE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6YWRqdXN0ZWRQYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VQcmV2aW91c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJz
YWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6Cisg
ICAgICAgICogZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChSZWlmaWVkVHJlZVRyYXZlcnNhbCk6CisgICAgICAgICogZG9tL1No
YWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dSb290OjpmaXJzdFNoYWRvd0VsZW1lbnQpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRv
bS9TaGFkb3dUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omluc2VydGlv
blBvaW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnNlbGVjdGlvbkZvcik6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dUcmVlKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSFRNTENvbnRlbnRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKEhUTUxDb250
ZW50U2VsZWN0aW9uU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9u
U2V0OjpmaW5kKToKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9I
VE1MU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6dG9TaGFkb3dFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnByaW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Om93bmVyT2ZGb2N1c1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OnlvdW5n
ZXN0U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpmb2N1c1Njb3BlRm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzRm9jdXNTY29wZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3Vz
Q29udHJvbGxlcjo6dHJhbnNmZXJGb2N1c1RvRWxlbWVudEluU2hhZG93Um9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlRGVjZW5kaW5nRG93
bkludG9GcmFtZURvY3VtZW50T3JTaGFkb3dTdWJUcmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0luRG9jdW1lbnRPcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlQWNyb3NzRm9jdXNTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6cHJldmlvdXNOb2RlV2l0aEV4YWN0VGFiSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6bmV4dE5vZGVXaXRoR3JlYXRlclRhYkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnBy
ZXZpb3VzTm9kZVdpdGhMb3dlclRhYkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29u
dHJvbGxlcjo6bmV4dEZvY3VzYWJsZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250
cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJsZU5vZGUpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250
cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZvY3VzQ29udHJvbGxlcik6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjphcHBlbmRBdHRyaWJ1dGVEZXNjKToKKyAgICAgICAgKFdlYkNvcmU6
OmR1bXBOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmR1bXBSZWlmaWVkVHJlZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmR1bXBSZWlmaWVkVHJlZUZvcik6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTAzLTA1ICBSb2IgQnVpcyAgPHJidWlzQHJpbS5jb20+
CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVURiBjaGFycyBwcmludGVkIGJhY2sgZnJvbSBjb29r
aWUgdGhyb3VnaCBwaHAgc2hvd3MgYXMgPz8/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMGYwZTBmYjg4
YzEwOGJjMTE1YWMzY2VkNGNkY2YzNjJmZjRlYjg2Yi4uYjkyMzU2Mzk4NTUxODgxNzExNGY3OGIz
MGQ1NTllYjg0M2Y0YWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTE0MSw2ICs1MTQxLDggQEAK
ICAgICAgICAgICAgICdkb20vUmVnaW9uTm9kZUxpc3QuaCcsCiAgICAgICAgICAgICAnZG9tL1Jh
d0RhdGFEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3Bw
JywKKyAgICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCcsCiAgICAgICAgICAg
ICAnZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2Rv
bS9TY29wZWRFdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVl
dWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDQ5ZTc4MTMz
ZTVkZjcyNzYwOTYxM2IyMWMwN2NiNmJiNzhhMjRmNjcuLmY5MzMyYjY2MDY4MjE1OTZjYTNhOGJj
ZjZjZjgzNDE2ODM3NGMyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERp
c3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIK
KyNpbmNsdWRlICJSZWlmaWVkVHJlZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50
UXVldWUuaCIKICNpbmNsdWRlICJXaW5kb3dFdmVudENvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC0xMTUsOCArMTE2LDQxIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NoYWRv
d0hvc3QoTm9kZSogbm9kZSkKICAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRv
RWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpOwogfQogCisvKgorc3RhdGljIHZvaWQgcHJp
bnRFdmVudFRhcmdldEFuY2VzdG9ycyhjb25zdCBWZWN0b3I8RXZlbnRUYXJnZXRBbmNlc3Rvcj4m
IGV2ZW50VGFyZ2V0QW5jZXN0b3JzKQoreworICAgIHByaW50ZigiLS0tLS0tLS1cbiIpOworICAg
IHByaW50ZigiZXZlbnRUYXJnZXRBbmNlc3RvcnNcbiIpOworICAgIGZvciAoVmVjdG9yPEV2ZW50
VGFyZ2V0QW5jZXN0b3I+Ojpjb25zdF9pdGVyYXRvciBpID0gZXZlbnRUYXJnZXRBbmNlc3RvcnMu
ZW5kKCkgLSAxOyBpID49IGV2ZW50VGFyZ2V0QW5jZXN0b3JzLmJlZ2luKCk7IC0taSkgeworICAg
ICAgICBpLT5ub2RlKCktPnNob3dOb2RlKCk7CisgICAgICAgIGlmIChpLT5oYXNTaGFkb3dCb3Vu
ZGFyeUJlbGxvdygpKQorICAgICAgICAgICAgcHJpbnRmKCItLS0tXG4iKTsKKyAgICB9CisKK30K
Kworc3RhdGljIHZvaWQgcHJpbnRBbmNlc3RvcnMoY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4m
IGFuY2VzdG9ycykKK3sKKyAgICBwcmludGYoIi0tLS0tLS0tXG4iKTsKKyAgICBwcmludGYoImFu
Y2VzdG9yc1xuIik7CisgICAgZm9yIChWZWN0b3I8RXZlbnRDb250ZXh0Pjo6Y29uc3RfaXRlcmF0
b3IgaSA9IGFuY2VzdG9ycy5lbmQoKSAtIDE7IGkgPj0gYW5jZXN0b3JzLmJlZ2luKCk7IC0taSkK
KyAgICAgICAgaS0+bm9kZSgpLT5zaG93Tm9kZSgpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGRE
dW1wKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUo
KSAmJiB0b0VsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRpdGxlQXR0cikg
PT0gImR1bXAiOworfQorKi8KKwogUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gRXZlbnREaXNwYXRj
aGVyOjphZGp1c3RUb1NoYWRvd0JvdW5kYXJpZXMoUGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkVGFy
Z2V0LCBjb25zdCBWZWN0b3I8Tm9kZSo+IHJlbGF0ZWRUYXJnZXRBbmNlc3RvcnMpCiB7CisgICAg
Ly8gaWYgKHNob3VsZER1bXAobV9ub2RlLmdldCgpKSkgeworICAgIC8vICAgICBtX25vZGUtPnNo
b3dUcmVlRm9yVGhpcygpOworICAgIC8vICAgICBwcmludEFuY2VzdG9ycyhtX2FuY2VzdG9ycyk7
CisgICAgLy8gICAgIHByaW50RXZlbnRUYXJnZXRBbmNlc3RvcnMocmVsYXRlZFRhcmdldEFuY2Vz
dG9ycyk7CisgICAgLy8gfQorCiAgICAgVmVjdG9yPEV2ZW50Q29udGV4dD46OmNvbnN0X2l0ZXJh
dG9yIGxvd2VzdENvbW1vbkJvdW5kYXJ5ID0gbV9hbmNlc3RvcnMuZW5kKCk7CiAgICAgLy8gQXNz
dW1lIGRpdmVyZ2VudCBib3VuZGFyeSBpcyB0aGUgcmVsYXRlZFRhcmdldCBpdHNlbGYgKGluIG90
aGVyIHdvcmRzLCByZWxhdGVkIHRhcmdldCBhbmNlc3RvciBjaGFpbiBkb2VzIG5vdCBjcm9zcyBh
bnkgc2hhZG93IERPTSBib3VuZGFyaWVzKS4KICAgICBWZWN0b3I8Tm9kZSo+Ojpjb25zdF9pdGVy
YXRvciBmaXJzdERpdmVyZ2VudEJvdW5kYXJ5ID0gcmVsYXRlZFRhcmdldEFuY2VzdG9ycy5iZWdp
bigpOwpAQCAtMTQ3LDYgKzE4MSwxMyBAQCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBFdmVudERp
c3BhdGNoZXI6OmFkanVzdFRvU2hhZG93Qm91bmRhcmllcyhQYXNzUmVmUHRyPE5vZAogICAgICAg
ICAgICAgZGl2ZXJnZWQgPSB0cnVlOwogICAgIH0KIAorICAgIC8vIGlmIChzaG91bGREdW1wKG1f
bm9kZS5nZXQoKSkpIHsKKyAgICAvLyAgICAgcHJpbnRmKCItLSBmb3IgbG9vcCBlbmQgLS1cbiIp
OworICAgIC8vICAgICBwcmludGYoImxvd2VzdENvbW1vbkJvdW5kYXJ5OiBcbiIpOworICAgIC8v
ICAgICBsb3dlc3RDb21tb25Cb3VuZGFyeS0+bm9kZSgpLT5zaG93Tm9kZSgpOworICAgIC8vICAg
ICBwcmludGYoImRpdmVyZ2VkOiAlZFxuIiwgZGl2ZXJnZWQpOworICAgIC8vIH0KKwogICAgIGlm
ICghZGl2ZXJnZWQpIHsKICAgICAgICAgLy8gVGhlIHJlbGF0ZWRUYXJnZXQgaXMgYW4gYW5jZXN0
b3Igb3Igc2hhZG93SG9zdCBvZiB0aGUgdGFyZ2V0LgogICAgICAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoZSBmaXJzdCBjaGVjayBvbmNlIGNvbnZlcnNpb24gdG8gbmV3IHNoYWRvdyBET00gaXMgY29t
cGxldGUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg2OTg+CkBAIC0yNDAsMTEgKzI4MSwxMSBAQCB2
b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZW5zdXJlRXZlbnRBbmNlc3RvcnMoRXZlbnQqIGV2ZW50KQog
ICAgICAgICBpZiAoYW5jZXN0b3ItPmlzU2hhZG93Um9vdCgpKSB7CiAgICAgICAgICAgICBpZiAo
ZGV0ZXJtaW5lRGlzcGF0Y2hCZWhhdmlvcihldmVudCwgYW5jZXN0b3IpID09IFN0YXlJbnNpZGVT
aGFkb3dET00pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYW5jZXN0b3Ig
PSBhbmNlc3Rvci0+c2hhZG93SG9zdCgpOworICAgICAgICAgICAgYW5jZXN0b3IgPSBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6YWRqdXN0ZWRQYXJlbnROb2RlKGFuY2VzdG9yKTsKICAgICAgICAgICAg
IGlmICghbV9ub2RlLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgICAgICB0YXJnZXQgPSBh
bmNlc3RvcjsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhbmNlc3RvciA9IGFuY2VzdG9y
LT5wYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCk7CisgICAgICAgICAgICBhbmNlc3RvciA9
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjphZGp1c3RlZFBhcmVudE5vZGUoYW5jZXN0b3IpOwogCiAg
ICAgICAgIGlmICghYW5jZXN0b3IpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnREaXNwYXRjaGVyLmgKaW5kZXggODVhZWZjNDkzMDQzZDUxN2VjOTc3MzRlNjIxOGFhZDgx
ZDE3OTA2Ny4uMmQ5NGY1YmU5YzBlZTI2MWQyYmQ1ZGM0MzFhNjMxOWU5MGZlOWNjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaApAQCAtNDYsNiArNDYsMjEgQEAgZW51bSBFdmVu
dERpc3BhdGNoQmVoYXZpb3IgewogICAgIFN0YXlJbnNpZGVTaGFkb3dET00KIH07CiAKK2NsYXNz
IEV2ZW50VGFyZ2V0QW5jZXN0b3IgeworcHVibGljOgorICAgIEV2ZW50VGFyZ2V0QW5jZXN0b3Io
Tm9kZSogbm9kZSwgYm9vbCBoYXNTaGFkb3dCb3VuZGFyeUJlbGxvdykKKyAgICAgICAgOiBtX25v
ZGUobm9kZSkKKyAgICAgICAgLCBtX2hhc1NoYWRvd0JvdW5kYXJ5QmVsbG93KGhhc1NoYWRvd0Jv
dW5kYXJ5QmVsbG93KQorICAgIHsKKyAgICB9CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZTsgfQorICAgIGJvb2wgaGFzU2hhZG93Qm91bmRhcnlCZWxsb3coKSBjb25zdCB7
IHJldHVybiBtX2hhc1NoYWRvd0JvdW5kYXJ5QmVsbG93OyB9CisKK3ByaXZhdGU6CisgICAgTm9k
ZSogbV9ub2RlOworICAgIGJvb2wgbV9oYXNTaGFkb3dCb3VuZGFyeUJlbGxvdzsKK307CisKIGNs
YXNzIEV2ZW50RGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZGlzcGF0Y2hF
dmVudChOb2RlKiwgUGFzc1JlZlB0cjxFdmVudERpc3BhdGNoTWVkaWF0b3I+KTsKQEAgLTYwLDYg
Kzc1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFdmVudERpc3BhdGNoZXIoTm9kZSopOwog
CisgICAgLy8gUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gYWRqdXN0VG9TaGFkb3dCb3VuZGFyaWVz
KFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCwgY29uc3QgVmVjdG9yPEV2ZW50VGFyZ2V0
QW5jZXN0b3I+IHJlbGF0ZWRUYXJnZXRBbmNlc3RvcnMpOwogICAgIFBhc3NSZWZQdHI8RXZlbnRU
YXJnZXQ+IGFkanVzdFRvU2hhZG93Qm91bmRhcmllcyhQYXNzUmVmUHRyPE5vZGU+IHJlbGF0ZWRU
YXJnZXQsIGNvbnN0IFZlY3RvcjxOb2RlKj4gcmVsYXRlZFRhcmdldEFuY2VzdG9ycyk7CiAgICAg
RXZlbnREaXNwYXRjaEJlaGF2aW9yIGRldGVybWluZURpc3BhdGNoQmVoYXZpb3IoRXZlbnQqLCBO
b2RlKiBzaGFkb3dSb290KTsKICAgICB2b2lkIGVuc3VyZUV2ZW50QW5jZXN0b3JzKEV2ZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggYjU2Y2YxNjBkNDdmNzJhZGM0MTI2NjdmNzQxODUzZGY0OWQw
MzE0Zi4uYTY5NzNhMGYxMTI3OWNlY2FmZGY1Y2JjMDkyMGNlNmVkYmIwZGQwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtMjIyNyw4ICsyMjI3LDYgQEAgdm9pZCBOb2RlOjppdGVtVHlwZUF0dHJpYnV0
ZUNoYW5nZWQoKQogfQogI2VuZGlmCiAKLSNpZm5kZWYgTkRFQlVHCi0KIHN0YXRpYyB2b2lkIGFw
cGVuZEF0dHJpYnV0ZURlc2MoY29uc3QgTm9kZSogbm9kZSwgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IGNoYXIqIGF0dHJEZXNjKQogewogICAgIGlmIChu
b2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKQEAgLTIyNTEsNiArMjI0OSw3IEBAIHZvaWQgTm9kZTo6
c2hvd05vZGUoY29uc3QgY2hhciogcHJlZml4KSBjb25zdAogICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiVzJXNcdCVwIFwiJXNcIlxuIiwgcHJlZml4LCBub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCks
IHRoaXMsIHZhbHVlLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmlu
ZyBhdHRycyA9ICIiOworICAgICAgICBhcHBlbmRBdHRyaWJ1dGVEZXNjKHRoaXMsIGF0dHJzLCBp
ZEF0dHIsICIgaWQ9Iik7CiAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZURlc2ModGhpcywgYXR0cnMs
IGNsYXNzQXR0ciwgIiBDTEFTUz0iKTsKICAgICAgICAgYXBwZW5kQXR0cmlidXRlRGVzYyh0aGlz
LCBhdHRycywgc3R5bGVBdHRyLCAiIFNUWUxFPSIpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IiVzJXNcdCVwJXNcbiIsIHByZWZpeCwgbm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCB0aGlzLCBh
dHRycy51dGY4KCkuZGF0YSgpKTsKQEAgLTIzNDQsNyArMjM0Myw2IEBAIHZvaWQgTm9kZTo6c2hv
d1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSBjb25zdAogICAgIHNob3dTdWJUcmVlQWNyb3NzRnJh
bWUocm9vdE5vZGUsIHRoaXMsICIiKTsKIH0KIAotI2VuZGlmCiAKIC8vIC0tLS0tLS0tCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCmluZGV4IDU2MWUxNDMwNmZiMzE1MmM2MWI2YzM3ZjlhYTI1MjI5ZGM1NTQwYWMuLjMw
MDEwOTkwOTBhMzEwMzFiNmViZmQyNzgxMzA2NmJlYzE3YmM2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAt
NTE5LDE0ICs1MTksMTIgQEAgcHVibGljOgogICAgIC8vIGRpc3BhdGNoaW5nLCBhbmQgaXMgY2Fs
bGVkIF9hZnRlcl8gdGhlIG5vZGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlLgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgdmly
dHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3Ro
KSBjb25zdDsKIAogICAgIHZvaWQgc2hvd05vZGUoY29uc3QgY2hhciogcHJlZml4ID0gIiIpIGNv
bnN0OwogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29uc3Q7CiAgICAgdm9pZCBzaG93VHJl
ZUFuZE1hcmsoY29uc3QgTm9kZSogbWFya2VkTm9kZTEsIGNvbnN0IGNoYXIqIG1hcmtlZExhYmVs
MSwgY29uc3QgTm9kZSogbWFya2VkTm9kZTIgPSAwLCBjb25zdCBjaGFyKiBtYXJrZWRMYWJlbDIg
PSAwKSBjb25zdDsKICAgICB2b2lkIHNob3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1lKCkgY29uc3Q7
Ci0jZW5kaWYKIAogICAgIHZvaWQgcmVnaXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0KER5bmFt
aWNTdWJ0cmVlTm9kZUxpc3QqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJEeW5hbWljU3VidHJlZU5v
ZGVMaXN0KER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVp
ZmllZFRyZWVUcmF2ZXJzYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyNDg4NzE5N2RiZTA1ZWExZWJlZmNh
MTE5NTA5MDdkOTJiMDQ5NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwCkBAIC0wLDAgKzEsMzI2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlaWZpZWRUcmVlVHJhdmVyc2FsLmgiCisKKyNpbmNsdWRlICJF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCisjaW5j
bHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCisKKy8vIEZJ
WE1FOiBXZSBtaWdodCBuZWVkIHRvIGd1YXJkIGJ5IFNIQURPV19ET00/CisvLyBGSVhNRTogU1ZH
Li4uLgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2Fs
OjpmaXJzdENoaWxkKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgTm9kZSogY2hpbGQgPSB0cmF2
ZXJzZUNoaWxkKG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCk7Cisg
ICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hpbGQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4g
Y2hpbGQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGQoY29uc3Qg
Tm9kZSogbm9kZSkKK3sKKyAgICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVp
ZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8
fCAhY2hpbGQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUq
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5k
YXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgTm9kZSogY2hpbGQgPSB0cmF2ZXJzZUxpZ2h0
Q2hpbGRyZW4obm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7Cisg
ICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hpbGQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4g
Y2hpbGQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZUNoaWxkKGNv
bnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikK
K3sKKyAgICAvLyBGSVhNRTogU29mdGVuIHJlc3RyaWN0aW9ucyBmb3IgaW5hY3RpdmUgaW5zZXJ0
aW9uIHBvaW50cy4KKyAgICBBU1NFUlQoIW5vZGUtPmlzQ29udGVudEVsZW1lbnQoKSk7CisgICAg
QVNTRVJUKCFub2RlLT5pc1NoYWRvd0VsZW1lbnQoKSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1No
YWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKG5vZGUtPmlzRWxlbWVudE5vZGUoKSk7CisgICAgY29u
c3QgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsKKyAgICBTaGFkb3dUcmVlKiBz
aGFkb3dUcmVlID0gZWxlbWVudC0+c2hhZG93VHJlZSgpOworICAgIGlmIChzaGFkb3dUcmVlICYm
IHNoYWRvd1RyZWUtPmhhc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTGln
aHRDaGlsZHJlbihzaGFkb3dUcmVlLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKSwgZGlyZWN0aW9uKTsK
KyAgICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlTGlnaHRDaGlsZHJlbihub2RlLCBkaXJlY3Rpb24p
OworICAgIHJldHVybiBjaGlsZDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRy
YXZlcnNlTGlnaHRDaGlsZHJlbihjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNh
bERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYgKE5vZGUqIGNoaWxkID0gKGRpcmVjdGlv
biA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5maXJzdENo
aWxkKCkgOiBub2RlLT5sYXN0Q2hpbGQoKSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZU1lKGNo
aWxkLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6dHJhdmVyc2VNZShjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNh
bERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYgKG5vZGUtPmlzQ29udGVudEVsZW1lbnQo
KSkgeworICAgICAgICBjb25zdCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqIHNlbGVjdGlvbkxp
c3QgPSB0b0hUTUxDb250ZW50RWxlbWVudChub2RlKS0+c2VsZWN0aW9ucygpOworICAgICAgICBp
ZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IChkaXJlY3Rpb24gPT0gUmVpZmll
ZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID9zZWxlY3Rpb25MaXN0LT5maXJzdCgpIDog
c2VsZWN0aW9uTGlzdC0+bGFzdCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZU1lKHNl
bGVjdGlvbi0+bm9kZSgpLCBkaXJlY3Rpb24pOworICAgICAgICByZXR1cm4gdHJhdmVyc2VMaWdo
dENoaWxkcmVuKG5vZGUsIGRpcmVjdGlvbik7CisgICAgfQorICAgIGlmIChub2RlLT5pc1NoYWRv
d0VsZW1lbnQoKSkgeworICAgICAgICAvLyBGSVhNRTogRml4IDxzaGFkb3c+IGluIG9sZGVzdFNo
YWRvd1Jvb3QuCisgICAgICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFkb3dS
b290KG5vZGUtPnNoYWRvd1RyZWVSb290Tm9kZSgpKSkgeworICAgICAgICAgICAgaWYgKFNoYWRv
d1Jvb3QqIG9sZGVyU2hhZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4ob2xkZXJTaGFkb3dS
b290LCBkaXJlY3Rpb24pOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obm9kZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVl
VHJhdmVyc2FsOjpuZXh0U2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCgh
bm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIE5vZGUqIG5leHQgPSB0cmF2ZXJzZVNpYmxpbmdN
YXliZUJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0
aW9uRm9yd2FyZCk7CisgICAgQVNTRVJUKCFuZXh0IHx8ICFuZXh0LT5pc1NoYWRvd1Jvb3QoKSk7
CisgICAgcmV0dXJuIG5leHQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwcmV2
aW91c1NpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hh
ZG93Um9vdCgpKTsKKyAgICBOb2RlKiBuZXh0ID0gdHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9J
bnNlcnRpb25Qb2ludChub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJk
KTsKKyAgICBBU1NFUlQoIW5leHQgfHwgIW5leHQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1
cm4gbmV4dDsKK30KKworc3RhdGljIFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUoTm9kZSogbm9kZSkK
K3sKKyAgICBpZiAobm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVy
biB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1RyZWUoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3Rh
dGljIFNoYWRvd1RyZWUqIHNoYWRvd1RyZWVPZlBhcmVudChjb25zdCBOb2RlKiBub2RlKQorewor
ICAgIGlmIChub2RlKQorICAgICAgICByZXR1cm4gc2hhZG93VHJlZShub2RlLT5wYXJlbnROb2Rl
KCkpOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlLCBS
ZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgU2hhZG93VHJl
ZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVPZlBhcmVudChub2RlKTsKKyAgICBpZiAoIXNoYWRv
d1RyZWUpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUs
IGRpcmVjdGlvbik7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRv
d1RyZWUtPnNlbGVjdGlvbkZvcihub2RlKTsKKyAgICBpZiAoIXNlbGVjdGlvbikKKyAgICAgICAg
cmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0aW9uKTsKKyAg
ICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIG5leHRTZWxlY3Rpb24gPSAoZGlyZWN0aW9uID09
IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IHNlbGVjdGlvbi0+bmV4dCgp
IDogc2VsZWN0aW9uLT5wcmV2aW91cygpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTWUobmV4
dFNlbGVjdGlvbi0+bm9kZSgpLCBkaXJlY3Rpb24pOworICAgIHJldHVybiB0cmF2ZXJzZVNpYmxp
bmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50KHNlbGVjdGlvbi0+aW5zZXJ0aW9uUG9pbnQoKSwg
ZGlyZWN0aW9uKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2li
bGluZ0luQ3VycmVudFRyZWUoY29uc3QgTm9kZSogbm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxE
aXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGlmIChOb2RlKiBuZXh0ID0gKGRpcmVjdGlvbiA9
PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5uZXh0U2libGlu
ZygpIDogbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VN
ZShuZXh0LCBkaXJlY3Rpb24pOworICAgIGlmIChOb2RlKiBuZXh0ID0gdHJhdmVyc2VCYWNraW5n
VG9Zb3VuZ2VyU2hhZG93Um9vdChub2RlLCBkaXJlY3Rpb24pKQorICAgICAgICByZXR1cm4gbmV4
dDsKKyAgICByZXR1cm4gZXNjYXBlRmFsbGJhY2tDb250ZW50RWxlbWVudChub2RlLCBkaXJlY3Rp
b24pOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VCYWNraW5nVG9Z
b3VuZ2VyU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERp
cmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgLy8gRklYTUU6IEFzc2lnbiBub2RlLT5wYXJlbnRO
b2RlKCkKKyAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5vZGUoKS0+
aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgU2hhZG93Um9vdCogcGFyZW50U2hhZG93Um9vdCA9
IHRvU2hhZG93Um9vdChub2RlLT5wYXJlbnROb2RlKCkpOworICAgICAgICBpZiAoU2hhZG93Um9v
dCogeW91bmdlclNoYWRvd1Jvb3QgPSBwYXJlbnRTaGFkb3dSb290LT55b3VuZ2VyU2hhZG93Um9v
dCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoeW91bmdlclNoYWRvd1Jvb3QtPmZpcnN0U2hhZG93
RWxlbWVudCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRU
cmVlKHlvdW5nZXJTaGFkb3dSb290LT5maXJzdFNoYWRvd0VsZW1lbnQoKSwgZGlyZWN0aW9uKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVU
cmF2ZXJzYWw6OmVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSwg
UmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIC8vIEZJWE1F
OiBBc3NpZ24gbm9kZS0+cGFyZW50Tm9kZSgpCisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSAm
JiBub2RlLT5wYXJlbnROb2RlKCktPmlzQ29udGVudEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IHRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZS0+cGFyZW50Tm9k
ZSgpLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6dHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyhjb25zdCBOb2RlKiBu
b2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBpZiAobm9kZS0+aXND
b250ZW50RWxlbWVudCgpIHx8IG5vZGUtPmlzU2hhZG93RWxlbWVudCgpKQorICAgICAgICByZXR1
cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgY3Jvc3NlZCk7Cisg
ICAgY3Jvc3NlZCA9IE5vdENyb3NzZWQ7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5v
ZGUpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZShjb25zdCBO
b2RlKiBub2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICAvLyBSZW1v
dmUgdGhpcyByZXN0cmljdGlvbiBsYXRlci4KKyAgICAvLyBGb3IgaW5hY3RpdmUgaW5zZXJ0aW9u
UG9pbnQsIHJldHVybiAwLgorICAgIC8vIEZvciBpbnNlcnRpb25Qb2ludCBub3QgaW4gU2hhZG93
VHJlZSwgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKT8/PworICAgIEFTU0VSVCghbm9kZS0+aXND
b250ZW50RWxlbWVudCgpKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93RWxlbWVudCgpKTsK
KyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gcGFyZW50Tm9k
ZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgY3Jvc3NlZCk7Cit9CisKK05vZGUqIFJl
aWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
Ly8gRklYTUU6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLgorICAgIENyb3NzZWRVcHBlckJvdW5k
YXJ5IG5vdFVzZWQ7CisgICAgcmV0dXJuIHBhcmVudE5vZGUobm9kZSwgbm90VXNlZCk7Cit9CisK
KworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdV
cHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgLy8gUmVtb3ZlIHRoaXMgcmVz
dHJpY3Rpb24gbGF0ZXIuCisgICAgLy8gRm9yIGluYWN0aXZlIGluc2VydGlvblBvaW50LCByZXR1
cm4gMC4KKyAgICAvLyBGb3IgaW5zZXJ0aW9uUG9pbnQgbm90IGluIFNoYWRvd1RyZWUsIHJldHVy
biBub2RlLT5wYXJlbnROb2RlKCk/Pz8KKyAgICBBU1NFUlQoIW5vZGUtPmlzQ29udGVudEVsZW1l
bnQoKSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd0VsZW1lbnQoKSk7CisgICAgQVNTRVJU
KCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgQ3Jvc3NlZFVwcGVyQm91bmRhcnkgY3Jvc3Nl
ZDsKKyAgICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2lu
dChub2RlLCBjcm9zc2VkKTsKKyAgICBpZiAoY3Jvc3NlZCA9PSBDcm9zc2VkKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gcGFyZW50OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZl
cnNhbDo6cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9k
ZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgaWYgKFNoYWRvd1RyZWUq
IHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQobm9kZSkpIHsKKyAgICAgICAgaWYgKEhU
TUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Io
bm9kZSkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9u
UG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBjcm9zc2VkKTsKKyAgICB9CisgICAg
cmV0dXJuIHBhcmVudE5vZGVJbkN1cnJlbnRUcmVlKG5vZGUsIGNyb3NzZWQpOworfQorCitOb2Rl
KiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUluQ3VycmVudFRyZWUoY29uc3QgTm9k
ZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgaWYgKE5vZGUq
IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlQmFja1RvWW91bmdlclNo
YWRvd1Jvb3QodG9TaGFkb3dSb290KHBhcmVudCksIGNyb3NzZWQpOworICAgICAgICByZXR1cm4g
dHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyhwYXJlbnQsIGNyb3NzZWQpOworICAg
IH0KKyAgICBjcm9zc2VkID0gTm90Q3Jvc3NlZDsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdChj
b25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290LCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3Nl
ZCkKK3sKKyAgICBBU1NFUlQoc2hhZG93Um9vdCk7CisgICAgaWYgKFNoYWRvd1Jvb3QqIHlvdW5n
ZXJTaGFkb3dSb290ID0gc2hhZG93Um9vdC0+eW91bmdlclNoYWRvd1Jvb3QoKSkgeworICAgICAg
ICBIVE1MU2hhZG93RWxlbWVudCogc2hhZG93RWxlbWVudCA9IHlvdW5nZXJTaGFkb3dSb290LT5m
aXJzdFNoYWRvd0VsZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKHNoYWRvd0VsZW1lbnQpOworICAg
ICAgICByZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoc2hhZG93RWxl
bWVudCwgY3Jvc3NlZCk7CisgICAgfQorICAgIGNyb3NzZWQgPSBDcm9zc2VkOworICAgIHJldHVy
biBzaGFkb3dSb290LT5ob3N0KCk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjph
ZGp1c3RlZFBhcmVudE5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoU2hhZG93VHJl
ZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVPZlBhcmVudChub2RlKSkgeworICAgICAgICBpZiAo
SFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRvd1RyZWUtPnNlbGVjdGlvbkZv
cihub2RlKSkKKyAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCk7
CisgICAgfQorICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAoU2hh
ZG93Um9vdCogeW91bmdlclNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3Qobm9kZSktPnlvdW5nZXJT
aGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBzaGFkb3dFbGVt
ZW50ID0geW91bmdlclNoYWRvd1Jvb3QtPmZpcnN0U2hhZG93RWxlbWVudCgpOworICAgICAgICAg
ICAgQVNTRVJUKHNoYWRvd0VsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIHNoYWRvd0VsZW1l
bnQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRvU2hhZG93Um9vdChub2RlKS0+aG9zdCgp
OworICAgIH0KKyAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOworfQorCitOb2RlKiBSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKiBub2RlKQorewor
ICAgIGlmIChOb2RlKiBuZXh0ID0gZmlyc3RDaGlsZChub2RlKSkKKyAgICAgICAgcmV0dXJuIG5l
eHQ7CisgICAgaWYgKE5vZGUqIG5leHQgPSBuZXh0U2libGluZyhub2RlKSkKKyAgICAgICAgcmV0
dXJuIG5leHQ7CisgICAgY29uc3QgTm9kZSogbiA9IG5vZGU7CisgICAgd2hpbGUgKG4gJiYgIW5l
eHRTaWJsaW5nKG4pKQorICAgICAgICBuID0gcGFyZW50Tm9kZShuKTsKKyAgICBpZiAobikKKyAg
ICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKG4pOworICAgIHJldHVybiAwOworfQorCisvLyBGSVhN
RTogTWVyZ2UgdGhpcyB0byB0cmF2ZXJzZU5leHROb2RlCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZl
cnNhbDo6dHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3Qg
Tm9kZSogbm9kZSkgCit7CisgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRy
ZW4obm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICAgICAg
cmV0dXJuIG5leHQ7CisgICAgaWYgKE5vZGUqIG5leHQgPSBuZXh0U2libGluZyhub2RlKSkKKyAg
ICAgICAgcmV0dXJuIG5leHQ7CisgICAgY29uc3QgTm9kZSogbiA9IG5vZGU7CisgICAgd2hpbGUg
KG4gJiYgIW5leHRTaWJsaW5nKG4pKQorICAgICAgICBuID0gcGFyZW50Tm9kZVdpdGhvdXRDcm9z
c2luZ1VwcGVyQm91bmRhcnkobik7CisgICAgaWYgKG4pCisgICAgICAgIHJldHVybiBuZXh0U2li
bGluZyhuKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6
OnRyYXZlcnNlUHJldmlvdXNOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKE5vZGUq
IG5leHQgPSBsYXN0Q2hpbGQobm9kZSkpCisgICAgICAgIHJldHVybiBuZXh0OworICAgIGlmIChO
b2RlKiBuZXh0ID0gcHJldmlvdXNTaWJsaW5nKG5vZGUpKQorICAgICAgICByZXR1cm4gbmV4dDsK
KyAgICBjb25zdCBOb2RlKiBuID0gbm9kZTsKKyAgICB3aGlsZSAobiAmJiAhcHJldmlvdXNTaWJs
aW5nKG4pKQorICAgICAgICBuID0gcGFyZW50Tm9kZShuKTsKKyAgICBpZiAobikKKyAgICAgICAg
cmV0dXJuIHByZXZpb3VzU2libGluZyhuKTsKKyAgICByZXR1cm4gMDsKK30KKworLy8gRklYTUU6
IGltcGxlbWVudCAKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3Vz
Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkgCit7Cisg
ICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCkpCisgICAgICAgIHJldHVybiBuZXh0OworICAg
IGlmIChOb2RlKiBuZXh0ID0gcHJldmlvdXNTaWJsaW5nKG5vZGUpKQorICAgICAgICByZXR1cm4g
bmV4dDsKKyAgICBjb25zdCBOb2RlKiBuID0gbm9kZTsKKyAgICB3aGlsZSAobiAmJiAhcHJldmlv
dXNTaWJsaW5nKG4pKQorICAgICAgICBuID0gcGFyZW50Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVy
Qm91bmRhcnkobik7CisgICAgaWYgKG4pCisgICAgICAgIHJldHVybiBwcmV2aW91c1NpYmxpbmco
bik7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3M2QzNDc3MWZhMWE3Zjg4ZmVm
MDNmM2ZmYjdkYWM3MWM2NGQ3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZWlm
aWVkVHJlZVRyYXZlcnNhbF9oCisjZGVmaW5lIFJlaWZpZWRUcmVlVHJhdmVyc2FsX2gKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb2RlOworY2xhc3MgU2hhZG93Um9vdDsKKworZW51
bSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiB7CisgICAgUmVpZmllZFRyZWVUcmF2ZXJz
YWxEaXJlY3Rpb25Gb3J3YXJkLAorICAgIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uQmFj
a3dhcmQKK307CisKK2NsYXNzIFJlaWZpZWRUcmVlVHJhdmVyc2FsIHsKKyAgICAvLyBGSVhNRTog
TWFrZSBzb21lIGZ1bmN0aW9ucyBpbmxpbmUuCitwdWJsaWM6CisgICAgLy8gRklYTUU6IE1ha2Ug
c29tZSBmdW5jdGlvbnMgaW5saW5lLgorICAgIGVudW0gQ3Jvc3NlZFVwcGVyQm91bmRhcnkgewor
ICAgICAgICBOb3RDcm9zc2VkLAorICAgICAgICBDcm9zc2VkLAorICAgIH07CisKKyAgICBzdGF0
aWMgTm9kZSogZmlyc3RDaGlsZChjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIGxhc3RD
aGlsZChjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIGxhc3RDaGlsZFdpdGhvdXRDcm9z
c2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCisgICAgc3RhdGljIE5vZGUqIG5leHRT
aWJsaW5nKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogcHJldmlvdXNTaWJsaW5nKGNv
bnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlKGNvbnN0IE5vZGUqLCBD
cm9zc2VkVXBwZXJCb3VuZGFyeSYpOworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlKGNvbnN0
IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeShjb25zdCBOb2RlKik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0
Tm9kZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2Rl
KGNvbnN0IE5vZGUqKTsKKworICAgIC8vIEZvciBldmVudCBkaXNwYXRjaGluZy4gRG8gbm90IHNr
aXAgU2hhZG93Um9vdCBub3IgSW5zZXJ0aW9uUG9pbnQuCisgICAgc3RhdGljIE5vZGUqIGFkanVz
dGVkUGFyZW50Tm9kZShjb25zdCBOb2RlKik7CisKKyAgICAvLyBGb3IgZm9jdXMgbmF2aWdhdGlv
bi4KKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVy
Qm91bmRhcnkoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3Vz
Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCitwcml2YXRl
OgorICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZUNoaWxkKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJl
ZVRyYXZlcnNhbERpcmVjdGlvbik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTWUoY29uc3Qg
Tm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSog
dHJhdmVyc2VMaWdodENoaWxkcmVuKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERp
cmVjdGlvbik7CisKKyAgICAvLyBzdGF0aWMgTm9kZSogbmV4dFNpYmxpbmdNYXliZUJhY2tUb0lu
c2VydGlvblBvaW50KGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VTaWJs
aW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2
ZXJzYWxEaXJlY3Rpb24pOworICAgIC8vIHN0YXRpYyBOb2RlKiBuZXh0U2libGluZ0luQ3VycmVu
dFRyZWUoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxpbmdJbkN1
cnJlbnRUcmVlKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisK
KyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VCYWNraW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChjb25z
dCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2Rl
KiBlc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRy
YXZlcnNhbERpcmVjdGlvbik7CisKKyAgICAvLyBzdGF0aWMgTm9kZSogdHJhdmVyc2VNZUVzY2Fw
aW5nRmFsbGJhY2tDb250ZW50cyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZl
cnNlTWVFc2NhcGluZ0ZhbGxiYWNrQ29udGVudHMoY29uc3QgTm9kZSosIENyb3NzZWRVcHBlckJv
dW5kYXJ5Jik7CisKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0
aW9uUG9pbnQoY29uc3QgTm9kZSosIENyb3NzZWRVcHBlckJvdW5kYXJ5Jik7CisgICAgc3RhdGlj
IE5vZGUqIHBhcmVudE5vZGVJbkN1cnJlbnRUcmVlKGNvbnN0IE5vZGUqLCBDcm9zc2VkVXBwZXJC
b3VuZGFyeSYpOworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRv
d1Jvb3QoY29uc3QgU2hhZG93Um9vdCosIENyb3NzZWRVcHBlckJvdW5kYXJ5Jik7Cit9OworCit9
IC8vIG5hbWVzcGFjZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCAy
ODBkYjExNGUwNTQwMzFmMmVlNzk2YmQ4NDRiOTM0ZjQyMWRlNDIxLi45NGU0ZWQ1MmUwZjJlMjlm
Y2UyOTBhNDVjODNhMWRjZGI3M2QyNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250
ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRl
ICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
Ikluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCkBAIC0xODksNiAr
MTkwLDE2IEBAIGJvb2wgU2hhZG93Um9vdDo6aGFzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorLy8gRklYTUU6IFRoaXMgaXMgYSBzdHViIGltcGxlbWVudGF0
aW9uLgorSFRNTFNoYWRvd0VsZW1lbnQqIFNoYWRvd1Jvb3Q6OmZpcnN0U2hhZG93RWxlbWVudCgp
IGNvbnN0Cit7CisgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJh
dmVyc2VOZXh0Tm9kZSh0aGlzKSkgeworICAgICAgICBpZiAobi0+aXNTaGFkb3dFbGVtZW50KCkp
CisgICAgICAgICAgICByZXR1cm4gdG9TaGFkb3dFbGVtZW50KG4pOworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKwogYm9vbCBTaGFkb3dSb290OjphcHBseUF1dGhvclNoZWV0cygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fYXBwbHlBdXRob3JTaGVldHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApp
bmRleCAzZGYyOGM2YTRiNTU5ZTVhNWExNjg0YjM5ZTM4YTRjYzgyNjY0NjZiLi40NjczOGE2MzE1
M2U2YWQ4NjQ1Nzc0MGU4MTEwNTUxNzU1YjE4MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgU2hhZG93Um9vdF9oCiAKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlu
a2VkTGlzdC5oPgpAQCAtMzcsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKIGNsYXNzIEhUTUxDb250ZW50U2Vs
ZWN0b3I7CitjbGFzcyBIVE1MU2hhZG93RWxlbWVudDsKIGNsYXNzIEluc2VydGlvblBvaW50Owog
Y2xhc3MgU2hhZG93VHJlZTsKIApAQCAtNjEsNyArNjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICBib29sIG5lZWRz
UmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKIAotICAgIEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludEZvcihOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFu
Z2VkKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlBdXRob3JTaGVldHMoKSBjb25zdDsKQEAg
LTgwLDggKzgxLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNPbGRlc3QoKSBjb25zdCB7IHJldHVy
biAhb2xkZXJTaGFkb3dSb290KCk7IH0KIAogICAgIGJvb2wgaGFzSW5zZXJ0aW9uUG9pbnQoKSBj
b25zdDsKLQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICBIVE1MU2hhZG93RWxlbWVu
dCogZmlyc3RTaGFkb3dFbGVtZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU2hhZG93Um9v
dChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCmluZGV4IGJlZTM3MmY3OGU3
Njc3NzkwMTBhMmZjYzQ3Nzc2MTAyNTMxNWUxOWIuLjhlNGNkYTg0MmE5MTk4NjM1YTQwMGNkZDg4
MTg1ZTg3ZjE1ZjJhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtMTk2LDcgKzE5
Nyw3IEBAIHZvaWQgU2hhZG93VHJlZTo6ZGV0YWNoSG9zdChFbGVtZW50KiBob3N0KQogICAgIGhv
c3QtPmRldGFjaEFzTm9kZSgpOwogfQogCi1JbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5z
ZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKK0luc2VydGlvblBvaW50KiBTaGFkb3dU
cmVlOjppbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewogICAgIGlm
ICghbV9zZWxlY3RvcikKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMDYsNiArMjA3LDEzIEBAIElu
c2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBj
b25zdAogICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKIH0KIAorSFRNTENvbnRl
bnRTZWxlY3Rpb24qIFNoYWRvd1RyZWU6OnNlbGVjdGlvbkZvcihjb25zdCBOb2RlKiBub2RlKSBj
b25zdAoreworICAgIGlmICghbV9zZWxlY3RvcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG1fc2VsZWN0b3ItPmZpbmRGb3Iobm9kZSk7Cit9CisKIGJvb2wgU2hhZG93VHJlZTo6aXNT
ZWxlY3RvckFjdGl2ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxl
Y3Rvci0+aGFzQ2FuZGlkYXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKaW5kZXggMGVmYmRi
MTM2NzQzMDNmZjY3YTcxZTEwZWNjNTUxYTVhNDc1NDg0Zi4uOGMwN2E5NjEwNzVhOGYyZGI5ZjA0
N2M1YzRlOTFmYzAwNmQ1NzgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCkBAIC0zOCw5ICsz
OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5vZGU7CiBjbGFzcyBFbGVtZW50
OworY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OwogY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsK
IGNsYXNzIEluc2VydGlvblBvaW50OwogY2xhc3MgVHJlZVNjb3BlOworY2xhc3MgSFRNTENvbnRl
bnRTZWxlY3Rpb247CiAKIGNsYXNzIFNoYWRvd1RyZWUgewogcHVibGljOgpAQCAtNzcsOCArNzks
MTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
ICAgICB2b2lkIGhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKIAotICAgIEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludEZvcihOb2RlKikgY29uc3Q7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqKSBjb25zdDsKIAorICAgIEhUTUxDb250ZW50U2VsZWN0
aW9uKiBzZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSopIGNvbnN0OworCisgICAgLy8gRG9uJ3QgcGFz
cyBzZWxlY3RvciB0byBjbGllbnRzLiBTaGFkb3dSb290TGlzdCBzaG91bGQgYWN0IGZhY2FkZS4K
ICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0OwogICAgIEhUTUxDb250
ZW50U2VsZWN0b3IqIGVuc3VyZVNlbGVjdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKaW5kZXggZGM2M2YxMWU3ZTU0ODQxYjZjZWM0
MTI3OWNlNzQ4ZjBkYzAxMWI1YS4uYWNjMWFhYjkwMGY2Y2ViZDc4NTg2OGE3ZWVkYmYxYmFhNzIz
MmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50LmgKQEAgLTcyLDggKzcyLDcgQEAgaW5saW5lIGNvbnN0IEhUTUxDb250ZW50RWxlbWVudCog
dG9IVE1MQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKIAogaW5saW5lIEhUTUxDb250
ZW50RWxlbWVudCogdG9IVE1MQ29udGVudEVsZW1lbnQoTm9kZSogbm9kZSkKIHsKLSAgICBBU1NF
UlQoIW5vZGUgfHwgbm9kZS0+aXNDb250ZW50RWxlbWVudCgpKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SFRNTENvbnRlbnRFbGVtZW50Kj4obm9kZSk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
SFRNTENvbnRlbnRFbGVtZW50Kj4odG9IVE1MQ29udGVudEVsZW1lbnQoc3RhdGljX2Nhc3Q8Y29u
c3QgTm9kZSo+KG5vZGUpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKaW5kZXggOTUzOTViYzhiZjIyYmE4Mzk4ZmQ1
NmU0NWQ4NjRkYTYzMTgyNjkyNC4uNTZkZGViOGIwZjhkMGM5YTgwOTA5OTAzY2FhMTE5YmIyZmE2
MDMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRT
ZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRT
ZWxlY3Rvci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6
OnVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogbGlzdCkKICAgICBsaXN0LT5jbGVh
cigpOwogfQogCi1IVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rvcjo6Zmlu
ZEZvcihOb2RlKiBrZXkpIGNvbnN0CitIVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRT
ZWxlY3Rvcjo6ZmluZEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
c2VsZWN0aW9uU2V0LmZpbmQoa2V5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaAppbmRleCAxNGVhMDU3YTBhNWVkNTc0N2NkY2E5ODk4
ZDJhNWU1ZmE1M2M1ODc0Li42MzY3ZTJjOGU0NzcxY2NlMjg5NTQxNDIyNTQzMWIyYzEyOTE2MWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVj
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rv
ci5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZChIVE1MQ29udGVudFNl
bGVjdGlvbiogdmFsdWUpIHsgbV9zZXQuYWRkKHZhbHVlKTsgfQogICAgIHZvaWQgcmVtb3ZlKEhU
TUxDb250ZW50U2VsZWN0aW9uKiB2YWx1ZSkgeyBtX3NldC5yZW1vdmUodmFsdWUpOyB9CiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zZXQuaXNFbXB0eSgpOyB9Ci0gICAgSFRN
TENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoTm9kZSoga2V5KSBjb25zdDsKKyAgICBIVE1MQ29udGVu
dFNlbGVjdGlvbiogZmluZChjb25zdCBOb2RlKiBrZXkpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IHN0cnVjdCBUcmFuc2xhdG9yIHsKQEAgLTExOCw5ICsxMTgsOSBAQCBwcml2YXRlOgogICAgIFBv
aW50ZXJTZXQgbV9zZXQ7CiB9OwogCi1pbmxpbmUgSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxD
b250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKE5vZGUqIGtleSkgY29uc3QKK2lubGluZSBIVE1MQ29u
dGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQoY29uc3QgTm9kZSog
a2V5KSBjb25zdAogewotICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmlu
ZDxOb2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OlRyYW5zbGF0b3I+KGtleSk7CisgICAg
UG9pbnRlclNldDo6aXRlcmF0b3IgZm91bmQgPSBtX3NldC5maW5kPGNvbnN0IE5vZGUqLCBIVE1M
Q29udGVudFNlbGVjdGlvblNldDo6VHJhbnNsYXRvcj4oa2V5KTsKICAgICByZXR1cm4gZm91bmQg
IT0gbV9zZXQuZW5kKCkgPyAqZm91bmQgOiAwOwogfQogCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZWxlY3QoSW5zZXJ0aW9uUG9pbnQqLCBIVE1MQ29udGVudFNlbGVj
dGlvbkxpc3QqKTsKICAgICB2b2lkIHVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCop
OwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kRm9yKE5vZGUqIGtleSkgY29uc3Q7Cisg
ICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdDsK
IAogICAgIHZvaWQgd2lsbFNlbGVjdE92ZXIoRWxlbWVudCogc2hhZG93SG9zdCk7CiAgICAgdm9p
ZCBkaWRTZWxlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFk
b3dFbGVtZW50LmNwcAppbmRleCBjYjAxY2QyMWZlMGUwMDlhNWU4ZTAwM2FiOWI4NGI2OGZkZDQy
OTMwLi5jMmNmMDMyZmFmNTBhMjcyZmVjMzBmNmRjMmNlYWZjNDcxNjMwMmJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0zMyw4
ICszMyw4IEBACiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAKICNpbmNsdWRlICJIVE1MU2hhZG93
RWxlbWVudC5oIgotCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCmluZGV4IDE1MWM3YTJhYmJkNmM1MDU3ODk0M2ZkNmRj
Y2ZmZjA1YzljOWZmZjcuLjBhYTdiZDFhMzhlOTJmNTQxODZmMGMwZjIyMzVhNmQzZGZhZmQxZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaApA
QCAtNDgsNiArNDgsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAoraW5saW5lIEhUTUxTaGFkb3dFbGVt
ZW50KiB0b1NoYWRvd0VsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwg
bm9kZS0+aXNTaGFkb3dFbGVtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2hh
ZG93RWxlbWVudCo+KG5vZGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcAppbmRleCBmYjE2ZGYwMjFiNmI0NjcyNjA5OTlhYWRkOWFmMWUyMDVmMGRhNDM5Li40YTcz
Mzc4YWZiM2EyOWE0ODFiODE1YjhiODYzNGJiYjIwNGJiNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiS2V5Ym9h
cmRFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1
ZGUgIlJlaWZpZWRUcmVlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKQEAgLTg0
LDYgKzg1LDQ3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkaXNwYXRjaEV2ZW50c09uV2luZG93QW5k
Rm9jdXNlZE5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sCiAgICAgICAgIGRvY3VtZW50LT5m
b2N1c2VkTm9kZSgpLT5kaXNwYXRjaEZvY3VzRXZlbnQoMCk7CiB9CiAKK3N0YXRpYyB2b2lkIHBy
aW50Tm9kZShjb25zdCBjaGFyKiBkZXNjLCBjb25zdCBOb2RlKiBub2RlKSAKK3sKKyNpZm5kZWYg
TkRFQlVHCisgICAgZnByaW50ZihzdGRlcnIsICIlcyAiLCBkZXNjKTsKKyAgICBpZiAobm9kZSkg
eworICAgICAgICBub2RlLT5zaG93Tm9kZSgwKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgKE5VTEwpXG4iKTsKKyNlbHNlCisjZW5kaWYKK30KKworc3RhdGljIGlubGlu
ZSBOb2RlKiBvd25lck9mRm9jdXNTY29wZShUcmVlU2NvcGUqIHNjb3BlKQoreworICAgIEFTU0VS
VChzY29wZSk7CisgICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKKyAg
ICAgICAgcmV0dXJuIHNjb3BlLT5yb290Tm9kZSgpLT5zaGFkb3dIb3N0KCk7CisgICAgaWYgKHNj
b3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICByZXR1cm4gc2Nv
cGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOworICAg
IHJldHVybiAwOworfQorCisKK3N0YXRpYyBpbmxpbmUgU2hhZG93Um9vdCogeW91bmdlc3RTaGFk
b3dSb290KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCit7CisgICAgQVNTRVJUKHNoYWRvd1Jvb3Qp
OworICAgIHdoaWxlIChzaGFkb3dSb290LT55b3VuZ2VyU2hhZG93Um9vdCgpKQorICAgICAgICBz
aGFkb3dSb290ID0gc2hhZG93Um9vdC0+eW91bmdlclNoYWRvd1Jvb3QoKTsKKyAgICByZXR1cm4g
c2hhZG93Um9vdDsKK30KKworLy8gcmVuYW1lIHRoaXM/CitzdGF0aWMgaW5saW5lIFRyZWVTY29w
ZSogZm9jdXNTY29wZUZvcihOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBU
cmVlU2NvcGUqIHNjb3BlID0gbm9kZS0+dHJlZVNjb3BlKCk7CisgICAgaWYgKHNjb3BlLT5yb290
Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9v
dCh0b1NoYWRvd1Jvb3Qoc2NvcGUtPnJvb3ROb2RlKCkpKTsKKyAgICByZXR1cm4gc2NvcGU7Cit9
CisKIEZvY3VzQ29udHJvbGxlcjo6Rm9jdXNDb250cm9sbGVyKFBhZ2UqIHBhZ2UpCiAgICAgOiBt
X3BhZ2UocGFnZSkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCkBAIC0xNTMsMTIgKzE5NSwxNCBA
QCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZChib29sIGZvY3VzZWQpCiAgICAgfQog
fQogCisvLyBGSVhNRTogcmVuYW1lIGl0CisvLyBvd25lZEZvY3VzU2NvcGU/CiBzdGF0aWMgaW5s
aW5lIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpID8g
dG9FbGVtZW50KG5vZGUpLT5zaGFkb3dUcmVlKCktPnlvdW5nZXN0U2hhZG93Um9vdCgpIDogMDsK
IH0KIAotc3RhdGljIGlubGluZSBib29sIGlzVHJlZVNjb3BlT3duZXIoTm9kZSogbm9kZSkKK3N0
YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzU2NvcGVPd25lcihOb2RlKiBub2RlKQogewogICAgIHJl
dHVybiBub2RlICYmIChub2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkgfHwgc2hhZG93Um9vdChu
b2RlKSk7CiB9CkBAIC0xNjYsNyArMjEwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVHJlZVNj
b3BlT3duZXIoTm9kZSogbm9kZSkKIGJvb2wgRm9jdXNDb250cm9sbGVyOjp0cmFuc2ZlckZvY3Vz
VG9FbGVtZW50SW5TaGFkb3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIGJvb2wgcmVzdG9yZVBy
ZXZpb3VzU2VsZWN0aW9uKQogewogICAgIEFTU0VSVChzaGFkb3dSb290KHNoYWRvd0hvc3QpKTsK
LSAgICBOb2RlKiBub2RlID0gZmluZEZvY3VzYWJsZU5vZGVEZWNlbmRpbmdEb3duSW50b0ZyYW1l
RG9jdW1lbnRPclNoYWRvd1Jvb3QoRm9jdXNEaXJlY3Rpb25Gb3J3YXJkLCBzaGFkb3dIb3N0LCAw
KTsKKyAgICBOb2RlKiBub2RlID0gZmluZEZvY3VzYWJsZU5vZGVEZWNlbmRpbmdEb3duSW50b0Zy
YW1lRG9jdW1lbnRPclNoYWRvd1N1YlRyZWVzKEZvY3VzRGlyZWN0aW9uRm9yd2FyZCwgc2hhZG93
SG9zdCwgMCk7CiAgICAgaWYgKHNoYWRvd0hvc3QgPT0gbm9kZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHRvRWxlbWVudChub2RlKS0+Zm9jdXMocmVzdG9yZVByZXZpb3VzU2VsZWN0aW9u
KTsKQEAgLTE3OCwxMiArMjIyLDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNDdXN0b21Gb2N1
c0xvZ2ljKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcp
IHx8IG5vZGUtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUodmlk
ZW9UYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoYXVkaW9UYWcpOwogfQogCi1Ob2RlKiBGb2N1c0Nv
bnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlRGVjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50
T3JTaGFkb3dSb290KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgTm9kZSogbm9kZSwgS2V5Ym9h
cmRFdmVudCogZXZlbnQpCitOb2RlKiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2Rl
RGVjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50T3JTaGFkb3dTdWJUcmVlcyhGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24sIE5vZGUqIG5vZGUsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAg
IC8vIFRoZSBub2RlIHdlIGZvdW5kIG1pZ2h0IGJlIGEgSFRNTEZyYW1lT3duZXJFbGVtZW50IG9y
IGEgc2hhZG93IGhvc3QsIHNvIGRlc2NlbmQgZG93biB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGVp
dGhlcjoKICAgICAvLyAxKSBhIGZvY3VzYWJsZSBub2RlLCBvcgogICAgIC8vIDIpIHRoZSBkZWVw
ZXN0LW5lc3RlZCBIVE1MRnJhbWVPd25lckVsZW1lbnQgb3Igc2hhZG93IGhvc3QuCi0gICAgd2hp
bGUgKGlzVHJlZVNjb3BlT3duZXIobm9kZSkpIHsKKyAgICB3aGlsZSAoaXNGb2N1c1Njb3BlT3du
ZXIobm9kZSkpIHsKICAgICAgICAgTm9kZSogZm91bmROb2RlOwogICAgICAgICBpZiAobm9kZS0+
aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7CiAgICAgICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4obm9kZSk7CkBA
IC0yNTMsNyArMjk3LDkgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0luRG9j
dW1lbnRPcmRlcihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWIKIAogICAgIGRvY3VtZW50
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIFJlZlB0cjxO
b2RlPiBub2RlID0gZmluZEZvY3VzYWJsZU5vZGVBY3Jvc3NUcmVlU2NvcGUoZGlyZWN0aW9uLCBj
dXJyZW50Tm9kZSA/IGN1cnJlbnROb2RlLT50cmVlU2NvcGUoKSA6IGRvY3VtZW50LCBjdXJyZW50
Tm9kZSwgZXZlbnQpOworICAgIHByaW50Tm9kZSgiXG5cblxuXG4+Pj4gYWR2YW5jZUZvY3VzSW5E
b2N1bWVudE9yZGVyOiBjdXJyZXRuTm9kZSAiLCBjdXJyZW50Tm9kZSk7CisgICAgUmVmUHRyPE5v
ZGU+IG5vZGUgPSBmaW5kRm9jdXNhYmxlTm9kZUFjcm9zc0ZvY3VzU2NvcGUoZGlyZWN0aW9uLCBj
dXJyZW50Tm9kZSA/IGZvY3VzU2NvcGVGb3IoY3VycmVudE5vZGUpIDogZG9jdW1lbnQsIGN1cnJl
bnROb2RlLCBldmVudCk7CisgICAgcHJpbnROb2RlKCI8PDwgYWR2YW5jZUZvY3VzSW5Eb2N1bWVu
dE9yZGVyOiByZXN1bHQgIiwgbm9kZS5nZXQoKSk7CiAKICAgICBpZiAoIW5vZGUpIHsKICAgICAg
ICAgLy8gV2UgZGlkbid0IGZpbmQgYSBub2RlIHRvIGZvY3VzLCBzbyB3ZSBzaG91bGQgdHJ5IHRv
IHBhc3MgZm9jdXMgdG8gQ2hyb21lLgpAQCAtMjY2LDcgKzMxMiw3IEBAIGJvb2wgRm9jdXNDb250
cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uLCBLZXliCiAKICAgICAgICAgLy8gQ2hyb21lIGRvZXNuJ3Qgd2FudCBmb2N1cywgc28gd2Ug
c2hvdWxkIHdyYXAgZm9jdXMuCiAgICAgICAgIG5vZGUgPSBmaW5kRm9jdXNhYmxlTm9kZShkaXJl
Y3Rpb24sIG1fcGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCksIDAsIGV2ZW50KTsKLSAgICAg
ICAgbm9kZSA9IGZpbmRGb2N1c2FibGVOb2RlRGVjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50
T3JTaGFkb3dSb290KGRpcmVjdGlvbiwgbm9kZS5nZXQoKSwgZXZlbnQpOworICAgICAgICBub2Rl
ID0gZmluZEZvY3VzYWJsZU5vZGVEZWNlbmRpbmdEb3duSW50b0ZyYW1lRG9jdW1lbnRPclNoYWRv
d1N1YlRyZWVzKGRpcmVjdGlvbiwgbm9kZS5nZXQoKSwgZXZlbnQpOwogCiAgICAgICAgIGlmICgh
bm9kZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxOCw2MSArMzY0LDc4IEBAIGJv
b2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBLZXliCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgTm9kZSogb3duZXJPZlRyZWVTY29wZShUcmVlU2NvcGUqIHNjb3BlKQotewotICAgIEFTU0VS
VChzY29wZSk7Ci0gICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKLSAg
ICAgICAgcmV0dXJuIHNjb3BlLT5yb290Tm9kZSgpLT5zaGFkb3dIb3N0KCk7Ci0gICAgaWYgKHNj
b3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICByZXR1cm4gc2Nv
cGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwotICAg
IHJldHVybiAwOwotfQotCi1Ob2RlKiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2Rl
QWNyb3NzVHJlZVNjb3BlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgVHJlZVNjb3BlKiBzY29w
ZSwgTm9kZSogY3VycmVudE5vZGUsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQorLy8gUmVuYW1lIHNj
b3BlIHdpdGggZm9jdXNTY29wZT8KK05vZGUqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJs
ZU5vZGVBY3Jvc3NGb2N1c1Njb3BlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgVHJlZVNjb3Bl
KiBzY29wZSwgTm9kZSogY3VycmVudE5vZGUsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogeworICAg
IHByaW50Tm9kZSgiXG5cblxuXG4+Pj4gZmluZEZvY3VzYWJsZU5vZGVBY3Jvc3NGb2N1c1Njb3Bl
OiBjdXJyZXRuTm9kZSAiLCBjdXJyZW50Tm9kZSk7CisgICAgCiAgICAgTm9kZSogbm9kZSA9IGZp
bmRGb2N1c2FibGVOb2RlKGRpcmVjdGlvbiwgc2NvcGUsIGN1cnJlbnROb2RlLCBldmVudCk7Cisg
ICAgCiAgICAgLy8gSWYgdGhlcmUncyBubyBmb2N1c2FibGUgbm9kZSB0byBhZHZhbmNlIHRvLCBt
b3ZlIHVwIHRoZSB0cmVlIHNjb3BlcyB1bnRpbCB3ZSBmaW5kIG9uZS4KICAgICB3aGlsZSAoIW5v
ZGUgJiYgc2NvcGUpIHsKLSAgICAgICAgTm9kZSogb3duZXIgPSBvd25lck9mVHJlZVNjb3BlKHNj
b3BlKTsKKyAgICAgICAgTm9kZSogb3duZXIgPSBvd25lck9mRm9jdXNTY29wZShzY29wZSk7Cisg
ICAgICAgIHByaW50Tm9kZSgiICA+PiBpbiB3aGlsZTogb3duZXI6ICIsIG93bmVyKTsKICAgICAg
ICAgaWYgKCFvd25lcikKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBub2RlID0gZmluZEZv
Y3VzYWJsZU5vZGUoZGlyZWN0aW9uLCBvd25lci0+dHJlZVNjb3BlKCksIG93bmVyLCBldmVudCk7
Ci0gICAgICAgIHNjb3BlID0gb3duZXItPnRyZWVTY29wZSgpOworICAgICAgICBzY29wZSA9IGZv
Y3VzU2NvcGVGb3Iob3duZXIpOworICAgICAgICBwcmludE5vZGUoIiAgPj4gaW4gd2hpbGU6IHNj
b3BlOiAiLCBzY29wZSA/IHNjb3BlLT5yb290Tm9kZSgpIDogMCk7CisgICAgICAgIG5vZGUgPSBm
aW5kRm9jdXNhYmxlTm9kZShkaXJlY3Rpb24sIHNjb3BlLCBvd25lciwgZXZlbnQpOworICAgICAg
ICBwcmludE5vZGUoIiAgPj4gaW4gd2hpbGU6IG5vZGU6ICIsIG5vZGUpOwogICAgIH0KLSAgICBu
b2RlID0gZmluZEZvY3VzYWJsZU5vZGVEZWNlbmRpbmdEb3duSW50b0ZyYW1lRG9jdW1lbnRPclNo
YWRvd1Jvb3QoZGlyZWN0aW9uLCBub2RlLCBldmVudCk7CisgICAgcHJpbnROb2RlKCI+Pj4gZW5k
IG9mIHdoaWxlOiBub2RlOiAiLCBub2RlKTsKKyAgICBub2RlID0gZmluZEZvY3VzYWJsZU5vZGVE
ZWNlbmRpbmdEb3duSW50b0ZyYW1lRG9jdW1lbnRPclNoYWRvd1N1YlRyZWVzKGRpcmVjdGlvbiwg
bm9kZSwgZXZlbnQpOworICAgIHByaW50Tm9kZSgiPDw8IGZpbmRGb2N1c2FibGVOb2RlRGVjZW5k
aW5nRG93bkludG9GcmFtZURvY3VtZW50T3JTaGFkb3dTdWJUcmVlczogcmVzdWx0ICIsIG5vZGUp
OwogICAgIHJldHVybiBub2RlOwogfQogCiAKIE5vZGUqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZv
Y3VzYWJsZU5vZGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBUcmVlU2NvcGUqIHNjb3BlLCBO
b2RlKiBub2RlLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICByZXR1cm4gKGRpcmVjdGlv
biA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQpCisgICAgcHJpbnROb2RlKCIgID4+IGZpbmRGb2N1
c2FibGVOb2RlOiBzY29wZSAiLCBzY29wZSA/IHNjb3BlLT5yb290Tm9kZSgpIDogMCk7CisgICAg
cHJpbnROb2RlKCIgID4+IGZpbmRGb2N1c2FibGVOb2RlOiBub2RlICIsIG5vZGUpOworICAgIAor
ICAgIC8vIHJldHVybiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCkKKyAgICAv
LyAgICAgPyBuZXh0Rm9jdXNhYmxlTm9kZShzY29wZSwgbm9kZSwgZXZlbnQpCisgICAgLy8gICAg
IDogcHJldmlvdXNGb2N1c2FibGVOb2RlKHNjb3BlLCBub2RlLCBldmVudCk7CisgICAgTm9kZSog
cmVzdWx0ID0gKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQpCiAgICAgICAgID8g
bmV4dEZvY3VzYWJsZU5vZGUoc2NvcGUsIG5vZGUsIGV2ZW50KQogICAgICAgICA6IHByZXZpb3Vz
Rm9jdXNhYmxlTm9kZShzY29wZSwgbm9kZSwgZXZlbnQpOworICAgIHByaW50Tm9kZSgiICAgIDw8
PCBmaW5kRm9jdXNhYmxlTm9kZTogcmVzdWx0ICIsIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogc3RhdGljIE5vZGUqIG5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXgoTm9kZSogc3Rh
cnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CisgICAgcHJpbnROb2Rl
KCIgICA+PiBuZXh0Tm9kZVdpdGhFeGFjdFRhYkluZGV4OiBzdGFydCIsIHN0YXJ0KTsKKyNpZm5k
ZWYgTkRFQlVHICAgIAorICAgIGZwcmludGYoc3RkZXJyLCAiICAgICh0YWJpbmRleCk6ICVkIiwg
dGFiSW5kZXgpOworI2VuZGlmICAgIAorICAgIAogICAgIC8vIFNlYXJjaCBpcyBpbmNsdXNpdmUg
b2Ygc3RhcnQKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBzdGFydDsgbm9kZTsgbm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUoKSkKLSAgICAgICAgaWYgKG5vZGUtPmlzS2V5Ym9hcmRGb2N1c2Fi
bGUoZXZlbnQpICYmIG5vZGUtPnRhYkluZGV4KCkgPT0gdGFiSW5kZXgpCisgICAgZm9yIChOb2Rl
KiBub2RlID0gc3RhcnQ7IG5vZGU7IG5vZGUgPSBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVy
c2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkobm9kZSkpIHsKKyAgICAgICAg
cHJpbnROb2RlKCIgICAgICAgPj4gbmV4dE5vZGVXaXRoRXhhY3RUYWJJbmRleDogLi4uIiwgbm9k
ZSk7CisgICAgICAgIGlmIChub2RlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBub2Rl
LT50YWJJbmRleCgpID09IHRhYkluZGV4KSB7CisgICAgICAgICAgICBwcmludE5vZGUoIiAgIDw8
IG5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXg6IGZvdW5kICIsIG5vZGUpOwogICAgICAgICAgICAg
cmV0dXJuIG5vZGU7Ci0KKyAgICAgICAgfQorICAgIH0KKyAgICBwcmludE5vZGUoIiAgIDw8IG5l
eHROb2RlV2l0aEV4YWN0VGFiSW5kZXg6IG5vdCBmb3VuZCIsIDApOwogICAgIHJldHVybiAwOwog
fQogCiBzdGF0aWMgTm9kZSogcHJldmlvdXNOb2RlV2l0aEV4YWN0VGFiSW5kZXgoTm9kZSogc3Rh
cnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgLy8gU2VhcmNo
IGlzIGluY2x1c2l2ZSBvZiBzdGFydAotICAgIGZvciAoTm9kZSogbiA9IHN0YXJ0OyBuOyBuID0g
bi0+dHJhdmVyc2VQcmV2aW91c05vZGUoKSkKLSAgICAgICAgaWYgKG4tPmlzS2V5Ym9hcmRGb2N1
c2FibGUoZXZlbnQpICYmIG4tPnRhYkluZGV4KCkgPT0gdGFiSW5kZXgpCi0gICAgICAgICAgICBy
ZXR1cm4gbjsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBzdGFydDsgbm9kZTsgbm9kZSA9IFJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVy
Qm91bmRhcnkobm9kZSkpCisgICAgICAgIGlmIChub2RlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2
ZW50KSAmJiBub2RlLT50YWJJbmRleCgpID09IHRhYkluZGV4KQorICAgICAgICAgICAgcmV0dXJu
IG5vZGU7CiAKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIE5vZGUqIG5leHROb2RlV2l0aEdy
ZWF0ZXJUYWJJbmRleChOb2RlKiBzdGFydCwgaW50IHRhYkluZGV4LCBLZXlib2FyZEV2ZW50KiBl
dmVudCkKIHsKKyAgICBwcmludE5vZGUoIiAgID4+IG5leHROb2RlV2l0aEdyZWF0ZXJUYWJJbmRl
eDogc3RhcnQiLCBzdGFydCk7CiAgICAgLy8gU2VhcmNoIGlzIGluY2x1c2l2ZSBvZiBzdGFydAog
ICAgIGludCB3aW5uaW5nVGFiSW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWF4
KCkgKyAxOwogICAgIE5vZGUqIHdpbm5lciA9IDA7CkBAIC0zODIsNiArNDQ1LDcgQEAgc3RhdGlj
IE5vZGUqIG5leHROb2RlV2l0aEdyZWF0ZXJUYWJJbmRleChOb2RlKiBzdGFydCwgaW50IHRhYklu
ZGV4LCBLZXlib2FyZEV2ZW4KICAgICAgICAgICAgIHdpbm5pbmdUYWJJbmRleCA9IG4tPnRhYklu
ZGV4KCk7CiAgICAgICAgIH0KIAorICAgIHByaW50Tm9kZSgiICAgPDwgbmV4dE5vZGVXaXRoR3Jl
YXRlclRhYkluZGV4OiB3aW5uZXIiLCB3aW5uZXIpOwogICAgIHJldHVybiB3aW5uZXI7CiB9CiAK
QEAgLTM5MCw3ICs0NTQsNyBAQCBzdGF0aWMgTm9kZSogcHJldmlvdXNOb2RlV2l0aExvd2VyVGFi
SW5kZXgoTm9kZSogc3RhcnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdgogICAgIC8vIFNlYXJj
aCBpcyBpbmNsdXNpdmUgb2Ygc3RhcnQKICAgICBpbnQgd2lubmluZ1RhYkluZGV4ID0gMDsKICAg
ICBOb2RlKiB3aW5uZXIgPSAwOwotICAgIGZvciAoTm9kZSogbiA9IHN0YXJ0OyBuOyBuID0gbi0+
dHJhdmVyc2VQcmV2aW91c05vZGUoKSkKKyAgICBmb3IgKE5vZGUqIG4gPSBzdGFydDsgbjsgbiA9
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2lu
Z1VwcGVyQm91bmRhcnkobikpCiAgICAgICAgIGlmIChuLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2
ZW50KSAmJiBuLT50YWJJbmRleCgpIDwgdGFiSW5kZXggJiYgbi0+dGFiSW5kZXgoKSA+IHdpbm5p
bmdUYWJJbmRleCkgewogICAgICAgICAgICAgd2lubmVyID0gbjsKICAgICAgICAgICAgIHdpbm5p
bmdUYWJJbmRleCA9IG4tPnRhYkluZGV4KCk7CkBAIC0zOTksMTggKzQ2MywyMSBAQCBzdGF0aWMg
Tm9kZSogcHJldmlvdXNOb2RlV2l0aExvd2VyVGFiSW5kZXgoTm9kZSogc3RhcnQsIGludCB0YWJJ
bmRleCwgS2V5Ym9hcmRFdgogICAgIHJldHVybiB3aW5uZXI7CiB9CiAKKy8vIEZJWE1FOiBEb24n
dCB1c2UgVHJlZVNjb3BlLiByZXBsYWN3IGl0IHdpdGggRm9jdXNTY29wZS4KIE5vZGUqIEZvY3Vz
Q29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZU5vZGUoVHJlZVNjb3BlKiBzY29wZSwgTm9kZSogc3Rh
cnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogeworICAgIHByaW50Tm9kZSgiICAgPj4gbmV4dEZv
Y3VzYWJsZU5vZGU6IHN0YXJ0Iiwgc3RhcnQpOwogICAgIGlmIChzdGFydCkgewogICAgICAgICAv
LyBJZiBhIG5vZGUgaXMgZXhjbHVkZWQgZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRo
ZSBuZXh0IGZvY3VzYWJsZSBub2RlIGlzIGRldGVybWluZWQgYnkgdHJlZSBvcmRlcgogICAgICAg
ICBpZiAoc3RhcnQtPnRhYkluZGV4KCkgPCAwKSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIG4g
PSBzdGFydC0+dHJhdmVyc2VOZXh0Tm9kZSgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgp
KQorICAgICAgICAgICAgZm9yIChOb2RlKiBuID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZl
cnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KHN0YXJ0KTsgbjsgbiA9IFJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJC
b3VuZGFyeShuKSkgewogICAgICAgICAgICAgICAgIGlmIChuLT5pc0tleWJvYXJkRm9jdXNhYmxl
KGV2ZW50KSAmJiBuLT50YWJJbmRleCgpID49IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gRmlyc3QgdHJ5IHRv
IGZpbmQgYSBub2RlIHdpdGggdGhlIHNhbWUgdGFiaW5kZXggYXMgc3RhcnQgdGhhdCBjb21lcyBh
ZnRlciBzdGFydCBpbiB0aGUgc2NvcGUuCi0gICAgICAgIGlmIChOb2RlKiB3aW5uZXIgPSBuZXh0
Tm9kZVdpdGhFeGFjdFRhYkluZGV4KHN0YXJ0LT50cmF2ZXJzZU5leHROb2RlKCksIHN0YXJ0LT50
YWJJbmRleCgpLCBldmVudCkpCisgICAgICAgIGlmIChOb2RlKiB3aW5uZXIgPSBuZXh0Tm9kZVdp
dGhFeGFjdFRhYkluZGV4KFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlV2l0
aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShzdGFydCksIHN0YXJ0LT50YWJJbmRleCgpLCBldmVu
dCkpCiAgICAgICAgICAgICByZXR1cm4gd2lubmVyOwogCiAgICAgICAgIGlmICghc3RhcnQtPnRh
YkluZGV4KCkpCkBAIC00MzEsMTUgKzQ5OCwyMSBAQCBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6Om5l
eHRGb2N1c2FibGVOb2RlKFRyZWVTY29wZSogc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZAog
CiBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlTm9kZShUcmVlU2NvcGUq
IHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgTm9kZSog
bGFzdDsKLSAgICBmb3IgKGxhc3QgPSBzY29wZS0+cm9vdE5vZGUoKTsgbGFzdC0+bGFzdENoaWxk
KCk7IGxhc3QgPSBsYXN0LT5sYXN0Q2hpbGQoKSkgeyB9CisgICAgcHJpbnROb2RlKCIgICA+PiBw
cmV2aW91c0ZvY3VzYWJsZU5vZGU6IHN0YXJ0Iiwgc3RhcnQpOworICAgIE5vZGUqIGxhc3QgPSBz
Y29wZS0+cm9vdE5vZGUoKTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBOb2RlKiBjaGls
ZCA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJv
dW5kYXJ5KGxhc3QpOworICAgICAgICBpZiAoIWNoaWxkKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGxhc3QgPSBjaGlsZDsKKyAgICB9CiAKICAgICAvLyBGaXJzdCB0cnkgdG8gZmluZCB0
aGUgbGFzdCBub2RlIGluIHRoZSBzY29wZSB0aGF0IGNvbWVzIGJlZm9yZSBzdGFydCBhbmQgaGFz
IHRoZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0LgogICAgIC8vIElmIHN0YXJ0IGlzIG51bGwsIGZp
bmQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgc2NvcGUgd2l0aCBhIHRhYmluZGV4IG9mIDAuCiAgICAg
Tm9kZSogc3RhcnRpbmdOb2RlOwogICAgIGludCBzdGFydGluZ1RhYkluZGV4OwogICAgIGlmIChz
dGFydCkgewotICAgICAgICBzdGFydGluZ05vZGUgPSBzdGFydC0+dHJhdmVyc2VQcmV2aW91c05v
ZGUoKTsKKyAgICAgICAgc3RhcnRpbmdOb2RlID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZl
cnNlUHJldmlvdXNOb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShzdGFydCk7CiAgICAg
ICAgIHN0YXJ0aW5nVGFiSW5kZXggPSBzdGFydC0+dGFiSW5kZXgoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBzdGFydGluZ05vZGUgPSBsYXN0OwpAQCAtNDQ4LDcgKzUyMSw3IEBAIE5vZGUqIEZv
Y3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2FibGVOb2RlKFRyZWVTY29wZSogc2NvcGUsIE5v
ZGUqIHN0YXJ0LCBLZXliCiAKICAgICAvLyBIb3dldmVyLCBpZiBhIG5vZGUgaXMgZXhjbHVkZWQg
ZnJvbSB0aGUgbm9ybWFsIHRhYmJpbmcgY3ljbGUsIHRoZSBwcmV2aW91cyBmb2N1c2FibGUgbm9k
ZSBpcyBkZXRlcm1pbmVkIGJ5IHRyZWUgb3JkZXIKICAgICBpZiAoc3RhcnRpbmdUYWJJbmRleCA8
IDApIHsKLSAgICAgICAgZm9yIChOb2RlKiBuID0gc3RhcnRpbmdOb2RlOyBuOyBuID0gbi0+dHJh
dmVyc2VQcmV2aW91c05vZGUoKSkKKyAgICAgICAgZm9yIChOb2RlKiBuID0gc3RhcnRpbmdOb2Rl
OyBuOyBuID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlV2l0aG91
dENyb3NzaW5nVXBwZXJCb3VuZGFyeShuKSkKICAgICAgICAgICAgIGlmIChuLT5pc0tleWJvYXJk
Rm9jdXNhYmxlKGV2ZW50KSAmJiBuLT50YWJJbmRleCgpID49IDApCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKaW5kZXgg
M2I1NjM3N2JkNDMxM2M2NTljNWFkNjVmMTBiODRmZGU2Y2ZlNWUzMC4uMmNjNTFlNjNjM2I3NTM1
Njk2MzY1NzNjODk5ODgwZWM3ZGFlMWIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5oCkBAIC00Myw2ICs0MywyNCBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNz
IFRyZWVTY29wZTsKIAorCisvLyBGSVhNRTogRG9uJ3QgdXNlIFRyZWVTY29wZSwgd2hpY2ggaXMg
bm90IHN1aXRhYmxlIGFueW1vcmUuIFVzZSBGb2N1c1Njb3BlLgorLy8gY2xhc3MgRm9jdXNOYXZp
Z2F0aW9uU2NvcGUgeworLy8gcHVibGljOgorLy8gICAgIEZvY3VzTmF2aWdhdGlvblNjb3BlKiBv
dXRlckZvY3VzTmF2aWdhdGlvblNjb3BlKCkgY29uc3QgCisvLyAgICAgeworLy8gICAgICAgICBO
b2RlKiBub2RlID0gbV9yb290Tm9kZTsKKy8vICAgICB9CisgICAgCisvLyBwcml2YXRlOgorLy8g
ICAgIE5vZGUqIG1fcm9vdE5vZGU7CisvLyB9OworCisKKy8vIEZvcmN1c0hvc3QuCisvLyBTaGFk
b3dIb3N0CisvLyBpRnJhbWVPd25lcgorCiBjbGFzcyBGb2N1c0NvbnRyb2xsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEZvY3VzQ29udHJvbGxlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgpAQCAtNzQsOCArOTIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgYWR2YW5j
ZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCopOwogICAg
IGJvb2wgYWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKEZvY3VzRGlyZWN0aW9uLCBLZXlib2Fy
ZEV2ZW50KiwgYm9vbCBpbml0aWFsRm9jdXMpOwogCi0gICAgTm9kZSogZmluZEZvY3VzYWJsZU5v
ZGVBY3Jvc3NUcmVlU2NvcGUoRm9jdXNEaXJlY3Rpb24sIFRyZWVTY29wZSogc3RhcnRTY29wZSwg
Tm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqKTsKLSAgICBOb2RlKiBmaW5kRm9jdXNhYmxlTm9k
ZURlY2VuZGluZ0Rvd25JbnRvRnJhbWVEb2N1bWVudE9yU2hhZG93Um9vdChGb2N1c0RpcmVjdGlv
biwgTm9kZSosIEtleWJvYXJkRXZlbnQqKTsKKyAgICBOb2RlKiBmaW5kRm9jdXNhYmxlTm9kZUFj
cm9zc0ZvY3VzU2NvcGUoRm9jdXNEaXJlY3Rpb24sIFRyZWVTY29wZSogc3RhcnRTY29wZSwgTm9k
ZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqKTsKKyAgICBOb2RlKiBmaW5kRm9jdXNhYmxlTm9kZURl
Y2VuZGluZ0Rvd25JbnRvRnJhbWVEb2N1bWVudE9yU2hhZG93U3ViVHJlZXMoRm9jdXNEaXJlY3Rp
b24sIE5vZGUqLCBLZXlib2FyZEV2ZW50Kik7CiAKICAgICAvLyBTZWFyY2hlcyB0aHJvdWdoIHRo
ZSBnaXZlbiB0cmVlIHNjb3BlLCBzdGFydGluZyBmcm9tIHN0YXJ0IG5vZGUsIGZvciB0aGUgbmV4
dC9wcmV2aW91cyBzZWxlY3RhYmxlIGVsZW1lbnQgdGhhdCBjb21lcyBhZnRlci9iZWZvcmUgc3Rh
cnQgbm9kZS4KICAgICAvLyBUaGUgb3JkZXIgZm9sbG93ZWQgaXMgYXMgc3BlY2lmaWVkIGluIHNl
Y3Rpb24gMTcuMTEuMSBvZiB0aGUgSFRNTDQgc3BlYywgd2hpY2ggaXMgZWxlbWVudHMgd2l0aCB0
YWIgaW5kZXhlcwpAQCAtMTAwLDcgKzExOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRm9j
dXNlZDsKICAgICBib29sIG1faXNDaGFuZ2luZ0ZvY3VzZWRGcmFtZTsKICAgICBib29sIG1fY29u
dGFpbmluZ1dpbmRvd0lzVmlzaWJsZTsKLQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDMyM2U1YWE4NGQ2ZDY5YTI3MjAy
NzEwZmExNGY2NjIzN2JlNjA5ZjEuLjgzOGVjZWNlNjk2M2U3MDExN2JmNTNkNTgxM2I1Mjc0MGVm
YmZiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ2LDYgKzQ2LDcg
QEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlaWZpZWRUcmVlVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xNzQsNiArMTc1LDU0IEBAIGJvb2wgSW50ZXJuYWxz
OjphdHRhY2hlZChOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gbm9k
ZS0+YXR0YWNoZWQoKTsKIH0KIAorLy8gRklYTUU6IE1lcmdlIHRoaXMgdG8gTm9kZTo6c2hvd05v
ZGUuCitzdGF0aWMgdm9pZCBhcHBlbmRBdHRyaWJ1dGVEZXNjKGNvbnN0IE5vZGUqIG5vZGUsIFN0
cmluZyYgc3RyaW5nLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBjaGFyKiBhdHRy
RGVzYykKK3sKKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgIFN0cmlu
ZyBhdHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCo+KG5vZGUpLT5nZXRBdHRyaWJ1dGUo
bmFtZSk7CisgICAgICAgIGlmICghYXR0ci5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHN0cmlu
ZyArPSBhdHRyRGVzYzsKKyAgICAgICAgICAgIHN0cmluZyArPSBhdHRyOworICAgICAgICB9Cisg
ICAgfQorfQorCitzdGF0aWMgU3RyaW5nIGR1bXBOb2RlKGNvbnN0IE5vZGUqIG5vZGUpIAorewor
ICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgU3RyaW5nIHZhbHVlID0gbm9k
ZS0+bm9kZVZhbHVlKCk7CisgICAgICAgIHZhbHVlLnJlcGxhY2UoJ1xcJywgIlxcXFwiKTsKKyAg
ICAgICAgdmFsdWUucmVwbGFjZSgnXG4nLCAiXFxuIik7CisgICAgICAgIFRleHRTdHJlYW0gdGV4
dFN0cmVhbTsKKyAgICAgICAgdGV4dFN0cmVhbSA8PCBub2RlLT5ub2RlTmFtZSgpIDw8ICJcdFwi
IiA8PCB2YWx1ZSA8PCAiXCIiOworICAgICAgICByZXR1cm4gdGV4dFN0cmVhbS5yZWxlYXNlKCk7
CisgICAgfQorICAgIFN0cmluZyBhdHRycyA9ICIiOworICAgIGFwcGVuZEF0dHJpYnV0ZURlc2Mo
bm9kZSwgYXR0cnMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiIENMQVNTPSIpOworICAgIFRleHRT
dHJlYW0gdGV4dFN0cmVhbTsKKyAgICB0ZXh0U3RyZWFtIDw8IG5vZGUtPm5vZGVOYW1lKCkgPDwg
Ilx0IiA8PCBhdHRyczsKKyAgICByZXR1cm4gdGV4dFN0cmVhbS5yZWxlYXNlKCk7Cit9CisKK3N0
YXRpYyB2b2lkIGR1bXBSZWlmaWVkVHJlZShOb2RlKiBub2RlLCBTdHJpbmcmIG91dHB1dCwgU3Ry
aW5nIGluZGVudCkKK3sKKyAgICBvdXRwdXQgKz0gaW5kZW50ICsgZHVtcE5vZGUobm9kZSkgKyAi
XG4iOworICAgIGZvciAoTm9kZSogY2hpbGQgPSBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RD
aGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6Om5leHRTaWJs
aW5nKGNoaWxkKSkKKyAgICAgICAgZHVtcFJlaWZpZWRUcmVlKGNoaWxkLCBvdXRwdXQsIGluZGVu
dCArICJcdCIpOworfQorCitTdHJpbmcgSW50ZXJuYWxzOjpkdW1wUmVpZmllZFRyZWVGb3IoTm9k
ZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
fQorICAgIFN0cmluZyBvdXRwdXQ7CisgICAgU3RyaW5nIHN0YXJ0aW5nSW5kZW50OworICAgIGR1
bXBSZWlmaWVkVHJlZShub2RlLCBvdXRwdXQsIHN0YXJ0aW5nSW5kZW50KTsKKyAgICByZXR1cm4g
b3V0cHV0OworfQorCiBTdHJpbmcgSW50ZXJuYWxzOjplbGVtZW50UmVuZGVyVHJlZUFzVGV4dChF
bGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWVsZW1lbnQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGExM2RmYjMwODI1ODNlNWQyMTcy
ZTMwMWRkMDI2ZGZhMjVjZWEzNzkuLjgwMzdjNmE0OGY3MTJjZWFiNTQxNzA3MmI2NWM2NTZhZjRl
NjIxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNzksOSArNzksOSBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVDb250ZW50RWxlbWVudChEb2N1
bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZEluU2hh
ZG93Um9vdChOb2RlKiBzaGFkb3dSb290LCBjb25zdCBTdHJpbmcmIGlkLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgYm9vbCBpc1ZhbGlkQ29udGVudFNlbGVjdChFbGVtZW50KiBjb250ZW50RWxlbWVu
dCwgRXhjZXB0aW9uQ29kZSYpOwotCiAgICAgYm9vbCBhdHRhY2hlZChOb2RlKiwgRXhjZXB0aW9u
Q29kZSYpOwotCisgICAgU3RyaW5nIGR1bXBSZWlmaWVkVHJlZUZvcihOb2RlKiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKICAgICB2b2lkIHNlbGVjdENv
bG9ySW5Db2xvckNob29zZXIoRWxlbWVudCosIGNvbnN0IFN0cmluZyYgY29sb3JWYWx1ZSk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAzOTQzNzZlNzljYzVk
M2MwYzdmZTExZTRiNjQ3NzhhNTY0Mjg4ZGFjLi44OWQ3ODY2ZWFkYzAzZjQ5MDNmNjQxNDMwYzA0
YzQ5MWYxMTA3ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01NSw2
ICs1NSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGNyZWF0ZUNvbnRlbnRF
bGVtZW50KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgRWxlbWVudCBnZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChpbiBOb2RlIHNoYWRvd1Jvb3Qs
IGluIERPTVN0cmluZyBpZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGJvb2xlYW4g
aXNWYWxpZENvbnRlbnRTZWxlY3QoaW4gRWxlbWVudCBjb250ZW50RWxlbWVudCkgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIERPTVN0cmluZyBkdW1wUmVpZmllZFRyZWVGb3IoaW4gTm9k
ZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICBib29sZWFuIGF0dGFjaGVk
KGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYzQzNjNjNzkx
Y2M4MzdhNjhmODQ4MTlkNjViZTRiMmI0ZDhkODdiLi4yZTRmN2MxMDI0MjkzMTYwYTYzZjFlMGQ0
ZWE0MzQyMmYzMmM1Mzg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDMtMDYgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBBZGQg
UmVpZmllZCBET00gVHJlZSB0cmF2ZXJzYWwgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93
L215LXRlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
bXktdGVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10
cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3No
YWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9yZXNvdXJjZXMvY3JlYXRlLWRvbS5qczoKKyAgICAgICAgKGdldEVsZW1lbnRJ
blNoYWRvd1RyZWUpOgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnkt
ZXZlbnRzLXdpdGgtbm9kZS1kaXN0cmlidXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWJvdW5kYXJ5LWV2ZW50cy13aXRoLW5vZGUtZGlz
dHJpYnV0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAzLTA1ICBBZGFtIEtsZWluICA8YWRhbWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVzZSBhIHByb3BlciBjbG9zaW5nIHRhZyBmb3Igc2hh
ZG93IGVsZW1lbnQgbGF5b3V0IHRlc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9teS10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9teS10ZXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWIzOTY0MDNjZTRjNzUwNGE5M2Ri
ZWEwZDk0Y2Y4NGQyNmI3OTZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L215LXRlc3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRv
IGVuc3VyZSB0aGF0IHNoYWRvdyBET00gYm91bmRhcnkgaXMgbm90IGNyb3NzZWQgZHVyaW5nIGV2
ZW50IHByb3BhZ2F0aW9uLiBDYW4gb25seSBydW4gd2l0aGluIERSVC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKKworVGFyZ2V0IGlzIGFuIGFuY2VzdG9yIG9mIHJlbGF0ZWRUYXJn
ZXQuCitNb3ZpbmcgbW91c2UgZnJvbSBzaGFkb3dEL3NoYWRvd0Yvc2hhZG93Ry9kaXZJIHRvIHNo
YWRvd0QvZGl2RQorUEFTUyBkaXNwYXRjaGVkRXZlbnQoIm1vdXNlb3ZlciIpIGlzIFsiZGl2RSg8
LXNoYWRvd0YpKEBkaXZFKSJdCitQQVNTIGRpc3BhdGNoZWRFdmVudCgibW91c2VvdXQiKSBpcyBb
ImRpdkkoPC1kaXZFKShAZGl2SSkiLCAic2hhZG93Ryg8LWRpdkUpKEBzaGFkb3dHKSIsICJzaGFk
b3dGKDwtZGl2RSkoQHNoYWRvd0YpIiwgInNoYWRvd0YoPC1kaXZFKShAZGl2RSkiXQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9teS10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbXktdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhOThkNGVkMmNkNzYwMzlm
MWQzMDQ1MmQ2NDJkOTY2ZGUyNTc0OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvbXktdGVzdC5odG1sCkBAIC0wLDAgKzEsMTQ2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY3JlYXRlLWRv
bS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdG8gZW5zdXJlIHRoYXQgc2hhZG93IERPTSBib3Vu
ZGFyeSBpcyBub3QgY3Jvc3NlZCBkdXJpbmcgZXZlbnQgcHJvcGFnYXRpb24uIENhbiBvbmx5IHJ1
biB3aXRoaW4gRFJULiIpOworCitmdW5jdGlvbiBtb3ZlTW91c2VPdmVyKGVsZW1lbnQpCit7Cisg
ICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIgfHwgIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
IHJldHVybjsKKworICAgIHZhciBkZWZhdWx0UGFkZGluZ1NpemUgPSAyMDsKKyAgICB2YXIgeCA9
IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciB5
OworICAgIGlmIChlbGVtZW50Lmhhc0NoaWxkTm9kZXMoKSB8fCB3aW5kb3cuaW50ZXJuYWxzLnNo
YWRvd1Jvb3QoZWxlbWVudCkpCisgICAgICAgIHkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGRlZmF1
bHRQYWRkaW5nU2l6ZTsKKyAgICBlbHNlCisgICAgICAgIHkgPSBlbGVtZW50Lm9mZnNldFRvcCAr
IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4
LCB5KTsKK30KKwordmFyIGV2ZW50UmVjb3JkcyA9IHt9OworCitmdW5jdGlvbiBjbGVhckV2ZW50
UmVjb3JkcygpCit7CisgICAgZXZlbnRSZWNvcmRzID0ge307Cit9CisKK2Z1bmN0aW9uIGRpc3Bh
dGNoZWRFdmVudChldmVudFR5cGUpCit7CisgICAgdmFyIGV2ZW50cyA9IGV2ZW50UmVjb3Jkc1tl
dmVudFR5cGVdOworICAgIGlmICghZXZlbnRzKQorICAgICAgICByZXR1cm4gW107CisgICAgcmV0
dXJuIGV2ZW50czsKK30KKworZnVuY3Rpb24gcmVjb3JkRXZlbnQoZXZlbnQpCit7CisgICAgdmFy
IGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUKKyAgICBpZiAoIWV2ZW50UmVjb3Jkc1tldmVudFR5cGVd
KSB7CisgICAgICAgIGV2ZW50UmVjb3Jkc1tldmVudFR5cGVdID0gW10KKyAgICB9CisgICAgLy8g
UmVjb3JkcyBlYWNoIGV2ZW50IGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0IHBlciBldmVudCB0eXBl
OgorICAgIC8vICAgZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV0gPSBbJ3RhcmdldC5pZCg8LXJlbGF0
ZWRUYXJnZXQuaWQpKEBjdXJyZW50VGFyZ2V0LmlkKScsLCxdCisgICAgLy8gICAqIFJlbGF0ZWRU
YXJnZXQgYW5kIGN1cnJlbnRUYXJnZXQgbWF5IGJlIG9taXR0ZWQgaWYgdGhleSBhcmUgbm90IGRl
ZmluZWQuCisgICAgLy8gQSBuZXcgZXZlbnQgaXMgcHVzaGVkIGJhY2sgdG8gdGhlIGFycmF5IG9m
IGl0cyBldmVudCB0eXBlLgorICAgIHZhciBldmVudFN0cmluZyA9ICcnOworICAgIGV2ZW50U3Ry
aW5nICs9IGV2ZW50LnRhcmdldC5pZDsKKyAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCkKKyAg
ICAgICAgZXZlbnRTdHJpbmcgKz0gJyg8LScgKyBldmVudC5yZWxhdGVkVGFyZ2V0LmlkICsgJykn
OworICAgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0KQorICAgICAgICBldmVudFN0cmluZyArPSAn
KEAnICsgZXZlbnQuY3VycmVudFRhcmdldC5pZCArICcpJzsKKyAgICBpZiAoZXZlbnQuZXZlbnRQ
aGFzZSA9PSAxKQorICAgICAgICBldmVudFN0cmluZyArPSAnKGNhcHR1cmluZyBwaGFzZSknOwor
ICAgIGlmIChldmVudC50YXJnZXQgJiYgZXZlbnQuY3VycmVudFRhcmdldCAmJiBldmVudC50YXJn
ZXQuaWQgPT0gZXZlbnQuY3VycmVudFRhcmdldC5pZCkKKyAgICAgICAgc2hvdWxkQmUoImV2ZW50
LmV2ZW50UGhhc2UiLCAiMiIsIHRydWUpOworICAgIGV2ZW50UmVjb3Jkc1tldmVudFR5cGVdLnB1
c2goZXZlbnRTdHJpbmcpOworfQorCitmdW5jdGlvbiBnZXRFbGVtZW50SW5TaGFkb3cocGF0aCkK
K3sKKyAgICB2YXIgaWRzID0gcGF0aC5zcGxpdCgnLycpOworICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRzWzBdKTsKKyAgICBmb3IgKHZhciBpID0gMTsgZWxlbWVu
dCAhPSBudWxsICYmIGkgPCBpZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHNoYWRvd1Jv
b3QgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChlbGVtZW50KTsKKyAgICAgICAgZWxlbWVudCA9IGlu
dGVybmFscy5nZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChzaGFkb3dSb290LCBpZHNbaV0pOwor
ICAgIH0KKyAgICByZXR1cm4gZWxlbWVudDsKK30KKworZnVuY3Rpb24gcHJlcGFyZURPTVRyZWUo
cGFyZW50KQoreworICAgIHBhcmVudC5hcHBlbmRDaGlsZCgKKyAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2RpdkEnLCAnc3R5bGUnOiAncGFkZGluZy10b3A6IDQwcHgnfSwKKyAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkaXZCJywgJ3N0eWxlJzogJ3dp
ZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnLCAndGFiaW5kZXgnOiAwfSksCisgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZGl2QycsICdzdHlsZSc6ICd3aWR0aDogNDBw
eDsgaGVpZ2h0OiA0MHB4JywgJ3RhYmluZGV4JzogMH0pLAorICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ3NoYWRvd0QnLCAnc3R5bGUnOiAncGFkZGluZy10b3A6IDQw
cHgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZGl2
RScsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDogNDBweCcsICd0aXRsZSc6ICdkdW1wJ30sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsn
aWQnOiAnc2hhZG93RicsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDogNDBweCd9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdzaGFkb3dHJywgJ3N0eWxlJzogJ3BhZGRpbmct
dG9wOiA0MHB4J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkaXZIJywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWln
aHQ6IDQwcHgnLCAndGFiaW5kZXgnOiAwfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2RpdkknLCAnc3R5bGUnOiAnd2lkdGg6IDQwcHg7IGhlaWdodDogNDBweCcsICd0
YWJpbmRleCc6IDB9KSkpKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnZGl2SicsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDogNDBweCd9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ3NoYWRvd0snLCAnc3R5bGUnOiAncGFkZGluZy10b3A6IDQwcHgnfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVT
aGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZGl2TCcsICdzdHlsZSc6ICd3aWR0
aDogNDBweDsgaGVpZ2h0OiA0MHB4JywgJ3RhYmluZGV4JzogMH0pKSkpKSkpKTsKKworICAgIHZh
ciBpZHMgPSBbJ2RpdkEnLCAnZGl2QicsICdkaXZDJywKKyAgICAgICAgICAgICAgICdzaGFkb3dE
JywgJ3NoYWRvd0QvZGl2RScsICdzaGFkb3dEL3NoYWRvd0YnLCAnc2hhZG93RC9zaGFkb3dGL3No
YWRvd0cnLAorICAgICAgICAgICAgICAgJ3NoYWRvd0Qvc2hhZG93Ri9zaGFkb3dHL2RpdkgnLCAn
c2hhZG93RC9zaGFkb3dGL3NoYWRvd0cvZGl2SScsCisgICAgICAgICAgICAgICAnc2hhZG93RC9k
aXZKJywgJ3NoYWRvd0Qvc2hhZG93SycsICdzaGFkb3dEL3NoYWRvd0svZGl2TCddOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBlbGVtZW50
ID0gZ2V0RWxlbWVudEluU2hhZG93KGlkc1tpXSk7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcignbW91c2VvdmVyJywgcmVjb3JkRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIHJlY29yZEV2ZW50LCBmYWxzZSk7CisgICAg
ICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIHJlY29yZEV2ZW50LCBmYWxz
ZSk7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCByZWNvcmRF
dmVudCwgZmFsc2UpOworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywg
cmVjb3JkRXZlbnQsIHRydWUpOyAgLy8gY2FwdHVyaW5nIHBoYXNlCisgICAgICAgIGVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHJlY29yZEV2ZW50LCB0cnVlKTsgIC8vIGNhcHR1cmlu
ZyBwaGFzZQorICAgIH0KK30KKworZnVuY3Rpb24gbW92ZU1vdXNlKG9sZEVsZW1lbnRJZCwgbmV3
RWxlbWVudElkLCBtZXNzYWdlKQoreworICAgIGRlYnVnKCdcbicgKyBtZXNzYWdlICsgJ1xuJyAr
ICdNb3ZpbmcgbW91c2UgZnJvbSAnICsgb2xkRWxlbWVudElkICsgJyB0byAnICsgbmV3RWxlbWVu
dElkKTsKKyAgICBtb3ZlTW91c2VPdmVyKGdldEVsZW1lbnRJblNoYWRvdyhvbGRFbGVtZW50SWQp
KTsKKyAgICBjbGVhckV2ZW50UmVjb3JkcygpOworICAgIG1vdmVNb3VzZU92ZXIoZ2V0RWxlbWVu
dEluU2hhZG93KG5ld0VsZW1lbnRJZCkpOworfQorCitmdW5jdGlvbiBtb3ZlRm9jdXMob2xkRWxl
bWVudElkLCBuZXdFbGVtZW50SWQsIG1lc3NhZ2UpCit7CisgICAgZGVidWcoJ1xuJyArIG1lc3Nh
Z2UgKyAnXG4nICsgJ01vdmluZyBmb2N1cyBmcm9tICcgKyBvbGRFbGVtZW50SWQgKyAnIHRvICcg
KyBuZXdFbGVtZW50SWQpOworICAgIGdldEVsZW1lbnRJblNoYWRvdyhvbGRFbGVtZW50SWQpLmZv
Y3VzKCk7CisgICAgY2xlYXJFdmVudFJlY29yZHMoKTsKKyAgICBnZXRFbGVtZW50SW5TaGFkb3co
bmV3RWxlbWVudElkKS5mb2N1cygpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgcHJlcGFyZURPTVRyZWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NhbmRib3gnKSk7CisKKyAgICAvLyBUZXN0IGZvciBtb3VzZW92ZXIvbW91c2VvdXQgZXZl
bnRzLgorICAgIG1vdmVNb3VzZSgnc2hhZG93RC9zaGFkb3dGL3NoYWRvd0cvZGl2SScsICdzaGFk
b3dEL2RpdkUnLAorICAgICAgICAgICAgICAnVGFyZ2V0IGlzIGFuIGFuY2VzdG9yIG9mIHJlbGF0
ZWRUYXJnZXQuJyk7CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgibW91c2VvdmVyIikn
LCAnWyJkaXZFKDwtc2hhZG93RikoQGRpdkUpIl0nKTsKKyAgICBzaG91bGRCZSgnZGlzcGF0Y2hl
ZEV2ZW50KCJtb3VzZW91dCIpJywgJ1siZGl2SSg8LWRpdkUpKEBkaXZJKSIsICJzaGFkb3dHKDwt
ZGl2RSkoQHNoYWRvd0cpIiwgInNoYWRvd0YoPC1kaXZFKShAc2hhZG93RikiLCAic2hhZG93Rig8
LWRpdkUpKEBkaXZFKSJdJyk7Cit9CisKK3Rlc3QoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQt
dHJlZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MmE1M2Vl
ZmY3ZGFiODQ5MWZhM2YyZGU0YzVjNmUwNzY1OGQ3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw2MSBAQAorVGVzdHMgZm9yIFNoYWRvd1Jvb3QgSlMgQVBJcy4gQ2FuIG9u
bHkgcnVuIHdpdGhpbiBEUlQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NoYWRv
d1Jvb3Qgc2hvdWxkIGJlIHVzZWQuCitESVYJIENMQVNTPWEKKwlESVYJIENMQVNTPWIKKworPGNv
bnRlbnQ+IGVsZW1lbnQgc2hvdWxkIHNlbGVjdCBsaWdodCBjaGlsZHJlbgorRElWCSBDTEFTUz1h
CisJRElWCSBDTEFTUz1iCisJRElWCSBDTEFTUz1jCisJRElWCSBDTEFTUz1kCisKK3Rlc3QgZm9y
IDxjb250ZW50PiBlbGVtZW50IHNlbGVjdG9yLgorRElWCSBDTEFTUz1hCisJRElWCSBDTEFTUz1i
CisJRElWCSBDTEFTUz1kCisKK0xpZ2h0IGNoaWxkcmVuIHNob3VsZCBiZSBzZWxlY3RlZCBvbmx5
IGF0IG9uZS4KK0RJVgkgQ0xBU1M9YQorCURJVgkgQ0xBU1M9YgorCURJVgkgQ0xBU1M9ZAorCURJ
VgkgQ0xBU1M9YworCURJVgkgQ0xBU1M9ZQorCis8Y29udGVudD4gZWxlbWVudCBjYW4gaGF2ZSBm
YWxsYmFjayBlbGVtZW50cy4KK0RJVgkgQ0xBU1M9YQorCURJVgkgQ0xBU1M9YgorCURJVgkgQ0xB
U1M9ZjEKKwlESVYJIENMQVNTPWYyCisKK0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBub3QgYmUg
dXNlZCBpZiA8Y29udGVudD4gZWxlbWVudCBzZWxlY3RzIGFueSBlbGVtZW50cy4KK0RJVgkgQ0xB
U1M9YQorCURJVgkgQ0xBU1M9YgorCURJVgkgQ0xBU1M9YworCitOZXN0ZWQgU2hhZG93Um9vdHMK
K0RJVgkgQ0xBU1M9YQorCURJVgkgQ0xBU1M9YgorCQlESVYJIENMQVNTPWMKKwkJRElWCSBDTEFT
Uz1lCisJCURJVgkgQ0xBU1M9ZAorCURJVgkgQ0xBU1M9ZgorCURJVgkgQ0xBU1M9aAorCURJVgkg
Q0xBU1M9aQorCURJVgkgQ0xBU1M9ZworCitNdWx0aXBsZSBTaGFkb3dSb290cworRElWCSBDTEFT
Uz1hCisJRElWCSBDTEFTUz1kCisJRElWCSBDTEFTUz1iCisJRElWCSBDTEFTUz1mCisJRElWCSBD
TEFTUz1jCisJRElWCSBDTEFTUz1lCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWIyY2ViMTIxMjZm
MTM2Zjg0ZWM1ZDIzYjY0NzdhMWFiZWVhZmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApAQCAtMCwwICsx
LDEwNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2NyZWF0ZS1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgZm9yIFNo
YWRvd1Jvb3QgSlMgQVBJcy4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQiKTsKKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7CisKK2Z1bmN0aW9uIGR1bXBUcmVl
KGNvbW1lbnQsIGVsZW1lbnQpCit7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVt
ZW50KTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICAgICAgZGVidWcoZXNjYXBlSFRNTChjb21tZW50KSk7CisgICAgICAgIGRl
YnVnKHdpbmRvdy5pbnRlcm5hbHMuZHVtcFJlaWZpZWRUcmVlRm9yKGVsZW1lbnQpKTsKKyAgICB9
Cit9CisKK2R1bXBUcmVlKCdTaGFkb3dSb290IHNob3VsZCBiZSB1c2VkLicsCisgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYSd9LAorICAgICAgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2InfSkpLAorICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdjJ30pKSk7CisKK2R1bXBUcmVl
KCc8Y29udGVudD4gZWxlbWVudCBzaG91bGQgc2VsZWN0IGxpZ2h0IGNoaWxkcmVuJywKKyAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdhJ30sCisgICAgICAgICAgICAgICAgICAg
Y3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYid9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYyd9KSwKKyAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZCd9KSkpOworCitkdW1wVHJlZSgn
dGVzdCBmb3IgPGNvbnRlbnQ+IGVsZW1lbnQgc2VsZWN0b3IuJywKKyAgICAgICAgIGNyZWF0ZURP
TSgnZGl2JywgeydjbGFzcyc6ICdhJ30sCisgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5kJ30pKSwKKyAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYyd9KSwKKyAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZCd9KSwKKyAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZSd9KSkpOworCitkdW1wVHJl
ZSgnTGlnaHQgY2hpbGRyZW4gc2hvdWxkIGJlIHNlbGVjdGVkIG9ubHkgYXQgb25lLicsCisgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYSd9LAorICAgICAgICAgICAgICAgICAg
IGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2InfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6
ICcuZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcpKSwKKyAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYyd9
KSwKKyAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZCd9KSwK
KyAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZSd9KSkpOwor
CitkdW1wVHJlZSgnPGNvbnRlbnQ+IGVsZW1lbnQgY2FuIGhhdmUgZmFsbGJhY2sgZWxlbWVudHMu
JywKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYSd9LAorICAgICAgICAgICAgICBj
cmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdiJ30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy56J30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydj
bGFzcyc6ICdmMSd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2NsYXNzJzogJ2YyJ30pKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydjbGFzcyc6ICdjJ30pKSk7CisKK2R1bXBUcmVlKCdGYWxsYmFjayBlbGVtZW50cyBz
aG91bGQgbm90IGJlIHVzZWQgaWYgPGNvbnRlbnQ+IGVsZW1lbnQgc2VsZWN0cyBhbnkgZWxlbWVu
dHMuJywKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdiJ30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5j
J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydjbGFzcyc6ICdmMSd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2YyJ30pKSksCisgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2JywgeydjbGFzcyc6ICdjJ30pKSk7CisKK2R1bXBUcmVlKCdOZXN0ZWQgU2hhZG93Um9v
dHMnLAorICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2EnfSwKKyAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdi
J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYyd9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2NsYXNzJzogJ2QnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdlJ30pKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdmJ30pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnZyd9
KSksCisgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2gnfSks
CisgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2knfSkpKTsK
KworZHVtcFRyZWUoJ011bHRpcGxlIFNoYWRvd1Jvb3RzJywKKyAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydjbGFzcyc6ICdhJ30sCisgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9v
dChjcmVhdGVET00oJ2RpdicsIHsnY2xhc3MnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2MnfSkpLAorICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2QnfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2UnfSkp
LAorICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6ICdmJ30pKSk7
CisKKy8vIEZJWE1FOiBBZGQgbW9yZSB0ZXN0cy4KKworLy8gRklYTUU6IE1vcmUgcm9idXN0IHdh
eSB0byByZXNldCBmbGFnLgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgd2luZG93LmludGVy
bmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7CisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3Jlc291cmNlcy9jcmVhdGUtZG9tLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3Jlc291cmNlcy9jcmVhdGUtZG9tLmpzCmluZGV4IDcyY2EzZGE0ZmU4ZmVmYWUwZTgyMjgz
M2Y4NjRhYTc0ZmM5ODhhZWUuLjZjOWY4MDA1NTM5NDE0YWVjYTU1NjZlOWY4YTc2MmM1NmYwNTli
N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMvY3Jl
YXRlLWRvbS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL2Ny
ZWF0ZS1kb20uanMKQEAgLTEsMyArMSw1IEBACisvLyBGSVhNRTogUmVuYW1lIHRoaXMgZmlsZSB0
byBzaGFkb3ctZG9tLXV0aWwuanMKKwogZnVuY3Rpb24gY3JlYXRlU2hhZG93Um9vdCgpCiB7CiAg
ICAgcmV0dXJuIHsnaXNTaGFkb3dSb290JzogdHJ1ZSwKQEAgLTI2LDMgKzI4LDIyIEBAIGZ1bmN0
aW9uIGNyZWF0ZURPTSh0YWdOYW1lLCBhdHRyaWJ1dGVzKQogICAgIH0KICAgICByZXR1cm4gZWxl
bWVudDsKIH0KKworZnVuY3Rpb24gZ2V0RWxlbWVudEluU2hhZG93VHJlZShwYXRoKQoreworICAg
IHZhciBpZHMgPSBwYXRoLnNwbGl0KCcvJyk7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChpZHNbMF0pOworICAgIGZvciAodmFyIGkgPSAxOyBlbGVtZW50ICE9IG51
bGwgJiYgaSA8IGlkcy5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoaWRzW2ldID09ICcnKSB7
CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZWxlbWVudCkpCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGludGVybmFscy5zaGFkb3dSb290KGVsZW1lbnQpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBpbnRlcm5hbHMueW91bmdlclNo
YWRvd1Jvb3QoZWxlbWVudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXIgc2hh
ZG93Um9vdCA9IGludGVybmFscy5vbGRlc3RTaGFkb3dSb290KGVsZW1lbnQpOworICAgICAgICAg
ICAgZWxlbWVudCA9IGludGVybmFscy5nZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChzaGFkb3dS
b290LCBpZHNbaV0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBlbGVtZW50OworfQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWJvdW5kYXJ5
LWV2ZW50cy13aXRoLW5vZGUtZGlzdHJpYnV0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLXdpdGgtbm9kZS1kaXN0cmli
dXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNTgzOTVjM2NiYjE5N2RjOWY4NjJhNmVk
MGMyODU2YmM2ZjM0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWJvdW5kYXJ5LWV2ZW50cy13aXRoLW5vZGUtZGlzdHJpYnV0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0byBlbnN1cmUgdGhhdCBzaGFkb3cgRE9N
IGJvdW5kYXJ5IGlzIG5vdCBjcm9zc2VkIGR1cmluZyBldmVudCBwcm9wYWdhdGlvbi4gQ2FuIG9u
bHkgcnVuIHdpdGhpbiBEUlQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK01v
dmUgbW91c2UgZnJvbSBhIG5vZGUgdG8gaXRzIHNpYmxpbmcgbm9kZS4gQWxsIG5vZGVzIGFyZSBv
dXRzaWRlIG9mIHNoYWRvdyBib3VuZGFyeS4KK01vdmluZyBtb3VzZSBmcm9tIGxpZ2h0Q2hpbGRE
IHRvIGhvc3RCCitQQVNTIGRpc3BhdGNoZWRFdmVudCgibW91c2VvdmVyIikgaXMgWyJob3N0Qig8
LWxpZ2h0Q2hpbGREKShAaG9zdEIpIiwgImhvc3RCKDwtbGlnaHRDaGlsZEQpKEBkaXZBKSJdCitQ
QVNTIGRpc3BhdGNoZWRFdmVudCgibW91c2VvdXQiKSBpcyBbImxpZ2h0Q2hpbGREKDwtaG9zdEIp
KEBsaWdodENoaWxkRCkiLCAibGlnaHRDaGlsZEQoPC1ob3N0QikoQGNvbnRlbnRDKSJdCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMtd2l0
aC1ub2RlLWRpc3RyaWJ1dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1ib3VuZGFyeS1ldmVudHMtd2l0aC1ub2RlLWRpc3RyaWJ1dGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY1NzZlYWRjOGEwYjg4MDI4NWJjYjE2YmMzN2FmNjI1YWUwNmQwNmIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWJvdW5kYXJ5LWV2ZW50
cy13aXRoLW5vZGUtZGlzdHJpYnV0aW9uLmh0bWwKQEAgLTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jcmVhdGUt
ZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0byBlbnN1cmUgdGhhdCBzaGFkb3cgRE9NIGJv
dW5kYXJ5IGlzIG5vdCBjcm9zc2VkIGR1cmluZyBldmVudCBwcm9wYWdhdGlvbi4gQ2FuIG9ubHkg
cnVuIHdpdGhpbiBEUlQuIik7CisKKy8vIEZJWE1FOiBNYWtlIGEgc2VwYXJhdGUgdXRpbGl0eSBq
cyBmaWxlIGFuZCBzaGFyZSBpdC4KK2Z1bmN0aW9uIG1vdmVNb3VzZU92ZXIoZWxlbWVudCkKK3sK
KyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlciB8fCAhd2luZG93LmludGVybmFscykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdmFyIGRlZmF1bHRQYWRkaW5nU2l6ZSA9IDIwOworICAgIHZhciB4
ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFy
IHk7CisgICAgaWYgKGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpIHx8IHdpbmRvdy5pbnRlcm5hbHMu
c2hhZG93Um9vdChlbGVtZW50KSkKKyAgICAgICAgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZGVm
YXVsdFBhZGRpbmdTaXplOworICAgIGVsc2UKKyAgICAgICAgeSA9IGVsZW1lbnQub2Zmc2V0VG9w
ICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworfQorCit2YXIgZXZlbnRSZWNvcmRzID0ge307CisKK2Z1bmN0aW9uIGNsZWFyRXZl
bnRSZWNvcmRzKCkKK3sKKyAgICBldmVudFJlY29yZHMgPSB7fTsKK30KKworZnVuY3Rpb24gZGlz
cGF0Y2hlZEV2ZW50KGV2ZW50VHlwZSkKK3sKKyAgICB2YXIgZXZlbnRzID0gZXZlbnRSZWNvcmRz
W2V2ZW50VHlwZV07CisgICAgaWYgKCFldmVudHMpCisgICAgICAgIHJldHVybiBbXTsKKyAgICBy
ZXR1cm4gZXZlbnRzOworfQorCitmdW5jdGlvbiByZWNvcmRFdmVudChldmVudCkKK3sKKyAgICB2
YXIgZXZlbnRUeXBlID0gZXZlbnQudHlwZQorICAgIGlmICghZXZlbnRSZWNvcmRzW2V2ZW50VHlw
ZV0pIHsKKyAgICAgICAgZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV0gPSBbXQorICAgIH0KKyAgICAv
LyBSZWNvcmRzIGVhY2ggZXZlbnQgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQgcGVyIGV2ZW50IHR5
cGU6CisgICAgLy8gICBldmVudFJlY29yZHNbZXZlbnRUeXBlXSA9IFsndGFyZ2V0LmlkKDwtcmVs
YXRlZFRhcmdldC5pZCkoQGN1cnJlbnRUYXJnZXQuaWQpJywsLF0KKyAgICAvLyAgICogUmVsYXRl
ZFRhcmdldCBhbmQgY3VycmVudFRhcmdldCBtYXkgYmUgb21pdHRlZCBpZiB0aGV5IGFyZSBub3Qg
ZGVmaW5lZC4KKyAgICAvLyBBIG5ldyBldmVudCBpcyBwdXNoZWQgYmFjayB0byB0aGUgYXJyYXkg
b2YgaXRzIGV2ZW50IHR5cGUuCisgICAgdmFyIGV2ZW50U3RyaW5nID0gJyc7CisgICAgZXZlbnRT
dHJpbmcgKz0gZXZlbnQudGFyZ2V0LmlkOworICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0KQor
ICAgICAgICBldmVudFN0cmluZyArPSAnKDwtJyArIGV2ZW50LnJlbGF0ZWRUYXJnZXQuaWQgKyAn
KSc7CisgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQpCisgICAgICAgIGV2ZW50U3RyaW5nICs9
ICcoQCcgKyBldmVudC5jdXJyZW50VGFyZ2V0LmlkICsgJyknOworICAgIGlmIChldmVudC5ldmVu
dFBoYXNlID09IDEpCisgICAgICAgIGV2ZW50U3RyaW5nICs9ICcoY2FwdHVyaW5nIHBoYXNlKSc7
CisgICAgaWYgKGV2ZW50LnRhcmdldCAmJiBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGV2ZW50LnRh
cmdldC5pZCA9PSBldmVudC5jdXJyZW50VGFyZ2V0LmlkKQorICAgICAgICBzaG91bGRCZSgiZXZl
bnQuZXZlbnRQaGFzZSIsICIyIiwgdHJ1ZSk7CisgICAgZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV0u
cHVzaChldmVudFN0cmluZyk7Cit9CisKKy8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIHNoYWRv
dywgYnV0IGhvdyB0byBzcGVjaWZ5IHBhcnRpY3VsYXIgc2hhZG93Um9vdD8KK2Z1bmN0aW9uIGdl
dEVsZW1lbnRJblNoYWRvdyhwYXRoKQoreworICAgIHZhciBpZHMgPSBwYXRoLnNwbGl0KCcvJyk7
CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZHNbMF0pOworICAg
IGZvciAodmFyIGkgPSAxOyBlbGVtZW50ICE9IG51bGwgJiYgaSA8IGlkcy5sZW5ndGg7ICsraSkg
eworICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGludGVybmFscy5zaGFkb3dSb290KGVsZW1lbnQp
OworICAgICAgICBlbGVtZW50ID0gaW50ZXJuYWxzLmdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290
KHNoYWRvd1Jvb3QsIGlkc1tpXSk7CisgICAgfQorICAgIHJldHVybiBlbGVtZW50OworfQorCisK
KworZnVuY3Rpb24gcHJlcGFyZURPTVRyZWUocGFyZW50KQoreworICAgIHBhcmVudC5hcHBlbmRD
aGlsZCgKKyAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2RpdkEnLCAnc3R5bGUnOiAn
cGFkZGluZy10b3A6IDQwcHgnfSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdob3N0QicsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDogNDBweCd9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnY29udGVudEMnLCAnc3R5
bGUnOiAncGFkZGluZy10b3A6IDQwcHgnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdsaWdodENoaWxkRCcsICdzdHlsZSc6ICdwYWRkaW5n
LXRvcDogNDBweCd9KSkpKTsKKworICAgIHZhciBpZHMgPSBbJ2RpdkEnLCAnaG9zdEInLCAnaG9z
dEIvY29udGVudEMnLCAnbGlnaHRDaGlsZEQnXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlk
cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGdldEVsZW1lbnRJblNoYWRv
dyhpZHNbaV0pOworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3Zlcics
IHJlY29yZEV2ZW50LCBmYWxzZSk7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
bW91c2VvdXQnLCByZWNvcmRFdmVudCwgZmFsc2UpOworICAgIH0KKyAgICBwYXJlbnQub2Zmc2V0
TGVmdDsKK30KKworZnVuY3Rpb24gbW92ZU1vdXNlKG9sZEVsZW1lbnRJZCwgbmV3RWxlbWVudElk
LCBtZXNzYWdlKQoreworICAgIGRlYnVnKCdcbicgKyBtZXNzYWdlICsgJ1xuJyArICdNb3Zpbmcg
bW91c2UgZnJvbSAnICsgb2xkRWxlbWVudElkICsgJyB0byAnICsgbmV3RWxlbWVudElkKTsKKyAg
ICBtb3ZlTW91c2VPdmVyKGdldEVsZW1lbnRJblNoYWRvdyhvbGRFbGVtZW50SWQpKTsKKyAgICBj
bGVhckV2ZW50UmVjb3JkcygpOworICAgIG1vdmVNb3VzZU92ZXIoZ2V0RWxlbWVudEluU2hhZG93
KG5ld0VsZW1lbnRJZCkpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgcHJlcGFyZURPTVRyZWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nh
bmRib3gnKSk7CisKKyAgICBtb3ZlTW91c2UoJ2xpZ2h0Q2hpbGREJywgJ2hvc3RCJywKKyAgICAg
ICAgICAgICAgJ01vdmUgbW91c2UgZnJvbSBhIGxpZ2h0IGNoaWxkIHRvIGEgc2hhZG93IGhvc3Qu
IFRoZSBsaWdodCBjaGlsZCBpcyBkaXN0cmlidXRlZCB0byBhbiBpbnNlcnRpb24gcG9pbnQuJyk7
CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgibW91c2VvdmVyIiknLCAnWyJob3N0Qig8
LWxpZ2h0Q2hpbGREKShAaG9zdEIpIiwgImhvc3RCKDwtbGlnaHRDaGlsZEQpKEBkaXZBKSJdJyk7
CisgICAgLy8gRklYTUU6IFRoZSBzcGVjIHNob3VsZCBiZSBtb2RpZmllZCBpbiB0aGUgZm9sbG93
aW5nIGNhc2U/IFNlZSAKKyAgICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJtb3VzZW91dCIp
JywgJ1sibGlnaHRDaGlsZEQoPC1ob3N0QikoQGxpZ2h0Q2hpbGREKSIsICJsaWdodENoaWxkRCg8
LWhvc3RCKShAY29udGVudEMpIl0nKTsKKworICAgIG1vdmVNb3VzZSgnaG9zdEInLCAnbGlnaHRD
aGlsZEQnLAorICAgICAgICAgICAgICAnTW92ZSBtb3VzZSBmcm9tIGEgc2hhZG93IGhvc3QgdG8g
YSBsaWdodCBjaGlsZC4gVGhlIGxpZ2h0IGNoaWxkIGlzIGRpc3RyaWJ1dGVkIHRvIGFuIGluc2Vy
dGlvbiBwb2ludC4nKTsKKyAgICAvLyBGSVhNRTogVGhlIHNwZWMgc2hvdWxkIGJlIG1vZGlmaWVk
IGluIHRoZSBmb2xsb3dpbmcgY2FzZT8KKyAgICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJt
b3VzZW92ZXIiKScsICdbImxpZ2h0Q2hpbGREKDwtaG9zdEIpKEBsaWdodENoaWxkRCkiLCAibGln
aHRDaGlsZEQoPC1ob3N0QikoQGNvbnRlbnRDKSJdJyk7CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNo
ZWRFdmVudCgibW91c2VvdXQiKScsICdbImhvc3RCKDwtbGlnaHRDaGlsZEQpKEBob3N0QikiLCAi
aG9zdEIoPC1saWdodENoaWxkRCkoQGRpdkEpIl0nKTsKK30KKwordGVzdCgpOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132022</attachid>
            <date>2012-03-15 05:10:45 -0700</date>
            <delta_ts>2012-03-15 06:23:42 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-79197-20120315211044.patch</filename>
            <type>text/plain</type>
            <size>91014</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2NjZmZTVmNjE4MDVk
NWI1ODI0YmYzZTYxODg3MmMwNjQxNWQzNS4uYzAwOWY4NjZiMDkwOTk3NWU5Y2E1OWJkODc4ZjUx
YzdkN2I1NjU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAxMi0wMy0xNSAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEFk
ZCBSZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAuIEV2ZW50RGlzcGF0Y2hlciBhbmQgRm9jdXNO
YXZpZ2F0aW9uLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZvY3VzKToKKyAgICAgICAgKiBk
b20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnREaXNwYXRjaGVyOjphZGp1c3RUb1NoYWRvd0JvdW5kYXJpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycyk6CisgICAg
ICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgorICAgICAgICAoRXZlbnRUYXJnZXRBbmNlc3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldEFuY2VzdG9yOjpFdmVudFRhcmdldEFu
Y2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0QW5jZXN0b3I6Om5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXRBbmNlc3Rvcjo6aGFzU2hhZG93Qm91bmRhcnlC
ZWxsb3cpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFdmVudERpc3BhdGNoZXIpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRm9jdXNh
YmxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd05v
ZGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBk
b20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNTaGFkb3dIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRv
d1RyZWVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93VHJlZU9mUGFyZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpmaXJzdENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZFdpdGhvdXRDcm9zc2luZ1VwcGVy
Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZl
cnNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZl
cnNlTGlnaHRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6dHJhdmVyc2VNZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6
bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBy
ZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6
dHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VCYWNraW5n
VG9Zb3VuZ2VyU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZl
cnNhbDo6ZXNjYXBlRmFsbGJhY2tDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZVdpdGhvdXRD
cm9zc2luZ1VwcGVyQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2
ZXJzYWw6OnBhcmVudE5vZGVNYXliZUJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlSW5DdXJyZW50VHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUJhY2tUb1lv
dW5nZXJTaGFkb3dSb290T3JIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJh
dmVyc2FsOjphZGp1c3RlZFBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmll
ZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5k
YXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVBy
ZXZpb3VzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VQcmV2aW91c05vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KToKKyAgICAgICAg
KiBkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFJlaWZpZWRUcmVlVHJhdmVyc2FsKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9v
dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20v
U2hhZG93VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjppbnNlcnRpb25Q
b2ludEZvcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpzZWxlY3Rpb25Gb3IpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoU2hhZG93VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNl
bGVjdG9yOjpmaW5kRm9yKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVj
dG9yLmg6CisgICAgICAgIChIVE1MQ29udGVudFNlbGVjdGlvblNldCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZCk6CisgICAgICAgIChIVE1MQ29udGVu
dFNlbGVjdG9yKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAg
ICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjp0b0lu
c2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRm9jdXND
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU2hhZG93SG9zdCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Om93bmVyT2ZGb2N1c1Njb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6Omhhc0N1c3RvbUZvY3VzTG9naWMpOgorICAgICAgICAoV2ViQ29yZTo6aXNO
b25Gb2N1c2FibGVTaGFkb3dIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzRm9jdXNhYmxlU2hh
ZG93SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpmb2N1c1Njb3BlRm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdGVkVGFiSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVmlzaXQp
OgorICAgICAgICAoV2ViQ29yZTo6Z29Eb3duSW5Gb2N1c1Njb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzRm9jdXNTY29wZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxl
cjo6ZmluZEZvY3VzYWJsZU5vZGVEZWNlbmRpbmdEb3duSW50b0ZyYW1lRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9k
ZUFjcm9zc0ZvY3VzU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpm
aW5kRm9jdXNhYmxlTm9kZURlZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXI6OmZpbmROb2RlV2l0aEV4YWN0VGFiSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dE5v
ZGVXaXRoR3JlYXRlclRhYkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3VzTm9kZVdp
dGhMb3dlclRhYkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6bmV4
dEZvY3VzYWJsZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpwcmV2
aW91c0ZvY3VzYWJsZU5vZGUpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6Cisg
ICAgICAgIChGb2N1c0NvbnRyb2xsZXIpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQXR0cmlidXRl
RGVzYyk6CisgICAgICAgIChXZWJDb3JlOjpkdW1wTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpk
dW1wUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpkdW1wUmVpZmll
ZFRyZWVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2libGluZ0luUmVp
ZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmaXJzdENoaWxkSW5SZWlm
aWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omxhc3RDaGlsZEluUmVpZmll
ZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0cmF2ZXJzZU5leHROb2RlSW5S
ZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnRyYXZlcnNlUHJldmlv
dXNOb2RlSW5SZWlmaWVkVHJlZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAg
ICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAy
MDEyLTAzLTE0ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQVhEZXNjcmlwdGlvbiBmb3IgSFRNTDUgZm9vdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzVm
MGM4ZjA1YmNjZjRlYjg5MmFiYjgwYmYyN2RiNjkyZDIwZjFjZS4uNjEyNTQxZmEwMGJkYWQ4ZTNh
ZTNlZDVhNTVjMGE0OTE1OGFkOGExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTE4MSw2ICs1MTgx
LDggQEAKICAgICAgICAgICAgICdkb20vUmFuZ2VFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAn
ZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJz
YWwuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCcsCiAgICAg
ICAgICAgICAnZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgnLAogICAgICAgICAg
ICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2
ZW50UXVldWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzY5N2YwMDk0MDhlYTY5MzM5
YzJkNjNkMGNjYWEyZDFiZTFhYmNiNi4uMTQ4Yzg1MzEzN2ExMWVhNGM5M2RmZmQyZDI1ZmJkYWRj
Y2YxMjNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTU0OCw4ICsxNTQ4LDYgQEAgdm9p
ZCBFbGVtZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbikKICAgICAgICAg
Ly8gSWYgYSBmb2N1cyBldmVudCBoYW5kbGVyIGNoYW5nZXMgdGhlIGZvY3VzIHRvIGEgZGlmZmVy
ZW50IG5vZGUgaXQKICAgICAgICAgLy8gZG9lcyBub3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSBh
bmQgdXBkYXRlIGFwcGVhcmVuY2UuCiAgICAgICAgIHByb3RlY3QgPSB0aGlzOwotICAgICAgICBp
ZiAoaGFzU2hhZG93Um9vdCgpICYmIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT50cmFuc2ZlckZv
Y3VzVG9FbGVtZW50SW5TaGFkb3dSb290KHRoaXMsIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbikp
Ci0gICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPnNldEZvY3VzZWROb2RlKHRoaXMsIGRvYy0+ZnJhbWUoKSkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA1ODY2
ZTYwNjhkNmY1OWJhNjIxZDMyMWM1NDRmNGYyODM2M2JjZWI5Li4yNDgzOWQwNzEwMjllOTRjMzE2
NjYwMGI0YzFiYWRjMDVhMTZmMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVy
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50
LmgiCisjaW5jbHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJTY29wZWRF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0LmgiCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtMTIxLDggKzEyMiw0MSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNT
aGFkb3dIb3N0KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAm
JiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRvd1Jvb3QoKTsKIH0KIAorLyoKK3N0YXRpYyB2b2lk
IHByaW50RXZlbnRUYXJnZXRBbmNlc3RvcnMoY29uc3QgVmVjdG9yPEV2ZW50VGFyZ2V0QW5jZXN0
b3I+JiBldmVudFRhcmdldEFuY2VzdG9ycykKK3sKKyAgICBwcmludGYoIi0tLS0tLS0tXG4iKTsK
KyAgICBwcmludGYoImV2ZW50VGFyZ2V0QW5jZXN0b3JzXG4iKTsKKyAgICBmb3IgKFZlY3RvcjxF
dmVudFRhcmdldEFuY2VzdG9yPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGV2ZW50VGFyZ2V0QW5jZXN0
b3JzLmVuZCgpIC0gMTsgaSA+PSBldmVudFRhcmdldEFuY2VzdG9ycy5iZWdpbigpOyAtLWkpIHsK
KyAgICAgICAgaS0+bm9kZSgpLT5zaG93Tm9kZSgpOworICAgICAgICBpZiAoaS0+aGFzU2hhZG93
Qm91bmRhcnlCZWxsb3coKSkKKyAgICAgICAgICAgIHByaW50ZigiLS0tLVxuIik7CisgICAgfQor
Cit9CisKK3N0YXRpYyB2b2lkIHByaW50QW5jZXN0b3JzKGNvbnN0IFZlY3RvcjxFdmVudENvbnRl
eHQ+JiBhbmNlc3RvcnMpCit7CisgICAgcHJpbnRmKCItLS0tLS0tLVxuIik7CisgICAgcHJpbnRm
KCJhbmNlc3RvcnNcbiIpOworICAgIGZvciAoVmVjdG9yPEV2ZW50Q29udGV4dD46OmNvbnN0X2l0
ZXJhdG9yIGkgPSBhbmNlc3RvcnMuZW5kKCkgLSAxOyBpID49IGFuY2VzdG9ycy5iZWdpbigpOyAt
LWkpCisgICAgICAgIGktPm5vZGUoKS0+c2hvd05vZGUoKTsKK30KKworc3RhdGljIGJvb2wgc2hv
dWxkRHVtcChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5pc0VsZW1lbnRO
b2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0aXRsZUF0
dHIpID09ICJkdW1wIjsKK30KKyovCisKIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IEV2ZW50RGlz
cGF0Y2hlcjo6YWRqdXN0VG9TaGFkb3dCb3VuZGFyaWVzKFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRl
ZFRhcmdldCwgY29uc3QgVmVjdG9yPE5vZGUqPiByZWxhdGVkVGFyZ2V0QW5jZXN0b3JzKQogewor
ICAgIC8vIGlmIChzaG91bGREdW1wKG1fbm9kZS5nZXQoKSkpIHsKKyAgICAvLyAgICAgbV9ub2Rl
LT5zaG93VHJlZUZvclRoaXMoKTsKKyAgICAvLyAgICAgcHJpbnRBbmNlc3RvcnMobV9hbmNlc3Rv
cnMpOworICAgIC8vICAgICBwcmludEV2ZW50VGFyZ2V0QW5jZXN0b3JzKHJlbGF0ZWRUYXJnZXRB
bmNlc3RvcnMpOworICAgIC8vIH0KKwogICAgIFZlY3RvcjxFdmVudENvbnRleHQ+Ojpjb25zdF9p
dGVyYXRvciBsb3dlc3RDb21tb25Cb3VuZGFyeSA9IG1fYW5jZXN0b3JzLmVuZCgpOwogICAgIC8v
IEFzc3VtZSBkaXZlcmdlbnQgYm91bmRhcnkgaXMgdGhlIHJlbGF0ZWRUYXJnZXQgaXRzZWxmIChp
biBvdGhlciB3b3JkcywgcmVsYXRlZCB0YXJnZXQgYW5jZXN0b3IgY2hhaW4gZG9lcyBub3QgY3Jv
c3MgYW55IHNoYWRvdyBET00gYm91bmRhcmllcykuCiAgICAgVmVjdG9yPE5vZGUqPjo6Y29uc3Rf
aXRlcmF0b3IgZmlyc3REaXZlcmdlbnRCb3VuZGFyeSA9IHJlbGF0ZWRUYXJnZXRBbmNlc3RvcnMu
YmVnaW4oKTsKQEAgLTE1Myw2ICsxODcsMTMgQEAgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gRXZl
bnREaXNwYXRjaGVyOjphZGp1c3RUb1NoYWRvd0JvdW5kYXJpZXMoUGFzc1JlZlB0cjxOb2QKICAg
ICAgICAgICAgIGRpdmVyZ2VkID0gdHJ1ZTsKICAgICB9CiAKKyAgICAvLyBpZiAoc2hvdWxkRHVt
cChtX25vZGUuZ2V0KCkpKSB7CisgICAgLy8gICAgIHByaW50ZigiLS0gZm9yIGxvb3AgZW5kIC0t
XG4iKTsKKyAgICAvLyAgICAgcHJpbnRmKCJsb3dlc3RDb21tb25Cb3VuZGFyeTogXG4iKTsKKyAg
ICAvLyAgICAgbG93ZXN0Q29tbW9uQm91bmRhcnktPm5vZGUoKS0+c2hvd05vZGUoKTsKKyAgICAv
LyAgICAgcHJpbnRmKCJkaXZlcmdlZDogJWRcbiIsIGRpdmVyZ2VkKTsKKyAgICAvLyB9CisKICAg
ICBpZiAoIWRpdmVyZ2VkKSB7CiAgICAgICAgIC8vIFRoZSByZWxhdGVkVGFyZ2V0IGlzIGFuIGFu
Y2VzdG9yIG9yIHNoYWRvd0hvc3Qgb2YgdGhlIHRhcmdldC4KICAgICAgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGUgZmlyc3QgY2hlY2sgb25jZSBjb252ZXJzaW9uIHRvIG5ldyBzaGFkb3cgRE9NIGlz
IGNvbXBsZXRlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQ4Njk4PgpAQCAtMjQ2LDExICsyODcsMTEg
QEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmVuc3VyZUV2ZW50QW5jZXN0b3JzKEV2ZW50KiBldmVu
dCkKICAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAg
aWYgKGRldGVybWluZURpc3BhdGNoQmVoYXZpb3IoZXZlbnQsIGFuY2VzdG9yKSA9PSBTdGF5SW5z
aWRlU2hhZG93RE9NKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGFuY2Vz
dG9yID0gYW5jZXN0b3ItPnNoYWRvd0hvc3QoKTsKKyAgICAgICAgICAgIGFuY2VzdG9yID0gUmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OmFkanVzdGVkUGFyZW50Tm9kZShhbmNlc3Rvcik7CiAgICAgICAg
ICAgICBpZiAoIW1fbm9kZS0+aXNTVkdFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgdGFyZ2V0
ID0gYW5jZXN0b3I7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYW5jZXN0b3IgPSBhbmNl
c3Rvci0+cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpOworICAgICAgICAgICAgYW5jZXN0
b3IgPSBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6YWRqdXN0ZWRQYXJlbnROb2RlKGFuY2VzdG9yKTsK
IAogICAgICAgICBpZiAoIWFuY2VzdG9yKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDg1YWVmYzQ5MzA0M2Q1MTdlYzk3NzM0ZTYyMThh
YWQ4MWQxNzkwNjcuLjJkOTRmNWJlOWMwZWUyNjFkMmJkNWRjNDMxYTYzMTllOTBmZTljYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKQEAgLTQ2LDYgKzQ2LDIxIEBAIGVudW0g
RXZlbnREaXNwYXRjaEJlaGF2aW9yIHsKICAgICBTdGF5SW5zaWRlU2hhZG93RE9NCiB9OwogCitj
bGFzcyBFdmVudFRhcmdldEFuY2VzdG9yIHsKK3B1YmxpYzoKKyAgICBFdmVudFRhcmdldEFuY2Vz
dG9yKE5vZGUqIG5vZGUsIGJvb2wgaGFzU2hhZG93Qm91bmRhcnlCZWxsb3cpCisgICAgICAgIDog
bV9ub2RlKG5vZGUpCisgICAgICAgICwgbV9oYXNTaGFkb3dCb3VuZGFyeUJlbGxvdyhoYXNTaGFk
b3dCb3VuZGFyeUJlbGxvdykKKyAgICB7CisgICAgfQorICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7
IHJldHVybiBtX25vZGU7IH0KKyAgICBib29sIGhhc1NoYWRvd0JvdW5kYXJ5QmVsbG93KCkgY29u
c3QgeyByZXR1cm4gbV9oYXNTaGFkb3dCb3VuZGFyeUJlbGxvdzsgfQorCitwcml2YXRlOgorICAg
IE5vZGUqIG1fbm9kZTsKKyAgICBib29sIG1faGFzU2hhZG93Qm91bmRhcnlCZWxsb3c7Cit9Owor
CiBjbGFzcyBFdmVudERpc3BhdGNoZXIgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGRpc3Bh
dGNoRXZlbnQoTm9kZSosIFBhc3NSZWZQdHI8RXZlbnREaXNwYXRjaE1lZGlhdG9yPik7CkBAIC02
MCw2ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRXZlbnREaXNwYXRjaGVyKE5vZGUq
KTsKIAorICAgIC8vIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGFkanVzdFRvU2hhZG93Qm91bmRh
cmllcyhQYXNzUmVmUHRyPE5vZGU+IHJlbGF0ZWRUYXJnZXQsIGNvbnN0IFZlY3RvcjxFdmVudFRh
cmdldEFuY2VzdG9yPiByZWxhdGVkVGFyZ2V0QW5jZXN0b3JzKTsKICAgICBQYXNzUmVmUHRyPEV2
ZW50VGFyZ2V0PiBhZGp1c3RUb1NoYWRvd0JvdW5kYXJpZXMoUGFzc1JlZlB0cjxOb2RlPiByZWxh
dGVkVGFyZ2V0LCBjb25zdCBWZWN0b3I8Tm9kZSo+IHJlbGF0ZWRUYXJnZXRBbmNlc3RvcnMpOwog
ICAgIEV2ZW50RGlzcGF0Y2hCZWhhdmlvciBkZXRlcm1pbmVEaXNwYXRjaEJlaGF2aW9yKEV2ZW50
KiwgTm9kZSogc2hhZG93Um9vdCk7CiAgICAgdm9pZCBlbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDkxZWE2M2U0YWUxMmU1Zjg1NmNmZGQ0NzgyM2Q4YWY5
NmMzYTJjZWQuLjEyMDIwMzY4NmQ1YTMxYWIxYjcwYjkxYzY4ZWQ2YWZkZDc2ZTMwNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTkwMiw5ICs5MDIsMTAgQEAgYm9vbCBOb2RlOjppc0ZvY3VzYWJsZSgp
IGNvbnN0CiAgICAgCiAgICAgLy8gRklYTUU6IEV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxlLCB3
ZSBtaWdodCBoYXZlIGEgY2hpbGQgdGhhdCBpcyB2aXNpYmxlLgogICAgIC8vIEh5YXR0IHdhbnRz
IHRvIGZpeCB0aGF0IHNvbWUgZGF5IHdpdGggYSAiaGFzIHZpc2libGUgY29udGVudCIgZmxhZyBv
ciB0aGUgbGlrZS4KLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgIC8v
IEZJWE1FOiBVbmRvIGNvbW1lbnQgb3VudCBvbmNlIG11bHRpcGxlIHNoYWRvdyBSb290IGlzIHN1
cHBvcnRlZCBpbiByZW5kZXJpbmcuCisgICAgLy8gaWYgKCFyZW5kZXJlcigpIHx8IHJlbmRlcmVy
KCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIC8vICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIxNjYsNyArMjE2Nyw3IEBA
IEZsb2F0UG9pbnQgTm9kZTo6Y29udmVydEZyb21QYWdlKGNvbnN0IEZsb2F0UG9pbnQmIHApIGNv
bnN0CiAgICAgcmV0dXJuIHA7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCisvLyAjaWZuZGVmIE5ERUJV
RwogCiBzdGF0aWMgdm9pZCBhcHBlbmRBdHRyaWJ1dGVEZXNjKGNvbnN0IE5vZGUqIG5vZGUsIFN0
cmluZyYgc3RyaW5nLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBjaGFyKiBhdHRy
RGVzYykKIHsKQEAgLTIxOTAsNiArMjE5MSw3IEBAIHZvaWQgTm9kZTo6c2hvd05vZGUoY29uc3Qg
Y2hhciogcHJlZml4KSBjb25zdAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzJXNcdCVwIFwi
JXNcIlxuIiwgcHJlZml4LCBub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIHRoaXMsIHZhbHVlLnV0
ZjgoKS5kYXRhKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBhdHRycyA9ICIiOwor
ICAgICAgICBhcHBlbmRBdHRyaWJ1dGVEZXNjKHRoaXMsIGF0dHJzLCBpZEF0dHIsICIgaWQ9Iik7
CiAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZURlc2ModGhpcywgYXR0cnMsIGNsYXNzQXR0ciwgIiBD
TEFTUz0iKTsKICAgICAgICAgYXBwZW5kQXR0cmlidXRlRGVzYyh0aGlzLCBhdHRycywgc3R5bGVB
dHRyLCAiIFNUWUxFPSIpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzJXNcdCVwJXNcbiIs
IHByZWZpeCwgbm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCB0aGlzLCBhdHRycy51dGY4KCkuZGF0
YSgpKTsKQEAgLTIyODMsNyArMjI4NSw3IEBAIHZvaWQgTm9kZTo6c2hvd1RyZWVGb3JUaGlzQWNy
b3NzRnJhbWUoKSBjb25zdAogICAgIHNob3dTdWJUcmVlQWNyb3NzRnJhbWUocm9vdE5vZGUsIHRo
aXMsICIiKTsKIH0KIAotI2VuZGlmCisvLyAjZW5kaWYKIAogLy8gLS0tLS0tLS0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggMTdjYjYwZDk0M2Q3Njg3ZjdkOGZiNjMxZWI3NzAyZGNjMTU2MzA1OC4uNWZhN2Y3
NTVjZmI1ZGU3OGIzMWU4NmY1NWVmNTIyYzFjNzlmYzM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC01MTUs
MTQgKzUxNSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gZGlzcGF0Y2hpbmcsIGFuZCBpcyBjYWxsZWQg
X2FmdGVyXyB0aGUgbm9kZSBpcyByZW1vdmVkIGZyb20gdGhlIHRyZWUuCiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFs
IHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0OwogCiAgICAgdm9pZCBzaG93Tm9kZShjb25zdCBjaGFyKiBwcmVmaXggPSAiIikgY29uc3Q7
CiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKICAgICB2b2lkIHNob3dUcmVlQW5k
TWFyayhjb25zdCBOb2RlKiBtYXJrZWROb2RlMSwgY29uc3QgY2hhciogbWFya2VkTGFiZWwxLCBj
b25zdCBOb2RlKiBtYXJrZWROb2RlMiA9IDAsIGNvbnN0IGNoYXIqIG1hcmtlZExhYmVsMiA9IDAp
IGNvbnN0OwogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUoKSBjb25zdDsKLSNl
bmRpZgogCiAgICAgdm9pZCByZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QoRHluYW1pY1N1
YnRyZWVOb2RlTGlzdCopOwogICAgIHZvaWQgdW5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxp
c3QoRHluYW1pY1N1YnRyZWVOb2RlTGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVk
VHJlZVRyYXZlcnNhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFjMjFlODVkZDc2MWJlOGUxODIzMjY3MWFm
MzI2MTM5YjBkOGQ5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlm
aWVkVHJlZVRyYXZlcnNhbC5jcHAKQEAgLTAsMCArMSwzMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKKworI2luY2x1ZGUgIkVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSW5zZXJ0
aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIGlubGluZSBib29sIGlzU2hhZG93SG9zdChjb25zdCBOb2RlKiBub2RlKQor
eworICAgIHJldHVybiBub2RlICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSktPmhhc1NoYWRvd1Jvb3QoKTsKK30KKworc3RhdGljIGlubGluZSBTaGFkb3dUcmVlKiBz
aGFkb3dUcmVlRm9yKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+
aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dU
cmVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hhZG93VHJlZSogc2hh
ZG93VHJlZU9mUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUgJiYgbm9k
ZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gc2hhZG93VHJlZUZvcihub2RlLT5wYXJl
bnROb2RlKCkpOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6Zmlyc3RDaGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAg
ICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxE
aXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBBU1NFUlQoIWNoaWxkIHx8ICFjaGlsZC0+aXNTaGFkb3dS
b290KCkpOworICAgIHJldHVybiBjaGlsZDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJz
YWw6Omxhc3RDaGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAg
ICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxE
aXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hpbGQtPmlzU2hhZG93
Um9vdCgpKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVy
c2FsOjpsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5v
ZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VMaWdo
dENoaWxkcmVuKG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOwor
ICAgIEFTU0VSVCghY2hpbGQgfHwgIWNoaWxkLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJu
IGNoaWxkOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VDaGlsZChj
b25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24p
Cit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIC8vIEZJWE1FOiBBZGQgYW4gYXNzZXJ0aW9uIG9u
Y2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgorICAgIC8vIEFTU0VS
VCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNB
Y3RpdmUoKSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgU2hhZG93
VHJlZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVGb3Iobm9kZSk7CisgICAgaWYgKHNoYWRvd1Ry
ZWUgJiYgc2hhZG93VHJlZS0+aGFzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gdHJhdmVy
c2VMaWdodENoaWxkcmVuKHNoYWRvd1RyZWUtPnlvdW5nZXN0U2hhZG93Um9vdCgpLCBkaXJlY3Rp
b24pOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIGRpcmVj
dGlvbik7CisgICAgcmV0dXJuIGNoaWxkOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6dHJhdmVyc2VMaWdodENoaWxkcmVuKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJh
dmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYg
KE5vZGUqIGNoaWxkID0gKGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlv
bkZvcndhcmQgPyBub2RlLT5maXJzdENoaWxkKCkgOiBub2RlLT5sYXN0Q2hpbGQoKSkpCisgICAg
ICAgIHJldHVybiB0cmF2ZXJzZU1lKGNoaWxkLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOwor
fQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VNZShjb25zdCBOb2RlKiBu
b2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNT
RVJUKG5vZGUpOworICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgIGNv
bnN0IEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9uTGlzdCA9IHRvSW5zZXJ0aW9u
UG9pbnQobm9kZSktPnNlbGVjdGlvbnMoKTsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0
aW9uKiBzZWxlY3Rpb24gPSAoZGlyZWN0aW9uID09IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0
aW9uRm9yd2FyZCA/IHNlbGVjdGlvbkxpc3QtPmZpcnN0KCkgOiBzZWxlY3Rpb25MaXN0LT5sYXN0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlTWUoc2VsZWN0aW9uLT5ub2RlKCksIGRp
cmVjdGlvbik7CisgICAgICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgZGly
ZWN0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOworfQor
CitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoY29uc3QgTm9kZSogbm9k
ZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3Qo
KSk7CisgICAgTm9kZSogbmV4dCA9IHRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9u
UG9pbnQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBB
U1NFUlQoIW5leHQgfHwgIW5leHQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gbmV4dDsK
K30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjb25zdCBO
b2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hh
ZG93Um9vdCgpKTsKKyAgICBOb2RlKiBuZXh0ID0gdHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9J
bnNlcnRpb25Qb2ludChub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJk
KTsKKyAgICBBU1NFUlQoIW5leHQgfHwgIW5leHQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1
cm4gbmV4dDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGlu
Z01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgUmVpZmllZFRyZWVU
cmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBT
aGFkb3dUcmVlKiBzaGFkb3dUcmVlID0gc2hhZG93VHJlZU9mUGFyZW50KG5vZGUpOworICAgIGlm
ICghc2hhZG93VHJlZSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRy
ZWUobm9kZSwgZGlyZWN0aW9uKTsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9u
ID0gc2hhZG93VHJlZS0+c2VsZWN0aW9uRm9yKG5vZGUpOworICAgIGlmICghc2VsZWN0aW9uKQor
ICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rp
b24pOworICAgIGlmIChIVE1MQ29udGVudFNlbGVjdGlvbiogbmV4dFNlbGVjdGlvbiA9IChkaXJl
Y3Rpb24gPT0gUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9u
LT5uZXh0KCkgOiBzZWxlY3Rpb24tPnByZXZpb3VzKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVy
c2VNZShuZXh0U2VsZWN0aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZl
cnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Q
b2ludCgpLCBkaXJlY3Rpb24pOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRy
YXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlm
IChOb2RlKiBuZXh0ID0gKGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlv
bkZvcndhcmQgPyBub2RlLT5uZXh0U2libGluZygpIDogbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkp
KQorICAgICAgICByZXR1cm4gdHJhdmVyc2VNZShuZXh0LCBkaXJlY3Rpb24pOworICAgIGlmIChO
b2RlKiBuZXh0ID0gdHJhdmVyc2VCYWNraW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChub2RlLCBkaXJl
Y3Rpb24pKQorICAgICAgICByZXR1cm4gbmV4dDsKKyAgICByZXR1cm4gZXNjYXBlRmFsbGJhY2tD
b250ZW50RWxlbWVudChub2RlLCBkaXJlY3Rpb24pOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6dHJhdmVyc2VCYWNraW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChjb25zdCBOb2RlKiBu
b2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNT
RVJUKG5vZGUpOworICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkgJiYgbm9kZS0+cGFyZW50Tm9k
ZSgpLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBTaGFkb3dSb290KiBwYXJlbnRTaGFkb3dS
b290ID0gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgICAgIGlmICghcGFy
ZW50U2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgICAgICBJbnNlcnRpb25Qb2lu
dCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IHBhcmVudFNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8o
KTsKKyAgICAgICAgICAgIEFTU0VSVChhc3NpZ25lZEluc2VydGlvblBvaW50KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGFzc2lnbmVkSW5zZXJ0aW9u
UG9pbnQsIGRpcmVjdGlvbik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK
K05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjplc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50
KGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlv
bikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSAmJiBp
c0luc2VydGlvblBvaW50KG5vZGUtPnBhcmVudE5vZGUoKSkpCisgICAgICAgIHJldHVybiB0cmF2
ZXJzZVNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50KG5vZGUtPnBhcmVudE5vZGUoKSwg
ZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJz
YWw6OnRyYXZlcnNlTWVFc2NhcGluZ0ZhbGxiYWNrQ29udGVudHMoY29uc3QgTm9kZSogbm9kZSwg
Q3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAg
IGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKQorICAgICAgICByZXR1cm4gcGFyZW50Tm9kZU1h
eWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgY3Jvc3NlZCk7CisgICAgY3Jvc3NlZCA9IE5v
dENyb3NzZWQ7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOworfQorCitOb2Rl
KiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZShjb25zdCBOb2RlKiBub2RlLCBDcm9z
c2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNT
RVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgLy8gRklYTUU6IEFkZCBhbiBhc3NlcnRp
b24gb25jZSBJbnNlcnRpb25Qb2ludCBoYXZlIGlzQWN0aXZlKCkgZnVuY3Rpb24uCisgICAgLy8g
QVNTRVJUKCFpc0luc2VydGlvblBvaW50KG5vZGUpIHx8ICF0b0luc2VydGlvblBvaW50KG5vZGUp
LT5pc0FjdGl2ZSgpKTsKKyAgICByZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9u
UG9pbnQobm9kZSwgY3Jvc3NlZCk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
YXJlbnROb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgLy8gRklYTUU6IERvIG5vdCB1c2Ug
J3Vuc2VkJyBwYXJhbWV0ZXIuCisgICAgQ3Jvc3NlZFVwcGVyQm91bmRhcnkgdW51c2VkOworICAg
IHJldHVybiBwYXJlbnROb2RlKG5vZGUsIHVudXNlZCk7Cit9CisKKworTm9kZSogUmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+aXNT
aGFkb3dSb290KCkpOworICAgIC8vIEZJWE1FOiBBZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0
aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgorICAgIC8vIEFTU0VSVCghaXNJbnNl
cnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7
CisgICAgQ3Jvc3NlZFVwcGVyQm91bmRhcnkgY3Jvc3NlZDsKKyAgICBOb2RlKiBwYXJlbnQgPSBw
YXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBjcm9zc2VkKTsKKyAgICBp
ZiAoY3Jvc3NlZCA9PSBDcm9zc2VkKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFy
ZW50OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZU1heWJlQmFj
a1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkm
IGNyb3NzZWQpCit7CisgICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVl
T2ZQYXJlbnQobm9kZSkpIHsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxl
Y3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1
cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRp
b25Qb2ludCgpLCBjcm9zc2VkKTsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGVJbkN1cnJl
bnRUcmVlKG5vZGUsIGNyb3NzZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6
cGFyZW50Tm9kZUluQ3VycmVudFRyZWUoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91
bmRhcnkmIGNyb3NzZWQpCit7CisgICAgaWYgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE5v
ZGUoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAg
IHJldHVybiBwYXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QodG9TaGFkb3dS
b290KHBhcmVudCksIGNyb3NzZWQpOworICAgICAgICByZXR1cm4gdHJhdmVyc2VNZUVzY2FwaW5n
RmFsbGJhY2tDb250ZW50cyhwYXJlbnQsIGNyb3NzZWQpOworICAgIH0KKyAgICBjcm9zc2VkID0g
Tm90Q3Jvc3NlZDsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJz
YWw6OnBhcmVudE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dS
b290KiBzaGFkb3dSb290LCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBB
U1NFUlQoc2hhZG93Um9vdCk7CisgICAgaWYgKHNoYWRvd1Jvb3QtPmlzWW91bmdlc3QoKSApIHsK
KyAgICAgICAgY3Jvc3NlZCA9IENyb3NzZWQ7CisgICAgICAgIHJldHVybiBzaGFkb3dSb290LT5o
b3N0KCk7CisgICAgfQorICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlvblBvaW50
ID0gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAgIEFTU0VSVChhc3NpZ25lZEluc2VydGlv
blBvaW50KTsKKyAgICByZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQo
YXNzaWduZWRJbnNlcnRpb25Qb2ludCwgY3Jvc3NlZCk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVl
VHJhdmVyc2FsOjphZGp1c3RlZFBhcmVudE5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBp
ZiAoU2hhZG93VHJlZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVPZlBhcmVudChub2RlKSkgewor
ICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRvd1RyZWUt
PnNlbGVjdGlvbkZvcihub2RlKSkKKyAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb24tPmluc2Vy
dGlvblBvaW50KCk7CisgICAgfQorICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAg
ICAgICBjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFkb3dSb290KG5vZGUpOwor
ICAgICAgICBpZiAoIXNoYWRvd1Jvb3QtPmlzWW91bmdlc3QoKSkgeworICAgICAgICAgICAgSW5z
ZXJ0aW9uUG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25l
ZFRvKCk7CisgICAgICAgICAgICBBU1NFUlQoYXNzaWduZWRJbnNlcnRpb25Qb2ludCk7CisgICAg
ICAgICAgICByZXR1cm4gYXNzaWduZWRJbnNlcnRpb25Qb2ludDsKKyAgICAgICAgfQorICAgICAg
ICBzaGFkb3dSb290LT5ob3N0KCk7CisgICAgfQorICAgIHJldHVybiBub2RlLT5wYXJlbnROb2Rl
KCk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlKGNv
bnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKE5vZGUqIG5leHQgPSBmaXJzdENoaWxkKG5vZGUp
KQorICAgICAgICByZXR1cm4gbmV4dDsKKyAgICBpZiAoTm9kZSogbmV4dCA9IG5leHRTaWJsaW5n
KG5vZGUpKQorICAgICAgICByZXR1cm4gbmV4dDsKKyAgICBjb25zdCBOb2RlKiBuID0gbm9kZTsK
KyAgICB3aGlsZSAobiAmJiAhbmV4dFNpYmxpbmcobikpCisgICAgICAgIG4gPSBwYXJlbnROb2Rl
KG4pOworICAgIGlmIChuKQorICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcobik7CisgICAgcmV0
dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2Rl
V2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKiBub2RlKSAKK3sKKyAgICBp
ZiAoIWlzU2hhZG93SG9zdChub2RlKSkgeworICAgICAgICBpZiAoTm9kZSogbmV4dCA9IHRyYXZl
cnNlTGlnaHRDaGlsZHJlbihub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndh
cmQpKQorICAgICAgICAgICAgcmV0dXJuIG5leHQ7CisgICAgfQorICAgIGlmIChOb2RlKiBuZXh0
ID0gbmV4dFNpYmxpbmcobm9kZSkpCisgICAgICAgIHJldHVybiBuZXh0OworICAgIGNvbnN0IE5v
ZGUqIG4gPSBub2RlOworICAgIHdoaWxlIChuICYmICFuZXh0U2libGluZyhuKSkKKyAgICAgICAg
biA9IHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KG4pOworICAgIGlmIChu
KQorICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcobik7CisgICAgcmV0dXJuIDA7Cit9CisKK05v
ZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZShjb25zdCBOb2Rl
KiBub2RlKQoreworICAgIGlmIChOb2RlKiBuID0gcHJldmlvdXNTaWJsaW5nKG5vZGUpKSB7Cisg
ICAgICAgIHdoaWxlIChOb2RlKiBjaGlsZCA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hp
bGQobikpCisgICAgICAgICAgICBuID0gY2hpbGQ7CisgICAgICAgIHJldHVybiBuOworICAgIH0K
KyAgICByZXR1cm4gcGFyZW50Tm9kZShub2RlKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2
ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShj
b25zdCBOb2RlKiBub2RlKSAKK3sKKyAgICBpZiAoTm9kZSogbiA9IHByZXZpb3VzU2libGluZyhu
b2RlKSkgeworICAgICAgICB3aGlsZSAoIWlzU2hhZG93SG9zdChuKSkgeworICAgICAgICAgICAg
aWYgKE5vZGUqIGNoaWxkID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTGlnaHRDaGls
ZHJlbihuLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKSkKKyAgICAgICAg
ICAgICAgICBuID0gY2hpbGQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJldHVybiBwYXJl
bnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShub2RlKTsKK30KKworfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNh
bC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2UyNDNkNGM4ZjBjYzk2Yzc0ODg4MjE4YWNmNWZiMDdiMWJiZjFjNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oCkBAIC0wLDAg
KzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFJlaWZpZWRUcmVlVHJhdmVyc2FsX2gKKyNkZWZpbmUgUmVpZmll
ZFRyZWVUcmF2ZXJzYWxfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vZGU7Citj
bGFzcyBTaGFkb3dSb290OworCitlbnVtIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIHsK
KyAgICBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQsCisgICAgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZAorfTsKKworLy8gRklYTUU6IE1ha2Ugc29tZSBm
dW5jdGlvbnMgaW5saW5lIHRvIG9wdGltaXNlIHRoZSBwZXJmb3JtYW5jZS4KK2NsYXNzIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsIHsKK3B1YmxpYzoKKyAgICBlbnVtIENyb3NzZWRVcHBlckJvdW5kYXJ5
IHsKKyAgICAgICAgTm90Q3Jvc3NlZCwKKyAgICAgICAgQ3Jvc3NlZCwKKyAgICB9OworCisgICAg
c3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBs
YXN0Q2hpbGQoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBsYXN0Q2hpbGRXaXRob3V0
Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiBu
ZXh0U2libGluZyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHByZXZpb3VzU2libGlu
Zyhjb25zdCBOb2RlKik7CisKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZShjb25zdCBOb2Rl
KiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZShj
b25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdV
cHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5l
eHROb2RlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91c05v
ZGUoY29uc3QgTm9kZSopOworCisgICAgLy8gRklYTUU6IEFuICdhZGp1c3RlZCcgaXMgbm90IGdv
b2QgbmFtZSBmb3IgZ2VuZXJhbCB1c2UgY2FzZS4gUmVuYW1lIHRoaXMuCisgICAgLy8gRG8gbm90
IHNraXAgZWl0aGVyIFNoYWRvd1Jvb3Qgb3IgSW5zZXJ0aW9uUG9pbnQuCisgICAgc3RhdGljIE5v
ZGUqIGFkanVzdGVkUGFyZW50Tm9kZShjb25zdCBOb2RlKik7CisKKyAgICBzdGF0aWMgTm9kZSog
dHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSop
OworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1Vw
cGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCitwcml2YXRlOgorICAgIHN0YXRpYyBOb2RlKiB0
cmF2ZXJzZUNoaWxkKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7
CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTWUoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJh
dmVyc2FsRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VMaWdodENoaWxkcmVu
KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisKKyAgICBzdGF0
aWMgTm9kZSogdHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBO
b2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2RlKiB0
cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZl
cnNhbERpcmVjdGlvbik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VCYWNraW5nVG9Zb3Vu
Z2VyU2hhZG93Um9vdChjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24p
OworICAgIHN0YXRpYyBOb2RlKiBlc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KGNvbnN0IE5v
ZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisKKyAgICBzdGF0aWMgTm9kZSog
dHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyhjb25zdCBOb2RlKiwgQ3Jvc3NlZFVw
cGVyQm91bmRhcnkmKTsKKworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlTWF5YmVCYWNrVG9J
bnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKyAgICBz
dGF0aWMgTm9kZSogcGFyZW50Tm9kZUluQ3VycmVudFRyZWUoY29uc3QgTm9kZSosIENyb3NzZWRV
cHBlckJvdW5kYXJ5Jik7CisgICAgc3RhdGljIE5vZGUqIHBhcmVudE5vZGVCYWNrVG9Zb3VuZ2Vy
U2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dSb290KiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkm
KTsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCmluZGV4IDdhOTcxZDVmYjUwYWFhY2Y0NjU1ZjQwZjM2MzNmZWQwZTM3ZDE5MjYuLjg5N2Jk
MjVlYTdhNjY1MGUyYjdmM2MxNDk0ZTc4MjgyMmNlZTgyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5o
IgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIK
QEAgLTE5MCw2ICsxOTEsMTYgQEAgYm9vbCBTaGFkb3dSb290OjpoYXNJbnNlcnRpb25Qb2ludCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisvLyBGSVhNRTogVGhpcyBpcyBhIHN0dWIg
aW1wbGVtZW50YXRpb24uIFVzZSBTaGFkb3dSb290Ojphc3NpbmdlZFRvCisvLyBIVE1MU2hhZG93
RWxlbWVudCogU2hhZG93Um9vdDo6Zmlyc3RTaGFkb3dFbGVtZW50KCkgY29uc3QKKy8vIHsKKy8v
ICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHRO
b2RlKHRoaXMpKSB7CisvLyAgICAgICAgIGlmIChuLT5pc1NoYWRvd0VsZW1lbnQoKSkKKy8vICAg
ICAgICAgICAgIHJldHVybiB0b1NoYWRvd0VsZW1lbnQobik7CisvLyAgICAgfQorLy8gICAgIHJl
dHVybiAwOworLy8gfQorCiBib29sIFNoYWRvd1Jvb3Q6OmFwcGx5QXV0aG9yU2hlZXRzKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9hcHBseUF1dGhvclNoZWV0czsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5oCmluZGV4IGU3NjA1NThmOWNkYjVjYTg0MDQyZjRjNTk1ZjM0MDEwOTgwMGQ5ZDEuLjNhOGEw
MmRmYTViODQzMGMyMWEzZTVjZGZmNmVkYWIzMjkwNDk2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvRG91
Ymx5TGlua2VkTGlzdC5oPgpAQCAtMzgsNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKIGNsYXNzIEhUTUxDb250
ZW50U2VsZWN0b3I7CitjbGFzcyBIVE1MU2hhZG93RWxlbWVudDsKIGNsYXNzIEluc2VydGlvblBv
aW50OwogY2xhc3MgU2hhZG93VHJlZTsKIApAQCAtNjIsNyArNjQsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICBib29s
IG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKIAotICAgIEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludEZvcihOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBob3N0Q2hpbGRy
ZW5DaGFuZ2VkKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlBdXRob3JTaGVldHMoKSBjb25z
dDsKQEAgLTgzLDggKzg0LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNPbGRlc3QoKSBjb25zdCB7
IHJldHVybiAhb2xkZXJTaGFkb3dSb290KCk7IH0KIAogICAgIGJvb2wgaGFzSW5zZXJ0aW9uUG9p
bnQoKSBjb25zdDsKLQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICBIVE1MU2hhZG93
RWxlbWVudCogZmlyc3RTaGFkb3dFbGVtZW50KCkgY29uc3Q7CiAKICAgICBib29sIGlzVXNlZEZv
clJlbmRlcmluZygpIGNvbnN0OwogICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZFRvKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKaW5kZXggYWVjOTk4YmQ4MDhhNzQ0ZWNjZGVl
OGE5NTA3OTlmYTFlMGE1YjU1OS4uMTU2ZDg3OTZmMTkyZDMyYTk2OTBmZTQwMDRkNzRkNmQyZmVi
NGVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxD
b250ZW50U2VsZWN0b3IuaCIKLSNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgorI2luY2x1
ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFNoYWRvd1RyZWU6OmRldGFjaEhvc3Qo
RWxlbWVudCogaG9zdCkKICAgICBob3N0LT5kZXRhY2hBc05vZGUoKTsKIH0KIAotSW5zZXJ0aW9u
UG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0CitJ
bnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSog
bm9kZSkgY29uc3QKIHsKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5wYXJlbnROb2RlKCkpOwog
CkBAIC0yMzAsNiArMjMwLDE4IEBAIEluc2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjppbnNlcnRp
b25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAogICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9u
UG9pbnQoKTsKIH0KIAorSFRNTENvbnRlbnRTZWxlY3Rpb24qIFNoYWRvd1RyZWU6OnNlbGVjdGlv
bkZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAoreworICAgIGlmICghbV9zZWxlY3RvcikKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fc2VsZWN0b3ItPmZpbmRGb3Iobm9kZSk7Cit9
CisKKy8vIGJvb2wgU2hhZG93VHJlZTo6aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0CisvLyB7Cisv
LyAgICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwor
Ly8gfQorCiB2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkKIHsKICAgICBkZXRhY2goKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93VHJlZS5oCmluZGV4IDU0YzQxYmJlNDE5ZjVjM2IxMmU3ODY4MmI2ZDQ5MjI1
ZDQ2ZjliOTEuLjMyYWFlYTkzY2YzNGViMmVkYzQyMjc5ZDEwZmM5ZWY4N2Q5NzNiM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1RyZWUuaApAQCAtMzgsOSArMzgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBOb2RlOwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEhUTUxDb250ZW50RWxlbWVu
dDsKIGNsYXNzIEhUTUxDb250ZW50U2VsZWN0b3I7CiBjbGFzcyBJbnNlcnRpb25Qb2ludDsKIGNs
YXNzIFRyZWVTY29wZTsKK2NsYXNzIEhUTUxDb250ZW50U2VsZWN0aW9uOwogCiBjbGFzcyBTaGFk
b3dUcmVlIHsKIHB1YmxpYzoKQEAgLTc3LDggKzc5LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
YXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFu
Z2VkKCk7CiAKLSAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNv
bnN0OworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKikg
Y29uc3Q7CiAKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uRm9yKGNvbnN0IE5v
ZGUqKSBjb25zdDsKKworICAgIC8vIERvbid0IHBhc3Mgc2VsZWN0b3IgdG8gY2xpZW50cy4gU2hh
ZG93Um9vdExpc3Qgc2hvdWxkIGFjdCBmYWNhZGUuCiAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciog
c2VsZWN0b3IoKSBjb25zdDsKICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3Rv
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2Vs
ZWN0b3IuY3BwCmluZGV4IDk1Mzk1YmM4YmYyMmJhODM5OGZkNTZlNDVkODY0ZGE2MzE4MjY5MjQu
LjU2ZGRlYjhiMGY4ZDBjOWE4MDkwOTkwM2NhYTExOWJiMmZhNjAzMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCkBAIC0xMzYs
NyArMTM2LDcgQEAgdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp1bnNlbGVjdChIVE1MQ29udGVu
dFNlbGVjdGlvbkxpc3QqIGxpc3QpCiAgICAgbGlzdC0+Y2xlYXIoKTsKIH0KIAotSFRNTENvbnRl
bnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoTm9kZSoga2V5KSBjb25z
dAorSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoY29u
c3QgTm9kZSoga2V5KSBjb25zdAogewogICAgIHJldHVybiBtX3NlbGVjdGlvblNldC5maW5kKGtl
eSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVj
dG9yLmgKaW5kZXggMTRlYTA1N2EwYTVlZDU3NDdjZGNhOTg5OGQyYTVlNWZhNTNjNTg3NC4uNjM2
N2UyYzhlNDc3MWNjZTI4OTU0MTQyMjU0MzFiMmMxMjkxNjFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAtOTgsNyArOTgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGQoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1f
c2V0LmFkZCh2YWx1ZSk7IH0KICAgICB2b2lkIHJlbW92ZShIVE1MQ29udGVudFNlbGVjdGlvbiog
dmFsdWUpIHsgbV9zZXQucmVtb3ZlKHZhbHVlKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0LmlzRW1wdHkoKTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBm
aW5kKE5vZGUqIGtleSkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoY29u
c3QgTm9kZSoga2V5KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgVHJhbnNsYXRvciB7
CkBAIC0xMTgsOSArMTE4LDkgQEAgcHJpdmF0ZToKICAgICBQb2ludGVyU2V0IG1fc2V0OwogfTsK
IAotaW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6
ZmluZChOb2RlKiBrZXkpIGNvbnN0CitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxD
b250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKIHsKLSAgICBQ
b2ludGVyU2V0OjppdGVyYXRvciBmb3VuZCA9IG1fc2V0LmZpbmQ8Tm9kZSosIEhUTUxDb250ZW50
U2VsZWN0aW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOworICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9y
IGZvdW5kID0gbV9zZXQuZmluZDxjb25zdCBOb2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6
OlRyYW5zbGF0b3I+KGtleSk7CiAgICAgcmV0dXJuIGZvdW5kICE9IG1fc2V0LmVuZCgpID8gKmZv
dW5kIDogMDsKIH0KIApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2Vs
ZWN0KEluc2VydGlvblBvaW50KiwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7CiAgICAgdm9p
ZCB1bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKLSAgICBIVE1MQ29udGVudFNl
bGVjdGlvbiogZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0
aW9uKiBmaW5kRm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7CiAKICAgICB2b2lkIHdpbGxTZWxl
Y3RPdmVyKEVsZW1lbnQqIHNoYWRvd0hvc3QpOwogICAgIHZvaWQgZGlkU2VsZWN0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCBiNTI4MmNkZGMy
NzQ4MmNlYzMzNTM1ZGRiZWI2OGM3MGY1NTg4NGJjLi43NGIxYTIwMGM0ZDllMmIxMjc4MDU0YzQ0
N2FmNDAxMWQ0NmQ0OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBIVE1MQ29udGVudFNlbGVj
dGlvbkxpc3QgbV9zZWxlY3Rpb25zOwogfTsKIAotaW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2lu
dChOb2RlKiBub2RlKQoraW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBu
b2RlKQogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04OCw2ICs4
OCwxMiBAQCBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9k
ZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKIH0KIAor
aW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUq
IG5vZGUpCit7CisgICAgQVNTRVJUKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBJbnNlcnRpb25Qb2ludCo+KG5vZGUpOworfQorCiBpbmxpbmUg
Ym9vbCBpc1NoYWRvd0JvdW5kYXJ5KE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFpc0luc2VydGlv
blBvaW50KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4
IGZiMTZkZjAyMWI2YjQ2NzI2MDk5OWFhZGQ5YWYxZTIwNWYwZGE0MzkuLjMwNDdmMjYxY2VkZjM4
YzYxMjRiMGQxZTYxZjZiMzExODIxMzc5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiUmVpZmll
ZFRyZWVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgpAQCAtODQsNiArODUsNTkg
QEAgc3RhdGljIGlubGluZSB2b2lkIGRpc3BhdGNoRXZlbnRzT25XaW5kb3dBbmRGb2N1c2VkTm9k
ZShEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wKICAgICAgICAgZG9jdW1lbnQtPmZvY3VzZWROb2Rl
KCktPmRpc3BhdGNoRm9jdXNFdmVudCgwKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzU2hh
ZG93SG9zdChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlICYmIG5vZGUtPmlz
RWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRvd1Jvb3QoKTsKK30KKwor
c3RhdGljIGlubGluZSBOb2RlKiBvd25lck9mRm9jdXNTY29wZShUcmVlU2NvcGUqIHNjb3BlKQor
eworICAgIEFTU0VSVChzY29wZSk7CisgICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5pc1NoYWRv
d1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIHNjb3BlLT5yb290Tm9kZSgpLT5zaGFkb3dIb3N0KCk7
CisgICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAg
ICByZXR1cm4gc2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxl
bWVudCgpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzQ3VzdG9t
Rm9jdXNMb2dpYyhOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKGlu
cHV0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSB8fCBub2RlLT5oYXNUYWdO
YW1lKHZpZGVvVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGF1ZGlvVGFnKTsKK30KKworc3RhdGlj
IGlubGluZSBib29sIGlzTm9uRm9jdXNhYmxlU2hhZG93SG9zdChOb2RlKiBub2RlLCBLZXlib2Fy
ZEV2ZW50KiBldmVudCkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgcmV0dXJuICFub2RlLT5p
c0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiBpc1NoYWRvd0hvc3Qobm9kZSkgJiYgIWhhc0N1
c3RvbUZvY3VzTG9naWMobm9kZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzYWJs
ZVNoYWRvd0hvc3QoTm9kZSogbm9kZSwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgQVNT
RVJUKG5vZGUpOworICAgIHJldHVybiBub2RlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAm
JiBpc1NoYWRvd0hvc3Qobm9kZSkgJiYgIWhhc0N1c3RvbUZvY3VzTG9naWMobm9kZSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgVHJlZVNjb3BlKiBmb2N1c1Njb3BlRm9yKE5vZGUqIG5vZGUpCit7Cisg
ICAgQVNTRVJUKG5vZGUpOworICAgIFRyZWVTY29wZSogc2NvcGUgPSBub2RlLT50cmVlU2NvcGUo
KTsKKyAgICBpZiAoc2NvcGUtPnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpKQorICAgICAgICBy
ZXR1cm4gdG9TaGFkb3dSb290KHNjb3BlLT5yb290Tm9kZSgpKS0+dHJlZSgpLT55b3VuZ2VzdFNo
YWRvd1Jvb3QoKTsKKyAgICByZXR1cm4gc2NvcGU7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGFk
anVzdGVkVGFiSW5kZXgoTm9kZSogbm9kZSwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAg
QVNTRVJUKG5vZGUpOworICAgIHJldHVybiBpc05vbkZvY3VzYWJsZVNoYWRvd0hvc3Qobm9kZSwg
ZXZlbnQpID8gMCA6IG5vZGUtPnRhYkluZGV4KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBz
aG91bGRWaXNpdChOb2RlKiBub2RlLCBLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBBU1NF
UlQobm9kZSk7CisgICAgcmV0dXJuIG5vZGUtPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpIHx8
IGlzTm9uRm9jdXNhYmxlU2hhZG93SG9zdChub2RlLCBldmVudCk7Cit9CisKIEZvY3VzQ29udHJv
bGxlcjo6Rm9jdXNDb250cm9sbGVyKFBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAg
ICAsIG1faXNBY3RpdmUoZmFsc2UpCkBAIC0xNTMsNTIgKzIwNywyNyBAQCB2b2lkIEZvY3VzQ29u
dHJvbGxlcjo6c2V0Rm9jdXNlZChib29sIGZvY3VzZWQpCiAgICAgfQogfQogCi1zdGF0aWMgaW5s
aW5lIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoTm9kZSogbm9kZSkKLXsKLSAgICByZXR1cm4gbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpID8g
dG9FbGVtZW50KG5vZGUpLT5zaGFkb3dUcmVlKCktPnlvdW5nZXN0U2hhZG93Um9vdCgpIDogMDsK
LX0KLQotc3RhdGljIGlubGluZSBib29sIGlzVHJlZVNjb3BlT3duZXIoTm9kZSogbm9kZSkKLXsK
LSAgICByZXR1cm4gbm9kZSAmJiAobm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpIHx8IHNoYWRv
d1Jvb3Qobm9kZSkpOwotfQotCi1ib29sIEZvY3VzQ29udHJvbGxlcjo6dHJhbnNmZXJGb2N1c1Rv
RWxlbWVudEluU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBib29sIHJlc3RvcmVQcmV2
aW91c1NlbGVjdGlvbikKK3N0YXRpYyBpbmxpbmUgU2hhZG93Um9vdCogZ29Eb3duSW5Gb2N1c1Nj
b3BlKE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKHNoYWRvd1Jvb3Qoc2hhZG93SG9zdCkpOwot
ICAgIE5vZGUqIG5vZGUgPSBmaW5kRm9jdXNhYmxlTm9kZURlY2VuZGluZ0Rvd25JbnRvRnJhbWVE
b2N1bWVudE9yU2hhZG93Um9vdChGb2N1c0RpcmVjdGlvbkZvcndhcmQsIHNoYWRvd0hvc3QsIDAp
OwotICAgIGlmIChzaGFkb3dIb3N0ID09IG5vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB0b0VsZW1lbnQobm9kZSktPmZvY3VzKHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgQVNTRVJUKGlzU2hhZG93SG9zdChub2RlKSk7CisgICAgcmV0dXJu
IHRvRWxlbWVudChub2RlKS0+c2hhZG93VHJlZSgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKIH0K
IAotc3RhdGljIGlubGluZSBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoTm9kZSogbm9kZSkKK3N0
YXRpYyBpbmxpbmUgYm9vbCBpc0ZvY3VzU2NvcGVPd25lcihOb2RlKiBub2RlKQogewotICAgIHJl
dHVybiBub2RlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHRleHRh
cmVhVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHZpZGVvVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1l
KGF1ZGlvVGFnKTsKKyAgICByZXR1cm4gbm9kZSAmJiAobm9kZS0+aXNGcmFtZU93bmVyRWxlbWVu
dCgpIHx8IGlzU2hhZG93SG9zdChub2RlKSk7CiB9CiAKLU5vZGUqIEZvY3VzQ29udHJvbGxlcjo6
ZmluZEZvY3VzYWJsZU5vZGVEZWNlbmRpbmdEb3duSW50b0ZyYW1lRG9jdW1lbnRPclNoYWRvd1Jv
b3QoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBub2RlLCBLZXlib2FyZEV2ZW50KiBl
dmVudCkKK05vZGUqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVEZWNlbmRpbmdE
b3duSW50b0ZyYW1lRG9jdW1lbnQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBub2Rl
LCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICAvLyBUaGUgbm9kZSB3ZSBmb3VuZCBtaWdo
dCBiZSBhIEhUTUxGcmFtZU93bmVyRWxlbWVudCBvciBhIHNoYWRvdyBob3N0LCBzbyBkZXNjZW5k
IGRvd24gdGhlIHRyZWUgdW50aWwgd2UgZmluZCBlaXRoZXI6CisgICAgLy8gVGhlIG5vZGUgd2Ug
Zm91bmQgbWlnaHQgYmUgYSBIVE1MRnJhbWVPd25lckVsZW1lbnQsIHNvIGRlc2NlbmQgZG93biB0
aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGVpdGhlcjoKICAgICAvLyAxKSBhIGZvY3VzYWJsZSBub2Rl
LCBvcgotICAgIC8vIDIpIHRoZSBkZWVwZXN0LW5lc3RlZCBIVE1MRnJhbWVPd25lckVsZW1lbnQg
b3Igc2hhZG93IGhvc3QuCi0gICAgd2hpbGUgKGlzVHJlZVNjb3BlT3duZXIobm9kZSkpIHsKLSAg
ICAgICAgTm9kZSogZm91bmROb2RlOwotICAgICAgICBpZiAobm9kZS0+aXNGcmFtZU93bmVyRWxl
bWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gc3Rh
dGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICBpZiAo
IW93bmVyLT5jb250ZW50RnJhbWUoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG93bmVyLT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQo
KTsKLSAgICAgICAgICAgIGZvdW5kTm9kZSA9IGZpbmRGb2N1c2FibGVOb2RlKGRpcmVjdGlvbiwg
ZG9jdW1lbnQsIDAsIGV2ZW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBVbnRpbCBhIGZvY3VzIHJlLXRhcmdldGluZyAoYnVnIDYxNDIxKSBpcyBpbXBsZW1lbnRl
ZCwKLSAgICAgICAgICAgIC8vIHNraXBwaW5nIHRoZXNlIGVsZW1lbnRzIGlzIHRoZSBzYWZlc3Qg
d2F5IHRvIGtlZXAgYSBjb21wYXRpYmlsaXR5LgotICAgICAgICAgICAgaWYgKGhhc0N1c3RvbUZv
Y3VzTG9naWMobm9kZSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBBU1NF
UlQoc2hhZG93Um9vdChub2RlKSk7Ci0gICAgICAgICAgICBmb3VuZE5vZGUgPSBmaW5kRm9jdXNh
YmxlTm9kZShkaXJlY3Rpb24sIHNoYWRvd1Jvb3Qobm9kZSksIDAsIGV2ZW50KTsKLSAgICAgICAg
fQorICAgIC8vIDIpIHRoZSBkZWVwZXN0LW5lc3RlZCBIVE1MRnJhbWVPd25lckVsZW1lbnQuCisg
ICAgd2hpbGUgKG5vZGUgJiYgbm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7CisgICAgICAg
IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVPd25l
ckVsZW1lbnQqPihub2RlKTsKKyAgICAgICAgaWYgKCFvd25lci0+Y29udGVudEZyYW1lKCkpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgTm9kZSogZm91bmROb2RlID0gZmluZEZvY3VzYWJs
ZU5vZGUoZGlyZWN0aW9uLCBvd25lci0+Y29udGVudEZyYW1lKCktPmRvY3VtZW50KCksIDAsIGV2
ZW50KTsKICAgICAgICAgaWYgKCFmb3VuZE5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgQVNTRVJUKG5vZGUgIT0gZm91bmROb2RlKTsKQEAgLTI1Myw3ICsyODIsNyBAQCBib29sIEZv
Y3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKEZvY3VzRGlyZWN0aW9u
IGRpcmVjdGlvbiwgS2V5YgogCiAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwogCi0gICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBmaW5kRm9jdXNhYmxl
Tm9kZUFjcm9zc1RyZWVTY29wZShkaXJlY3Rpb24sIGN1cnJlbnROb2RlID8gY3VycmVudE5vZGUt
PnRyZWVTY29wZSgpIDogZG9jdW1lbnQsIGN1cnJlbnROb2RlLCBldmVudCk7CisgICAgUmVmUHRy
PE5vZGU+IG5vZGUgPSBmaW5kRm9jdXNhYmxlTm9kZUFjcm9zc0ZvY3VzU2NvcGUoZGlyZWN0aW9u
LCBjdXJyZW50Tm9kZSA/IGZvY3VzU2NvcGVGb3IoY3VycmVudE5vZGUpIDogZG9jdW1lbnQsIGN1
cnJlbnROb2RlLCBldmVudCk7CiAKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgLy8gV2UgZGlk
bid0IGZpbmQgYSBub2RlIHRvIGZvY3VzLCBzbyB3ZSBzaG91bGQgdHJ5IHRvIHBhc3MgZm9jdXMg
dG8gQ2hyb21lLgpAQCAtMjY1LDggKzI5NCw4IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZh
bmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXliCiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBDaHJvbWUgZG9lc24ndCB3YW50IGZvY3VzLCBzbyB3ZSBz
aG91bGQgd3JhcCBmb2N1cy4KLSAgICAgICAgbm9kZSA9IGZpbmRGb2N1c2FibGVOb2RlKGRpcmVj
dGlvbiwgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSwgMCwgZXZlbnQpOwotICAgICAg
ICBub2RlID0gZmluZEZvY3VzYWJsZU5vZGVEZWNlbmRpbmdEb3duSW50b0ZyYW1lRG9jdW1lbnRP
clNoYWRvd1Jvb3QoZGlyZWN0aW9uLCBub2RlLmdldCgpLCBldmVudCk7CisgICAgICAgIG5vZGUg
PSBmaW5kRm9jdXNhYmxlTm9kZURlZXBseShkaXJlY3Rpb24sIG1fcGFnZS0+bWFpbkZyYW1lKCkt
PmRvY3VtZW50KCksIDAsIGV2ZW50KTsKKyAgICAgICAgbm9kZSA9IGZpbmRGb2N1c2FibGVOb2Rl
RGVjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50KGRpcmVjdGlvbiwgbm9kZS5nZXQoKSwgZXZl
bnQpOwogCiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTMxOCwzMSArMzQ3LDY3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRv
Y3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXliCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgTm9kZSogb3duZXJPZlRyZWVTY29wZShUcmVlU2NvcGUq
IHNjb3BlKQorTm9kZSogRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUFjcm9zc0Zv
Y3VzU2NvcGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBUcmVlU2NvcGUqIHNjb3BlLCBOb2Rl
KiBjdXJyZW50Tm9kZSwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgQVNTRVJUKHNjb3Bl
KTsKLSAgICBpZiAoc2NvcGUtPnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpKQotICAgICAgICBy
ZXR1cm4gc2NvcGUtPnJvb3ROb2RlKCktPnNoYWRvd0hvc3QoKTsKLSAgICBpZiAoc2NvcGUtPnJv
b3ROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIHJldHVybiBzY29wZS0+cm9v
dE5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLU5vZGUqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVBY3Jvc3NU
cmVlU2NvcGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBUcmVlU2NvcGUqIHNjb3BlLCBOb2Rl
KiBjdXJyZW50Tm9kZSwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCi17Ci0gICAgTm9kZSogbm9kZSA9
IGZpbmRGb2N1c2FibGVOb2RlKGRpcmVjdGlvbiwgc2NvcGUsIGN1cnJlbnROb2RlLCBldmVudCk7
CisgICAgQVNTRVJUKCFjdXJyZW50Tm9kZSB8fCAhaXNOb25Gb2N1c2FibGVTaGFkb3dIb3N0KGN1
cnJlbnROb2RlLCBldmVudCkpOworICAgIE5vZGUqIGZvdW5kOworICAgIGlmIChjdXJyZW50Tm9k
ZSAmJiBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkICYmIGlzRm9jdXNhYmxlU2hh
ZG93SG9zdChjdXJyZW50Tm9kZSwgZXZlbnQpKSB7CisgICAgICAgIE5vZGUqIGZvdW5kSW5Jbm5l
ckZvY3VzU2NvcGUgPSBmaW5kRm9jdXNhYmxlTm9kZURlZXBseShkaXJlY3Rpb24sIGdvRG93bklu
Rm9jdXNTY29wZShjdXJyZW50Tm9kZSksIDAsIGV2ZW50KTsKKyAgICAgICAgaWYgKGZvdW5kSW5J
bm5lckZvY3VzU2NvcGUpCisgICAgICAgICAgICBmb3VuZCA9IGZvdW5kSW5Jbm5lckZvY3VzU2Nv
cGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZvdW5kID0gZmluZEZvY3VzYWJsZU5vZGVE
ZWVwbHkoZGlyZWN0aW9uLCBzY29wZSwgY3VycmVudE5vZGUsIGV2ZW50KTsKKyAgICB9IGVsc2UK
KyAgICAgICAgZm91bmQgPSBmaW5kRm9jdXNhYmxlTm9kZURlZXBseShkaXJlY3Rpb24sIHNjb3Bl
LCBjdXJyZW50Tm9kZSwgZXZlbnQpOworICAgIAogICAgIC8vIElmIHRoZXJlJ3Mgbm8gZm9jdXNh
YmxlIG5vZGUgdG8gYWR2YW5jZSB0bywgbW92ZSB1cCB0aGUgdHJlZSBzY29wZXMgdW50aWwgd2Ug
ZmluZCBvbmUuCi0gICAgd2hpbGUgKCFub2RlICYmIHNjb3BlKSB7Ci0gICAgICAgIE5vZGUqIG93
bmVyID0gb3duZXJPZlRyZWVTY29wZShzY29wZSk7CisgICAgd2hpbGUgKCFmb3VuZCAmJiBzY29w
ZSkgeworICAgICAgICBOb2RlKiBvd25lciA9IG93bmVyT2ZGb2N1c1Njb3BlKHNjb3BlKTsKICAg
ICAgICAgaWYgKCFvd25lcikKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBub2RlID0gZmlu
ZEZvY3VzYWJsZU5vZGUoZGlyZWN0aW9uLCBvd25lci0+dHJlZVNjb3BlKCksIG93bmVyLCBldmVu
dCk7Ci0gICAgICAgIHNjb3BlID0gb3duZXItPnRyZWVTY29wZSgpOworICAgICAgICBzY29wZSA9
IGZvY3VzU2NvcGVGb3Iob3duZXIpOworICAgICAgICBpZiAoZGlyZWN0aW9uID09IEZvY3VzRGly
ZWN0aW9uQmFja3dhcmQgJiYgaXNGb2N1c2FibGVTaGFkb3dIb3N0KG93bmVyLCBldmVudCkpIHsK
KyAgICAgICAgICAgIGZvdW5kID0gb3duZXI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBmb3VuZCA9IGZpbmRGb2N1c2FibGVOb2RlRGVlcGx5KGRpcmVjdGlvbiwgc2Nv
cGUsIG93bmVyLCBldmVudCk7CiAgICAgfQotICAgIG5vZGUgPSBmaW5kRm9jdXNhYmxlTm9kZURl
Y2VuZGluZ0Rvd25JbnRvRnJhbWVEb2N1bWVudE9yU2hhZG93Um9vdChkaXJlY3Rpb24sIG5vZGUs
IGV2ZW50KTsKLSAgICByZXR1cm4gbm9kZTsKKyAgICBmb3VuZCA9IGZpbmRGb2N1c2FibGVOb2Rl
RGVjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50KGRpcmVjdGlvbiwgZm91bmQsIGV2ZW50KTsK
KyAgICByZXR1cm4gZm91bmQ7CiB9CiAKK05vZGUqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3Vz
YWJsZU5vZGVEZWVwbHkoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBUcmVlU2NvcGUqIHNjb3Bl
LCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgLy8gc3RhcnQgbm9k
ZSBpcyBleGNsdXNpdmUuCisgICAgQVNTRVJUKHNjb3BlKTsKKyAgICAKKyAgICBOb2RlKiBmb3Vu
ZCA9IGZpbmRGb2N1c2FibGVOb2RlKGRpcmVjdGlvbiwgc2NvcGUsIHN0YXJ0LCBldmVudCk7Cisg
ICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBG
b2N1c0RpcmVjdGlvbkZvcndhcmQpIHsKKyAgICAgICAgaWYgKCFpc05vbkZvY3VzYWJsZVNoYWRv
d0hvc3QoZm91bmQsIGV2ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmb3VuZDsKKyAgICAgICAg
Tm9kZSogZm91bmRJbklubmVyRm9jdXNTY29wZSA9IGZpbmRGb2N1c2FibGVOb2RlRGVlcGx5KGRp
cmVjdGlvbiwgZ29Eb3duSW5Gb2N1c1Njb3BlKGZvdW5kKSwgMCwgZXZlbnQpOworICAgICAgICBp
ZiAoZm91bmRJbklubmVyRm9jdXNTY29wZSkKKyAgICAgICAgICAgIHJldHVybiBmb3VuZEluSW5u
ZXJGb2N1c1Njb3BlOworICAgICAgICByZXR1cm4gZmluZEZvY3VzYWJsZU5vZGVEZWVwbHkoZGly
ZWN0aW9uLCBzY29wZSwgZm91bmQsIGV2ZW50KTsKKyAgICB9CisgICAgQVNTRVJUKGRpcmVjdGlv
biA9PSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBpZiAoaXNGb2N1c2FibGVTaGFkb3dI
b3N0KGZvdW5kLCBldmVudCkpIHsKKyAgICAgICAgTm9kZSogZm91bmRJbklubmVyRm9jdXNTY29w
ZSA9IGZpbmRGb2N1c2FibGVOb2RlRGVlcGx5KGRpcmVjdGlvbiwgZ29Eb3duSW5Gb2N1c1Njb3Bl
KGZvdW5kKSwgMCwgZXZlbnQpOworICAgICAgICBpZiAoZm91bmRJbklubmVyRm9jdXNTY29wZSkK
KyAgICAgICAgICAgIHJldHVybiBmb3VuZEluSW5uZXJGb2N1c1Njb3BlOworICAgICAgICByZXR1
cm4gZm91bmQ7CisgICAgfQorICAgIGlmIChpc05vbkZvY3VzYWJsZVNoYWRvd0hvc3QoZm91bmQs
IGV2ZW50KSkgeworICAgICAgICBOb2RlKiBmb3VuZEluSW5uZXJGb2N1c1Njb3BlID0gZmluZEZv
Y3VzYWJsZU5vZGVEZWVwbHkoZGlyZWN0aW9uLCBnb0Rvd25JbkZvY3VzU2NvcGUoZm91bmQpLCAw
LCBldmVudCk7CisgICAgICAgIGlmIChmb3VuZEluSW5uZXJGb2N1c1Njb3BlKQorICAgICAgICAg
ICAgcmV0dXJuIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGU7CisgICAgICAgIHJldHVybiBmaW5kRm9j
dXNhYmxlTm9kZURlZXBseShkaXJlY3Rpb24sIHNjb3BlLCBmb3VuZCwgZXZlbnQpOworICAgIH0K
KyAgICByZXR1cm4gZm91bmQ7Cit9CiAKIE5vZGUqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3Vz
YWJsZU5vZGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBUcmVlU2NvcGUqIHNjb3BlLCBOb2Rl
KiBub2RlLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKQEAgLTM1MSwyMyArNDE2LDEzIEBAIE5v
ZGUqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGUoRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uLCBUcmVlU2NvcGUqIHNjCiAgICAgICAgIDogcHJldmlvdXNGb2N1c2FibGVOb2RlKHNj
b3BlLCBub2RlLCBldmVudCk7CiB9CiAKLXN0YXRpYyBOb2RlKiBuZXh0Tm9kZVdpdGhFeGFjdFRh
YkluZGV4KE5vZGUqIHN0YXJ0LCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQor
Tm9kZSogRm9jdXNDb250cm9sbGVyOjpmaW5kTm9kZVdpdGhFeGFjdFRhYkluZGV4KE5vZGUqIHN0
YXJ0LCBpbnQgdGFiSW5kZXgsIEtleWJvYXJkRXZlbnQqIGV2ZW50LCBGb2N1c0RpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7CiAgICAgLy8gU2VhcmNoIGlzIGluY2x1c2l2ZSBvZiBzdGFydAotICAgIGZv
ciAoTm9kZSogbm9kZSA9IHN0YXJ0OyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9k
ZSgpKQotICAgICAgICBpZiAobm9kZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkgJiYgbm9k
ZS0+dGFiSW5kZXgoKSA9PSB0YWJJbmRleCkKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBzdGFydDsg
bm9kZTsgbm9kZSA9IChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkID8gUmVpZmll
ZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5k
YXJ5KG5vZGUpOiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91c05vZGVXaXRo
b3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KG5vZGUpKSkgeworICAgICAgICBpZiAoc2hvdWxkVmlz
aXQobm9kZSwgZXZlbnQpICYmIGFkanVzdGVkVGFiSW5kZXgobm9kZSwgZXZlbnQpID09IHRhYklu
ZGV4KQogICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3Rh
dGljIE5vZGUqIHByZXZpb3VzTm9kZVdpdGhFeGFjdFRhYkluZGV4KE5vZGUqIHN0YXJ0LCBpbnQg
dGFiSW5kZXgsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQotewotICAgIC8vIFNlYXJjaCBpcyBpbmNs
dXNpdmUgb2Ygc3RhcnQKLSAgICBmb3IgKE5vZGUqIG4gPSBzdGFydDsgbjsgbiA9IG4tPnRyYXZl
cnNlUHJldmlvdXNOb2RlKCkpCi0gICAgICAgIGlmIChuLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2
ZW50KSAmJiBuLT50YWJJbmRleCgpID09IHRhYkluZGV4KQotICAgICAgICAgICAgcmV0dXJuIG47
Ci0KKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM3Niw4ICs0MzEsOCBAQCBzdGF0aWMg
Tm9kZSogbmV4dE5vZGVXaXRoR3JlYXRlclRhYkluZGV4KE5vZGUqIHN0YXJ0LCBpbnQgdGFiSW5k
ZXgsIEtleWJvYXJkRXZlbgogICAgIC8vIFNlYXJjaCBpcyBpbmNsdXNpdmUgb2Ygc3RhcnQKICAg
ICBpbnQgd2lubmluZ1RhYkluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1heCgp
ICsgMTsKICAgICBOb2RlKiB3aW5uZXIgPSAwOwotICAgIGZvciAoTm9kZSogbiA9IHN0YXJ0OyBu
OyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKQotICAgICAgICBpZiAobi0+aXNLZXlib2FyZEZv
Y3VzYWJsZShldmVudCkgJiYgbi0+dGFiSW5kZXgoKSA+IHRhYkluZGV4ICYmIG4tPnRhYkluZGV4
KCkgPCB3aW5uaW5nVGFiSW5kZXgpIHsKKyAgICBmb3IgKE5vZGUqIG4gPSBzdGFydDsgbjsgbiA9
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeShuKSkKKyAgICAgICAgaWYgKHNob3VsZFZpc2l0KG4sIGV2ZW50KSAmJiBuLT50
YWJJbmRleCgpID4gdGFiSW5kZXggJiYgbi0+dGFiSW5kZXgoKSA8IHdpbm5pbmdUYWJJbmRleCkg
ewogICAgICAgICAgICAgd2lubmVyID0gbjsKICAgICAgICAgICAgIHdpbm5pbmdUYWJJbmRleCA9
IG4tPnRhYkluZGV4KCk7CiAgICAgICAgIH0KQEAgLTM5MCwzMCArNDQ1LDMzIEBAIHN0YXRpYyBO
b2RlKiBwcmV2aW91c05vZGVXaXRoTG93ZXJUYWJJbmRleChOb2RlKiBzdGFydCwgaW50IHRhYklu
ZGV4LCBLZXlib2FyZEV2CiAgICAgLy8gU2VhcmNoIGlzIGluY2x1c2l2ZSBvZiBzdGFydAogICAg
IGludCB3aW5uaW5nVGFiSW5kZXggPSAwOwogICAgIE5vZGUqIHdpbm5lciA9IDA7Ci0gICAgZm9y
IChOb2RlKiBuID0gc3RhcnQ7IG47IG4gPSBuLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgpKQotICAg
ICAgICBpZiAobi0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkgJiYgbi0+dGFiSW5kZXgoKSA8
IHRhYkluZGV4ICYmIG4tPnRhYkluZGV4KCkgPiB3aW5uaW5nVGFiSW5kZXgpIHsKKyAgICBmb3Ig
KE5vZGUqIG4gPSBzdGFydDsgbjsgbiA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVBy
ZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkobikpIHsKKyAgICAgICAgaW50
IGN1cnJlbnRUYWJJbmRleCA9IGFkanVzdGVkVGFiSW5kZXgobiwgZXZlbnQpOworICAgICAgICBp
ZiAoKHNob3VsZFZpc2l0KG4sIGV2ZW50KSB8fCBpc05vbkZvY3VzYWJsZVNoYWRvd0hvc3Qobiwg
ZXZlbnQpKSAmJiBjdXJyZW50VGFiSW5kZXggPCB0YWJJbmRleCAmJiBjdXJyZW50VGFiSW5kZXgg
PiB3aW5uaW5nVGFiSW5kZXgpIHsKICAgICAgICAgICAgIHdpbm5lciA9IG47Ci0gICAgICAgICAg
ICB3aW5uaW5nVGFiSW5kZXggPSBuLT50YWJJbmRleCgpOworICAgICAgICAgICAgd2lubmluZ1Rh
YkluZGV4ID0gY3VycmVudFRhYkluZGV4OwogICAgICAgICB9Ci0KKyAgICB9CiAgICAgcmV0dXJu
IHdpbm5lcjsKIH0KIAogTm9kZSogRm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlTm9kZShU
cmVlU2NvcGUqIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAg
ICAgaWYgKHN0YXJ0KSB7CisgICAgICAgIGludCB0YWJJbmRleCA9IGFkanVzdGVkVGFiSW5kZXgo
c3RhcnQsIGV2ZW50KTsKICAgICAgICAgLy8gSWYgYSBub2RlIGlzIGV4Y2x1ZGVkIGZyb20gdGhl
IG5vcm1hbCB0YWJiaW5nIGN5Y2xlLCB0aGUgbmV4dCBmb2N1c2FibGUgbm9kZSBpcyBkZXRlcm1p
bmVkIGJ5IHRyZWUgb3JkZXIKLSAgICAgICAgaWYgKHN0YXJ0LT50YWJJbmRleCgpIDwgMCkgewot
ICAgICAgICAgICAgZm9yIChOb2RlKiBuID0gc3RhcnQtPnRyYXZlcnNlTmV4dE5vZGUoKTsgbjsg
biA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoKSkKLSAgICAgICAgICAgICAgICBpZiAobi0+aXNLZXli
b2FyZEZvY3VzYWJsZShldmVudCkgJiYgbi0+dGFiSW5kZXgoKSA+PSAwKQorICAgICAgICBpZiAo
dGFiSW5kZXggPCAwKSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIG4gPSBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoc3Rh
cnQpOyBuOyBuID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0
Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KG4pKSB7CisgICAgICAgICAgICAgICAgaWYgKGFkanVzdGVk
VGFiSW5kZXgobiwgZXZlbnQpID49IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQg
YSBub2RlIHdpdGggdGhlIHNhbWUgdGFiaW5kZXggYXMgc3RhcnQgdGhhdCBjb21lcyBhZnRlciBz
dGFydCBpbiB0aGUgc2NvcGUuCi0gICAgICAgIGlmIChOb2RlKiB3aW5uZXIgPSBuZXh0Tm9kZVdp
dGhFeGFjdFRhYkluZGV4KHN0YXJ0LT50cmF2ZXJzZU5leHROb2RlKCksIHN0YXJ0LT50YWJJbmRl
eCgpLCBldmVudCkpCisgICAgICAgIGlmIChOb2RlKiB3aW5uZXIgPSBmaW5kTm9kZVdpdGhFeGFj
dFRhYkluZGV4KFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlV2l0aG91dENy
b3NzaW5nVXBwZXJCb3VuZGFyeShzdGFydCksIHRhYkluZGV4LCBldmVudCwgRm9jdXNEaXJlY3Rp
b25Gb3J3YXJkKSkKICAgICAgICAgICAgIHJldHVybiB3aW5uZXI7CiAKLSAgICAgICAgaWYgKCFz
dGFydC0+dGFiSW5kZXgoKSkKKyAgICAgICAgaWYgKCF0YWJJbmRleCkKICAgICAgICAgICAgIC8v
IFdlJ3ZlIHJlYWNoZWQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgZG9jdW1lbnQgd2l0aCBhIHRhYmlu
ZGV4IG9mIDAuIFRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgdGFiYmluZyBvcmRlci4KICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQyMSwyNiArNDc5LDI4IEBAIE5vZGUqIEZvY3VzQ29u
dHJvbGxlcjo6bmV4dEZvY3VzYWJsZU5vZGUoVHJlZVNjb3BlKiBzY29wZSwgTm9kZSogc3RhcnQs
IEtleWJvYXJkCiAgICAgLy8gTG9vayBmb3IgdGhlIGZpcnN0IG5vZGUgaW4gdGhlIHNjb3BlIHRo
YXQ6CiAgICAgLy8gMSkgaGFzIHRoZSBsb3dlc3QgdGFiaW5kZXggdGhhdCBpcyBoaWdoZXIgdGhh
biBzdGFydCdzIHRhYmluZGV4IChvciAwLCBpZiBzdGFydCBpcyBudWxsKSwgYW5kCiAgICAgLy8g
MikgY29tZXMgZmlyc3QgaW4gdGhlIHNjb3BlLCBpZiB0aGVyZSdzIGEgdGllLgotICAgIGlmIChO
b2RlKiB3aW5uZXIgPSBuZXh0Tm9kZVdpdGhHcmVhdGVyVGFiSW5kZXgoc2NvcGUtPnJvb3ROb2Rl
KCksIHN0YXJ0ID8gc3RhcnQtPnRhYkluZGV4KCkgOiAwLCBldmVudCkpCisgICAgaWYgKE5vZGUq
IHdpbm5lciA9IG5leHROb2RlV2l0aEdyZWF0ZXJUYWJJbmRleChzY29wZS0+cm9vdE5vZGUoKSwg
c3RhcnQgPyBhZGp1c3RlZFRhYkluZGV4KHN0YXJ0LCBldmVudCkgOiAwLCBldmVudCkpCiAgICAg
ICAgIHJldHVybiB3aW5uZXI7CiAKICAgICAvLyBUaGVyZSBhcmUgbm8gbm9kZXMgd2l0aCBhIHRh
YmluZGV4IGdyZWF0ZXIgdGhhbiBzdGFydCdzIHRhYmluZGV4LAogICAgIC8vIHNvIGZpbmQgdGhl
IGZpcnN0IG5vZGUgd2l0aCBhIHRhYmluZGV4IG9mIDAuCi0gICAgcmV0dXJuIG5leHROb2RlV2l0
aEV4YWN0VGFiSW5kZXgoc2NvcGUtPnJvb3ROb2RlKCksIDAsIGV2ZW50KTsKKyAgICByZXR1cm4g
ZmluZE5vZGVXaXRoRXhhY3RUYWJJbmRleChzY29wZS0+cm9vdE5vZGUoKSwgMCwgZXZlbnQsIEZv
Y3VzRGlyZWN0aW9uRm9yd2FyZCk7CiB9CiAKKy8vIEZJWE1FOiBkb25vdCB1c2UgJ24tPmlzS2V5
Ym9hcmRGb2N1c2FibGUoZXZlbnQpJyBkaXJlY3RseS4KKwogTm9kZSogRm9jdXNDb250cm9sbGVy
OjpwcmV2aW91c0ZvY3VzYWJsZU5vZGUoVHJlZVNjb3BlKiBzY29wZSwgTm9kZSogc3RhcnQsIEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIE5vZGUqIGxhc3Q7Ci0gICAgZm9yIChsYXN0ID0g
c2NvcGUtPnJvb3ROb2RlKCk7IGxhc3QtPmxhc3RDaGlsZCgpOyBsYXN0ID0gbGFzdC0+bGFzdENo
aWxkKCkpIHsgfQorICAgIGZvciAobGFzdCA9IHNjb3BlLT5yb290Tm9kZSgpOyBSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6bGFzdENoaWxkV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShsYXN0KTsg
bGFzdCA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBl
ckJvdW5kYXJ5KGxhc3QpKSB7fQogCiAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGxhc3Qg
bm9kZSBpbiB0aGUgc2NvcGUgdGhhdCBjb21lcyBiZWZvcmUgc3RhcnQgYW5kIGhhcyB0aGUgc2Ft
ZSB0YWJpbmRleCBhcyBzdGFydC4KICAgICAvLyBJZiBzdGFydCBpcyBudWxsLCBmaW5kIHRoZSBs
YXN0IG5vZGUgaW4gdGhlIHNjb3BlIHdpdGggYSB0YWJpbmRleCBvZiAwLgogICAgIE5vZGUqIHN0
YXJ0aW5nTm9kZTsKICAgICBpbnQgc3RhcnRpbmdUYWJJbmRleDsKICAgICBpZiAoc3RhcnQpIHsK
LSAgICAgICAgc3RhcnRpbmdOb2RlID0gc3RhcnQtPnRyYXZlcnNlUHJldmlvdXNOb2RlKCk7Ci0g
ICAgICAgIHN0YXJ0aW5nVGFiSW5kZXggPSBzdGFydC0+dGFiSW5kZXgoKTsKKyAgICAgICAgc3Rh
cnRpbmdOb2RlID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlV2l0
aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShzdGFydCk7CisgICAgICAgIHN0YXJ0aW5nVGFiSW5k
ZXggPSBhZGp1c3RlZFRhYkluZGV4KHN0YXJ0LCBldmVudCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgc3RhcnRpbmdOb2RlID0gbGFzdDsKICAgICAgICAgc3RhcnRpbmdUYWJJbmRleCA9IDA7CkBA
IC00NDgsMTggKzUwOCwxOSBAQCBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNh
YmxlTm9kZShUcmVlU2NvcGUqIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5YgogCiAgICAgLy8gSG93
ZXZlciwgaWYgYSBub2RlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIG5vcm1hbCB0YWJiaW5nIGN5Y2xl
LCB0aGUgcHJldmlvdXMgZm9jdXNhYmxlIG5vZGUgaXMgZGV0ZXJtaW5lZCBieSB0cmVlIG9yZGVy
CiAgICAgaWYgKHN0YXJ0aW5nVGFiSW5kZXggPCAwKSB7Ci0gICAgICAgIGZvciAoTm9kZSogbiA9
IHN0YXJ0aW5nTm9kZTsgbjsgbiA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlKCkpCi0gICAgICAg
ICAgICBpZiAobi0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkgJiYgbi0+dGFiSW5kZXgoKSA+
PSAwKQorICAgICAgICBmb3IgKE5vZGUqIG4gPSBzdGFydGluZ05vZGU7IG47IG4gPSBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91c05vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJv
dW5kYXJ5KG4pKSB7CisgICAgICAgICAgICBpZiAoYWRqdXN0ZWRUYWJJbmRleChuLCBldmVudCkg
Pj0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgfQogICAgIH0KIAotICAg
IGlmIChOb2RlKiB3aW5uZXIgPSBwcmV2aW91c05vZGVXaXRoRXhhY3RUYWJJbmRleChzdGFydGlu
Z05vZGUsIHN0YXJ0aW5nVGFiSW5kZXgsIGV2ZW50KSkKKyAgICBpZiAoTm9kZSogd2lubmVyID0g
ZmluZE5vZGVXaXRoRXhhY3RUYWJJbmRleChzdGFydGluZ05vZGUsIHN0YXJ0aW5nVGFiSW5kZXgs
IGV2ZW50LCBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkKSkKICAgICAgICAgcmV0dXJuIHdpbm5lcjsK
IAogICAgIC8vIFRoZXJlIGFyZSBubyBub2RlcyBiZWZvcmUgc3RhcnQgd2l0aCB0aGUgc2FtZSB0
YWJpbmRleCBhcyBzdGFydCwgc28gbG9vayBmb3IgYSBub2RlIHRoYXQ6CiAgICAgLy8gMSkgaGFz
IHRoZSBoaWdoZXN0IG5vbi16ZXJvIHRhYmluZGV4ICh0aGF0IGlzIGxlc3MgdGhhbiBzdGFydCdz
IHRhYmluZGV4KSwgYW5kCiAgICAgLy8gMikgY29tZXMgbGFzdCBpbiB0aGUgc2NvcGUsIGlmIHRo
ZXJlJ3MgYSB0aWUuCi0gICAgc3RhcnRpbmdUYWJJbmRleCA9IChzdGFydCAmJiBzdGFydC0+dGFi
SW5kZXgoKSkgPyBzdGFydC0+dGFiSW5kZXgoKSA6IHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+
OjptYXgoKTsKKyAgICBzdGFydGluZ1RhYkluZGV4ID0gKHN0YXJ0ICYmIHN0YXJ0aW5nVGFiSW5k
ZXgpID8gc3RhcnRpbmdUYWJJbmRleCA6IHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptYXgo
KTsKICAgICByZXR1cm4gcHJldmlvdXNOb2RlV2l0aExvd2VyVGFiSW5kZXgobGFzdCwgc3RhcnRp
bmdUYWJJbmRleCwgZXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
aAppbmRleCAzYjU2Mzc3YmQ0MzEzYzY1OWM1YWQ2NWYxMGI4NGZkZTZjZmU1ZTMwLi5kZDJiMzc1
NjhjYmU2N2QyOTYwNDhjOGZmODU2ODUyNWI5ZGJkNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmgKQEAgLTY2LDE3ICs2NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
b250YWluaW5nV2luZG93SXNWaXNpYmxlKGJvb2wpOwogICAgIGJvb2wgY29udGFpbmluZ1dpbmRv
d0lzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbmluZ1dpbmRvd0lzVmlzaWJsZTsg
fQogCi0gICAgYm9vbCB0cmFuc2ZlckZvY3VzVG9FbGVtZW50SW5TaGFkb3dSb290KEVsZW1lbnQq
IHNoYWRvd0hvc3QsIGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKLQogcHJpdmF0ZToK
ICAgICBGb2N1c0NvbnRyb2xsZXIoUGFnZSopOwogCiAgICAgYm9vbCBhZHZhbmNlRm9jdXNEaXJl
Y3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50Kik7CiAgICAgYm9vbCBhZHZh
bmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBi
b29sIGluaXRpYWxGb2N1cyk7CiAKLSAgICBOb2RlKiBmaW5kRm9jdXNhYmxlTm9kZUFjcm9zc1Ry
ZWVTY29wZShGb2N1c0RpcmVjdGlvbiwgVHJlZVNjb3BlKiBzdGFydFNjb3BlLCBOb2RlKiBzdGFy
dCwgS2V5Ym9hcmRFdmVudCopOwotICAgIE5vZGUqIGZpbmRGb2N1c2FibGVOb2RlRGVjZW5kaW5n
RG93bkludG9GcmFtZURvY3VtZW50T3JTaGFkb3dSb290KEZvY3VzRGlyZWN0aW9uLCBOb2RlKiwg
S2V5Ym9hcmRFdmVudCopOwotCisgICAgTm9kZSogZmluZEZvY3VzYWJsZU5vZGVBY3Jvc3NGb2N1
c1Njb3BlKEZvY3VzRGlyZWN0aW9uLCBUcmVlU2NvcGUqIHN0YXJ0U2NvcGUsIE5vZGUqIHN0YXJ0
LCBLZXlib2FyZEV2ZW50Kik7CisgICAgTm9kZSogZmluZEZvY3VzYWJsZU5vZGVEZWVwbHkoRm9j
dXNEaXJlY3Rpb24sIFRyZWVTY29wZSosIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50Kik7Cisg
ICAgTm9kZSogZmluZEZvY3VzYWJsZU5vZGVEZWNlbmRpbmdEb3duSW50b0ZyYW1lRG9jdW1lbnQo
Rm9jdXNEaXJlY3Rpb24sIE5vZGUqLCBLZXlib2FyZEV2ZW50Kik7CisgICAgCiAgICAgLy8gU2Vh
cmNoZXMgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJlZSBzY29wZSwgc3RhcnRpbmcgZnJvbSBzdGFydCBu
b2RlLCBmb3IgdGhlIG5leHQvcHJldmlvdXMgc2VsZWN0YWJsZSBlbGVtZW50IHRoYXQgY29tZXMg
YWZ0ZXIvYmVmb3JlIHN0YXJ0IG5vZGUuCiAgICAgLy8gVGhlIG9yZGVyIGZvbGxvd2VkIGlzIGFz
IHNwZWNpZmllZCBpbiBzZWN0aW9uIDE3LjExLjEgb2YgdGhlIEhUTUw0IHNwZWMsIHdoaWNoIGlz
IGVsZW1lbnRzIHdpdGggdGFiIGluZGV4ZXMKICAgICAvLyBmaXJzdCAoZnJvbSBsb3dlc3QgdG8g
aGlnaGVzdCksIGFuZCB0aGVuIGVsZW1lbnRzIHdpdGhvdXQgdGFiIGluZGV4ZXMgKGluIGRvY3Vt
ZW50IG9yZGVyKS4KQEAgLTkxLDYgKzkwLDggQEAgcHJpdmF0ZToKICAgICBOb2RlKiBuZXh0Rm9j
dXNhYmxlTm9kZShUcmVlU2NvcGUqLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCopOwogICAg
IE5vZGUqIHByZXZpb3VzRm9jdXNhYmxlTm9kZShUcmVlU2NvcGUqLCBOb2RlKiBzdGFydCwgS2V5
Ym9hcmRFdmVudCopOwogCisgICAgTm9kZSogZmluZE5vZGVXaXRoRXhhY3RUYWJJbmRleChOb2Rl
KiBzdGFydCwgaW50IHRhYkluZGV4LCBLZXlib2FyZEV2ZW50KiwgRm9jdXNEaXJlY3Rpb24pOwor
CiAgICAgYm9vbCBhZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5SW5Db250YWluZXIoTm9kZSogY29u
dGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBzdGFydGluZ1JlY3QsIEZvY3VzRGlyZWN0aW9uLCBL
ZXlib2FyZEV2ZW50Kik7CiAgICAgdm9pZCBmaW5kRm9jdXNDYW5kaWRhdGVJbkNvbnRhaW5lcihO
b2RlKiBjb250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIHN0YXJ0aW5nUmVjdCwgRm9jdXNEaXJl
Y3Rpb24sIEtleWJvYXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCk7CiAKQEAgLTEw
MCw3ICsxMDEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0ZvY3VzZWQ7CiAgICAgYm9vbCBt
X2lzQ2hhbmdpbmdGb2N1c2VkRnJhbWU7CiAgICAgYm9vbCBtX2NvbnRhaW5pbmdXaW5kb3dJc1Zp
c2libGU7Ci0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCBjMjkzNjg2NGY3ZTRiMjMwZDRkNWM5MzhiYTk4NDVlZDQxYWM1
YWZhLi4zNDE1OWVhOWZlMjhlOGFlYjRiOTFkMGQ1YmFkYTg2NTQ3MzE1OWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2Uu
aCIKKyNpbmNsdWRlICJSZWlmaWVkVHJlZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgpAQCAtMTc3LDYgKzE3OCw5OSBAQCBib29sIEludGVybmFsczo6YXR0YWNoZWQoTm9kZSog
bm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG5vZGUtPmF0dGFjaGVkKCk7CiB9
CiAKKy8vIEZJWE1FOiBNZXJnZSB0aGlzIHRvIE5vZGU6OnNob3dOb2RlLgorc3RhdGljIHZvaWQg
YXBwZW5kQXR0cmlidXRlRGVzYyhjb25zdCBOb2RlKiBub2RlLCBTdHJpbmcmIHN0cmluZywgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgY2hhciogYXR0ckRlc2MpCit7CisgICAgaWYg
KG5vZGUtPmlzRWxlbWVudE5vZGUoKSkgeworICAgICAgICBTdHJpbmcgYXR0ciA9IHN0YXRpY19j
YXN0PGNvbnN0IEVsZW1lbnQqPihub2RlKS0+Z2V0QXR0cmlidXRlKG5hbWUpOworICAgICAgICBp
ZiAoIWF0dHIuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBzdHJpbmcgKz0gYXR0ckRlc2M7Cisg
ICAgICAgICAgICBzdHJpbmcgKz0gYXR0cjsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGlj
IFN0cmluZyBkdW1wTm9kZShjb25zdCBOb2RlKiBub2RlKSAKK3sKKyAgICBpZiAobm9kZS0+aXNU
ZXh0Tm9kZSgpKSB7CisgICAgICAgIFN0cmluZyB2YWx1ZSA9IG5vZGUtPm5vZGVWYWx1ZSgpOwor
ICAgICAgICB2YWx1ZS5yZXBsYWNlKCdcXCcsICJcXFxcIik7CisgICAgICAgIHZhbHVlLnJlcGxh
Y2UoJ1xuJywgIlxcbiIpOworICAgICAgICBUZXh0U3RyZWFtIHRleHRTdHJlYW07CisgICAgICAg
IHRleHRTdHJlYW0gPDwgbm9kZS0+bm9kZU5hbWUoKSA8PCAiXHRcIiIgPDwgdmFsdWUgPDwgIlwi
IjsKKyAgICAgICAgcmV0dXJuIHRleHRTdHJlYW0ucmVsZWFzZSgpOworICAgIH0KKyAgICBTdHJp
bmcgYXR0cnMgPSAiIjsKKyAgICBhcHBlbmRBdHRyaWJ1dGVEZXNjKG5vZGUsIGF0dHJzLCBIVE1M
TmFtZXM6OmNsYXNzQXR0ciwgIiBDTEFTUz0iKTsKKyAgICBUZXh0U3RyZWFtIHRleHRTdHJlYW07
CisgICAgdGV4dFN0cmVhbSA8PCBub2RlLT5ub2RlTmFtZSgpIDw8ICJcdCIgPDwgYXR0cnM7Cisg
ICAgcmV0dXJuIHRleHRTdHJlYW0ucmVsZWFzZSgpOworfQorCitzdGF0aWMgdm9pZCBkdW1wUmVp
ZmllZFRyZWUoTm9kZSogbm9kZSwgU3RyaW5nJiBvdXRwdXQsIFN0cmluZyBpbmRlbnQpCit7Cisg
ICAgb3V0cHV0ICs9IGluZGVudCArIGR1bXBOb2RlKG5vZGUpICsgIlxuIjsKKyAgICBmb3IgKE5v
ZGUqIGNoaWxkID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQobm9kZSk7IGNoaWxk
OyBjaGlsZCA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZCkpCisgICAg
ICAgIGR1bXBSZWlmaWVkVHJlZShjaGlsZCwgb3V0cHV0LCBpbmRlbnQgKyAiXHQiKTsKK30KKwor
U3RyaW5nIEludGVybmFsczo6ZHVtcFJlaWZpZWRUcmVlRm9yKE5vZGUqIG5vZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKyAgICBTdHJpbmcgb3V0
cHV0OworICAgIFN0cmluZyBzdGFydGluZ0luZGVudDsKKyAgICBkdW1wUmVpZmllZFRyZWUobm9k
ZSwgb3V0cHV0LCBzdGFydGluZ0luZGVudCk7CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworTm9k
ZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0luUmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZpZWRU
cmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyhub2RlKTsKK30KKworTm9kZSogSW50ZXJuYWxzOjpm
aXJzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZp
cnN0Q2hpbGQobm9kZSk7Cit9CisKK05vZGUqIEludGVybmFsczo6bGFzdENoaWxkSW5SZWlmaWVk
VHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZChub2RlKTsKK30K
KworTm9kZSogSW50ZXJuYWxzOjp0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1
cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUobm9kZSk7Cit9CisKK05v
ZGUqIEludGVybmFsczo6dHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKE5vZGUqIG5v
ZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVy
biBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91c05vZGUobm9kZSk7Cit9CisK
IFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqIGVsZW1l
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZWxlbWVudCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNjdjMDkyMmJiYjViMGY0ZmFiZWZhYWNkMDRmMzliN2Rh
ZDBiYTA0Mi4uY2E5ZjhjNWE4Y2UxMmZmZDhkM2YyMTgyZWNhNDY1ZWM5OTZlMTk1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04Myw3ICs4MywxNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1ZhbGlkQ29udGVudFNlbGVjdChFbGVtZW50KiBpbnNlcnRpb25Qb2ludCwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgYm9vbCBhdHRhY2hlZChOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwot
CisgICAgU3RyaW5nIGR1bXBSZWlmaWVkVHJlZUZvcihOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwor
CisgICAgTm9kZSogbmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKE5vZGUqIG5vZGUsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBOb2RlKiBmaXJzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiBub2RlLCBF
eGNlcHRpb25Db2RlJik7CisgICAgTm9kZSogbGFzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJik7CisgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZUluUmVpZmll
ZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIE5vZGUqIHRyYXZlcnNlUHJl
dmlvdXNOb2RlSW5SZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJik7CisgICAg
Ly8gTm9kZSogdHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ0luUmVpZmllZFRyZWUoTm9k
ZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIC8vIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNO
b2RlV2l0aG91dENyb3NzaW5nSW5SZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgCisgICAgCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogICAgIHZvaWQgc2VsZWN0
Q29sb3JJbkNvbG9yQ2hvb3NlcihFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVlKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGQ5ODU2YWQwMjVl
NThiOTlhOTEwMjU0ZDU2MDI2YThhYTMyOWUzMzQuLjY2OTAwNTA2MzA5NGJiNmZkZTAwMzZiZjZl
ZjhmNDA2ZTI1YzY1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU2
LDYgKzU2LDE0IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRC
eUlkSW5TaGFkb3dSb290KGluIE5vZGUgc2hhZG93Um9vdCwgaW4gRE9NU3RyaW5nIGlkKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiBpc1ZhbGlkQ29udGVudFNlbGVjdChp
biBFbGVtZW50IGNvbnRlbnRFbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAorICAgICAg
ICBOb2RlIG5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01F
eGNlcHRpb24pOworCisgICAgICAgIE5vZGUgZmlyc3RDaGlsZEluUmVpZmllZFRyZWUoaW4gTm9k
ZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSBsYXN0Q2hpbGRJblJl
aWZpZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAg
Tm9kZSB0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVk
VHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworCiAgICAgICAgIGJvb2xl
YW4gYXR0YWNoZWQoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lmIGRl
ZmluZWQoRU5BQkxFX0lOUFVUX0NPTE9SKSAmJiBFTkFCTEVfSU5QVVRfQ09MT1IKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAy
YjVjZGU5NDc1NmE0ZWM1NzY4YmU2MzA3NmY5NTJiZGQxMzRkYTRlLi5kZjVjMzNkOTgyOGQzZWM4
ZGI3NTQzYTlmMGVkMDNhZmQ0YzA4MTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDMt
MTUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cg
RE9NXSBBZGQgUmVpZmllZCBET00gVHJlZSB0cmF2ZXJzYWwgQVBJcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTk3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZm9jdXMt
bmF2aWdhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVpZmll
ZC10cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMvc2hhZG93LWRvbS5qczoKKyAgICAgICAgKG93bmVyVHJl
ZVNjb3BlKToKKyAgICAgICAgKGdldEVsZW1lbnRJblNoYWRvd1RyZWVTdGFjayk6CisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMtd2l0aC1ub2RlLWRpc3Ry
aWJ1dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctYm91bmRhcnktZXZlbnRzLXdpdGgtbm9kZS1kaXN0cmlidXRpb24uaHRtbDogQWRkZWQu
CisKIDIwMTItMDMtMTQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBWERlc2NyaXB0aW9uIGZvciBIVE1MNSBmb290ZXIgYW5kIEFSSUEgcm9sZSBjb250
ZW50aW5mbyBpbmNvcnJlY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9mb2N1cy1uYXZpZ2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZm9j
dXMtbmF2aWdhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1ZGVjMmJjYTkxMjdkY2ExMzg0MzI1ZjQ0
NzkyZTdiMzFlZjY3OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZm9jdXMtbmF2aWdhdGlvbi5odG1sCkBAIC0wLDAgKzEsMjY2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRv
bS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBwcmVz
c2luZyBUYWIga2V5IHNob3VsZCB0cmF2ZXJzZSBpbnRvIHNoYWRvdyB0cmVlLCBhbmQgcHJlc3Np
bmcgU2hpZnQtVGFiIHNob3VsZCByZXZlcnNlIHRoZSBvcmRlci4KKyBNYWtlcyBzdXJlIHRoYXQg
YSBzaGFkb3cgaG9zdCBlbGVtZW50IHNob3VsZCBhY3QgbGlrZSBhIGlmcmFtZSBlbGVtZW50Ljwv
cD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KKwordmFyIGZvY3VzZWRFbGVt
ZW50OworCitmdW5jdGlvbiBzaG91bGRGb2N1c09uKGlkKQoreworICAgIC8vIGlmIChzY29wZSA9
PSBkb2N1bWVudCkKKyAgICAvLyAgICAgY29uc29sZS5sb2coJ3Nob3VsZEZvY3VzT24gZG9jdW1l
bnQgaWQ6JyArIGlkKTsKKyAgICAvLyBlbHNlCisgICAgLy8gICAgIGNvbnNvbGUubG9nKCdzaG91
bGRGb2N1c09uIHNjb3BlOicgKyBzY29wZS5pZCArICcgaWQ6JyArIGlkKTsKKyAgICAvLyBpZiAo
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkKKyAgICAvLyAgICAgY29uc29sZS5sb2coJ2RvY3VtZW50
LmFjdGl2ZUVsZW1lbnQ6JyArIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuaWQpOworICAgIC8vIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZm9jdXNlZEVsZW1lbnQuaWQiLCBpZCk7CisgICAgc2hvdWxk
QmVUcnVlKCJpc0FjdGl2ZUVsZW1lbnRTdHJpY3RseSgnIiArIGlkICsgIicpIik7IAorfQorCitm
dW5jdGlvbiBpc0FjdGl2ZUVsZW1lbnRTdHJpY3RseShpZCkKK3sKKyAgICB2YXIgZWxlbWVudCA9
IGdldEVsZW1lbnRJblNoYWRvd1RyZWVTdGFjayhpZCk7CisgICAgaWYgKG93bmVyVHJlZVNjb3Bl
KGVsZW1lbnQpLmFjdGl2ZUVsZW1lbnQgIT0gZWxlbWVudCkgeworICAgICAgICBkZWJ1ZygnQWN0
dWFsIGFjdGl2ZUVsZW1lbnQgaXMgJyArIG93bmVyVHJlZVNjb3BlKGVsZW1lbnQpLmFjdGl2ZUVs
ZW1lbnQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIGlmIGFjdGl2ZUVs
ZW1lbnQgaXMgYSBzaGFkb3cgaG9zdCwgbWFrZSBzdXJlIHRoYXQgdGhlcmUgaXNuJ3QgYSBmb2N1
c2VkIGVsZW1lbnQgaW4gaXRzIHNoYWRvdyBET00gc3VidHJlZXMuCisgICAgdmFyIHNoYWRvd1Jv
b3QgPSB3aW5kb3cuaW50ZXJuYWxzLm9sZGVzdFNoYWRvd1Jvb3QoZWxlbWVudCk7CisgICAgd2hp
bGUgKHNoYWRvd1Jvb3QpIHsKKyAgICAgICAgaWYgKHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCkg
eworICAgICAgICAgICAgZGVidWcoJ0ZBSUxFRC4uLiBzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQg
aXMgJyArIHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCk7CisgICAgICAgICAgICBkZWJ1ZygnICAg
ICAgICAgIHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudC5pZCBpcyAnICsgc2hhZG93Um9vdC5hY3Rp
dmVFbGVtZW50LmlkKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICBzaGFkb3dSb290ID0gd2luZG93LmludGVybmFscy55b3VuZ2VyU2hhZG93Um9vdChzaGFk
b3dSb290KTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEZv
Y3VzT25OZXh0KGlkKQoreworICAgIGZvY3VzTmV4dCgpOworICAgIHNob3VsZEZvY3VzT24oaWQp
OworfQorCitmdW5jdGlvbiBzaG91bGRGb2N1c09uUHJldmlvdXMoaWQpCit7CisgICAgZm9jdXNQ
cmV2aW91cygpOworICAgIHNob3VsZEZvY3VzT24oaWQpOworfQorCitmdW5jdGlvbiBmb2N1c05l
eHQoKQoreworICAgIGZvY3VzZWRFbGVtZW50ID0gbnVsbDsKKyAgICBldmVudFNlbmRlci5rZXlE
b3duKCdcdCcpOworfQorCitmdW5jdGlvbiBmb2N1c1ByZXZpb3VzKCkKK3sKKyAgICBmb2N1c2Vk
RWxlbWVudCA9IG51bGw7CisgICAgZXZlbnRTZW5kZXIua2V5RG93bignXHQnLCBbJ3NoaWZ0S2V5
J10pOworfQorCitmdW5jdGlvbiBvbkZvY3VzKGV2ZW50KSB7CisgICAgZm9jdXNlZEVsZW1lbnQg
PSBldmVudC50YXJnZXQ7CisgICAgY29uc29sZS5sb2coJ29uZm9jdXM6JyArIGZvY3VzZWRFbGVt
ZW50LmlkKTsKK30KKworZnVuY3Rpb24gYWRkRm9jdXNFdmVudExpc3RlbmVyKGVsZW1lbnQpIHsK
KyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25Gb2N1cywgZmFsc2UpOwor
fQorCitmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsRGVlcGx5KHJvb3ROb2RlLCBxdWVyeSkgewor
ICAgIHZhciBub2RlcyA9IHJvb3ROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwocXVlcnkpOworICAgIHZh
ciByZXN1bHRzID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7ICsr
aSkgeworICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldOworICAgICAgICByZXN1bHRzLnB1c2go
bm9kZSk7CisgICAgICAgIHZhciBzaGFkb3dSb290ID0gaW50ZXJuYWxzLm9sZGVzdFNoYWRvd1Jv
b3Qobm9kZSk7CisgICAgICAgIHdoaWxlIChzaGFkb3dSb290KSB7CisgICAgICAgICAgICByZXN1
bHRzID0gcmVzdWx0cy5jb25jYXQocXVlcnlTZWxlY3RvckFsbERlZXBseShzaGFkb3dSb290LCBx
dWVyeSkpOworICAgICAgICAgICAgc2hhZG93Um9vdCA9IGludGVybmFscy55b3VuZ2VyU2hhZG93
Um9vdChzaGFkb3dSb290KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0czsK
K30KKworZnVuY3Rpb24gcHJlcGFyZURPTVRyZWUocGFyZW50KQoreworICAgIHBhcmVudC5hcHBl
bmRDaGlsZCgKKyAgICAgICAgLy8gRklYTUU6IFVzZSBtb3JlIGRlc2NyaXB0aXZlIG5hbWluZyBm
b3IgJ2lkJy4KKyAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ3RvcC1kaXYnfSwKKyAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnaW5wdXQnLCB7J2lkJzogJ2lucHV0LUEtMScsICd0
YWJpbmRleCc6IDF9KSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnaW5wdXQnLCB7J2lk
JzogJ2lucHV0LUItMScsICd0YWJpbmRleCc6IDF9KSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnaW5wdXQnLCB7J2lkJzogJ2lucHV0LUEtMCcsICd0YWJpbmRleCc6IDB9KSwKKyAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LUEnLCAndGFiaW5kZXgn
OiAtMX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdpbnB1dCcsIHsnaWQnOiAn
aW5wdXQtMScsICd0YWJpbmRleCc6IDF9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ25lc3RlZC1ob3N0JywgJ3RhYmluZGV4JzogMzB9
LCAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnaW5wdXQnLCB7J3RhYmluZGV4JzogLTF9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2lucHV0JywgeydpZCc6ICdpbnB1
dC0xNScsICd0YWJpbmRleCc6IDE1fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXQtMjUnLCAndGFi
aW5kZXgnOiAyNX0pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnaW5wdXQnLCB7J2lkJzogJ2lucHV0LTIwJywgJ3RhYmluZGV4JzogMjB9KSkpLAorICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXQtQy0xJywgJ3RhYmlu
ZGV4JzogMX0pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdpbnB1dCcsIHsnaWQnOiAn
aW5wdXQtQi0wJywgJ3RhYmluZGV4JzogMH0pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2hvc3QtQicsICd0YWJpbmRleCc6IDF9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnaW5wdXQnLCB7J2lkJzogJ29sZGVyLWlucHV0LUEtMCcsICd0YWJp
bmRleCc6IDB9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdp
bnB1dCcsIHsnaWQnOiAnb2xkZXItaW5wdXQtQS0xJywgJ3RhYmluZGV4JzogMX0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6
ICcjbGlnaHQtY2hpbGQtc2VsZWN0ZWQtMCwgI2xpZ2h0LWNoaWxkLXNlbGVjdGVkLTEnfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnaW5wdXQnLCB7J2lkJzog
J29sZGVyLWlucHV0LUItMCcsICd0YWJpbmRleCc6IDB9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdpbnB1dCcsIHsnaWQnOiAnb2xkZXItaW5wdXQtQi0xJywg
J3RhYmluZGV4JzogMX0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2lucHV0
JywgeydpZCc6ICd5b3VuZ2VyLWlucHV0LUEtMCcsICd0YWJpbmRleCc6IDB9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdpbnB1dCcsIHsnaWQnOiAneW91bmdl
ci1pbnB1dC1BLTEnLCAndGFiaW5kZXgnOiAxfSksICAvLyBUaGUgZmlyc3Qgbm9kZSBpbiB0aGUg
Zm9jdXNTY29wZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3No
YWRvdycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2lucHV0
JywgeydpZCc6ICd5b3VuZ2VyLWlucHV0LUItMCcsICd0YWJpbmRleCc6IDB9KSwgIC8vIFRoZSBs
YXN0IG5vZGUgaW4gdGhlIGZvY3VzU2NvcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdpbnB1dCcsIHsnaWQnOiAneW91bmdlci1pbnB1dC1CLTEnLCAndGFiaW5k
ZXgnOiAxfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnaW5wdXQn
LCB7J2lkJzogJ2xpZ2h0LWNoaWxkLXNlbGVjdGVkLTAnLCAndGFiaW5kZXgnOiAwfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdpbnB1dCcsIHsnaWQnOiAnbGlnaHQt
Y2hpbGQtc2VsZWN0ZWQtMScsICd0YWJpbmRleCc6IDF9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2lucHV0JywgeydpZCc6ICdsaWdodC1jaGlsZC1ub24tc2VsZWN0
ZWQtMScsICd0YWJpbmRleCc6IDF9KSksCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2lu
cHV0JywgeydpZCc6ICdpbnB1dC1ELTEnLCAndGFiaW5kZXgnOiAxfSksIAorICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXQtQy0wJywgJ3RhYmluZGV4Jzog
MH0pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtQycs
ICd0YWJpbmRleCc6IC0xfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2lucHV0
Jywgeyd0YWJpbmRleCc6IC0xfSkpKSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnaW5w
dXQnLCB7J2lkJzogJ2lucHV0LUQtMCcsICd0YWJpbmRleCc6IDB9KSkpOworICAgIAorICAgIHZh
ciBub2RlcyA9IHF1ZXJ5U2VsZWN0b3JBbGxEZWVwbHkoZG9jdW1lbnQsICdpbnB1dCwgZGl2Jyk7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgYWRk
Rm9jdXNFdmVudExpc3RlbmVyKG5vZGVzW2ldKTsKKyAgICAKKyAgICBwYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAvLyBkZWJ1Zyh3aW5kb3cuaW50ZXJuYWxzLmR1bXBSZWlmaWVkVHJlZUZvcihkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndG9wLWRpdicpKSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgdGVzdEZhaWxlZCgnJyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBwcmVwYXJlRE9NVHJlZShkb2N1bWVudC5ib2R5KTsKKworICAgIC8vIEZJWE1FOiBTZXBlcmF0
ZSBlYWNoIHRlc3Qgc28gdGhhdCBvbmUgdGVzdCBkb2VzIG5vdCBlZmZlY3QgdGhlIGZvbGxvd2lu
ZyB0ZXN0cy4KKyAgICBkZWJ1ZygnRm9jdXNpbmcgaW5wdXQtQS0xLicpOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpbnB1dC1BLTEnKS5mb2N1cygpOworICAgIGRlYnVnKCdUcmF2ZXJz
aW5nIGVsZW1lbnRzIHdoaWNoIGhhdmUgdGFiaW5kZXg9MScpOworICAgIHNob3VsZEZvY3VzT25O
ZXh0KCdpbnB1dC1CLTEnKTsKKworICAgIGRlYnVnKCdcblRyYXZlcnNpbmcgZWxlbWVudHMgd2hp
Y2ggaGF2ZSB0YWJpbmRleD0xJyk7CisgICAgZGVidWcoJ1Nob3VsZCBza2lwIGV2ZXJ5IGVsZW1l
bnRzIGluIG5vbi1mb2N1c2FibGUgc2hhZG93IGhvc3QgZXZlbiBpZiB0aGV5IGhhdmUgdGFiaW5k
ZXg9MS4nKTsKKyAgICBzaG91bGRGb2N1c09uTmV4dCgnaW5wdXQtQy0xJyk7CisgICAgCisgICAg
ZGVidWcoJ1xuRm9jdXNhYmxlIHNoYWRvdyBob3N0IG11c3QgYmUgdHJhdmVyc2VkLicpOworICAg
IHNob3VsZEZvY3VzT25OZXh0KCdob3N0LUInKTsKKworICAgIGRlYnVnKCdcbkVudGVyaW5nIGEg
Zm9jdXMgc2NvcGUgb2YgdGhlIHNoYWRvdyBob3N0LicpOworICAgIGRlYnVnKCdUaGUgZmlyc3Qg
Zm9jdXNhYmxlIG5vZGUgaW4gc2hhZG93IERPTSBuYXZpZ2F0aW9uLicpOworICAgIHNob3VsZEZv
Y3VzT25OZXh0KCdob3N0LUIvL3lvdW5nZXItaW5wdXQtQS0xJyk7CisKKyAgICBkZWJ1ZygnXG5B
ICJzaGFkb3ciIGVsZW1lbnQgc2hvdWxkIGJlIHJlc29sdmVkIGNvcnJlY3RseS4nKTsKKyAgICBz
aG91bGRGb2N1c09uTmV4dCgnaG9zdC1CL29sZGVyLWlucHV0LUEtMScpOworCisgICAgZGVidWco
J1xuQSAiY29udGVudCIgZWxlbWVudCBzaG91bGQgYmUgcmVzb2x2ZWQgY29ycmVjdGx5LicpOwor
ICAgIHNob3VsZEZvY3VzT25OZXh0KCdsaWdodC1jaGlsZC1zZWxlY3RlZC0xJyk7CisgICAgc2hv
dWxkRm9jdXNPbk5leHQoJ2hvc3QtQi9vbGRlci1pbnB1dC1CLTEnKTsKKyAgICBzaG91bGRGb2N1
c09uTmV4dCgnaG9zdC1CLy95b3VuZ2VyLWlucHV0LUItMScpOworICAgIAorICAgIGRlYnVnKCdc
bkFsbCBlbGVtZW50cyB3aXRoIHRhYmluZGV4PTEgd2VyZSB0cmF2ZXJzZWQuIFNvIGVsZW1lbnRz
IHdpdGggdGFiaW5kZXg9MCBmb2xsb3cuJyk7CisgICAgc2hvdWxkRm9jdXNPbk5leHQoJ2hvc3Qt
Qi8veW91bmdlci1pbnB1dC1BLTAnKTsKKyAgICBzaG91bGRGb2N1c09uTmV4dCgnaG9zdC1CL29s
ZGVyLWlucHV0LUEtMCcpOworICAgIHNob3VsZEZvY3VzT25OZXh0KCdsaWdodC1jaGlsZC1zZWxl
Y3RlZC0wJyk7CisgICAgc2hvdWxkRm9jdXNPbk5leHQoJ2hvc3QtQi9vbGRlci1pbnB1dC1CLTAn
KTsKKyAgICBzaG91bGRGb2N1c09uTmV4dCgnaG9zdC1CLy95b3VuZ2VyLWlucHV0LUItMCcpOwor
CisgICAgZGVidWcoJ1xuRXhpc3RpbmcgYSBmb2N1cyBzY29wZSBvZiBzaGFkb3cgaG9zdC4gVHJh
dmVyc2UgdGhlIG5leHQgZm9jdXNhbGJlIGVsZW1lbnQgb2YgdGhlIHNoYWRvdyBob3N0LicpOwor
ICAgIHNob3VsZEZvY3VzT25OZXh0KCdpbnB1dC1ELTEnKTsKKworICAgIGRlYnVnKCdcbkFsbCBl
bGVtZW50cyB3aXRoIHRhYmluZGV4PTEgd2VyZSB0cmF2ZXJzZWQgaW4gZG9jdW1lbnQgb3JkZXIu
IFNvIHRyYXZlcnNlIGVsZW1lbnRzIHdpdGggdGFiaW5kZXg9MCcpOworICAgIHNob3VsZEZvY3Vz
T25OZXh0KCdpbnB1dC1BLTAnKQorICAgIAorICAgIGRlYnVnKCdcbk5vbi1mb2N1c2FibGUgc2hh
ZG93IGhvc3QgaXMgInJlcGxhY2VkIiB3aXRoIGl0cyBzaGFkb3cgRE9NIG5hdmlnYXRpb24uJyk7
CisgICAgc2hvdWxkRm9jdXNPbk5leHQoJ2hvc3QtQS9pbnB1dC0xJyk7CisgICAgc2hvdWxkRm9j
dXNPbk5leHQoJ2hvc3QtQS9pbnB1dC0yMCcpOworICAgIHNob3VsZEZvY3VzT25OZXh0KCdob3N0
LUEvbmVzdGVkLWhvc3QnKTsKKyAgICAKKyAgICBkZWJ1ZygnXG5FbnRlcmluZyBhIG5lc3RlZCBz
aGFkb3cgaG9zdC4nKTsKKyAgICBzaG91bGRGb2N1c09uTmV4dCgnaG9zdC1BL25lc3RlZC1ob3N0
L2lucHV0LTE1Jyk7CisgICAgc2hvdWxkRm9jdXNPbk5leHQoJ2hvc3QtQS9uZXN0ZWQtaG9zdC9p
bnB1dC0yNScpOworICAgIAorICAgIGRlYnVnKCdcbkV4aXN0aW5nIG5lc3RlZCBzaGFkb3cgaG9z
dC4nKQorICAgIHNob3VsZEZvY3VzT25OZXh0KCdpbnB1dC1CLTAnKTsKKyAgICBzaG91bGRGb2N1
c09uTmV4dCgnaW5wdXQtQy0wJyk7CisKKyAgICBkZWJ1ZygnXG5Ob24tZm9jdXNhYmxlIHNoYWRv
dyBob3N0IHdoaWNoIGRvZXMgbm90IGhhdmUgZm9jdXNhYmxlIGVsZW1lbnRzIHdhcyBza2lwcGVk
LicpOworICAgIHNob3VsZEZvY3VzT25OZXh0KCdpbnB1dC1ELTAnKTsKKworICAgIGRlYnVnKCdX
cmFwcGVkIHRvIHRoZSBmaXJzdCBlbGVtZW50LicpOworICAgIHNob3VsZEZvY3VzT25OZXh0KCdp
bnB1dC1BLTEnKTsKKyAgICAKKyAgICBkZWJ1ZygnXG5TdGFydGluZyB0byBnbyBpbiByZXZlcnNl
IGRpcmVjdGlvbi4nKTsKKyAgICBkZWJ1ZygnVHJhdmVyc2UgdGhlIExhc3QgZm9jdXNhYmxlIGVs
ZW1lbnQgaW4gZG9jdW1lbnQuJyk7CisgICAgc2hvdWxkRm9jdXNPblByZXZpb3VzKCdpbnB1dC1E
LTAnKTsKKyAgICBzaG91bGRGb2N1c09uUHJldmlvdXMoJ2lucHV0LUMtMCcpOworICAgIHNob3Vs
ZEZvY3VzT25QcmV2aW91cygnaW5wdXQtQi0wJyk7CisKKyAgICBkZWJ1ZygnXG5Ucmlja3kgbmF2
aWdhdGlvbi4gVHJhdmFyc2UgdGhlIGRlZXBseSBsYXN0IGVsZW1lbnQgaW4gbmVzdGVkIHNoYWRv
dyBET00gbmF2aWdhdGlvbi4nKTsKKyAgICBzaG91bGRGb2N1c09uUHJldmlvdXMoJ2hvc3QtQS9u
ZXN0ZWQtaG9zdC9pbnB1dC0yNScpOworICAgIHNob3VsZEZvY3VzT25QcmV2aW91cygnaG9zdC1B
L25lc3RlZC1ob3N0L2lucHV0LTE1Jyk7CisgICAgc2hvdWxkRm9jdXNPblByZXZpb3VzKCdob3N0
LUEvbmVzdGVkLWhvc3QnKTsKKyAgICBzaG91bGRGb2N1c09uUHJldmlvdXMoJ2hvc3QtQS9pbnB1
dC0yMCcpOworICAgIHNob3VsZEZvY3VzT25QcmV2aW91cygnaG9zdC1BL2lucHV0LTEnKTsKKwor
ICAgIGRlYnVnKCdcbkV4aXN0aW5nIGEgc2hhZG8gaG9zdCcpOworICAgIHNob3VsZEZvY3VzT25Q
cmV2aW91cygnaW5wdXQtQS0wJyk7CisKKyAgICBkZWJ1ZygnXG5BbGwgZWxlbWVudHMgd2l0aCB0
YWJpbmRleD0wIHdlcmUgdHJhdmVyc2VkLiBTbyB0cmF2ZXJzZSBlbGVtZW50cyB3aXRoIHRhYmlu
ZGV4PTEgaW4gcmV2ZXJzZSBvcmRlci4nKTsKKyAgICBzaG91bGRGb2N1c09uUHJldmlvdXMoJ2lu
cHV0LUQtMScpOworCisgICAgZGVidWcoJ1xuWWV0IGFub3RoZXIgdHJpY2t5IHBhcnQuIFNob3Vs
ZCB0cmF2ZXJzZSB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSByZWlmaWVkIHRyZWUsIGNvbnNpZGVy
aW5nIGFsc28gdGFiaW5kZXguJyk7CisgICAgc2hvdWxkRm9jdXNPblByZXZpb3VzKCdob3N0LUIv
L3lvdW5nZXItaW5wdXQtQi0wJyk7CisgICAgc2hvdWxkRm9jdXNPblByZXZpb3VzKCdob3N0LUIv
b2xkZXItaW5wdXQtQi0wJyk7CisgICAgc2hvdWxkRm9jdXNPblByZXZpb3VzKCdsaWdodC1jaGls
ZC1zZWxlY3RlZC0wJyk7CisgICAgc2hvdWxkRm9jdXNPblByZXZpb3VzKCdob3N0LUIvb2xkZXIt
aW5wdXQtQS0wJyk7CisgICAgc2hvdWxkRm9jdXNPblByZXZpb3VzKCdob3N0LUIvL3lvdW5nZXIt
aW5wdXQtQS0wJyk7CisKKyAgICBzaG91bGRGb2N1c09uUHJldmlvdXMoJ2hvc3QtQi8veW91bmdl
ci1pbnB1dC1CLTEnKTsKKyAgICBzaG91bGRGb2N1c09uUHJldmlvdXMoJ2hvc3QtQi9vbGRlci1p
bnB1dC1CLTEnKTsKKyAgICBzaG91bGRGb2N1c09uUHJldmlvdXMoJ2xpZ2h0LWNoaWxkLXNlbGVj
dGVkLTEnKTsKKyAgICBzaG91bGRGb2N1c09uUHJldmlvdXMoJ2hvc3QtQi9vbGRlci1pbnB1dC1B
LTEnKTsKKyAgICBzaG91bGRGb2N1c09uUHJldmlvdXMoJ2hvc3QtQi8veW91bmdlci1pbnB1dC1B
LTEnKTsKKworICAgIGRlYnVnKCdcbkEgc2hhZG93IGhvc3Qgc2hvdWxkIGJlIHNlbGVjdGVkIGp1
c3QgYWZ0ZXIgdGhlIGZpcnN0IGVsZW1lbnQgaW4gaXRzIHJlaWZpZWQgdHJlZS4nKTsKKyAgICAv
LyAnZm9jdXMnIGV2ZW50IGlzIG5vdCBjYWxsZWQgaGVyZSBzaW5jZSBhIGZvY3VzIG1vdmVkIHdp
dGhpbiB0aGUgc2FtZSBob3N0LgorICAgIHNob3VsZEZvY3VzT25QcmV2aW91cygnaG9zdC1CJyk7
CisgICAgc2hvdWxkRm9jdXNPblByZXZpb3VzKCdpbnB1dC1DLTEnKTsKKyAgICBzaG91bGRGb2N1
c09uUHJldmlvdXMoJ2lucHV0LUItMScpOworICAgIHNob3VsZEZvY3VzT25QcmV2aW91cygnaW5w
dXQtQS0xJyk7CisgICAgCisgICAgZGVidWcoJ1xuV3JhcHBlZCB0byB0aGUgbGFzdCBlbGVtZW50
LicpOworICAgIHNob3VsZEZvY3VzT25QcmV2aW91cygnaW5wdXQtRC0wJyk7CisKKyAgICBkZWJ1
ZygnVGVzdCBmaW5pc2hlZC4nKTsKK30KKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgd2lu
ZG93LmludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKK3Rl
c3QoKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0TXVs
dGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoZmFsc2UpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVk
LXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDJhNTNl
ZWZmN2RhYjg0OTFmYTNmMmRlNGM1YzZlMDc2NThkNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNjEgQEAKK1Rlc3RzIGZvciBTaGFkb3dSb290IEpTIEFQSXMuIENhbiBv
bmx5IHJ1biB3aXRoaW4gRFJUCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitTaGFk
b3dSb290IHNob3VsZCBiZSB1c2VkLgorRElWCSBDTEFTUz1hCisJRElWCSBDTEFTUz1iCisKKzxj
b250ZW50PiBlbGVtZW50IHNob3VsZCBzZWxlY3QgbGlnaHQgY2hpbGRyZW4KK0RJVgkgQ0xBU1M9
YQorCURJVgkgQ0xBU1M9YgorCURJVgkgQ0xBU1M9YworCURJVgkgQ0xBU1M9ZAorCit0ZXN0IGZv
ciA8Y29udGVudD4gZWxlbWVudCBzZWxlY3Rvci4KK0RJVgkgQ0xBU1M9YQorCURJVgkgQ0xBU1M9
YgorCURJVgkgQ0xBU1M9ZAorCitMaWdodCBjaGlsZHJlbiBzaG91bGQgYmUgc2VsZWN0ZWQgb25s
eSBhdCBvbmUuCitESVYJIENMQVNTPWEKKwlESVYJIENMQVNTPWIKKwlESVYJIENMQVNTPWQKKwlE
SVYJIENMQVNTPWMKKwlESVYJIENMQVNTPWUKKworPGNvbnRlbnQ+IGVsZW1lbnQgY2FuIGhhdmUg
ZmFsbGJhY2sgZWxlbWVudHMuCitESVYJIENMQVNTPWEKKwlESVYJIENMQVNTPWIKKwlESVYJIENM
QVNTPWYxCisJRElWCSBDTEFTUz1mMgorCitGYWxsYmFjayBlbGVtZW50cyBzaG91bGQgbm90IGJl
IHVzZWQgaWYgPGNvbnRlbnQ+IGVsZW1lbnQgc2VsZWN0cyBhbnkgZWxlbWVudHMuCitESVYJIENM
QVNTPWEKKwlESVYJIENMQVNTPWIKKwlESVYJIENMQVNTPWMKKworTmVzdGVkIFNoYWRvd1Jvb3Rz
CitESVYJIENMQVNTPWEKKwlESVYJIENMQVNTPWIKKwkJRElWCSBDTEFTUz1jCisJCURJVgkgQ0xB
U1M9ZQorCQlESVYJIENMQVNTPWQKKwlESVYJIENMQVNTPWYKKwlESVYJIENMQVNTPWgKKwlESVYJ
IENMQVNTPWkKKwlESVYJIENMQVNTPWcKKworTXVsdGlwbGUgU2hhZG93Um9vdHMKK0RJVgkgQ0xB
U1M9YQorCURJVgkgQ0xBU1M9ZAorCURJVgkgQ0xBU1M9YgorCURJVgkgQ0xBU1M9ZgorCURJVgkg
Q0xBU1M9YworCURJVgkgQ0xBU1M9ZQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIwYTI3YjFiODAw
NTQyOTQzN2Q3YWQ0ZGFjOTlkYzRlZTBjNmM2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKQEAgLTAsMCAr
MSwxNjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIGZvciBT
aGFkb3dSb290IEpTIEFQSXMuIENhbiBvbmx5IHJ1biB3aXRoaW4gRFJUIik7CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworCitmdW5jdGlvbiBkdW1wTm9k
ZShub2RlKQoreworICAgIHZhciBvdXRwdXQgPSBub2RlLm5vZGVOYW1lICsgIlx0IjsKKyAgICBp
ZiAobm9kZS5pZCkKKyAgICAgICAgb3V0cHV0ICs9ICcgaWQ9JyArIG5vZGUuaWQ7CisgICAgaWYg
KG5vZGUuY2xhc3NOYW1lKQorICAgICAgICBvdXRwdXQgKz0gJyBjbGFzcz0nICsgbm9kZS5jbGFz
c05hbWU7CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworZnVuY3Rpb24gZHVtcFJlaWZpZWRUcmVl
KG5vZGUsIGluZGVudCkKK3sKKyAgICBpbmRlbnQgPSBpbmRlbnQgfHwgIiI7CisgICAgdmFyIG91
dHB1dCA9IGluZGVudCArIGR1bXBOb2RlKG5vZGUpICsgIlxuIjsKKyAgICB2YXIgY2hpbGQ7Cisg
ICAgZm9yIChjaGlsZCA9IGludGVybmFscy5maXJzdENoaWxkSW5SZWlmaWVkVHJlZShub2RlKTsg
Y2hpbGQ7IGNoaWxkID0gaW50ZXJuYWxzLm5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShjaGlsZCkp
CisgICAgICAgICBvdXRwdXQgKz0gZHVtcFJlaWZpZWRUcmVlKGNoaWxkLCBpbmRlbnQgKyAiXHQi
KTsKKyAgICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBsYXN0Tm9kZUluUmVpZmllZFRy
ZWUocm9vdCkKK3sKKyAgICB2YXIgbGFzdE5vZGUgPSByb290OworICAgIHdoaWxlIChpbnRlcm5h
bHMubGFzdENoaWxkSW5SZWlmaWVkVHJlZShsYXN0Tm9kZSkpCisgICAgICAgIGxhc3ROb2RlID0g
aW50ZXJuYWxzLmxhc3RDaGlsZEluUmVpZmllZFRyZWUobGFzdE5vZGUpOworICAgIHJldHVybiBs
YXN0Tm9kZTsKK30KKworZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5nSW5Gb3dh
cmQocm9vdCkKK3sKKyAgICB2YXIgbm9kZSA9IHJvb3Q7CisgICAgdmFyIGxhc3QgPSBsYXN0Tm9k
ZUluUmVpZmllZFRyZWUocm9vdCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgZGVidWco
ZHVtcE5vZGUobm9kZSkpOworICAgICAgICBpZiAobm9kZSA9PSBsYXN0KQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIG5vZGUgPSBpbnRlcm5hbHMudHJhdmVyc2VOZXh0Tm9kZUluUmVpZmll
ZFRyZWUobm9kZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93UmVpZmllZFRyZWVCeVRyYXZl
cnNpbmdJbkJhY2t3YXJkKHJvb3QpCit7CisgICAgdmFyIG5vZGUgPSBsYXN0Tm9kZUluUmVpZmll
ZFRyZWUocm9vdCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgZGVidWcoZHVtcE5vZGUo
bm9kZSkpOworICAgICAgICBpZiAobm9kZSA9PSByb290KQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIG5vZGUgPSBpbnRlcm5hbHMudHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVl
KG5vZGUpOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVlKG5vZGUpCit7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub2RlKTsKKyAgICBkb2N1bWVudC5ib2R5Lm9m
ZnNldExlZnQ7CisKKyAgICBkZWJ1ZygnUmVpZmllZCBUcmVlOicpOworICAgIGRlYnVnKGR1bXBS
ZWlmaWVkVHJlZShub2RlKSk7CisKKyAgICBkZWJ1ZygnVHJhdmVyc2UgaW4gZm93YXJkLicpOwor
ICAgIHNob3dSZWlmaWVkVHJlZUJ5VHJhdmVyc2luZ0luRm93YXJkKG5vZGUpOworCisgICAgZGVi
dWcoJ1RyYXZlcnNlIGluIGJhY2t3YXJkLicpOworICAgIHNob3dSZWlmaWVkVHJlZUJ5VHJhdmVy
c2luZ0luQmFja3dhcmQobm9kZSk7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKK2RlYnVnKCdTaGFk
b3dSb290IHNob3VsZCBiZSB1c2VkLicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYyd9KSkpOworCitkZWJ1ZygnQSBjb250ZW50IGVsZW1lbnQgc2hvdWxkIHNl
bGVjdCBsaWdodCBjaGlsZHJlbicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsn
aWQnOiAnYyd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSkp
KTsKKworZGVidWcoJ1Rlc3QgZm9yIGNvbnRlbnQgZWxlbWVudCBzZWxlY3Rvci4nKTsKK3Nob3dS
ZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0
JzogJy5kJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSks
CisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pLAorICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZSd9KSkpOworCitkZWJ1ZygnTGlnaHQgY2hp
bGRyZW4gc2hvdWxkIGJlIHNlbGVjdGVkIG9ubHkgYXQgb25jZS4nKTsKK3Nob3dSZWlmaWVkVHJl
ZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5kJ30p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pLAorICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnZSd9KSkpOworCitkZWJ1ZygnQSBjb250ZW50IGVsZW1lbnQgY2Fu
IGhhdmUgZmFsbGJhY2sgZWxlbWVudHMuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcueid9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZjEn
fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdmMid9KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsn
aWQnOiAnYyd9KSkpOworCitkZWJ1ZygnRmFsbGJhY2sgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSB1
c2VkIGlmIDxjb250ZW50PiBlbGVtZW50IHNlbGVjdHMgYW55IGVsZW1lbnRzLicpOworc2hvd1Jl
aWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3Qn
OiAnLmMnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2YxJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZjInfSkpKSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKTsKKworZGVidWcoJ1Rlc3QgZm9yIE5l
c3RlZCBTaGFkb3dSb290cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdiJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnZSd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2YnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2cnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnaCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2kn
fSkpKTsKKworZGVidWcoJ1Rlc3QgZm9yIE11bHRpcGxlIFNoYWRvd1Jvb3RzLicpOworc2hvd1Jl
aWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpLAor
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdk
J30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93Jyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2UnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZid9KSkpOwor
CisvLyBGSVhNRTogTmVlZHMgYSByb2J1c3Qgd2F5IHRvIHJlc2V0IHRoaXMgZmxhZy4KK2lmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dT
dWJ0cmVlc0VuYWJsZWQoZmFsc2UpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMvc2hhZG93
LWRvbS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMvc2hhZG93LWRv
bS5qcwppbmRleCAyOTcxYjdlMmE0YTgxNmI2NmI0MTgxODI3OWE0ZDU4MTVhNTYxZmRkLi41Mjdh
MzI2MDMzZTg1OTcyZTg5MTQ1MGYwOTdkODJhYWI0MzlkNzRhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3NoYWRvdy1kb20uanMKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zaGFkb3ctZG9tLmpzCkBAIC0xLDMgKzEs
NSBAQAorLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZpbGUgdG8gc2hhZG93LWRvbS11dGlsLmpzCisK
IGZ1bmN0aW9uIGNyZWF0ZVNoYWRvd1Jvb3QoKQogewogICAgIHJldHVybiB7J2lzU2hhZG93Um9v
dCc6IHRydWUsCkBAIC0zMyw2ICszNSwxNSBAQCBmdW5jdGlvbiBpc1NoYWRvd1Jvb3Qobm9kZSkK
ICAgICByZXR1cm4gbm9kZS5ob3N0OwogfQogCisvLyBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gaGF2
ZSB0aGlzIGZ1bmN0aW9uIG9uIHdpbmRvd3MuaW50ZXJuYWxzLgorZnVuY3Rpb24gb3duZXJUcmVl
U2NvcGUobm9kZSkKK3sKKyAgd2hpbGUgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKQorICAgIG5v
ZGUgPSBub2RlLnBhcmVudE5vZGU7CisgIHJldHVybiBub2RlOworfQorCisvLyBEZXByZWNhdGUg
dGhpcyAnbmFtaW5nJyBzaW5jZSB0aGlzIG1heSByZXR1cm4gU2hhZG93Um9vdCwgd2hpY2ggaXMg
bm90IGFuIEVsZW1lbnQuCiAvLyBZb3UgY2FuIHNwZWZpZnkgeW91bmdlclNoYWRvd1Jvb3QgYnkg
Y29uc2VjdXRpdmUgc2xhc2hlcy4KIC8vIFNlZSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
Z2V0LWVsZW1lbnQtYnktaWQtaW4tc2hhZG93LXJvb3QuaHRtbCBmb3IgYWN0dWFsIHVzYWdlcy4K
IGZ1bmN0aW9uIGdldEVsZW1lbnRJblNoYWRvd1RyZWVTdGFjayhwYXRoKQpAQCAtNDksNCArNjAs
MyBAQCBmdW5jdGlvbiBnZXRFbGVtZW50SW5TaGFkb3dUcmVlU3RhY2socGF0aCkKICAgICB9CiAg
ICAgcmV0dXJuIG5vZGU7CiB9Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLXdpdGgtbm9kZS1kaXN0cmlidXRpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVu
dHMtd2l0aC1ub2RlLWRpc3RyaWJ1dGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU1ODM5
NWMzY2JiMTk3ZGM5Zjg2MmE2ZWQwYzI4NTZiYzZmMzRhNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLXdpdGgtbm9k
ZS1kaXN0cmlidXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRvIGVu
c3VyZSB0aGF0IHNoYWRvdyBET00gYm91bmRhcnkgaXMgbm90IGNyb3NzZWQgZHVyaW5nIGV2ZW50
IHByb3BhZ2F0aW9uLiBDYW4gb25seSBydW4gd2l0aGluIERSVC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKKworTW92ZSBtb3VzZSBmcm9tIGEgbm9kZSB0byBpdHMgc2libGluZyBu
b2RlLiBBbGwgbm9kZXMgYXJlIG91dHNpZGUgb2Ygc2hhZG93IGJvdW5kYXJ5LgorTW92aW5nIG1v
dXNlIGZyb20gbGlnaHRDaGlsZEQgdG8gaG9zdEIKK1BBU1MgZGlzcGF0Y2hlZEV2ZW50KCJtb3Vz
ZW92ZXIiKSBpcyBbImhvc3RCKDwtbGlnaHRDaGlsZEQpKEBob3N0QikiLCAiaG9zdEIoPC1saWdo
dENoaWxkRCkoQGRpdkEpIl0KK1BBU1MgZGlzcGF0Y2hlZEV2ZW50KCJtb3VzZW91dCIpIGlzIFsi
bGlnaHRDaGlsZEQoPC1ob3N0QikoQGxpZ2h0Q2hpbGREKSIsICJsaWdodENoaWxkRCg8LWhvc3RC
KShAY29udGVudEMpIl0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LWJvdW5kYXJ5LWV2ZW50cy13aXRoLW5vZGUtZGlzdHJpYnV0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWJvdW5kYXJ5LWV2ZW50cy13aXRoLW5vZGUtZGlzdHJp
YnV0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU3NmVhZGM4YTBiODgwMjg1YmNiMTZiYzM3YWY2MjVh
ZTA2ZDA2YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctYm91bmRhcnktZXZlbnRzLXdpdGgtbm9kZS1kaXN0cmlidXRpb24uaHRtbApAQCAtMCww
ICsxLDEzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2NyZWF0ZS1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2PgorPHByZSBp
ZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRvIGVuc3Vy
ZSB0aGF0IHNoYWRvdyBET00gYm91bmRhcnkgaXMgbm90IGNyb3NzZWQgZHVyaW5nIGV2ZW50IHBy
b3BhZ2F0aW9uLiBDYW4gb25seSBydW4gd2l0aGluIERSVC4iKTsKKworLy8gRklYTUU6IE1ha2Ug
YSBzZXBhcmF0ZSB1dGlsaXR5IGpzIGZpbGUgYW5kIHNoYXJlIGl0LgorZnVuY3Rpb24gbW92ZU1v
dXNlT3ZlcihlbGVtZW50KQoreworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyIHx8ICF3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm47CisKKyAgICB2YXIgZGVmYXVsdFBhZGRpbmdT
aXplID0gMjA7CisgICAgdmFyIHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNl
dFdpZHRoIC8gMjsKKyAgICB2YXIgeTsKKyAgICBpZiAoZWxlbWVudC5oYXNDaGlsZE5vZGVzKCkg
fHwgd2luZG93LmludGVybmFscy5zaGFkb3dSb290KGVsZW1lbnQpKQorICAgICAgICB5ID0gZWxl
bWVudC5vZmZzZXRUb3AgKyBkZWZhdWx0UGFkZGluZ1NpemU7CisgICAgZWxzZQorICAgICAgICB5
ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7Cit9CisKK3ZhciBldmVudFJlY29yZHMgPSB7fTsK
KworZnVuY3Rpb24gY2xlYXJFdmVudFJlY29yZHMoKQoreworICAgIGV2ZW50UmVjb3JkcyA9IHt9
OworfQorCitmdW5jdGlvbiBkaXNwYXRjaGVkRXZlbnQoZXZlbnRUeXBlKQoreworICAgIHZhciBl
dmVudHMgPSBldmVudFJlY29yZHNbZXZlbnRUeXBlXTsKKyAgICBpZiAoIWV2ZW50cykKKyAgICAg
ICAgcmV0dXJuIFtdOworICAgIHJldHVybiBldmVudHM7Cit9CisKK2Z1bmN0aW9uIHJlY29yZEV2
ZW50KGV2ZW50KQoreworICAgIHZhciBldmVudFR5cGUgPSBldmVudC50eXBlCisgICAgaWYgKCFl
dmVudFJlY29yZHNbZXZlbnRUeXBlXSkgeworICAgICAgICBldmVudFJlY29yZHNbZXZlbnRUeXBl
XSA9IFtdCisgICAgfQorICAgIC8vIFJlY29yZHMgZWFjaCBldmVudCBpbiB0aGUgZm9sbG93aW5n
IGZvcm1hdCBwZXIgZXZlbnQgdHlwZToKKyAgICAvLyAgIGV2ZW50UmVjb3Jkc1tldmVudFR5cGVd
ID0gWyd0YXJnZXQuaWQoPC1yZWxhdGVkVGFyZ2V0LmlkKShAY3VycmVudFRhcmdldC5pZCknLCws
XQorICAgIC8vICAgKiBSZWxhdGVkVGFyZ2V0IGFuZCBjdXJyZW50VGFyZ2V0IG1heSBiZSBvbWl0
dGVkIGlmIHRoZXkgYXJlIG5vdCBkZWZpbmVkLgorICAgIC8vIEEgbmV3IGV2ZW50IGlzIHB1c2hl
ZCBiYWNrIHRvIHRoZSBhcnJheSBvZiBpdHMgZXZlbnQgdHlwZS4KKyAgICB2YXIgZXZlbnRTdHJp
bmcgPSAnJzsKKyAgICBldmVudFN0cmluZyArPSBldmVudC50YXJnZXQuaWQ7CisgICAgaWYgKGV2
ZW50LnJlbGF0ZWRUYXJnZXQpCisgICAgICAgIGV2ZW50U3RyaW5nICs9ICcoPC0nICsgZXZlbnQu
cmVsYXRlZFRhcmdldC5pZCArICcpJzsKKyAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldCkKKyAg
ICAgICAgZXZlbnRTdHJpbmcgKz0gJyhAJyArIGV2ZW50LmN1cnJlbnRUYXJnZXQuaWQgKyAnKSc7
CisgICAgaWYgKGV2ZW50LmV2ZW50UGhhc2UgPT0gMSkKKyAgICAgICAgZXZlbnRTdHJpbmcgKz0g
JyhjYXB0dXJpbmcgcGhhc2UpJzsKKyAgICBpZiAoZXZlbnQudGFyZ2V0ICYmIGV2ZW50LmN1cnJl
bnRUYXJnZXQgJiYgZXZlbnQudGFyZ2V0LmlkID09IGV2ZW50LmN1cnJlbnRUYXJnZXQuaWQpCisg
ICAgICAgIHNob3VsZEJlKCJldmVudC5ldmVudFBoYXNlIiwgIjIiLCB0cnVlKTsKKyAgICBldmVu
dFJlY29yZHNbZXZlbnRUeXBlXS5wdXNoKGV2ZW50U3RyaW5nKTsKK30KKworLy8gRklYTUU6IFN1
cHBvcnQgbXVsdGlwbGUgc2hhZG93LCBidXQgaG93IHRvIHNwZWNpZnkgcGFydGljdWxhciBzaGFk
b3dSb290PworZnVuY3Rpb24gZ2V0RWxlbWVudEluU2hhZG93KHBhdGgpCit7CisgICAgdmFyIGlk
cyA9IHBhdGguc3BsaXQoJy8nKTsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGlkc1swXSk7CisgICAgZm9yICh2YXIgaSA9IDE7IGVsZW1lbnQgIT0gbnVsbCAmJiBp
IDwgaWRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBzaGFkb3dSb290ID0gaW50ZXJuYWxz
LnNoYWRvd1Jvb3QoZWxlbWVudCk7CisgICAgICAgIGVsZW1lbnQgPSBpbnRlcm5hbHMuZ2V0RWxl
bWVudEJ5SWRJblNoYWRvd1Jvb3Qoc2hhZG93Um9vdCwgaWRzW2ldKTsKKyAgICB9CisgICAgcmV0
dXJuIGVsZW1lbnQ7Cit9CisKKworCitmdW5jdGlvbiBwcmVwYXJlRE9NVHJlZShwYXJlbnQpCit7
CisgICAgcGFyZW50LmFwcGVuZENoaWxkKAorICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnZGl2QScsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDogNDBweCd9LAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3RCJywgJ3N0eWxlJzogJ3BhZGRpbmctdG9w
OiA0MHB4J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywgeydp
ZCc6ICdjb250ZW50QycsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDogNDBweCd9KSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2xpZ2h0Q2hpbGRE
JywgJ3N0eWxlJzogJ3BhZGRpbmctdG9wOiA0MHB4J30pKSkpOworCisgICAgdmFyIGlkcyA9IFsn
ZGl2QScsICdob3N0QicsICdob3N0Qi9jb250ZW50QycsICdsaWdodENoaWxkRCddOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBlbGVtZW50
ID0gZ2V0RWxlbWVudEluU2hhZG93KGlkc1tpXSk7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcignbW91c2VvdmVyJywgcmVjb3JkRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIHJlY29yZEV2ZW50LCBmYWxzZSk7CisgICAg
fQorICAgIHBhcmVudC5vZmZzZXRMZWZ0OworfQorCitmdW5jdGlvbiBtb3ZlTW91c2Uob2xkRWxl
bWVudElkLCBuZXdFbGVtZW50SWQsIG1lc3NhZ2UpCit7CisgICAgZGVidWcoJ1xuJyArIG1lc3Nh
Z2UgKyAnXG4nICsgJ01vdmluZyBtb3VzZSBmcm9tICcgKyBvbGRFbGVtZW50SWQgKyAnIHRvICcg
KyBuZXdFbGVtZW50SWQpOworICAgIG1vdmVNb3VzZU92ZXIoZ2V0RWxlbWVudEluU2hhZG93KG9s
ZEVsZW1lbnRJZCkpOworICAgIGNsZWFyRXZlbnRSZWNvcmRzKCk7CisgICAgbW92ZU1vdXNlT3Zl
cihnZXRFbGVtZW50SW5TaGFkb3cobmV3RWxlbWVudElkKSk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBwcmVwYXJlRE9NVHJlZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpKTsKKworICAgIG1vdmVNb3VzZSgnbGlnaHRDaGls
ZEQnLCAnaG9zdEInLAorICAgICAgICAgICAgICAnTW92ZSBtb3VzZSBmcm9tIGEgbGlnaHQgY2hp
bGQgdG8gYSBzaGFkb3cgaG9zdC4gVGhlIGxpZ2h0IGNoaWxkIGlzIGRpc3RyaWJ1dGVkIHRvIGFu
IGluc2VydGlvbiBwb2ludC4nKTsKKyAgICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJtb3Vz
ZW92ZXIiKScsICdbImhvc3RCKDwtbGlnaHRDaGlsZEQpKEBob3N0QikiLCAiaG9zdEIoPC1saWdo
dENoaWxkRCkoQGRpdkEpIl0nKTsKKyAgICAvLyBGSVhNRTogVGhlIHNwZWMgc2hvdWxkIGJlIG1v
ZGlmaWVkIGluIHRoZSBmb2xsb3dpbmcgY2FzZT8gU2VlIAorICAgIHNob3VsZEJlKCdkaXNwYXRj
aGVkRXZlbnQoIm1vdXNlb3V0IiknLCAnWyJsaWdodENoaWxkRCg8LWhvc3RCKShAbGlnaHRDaGls
ZEQpIiwgImxpZ2h0Q2hpbGREKDwtaG9zdEIpKEBjb250ZW50QykiXScpOworCisgICAgbW92ZU1v
dXNlKCdob3N0QicsICdsaWdodENoaWxkRCcsCisgICAgICAgICAgICAgICdNb3ZlIG1vdXNlIGZy
b20gYSBzaGFkb3cgaG9zdCB0byBhIGxpZ2h0IGNoaWxkLiBUaGUgbGlnaHQgY2hpbGQgaXMgZGlz
dHJpYnV0ZWQgdG8gYW4gaW5zZXJ0aW9uIHBvaW50LicpOworICAgIC8vIEZJWE1FOiBUaGUgc3Bl
YyBzaG91bGQgYmUgbW9kaWZpZWQgaW4gdGhlIGZvbGxvd2luZyBjYXNlPworICAgIHNob3VsZEJl
KCdkaXNwYXRjaGVkRXZlbnQoIm1vdXNlb3ZlciIpJywgJ1sibGlnaHRDaGlsZEQoPC1ob3N0Qiko
QGxpZ2h0Q2hpbGREKSIsICJsaWdodENoaWxkRCg8LWhvc3RCKShAY29udGVudEMpIl0nKTsKKyAg
ICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJtb3VzZW91dCIpJywgJ1siaG9zdEIoPC1saWdo
dENoaWxkRCkoQGhvc3RCKSIsICJob3N0Qig8LWxpZ2h0Q2hpbGREKShAZGl2QSkiXScpOworfQor
Cit0ZXN0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132033</attachid>
            <date>2012-03-15 06:23:48 -0700</date>
            <delta_ts>2012-03-15 23:09:53 -0700</delta_ts>
            <desc>Reified Tree Traversal APIs. Let me know required symbols on other ports.</desc>
            <filename>bug-79197-20120315222347.patch</filename>
            <type>text/plain</type>
            <size>39685</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2NjZmZTVmNjE4MDVk
NWI1ODI0YmYzZTYxODg3MmMwNjQxNWQzNS4uODZjZWY0NTMxNzkyYmU3YTIxYTAwNDJlODUwNmNj
Njg1Y2FmZDU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEyLTAzLTE1ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTk3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZ1bmN0aW9ucyB3aGljaCBjYW4gYmUg
dXNlZCB0byB0cmF2ZXJzZSBSZWlmaWVkIERPTSB0cmVlLCB3aGljaCBpcworICAgICAgICBhIHJl
c3VsdCBvZiBub2RlIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFNoYWRvdyBE
T00gc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jh
dy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5odG1sCisKKyAgICAgICAgRXZlcnkgcHVibGlj
IGZ1bmN0aW9ucyBkZWZpbmVkIGluIFJlaWZpZWRUcmVlVHJhdmVyc2FsIGFyZSBzdGF0aWMKKyAg
ICAgICAgZnVuY3Rpb25zIGFuZCBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRvIG9uZXMgZGVmaW5l
ZCBpbiBOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgUmVp
ZmllZFRyZWVUcmF2ZXJzYWwgY29uc2lkZXJzIHNoYWRvdworICAgICAgICBob3N0IGFuZCB0cmF2
ZXJzZSBhbHNvIG5vZGVzIGlzIFNoYWRvdyBET00gc3VidHJlZXMuCisKKyAgICAgICAgVGhlcmUg
aXMgbm8gYWN0dWFsIGNsaWVudHMgd2hpY2ggdXNlcyB0aGVzZSBmdW50aW9ucy4gRm9sbG93LXVw
IHBhdGNoZXMgd2lsbAorICAgICAgICB1c2UgdGhlc2UgdHJhdmVyc2FsIEFQSXMsIHdoaWNoIHNo
b3VsZCBiZSBhIEZvY3VzQ29udHJvbGxlciBhbmQgYW4gRXZlbnREaXNwYXRjaGVyIGFzIHBsYW5l
ZC4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNh
bC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogZG9tL1JlaWZpZWRU
cmVlVHJhdmVyc2FsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzU2hhZG93SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dUcmVlRm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd1RyZWVPZlBhcmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZUxpZ2h0Q2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNl
TWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Om5leHRTaWJsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2li
bGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmll
ZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlQmFja2luZ1RvWW91bmdlclNo
YWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmVzY2Fw
ZUZhbGxiYWNrQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVU
cmF2ZXJzYWw6OnRyYXZlcnNlTWVFc2NhcGluZ0ZhbGxiYWNrQ29udGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBl
ckJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJl
bnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUluQ3VycmVudFRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93
Um9vdE9ySG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6YWRq
dXN0ZWRQYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
Ojp0cmF2ZXJzZU5leHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVy
c2FsOjp0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91c05vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlUHJldmlv
dXNOb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgICogZG9tL1JlaWZp
ZWRUcmVlVHJhdmVyc2FsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChS
ZWlmaWVkVHJlZVRyYXZlcnNhbCk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93VHJlZTo6c2VsZWN0aW9uRm9yKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGRvbS9TaGFkb3dUcmVlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFNoYWRvd1RyZWUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rvcjo6ZmluZEZvcik6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oOgorICAgICAgICAoSFRN
TENvbnRlbnRTZWxlY3Rpb25TZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxl
Y3Rpb25TZXQ6OmZpbmQpOgorICAgICAgICAoSFRNTENvbnRlbnRTZWxlY3Rvcik6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5z
ZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9JbnNlcnRpb25Qb2ludCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6Om5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Zmlyc3RDaGlsZEluUmVp
ZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpsYXN0Q2hpbGRJblJlaWZp
ZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dHJhdmVyc2VOZXh0Tm9kZUlu
UmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0cmF2ZXJzZVByZXZp
b3VzTm9kZUluUmVpZmllZFRyZWUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6Cisg
ICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwog
MjAxMi0wMy0xNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFYRGVzY3JpcHRpb24gZm9yIEhUTUw1IGZvb3RlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDc1
ZjBjOGYwNWJjY2Y0ZWI4OTJhYmI4MGJmMjdkYjY5MmQyMGYxY2UuLjYxMjU0MWZhMDBiZGFkOGUz
YWUzZWQ1YTU1YzBhNDkxNThhZDhhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUxODEsNiArNTE4
MSw4IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlRXhjZXB0aW9uLmgnLAogICAgICAgICAgICAg
J2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1JlZ2lzdGVy
ZWRFdmVudExpc3RlbmVyLmNwcCcsCisgICAgICAgICAgICAnZG9tL1JlaWZpZWRUcmVlVHJhdmVy
c2FsLmNwcCcsCisgICAgICAgICAgICAnZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmgnLAogICAg
ICAgICAgICAgJ2RvbS9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oJywKICAgICAgICAg
ICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TY29wZWRF
dmVudFF1ZXVlLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVl
VHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGNjYjUwMTVmNjM0ZWVkOTI1ODQ1MTgxZWNmYWQyYTAwOWRhNTI1NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNh
bC5jcHAKQEAgLTAsMCArMSwzMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNp
bmNsdWRlICJTaGFkb3dUcmVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlu
bGluZSBib29sIGlzU2hhZG93SG9zdChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBu
b2RlICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRv
d1Jvb3QoKTsKK30KKworc3RhdGljIGlubGluZSBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlRm9yKGNv
bnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgp
KQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dUcmVlKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hhZG93VHJlZSogc2hhZG93VHJlZU9mUGFyZW50
KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+cGFyZW50Tm9kZSgp
KQorICAgICAgICByZXR1cm4gc2hhZG93VHJlZUZvcihub2RlLT5wYXJlbnROb2RlKCkpOworICAg
IHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZChj
b25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9
IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJk
KTsKKyAgICBBU1NFUlQoIWNoaWxkIHx8ICFjaGlsZC0+aXNTaGFkb3dSb290KCkpOworICAgIHJl
dHVybiBjaGlsZDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZChj
b25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9
IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2Fy
ZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hpbGQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICBy
ZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRX
aXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUs
IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOworICAgIEFTU0VSVCghY2hp
bGQgfHwgIWNoaWxkLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIGNoaWxkOworfQorCitO
b2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VDaGlsZChjb25zdCBOb2RlKiBub2Rl
LCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJU
KG5vZGUpOworICAgIC8vIEZJWE1FOiBBZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9p
bnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgorICAgIC8vIEFTU0VSVCghaXNJbnNlcnRpb25Q
b2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7CisgICAg
QVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgU2hhZG93VHJlZSogc2hhZG93VHJl
ZSA9IHNoYWRvd1RyZWVGb3Iobm9kZSk7CisgICAgaWYgKHNoYWRvd1RyZWUgJiYgc2hhZG93VHJl
ZS0+aGFzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VMaWdodENoaWxkcmVu
KHNoYWRvd1RyZWUtPnlvdW5nZXN0U2hhZG93Um9vdCgpLCBkaXJlY3Rpb24pOworICAgIE5vZGUq
IGNoaWxkID0gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIGRpcmVjdGlvbik7CisgICAgcmV0
dXJuIGNoaWxkOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VMaWdo
dENoaWxkcmVuKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9u
IGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKE5vZGUqIGNoaWxkID0g
KGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2Rl
LT5maXJzdENoaWxkKCkgOiBub2RlLT5sYXN0Q2hpbGQoKSkpCisgICAgICAgIHJldHVybiB0cmF2
ZXJzZU1lKGNoaWxkLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VNZShjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJl
ZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAg
IGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgIGNvbnN0IEhUTUxDb250ZW50
U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9uTGlzdCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPnNl
bGVjdGlvbnMoKTsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24g
PSAoZGlyZWN0aW9uID09IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IHNl
bGVjdGlvbkxpc3QtPmZpcnN0KCkgOiBzZWxlY3Rpb25MaXN0LT5sYXN0KCkpKQorICAgICAgICAg
ICAgcmV0dXJuIHRyYXZlcnNlTWUoc2VsZWN0aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAg
ICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgZGlyZWN0aW9uKTsKKyAgICB9
CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOworfQorCitOb2RlKiBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NF
UlQobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgTm9kZSog
bmV4dCA9IHRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgUmVp
ZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBBU1NFUlQoIW5leHQgfHwg
IW5leHQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gbmV4dDsKK30KKworTm9kZSogUmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKiBub2RlKQorewor
ICAgIEFTU0VSVChub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyAg
ICBOb2RlKiBuZXh0ID0gdHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChu
b2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBBU1NFUlQo
IW5leHQgfHwgIW5leHQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gbmV4dDsKK30KKwor
Tm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5z
ZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rp
b24gZGlyZWN0aW9uKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBTaGFkb3dUcmVlKiBzaGFk
b3dUcmVlID0gc2hhZG93VHJlZU9mUGFyZW50KG5vZGUpOworICAgIGlmICghc2hhZG93VHJlZSkK
KyAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0
aW9uKTsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93VHJlZS0+
c2VsZWN0aW9uRm9yKG5vZGUpOworICAgIGlmICghc2VsZWN0aW9uKQorICAgICAgICByZXR1cm4g
dHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOworICAgIGlmIChI
VE1MQ29udGVudFNlbGVjdGlvbiogbmV4dFNlbGVjdGlvbiA9IChkaXJlY3Rpb24gPT0gUmVpZmll
ZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9uLT5uZXh0KCkgOiBzZWxl
Y3Rpb24tPnByZXZpb3VzKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VNZShuZXh0U2VsZWN0
aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ01heWJl
QmFja1RvSW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBkaXJlY3Rp
b24pOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VTaWJsaW5nSW5D
dXJyZW50VHJlZShjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlv
biBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChOb2RlKiBuZXh0ID0g
KGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2Rl
LT5uZXh0U2libGluZygpIDogbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpKQorICAgICAgICByZXR1
cm4gdHJhdmVyc2VNZShuZXh0LCBkaXJlY3Rpb24pOworICAgIGlmIChOb2RlKiBuZXh0ID0gdHJh
dmVyc2VCYWNraW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChub2RlLCBkaXJlY3Rpb24pKQorICAgICAg
ICByZXR1cm4gbmV4dDsKKyAgICByZXR1cm4gZXNjYXBlRmFsbGJhY2tDb250ZW50RWxlbWVudChu
b2RlLCBkaXJlY3Rpb24pOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVy
c2VCYWNraW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJl
ZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAg
IGlmIChub2RlLT5wYXJlbnROb2RlKCkgJiYgbm9kZS0+cGFyZW50Tm9kZSgpLT5pc1NoYWRvd1Jv
b3QoKSkgeworICAgICAgICBTaGFkb3dSb290KiBwYXJlbnRTaGFkb3dSb290ID0gdG9TaGFkb3dS
b290KG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgICAgIGlmICghcGFyZW50U2hhZG93Um9vdC0+
aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgICAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRJbnNl
cnRpb25Qb2ludCA9IHBhcmVudFNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsKKyAgICAgICAgICAg
IEFTU0VSVChhc3NpZ25lZEluc2VydGlvblBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiB0cmF2
ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGRpcmVjdGlv
bik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRU
cmVlVHJhdmVyc2FsOjplc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIG5v
ZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NF
UlQobm9kZSk7CisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSAmJiBpc0luc2VydGlvblBvaW50
KG5vZGUtPnBhcmVudE5vZGUoKSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdNYXli
ZUJhY2tUb0luc2VydGlvblBvaW50KG5vZGUtPnBhcmVudE5vZGUoKSwgZGlyZWN0aW9uKTsKKyAg
ICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTWVF
c2NhcGluZ0ZhbGxiYWNrQ29udGVudHMoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91
bmRhcnkmIGNyb3NzZWQpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChpc0luc2VydGlv
blBvaW50KG5vZGUpKQorICAgICAgICByZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0
aW9uUG9pbnQobm9kZSwgY3Jvc3NlZCk7CisgICAgY3Jvc3NlZCA9IE5vdENyb3NzZWQ7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6cGFyZW50Tm9kZShjb25zdCBOb2RlKiBub2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFy
eSYgY3Jvc3NlZCkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1No
YWRvd1Jvb3QoKSk7CisgICAgLy8gRklYTUU6IEFkZCBhbiBhc3NlcnRpb24gb25jZSBJbnNlcnRp
b25Qb2ludCBoYXZlIGlzQWN0aXZlKCkgZnVuY3Rpb24uCisgICAgLy8gQVNTRVJUKCFpc0luc2Vy
dGlvblBvaW50KG5vZGUpIHx8ICF0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKTsK
KyAgICByZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgY3Jv
c3NlZCk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlKGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgLy8gRklYTUU6IERvIG5vdCB1c2UgJ3Vuc2VkJyBwYXJhbWV0
ZXIuCisgICAgQ3Jvc3NlZFVwcGVyQm91bmRhcnkgdW51c2VkOworICAgIHJldHVybiBwYXJlbnRO
b2RlKG5vZGUsIHVudXNlZCk7Cit9CisKKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBh
cmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7
CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOwor
ICAgIC8vIEZJWE1FOiBBZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBp
c0FjdGl2ZSgpIGZ1bmN0aW9uLgorICAgIC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2Rl
KSB8fCAhdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7CisgICAgQ3Jvc3NlZFVw
cGVyQm91bmRhcnkgY3Jvc3NlZDsKKyAgICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlTWF5YmVC
YWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBjcm9zc2VkKTsKKyAgICBpZiAoY3Jvc3NlZCA9PSBD
cm9zc2VkKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFyZW50OworfQorCitOb2Rl
KiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9p
bnQoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7Cisg
ICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQobm9kZSkp
IHsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dU
cmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZU1h
eWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBjcm9z
c2VkKTsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGVJbkN1cnJlbnRUcmVlKG5vZGUsIGNy
b3NzZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUluQ3Vy
cmVudFRyZWUoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQp
Cit7CisgICAgaWYgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAg
ICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRO
b2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QodG9TaGFkb3dSb290KHBhcmVudCksIGNy
b3NzZWQpOworICAgICAgICByZXR1cm4gdHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50
cyhwYXJlbnQsIGNyb3NzZWQpOworICAgIH0KKyAgICBjcm9zc2VkID0gTm90Q3Jvc3NlZDsKKyAg
ICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVC
YWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290
LCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBBU1NFUlQoc2hhZG93Um9v
dCk7CisgICAgaWYgKHNoYWRvd1Jvb3QtPmlzWW91bmdlc3QoKSkgeworICAgICAgICBjcm9zc2Vk
ID0gQ3Jvc3NlZDsKKyAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmhvc3QoKTsKKyAgICB9Cisg
ICAgSW5zZXJ0aW9uUG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5h
c3NpZ25lZFRvKCk7CisgICAgQVNTRVJUKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQpOworICAgIHJl
dHVybiBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChhc3NpZ25lZEluc2VydGlv
blBvaW50LCBjcm9zc2VkKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OmFkanVz
dGVkUGFyZW50Tm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChTaGFkb3dUcmVlKiBz
aGFkb3dUcmVlID0gc2hhZG93VHJlZU9mUGFyZW50KG5vZGUpKSB7CisgICAgICAgIGlmIChIVE1M
Q29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93VHJlZS0+c2VsZWN0aW9uRm9yKG5v
ZGUpKQorICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi0+aW5zZXJ0aW9uUG9pbnQoKTsKKyAg
ICB9CisgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGNvbnN0IFNoYWRv
d1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3Qobm9kZSk7CisgICAgICAgIGlmICghc2hh
ZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgICAgICBJbnNlcnRpb25Qb2ludCogYXNz
aWduZWRJbnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsKKyAgICAgICAg
ICAgIEFTU0VSVChhc3NpZ25lZEluc2VydGlvblBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiBh
c3NpZ25lZEluc2VydGlvblBvaW50OworICAgICAgICB9CisgICAgICAgIHNoYWRvd1Jvb3QtPmhv
c3QoKTsKKyAgICB9CisgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSogbm9kZSkK
K3sKKyAgICBpZiAoTm9kZSogbmV4dCA9IGZpcnN0Q2hpbGQobm9kZSkpCisgICAgICAgIHJldHVy
biBuZXh0OworICAgIGlmIChOb2RlKiBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSkpCisgICAgICAg
IHJldHVybiBuZXh0OworICAgIGNvbnN0IE5vZGUqIG4gPSBub2RlOworICAgIHdoaWxlIChuICYm
ICFuZXh0U2libGluZyhuKSkKKyAgICAgICAgbiA9IHBhcmVudE5vZGUobik7CisgICAgaWYgKG4p
CisgICAgICAgIHJldHVybiBuZXh0U2libGluZyhuKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9k
ZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdV
cHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFpc1NoYWRvd0hvc3Qo
bm9kZSkpIHsKKyAgICAgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4o
bm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICAgICAgICAg
IHJldHVybiBuZXh0OworICAgIH0KKyAgICBpZiAoTm9kZSogbmV4dCA9IG5leHRTaWJsaW5nKG5v
ZGUpKQorICAgICAgICByZXR1cm4gbmV4dDsKKyAgICBjb25zdCBOb2RlKiBuID0gbm9kZTsKKyAg
ICB3aGlsZSAobiAmJiAhbmV4dFNpYmxpbmcobikpCisgICAgICAgIG4gPSBwYXJlbnROb2RlV2l0
aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShuKTsKKyAgICBpZiAobikKKyAgICAgICAgcmV0dXJu
IG5leHRTaWJsaW5nKG4pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91c05vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBp
ZiAoTm9kZSogbiA9IHByZXZpb3VzU2libGluZyhub2RlKSkgeworICAgICAgICB3aGlsZSAoTm9k
ZSogY2hpbGQgPSBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkKG4pKQorICAgICAgICAg
ICAgbiA9IGNoaWxkOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVu
dE5vZGUobm9kZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVBy
ZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkK
K3sKKyAgICBpZiAoTm9kZSogbiA9IHByZXZpb3VzU2libGluZyhub2RlKSkgeworICAgICAgICB3
aGlsZSAoIWlzU2hhZG93SG9zdChuKSkgeworICAgICAgICAgICAgaWYgKE5vZGUqIGNoaWxkID0g
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTGlnaHRDaGlsZHJlbihuLCBSZWlmaWVkVHJl
ZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKSkKKyAgICAgICAgICAgICAgICBuID0gY2hpbGQ7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJldHVybiBwYXJlbnROb2RlV2l0aG91dENyb3Nz
aW5nVXBwZXJCb3VuZGFyeShub2RlKTsKK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UyNDNkNGM4ZjBjYzk2
Yzc0ODg4MjE4YWNmNWZiMDdiMWJiZjFjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFJlaWZpZWRUcmVlVHJhdmVyc2FsX2gKKyNkZWZpbmUgUmVpZmllZFRyZWVUcmF2ZXJzYWxfaAor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dSb290Owor
CitlbnVtIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIHsKKyAgICBSZWlmaWVkVHJlZVRy
YXZlcnNhbERpcmVjdGlvbkZvcndhcmQsCisgICAgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rp
b25CYWNrd2FyZAorfTsKKworLy8gRklYTUU6IE1ha2Ugc29tZSBmdW5jdGlvbnMgaW5saW5lIHRv
IG9wdGltaXNlIHRoZSBwZXJmb3JtYW5jZS4KK2NsYXNzIFJlaWZpZWRUcmVlVHJhdmVyc2FsIHsK
K3B1YmxpYzoKKyAgICBlbnVtIENyb3NzZWRVcHBlckJvdW5kYXJ5IHsKKyAgICAgICAgTm90Q3Jv
c3NlZCwKKyAgICAgICAgQ3Jvc3NlZCwKKyAgICB9OworCisgICAgc3RhdGljIE5vZGUqIGZpcnN0
Q2hpbGQoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBsYXN0Q2hpbGQoY29uc3QgTm9k
ZSopOworICAgIHN0YXRpYyBOb2RlKiBsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5k
YXJ5KGNvbnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiBuZXh0U2libGluZyhjb25zdCBO
b2RlKik7CisgICAgc3RhdGljIE5vZGUqIHByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7CisK
KyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZShjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91
bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZShjb25zdCBOb2RlKik7CisgICAg
c3RhdGljIE5vZGUqIHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0
IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5vZGUq
KTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91c05vZGUoY29uc3QgTm9kZSopOwor
CisgICAgLy8gRklYTUU6IEFuICdhZGp1c3RlZCcgaXMgbm90IGdvb2QgbmFtZSBmb3IgZ2VuZXJh
bCB1c2UgY2FzZS4gUmVuYW1lIHRoaXMuCisgICAgLy8gRG8gbm90IHNraXAgZWl0aGVyIFNoYWRv
d1Jvb3Qgb3IgSW5zZXJ0aW9uUG9pbnQuCisgICAgc3RhdGljIE5vZGUqIGFkanVzdGVkUGFyZW50
Tm9kZShjb25zdCBOb2RlKik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZVdp
dGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2Rl
KiB0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3Qg
Tm9kZSopOworCitwcml2YXRlOgorICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZUNoaWxkKGNvbnN0
IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisgICAgc3RhdGljIE5vZGUq
IHRyYXZlcnNlTWUoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsK
KyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VMaWdodENoaWxkcmVuKGNvbnN0IE5vZGUqLCBSZWlm
aWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VT
aWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVU
cmF2ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxpbmdJbkN1
cnJlbnRUcmVlKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisK
KyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VCYWNraW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChjb25z
dCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2Rl
KiBlc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRy
YXZlcnNhbERpcmVjdGlvbik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VNZUVzY2FwaW5n
RmFsbGJhY2tDb250ZW50cyhjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKwor
ICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25z
dCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50
Tm9kZUluQ3VycmVudFRyZWUoY29uc3QgTm9kZSosIENyb3NzZWRVcHBlckJvdW5kYXJ5Jik7Cisg
ICAgc3RhdGljIE5vZGUqIHBhcmVudE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChj
b25zdCBTaGFkb3dSb290KiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKK307CisKK30gLy8gbmFt
ZXNwYWNlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Ry
ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCmluZGV4IGFlYzk5OGJk
ODA4YTc0NGVjY2RlZThhOTUwNzk5ZmExZTBhNWI1NTkuLmIzZDM4YjlmZTRjNDNkZGYxMjc3MGQw
NGQ5MzQzMDg3NDY4ODJlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCi0jaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1l
bnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBTaGFkb3dUcmVl
OjpkZXRhY2hIb3N0KEVsZW1lbnQqIGhvc3QpCiAgICAgaG9zdC0+ZGV0YWNoQXNOb2RlKCk7CiB9
CiAKLUluc2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBu
b2RlKSBjb25zdAorSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9y
KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cGFy
ZW50Tm9kZSgpKTsKIApAQCAtMjMwLDYgKzIzMCwxMyBAQCBJbnNlcnRpb25Qb2ludCogU2hhZG93
VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gZm91
bmQtPmluc2VydGlvblBvaW50KCk7CiB9CiAKK0hUTUxDb250ZW50U2VsZWN0aW9uKiBTaGFkb3dU
cmVlOjpzZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIW1f
c2VsZWN0b3IpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3NlbGVjdG9yLT5maW5k
Rm9yKG5vZGUpOworfQorCiB2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkKIHsKICAgICBkZXRh
Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCmluZGV4IDU0YzQxYmJlNDE5ZjVjM2IxMmU3ODY4
MmI2ZDQ5MjI1ZDQ2ZjliOTEuLjlhNmUyMTNlZjhhNDE0YzhiY2Q1NmM2NTQ5NzBkOWU1ODM0OWUz
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKIGNsYXNzIEluc2VydGlvblBvaW50Owog
Y2xhc3MgVHJlZVNjb3BlOworY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb247CiAKIGNsYXNzIFNo
YWRvd1RyZWUgewogcHVibGljOgpAQCAtNzcsNyArNzgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwogICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hh
bmdlZCgpOwogCi0gICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBj
b25zdDsKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSop
IGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb25Gb3IoY29uc3QgTm9k
ZSopIGNvbnN0OwogCiAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsK
ICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAppbmRleCA5NTM5
NWJjOGJmMjJiYTgzOThmZDU2ZTQ1ZDg2NGRhNjMxODI2OTI0Li41NmRkZWI4YjBmOGQwYzlhODA5
MDk5MDNjYWExMTliYjJmYTYwMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSFRN
TENvbnRlbnRTZWxlY3Rvcjo6dW5zZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBsaXN0
KQogICAgIGxpc3QtPmNsZWFyKCk7CiB9CiAKLUhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29u
dGVudFNlbGVjdG9yOjpmaW5kRm9yKE5vZGUqIGtleSkgY29uc3QKK0hUTUxDb250ZW50U2VsZWN0
aW9uKiBIVE1MQ29udGVudFNlbGVjdG9yOjpmaW5kRm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9zZWxlY3Rpb25TZXQuZmluZChrZXkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCmluZGV4IDE0ZWEwNTdh
MGE1ZWQ1NzQ3Y2RjYTk4OThkMmE1ZTVmYTUzYzU4NzQuLjYzNjdlMmM4ZTQ3NzFjY2UyODk1NDE0
MjI1NDMxYjJjMTI5MTYxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudFNlbGVjdG9yLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
YWRkKEhUTUxDb250ZW50U2VsZWN0aW9uKiB2YWx1ZSkgeyBtX3NldC5hZGQodmFsdWUpOyB9CiAg
ICAgdm9pZCByZW1vdmUoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0LnJlbW92
ZSh2YWx1ZSk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3NldC5pc0Vt
cHR5KCk7IH0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChOb2RlKiBrZXkpIGNvbnN0
OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFRyYW5zbGF0b3IgewpAQCAtMTE4LDkgKzExOCw5IEBA
IHByaXZhdGU6CiAgICAgUG9pbnRlclNldCBtX3NldDsKIH07CiAKLWlubGluZSBIVE1MQ29udGVu
dFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQoTm9kZSoga2V5KSBjb25z
dAoraW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6
ZmluZChjb25zdCBOb2RlKiBrZXkpIGNvbnN0CiB7Ci0gICAgUG9pbnRlclNldDo6aXRlcmF0b3Ig
Zm91bmQgPSBtX3NldC5maW5kPE5vZGUqLCBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNs
YXRvcj4oa2V5KTsKKyAgICBQb2ludGVyU2V0OjppdGVyYXRvciBmb3VuZCA9IG1fc2V0LmZpbmQ8
Y29uc3QgTm9kZSosIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOwog
ICAgIHJldHVybiBmb3VuZCAhPSBtX3NldC5lbmQoKSA/ICpmb3VuZCA6IDA7CiB9CiAKQEAgLTEz
Miw3ICsxMzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbGVjdChJbnNlcnRpb25Qb2ludCos
IEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwogICAgIHZvaWQgdW5zZWxlY3QoSFRNTENvbnRl
bnRTZWxlY3Rpb25MaXN0Kik7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmRGb3IoTm9k
ZSoga2V5KSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZEZvcihjb25zdCBO
b2RlKiBrZXkpIGNvbnN0OwogCiAgICAgdm9pZCB3aWxsU2VsZWN0T3ZlcihFbGVtZW50KiBzaGFk
b3dIb3N0KTsKICAgICB2b2lkIGRpZFNlbGVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggYjUyODJjZGRjMjc0ODJjZWMzMzUzNWRkYmViNjhj
NzBmNTU4ODRiYy4uNzRiMWEyMDBjNGQ5ZTJiMTI3ODA1NGM0NDdhZjQwMTFkNDZkNDhiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC03MSw3ICs3
MSw3IEBAIHByaXZhdGU6CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0IG1fc2VsZWN0aW9u
czsKIH07CiAKLWlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKK2lubGlu
ZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODgsNiArODgsMTIgQEAgaW5saW5lIEluc2Vy
dGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEluc2VydGlvblBvaW50Kj4obm9kZSk7CiB9CiAKK2lubGluZSBjb25zdCBJbnNlcnRp
b25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VS
VChpc0luc2VydGlvblBvaW50KG5vZGUpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKwogaW5saW5lIGJvb2wgaXNTaGFkb3dCb3VuZGFy
eShOb2RlKiBub2RlKQogewogICAgIGlmICghaXNJbnNlcnRpb25Qb2ludChub2RlKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjMjkzNjg2NGY3ZTRiMjMwZDRkNWM5Mzhi
YTk4NDVlZDQxYWM1YWZhLi4xZWYxMDBhZTQzMjU3NTc3ZjU2ZGQ3OWQyNzI5NDI5ODdkNWMzZDIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSZWlmaWVkVHJlZVRyYXZlcnNhbC5oIgogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgpAQCAtMTc3LDYgKzE3OCw1MSBAQCBib29sIEludGVybmFsczo6YXR0
YWNoZWQoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG5vZGUtPmF0
dGFjaGVkKCk7CiB9CiAKK05vZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdJblJlaWZpZWRUcmVl
KE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
ICAgIHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxpbmcobm9kZSk7Cit9CisK
K05vZGUqIEludGVybmFsczo6Zmlyc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpmaXJzdENoaWxkKG5vZGUpOworfQorCitOb2RlKiBJbnRlcm5hbHM6
Omxhc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjps
YXN0Q2hpbGQobm9kZSk7Cit9CisKK05vZGUqIEludGVybmFsczo6dHJhdmVyc2VOZXh0Tm9kZUlu
UmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFu
b2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHRO
b2RlKG5vZGUpOworfQorCitOb2RlKiBJbnRlcm5hbHM6OnRyYXZlcnNlUHJldmlvdXNOb2RlSW5S
ZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5v
ZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlUHJldmlv
dXNOb2RlKG5vZGUpOworfQorCiBTdHJpbmcgSW50ZXJuYWxzOjplbGVtZW50UmVuZGVyVHJlZUFz
VGV4dChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWVs
ZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDY3YzA5MjJiYmI1YjBm
NGZhYmVmYWFjZDA0ZjM5YjdkYWQwYmEwNDIuLjMwNjk0ZjAyNzM3YmQwYTAwZGFjOTNlMjBmYWEy
ZmNmYjBmNjI0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtODQsNiArODQs
MTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRhY2hlZChOb2RlKiwgRXhjZXB0aW9uQ29kZSYp
OwogCisgICAgTm9kZSogbmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgTm9kZSogZmlyc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBOb2RlKiBsYXN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRp
b25Db2RlJik7CisgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRyZWUoTm9kZSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVpZmll
ZFRyZWUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKKwogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikK
ICAgICB2b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYgY29sb3JWYWx1ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApp
bmRleCBkOTg1NmFkMDI1ZTU4Yjk5YTkxMDI1NGQ1NjAyNmE4YWEzMjllMzM0Li42MzA4ZGRiMzE3
YzJjM2ZiNGM1YmNlNjZmNDE3MTNkOWUzMGQxMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC01Niw2ICs1NiwxMiBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgRWxl
bWVudCBnZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChpbiBOb2RlIHNoYWRvd1Jvb3QsIGluIERP
TVN0cmluZyBpZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGJvb2xlYW4gaXNWYWxp
ZENvbnRlbnRTZWxlY3QoaW4gRWxlbWVudCBjb250ZW50RWxlbWVudCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKKyAgICAgICAgTm9kZSBuZXh0U2libGluZ0luUmVpZmllZFRyZWUoaW4gTm9kZSBu
b2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSBmaXJzdENoaWxkSW5SZWlm
aWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBOb2Rl
IGxhc3RDaGlsZEluUmVpZmllZFRyZWUoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKyAgICAgICAgTm9kZSB0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5v
ZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHRyYXZlcnNlUHJldmlvdXNO
b2RlSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworCiAg
ICAgICAgIGJvb2xlYW4gYXR0YWNoZWQoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOUFVUX0NPTE9SKSAmJiBFTkFCTEVfSU5QVVRfQ09M
T1IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAyYjVjZGU5NDc1NmE0ZWM1NzY4YmU2MzA3NmY5NTJiZGQxMzRkYTRlLi45MDk5
Y2NkYmJmMDBjNjIxMDIzMTBlNTVlNzZlMGVlYmU5ZDQzYTU5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTItMDMtMTUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtTaGFkb3cgRE9NXSBBZGQgUmVpZmllZCBET00gVHJlZSB0cmF2ZXJzYWwgZnVuY3Rpb25z
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZnVu
Y3Rpb25zIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdo
aWNoIGlzCisgICAgICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBk
ZXNjcmliZWQgaW4gU2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3Jn
L2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKwor
ICAgICAgICBFdmVyeSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2
ZXJzYWwgYXJlIHN0YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIG5hbWVkIGluIGEgc2ltaWxh
ciB3YXkgdG8gb25lcyBkZWZpbmVkIGluIE5vZGUgY2xhc3MuCisgICAgICAgIFRoZSBvbmx5IGRp
ZmZlcmVuY2UgaXMgdGhhdCBSZWlmaWVkVHJlZVRyYXZlcnNhbCBjb25zaWRlcnMgc2hhZG93Cisg
ICAgICAgIGhvc3QgYW5kIHRyYXZlcnNlIGFsc28gbm9kZXMgaXMgU2hhZG93IERPTSBzdWJ0cmVl
cy4KKworICAgICAgICBUaGVyZSBpcyBubyBhY3R1YWwgY2xpZW50cyB3aGljaCB1c2VzIHRoZXNl
IGZ1bnRpb25zLiBGb2xsb3ctdXAgcGF0Y2hlcyB3aWxsCisgICAgICAgIHVzZSB0aGVzZSB0cmF2
ZXJzYWwgQVBJcywgd2hpY2ggc2hvdWxkIGJlIGEgRm9jdXNDb250cm9sbGVyIGFuZCBhbiBFdmVu
dERpc3BhdGNoZXIgYXMgcGxhbmVkLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JlaWZp
ZWQtdHJlZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMy0x
NCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYRGVz
Y3JpcHRpb24gZm9yIEhUTUw1IGZvb3RlciBhbmQgQVJJQSByb2xlIGNvbnRlbnRpbmZvIGluY29y
cmVjdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJl
ZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jl
aWZpZWQtdHJlZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0Y2VjODYyZjIy
MjE0NDBmZGQ0NWY2Y2YwN2MyZWIwZGIwNGI3NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNTYgQEAKK1Rlc3RzIGZvciBTaGFkb3dSb290IEpTIEFQSXMuIENhbiBvbmx5
IHJ1biB3aXRoaW4gRFJUCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitTaGFkb3dS
b290IHNob3VsZCBiZSB1c2VkLgorUmVpZmllZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1i
CisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorVHJhdmVyc2Ug
aW4gYmFja3dhcmQuCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitBIGNvbnRlbnQgZWxlbWVudCBz
aG91bGQgc2VsZWN0IGxpZ2h0IGNoaWxkcmVuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlE
SVYJIGlkPWIKKwlESVYJIGlkPWMKKwlESVYJIGlkPWQKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4K
K0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9ZAorVHJhdmVyc2UgaW4g
YmFja3dhcmQuCitESVYJIGlkPWQKK0RJVgkgaWQ9YworRElWCSBpZD1iCitESVYJIGlkPWEKKwor
VGVzdCBmb3IgY29udGVudCBlbGVtZW50IHNlbGVjdG9yLgorUmVpZmllZCBUcmVlOgorRElWCSBp
ZD1hCisJRElWCSBpZD1iCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK1RyYXZl
cnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1hCisKK0xpZ2h0IGNoaWxkcmVuIHNob3VsZCBiZSBz
ZWxlY3RlZCBvbmx5IGF0IG9uY2UuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlk
PWIKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitUcmF2ZXJz
ZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZQorRElWCSBpZD1kCitESVYJIGlkPWMKK0RJVgkgaWQ9
YQorCitBIGNvbnRlbnQgZWxlbWVudCBjYW4gaGF2ZSBmYWxsYmFjayBlbGVtZW50cy4KK1JlaWZp
ZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCURJVgkgaWQ9ZjEKKwlESVYJIGlkPWYy
CisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1m
MQorRElWCSBpZD1mMgorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWYyCitESVYJIGlk
PWYxCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitGYWxsYmFjayBlbGVtZW50cyBzaG91bGQgbm90
IGJlIHVzZWQgaWYgIGVsZW1lbnQgc2VsZWN0cyBhbnkgZWxlbWVudHMuCitSZWlmaWVkIFRyZWU6
CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwlESVYJIGlkPWYxCisJRElWCSBpZD1mMgorCitUcmF2
ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9ZjEKK0RJVgkg
aWQ9ZjIKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1mMgorRElWCSBpZD1mMQorRElW
CSBpZD1iCitESVYJIGlkPWEKKworVGVzdCBmb3IgTmVzdGVkIFNoYWRvd1Jvb3RzLgorUmVpZmll
ZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1iCisJCURJVgkgaWQ9YworCQlESVYJIGlkPWUK
KwkJRElWCSBpZD1kCisJRElWCSBpZD1mCisJRElWCSBpZD1oCisJRElWCSBpZD1pCisJRElWCSBp
ZD1nCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBp
ZD1jCitESVYJIGlkPWUKK0RJVgkgaWQ9ZAorRElWCSBpZD1mCitESVYJIGlkPWgKK0RJVgkgaWQ9
aQorRElWCSBpZD1nCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZworRElWCSBpZD1p
CitESVYJIGlkPWgKK0RJVgkgaWQ9ZgorRElWCSBpZD1kCitESVYJIGlkPWUKK0RJVgkgaWQ9Ywor
RElWCSBpZD1iCitESVYJIGlkPWEKKworVGVzdCBmb3IgTXVsdGlwbGUgU2hhZG93Um9vdHMuCitS
ZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWQKKwlESVYJIGlkPWIKKwlESVYJIGlk
PWYKKwlESVYJIGlkPWMKKwlESVYJIGlkPWUKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkg
aWQ9YQorRElWCSBpZD1kCitESVYJIGlkPWIKK0RJVgkgaWQ9ZgorRElWCSBpZD1jCitESVYJIGlk
PWUKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1lCitESVYJIGlkPWMKK0RJVgkgaWQ9
ZgorRElWCSBpZD1iCitESVYJIGlkPWQKK0RJVgkgaWQ9YQorCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmVlYmU4ZTk3Y2QzNGY5MWMzZWRiYjA4MzU1YTczODkxZWEwZTdhNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0
bWwKQEAgLTAsMCArMSwxNjkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3RzIGZvciBTaGFkb3dSb290IEpTIEFQSXMuIENhbiBvbmx5IHJ1biB3aXRoaW4gRFJUIik7
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworCitmdW5j
dGlvbiBkdW1wTm9kZShub2RlKQoreworICAgIHZhciBvdXRwdXQgPSBub2RlLm5vZGVOYW1lICsg
Ilx0IjsKKyAgICBpZiAobm9kZS5pZCkKKyAgICAgICAgb3V0cHV0ICs9ICcgaWQ9JyArIG5vZGUu
aWQ7CisgICAgaWYgKG5vZGUuY2xhc3NOYW1lKQorICAgICAgICBvdXRwdXQgKz0gJyBjbGFzcz0n
ICsgbm9kZS5jbGFzc05hbWU7CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworZnVuY3Rpb24gZHVt
cFJlaWZpZWRUcmVlKG5vZGUsIGluZGVudCkKK3sKKyAgICBpbmRlbnQgPSBpbmRlbnQgfHwgIiI7
CisgICAgdmFyIG91dHB1dCA9IGluZGVudCArIGR1bXBOb2RlKG5vZGUpICsgIlxuIjsKKyAgICB2
YXIgY2hpbGQ7CisgICAgZm9yIChjaGlsZCA9IGludGVybmFscy5maXJzdENoaWxkSW5SZWlmaWVk
VHJlZShub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW50ZXJuYWxzLm5leHRTaWJsaW5nSW5SZWlmaWVk
VHJlZShjaGlsZCkpCisgICAgICAgICBvdXRwdXQgKz0gZHVtcFJlaWZpZWRUcmVlKGNoaWxkLCBp
bmRlbnQgKyAiXHQiKTsKKyAgICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBsYXN0Tm9k
ZUluUmVpZmllZFRyZWUocm9vdCkKK3sKKyAgICB2YXIgbGFzdE5vZGUgPSByb290OworICAgIHdo
aWxlIChpbnRlcm5hbHMubGFzdENoaWxkSW5SZWlmaWVkVHJlZShsYXN0Tm9kZSkpCisgICAgICAg
IGxhc3ROb2RlID0gaW50ZXJuYWxzLmxhc3RDaGlsZEluUmVpZmllZFRyZWUobGFzdE5vZGUpOwor
ICAgIHJldHVybiBsYXN0Tm9kZTsKK30KKworZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVlQnlUcmF2
ZXJzaW5nSW5Gb3dhcmQocm9vdCkKK3sKKyAgICB2YXIgbm9kZSA9IHJvb3Q7CisgICAgdmFyIGxh
c3QgPSBsYXN0Tm9kZUluUmVpZmllZFRyZWUocm9vdCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAg
ICAgICAgZGVidWcoZHVtcE5vZGUobm9kZSkpOworICAgICAgICBpZiAobm9kZSA9PSBsYXN0KQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5vZGUgPSBpbnRlcm5hbHMudHJhdmVyc2VOZXh0
Tm9kZUluUmVpZmllZFRyZWUobm9kZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93UmVpZmll
ZFRyZWVCeVRyYXZlcnNpbmdJbkJhY2t3YXJkKHJvb3QpCit7CisgICAgdmFyIG5vZGUgPSBsYXN0
Tm9kZUluUmVpZmllZFRyZWUocm9vdCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgZGVi
dWcoZHVtcE5vZGUobm9kZSkpOworICAgICAgICBpZiAobm9kZSA9PSByb290KQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIG5vZGUgPSBpbnRlcm5hbHMudHJhdmVyc2VQcmV2aW91c05vZGVJ
blJlaWZpZWRUcmVlKG5vZGUpOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVl
KG5vZGUpCit7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub2RlKTsKKyAgICBkb2N1
bWVudC5ib2R5Lm9mZnNldExlZnQ7CisKKyAgICBkZWJ1ZygnUmVpZmllZCBUcmVlOicpOworICAg
IGRlYnVnKGR1bXBSZWlmaWVkVHJlZShub2RlKSk7CisKKyAgICBkZWJ1ZygnVHJhdmVyc2UgaW4g
Zm9yd2FyZC4nKTsKKyAgICBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNpbmdJbkZvd2FyZChub2Rl
KTsKKworICAgIGRlYnVnKCdUcmF2ZXJzZSBpbiBiYWNrd2FyZC4nKTsKKyAgICBzaG93UmVpZmll
ZFRyZWVCeVRyYXZlcnNpbmdJbkJhY2t3YXJkKG5vZGUpOworCisgICAgZGVidWcoJycpOworfQor
CitkZWJ1ZygnU2hhZG93Um9vdCBzaG91bGQgYmUgdXNlZC4nKTsKK3Nob3dSZWlmaWVkVHJlZSgK
KyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVT
aGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pKSwKKyAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKTsKKworZGVidWcoJ0EgY29udGVudCBlbGVt
ZW50IHNob3VsZCBzZWxlY3QgbGlnaHQgY2hpbGRyZW4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdkJ30pKSk7CisKK2RlYnVnKCdUZXN0IGZvciBjb250ZW50IGVsZW1lbnQgc2VsZWN0
b3IuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2En
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRl
bnQnLCB7J3NlbGVjdCc6ICcuZCd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpKTsKKworZGVi
dWcoJ0xpZ2h0IGNoaWxkcmVuIHNob3VsZCBiZSBzZWxlY3RlZCBvbmx5IGF0IG9uY2UuJyk7Citz
aG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3Nl
bGVjdCc6ICcuZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30p
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpKTsKKworZGVidWcoJ0EgY29udGVu
dCBlbGVtZW50IGNhbiBoYXZlIGZhbGxiYWNrIGVsZW1lbnRzLicpOworc2hvd1JlaWZpZWRUcmVl
KAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLnonfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2YxJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZjInfSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKTsKKworZGVidWcoJ0ZhbGxiYWNrIGVsZW1lbnRzIHNo
b3VsZCBub3QgYmUgdXNlZCBpZiA8Y29udGVudD4gZWxlbWVudCBzZWxlY3RzIGFueSBlbGVtZW50
cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcsIHsnc2VsZWN0JzogJy5jJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmMSd9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YyJ30pKSks
CisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pKSk7CisKK2RlYnVn
KCdUZXN0IGZvciBOZXN0ZWQgU2hhZG93Um9vdHMuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdjJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdkJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdnJ30pKSwKKyAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2gnfSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdpJ30pKSk7CisKK2RlYnVnKCdUZXN0IGZvciBNdWx0aXBsZSBTaGFkb3dSb290
cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdjJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ3NoYWRvdycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdlJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2YnfSkpKTsKKworLy8gRklYTUU6IE5lZWRzIGEgcm9idXN0IHdheSB0byByZXNldCB0aGlz
IGZsYWcuCitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE11
bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132207</attachid>
            <date>2012-03-15 23:10:27 -0700</date>
            <delta_ts>2012-03-20 22:51:14 -0700</delta_ts>
            <desc>to get required symbols.</desc>
            <filename>bug-79197-20120316151025.patch</filename>
            <type>text/plain</type>
            <size>50471</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwODI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2NjZmZTVmNjE4MDVk
NWI1ODI0YmYzZTYxODg3MmMwNjQxNWQzNS4uMjUyNzlkMzJlNzUwNDliNDFlODIzNDM2ZjQyOThi
YjgwOTk4NWFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTAzLTE1ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisgICAg
ICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQgaW4g
U2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBv
bmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBFdmVy
eSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJlIHN0
YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRv
IG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBk
aWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBzaGFk
b3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERPTSBz
dWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5CisgICAg
ICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVudCB3
aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmlnYXRp
b24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0aGF0
IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NoYWRvd0hvc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6c2hhZG93VHJlZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dUcmVl
T2ZQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZpcnN0
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkV2l0
aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VMaWdodENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxp
bmdJbkN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
Ojp0cmF2ZXJzZUJhY2tpbmdUb1lvdW5nZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjplc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1lRXNjYXBpbmdG
YWxsYmFja0NvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
OjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
YXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVJ
bkN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
YXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmFkanVzdGVkUGFyZW50Tm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRD
cm9zc2luZ1VwcGVyQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2
ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRU
cmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91
bmRhcnkpOgorICAgICAgICAqIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVpZmllZFRyZWVUcmF2ZXJzYWwpOgorICAgICAg
ICAqIGRvbS9TaGFkb3dUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omlu
c2VydGlvblBvaW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnNlbGVjdGlv
bkZvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dUcmVlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b250ZW50U2VsZWN0b3I6OmZpbmRGb3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWN0aW9uU2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKToKKyAgICAgICAgKEhU
TUxDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2li
bGluZ0luUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6bGFzdENoaWxkSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6dHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDMtMTQgIENocmlzIEZsZWl6YWNoICA8
Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWERlc2NyaXB0aW9uIGZvciBIVE1MNSBm
b290ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGE0YzljOTg4NzgxNTc2YjNlY2IzOTk4NDRi
N2U0MDMzYWQ4ZmIzNS4uZWU1MDg3MzI4NzYyNzExYzg0ZWI0YjEwZDJiNDU1MDgwNTEyYjYxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYxMiw2ICs2MTIsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgZG9tL1JhbmdlLmNwcAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAKICAgICBk
b20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwCisgICAgZG9tL1JlaWZpZWRUcmVlVHJhdmVy
c2FsLmNwcAogICAgIGRvbS9TY29wZWRFdmVudFF1ZXVlLmNwcAogICAgIGRvbS9TY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA5YjU4Yzk1MmFiZTcwOTU2Njg1MzA3YTI0Yzg4YWU3ZTU0
YTJiNTYzLi5iMTZjYjFlYjNkMDA1ODU5Y2QwMmI0ODcwZDc4MTNhMTk4YWYzZWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE4NDUsNiArMTg0NSw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisJU291cmNlL1dlYkNv
cmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1Jl
aWZpZWRUcmVlVHJhdmVyc2FsLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9SZW5kZXJlZERvY3Vt
ZW50TWFya2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCBlY2ZkNjQ3NDY1MTY0OTM2N2E4MzQwMDcwMzEwZGE2NjAxMWIwZTYwLi5hMDQ1YTEwMzgzYzll
NjE0ODYwZWE0ZjFhMjEyNzc3N2U0ODI1ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTU3MCw2ICs1NzAs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vUmFuZ2VFeGNlcHRpb24uY3BwIFwKICAgICBkb20v
UmF3RGF0YURvY3VtZW50UGFyc2VyLmggXAogICAgIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5jcHAgXAorICAgIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9TY29w
ZWRFdmVudFF1ZXVlLmNwcCBcCiAgICAgZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAgXAogICAgIGRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwIFwKQEAgLTE3MTMsNiAr
MTcxNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9RdWFsaWZpZWROYW1lLmggXAogICAgIGRv
bS9SYW5nZS5oIFwKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisgICAgZG9t
L1JlaWZpZWRUcmVlVHJhdmVyc2FsLmggXAogICAgIGRvbS9SZW5kZXJlZERvY3VtZW50TWFya2Vy
LmggXAogICAgIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBcCiAgICAgZG9tL1Nj
cmlwdEVsZW1lbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGZlM2FlNTBkMDU1Y2JjODFj
OWNmZjVlZWVjZjQ3ZmMwNjVkNjNiMDYuLjc5YWFjNWJhNTBlYjAyODdkMGEyMTg3YmEwNmRiNjk5
MDY0MDlhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02MDUsNiArNjA1LDExIEBAIF9fWk43
V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUy
ME5vZGVSZW5kZXJpbmdDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFj
dG9yeTI0Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50RVA3TlNFdmVudFA2TlNWaWV3CiBfX1pON1dl
YkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjdjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRF
UDdOU0V2ZW50CitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTFuZXh0U2libGlu
Z0VQS05TXzROb2RlRQorX19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDIwdHJhdmVy
c2VQcmV2aW91c05vZGVFUEtOU180Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2
ZXJzYWw5bGFzdENoaWxkRVBLTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJh
dmVyc2FsMTZ0cmF2ZXJzZU5leHROb2RlRVBLTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZp
ZWRUcmVlVHJhdmVyc2FsMTBmaXJzdENoaWxkRVBLTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyMFJl
bmRlckVtYmVkZGVkT2JqZWN0MzBzZXRTaG93c0NyYXNoZWRQbHVnaW5JbmRpY2F0b3JFdgogX19a
TjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTExc2V0TWltZVR5cGVFUktOM1dURjZTdHJp
bmdFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzZXRIVFRQU3RhdHVzQ29k
ZUVpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNzVmMGM4ZjA1YmNjZjRlYjg5MmFiYjgwYmYyN2RiNjky
ZDIwZjFjZS4uZTUyNjEyNzYwOWIwMDRlZjE1YjE4MzY4ZjI4ZWMxMWNmZjljOWQzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNjE4LDYgKzYxOCw3IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlLmgn
LAogICAgICAgICAgICAgJ2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaCcsCiAgICAgICAgICAgICAn
ZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9SZWlmaWVk
VHJlZVRyYXZlcnNhbC5oJywKICAgICAgICAgICAgICdkb20vUmVuZGVyZWREb2N1bWVudE1hcmtl
ci5oJywKICAgICAgICAgICAgICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oJywKICAgICAg
ICAgICAgICdkb20vU2NyaXB0UnVubmVyLmgnLApAQCAtNTE4MSw2ICs1MTgyLDggQEAKICAgICAg
ICAgICAgICdkb20vUmFuZ2VFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1Jhd0RhdGFE
b2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwJywKKyAg
ICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCcsCiAgICAgICAgICAgICAnZG9t
L1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2RvbS9TY29w
ZWRFdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZDhlNTdkYmQwNzE4YjRiOTQ2MDIyZmNjYWNlYTI2OWYzODliNzUzMy4uYTdmM2NjYmE4
MzM2ZDJmM2VlOWE2N2M2OWNjOTg2NzVjZGY3ZGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1Niw2ICsxMzU2LDggQEAK
IAkJNDlGRkJGMUQxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGMUMxMUM4
NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tICovOyB9OwogCQk0OUZGQkYz
RjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdM
TGF5ZXIuaCAqLzsgfTsKIAkJNDlGRkJGNDAxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYz
RTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSAqLzsgfTsKKwkJNEEwMTNEMjkxNTEy
RkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMDEzRDI3MTUxMkZENzcwMEUxRTYxMyAv
KiBSZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAgKi87IH07CisJCTRBMDEzRDJBMTUxMkZENzcwMEUx
RTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwMTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRU
cmVlVHJhdmVyc2FsLmggKi87IH07CiAJCTRBMERBMkZFMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEEwREEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHAgKi87IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTFFNzE5
MDE0RTEwMUU0MDA2MjZGOUQgLyogSlNIVE1MQ29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEExRTcxOEUxNEUxMDFFNDAwNjI2
RjlEIC8qIEpTSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTgyNzgsNiArODI4MCw4
IEBACiAJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dDNETWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYzRDExQzkzRUUz
MDA2QTcxMTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHTExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkZCRjNFMTFD
OTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEEwMTNEMjcxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlaWZpZWRUcmVlVHJhdmVyc2Fs
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEEwMTNEMjgxNTEyRkQ3NzAwRTFF
NjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRBMERBMkZDMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAw
QUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEExRTcxOEUxNEUxMDFFNDAwNjI2RjlEIC8qIEpTSFRNTENvbnRlbnRFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENvbnRlbnRF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDIxLDYgKzIxMDI1
LDggQEAKIAkJCQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFy
c2VyLmggKi8sCiAJCQkJODUwMzFCMzUwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyLmNwcCAqLywKIAkJCQk4NTAzMUIzNjBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuaCAqLywKKwkJCQk0QTAxM0QyNzE1MTJGRDc3MDBFMUU2MTMgLyog
UmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwICovLAorCQkJCTRBMDEzRDI4MTUxMkZENzcwMEUxRTYx
MyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNhbC5oICovLAogCQkJCUE3NkU1RjdFMTM1RTBEQ0YwMEE2
OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi8sCiAJCQkJNDk5OEFFQzQxM0Y5RDBF
QTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggKi8sCiAJCQkJNDk5
OEFFQzUxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlk
bCAqLywKQEAgLTIzNzE2LDYgKzIzNzIyLDcgQEAKIAkJCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFB
RjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0QzBBNDRFRkM3MDBGOTky
RTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNE
QTJEMEQwMDZDMUQwMEVGNkYyNiAvKiBSZWd1bGFyRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNEEwMTNEMkExNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwMTA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlQ1NT
UHJvcGVydHlDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2
NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlF
MDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywK
QEAgLTI2ODU2LDYgKzI2ODYzLDcgQEAKIAkJCQlCQ0FCNDE4MTEzRTM1NkU4MDBEOEFBRjMgLyog
UmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjRCMEE0NEVGQzcwMEY5OTJFMCAv
KiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEy
QzBEMDA2QzFEMDBFRjZGMjYgLyogUmVndWxhckV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNEEwMTNEMjkxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTAwMDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVD
U1NQcm9wZXJ0eUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDA2QzBEOTAwQ0ZEMTE0
NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMzMDlFMDQwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVy
c2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGNjYjUwMTVmNjM0ZWVkOTI1ODQ1MTgxZWNmYWQyYTAwOWRhNTI1NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAK
QEAgLTAsMCArMSwzMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVpZmll
ZFRyZWVUcmF2ZXJzYWwuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
Q29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRl
ICJTaGFkb3dUcmVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBi
b29sIGlzU2hhZG93SG9zdChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlICYm
IG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRvd1Jvb3Qo
KTsKK30KKworc3RhdGljIGlubGluZSBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlRm9yKGNvbnN0IE5v
ZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAg
ICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dUcmVlKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hhZG93VHJlZSogc2hhZG93VHJlZU9mUGFyZW50KGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+cGFyZW50Tm9kZSgpKQorICAg
ICAgICByZXR1cm4gc2hhZG93VHJlZUZvcihub2RlLT5wYXJlbnROb2RlKCkpOworICAgIHJldHVy
biAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZChjb25zdCBO
b2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9IHRyYXZl
cnNlQ2hpbGQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKKyAg
ICBBU1NFUlQoIWNoaWxkIHx8ICFjaGlsZC0+aXNTaGFkb3dSb290KCkpOworICAgIHJldHVybiBj
aGlsZDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZChjb25zdCBO
b2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9IHRyYXZl
cnNlQ2hpbGQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7Cisg
ICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hpbGQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4g
Y2hpbGQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRXaXRob3V0
Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5v
ZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOworICAgIEFTU0VSVCghY2hpbGQgfHwg
IWNoaWxkLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIGNoaWxkOworfQorCitOb2RlKiBS
ZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VDaGlsZChjb25zdCBOb2RlKiBub2RlLCBSZWlm
aWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUp
OworICAgIC8vIEZJWE1FOiBBZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2
ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgorICAgIC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChu
b2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7CisgICAgQVNTRVJU
KCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgU2hhZG93VHJlZSogc2hhZG93VHJlZSA9IHNo
YWRvd1RyZWVGb3Iobm9kZSk7CisgICAgaWYgKHNoYWRvd1RyZWUgJiYgc2hhZG93VHJlZS0+aGFz
U2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VMaWdodENoaWxkcmVuKHNoYWRv
d1RyZWUtPnlvdW5nZXN0U2hhZG93Um9vdCgpLCBkaXJlY3Rpb24pOworICAgIE5vZGUqIGNoaWxk
ID0gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIGNo
aWxkOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VMaWdodENoaWxk
cmVuKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVj
dGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKE5vZGUqIGNoaWxkID0gKGRpcmVj
dGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5maXJz
dENoaWxkKCkgOiBub2RlLT5sYXN0Q2hpbGQoKSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZU1l
KGNoaWxkLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VNZShjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZl
cnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChp
c0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgIGNvbnN0IEhUTUxDb250ZW50U2VsZWN0
aW9uTGlzdCogc2VsZWN0aW9uTGlzdCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPnNlbGVjdGlv
bnMoKTsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSAoZGly
ZWN0aW9uID09IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IHNlbGVjdGlv
bkxpc3QtPmZpcnN0KCkgOiBzZWxlY3Rpb25MaXN0LT5sYXN0KCkpKQorICAgICAgICAgICAgcmV0
dXJuIHRyYXZlcnNlTWUoc2VsZWN0aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAgICAgIHJl
dHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgZGlyZWN0aW9uKTsKKyAgICB9CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6bmV4dFNpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9k
ZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgTm9kZSogbmV4dCA9
IHRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBBU1NFUlQoIW5leHQgfHwgIW5leHQt
PmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gbmV4dDsKK30KKworTm9kZSogUmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFT
U0VSVChub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyAgICBOb2Rl
KiBuZXh0ID0gdHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBS
ZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBBU1NFUlQoIW5leHQg
fHwgIW5leHQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gbmV4dDsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9u
UG9pbnQoY29uc3QgTm9kZSogbm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGly
ZWN0aW9uKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBTaGFkb3dUcmVlKiBzaGFkb3dUcmVl
ID0gc2hhZG93VHJlZU9mUGFyZW50KG5vZGUpOworICAgIGlmICghc2hhZG93VHJlZSkKKyAgICAg
ICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0aW9uKTsK
KyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93VHJlZS0+c2VsZWN0
aW9uRm9yKG5vZGUpOworICAgIGlmICghc2VsZWN0aW9uKQorICAgICAgICByZXR1cm4gdHJhdmVy
c2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOworICAgIGlmIChIVE1MQ29u
dGVudFNlbGVjdGlvbiogbmV4dFNlbGVjdGlvbiA9IChkaXJlY3Rpb24gPT0gUmVpZmllZFRyZWVU
cmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9uLT5uZXh0KCkgOiBzZWxlY3Rpb24t
PnByZXZpb3VzKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VNZShuZXh0U2VsZWN0aW9uLT5u
b2RlKCksIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ01heWJlQmFja1Rv
SW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBkaXJlY3Rpb24pOwor
fQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50
VHJlZShjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChOb2RlKiBuZXh0ID0gKGRpcmVj
dGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5uZXh0
U2libGluZygpIDogbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpKQorICAgICAgICByZXR1cm4gdHJh
dmVyc2VNZShuZXh0LCBkaXJlY3Rpb24pOworICAgIGlmIChOb2RlKiBuZXh0ID0gdHJhdmVyc2VC
YWNraW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChub2RlLCBkaXJlY3Rpb24pKQorICAgICAgICByZXR1
cm4gbmV4dDsKKyAgICByZXR1cm4gZXNjYXBlRmFsbGJhY2tDb250ZW50RWxlbWVudChub2RlLCBk
aXJlY3Rpb24pOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VCYWNr
aW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZl
cnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChu
b2RlLT5wYXJlbnROb2RlKCkgJiYgbm9kZS0+cGFyZW50Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkg
eworICAgICAgICBTaGFkb3dSb290KiBwYXJlbnRTaGFkb3dSb290ID0gdG9TaGFkb3dSb290KG5v
ZGUtPnBhcmVudE5vZGUoKSk7CisgICAgICAgIGlmICghcGFyZW50U2hhZG93Um9vdC0+aXNZb3Vu
Z2VzdCgpKSB7CisgICAgICAgICAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRJbnNlcnRpb25Q
b2ludCA9IHBhcmVudFNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsKKyAgICAgICAgICAgIEFTU0VS
VChhc3NpZ25lZEluc2VydGlvblBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNp
YmxpbmdJbkN1cnJlbnRUcmVlKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGRpcmVjdGlvbik7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJh
dmVyc2FsOjplc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUsIFJl
aWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9k
ZSk7CisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSAmJiBpc0luc2VydGlvblBvaW50KG5vZGUt
PnBhcmVudE5vZGUoKSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdNYXliZUJhY2tU
b0luc2VydGlvblBvaW50KG5vZGUtPnBhcmVudE5vZGUoKSwgZGlyZWN0aW9uKTsKKyAgICByZXR1
cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTWVFc2NhcGlu
Z0ZhbGxiYWNrQ29udGVudHMoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkm
IGNyb3NzZWQpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChpc0luc2VydGlvblBvaW50
KG5vZGUpKQorICAgICAgICByZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9p
bnQobm9kZSwgY3Jvc3NlZCk7CisgICAgY3Jvc3NlZCA9IE5vdENyb3NzZWQ7CisgICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6cGFyZW50Tm9kZShjb25zdCBOb2RlKiBub2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jv
c3NlZCkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jv
b3QoKSk7CisgICAgLy8gRklYTUU6IEFkZCBhbiBhc3NlcnRpb24gb25jZSBJbnNlcnRpb25Qb2lu
dCBoYXZlIGlzQWN0aXZlKCkgZnVuY3Rpb24uCisgICAgLy8gQVNTRVJUKCFpc0luc2VydGlvblBv
aW50KG5vZGUpIHx8ICF0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKTsKKyAgICBy
ZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgY3Jvc3NlZCk7
Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlKGNvbnN0IE5vZGUq
IG5vZGUpCit7CisgICAgLy8gRklYTUU6IERvIG5vdCB1c2UgJ3Vuc2VkJyBwYXJhbWV0ZXIuCisg
ICAgQ3Jvc3NlZFVwcGVyQm91bmRhcnkgdW51c2VkOworICAgIHJldHVybiBwYXJlbnROb2RlKG5v
ZGUsIHVudXNlZCk7Cit9CisKKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5v
ZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
QVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIC8v
IEZJWE1FOiBBZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2
ZSgpIGZ1bmN0aW9uLgorICAgIC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAh
dG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7CisgICAgQ3Jvc3NlZFVwcGVyQm91
bmRhcnkgY3Jvc3NlZDsKKyAgICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlTWF5YmVCYWNrVG9J
bnNlcnRpb25Qb2ludChub2RlLCBjcm9zc2VkKTsKKyAgICBpZiAoY3Jvc3NlZCA9PSBDcm9zc2Vk
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFyZW50OworfQorCitOb2RlKiBSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29u
c3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgaWYg
KFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQobm9kZSkpIHsKKyAg
ICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5z
ZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFj
a1RvSW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBjcm9zc2VkKTsK
KyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGVJbkN1cnJlbnRUcmVlKG5vZGUsIGNyb3NzZWQp
OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUluQ3VycmVudFRy
ZWUoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7Cisg
ICAgaWYgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAo
cGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlQmFj
a1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QodG9TaGFkb3dSb290KHBhcmVudCksIGNyb3NzZWQp
OworICAgICAgICByZXR1cm4gdHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyhwYXJl
bnQsIGNyb3NzZWQpOworICAgIH0KKyAgICBjcm9zc2VkID0gTm90Q3Jvc3NlZDsKKyAgICByZXR1
cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVCYWNrVG9Z
b3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290LCBDcm9z
c2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBBU1NFUlQoc2hhZG93Um9vdCk7Cisg
ICAgaWYgKHNoYWRvd1Jvb3QtPmlzWW91bmdlc3QoKSkgeworICAgICAgICBjcm9zc2VkID0gQ3Jv
c3NlZDsKKyAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmhvc3QoKTsKKyAgICB9CisgICAgSW5z
ZXJ0aW9uUG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25l
ZFRvKCk7CisgICAgQVNTRVJUKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQpOworICAgIHJldHVybiBw
YXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChhc3NpZ25lZEluc2VydGlvblBvaW50
LCBjcm9zc2VkKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OmFkanVzdGVkUGFy
ZW50Tm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChTaGFkb3dUcmVlKiBzaGFkb3dU
cmVlID0gc2hhZG93VHJlZU9mUGFyZW50KG5vZGUpKSB7CisgICAgICAgIGlmIChIVE1MQ29udGVu
dFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93VHJlZS0+c2VsZWN0aW9uRm9yKG5vZGUpKQor
ICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi0+aW5zZXJ0aW9uUG9pbnQoKTsKKyAgICB9Cisg
ICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGNvbnN0IFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3Qobm9kZSk7CisgICAgICAgIGlmICghc2hhZG93Um9v
dC0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgICAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRJ
bnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsKKyAgICAgICAgICAgIEFT
U0VSVChhc3NpZ25lZEluc2VydGlvblBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiBhc3NpZ25l
ZEluc2VydGlvblBvaW50OworICAgICAgICB9CisgICAgICAgIHNoYWRvd1Jvb3QtPmhvc3QoKTsK
KyAgICB9CisgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKK30KKworTm9kZSogUmVpZmll
ZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBpZiAoTm9kZSogbmV4dCA9IGZpcnN0Q2hpbGQobm9kZSkpCisgICAgICAgIHJldHVybiBuZXh0
OworICAgIGlmIChOb2RlKiBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSkpCisgICAgICAgIHJldHVy
biBuZXh0OworICAgIGNvbnN0IE5vZGUqIG4gPSBub2RlOworICAgIHdoaWxlIChuICYmICFuZXh0
U2libGluZyhuKSkKKyAgICAgICAgbiA9IHBhcmVudE5vZGUobik7CisgICAgaWYgKG4pCisgICAg
ICAgIHJldHVybiBuZXh0U2libGluZyhuKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJv
dW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFpc1NoYWRvd0hvc3Qobm9kZSkp
IHsKKyAgICAgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwg
UmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICAgICAgICAgIHJldHVy
biBuZXh0OworICAgIH0KKyAgICBpZiAoTm9kZSogbmV4dCA9IG5leHRTaWJsaW5nKG5vZGUpKQor
ICAgICAgICByZXR1cm4gbmV4dDsKKyAgICBjb25zdCBOb2RlKiBuID0gbm9kZTsKKyAgICB3aGls
ZSAobiAmJiAhbmV4dFNpYmxpbmcobikpCisgICAgICAgIG4gPSBwYXJlbnROb2RlV2l0aG91dENy
b3NzaW5nVXBwZXJCb3VuZGFyeShuKTsKKyAgICBpZiAobikKKyAgICAgICAgcmV0dXJuIG5leHRT
aWJsaW5nKG4pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6dHJhdmVyc2VQcmV2aW91c05vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9k
ZSogbiA9IHByZXZpb3VzU2libGluZyhub2RlKSkgeworICAgICAgICB3aGlsZSAoTm9kZSogY2hp
bGQgPSBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkKG4pKQorICAgICAgICAgICAgbiA9
IGNoaWxkOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGUo
bm9kZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3Vz
Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBpZiAoTm9kZSogbiA9IHByZXZpb3VzU2libGluZyhub2RlKSkgeworICAgICAgICB3aGlsZSAo
IWlzU2hhZG93SG9zdChuKSkgeworICAgICAgICAgICAgaWYgKE5vZGUqIGNoaWxkID0gUmVpZmll
ZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTGlnaHRDaGlsZHJlbihuLCBSZWlmaWVkVHJlZVRyYXZl
cnNhbERpcmVjdGlvbkJhY2t3YXJkKSkKKyAgICAgICAgICAgICAgICBuID0gY2hpbGQ7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIG47CisgICAgfQorICAgIHJldHVybiBwYXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeShub2RlKTsKK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JlaWZpZWRUcmVlVHJhdmVyc2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UyNDNkNGM4ZjBjYzk2Yzc0ODg4
MjE4YWNmNWZiMDdiMWJiZjFjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsX2gKKyNkZWZpbmUgUmVpZmllZFRyZWVUcmF2ZXJzYWxfaAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dSb290OworCitlbnVt
IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIHsKKyAgICBSZWlmaWVkVHJlZVRyYXZlcnNh
bERpcmVjdGlvbkZvcndhcmQsCisgICAgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNr
d2FyZAorfTsKKworLy8gRklYTUU6IE1ha2Ugc29tZSBmdW5jdGlvbnMgaW5saW5lIHRvIG9wdGlt
aXNlIHRoZSBwZXJmb3JtYW5jZS4KK2NsYXNzIFJlaWZpZWRUcmVlVHJhdmVyc2FsIHsKK3B1Ymxp
YzoKKyAgICBlbnVtIENyb3NzZWRVcHBlckJvdW5kYXJ5IHsKKyAgICAgICAgTm90Q3Jvc3NlZCwK
KyAgICAgICAgQ3Jvc3NlZCwKKyAgICB9OworCisgICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQo
Y29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBsYXN0Q2hpbGQoY29uc3QgTm9kZSopOwor
ICAgIHN0YXRpYyBOb2RlKiBsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNv
bnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlKik7
CisgICAgc3RhdGljIE5vZGUqIHByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7CisKKyAgICBz
dGF0aWMgTm9kZSogcGFyZW50Tm9kZShjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkm
KTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZShjb25zdCBOb2RlKik7CisgICAgc3RhdGlj
IE5vZGUqIHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUq
KTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5vZGUqKTsKKyAg
ICBzdGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91c05vZGUoY29uc3QgTm9kZSopOworCisgICAg
Ly8gRklYTUU6IEFuICdhZGp1c3RlZCcgaXMgbm90IGdvb2QgbmFtZSBmb3IgZ2VuZXJhbCB1c2Ug
Y2FzZS4gUmVuYW1lIHRoaXMuCisgICAgLy8gRG8gbm90IHNraXAgZWl0aGVyIFNoYWRvd1Jvb3Qg
b3IgSW5zZXJ0aW9uUG9pbnQuCisgICAgc3RhdGljIE5vZGUqIGFkanVzdGVkUGFyZW50Tm9kZShj
b25zdCBOb2RlKik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRD
cm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2
ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSop
OworCitwcml2YXRlOgorICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZUNoaWxkKGNvbnN0IE5vZGUq
LCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZl
cnNlTWUoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKyAgICBz
dGF0aWMgTm9kZSogdHJhdmVyc2VMaWdodENoaWxkcmVuKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJl
ZVRyYXZlcnNhbERpcmVjdGlvbik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VTaWJsaW5n
TWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJz
YWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRU
cmVlKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisKKyAgICBz
dGF0aWMgTm9kZSogdHJhdmVyc2VCYWNraW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChjb25zdCBOb2Rl
KiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2RlKiBlc2Nh
cGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNh
bERpcmVjdGlvbik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJh
Y2tDb250ZW50cyhjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKworICAgIHN0
YXRpYyBOb2RlKiBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2Rl
KiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZUlu
Q3VycmVudFRyZWUoY29uc3QgTm9kZSosIENyb3NzZWRVcHBlckJvdW5kYXJ5Jik7CisgICAgc3Rh
dGljIE5vZGUqIHBhcmVudE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBT
aGFkb3dSb290KiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKK307CisKK30gLy8gbmFtZXNwYWNl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCmluZGV4IGFlYzk5OGJkODA4YTc0
NGVjY2RlZThhOTUwNzk5ZmExZTBhNWI1NTkuLmIzZDM4YjlmZTRjNDNkZGYxMjc3MGQwNGQ5MzQz
MDg3NDY4ODJlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCi0jaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIK
KyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBTaGFkb3dUcmVlOjpkZXRh
Y2hIb3N0KEVsZW1lbnQqIGhvc3QpCiAgICAgaG9zdC0+ZGV0YWNoQXNOb2RlKCk7CiB9CiAKLUlu
c2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBj
b25zdAorSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKGNvbnN0
IE5vZGUqIG5vZGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cGFyZW50Tm9k
ZSgpKTsKIApAQCAtMjMwLDYgKzIzMCwxMyBAQCBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6
aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gZm91bmQtPmlu
c2VydGlvblBvaW50KCk7CiB9CiAKK0hUTUxDb250ZW50U2VsZWN0aW9uKiBTaGFkb3dUcmVlOjpz
ZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fc2VsZWN0
b3IpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3NlbGVjdG9yLT5maW5kRm9yKG5v
ZGUpOworfQorCiB2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkKIHsKICAgICBkZXRhY2goKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93VHJlZS5oCmluZGV4IDU0YzQxYmJlNDE5ZjVjM2IxMmU3ODY4MmI2ZDQ5
MjI1ZDQ2ZjliOTEuLjlhNmUyMTNlZjhhNDE0YzhiY2Q1NmM2NTQ5NzBkOWU1ODM0OWUzM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1RyZWUuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKIGNsYXNzIEluc2VydGlvblBvaW50OwogY2xhc3Mg
VHJlZVNjb3BlOworY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rpb247CiAKIGNsYXNzIFNoYWRvd1Ry
ZWUgewogcHVibGljOgpAQCAtNzcsNyArNzgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWF0dGFj
aEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwogICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgp
OwogCi0gICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsK
KyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSopIGNvbnN0
OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSopIGNv
bnN0OwogCiAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKICAgICBI
VE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAppbmRleCA5NTM5NWJjOGJm
MjJiYTgzOThmZDU2ZTQ1ZDg2NGRhNjMxODI2OTI0Li41NmRkZWI4YjBmOGQwYzlhODA5MDk5MDNj
YWExMTliYjJmYTYwMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudFNlbGVjdG9yLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSFRNTENvbnRl
bnRTZWxlY3Rvcjo6dW5zZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBsaXN0KQogICAg
IGxpc3QtPmNsZWFyKCk7CiB9CiAKLUhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNl
bGVjdG9yOjpmaW5kRm9yKE5vZGUqIGtleSkgY29uc3QKK0hUTUxDb250ZW50U2VsZWN0aW9uKiBI
VE1MQ29udGVudFNlbGVjdG9yOjpmaW5kRm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9zZWxlY3Rpb25TZXQuZmluZChrZXkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCmluZGV4IDE0ZWEwNTdhMGE1ZWQ1
NzQ3Y2RjYTk4OThkMmE1ZTVmYTUzYzU4NzQuLjYzNjdlMmM4ZTQ3NzFjY2UyODk1NDE0MjI1NDMx
YjJjMTI5MTYxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxD
b250ZW50U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29u
dGVudFNlbGVjdG9yLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkKEhU
TUxDb250ZW50U2VsZWN0aW9uKiB2YWx1ZSkgeyBtX3NldC5hZGQodmFsdWUpOyB9CiAgICAgdm9p
ZCByZW1vdmUoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0LnJlbW92ZSh2YWx1
ZSk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3NldC5pc0VtcHR5KCk7
IH0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChOb2RlKiBrZXkpIGNvbnN0OworICAg
IEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgc3RydWN0IFRyYW5zbGF0b3IgewpAQCAtMTE4LDkgKzExOCw5IEBAIHByaXZh
dGU6CiAgICAgUG9pbnRlclNldCBtX3NldDsKIH07CiAKLWlubGluZSBIVE1MQ29udGVudFNlbGVj
dGlvbiogSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQoTm9kZSoga2V5KSBjb25zdAoraW5s
aW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZChj
b25zdCBOb2RlKiBrZXkpIGNvbnN0CiB7Ci0gICAgUG9pbnRlclNldDo6aXRlcmF0b3IgZm91bmQg
PSBtX3NldC5maW5kPE5vZGUqLCBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNsYXRvcj4o
a2V5KTsKKyAgICBQb2ludGVyU2V0OjppdGVyYXRvciBmb3VuZCA9IG1fc2V0LmZpbmQ8Y29uc3Qg
Tm9kZSosIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOwogICAgIHJl
dHVybiBmb3VuZCAhPSBtX3NldC5lbmQoKSA/ICpmb3VuZCA6IDA7CiB9CiAKQEAgLTEzMiw3ICsx
MzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbGVjdChJbnNlcnRpb25Qb2ludCosIEhUTUxD
b250ZW50U2VsZWN0aW9uTGlzdCopOwogICAgIHZvaWQgdW5zZWxlY3QoSFRNTENvbnRlbnRTZWxl
Y3Rpb25MaXN0Kik7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmRGb3IoTm9kZSoga2V5
KSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZEZvcihjb25zdCBOb2RlKiBr
ZXkpIGNvbnN0OwogCiAgICAgdm9pZCB3aWxsU2VsZWN0T3ZlcihFbGVtZW50KiBzaGFkb3dIb3N0
KTsKICAgICB2b2lkIGRpZFNlbGVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKaW5kZXggYjUyODJjZGRjMjc0ODJjZWMzMzUzNWRkYmViNjhjNzBmNTU4
ODRiYy4uNzRiMWEyMDBjNGQ5ZTJiMTI3ODA1NGM0NDdhZjQwMTFkNDZkNDhiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC03MSw3ICs3MSw3IEBA
IHByaXZhdGU6CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0IG1fc2VsZWN0aW9uczsKIH07
CiAKLWlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKK2lubGluZSBib29s
IGlzSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtODgsNiArODgsMTIgQEAgaW5saW5lIEluc2VydGlvblBv
aW50KiB0b0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEluc2VydGlvblBvaW50Kj4obm9kZSk7CiB9CiAKK2lubGluZSBjb25zdCBJbnNlcnRpb25Qb2lu
dCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0lu
c2VydGlvblBvaW50KG5vZGUpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSW5zZXJ0
aW9uUG9pbnQqPihub2RlKTsKK30KKwogaW5saW5lIGJvb2wgaXNTaGFkb3dCb3VuZGFyeShOb2Rl
KiBub2RlKQogewogICAgIGlmICghaXNJbnNlcnRpb25Qb2ludChub2RlKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjMjkzNjg2NGY3ZTRiMjMwZDRkNWM5MzhiYTk4NDVl
ZDQxYWM1YWZhLi4xZWYxMDBhZTQzMjU3NTc3ZjU2ZGQ3OWQyNzI5NDI5ODdkNWMzZDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVk
ZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UmFuZ2UuaCIKKyNpbmNsdWRlICJSZWlmaWVkVHJlZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgpAQCAtMTc3LDYgKzE3OCw1MSBAQCBib29sIEludGVybmFsczo6YXR0YWNoZWQo
Tm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG5vZGUtPmF0dGFjaGVk
KCk7CiB9CiAKK05vZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKE5vZGUq
IG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAgICAgICBl
YyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJl
dHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxpbmcobm9kZSk7Cit9CisKK05vZGUq
IEludGVybmFsczo6Zmlyc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZpZWRUcmVl
VHJhdmVyc2FsOjpmaXJzdENoaWxkKG5vZGUpOworfQorCitOb2RlKiBJbnRlcm5hbHM6Omxhc3RD
aGlsZEluUmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
aWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hp
bGQobm9kZSk7Cit9CisKK05vZGUqIEludGVybmFsczo6dHJhdmVyc2VOZXh0Tm9kZUluUmVpZmll
ZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgcmV0dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlKG5v
ZGUpOworfQorCitOb2RlKiBJbnRlcm5hbHM6OnRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVk
VHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2Rl
KG5vZGUpOworfQorCiBTdHJpbmcgSW50ZXJuYWxzOjplbGVtZW50UmVuZGVyVHJlZUFzVGV4dChF
bGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWVsZW1lbnQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDY3YzA5MjJiYmI1YjBmNGZhYmVm
YWFjZDA0ZjM5YjdkYWQwYmEwNDIuLjMwNjk0ZjAyNzM3YmQwYTAwZGFjOTNlMjBmYWEyZmNmYjBm
NjI0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtODQsNiArODQsMTIgQEAg
cHVibGljOgogCiAgICAgYm9vbCBhdHRhY2hlZChOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwogCisg
ICAgTm9kZSogbmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7
CisgICAgTm9kZSogZmlyc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSosIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBOb2RlKiBsYXN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRyZWUoTm9kZSosIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVpZmllZFRyZWUo
Tm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKKwogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKICAgICB2
b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoRWxlbWVudCosIGNvbnN0IFN0cmluZyYgY29s
b3JWYWx1ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBk
OTg1NmFkMDI1ZTU4Yjk5YTkxMDI1NGQ1NjAyNmE4YWEzMjllMzM0Li42MzA4ZGRiMzE3YzJjM2Zi
NGM1YmNlNjZmNDE3MTNkOWUzMGQxMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCkBAIC01Niw2ICs1NiwxMiBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgRWxlbWVudCBn
ZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChpbiBOb2RlIHNoYWRvd1Jvb3QsIGluIERPTVN0cmlu
ZyBpZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGJvb2xlYW4gaXNWYWxpZENvbnRl
bnRTZWxlY3QoaW4gRWxlbWVudCBjb250ZW50RWxlbWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAKKyAgICAgICAgTm9kZSBuZXh0U2libGluZ0luUmVpZmllZFRyZWUoaW4gTm9kZSBub2RlKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSBmaXJzdENoaWxkSW5SZWlmaWVkVHJl
ZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIGxhc3RD
aGlsZEluUmVpZmllZFRyZWUoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgTm9kZSB0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJh
aXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHRyYXZlcnNlUHJldmlvdXNOb2RlSW5S
ZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworCiAgICAgICAg
IGJvb2xlYW4gYXR0YWNoZWQoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAog
I2lmIGRlZmluZWQoRU5BQkxFX0lOUFVUX0NPTE9SKSAmJiBFTkFCTEVfSU5QVVRfQ09MT1IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDAyOTRkYWRiODQ0NjA2ZWY0NWQ2MjE4MjAxYTY3MTFi
NjNmNmEyMzguLjgzMjI3YmJmMDYxNTM0MGFlMWU4OGFmNjE1YzcxYTg3MDMyYmQxMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjMsNiArNjMsMTEgQEAgX1pON1dlYkNvcmUxOEhUTUxD
b250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEU7CiBfWk43V2ViQ29yZTE5SW5zcGVj
dG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzRWlp
OwogX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0QzFFUE5TXzROb2RlRTsKIF9aTjdX
ZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEQxRXY7CitfWk43V2ViQ29yZTIwUmVpZmllZFRy
ZWVUcmF2ZXJzYWwxMW5leHRTaWJsaW5nRVBLTlNfNE5vZGVFOworX1pON1dlYkNvcmUyMFJlaWZp
ZWRUcmVlVHJhdmVyc2FsMjB0cmF2ZXJzZVByZXZpb3VzTm9kZUVQS05TXzROb2RlRTsKK19aTjdX
ZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDlsYXN0Q2hpbGRFUEtOU180Tm9kZUU7CitfWk43
V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxNnRyYXZlcnNlTmV4dE5vZGVFUEtOU180Tm9k
ZUU7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxMGZpcnN0Q2hpbGRFUEtOU180
Tm9kZUU7CiBfWk43V2ViQ29yZTIxZ2V0Q2FjaGVkRE9NU3RydWN0dXJlRVBOU18xN0pTRE9NR2xv
YmFsT2JqZWN0RVBLTjNKU0M5Q2xhc3NJbmZvRTsKIF9aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJl
c2VudGF0aW9uRVBOU183RWxlbWVudEVqOwogX1pON1dlYkNvcmUyMnVzZXJQcmVmZXJyZWRMYW5n
dWFnZXNFdjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAyYjVjZGU5NDc1NmE0ZWM1NzY4YmU2MzA3NmY5NTJiZGQxMzRkYTRl
Li5mNjBlN2ZlY2IyODY1MThjYzkyNWU2N2E2YzI3ZGE4MmNhYWU1N2YwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTItMDMtMTUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtTaGFkb3cgRE9NXSBBZGQgUmVpZmllZCBET00gVHJlZSB0cmF2ZXJzYWwgaW50
ZXJuYWwgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5MTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGludGVybmFsIEFQSXMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdHJhdmVyc2UgUmVpZmll
ZCBET00gdHJlZSwgd2hpY2ggaXMKKyAgICAgICAgYSByZXN1bHQgb2Ygbm9kZSBkaXN0cmlidXRp
b24gYWxnb3JpdGhtIGV4cGxhaW5lZCBpbiBTaGFkb3cgRE9NIHNwZWMuCisgICAgICAgIGh0dHBz
Oi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAvc3BlYy9zaGFkb3cv
aW5kZXguaHRtbAorCisgICAgICAgIEV2ZXJ5IHB1YmxpYyBmdW5jdGlvbnMgZGVmaW5lZCBpbiBS
ZWlmaWVkVHJlZVRyYXZlcnNhbCBhcmUgc3RhdGljCisgICAgICAgIGZ1bmN0aW9ucyBhbmQgYXJl
IG5hbWVkIGluIGEgc2ltaWxhciB3YXkgdG8gb25lcyBkZWZpbmVkIGluIFdlYkNvcmU6Ok5vZGUg
Y2xhc3MuCisgICAgICAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBSZWlmaWVkVHJlZVRy
YXZlcnNhbCBBUElzIGNvbnNpZGVyIHNoYWRvdworICAgICAgICBob3N0cyBhbmQgYWxzbyB0cmF2
ZXJzZSBub2RlcyBpcyBTaGFkb3cgRE9NIHN1YnRyZWVzLCBjcm9zc2luZyBzaGFkb3cncyB1cHBl
ciBhbmQgbG93ZXIgYm91bmRhcnkKKyAgICAgICAgdHJhbnNwYXJlbnRseS4KKworICAgICAgICBU
aGVyZSBpcyBubyBhY3R1YWwgY2xpZW50IHdoaWNoIHVzZXMgdGhlc2UgQVBJcy4gRm9sbG93LXVw
IHBhdGNoZXMgZm9yIEZvY3VzTmF2aWdhdGlvbgorICAgICAgICBhbmQgRXZlbnREaXNwYXRjaGVy
IHdpbGwgdXNlIHRoZSBBUElzIHNvIHRoYXQgdGhleSBjYW4gdHJhdmVyc2Ugbm9kZSBpbiByZWlm
aWVkIHRyZWUgb3JkZXIuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVl
LXRyYXZlcnNhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAzLTE0ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVhEZXNjcmlwdGlv
biBmb3IgSFRNTDUgZm9vdGVyIGFuZCBBUklBIHJvbGUgY29udGVudGluZm8gaW5jb3JyZWN0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZl
cnNhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10
cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRjZWM4NjJmMjIyMTQ0MGZk
ZDQ1ZjZjZjA3YzJlYjBkYjA0Yjc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1NiBAQAorVGVzdHMgZm9yIFNoYWRvd1Jvb3QgSlMgQVBJcy4gQ2FuIG9ubHkgcnVuIHdp
dGhpbiBEUlQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NoYWRvd1Jvb3Qgc2hv
dWxkIGJlIHVzZWQuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKworVHJh
dmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitUcmF2ZXJzZSBpbiBiYWNr
d2FyZC4KK0RJVgkgaWQ9YgorRElWCSBpZD1hCisKK0EgY29udGVudCBlbGVtZW50IHNob3VsZCBz
ZWxlY3QgbGlnaHQgY2hpbGRyZW4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9
YgorCURJVgkgaWQ9YworCURJVgkgaWQ9ZAorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBp
ZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9YworRElWCSBpZD1kCitUcmF2ZXJzZSBpbiBiYWNrd2Fy
ZC4KK0RJVgkgaWQ9ZAorRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitUZXN0IGZv
ciBjb250ZW50IGVsZW1lbnQgc2VsZWN0b3IuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlE
SVYJIGlkPWIKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorVHJhdmVyc2UgaW4g
YmFja3dhcmQuCitESVYJIGlkPWEKKworTGlnaHQgY2hpbGRyZW4gc2hvdWxkIGJlIHNlbGVjdGVk
IG9ubHkgYXQgb25jZS4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCitU
cmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK1RyYXZlcnNlIGluIGJh
Y2t3YXJkLgorRElWCSBpZD1lCitESVYJIGlkPWQKK0RJVgkgaWQ9YworRElWCSBpZD1hCisKK0Eg
Y29udGVudCBlbGVtZW50IGNhbiBoYXZlIGZhbGxiYWNrIGVsZW1lbnRzLgorUmVpZmllZCBUcmVl
OgorRElWCSBpZD1hCisJRElWCSBpZD1iCisJRElWCSBpZD1mMQorCURJVgkgaWQ9ZjIKKworVHJh
dmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWYxCitESVYJ
IGlkPWYyCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZjIKK0RJVgkgaWQ9ZjEKK0RJ
VgkgaWQ9YgorRElWCSBpZD1hCisKK0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgdXNl
ZCBpZiAgZWxlbWVudCBzZWxlY3RzIGFueSBlbGVtZW50cy4KK1JlaWZpZWQgVHJlZToKK0RJVgkg
aWQ9YQorCURJVgkgaWQ9YgorCURJVgkgaWQ9ZjEKKwlESVYJIGlkPWYyCisKK1RyYXZlcnNlIGlu
IGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1mMQorRElWCSBpZD1mMgor
VHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWYyCitESVYJIGlkPWYxCitESVYJIGlkPWIK
K0RJVgkgaWQ9YQorCitUZXN0IGZvciBOZXN0ZWQgU2hhZG93Um9vdHMuCitSZWlmaWVkIFRyZWU6
CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwkJRElWCSBpZD1jCisJCURJVgkgaWQ9ZQorCQlESVYJ
IGlkPWQKKwlESVYJIGlkPWYKKwlESVYJIGlkPWgKKwlESVYJIGlkPWkKKwlESVYJIGlkPWcKKwor
VHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWMKK0RJ
VgkgaWQ9ZQorRElWCSBpZD1kCitESVYJIGlkPWYKK0RJVgkgaWQ9aAorRElWCSBpZD1pCitESVYJ
IGlkPWcKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1nCitESVYJIGlkPWkKK0RJVgkg
aWQ9aAorRElWCSBpZD1mCitESVYJIGlkPWQKK0RJVgkgaWQ9ZQorRElWCSBpZD1jCitESVYJIGlk
PWIKK0RJVgkgaWQ9YQorCitUZXN0IGZvciBNdWx0aXBsZSBTaGFkb3dSb290cy4KK1JlaWZpZWQg
VHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9ZAorCURJVgkgaWQ9YgorCURJVgkgaWQ9ZgorCURJ
VgkgaWQ9YworCURJVgkgaWQ9ZQorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitE
SVYJIGlkPWQKK0RJVgkgaWQ9YgorRElWCSBpZD1mCitESVYJIGlkPWMKK0RJVgkgaWQ9ZQorVHJh
dmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWUKK0RJVgkgaWQ9YworRElWCSBpZD1mCitESVYJ
IGlkPWIKK0RJVgkgaWQ9ZAorRElWCSBpZD1hCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWViZThl
OTdjZDM0ZjkxYzNlZGJiMDgzNTVhNzM4OTFlYTBlN2E2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApAQCAt
MCwwICsxLDE2OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMg
Zm9yIFNoYWRvd1Jvb3QgSlMgQVBJcy4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQiKTsKKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7CisKK2Z1bmN0aW9uIGR1
bXBOb2RlKG5vZGUpCit7CisgICAgdmFyIG91dHB1dCA9IG5vZGUubm9kZU5hbWUgKyAiXHQiOwor
ICAgIGlmIChub2RlLmlkKQorICAgICAgICBvdXRwdXQgKz0gJyBpZD0nICsgbm9kZS5pZDsKKyAg
ICBpZiAobm9kZS5jbGFzc05hbWUpCisgICAgICAgIG91dHB1dCArPSAnIGNsYXNzPScgKyBub2Rl
LmNsYXNzTmFtZTsKKyAgICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBkdW1wUmVpZmll
ZFRyZWUobm9kZSwgaW5kZW50KQoreworICAgIGluZGVudCA9IGluZGVudCB8fCAiIjsKKyAgICB2
YXIgb3V0cHV0ID0gaW5kZW50ICsgZHVtcE5vZGUobm9kZSkgKyAiXG4iOworICAgIHZhciBjaGls
ZDsKKyAgICBmb3IgKGNoaWxkID0gaW50ZXJuYWxzLmZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKG5v
ZGUpOyBjaGlsZDsgY2hpbGQgPSBpbnRlcm5hbHMubmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKGNo
aWxkKSkKKyAgICAgICAgIG91dHB1dCArPSBkdW1wUmVpZmllZFRyZWUoY2hpbGQsIGluZGVudCAr
ICJcdCIpOworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGxhc3ROb2RlSW5SZWlm
aWVkVHJlZShyb290KQoreworICAgIHZhciBsYXN0Tm9kZSA9IHJvb3Q7CisgICAgd2hpbGUgKGlu
dGVybmFscy5sYXN0Q2hpbGRJblJlaWZpZWRUcmVlKGxhc3ROb2RlKSkKKyAgICAgICAgbGFzdE5v
ZGUgPSBpbnRlcm5hbHMubGFzdENoaWxkSW5SZWlmaWVkVHJlZShsYXN0Tm9kZSk7CisgICAgcmV0
dXJuIGxhc3ROb2RlOworfQorCitmdW5jdGlvbiBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNpbmdJ
bkZvd2FyZChyb290KQoreworICAgIHZhciBub2RlID0gcm9vdDsKKyAgICB2YXIgbGFzdCA9IGxh
c3ROb2RlSW5SZWlmaWVkVHJlZShyb290KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBk
ZWJ1ZyhkdW1wTm9kZShub2RlKSk7CisgICAgICAgIGlmIChub2RlID09IGxhc3QpCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgbm9kZSA9IGludGVybmFscy50cmF2ZXJzZU5leHROb2RlSW5S
ZWlmaWVkVHJlZShub2RlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3dSZWlmaWVkVHJlZUJ5
VHJhdmVyc2luZ0luQmFja3dhcmQocm9vdCkKK3sKKyAgICB2YXIgbm9kZSA9IGxhc3ROb2RlSW5S
ZWlmaWVkVHJlZShyb290KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBkZWJ1ZyhkdW1w
Tm9kZShub2RlKSk7CisgICAgICAgIGlmIChub2RlID09IHJvb3QpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgbm9kZSA9IGludGVybmFscy50cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVpZmll
ZFRyZWUobm9kZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93UmVpZmllZFRyZWUobm9kZSkK
K3sKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vZGUpOworICAgIGRvY3VtZW50LmJv
ZHkub2Zmc2V0TGVmdDsKKworICAgIGRlYnVnKCdSZWlmaWVkIFRyZWU6Jyk7CisgICAgZGVidWco
ZHVtcFJlaWZpZWRUcmVlKG5vZGUpKTsKKworICAgIGRlYnVnKCdUcmF2ZXJzZSBpbiBmb3J3YXJk
LicpOworICAgIHNob3dSZWlmaWVkVHJlZUJ5VHJhdmVyc2luZ0luRm93YXJkKG5vZGUpOworCisg
ICAgZGVidWcoJ1RyYXZlcnNlIGluIGJhY2t3YXJkLicpOworICAgIHNob3dSZWlmaWVkVHJlZUJ5
VHJhdmVyc2luZ0luQmFja3dhcmQobm9kZSk7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKK2RlYnVn
KCdTaGFkb3dSb290IHNob3VsZCBiZSB1c2VkLicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSkpLAorICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYyd9KSkpOworCitkZWJ1ZygnQSBjb250ZW50IGVsZW1lbnQgc2hv
dWxkIHNlbGVjdCBsaWdodCBjaGlsZHJlbicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3Qo
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYyd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2QnfSkpKTsKKworZGVidWcoJ1Rlc3QgZm9yIGNvbnRlbnQgZWxlbWVudCBzZWxlY3Rvci4nKTsK
K3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsn
c2VsZWN0JzogJy5kJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2MnfSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZSd9KSkpOworCitkZWJ1ZygnTGln
aHQgY2hpbGRyZW4gc2hvdWxkIGJlIHNlbGVjdGVkIG9ubHkgYXQgb25jZS4nKTsKK3Nob3dSZWlm
aWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0Jzog
Jy5kJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZSd9KSkpOworCitkZWJ1ZygnQSBjb250ZW50IGVsZW1l
bnQgY2FuIGhhdmUgZmFsbGJhY2sgZWxlbWVudHMuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcueid9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnZjEnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdmMid9KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYyd9KSkpOworCitkZWJ1ZygnRmFsbGJhY2sgZWxlbWVudHMgc2hvdWxkIG5v
dCBiZSB1c2VkIGlmIDxjb250ZW50PiBlbGVtZW50IHNlbGVjdHMgYW55IGVsZW1lbnRzLicpOwor
c2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywgeydz
ZWxlY3QnOiAnLmMnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YxJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZjInfSkpKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKTsKKworZGVidWcoJ1Rlc3Qg
Zm9yIE5lc3RlZCBTaGFkb3dSb290cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2Mn
fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2Qn
fSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnZSd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2cnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnaCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2knfSkpKTsKKworZGVidWcoJ1Rlc3QgZm9yIE11bHRpcGxlIFNoYWRvd1Jvb3RzLicpOwor
c2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2Mn
fSkpLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdkJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hh
ZG93JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2UnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZid9
KSkpOworCisvLyBGSVhNRTogTmVlZHMgYSByb2J1c3Qgd2F5IHRvIHJlc2V0IHRoaXMgZmxhZy4K
K2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0TXVsdGlwbGVT
aGFkb3dTdWJ0cmVlc0VuYWJsZWQoZmFsc2UpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkZDBiZmI3YTA4
MjM2NTkwMDMzZDY2OWY5MzEzYWE0NzZkZGQxNTFiLi5iMTRmM2M3MmI5MjdhYTg0ZjM1OTRmNDQ2
ZDA0YTIyNmQ4OTY4ZTg2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMDMtMTUgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBBZGQgUmVpZmllZCBET00gVHJlZSB0cmF2ZXJz
YWwgaW50ZXJuYWwgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc5MTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGludGVybmFsIEFQSXMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdHJhdmVyc2Ug
UmVpZmllZCBET00gdHJlZSwgd2hpY2ggaXMKKyAgICAgICAgYSByZXN1bHQgb2Ygbm9kZSBkaXN0
cmlidXRpb24gYWxnb3JpdGhtIGV4cGxhaW5lZCBpbiBTaGFkb3cgRE9NIHNwZWMuCisgICAgICAg
IGh0dHBzOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAvc3BlYy9z
aGFkb3cvaW5kZXguaHRtbAorCisgICAgICAgIEV2ZXJ5IHB1YmxpYyBmdW5jdGlvbnMgZGVmaW5l
ZCBpbiBSZWlmaWVkVHJlZVRyYXZlcnNhbCBhcmUgc3RhdGljCisgICAgICAgIGZ1bmN0aW9ucyBh
bmQgYXJlIG5hbWVkIGluIGEgc2ltaWxhciB3YXkgdG8gb25lcyBkZWZpbmVkIGluIFdlYkNvcmU6
Ok5vZGUgY2xhc3MuCisgICAgICAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBSZWlmaWVk
VHJlZVRyYXZlcnNhbCBBUElzIGNvbnNpZGVyIHNoYWRvdworICAgICAgICBob3N0cyBhbmQgYWxz
byB0cmF2ZXJzZSBub2RlcyBpcyBTaGFkb3cgRE9NIHN1YnRyZWVzLCBjcm9zc2luZyBzaGFkb3cn
cyB1cHBlciBhbmQgbG93ZXIgYm91bmRhcnkKKyAgICAgICAgdHJhbnNwYXJlbnRseS4KKworICAg
ICAgICBUaGVyZSBpcyBubyBhY3R1YWwgY2xpZW50IHdoaWNoIHVzZXMgdGhlc2UgQVBJcy4gRm9s
bG93LXVwIHBhdGNoZXMgZm9yIEZvY3VzTmF2aWdhdGlvbgorICAgICAgICBhbmQgRXZlbnREaXNw
YXRjaGVyIHdpbGwgdXNlIHRoZSBBUElzIHNvIHRoYXQgdGhleSBjYW4gdHJhdmVyc2Ugbm9kZSBp
biByZWlmaWVkIHRyZWUgb3JkZXIuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyOgorCiAyMDEyLTAzLTE0ICBNYXR0IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBbGxvdyBwZXItc2NyaXB0IGZvbnQgc2V0dGluZ3MgdG8gYmUg
c3BlY2lmaWVkIGluIGxheW91dCB0ZXN0cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132975</attachid>
            <date>2012-03-20 22:51:22 -0700</date>
            <delta_ts>2012-03-21 01:44:19 -0700</delta_ts>
            <desc>retry to get required symbols.</desc>
            <filename>bug-79197-20120321145121.patch</filename>
            <type>text/plain</type>
            <size>53142</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFiNWFlZjdjOGY0MGFm
MGQ0MGVmMzI2MDdiMzRkZjE5ZmExZmRiNi4uZmJjOWY5Y2ZhZWZjM2Y3MTVjNmYyMmU2Zjc3ODE0
Y2YxYzljNGY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTAzLTE1ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisgICAg
ICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQgaW4g
U2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBv
bmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBFdmVy
eSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJlIHN0
YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRv
IG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBk
aWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBzaGFk
b3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERPTSBz
dWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5CisgICAg
ICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVudCB3
aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmlnYXRp
b24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0aGF0
IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NoYWRvd0hvc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6c2hhZG93VHJlZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dUcmVl
T2ZQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZpcnN0
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkV2l0
aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VMaWdodENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxp
bmdJbkN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
Ojp0cmF2ZXJzZUJhY2tpbmdUb1lvdW5nZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjplc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1lRXNjYXBpbmdG
YWxsYmFja0NvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
OjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
YXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVJ
bkN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
YXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmFkanVzdGVkUGFyZW50Tm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRD
cm9zc2luZ1VwcGVyQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2
ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRU
cmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91
bmRhcnkpOgorICAgICAgICAqIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVpZmllZFRyZWVUcmF2ZXJzYWwpOgorICAgICAg
ICAqIGRvbS9TaGFkb3dUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omlu
c2VydGlvblBvaW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnNlbGVjdGlv
bkZvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dUcmVlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b250ZW50U2VsZWN0b3I6OmZpbmRGb3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWN0aW9uU2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKToKKyAgICAgICAgKEhU
TUxDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2li
bGluZ0luUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6bGFzdENoaWxkSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6dHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDMtMjAgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY2FsbCAubGVu
Z3RoIGFzIHRoZSBsYXN0IGNoZWNrIHdoZW4gZGV0ZWN0aW5nIGFycmF5cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNDdkYzEzN2NhOTExNzU0MmNmN2MwZjVlN2Y4ZTU2ZjZkMDFmZTY1Ni4uNGU3
M2UxYWFmMTMyYTNmOThlN2RlYzc0YjQxYjE2NGYzOWMzYmY2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTYxMiw2ICs2MTIsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1Jhbmdl
LmNwcAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuY3BwCisgICAgZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcAogICAgIGRvbS9T
Y29wZWRFdmVudFF1ZXVlLmNwcAogICAgIGRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3Bw
CiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCAxM2M5ZGRjMDA5YzA4NDE3NzA1YmFmOWU1N2ViMDljMGM2ODc5ZTNhLi5kMjgyMDRkMmY3
NzIzNmNhYTBlYTMzOTc2YjQzMTc0OTFjNWFiZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTE5MDksNiArMTkwOSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVl
VHJhdmVyc2FsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2Fs
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmggXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1Njb3BlZEV2ZW50UXVldWUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBmNGY0OWMyMmE3MzkyNjNj
ZjdjODVlY2Q0ZGQ3ODMxMzc5N2ExZjJmLi5jMzExMDcwYzhiZWU3NjUxOGVkNzczZGUwZjI1ZmZk
Y2M1ZDAyN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTU5MSw2ICs1OTEsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBkb20vUmFuZ2VFeGNlcHRpb24uY3BwIFwKICAgICBkb20vUmF3RGF0YURvY3VtZW50UGFy
c2VyLmggXAogICAgIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAorICAgIGRvbS9S
ZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCBc
CiAgICAgZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXAogICAgIGRvbS9TY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwIFwKQEAgLTE3MTgsNiArMTcxOSw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIGRvbS9RdWFsaWZpZWROYW1lLmggXAogICAgIGRvbS9SYW5nZS5oIFwKICAgICBk
b20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisgICAgZG9tL1JlaWZpZWRUcmVlVHJhdmVy
c2FsLmggXAogICAgIGRvbS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmggXAogICAgIGRvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBcCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGM2YzdhMDgzOGUyZmRkODY0NWJiZDMzYjk0M2QyZTNmZDRh
M2Q3NDcuLmYwYWU1ZmQ3MjM5MDk0ZmYwZDZiZmNmOWM2NGI0MjI3MjkzMTJmNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC02MDcsNiArNjA3LDExIEBAIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRl
cmluZ0NvbnRleHRDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250
ZXh0RDFFdgogX19aTjdXZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFjdG9yeTI0Y3JlYXRlUGxhdGZv
cm1Nb3VzZUV2ZW50RVA3TlNFdmVudFA2TlNWaWV3CiBfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZl
bnRGYWN0b3J5MjdjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRFUDdOU0V2ZW50CitfX1pON1dl
YkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTFuZXh0U2libGluZ0VQS05TXzROb2RlRQorX19a
TjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtO
U180Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWw5bGFzdENoaWxkRVBL
TlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTZ0cmF2ZXJzZU5l
eHROb2RlRVBLTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTBm
aXJzdENoaWxkRVBLTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0
MzBzZXRTaG93c0NyYXNoZWRQbHVnaW5JbmRpY2F0b3JFdgogX19aTjdXZWJDb3JlMjBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTExc2V0TWltZVR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUy
MFJlc291cmNlUmVzcG9uc2VCYXNlMTdzZXRIVFRQU3RhdHVzQ29kZUVpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMzg2ZWZiMjhkOWIyOTBmMmI1OWMxODg5NzJlM2VkY2QyMzBkNmU5Yi4uYmY2MzBjZTk5
MWZjZDY2OGFmMjdlNWJiODk4YjRjODZmYWE5ZDViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjI1
LDYgKzYyNSw3IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlLmgnLAogICAgICAgICAgICAgJ2Rv
bS9SYW5nZUJvdW5kYXJ5UG9pbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1JlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oJywK
ICAgICAgICAgICAgICdkb20vUmVuZGVyZWREb2N1bWVudE1hcmtlci5oJywKICAgICAgICAgICAg
ICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oJywKICAgICAgICAgICAgICdkb20vU2NyaXB0
UnVubmVyLmgnLApAQCAtNTIwNiw2ICs1MjA3LDggQEAKICAgICAgICAgICAgICdkb20vUmFuZ2VF
eGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oJywK
ICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwJywKKyAgICAgICAg
ICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVp
ZmllZFRyZWVUcmF2ZXJzYWwuaCcsCiAgICAgICAgICAgICAnZG9tL1JlcXVlc3RBbmltYXRpb25G
cmFtZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuaCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjhmMWEzMjgxOGE0
OGExZGRiZDgxMGQxMGZiNWFiMWVjYThkMzA1Yi4uYWJkOGMxZjY3MmVlNzI2NjQ3MWE4ZDQ4ZmM3
OTNkMTRlOTEwNTlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTM1NSw2ICsxMzU1LDggQEAKIAkJNDlGRkJGMUQxMUM4NTUw
RTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdy
YXBoaWNzQ29udGV4dDNETWFjLm1tICovOyB9OwogCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLzsgfTsKIAkJ
NDlGRkJGNDAxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTgg
LyogV2ViR0xMYXllci5tbSAqLzsgfTsKKwkJNEEwMTNEMjkxNTEyRkQ3NzAwRTFFNjEzIC8qIFJl
aWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRBMDEzRDI3MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZl
cnNhbC5jcHAgKi87IH07CisJCTRBMDEzRDJBMTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJl
ZVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEEwMTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggKi87
IH07CiAJCTRBMERBMkZFMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwREEy
RkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi87IH07CiAJ
CTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMERBMkZEMTI5QjI0
MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTFFNzE5MDE0RTEwMUU0MDA2MjZGOUQg
LyogSlNIVE1MQ29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEExRTcxOEUxNEUxMDFFNDAwNjI2RjlEIC8qIEpTSFRNTENvbnRl
bnRFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTgyODYsNiArODI4OCw4IEBACiAJCTQ5RkZCRjFDMTFD
ODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNETWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xM
YXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTExheWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBX
ZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
R0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEEwMTNEMjcxNTEyRkQ3
NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNEEwMTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVl
VHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlaWZpZWRUcmVl
VHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZDMTI5QjI0
MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEExRTcxOEUx
NEUxMDFFNDAwNjI2RjlEIC8qIEpTSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENvbnRlbnRFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDQ2LDYgKzIxMDUwLDggQEAKIAkJCQlBODREODI3
QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJODUw
MzFCMzUwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCAqLywK
IAkJCQk4NTAzMUIzNjBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
aCAqLywKKwkJCQk0QTAxM0QyNzE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJz
YWwuY3BwICovLAorCQkJCTRBMDEzRDI4MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbC5oICovLAogCQkJCUE3NkU1RjdFMTM1RTBEQ0YwMEE2OTgzNyAvKiBSZW5kZXJlZERv
Y3VtZW50TWFya2VyLmggKi8sCiAJCQkJNDk5OEFFQzQxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggKi8sCiAJCQkJNDk5OEFFQzUxM0Y5RDBFQTAwOTBC
MUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbCAqLywKQEAgLTIzNzQ2LDYg
KzIzNzUyLDcgQEAKIAkJCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTAzMUI0QzBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTJEMEQwMDZDMUQwMEVGNkYy
NiAvKiBSZWd1bGFyRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEEwMTNEMkExNTEy
RkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzMwOUUwMTA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9y
bWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgx
IC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTI2ODkxLDYgKzI2ODk4
LDcgQEAKIAkJCQlCQ0FCNDE4MTEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg1MDMxQjRCMEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEyQzBEMDA2QzFEMDBFRjZGMjYg
LyogUmVndWxhckV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEEwMTNEMjkxNTEy
RkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzMzA5RTAwMDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDA2QzBEOTAwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92
ZUZvcm1hdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMDQwOTlFNjQ5MjAw
NTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNjYjUwMTVm
NjM0ZWVkOTI1ODQ1MTgxZWNmYWQyYTAwOWRhNTI1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAKQEAgLTAsMCArMSwzMjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIK
KworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgi
CisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBib29sIGlzU2hhZG93SG9zdChj
b25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlICYmIG5vZGUtPmlzRWxlbWVudE5v
ZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRvd1Jvb3QoKTsKK30KKworc3RhdGljIGlu
bGluZSBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlRm9yKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
aWYgKG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gdG9FbGVt
ZW50KG5vZGUpLT5zaGFkb3dUcmVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxp
bmUgU2hhZG93VHJlZSogc2hhZG93VHJlZU9mUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgaWYgKG5vZGUgJiYgbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gc2hhZG93
VHJlZUZvcihub2RlLT5wYXJlbnROb2RlKCkpOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBS
ZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAg
IEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVp
ZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBBU1NFUlQoIWNoaWxkIHx8
ICFjaGlsZC0+aXNTaGFkb3dSb290KCkpOworICAgIHJldHVybiBjaGlsZDsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAg
IEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVp
ZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8
fCAhY2hpbGQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUq
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5k
YXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGNo
aWxkID0gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uQmFja3dhcmQpOworICAgIEFTU0VSVCghY2hpbGQgfHwgIWNoaWxkLT5pc1NoYWRvd1Jv
b3QoKSk7CisgICAgcmV0dXJuIGNoaWxkOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6dHJhdmVyc2VDaGlsZChjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERp
cmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIC8vIEZJWE1FOiBB
ZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0
aW9uLgorICAgIC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRp
b25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jv
b3QoKSk7CisgICAgU2hhZG93VHJlZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVGb3Iobm9kZSk7
CisgICAgaWYgKHNoYWRvd1RyZWUgJiYgc2hhZG93VHJlZS0+aGFzU2hhZG93Um9vdCgpKQorICAg
ICAgICByZXR1cm4gdHJhdmVyc2VMaWdodENoaWxkcmVuKHNoYWRvd1RyZWUtPnlvdW5nZXN0U2hh
ZG93Um9vdCgpLCBkaXJlY3Rpb24pOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VMaWdodENo
aWxkcmVuKG5vZGUsIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIGNoaWxkOworfQorCitOb2RlKiBS
ZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VMaWdodENoaWxkcmVuKGNvbnN0IE5vZGUqIG5v
ZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NF
UlQobm9kZSk7CisgICAgaWYgKE5vZGUqIGNoaWxkID0gKGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJl
ZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5maXJzdENoaWxkKCkgOiBub2RlLT5s
YXN0Q2hpbGQoKSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZU1lKGNoaWxkLCBkaXJlY3Rpb24p
OworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVy
c2VNZShjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChpc0luc2VydGlvblBvaW50KG5v
ZGUpKSB7CisgICAgICAgIGNvbnN0IEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogc2VsZWN0aW9u
TGlzdCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPnNlbGVjdGlvbnMoKTsKKyAgICAgICAgaWYg
KEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSAoZGlyZWN0aW9uID09IFJlaWZpZWRU
cmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IHNlbGVjdGlvbkxpc3QtPmZpcnN0KCkgOiBz
ZWxlY3Rpb25MaXN0LT5sYXN0KCkpKQorICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlTWUoc2Vs
ZWN0aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAgICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0
Q2hpbGRyZW4obm9kZSwgZGlyZWN0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
Tm9kZSo+KG5vZGUpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxp
bmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKCFu
b2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgTm9kZSogbmV4dCA9IHRyYXZlcnNlU2libGluZ01h
eWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rp
b25Gb3J3YXJkKTsKKyAgICBBU1NFUlQoIW5leHQgfHwgIW5leHQtPmlzU2hhZG93Um9vdCgpKTsK
KyAgICByZXR1cm4gbmV4dDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnByZXZp
b3VzU2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBB
U1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyAgICBOb2RlKiBuZXh0ID0gdHJhdmVyc2VT
aWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNh
bERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBBU1NFUlQoIW5leHQgfHwgIW5leHQtPmlzU2hhZG93
Um9vdCgpKTsKKyAgICByZXR1cm4gbmV4dDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJz
YWw6OnRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSog
bm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIEFT
U0VSVChub2RlKTsKKyAgICBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlID0gc2hhZG93VHJlZU9mUGFy
ZW50KG5vZGUpOworICAgIGlmICghc2hhZG93VHJlZSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNl
U2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0aW9uKTsKKyAgICBIVE1MQ29udGVudFNl
bGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93VHJlZS0+c2VsZWN0aW9uRm9yKG5vZGUpOworICAg
IGlmICghc2VsZWN0aW9uKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50
VHJlZShub2RlLCBkaXJlY3Rpb24pOworICAgIGlmIChIVE1MQ29udGVudFNlbGVjdGlvbiogbmV4
dFNlbGVjdGlvbiA9IChkaXJlY3Rpb24gPT0gUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25G
b3J3YXJkID8gc2VsZWN0aW9uLT5uZXh0KCkgOiBzZWxlY3Rpb24tPnByZXZpb3VzKCkpKQorICAg
ICAgICByZXR1cm4gdHJhdmVyc2VNZShuZXh0U2VsZWN0aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7
CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoc2Vs
ZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBkaXJlY3Rpb24pOworfQorCitOb2RlKiBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShjb25zdCBOb2RlKiBu
b2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNT
RVJUKG5vZGUpOworICAgIGlmIChOb2RlKiBuZXh0ID0gKGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJl
ZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5uZXh0U2libGluZygpIDogbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VNZShuZXh0LCBkaXJl
Y3Rpb24pOworICAgIGlmIChOb2RlKiBuZXh0ID0gdHJhdmVyc2VCYWNraW5nVG9Zb3VuZ2VyU2hh
ZG93Um9vdChub2RlLCBkaXJlY3Rpb24pKQorICAgICAgICByZXR1cm4gbmV4dDsKKyAgICByZXR1
cm4gZXNjYXBlRmFsbGJhY2tDb250ZW50RWxlbWVudChub2RlLCBkaXJlY3Rpb24pOworfQorCitO
b2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VCYWNraW5nVG9Zb3VuZ2VyU2hhZG93
Um9vdChjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkg
JiYgbm9kZS0+cGFyZW50Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBTaGFkb3dS
b290KiBwYXJlbnRTaGFkb3dSb290ID0gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSk7
CisgICAgICAgIGlmICghcGFyZW50U2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAg
ICAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IHBhcmVudFNoYWRv
d1Jvb3QtPmFzc2lnbmVkVG8oKTsKKyAgICAgICAgICAgIEFTU0VSVChhc3NpZ25lZEluc2VydGlv
blBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVl
KGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGRpcmVjdGlvbik7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjplc2NhcGVGYWxs
YmFja0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2Fs
RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKG5vZGUt
PnBhcmVudE5vZGUoKSAmJiBpc0luc2VydGlvblBvaW50KG5vZGUtPnBhcmVudE5vZGUoKSkpCisg
ICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50KG5v
ZGUtPnBhcmVudE5vZGUoKSwgZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTWVFc2NhcGluZ0ZhbGxiYWNrQ29udGVudHMo
Y29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAg
QVNTRVJUKG5vZGUpOworICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKQorICAgICAgICBy
ZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgY3Jvc3NlZCk7
CisgICAgY3Jvc3NlZCA9IE5vdENyb3NzZWQ7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+
KG5vZGUpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZShjb25z
dCBOb2RlKiBub2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBBU1NF
UlQobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgLy8gRklY
TUU6IEFkZCBhbiBhc3NlcnRpb24gb25jZSBJbnNlcnRpb25Qb2ludCBoYXZlIGlzQWN0aXZlKCkg
ZnVuY3Rpb24uCisgICAgLy8gQVNTRVJUKCFpc0luc2VydGlvblBvaW50KG5vZGUpIHx8ICF0b0lu
c2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKTsKKyAgICByZXR1cm4gcGFyZW50Tm9kZU1h
eWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgY3Jvc3NlZCk7Cit9CisKK05vZGUqIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgLy8g
RklYTUU6IERvIG5vdCB1c2UgJ3Vuc2VkJyBwYXJhbWV0ZXIuCisgICAgQ3Jvc3NlZFVwcGVyQm91
bmRhcnkgdW51c2VkOworICAgIHJldHVybiBwYXJlbnROb2RlKG5vZGUsIHVudXNlZCk7Cit9CisK
KworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdV
cHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAg
IEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIC8vIEZJWE1FOiBBZGQgYW4gYXNz
ZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgorICAg
IC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChu
b2RlKS0+aXNBY3RpdmUoKSk7CisgICAgQ3Jvc3NlZFVwcGVyQm91bmRhcnkgY3Jvc3NlZDsKKyAg
ICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2Rl
LCBjcm9zc2VkKTsKKyAgICBpZiAoY3Jvc3NlZCA9PSBDcm9zc2VkKQorICAgICAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gcGFyZW50OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6
cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgQ3Jv
c3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRv
d1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQobm9kZSkpIHsKKyAgICAgICAgaWYgKEhUTUxDb250
ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkp
CisgICAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQo
c2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBjcm9zc2VkKTsKKyAgICB9CisgICAgcmV0dXJu
IHBhcmVudE5vZGVJbkN1cnJlbnRUcmVlKG5vZGUsIGNyb3NzZWQpOworfQorCitOb2RlKiBSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUluQ3VycmVudFRyZWUoY29uc3QgTm9kZSogbm9k
ZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgaWYgKE5vZGUqIHBhcmVu
dCA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jv
b3QoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jv
b3RPckhvc3QodG9TaGFkb3dSb290KHBhcmVudCksIGNyb3NzZWQpOworICAgICAgICByZXR1cm4g
dHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyhwYXJlbnQsIGNyb3NzZWQpOworICAg
IH0KKyAgICBjcm9zc2VkID0gTm90Q3Jvc3NlZDsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9y
SG9zdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290LCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYg
Y3Jvc3NlZCkKK3sKKyAgICBBU1NFUlQoc2hhZG93Um9vdCk7CisgICAgaWYgKHNoYWRvd1Jvb3Qt
PmlzWW91bmdlc3QoKSkgeworICAgICAgICBjcm9zc2VkID0gQ3Jvc3NlZDsKKyAgICAgICAgcmV0
dXJuIHNoYWRvd1Jvb3QtPmhvc3QoKTsKKyAgICB9CisgICAgSW5zZXJ0aW9uUG9pbnQqIGFzc2ln
bmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25lZFRvKCk7CisgICAgQVNTRVJU
KGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQpOworICAgIHJldHVybiBwYXJlbnROb2RlTWF5YmVCYWNr
VG9JbnNlcnRpb25Qb2ludChhc3NpZ25lZEluc2VydGlvblBvaW50LCBjcm9zc2VkKTsKK30KKwor
Tm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OmFkanVzdGVkUGFyZW50Tm9kZShjb25zdCBOb2Rl
KiBub2RlKQoreworICAgIGlmIChTaGFkb3dUcmVlKiBzaGFkb3dUcmVlID0gc2hhZG93VHJlZU9m
UGFyZW50KG5vZGUpKSB7CisgICAgICAgIGlmIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0
aW9uID0gc2hhZG93VHJlZS0+c2VsZWN0aW9uRm9yKG5vZGUpKQorICAgICAgICAgICAgcmV0dXJu
IHNlbGVjdGlvbi0+aW5zZXJ0aW9uUG9pbnQoKTsKKyAgICB9CisgICAgaWYgKG5vZGUtPmlzU2hh
ZG93Um9vdCgpKSB7CisgICAgICAgIGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b1No
YWRvd1Jvb3Qobm9kZSk7CisgICAgICAgIGlmICghc2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7
CisgICAgICAgICAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IHNo
YWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsKKyAgICAgICAgICAgIEFTU0VSVChhc3NpZ25lZEluc2Vy
dGlvblBvaW50KTsKKyAgICAgICAgICAgIHJldHVybiBhc3NpZ25lZEluc2VydGlvblBvaW50Owor
ICAgICAgICB9CisgICAgICAgIHNoYWRvd1Jvb3QtPmhvc3QoKTsKKyAgICB9CisgICAgcmV0dXJu
IG5vZGUtPnBhcmVudE5vZGUoKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRy
YXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogbmV4dCA9
IGZpcnN0Q2hpbGQobm9kZSkpCisgICAgICAgIHJldHVybiBuZXh0OworICAgIGlmIChOb2RlKiBu
ZXh0ID0gbmV4dFNpYmxpbmcobm9kZSkpCisgICAgICAgIHJldHVybiBuZXh0OworICAgIGNvbnN0
IE5vZGUqIG4gPSBub2RlOworICAgIHdoaWxlIChuICYmICFuZXh0U2libGluZyhuKSkKKyAgICAg
ICAgbiA9IHBhcmVudE5vZGUobik7CisgICAgaWYgKG4pCisgICAgICAgIHJldHVybiBuZXh0U2li
bGluZyhuKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6
OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUq
IG5vZGUpCit7CisgICAgaWYgKCFpc1NoYWRvd0hvc3Qobm9kZSkpIHsKKyAgICAgICAgaWYgKE5v
ZGUqIG5leHQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJz
YWxEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICAgICAgICAgIHJldHVybiBuZXh0OworICAgIH0KKyAg
ICBpZiAoTm9kZSogbmV4dCA9IG5leHRTaWJsaW5nKG5vZGUpKQorICAgICAgICByZXR1cm4gbmV4
dDsKKyAgICBjb25zdCBOb2RlKiBuID0gbm9kZTsKKyAgICB3aGlsZSAobiAmJiAhbmV4dFNpYmxp
bmcobikpCisgICAgICAgIG4gPSBwYXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFy
eShuKTsKKyAgICBpZiAobikKKyAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKG4pOworICAgIHJl
dHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91
c05vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogbiA9IHByZXZpb3VzU2li
bGluZyhub2RlKSkgeworICAgICAgICB3aGlsZSAoTm9kZSogY2hpbGQgPSBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6bGFzdENoaWxkKG4pKQorICAgICAgICAgICAgbiA9IGNoaWxkOworICAgICAgICBy
ZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGUobm9kZSk7Cit9CisKK05vZGUq
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2lu
Z1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogbiA9IHBy
ZXZpb3VzU2libGluZyhub2RlKSkgeworICAgICAgICB3aGlsZSAoIWlzU2hhZG93SG9zdChuKSkg
eworICAgICAgICAgICAgaWYgKE5vZGUqIGNoaWxkID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRy
YXZlcnNlTGlnaHRDaGlsZHJlbihuLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3
YXJkKSkKKyAgICAgICAgICAgICAgICBuID0gY2hpbGQ7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG47CisgICAgfQor
ICAgIHJldHVybiBwYXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShub2RlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlm
aWVkVHJlZVRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVy
c2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2UyNDNkNGM4ZjBjYzk2Yzc0ODg4MjE4YWNmNWZiMDdiMWJiZjFj
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZl
cnNhbC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlaWZpZWRUcmVlVHJhdmVyc2FsX2gK
KyNkZWZpbmUgUmVpZmllZFRyZWVUcmF2ZXJzYWxfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dSb290OworCitlbnVtIFJlaWZpZWRUcmVlVHJhdmVy
c2FsRGlyZWN0aW9uIHsKKyAgICBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQs
CisgICAgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZAorfTsKKworLy8gRklY
TUU6IE1ha2Ugc29tZSBmdW5jdGlvbnMgaW5saW5lIHRvIG9wdGltaXNlIHRoZSBwZXJmb3JtYW5j
ZS4KK2NsYXNzIFJlaWZpZWRUcmVlVHJhdmVyc2FsIHsKK3B1YmxpYzoKKyAgICBlbnVtIENyb3Nz
ZWRVcHBlckJvdW5kYXJ5IHsKKyAgICAgICAgTm90Q3Jvc3NlZCwKKyAgICAgICAgQ3Jvc3NlZCwK
KyAgICB9OworCisgICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoY29uc3QgTm9kZSopOworICAg
IHN0YXRpYyBOb2RlKiBsYXN0Q2hpbGQoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBs
YXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqKTsKKworICAg
IHN0YXRpYyBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUq
IHByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7CisKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50
Tm9kZShjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9k
ZSogcGFyZW50Tm9kZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHBhcmVudE5vZGVX
aXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBO
b2RlKiB0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJh
dmVyc2VQcmV2aW91c05vZGUoY29uc3QgTm9kZSopOworCisgICAgLy8gRklYTUU6IEFuICdhZGp1
c3RlZCcgaXMgbm90IGdvb2QgbmFtZSBmb3IgZ2VuZXJhbCB1c2UgY2FzZS4gUmVuYW1lIHRoaXMu
CisgICAgLy8gRG8gbm90IHNraXAgZWl0aGVyIFNoYWRvd1Jvb3Qgb3IgSW5zZXJ0aW9uUG9pbnQu
CisgICAgc3RhdGljIE5vZGUqIGFkanVzdGVkUGFyZW50Tm9kZShjb25zdCBOb2RlKik7CisKKyAg
ICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRh
cnkoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzTm9kZVdp
dGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCitwcml2YXRlOgorICAg
IHN0YXRpYyBOb2RlKiB0cmF2ZXJzZUNoaWxkKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZl
cnNhbERpcmVjdGlvbik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTWUoY29uc3QgTm9kZSos
IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVy
c2VMaWdodENoaWxkcmVuKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlv
bik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRp
b25Qb2ludChjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAg
IHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0IE5vZGUqLCBS
ZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVy
c2VCYWNraW5nVG9Zb3VuZ2VyU2hhZG93Um9vdChjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2
ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2RlKiBlc2NhcGVGYWxsYmFja0NvbnRlbnRF
bGVtZW50KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisKKyAg
ICBzdGF0aWMgTm9kZSogdHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyhjb25zdCBO
b2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnRO
b2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91
bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZUluQ3VycmVudFRyZWUoY29uc3Qg
Tm9kZSosIENyb3NzZWRVcHBlckJvdW5kYXJ5Jik7CisgICAgc3RhdGljIE5vZGUqIHBhcmVudE5v
ZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dSb290KiwgQ3Jvc3Nl
ZFVwcGVyQm91bmRhcnkmKTsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1RyZWUuY3BwCmluZGV4IDFiYWUzYmVhN2U5ZWEwYWI5ZWI2MjQ2YWVmMmRlMDgw
YzZhY2MzZGYuLjZmYmU3Mjk1ZDYzYTM5ODFhYTVlODBkMjRjYzAwM2U3N2FjODZhNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93VHJlZS5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFNoYWRvd1Ry
ZWU6OmRldGFjaEhvc3QoRWxlbWVudCogaG9zdCkKICAgICBob3N0LT5kZXRhY2hBc05vZGUoKTsK
IH0KIAotSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKE5vZGUq
IG5vZGUpIGNvbnN0CitJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRG
b3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5w
YXJlbnROb2RlKCkpOwogCkBAIC0yMjEsNiArMjIxLDExIEBAIEluc2VydGlvblBvaW50KiBTaGFk
b3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAogICAgIHJldHVybiBm
b3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKIH0KIAorSFRNTENvbnRlbnRTZWxlY3Rpb24qIFNoYWRv
d1RyZWU6OnNlbGVjdGlvbkZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAoreworICAgIHJldHVy
biBtX3NlbGVjdG9yLmZpbmRGb3Iobm9kZSk7Cit9CisKIHZvaWQgU2hhZG93VHJlZTo6cmVhdHRh
Y2goKQogewogICAgIGRldGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKaW5kZXggNTcyMjIx
ODNhMjYzMTc0NDJmODkwN2ZlZWU5MmNjYTM2NzhkMjcyNi4uZTljMmNjYWRiMGNjZjdjZDE1NTBm
NDBkMzIwODlhZjBmNzM2MjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCkBAIC00MSw2ICs0
MSw3IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7
CiBjbGFzcyBUcmVlU2NvcGU7CitjbGFzcyBIVE1MQ29udGVudFNlbGVjdGlvbjsKIAogY2xhc3Mg
U2hhZG93VHJlZSB7CiBwdWJsaWM6CkBAIC03OSw3ICs4MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5D
aGFuZ2VkKCk7CiAKLSAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSop
IGNvbnN0OworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2Rl
KikgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbkZvcihjb25zdCBO
b2RlKikgY29uc3Q7CiAKICAgICBIVE1MQ29udGVudFNlbGVjdG9yJiBzZWxlY3RvcigpOwogICAg
IGNvbnN0IEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCmluZGV4IDhi
NjJkNTZhNzczZGIzMGRiNmQzMThhZjczYmRkMWMwZjhkYmI0NjcuLjMxZTQxOTRlYzVhMzdkZTAz
OTRjMDNmOGU4MzhlNjViYjQ1ODc0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBI
VE1MQ29udGVudFNlbGVjdG9yOjp1bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqIGxp
c3QpCiAgICAgbGlzdC0+Y2xlYXIoKTsKIH0KIAotSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxD
b250ZW50U2VsZWN0b3I6OmZpbmRGb3IoTm9kZSoga2V5KSBjb25zdAorSFRNTENvbnRlbnRTZWxl
Y3Rpb24qIEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25z
dAogewogICAgIHJldHVybiBtX3NlbGVjdGlvblNldC5maW5kKGtleSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKaW5kZXggZTAxMTgw
NTAwYmFkMTIzNDIzYTE3NTg4YTgxOTMyZjE4MGYxNGM1My4uYmNmYmRkYmJkODgyNzM4NWE3Yzlh
ZmMxMWMyNGY2ZmVjYTZlMzYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZGQoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0LmFkZCh2YWx1ZSk7IH0K
ICAgICB2b2lkIHJlbW92ZShIVE1MQ29udGVudFNlbGVjdGlvbiogdmFsdWUpIHsgbV9zZXQucmVt
b3ZlKHZhbHVlKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0Lmlz
RW1wdHkoKTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kKE5vZGUqIGtleSkgY29u
c3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoY29uc3QgTm9kZSoga2V5KSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgVHJhbnNsYXRvciB7CkBAIC0xMTgsOSArMTE4LDkg
QEAgcHJpdmF0ZToKICAgICBQb2ludGVyU2V0IG1fc2V0OwogfTsKIAotaW5saW5lIEhUTUxDb250
ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZChOb2RlKiBrZXkpIGNv
bnN0CitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0
OjpmaW5kKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKIHsKLSAgICBQb2ludGVyU2V0OjppdGVyYXRv
ciBmb3VuZCA9IG1fc2V0LmZpbmQ8Tm9kZSosIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpUcmFu
c2xhdG9yPihrZXkpOworICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmlu
ZDxjb25zdCBOb2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OlRyYW5zbGF0b3I+KGtleSk7
CiAgICAgcmV0dXJuIGZvdW5kICE9IG1fc2V0LmVuZCgpID8gKmZvdW5kIDogMDsKIH0KIApAQCAt
MTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VsZWN0KEluc2VydGlvblBvaW50
KiwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7CiAgICAgdm9pZCB1bnNlbGVjdChIVE1MQ29u
dGVudFNlbGVjdGlvbkxpc3QqKTsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZEZvcihO
b2RlKiBrZXkpIGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kRm9yKGNvbnN0
IE5vZGUqIGtleSkgY29uc3Q7CiAKICAgICB2b2lkIHdpbGxTZWxlY3QoKTsKICAgICBib29sIGlz
U2VsZWN0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaAppbmRleCBiNTI4MmNkZGMyNzQ4MmNlYzMzNTM1ZGRiZWI2OGM3MGY1NTg4NGJjLi43
NGIxYTIwMGM0ZDllMmIxMjc4MDU0YzQ0N2FmNDAxMWQ0NmQ0OGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0
ZToKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QgbV9zZWxlY3Rpb25zOwogfTsKIAotaW5s
aW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQoraW5saW5lIGJvb2wgaXNJbnNl
cnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC04OCw2ICs4OCwxMiBAQCBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHRv
SW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zZXJ0
aW9uUG9pbnQqPihub2RlKTsKIH0KIAoraW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50KiB0b0lu
c2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKGlzSW5zZXJ0aW9u
UG9pbnQobm9kZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbnNlcnRpb25Qb2lu
dCo+KG5vZGUpOworfQorCiBpbmxpbmUgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KE5vZGUqIG5vZGUp
CiB7CiAgICAgaWYgKCFpc0luc2VydGlvblBvaW50KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDYyMDcyNjVjZWFhZjU1YzQ0Njg1NDRhMzQ5NzQzMGM4ODA5MWYy
MWYuLjczNTYzMzczYmQxZmMxMWUxMzM0MzRhOTU2NjhiOTIzNmUwZjZiZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5o
IgorI2luY2x1ZGUgIlJlaWZpZWRUcmVlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCkBAIC0xODAsNiArMTgxLDUxIEBAIGJvb2wgSW50ZXJuYWxzOjphdHRhY2hlZChOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gbm9kZS0+YXR0YWNoZWQoKTsKIH0K
IAorTm9kZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0luUmVpZmllZFRyZWUoTm9kZSogbm9kZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFJl
aWZpZWRUcmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyhub2RlKTsKK30KKworTm9kZSogSW50ZXJu
YWxzOjpmaXJzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJz
YWw6OmZpcnN0Q2hpbGQobm9kZSk7Cit9CisKK05vZGUqIEludGVybmFsczo6bGFzdENoaWxkSW5S
ZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5v
ZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZChub2Rl
KTsKK30KKworTm9kZSogSW50ZXJuYWxzOjp0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShO
b2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUobm9kZSk7Cit9
CisKK05vZGUqIEludGVybmFsczo6dHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKE5v
ZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91c05vZGUobm9kZSk7
Cit9CisKIFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQq
IGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZWxlbWVudCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYzE5YzI5OTMzMjQ3ODU4ODc2ZWNkYTdhZWY1
ZGEwMGNjMWYyNTE3NC4uNTYxMGMyMjZlZDRjMWQ2NjYwMzNhYmY5NTI4NDA5OTYyZWZkZTY1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04NCw2ICs4NCwxMiBAQCBwdWJsaWM6
CiAKICAgICBib29sIGF0dGFjaGVkKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBOb2Rl
KiBuZXh0U2libGluZ0luUmVpZmllZFRyZWUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBO
b2RlKiBmaXJzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IE5vZGUqIGxhc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBOb2RlKiB0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVkVHJlZShOb2RlKiwg
RXhjZXB0aW9uQ29kZSYpOworCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogICAgIHZvaWQgc2Vs
ZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVl
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGQyMWEyYzY3
YWQ1MmU2ZmJjZDEwNmVjM2Y5YmNmMzgyYjgyYjA5ZjIuLjQ3YzZjOTUxZTFlYjVhMjEyZTczN2Rk
YjBhMTRmNzZjY2NiMjExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTU1LDYgKzU1LDEyIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGdldEVsZW1l
bnRCeUlkSW5TaGFkb3dSb290KGluIE5vZGUgc2hhZG93Um9vdCwgaW4gRE9NU3RyaW5nIGlkKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiBpc1ZhbGlkQ29udGVudFNlbGVj
dChpbiBFbGVtZW50IGNvbnRlbnRFbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAorICAg
ICAgICBOb2RlIG5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICBOb2RlIGZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKGluIE5v
ZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgbGFzdENoaWxkSW5S
ZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBO
b2RlIHRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgdHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRU
cmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgYm9vbGVh
biBhdHRhY2hlZChpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVm
aW5lZChFTkFCTEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xPUgpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKaW5kZXggMDI5NGRhZGI4NDQ2MDZlZjQ1ZDYyMTgyMDFhNjcxMWI2M2Y2YTIz
OC4uODMyMjdiYmYwNjE1MzQwYWUxZTg4YWY2MTVjNzFhODcwMzJiZDExNyAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCkBAIC02Myw2ICs2MywxMSBAQCBfWk43V2ViQ29yZTE4SFRNTENvbnRlbnRF
bGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RTsKIF9aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250
cm9sbGVyMzlzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNFaWk7CiBfWk43
V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRDMUVQTlNfNE5vZGVFOwogX1pON1dlYkNvcmUy
ME5vZGVSZW5kZXJpbmdDb250ZXh0RDFFdjsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZl
cnNhbDExbmV4dFNpYmxpbmdFUEtOU180Tm9kZUU7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVU
cmF2ZXJzYWwyMHRyYXZlcnNlUHJldmlvdXNOb2RlRVBLTlNfNE5vZGVFOworX1pON1dlYkNvcmUy
MFJlaWZpZWRUcmVlVHJhdmVyc2FsOWxhc3RDaGlsZEVQS05TXzROb2RlRTsKK19aTjdXZWJDb3Jl
MjBSZWlmaWVkVHJlZVRyYXZlcnNhbDE2dHJhdmVyc2VOZXh0Tm9kZUVQS05TXzROb2RlRTsKK19a
TjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDEwZmlyc3RDaGlsZEVQS05TXzROb2RlRTsK
IF9aTjdXZWJDb3JlMjFnZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmpl
Y3RFUEtOM0pTQzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRp
b25FUE5TXzdFbGVtZW50RWo7CiBfWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGE2Yjg0OTA1ZjAxNTQwN2M4N2ViNTgxNDFmMzhlNGRiMGI5MDI3MDIuLjAxOGIx
MzY4MDMxZjA0ODQ5NDBlNjE2OTYyNmIzNmQ2MmUxNjM1MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAxMi0wMy0xNSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW1NoYWRvdyBET01dIEFkZCBSZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBpbnRlcm5hbCBB
UElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzkx
OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
aW50ZXJuYWwgQVBJcyB3aGljaCBjYW4gYmUgdXNlZCB0byB0cmF2ZXJzZSBSZWlmaWVkIERPTSB0
cmVlLCB3aGljaCBpcworICAgICAgICBhIHJlc3VsdCBvZiBub2RlIGRpc3RyaWJ1dGlvbiBhbGdv
cml0aG0gZXhwbGFpbmVkIGluIFNoYWRvdyBET00gc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9kdmNz
LnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5o
dG1sCisKKyAgICAgICAgRXZlcnkgcHVibGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIFJlaWZpZWRU
cmVlVHJhdmVyc2FsIGFyZSBzdGF0aWMKKyAgICAgICAgZnVuY3Rpb25zIGFuZCBhcmUgbmFtZWQg
aW4gYSBzaW1pbGFyIHdheSB0byBvbmVzIGRlZmluZWQgaW4gV2ViQ29yZTo6Tm9kZSBjbGFzcy4K
KyAgICAgICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IFJlaWZpZWRUcmVlVHJhdmVyc2Fs
IEFQSXMgY29uc2lkZXIgc2hhZG93CisgICAgICAgIGhvc3RzIGFuZCBhbHNvIHRyYXZlcnNlIG5v
ZGVzIGlzIFNoYWRvdyBET00gc3VidHJlZXMsIGNyb3NzaW5nIHNoYWRvdydzIHVwcGVyIGFuZCBs
b3dlciBib3VuZGFyeQorICAgICAgICB0cmFuc3BhcmVudGx5LgorCisgICAgICAgIFRoZXJlIGlz
IG5vIGFjdHVhbCBjbGllbnQgd2hpY2ggdXNlcyB0aGVzZSBBUElzLiBGb2xsb3ctdXAgcGF0Y2hl
cyBmb3IgRm9jdXNOYXZpZ2F0aW9uCisgICAgICAgIGFuZCBFdmVudERpc3BhdGNoZXIgd2lsbCB1
c2UgdGhlIEFQSXMgc28gdGhhdCB0aGV5IGNhbiB0cmF2ZXJzZSBub2RlIGluIHJlaWZpZWQgdHJl
ZSBvcmRlci4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVy
c2FsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JlaWZp
ZWQtdHJlZS10cmF2ZXJzYWwuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMjAgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY2Fs
bCAubGVuZ3RoIGFzIHRoZSBsYXN0IGNoZWNrIHdoZW4gZGV0ZWN0aW5nIGFycmF5cy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2Fs
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUt
dHJhdmVyc2FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDQyNGU3NDE4N2EyZTU3Yzg1ZWRm
MzY2YWRkNjMzZWM3YmE2YzM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTU2IEBACitUZXN0cyBmb3IgUmVpZmllZCBET00gVHJlZSBUcmF2ZXJzYWwgQVBJcy4gQ2FuIG9u
bHkgcnVuIHdpdGhpbiBEUlQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NoYWRv
d1Jvb3Qgc2hvdWxkIGJlIHVzZWQuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlk
PWIKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitUcmF2ZXJz
ZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9YgorRElWCSBpZD1hCisKK0EgY29udGVudCBlbGVtZW50
IHNob3VsZCBzZWxlY3QgbGlnaHQgY2hpbGRyZW4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQor
CURJVgkgaWQ9YgorCURJVgkgaWQ9YworCURJVgkgaWQ9ZAorCitUcmF2ZXJzZSBpbiBmb3J3YXJk
LgorRElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9YworRElWCSBpZD1kCitUcmF2ZXJzZSBp
biBiYWNrd2FyZC4KK0RJVgkgaWQ9ZAorRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9YQor
CitUZXN0IGZvciBjb250ZW50IGVsZW1lbnQgc2VsZWN0b3IuCitSZWlmaWVkIFRyZWU6CitESVYJ
IGlkPWEKKwlESVYJIGlkPWIKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorVHJh
dmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWEKKworTGlnaHQgY2hpbGRyZW4gc2hvdWxkIGJl
IHNlbGVjdGVkIG9ubHkgYXQgb25jZS4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkg
aWQ9YgorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK1RyYXZl
cnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1lCitESVYJIGlkPWQKK0RJVgkgaWQ9YworRElWCSBp
ZD1hCisKK0EgY29udGVudCBlbGVtZW50IGNhbiBoYXZlIGZhbGxiYWNrIGVsZW1lbnRzLgorUmVp
ZmllZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1iCisJRElWCSBpZD1mMQorCURJVgkgaWQ9
ZjIKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlk
PWYxCitESVYJIGlkPWYyCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZjIKK0RJVgkg
aWQ9ZjEKK0RJVgkgaWQ9YgorRElWCSBpZD1hCisKK0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBu
b3QgYmUgdXNlZCBpZiAgZWxlbWVudCBzZWxlY3RzIGFueSBlbGVtZW50cy4KK1JlaWZpZWQgVHJl
ZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCURJVgkgaWQ9ZjEKKwlESVYJIGlkPWYyCisKK1Ry
YXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1mMQorRElW
CSBpZD1mMgorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWYyCitESVYJIGlkPWYxCitE
SVYJIGlkPWIKK0RJVgkgaWQ9YQorCitUZXN0IGZvciBOZXN0ZWQgU2hhZG93Um9vdHMuCitSZWlm
aWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwkJRElWCSBpZD1jCisJCURJVgkgaWQ9
ZQorCQlESVYJIGlkPWQKKwlESVYJIGlkPWYKKwlESVYJIGlkPWgKKwlESVYJIGlkPWkKKwlESVYJ
IGlkPWcKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJ
IGlkPWMKK0RJVgkgaWQ9ZQorRElWCSBpZD1kCitESVYJIGlkPWYKK0RJVgkgaWQ9aAorRElWCSBp
ZD1pCitESVYJIGlkPWcKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1nCitESVYJIGlk
PWkKK0RJVgkgaWQ9aAorRElWCSBpZD1mCitESVYJIGlkPWQKK0RJVgkgaWQ9ZQorRElWCSBpZD1j
CitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitUZXN0IGZvciBNdWx0aXBsZSBTaGFkb3dSb290cy4K
K1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9ZAorCURJVgkgaWQ9YgorCURJVgkg
aWQ9ZgorCURJVgkgaWQ9YworCURJVgkgaWQ9ZQorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElW
CSBpZD1hCitESVYJIGlkPWQKK0RJVgkgaWQ9YgorRElWCSBpZD1mCitESVYJIGlkPWMKK0RJVgkg
aWQ9ZQorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWUKK0RJVgkgaWQ9YworRElWCSBp
ZD1mCitESVYJIGlkPWIKK0RJVgkgaWQ9ZAorRElWCSBpZD1hCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NzhhZWVjNzUyZjE2Y2ZiZmVjZWViNzc2YTBmMDI3MTE2MjVlNTVmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwu
aHRtbApAQCAtMCwwICsxLDE2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGVzdHMgZm9yIFJlaWZpZWQgRE9NIFRyZWUgVHJhdmVyc2FsIEFQSXMuIENhbiBvbmx5IHJ1
biB3aXRoaW4gRFJUIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBkdW1wTm9kZShu
b2RlKQoreworICAgIHZhciBvdXRwdXQgPSBub2RlLm5vZGVOYW1lICsgIlx0IjsKKyAgICBpZiAo
bm9kZS5pZCkKKyAgICAgICAgb3V0cHV0ICs9ICcgaWQ9JyArIG5vZGUuaWQ7CisgICAgaWYgKG5v
ZGUuY2xhc3NOYW1lKQorICAgICAgICBvdXRwdXQgKz0gJyBjbGFzcz0nICsgbm9kZS5jbGFzc05h
bWU7CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworZnVuY3Rpb24gZHVtcFJlaWZpZWRUcmVlKG5v
ZGUsIGluZGVudCkKK3sKKyAgICBpbmRlbnQgPSBpbmRlbnQgfHwgIiI7CisgICAgdmFyIG91dHB1
dCA9IGluZGVudCArIGR1bXBOb2RlKG5vZGUpICsgIlxuIjsKKyAgICB2YXIgY2hpbGQ7CisgICAg
Zm9yIChjaGlsZCA9IGludGVybmFscy5maXJzdENoaWxkSW5SZWlmaWVkVHJlZShub2RlKTsgY2hp
bGQ7IGNoaWxkID0gaW50ZXJuYWxzLm5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShjaGlsZCkpCisg
ICAgICAgICBvdXRwdXQgKz0gZHVtcFJlaWZpZWRUcmVlKGNoaWxkLCBpbmRlbnQgKyAiXHQiKTsK
KyAgICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBsYXN0Tm9kZUluUmVpZmllZFRyZWUo
cm9vdCkKK3sKKyAgICB2YXIgbGFzdE5vZGUgPSByb290OworICAgIHdoaWxlIChpbnRlcm5hbHMu
bGFzdENoaWxkSW5SZWlmaWVkVHJlZShsYXN0Tm9kZSkpCisgICAgICAgIGxhc3ROb2RlID0gaW50
ZXJuYWxzLmxhc3RDaGlsZEluUmVpZmllZFRyZWUobGFzdE5vZGUpOworICAgIHJldHVybiBsYXN0
Tm9kZTsKK30KKworZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5nSW5Gb3dhcmQo
cm9vdCkKK3sKKyAgICB2YXIgbm9kZSA9IHJvb3Q7CisgICAgdmFyIGxhc3QgPSBsYXN0Tm9kZUlu
UmVpZmllZFRyZWUocm9vdCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgZGVidWcoZHVt
cE5vZGUobm9kZSkpOworICAgICAgICBpZiAobm9kZSA9PSBsYXN0KQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIG5vZGUgPSBpbnRlcm5hbHMudHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRy
ZWUobm9kZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNp
bmdJbkJhY2t3YXJkKHJvb3QpCit7CisgICAgdmFyIG5vZGUgPSBsYXN0Tm9kZUluUmVpZmllZFRy
ZWUocm9vdCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgZGVidWcoZHVtcE5vZGUobm9k
ZSkpOworICAgICAgICBpZiAobm9kZSA9PSByb290KQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIG5vZGUgPSBpbnRlcm5hbHMudHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKG5v
ZGUpOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVlKG5vZGUpCit7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub2RlKTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNl
dExlZnQ7CisKKyAgICBkZWJ1ZygnUmVpZmllZCBUcmVlOicpOworICAgIGRlYnVnKGR1bXBSZWlm
aWVkVHJlZShub2RlKSk7CisKKyAgICBkZWJ1ZygnVHJhdmVyc2UgaW4gZm9yd2FyZC4nKTsKKyAg
ICBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNpbmdJbkZvd2FyZChub2RlKTsKKworICAgIGRlYnVn
KCdUcmF2ZXJzZSBpbiBiYWNrd2FyZC4nKTsKKyAgICBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNp
bmdJbkJhY2t3YXJkKG5vZGUpOworCisgICAgZGVidWcoJycpOworfQorCitkZWJ1ZygnU2hhZG93
Um9vdCBzaG91bGQgYmUgdXNlZC4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2MnfSkpKTsKKworZGVidWcoJ0EgY29udGVudCBlbGVtZW50IHNob3VsZCBzZWxl
Y3QgbGlnaHQgY2hpbGRyZW4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2MnfSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pKSk7
CisKK2RlYnVnKCdUZXN0IGZvciBjb250ZW50IGVsZW1lbnQgc2VsZWN0b3IuJyk7CitzaG93UmVp
ZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAg
ICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6
ICcuZCd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpKTsKKworZGVidWcoJ0xpZ2h0IGNoaWxk
cmVuIHNob3VsZCBiZSBzZWxlY3RlZCBvbmx5IGF0IG9uY2UuJyk7CitzaG93UmVpZmllZFRyZWUo
CisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZCd9KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2UnfSkpKTsKKworZGVidWcoJ0EgY29udGVudCBlbGVtZW50IGNhbiBo
YXZlIGZhbGxiYWNrIGVsZW1lbnRzLicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLnonfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YxJ30p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnZjInfSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2MnfSkpKTsKKworZGVidWcoJ0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgdXNl
ZCBpZiA8Y29udGVudD4gZWxlbWVudCBzZWxlY3RzIGFueSBlbGVtZW50cy4nKTsKK3Nob3dSZWlm
aWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0Jzog
Jy5jJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdmMSd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YyJ30pKSksCisgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pKSk7CisKK2RlYnVnKCdUZXN0IGZvciBOZXN0
ZWQgU2hhZG93Um9vdHMuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnYid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2UnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdmJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdnJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2gnfSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdpJ30p
KSk7CisKK2RlYnVnKCdUZXN0IGZvciBNdWx0aXBsZSBTaGFkb3dSb290cy4nKTsKK3Nob3dSZWlm
aWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdl
J30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YnfSkpKTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmlu
ZGV4IDgxNDU0OTYxMjRmMzhmNWMxMmE0ZDExNzkxZGZiYjg4ODRkMzJjMjYuLjFkZGExOGRkNzIz
OGVhZTM1MzI1MzI2MmEzMGU3MzZlOTA2NzM0ZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVk
CkBAIC0xOTM5LDYgKzE5MzksNyBAQCBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWFw
aS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93Lmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3ctc3R5bGUu
aHRtbAogZmFzdC9kb20vc2hhZG93L2dldC1lbGVtZW50LWJ5LWlkLWluLXNoYWRvdy1yb290Lmh0
bWwKK2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1k
aXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCAwMTA0YjAwN2JhMWU0ZDI5MTBmYzVjM2FlOWFkNGFk
ZjdlY2IzN2VjLi5jNGYwN2RkODc1NTIzNzA3NWYwMGVhN2FhMzFhYTlmNzM3MWNhYjk3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTE3Miw2ICsxNzIsNyBAQCBmYXN0L2RvbS9zaGFkb3cv
aWZyYW1lLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAog
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbAorZmFzdC9kb20v
c2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1ib3VuZGFyeS1ldmVudHMuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50LWNy
YXNoLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCmluZGV4IDNmZTc2ODY0ZDVjNmI5MGVjNmJkZjQ5YjNlODRhNmVkNGI2ZGM4
N2EuLmEyNDE4Nzk2MzY4ZDY3MjdjYWFkZTAwNzM3YzA3ZGVkZWRmNDM0NjAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9Ta2lwcGVkCkBAIC0xNDYxLDYgKzE0NjEsNyBAQCBmYXN0L2RvbS9zaGFkb3cvY29u
dGVudC1lbGVtZW50LWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91
dHNpZGUtc2hhZG93Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lk
ZS1zaGFkb3ctc3R5bGUuaHRtbAogZmFzdC9kb20vc2hhZG93L2dldC1lbGVtZW50LWJ5LWlkLWlu
LXNoYWRvdy1yb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2Fs
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1h
Y3RpdmVFbGVtZW50Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCmluZGV4
IGU1ZDI4NGJlNjM1ZWJlYjRhM2MzMDhlYmQxYzI2MDNiOTA1MDZhNGMuLjY1MTMwMGY5N2QyODc2
ZDQ3YTA3YWQyYTU3NjEzZmJhNWFlY2ExZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbmNhaXJvL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8v
U2tpcHBlZApAQCAtMTk3Myw2ICsxOTczLDcgQEAgZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiBmYXN0
L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29u
dGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9nZXQtZWxl
bWVudC1ieS1pZC1pbi1zaGFkb3ctcm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10
cmVlLXRyYXZlcnNhbC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtYWN0aXZlRWxlbWVudC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmlu
ZGV4IGFmYjdiNjkzMmIxY2I4ODBiMjI4MjA1MWI4Y2YwYmI0OTBlZGUzODIuLmFlMWI5MTIyN2Fm
NjE3MjM0YmQ1NDcwMjllNTYyYmU5ZDg4ZmZlMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVk
CkBAIC0xMDc2LDYgKzEwNzYsNyBAQCBmYXN0L2RvbS9zaGFkb3cvY3JlYXRlLWNvbnRlbnQtZWxl
bWVudC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWFwaS5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93Lmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3ctc3R5bGUuaHRtbAorZmFzdC9k
b20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFjdGl2ZUVsZW1lbnQuaHRtbApkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGIwYWFkMjUzODIxMmNkNDBmNTYyMDM0
Y2ZlODVhOTMzMGNiNjZkNDIuLjk2ZTkyNGM0YWU0ZGZjNjA2NWM2NGE5NDk3YjVmNDUzNTgxM2Q4
YTIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAxMi0wMy0xNSAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW1NoYWRvdyBET01dIEFkZCBSZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBpbnRlcm5hbCBB
UElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzkx
OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
aW50ZXJuYWwgQVBJcyB3aGljaCBjYW4gYmUgdXNlZCB0byB0cmF2ZXJzZSBSZWlmaWVkIERPTSB0
cmVlLCB3aGljaCBpcworICAgICAgICBhIHJlc3VsdCBvZiBub2RlIGRpc3RyaWJ1dGlvbiBhbGdv
cml0aG0gZXhwbGFpbmVkIGluIFNoYWRvdyBET00gc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9kdmNz
LnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5o
dG1sCisKKyAgICAgICAgRXZlcnkgcHVibGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIFJlaWZpZWRU
cmVlVHJhdmVyc2FsIGFyZSBzdGF0aWMKKyAgICAgICAgZnVuY3Rpb25zIGFuZCBhcmUgbmFtZWQg
aW4gYSBzaW1pbGFyIHdheSB0byBvbmVzIGRlZmluZWQgaW4gV2ViQ29yZTo6Tm9kZSBjbGFzcy4K
KyAgICAgICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IFJlaWZpZWRUcmVlVHJhdmVyc2Fs
IEFQSXMgY29uc2lkZXIgc2hhZG93CisgICAgICAgIGhvc3RzIGFuZCBhbHNvIHRyYXZlcnNlIG5v
ZGVzIGlzIFNoYWRvdyBET00gc3VidHJlZXMsIGNyb3NzaW5nIHNoYWRvdydzIHVwcGVyIGFuZCBs
b3dlciBib3VuZGFyeQorICAgICAgICB0cmFuc3BhcmVudGx5LgorCisgICAgICAgIFRoZXJlIGlz
IG5vIGFjdHVhbCBjbGllbnQgd2hpY2ggdXNlcyB0aGVzZSBBUElzLiBGb2xsb3ctdXAgcGF0Y2hl
cyBmb3IgRm9jdXNOYXZpZ2F0aW9uCisgICAgICAgIGFuZCBFdmVudERpc3BhdGNoZXIgd2lsbCB1
c2UgdGhlIEFQSXMgc28gdGhhdCB0aGV5IGNhbiB0cmF2ZXJzZSBub2RlIGluIHJlaWZpZWQgdHJl
ZSBvcmRlci4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisK
IDIwMTItMDMtMTkgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBj
bGVhbiB1cCBnaXRpZ25vcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132991</attachid>
            <date>2012-03-21 01:44:39 -0700</date>
            <delta_ts>2012-03-21 20:40:24 -0700</delta_ts>
            <desc>retry to get required symbols.</desc>
            <filename>bug-79197-20120321174437.patch</filename>
            <type>text/plain</type>
            <size>53279</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM1N2Q1NmE0NmMzZTgw
NWY0ZWVjNTY4OWVmZTYwZGE2YWI0MWUyMC4uZmM5MTRjZWE3ZWEwNmJiNjhiOWQzZTU3M2EyODYy
MTY4YjBmMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTAzLTE1ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisgICAg
ICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQgaW4g
U2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBv
bmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBFdmVy
eSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJlIHN0
YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRv
IG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBk
aWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBzaGFk
b3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERPTSBz
dWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5CisgICAg
ICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVudCB3
aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmlnYXRp
b24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0aGF0
IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NoYWRvd0hvc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6c2hhZG93VHJlZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dUcmVl
T2ZQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZpcnN0
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkV2l0
aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VMaWdodENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxp
bmdJbkN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
Ojp0cmF2ZXJzZUJhY2tpbmdUb1lvdW5nZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjplc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1lRXNjYXBpbmdG
YWxsYmFja0NvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
OjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
YXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVJ
bkN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
YXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmFkanVzdGVkUGFyZW50Tm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRD
cm9zc2luZ1VwcGVyQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2
ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRU
cmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91
bmRhcnkpOgorICAgICAgICAqIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVpZmllZFRyZWVUcmF2ZXJzYWwpOgorICAgICAg
ICAqIGRvbS9TaGFkb3dUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omlu
c2VydGlvblBvaW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnNlbGVjdGlv
bkZvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dUcmVlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b250ZW50U2VsZWN0b3I6OmZpbmRGb3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWN0aW9uU2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKToKKyAgICAgICAgKEhU
TUxDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2li
bGluZ0luUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6bGFzdENoaWxkSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6dHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDMtMjEgIENoYXJsZXMgV2VpICA8Y2hh
cmxlcy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBSZW1v
dmUgcmVkdW5kYW50IGNvZGUgaW4gU29ja2V0U3RyZWFtSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBkNDNiZWEzZGM4YjljNTBkYmUxODIxZGM5YWQ3MTg2OWRjOThmODVhLi40NGNkNmJm
YTUyZTkxMzllNGViYjFiYjM2ZmYwMzk0YTVjNDNmZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNjEzLDYgKzYxMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vUmFuZ2UuY3Bw
CiAgICAgZG9tL1JhbmdlRXhjZXB0aW9uLmNwcAogICAgIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lci5jcHAKKyAgICBkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwCiAgICAgZG9tL1Njb3Bl
ZEV2ZW50UXVldWUuY3BwCiAgICAgZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAKICAg
ICBkb20vU2NyaXB0RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDQ3NGZjZGYyZjBiY2IwM2Q3M2ZhOTM0YzQ3MTQ5ZTNlYTk5YTQxNTkuLjMyMTZhZDU0OTMzODEw
NjAzYzc0NmI0NTA5NjlhMmQ2ZGZjNzE4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMTkwOSw2ICsxOTA5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9S
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2
ZXJzYWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1JlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
U2NvcGVkRXZlbnRRdWV1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGY0ZjQ5YzIyYTczOTI2M2NmN2M4
NWVjZDRkZDc4MzEzNzk3YTFmMmYuLmMzMTEwNzBjOGJlZTc2NTE4ZWQ3NzNkZTBmMjVmZmRjYzVk
MDI3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTkxLDYgKzU5MSw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAgXAogICAgIGRvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIu
aCBcCiAgICAgZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCBcCisgICAgZG9tL1JlaWZp
ZWRUcmVlVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwIFwKICAg
ICBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBcCiAgICAgZG9tL1NjcmlwdGFi
bGVEb2N1bWVudFBhcnNlci5jcHAgXApAQCAtMTcxOCw2ICsxNzE5LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgZG9tL1F1YWxpZmllZE5hbWUuaCBcCiAgICAgZG9tL1JhbmdlLmggXAogICAgIGRvbS9S
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIFwKKyAgICBkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwu
aCBcCiAgICAgZG9tL1JlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBcCiAgICAgZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5oIFwKICAgICBkb20vU2NyaXB0RWxlbWVudC5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggYzE3ODFhMjdjNmU4NzU1ZDc3N2M4OWQ4OTYwN2IxYTE2OWExNWI3
ZS4uNDJjZmNiMWEwM2Y3YmY1Njg4NmYwOWQ1NjkyNTYxMDQyMTUwMjg0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTYwNyw2ICs2MDcsMTEgQEAgX19aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5n
Q29udGV4dEMxRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRE
MUV2CiBfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjRjcmVhdGVQbGF0Zm9ybU1v
dXNlRXZlbnRFUDdOU0V2ZW50UDZOU1ZpZXcKIF9fWk43V2ViQ29yZTIwUGxhdGZvcm1FdmVudEZh
Y3RvcnkyN2NyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudEVQN05TRXZlbnQKK19fWk43V2ViQ29y
ZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxMW5leHRTaWJsaW5nRVBLTlNfNE5vZGVFCitfX1pON1dl
YkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMjB0cmF2ZXJzZVByZXZpb3VzTm9kZUVQS05TXzRO
b2RlRQorX19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDlsYXN0Q2hpbGRFUEtOU180
Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxNnRyYXZlcnNlTmV4dE5v
ZGVFUEtOU180Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxMGZpcnN0
Q2hpbGRFUEtOU180Tm9kZUUKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3QzMHNl
dFNob3dzQ3Jhc2hlZFBsdWdpbkluZGljYXRvckV2CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVz
cG9uc2VCYXNlMTFzZXRNaW1lVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVz
b3VyY2VSZXNwb25zZUJhc2UxN3NldEhUVFBTdGF0dXNDb2RlRWkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCAwZGUxNjIwMmI5NTkxYTFjMWM2M2FjYzA4NWNhNWIyYzNkNWEyMTc3Li5iM2E1YjVmYjZhZTVh
MzgxZmMwYTM4MjZlMjg3MjE1ODVlMWY4YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MjUsNiAr
NjI1LDcgQEAKICAgICAgICAgICAgICdkb20vUmFuZ2UuaCcsCiAgICAgICAgICAgICAnZG9tL1Jh
bmdlQm91bmRhcnlQb2ludC5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuaCcsCisgICAgICAgICAgICAnZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmgnLAogICAg
ICAgICAgICAgJ2RvbS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmgnLAogICAgICAgICAgICAgJ2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRSdW5u
ZXIuaCcsCkBAIC01MjA0LDYgKzUyMDUsOCBAQAogICAgICAgICAgICAgJ2RvbS9SYW5nZUV4Y2Vw
dGlvbi5oJywKICAgICAgICAgICAgICdkb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgnLAogICAg
ICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAnLAorICAgICAgICAgICAg
J2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9SZWlmaWVk
VHJlZVRyYXZlcnNhbC5oJywKICAgICAgICAgICAgICdkb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwJywKICAg
ICAgICAgICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOTdjZDAyMzhmYTIyZWVj
YTdiZjZkYmVhODM5YmQ5ZDM0YzU3OTRhLi41NWIxMjRiMjczM2M0NTlmZDkwMjIxMDBiNTM4YzYw
N2M1YzYwMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMzU2LDYgKzEzNTYsOCBAQAogCQk0OUZGQkYxRDExQzg1NTBFMDA2
QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhp
Y3NDb250ZXh0M0RNYWMubW0gKi87IH07CiAJCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzExOCAvKiBX
ZWJHTExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oICovOyB9OwogCQk0OUZG
QkY0MDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBX
ZWJHTExheWVyLm1tICovOyB9OworCQk0QTAxM0QyOTE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmll
ZFRyZWVUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEEwMTNEMjcxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2Fs
LmNwcCAqLzsgfTsKKwkJNEEwMTNEMkExNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJh
dmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QTAxM0QyODE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCAqLzsgfTsK
IAkJNEEwREEyRkUxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBEQTJGQzEy
OUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCAqLzsgfTsKIAkJNEEw
REEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwREEyRkQxMjlCMjQxOTAw
QUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMUU3MTkwMTRFMTAxRTQwMDYyNkY5RCAvKiBK
U0hUTUxDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTFFNzE4RTE0RTEwMUU0MDA2MjZGOUQgLyogSlNIVE1MQ29udGVudEVs
ZW1lbnQuY3BwICovOyB9OwpAQCAtODI4OCw2ICs4MjkwLDggQEAKIAkJNDlGRkJGMUMxMUM4NTUw
RTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMTGF5ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdM
TGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHTExh
eWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTAxM0QyNzE1MTJGRDc3MDBF
MUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QTAxM0QyODE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2
ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVpZmllZFRyZWVUcmF2
ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkMxMjlCMjQxOTAw
QUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0
ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Bc3NvY2lh
dGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTFFNzE4RTE0RTEw
MUU0MDA2MjZGOUQgLyogSlNIVE1MQ29udGVudEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQ29udGVudEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNDksNiArMjEwNTMsOCBAQAogCQkJCUE4NEQ4MjdCMTFE
MzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQk4NTAzMUIz
NTBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwICovLAogCQkJ
CTg1MDMxQjM2MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oICov
LAorCQkJCTRBMDEzRDI3MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNhbC5j
cHAgKi8sCisJCQkJNEEwMTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVy
c2FsLmggKi8sCiAJCQkJQTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1l
bnRNYXJrZXIuaCAqLywKIAkJCQk0OTk4QUVDNDEzRjlEMEVBMDA5MEIxQUEgLyogUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2suaCAqLywKIAkJCQk0OTk4QUVDNTEzRjlEMEVBMDA5MEIxQUEg
LyogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsICovLApAQCAtMjM3NDksNiArMjM3
NTUsNyBAQAogCQkJCUJDQUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MDMxQjRDMEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkQwRDAwNkMxRDAwRUY2RjI2IC8q
IFJlZ3VsYXJFeHByZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QTAxM0QyQTE1MTJGRDc3
MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
MzA5RTAxMDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRD
b21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNTA5OUU2NDkyMDA1NkU1ODEgLyog
UmVtb3ZlTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY4OTUsNiArMjY5MDIsNyBA
QAogCQkJCUJDQUI0MTgxMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUwMzFCNEIwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTJDMEQwMDZDMUQwMEVGNkYyNiAvKiBS
ZWd1bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QTAxM0QyOTE1MTJGRDc3
MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMzMDlFMDAwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlEMDZDMEQ5MDBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9y
bWF0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwNDA5OUU2NDkyMDA1NkU1
ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Y2NiNTAxNWY2MzRl
ZWQ5MjU4NDUxODFlY2ZhZDJhMDA5ZGE1MjU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcApAQCAtMCwwICsxLDMyMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWlmaWVkVHJlZVRyYXZlcnNhbC5oIgorCisj
aW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNp
bmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTaGFkb3dIb3N0KGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgp
ICYmIHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpOworfQorCitzdGF0aWMgaW5saW5l
IFNoYWRvd1RyZWUqIHNoYWRvd1RyZWVGb3IoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
bm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiB0b0VsZW1lbnQo
bm9kZSktPnNoYWRvd1RyZWUoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBT
aGFkb3dUcmVlKiBzaGFkb3dUcmVlT2ZQYXJlbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBp
ZiAobm9kZSAmJiBub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybiBzaGFkb3dUcmVl
Rm9yKG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpmaXJzdENoaWxkKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VDaGlsZChub2RlLCBSZWlmaWVk
VHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQpOworICAgIEFTU0VSVCghY2hpbGQgfHwgIWNo
aWxkLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIGNoaWxkOworfQorCitOb2RlKiBSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VDaGlsZChub2RlLCBSZWlmaWVk
VHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBBU1NFUlQoIWNoaWxkIHx8ICFj
aGlsZC0+aXNTaGFkb3dSb290KCkpOworICAgIHJldHVybiBjaGlsZDsKK30KKworTm9kZSogUmVp
ZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZFdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnko
Y29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgTm9kZSogY2hpbGQg
PSB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rp
b25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hpbGQtPmlzU2hhZG93Um9vdCgp
KTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0
cmF2ZXJzZUNoaWxkKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0
aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgLy8gRklYTUU6IEFkZCBh
biBhc3NlcnRpb24gb25jZSBJbnNlcnRpb25Qb2ludCBoYXZlIGlzQWN0aXZlKCkgZnVuY3Rpb24u
CisgICAgLy8gQVNTRVJUKCFpc0luc2VydGlvblBvaW50KG5vZGUpIHx8ICF0b0luc2VydGlvblBv
aW50KG5vZGUpLT5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgp
KTsKKyAgICBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlID0gc2hhZG93VHJlZUZvcihub2RlKTsKKyAg
ICBpZiAoc2hhZG93VHJlZSAmJiBzaGFkb3dUcmVlLT5oYXNTaGFkb3dSb290KCkpCisgICAgICAg
IHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4oc2hhZG93VHJlZS0+eW91bmdlc3RTaGFkb3dS
b290KCksIGRpcmVjdGlvbik7CisgICAgTm9kZSogY2hpbGQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRy
ZW4obm9kZSwgZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUqIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4oY29uc3QgTm9kZSogbm9kZSwg
UmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIEFTU0VSVChu
b2RlKTsKKyAgICBpZiAoTm9kZSogY2hpbGQgPSAoZGlyZWN0aW9uID09IFJlaWZpZWRUcmVlVHJh
dmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IG5vZGUtPmZpcnN0Q2hpbGQoKSA6IG5vZGUtPmxhc3RD
aGlsZCgpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTWUoY2hpbGQsIGRpcmVjdGlvbik7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1l
KGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlv
bikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkp
IHsKKyAgICAgICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25MaXN0
ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+c2VsZWN0aW9ucygpOworICAgICAgICBpZiAoSFRN
TENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IChkaXJlY3Rpb24gPT0gUmVpZmllZFRyZWVU
cmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9uTGlzdC0+Zmlyc3QoKSA6IHNlbGVj
dGlvbkxpc3QtPmxhc3QoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VNZShzZWxlY3Rp
b24tPm5vZGUoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTGlnaHRDaGls
ZHJlbihub2RlLCBkaXJlY3Rpb24pOworICAgIH0KKyAgICByZXR1cm4gY29uc3RfY2FzdDxOb2Rl
Kj4obm9kZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyhj
b25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUt
PmlzU2hhZG93Um9vdCgpKTsKKyAgICBOb2RlKiBuZXh0ID0gdHJhdmVyc2VTaWJsaW5nTWF5YmVC
YWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZv
cndhcmQpOworICAgIEFTU0VSVCghbmV4dCB8fCAhbmV4dC0+aXNTaGFkb3dSb290KCkpOworICAg
IHJldHVybiBuZXh0OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cHJldmlvdXNT
aWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VS
VCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIE5vZGUqIG5leHQgPSB0cmF2ZXJzZVNpYmxp
bmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uQmFja3dhcmQpOworICAgIEFTU0VSVCghbmV4dCB8fCAhbmV4dC0+aXNTaGFkb3dSb290
KCkpOworICAgIHJldHVybiBuZXh0OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6
dHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2Rl
LCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJU
KG5vZGUpOworICAgIFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQo
bm9kZSk7CisgICAgaWYgKCFzaGFkb3dUcmVlKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJs
aW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOworICAgIEhUTUxDb250ZW50U2VsZWN0
aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSk7CisgICAgaWYg
KCFzZWxlY3Rpb24pCisgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVl
KG5vZGUsIGRpcmVjdGlvbik7CisgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBuZXh0U2Vs
ZWN0aW9uID0gKGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndh
cmQgPyBzZWxlY3Rpb24tPm5leHQoKSA6IHNlbGVjdGlvbi0+cHJldmlvdXMoKSkpCisgICAgICAg
IHJldHVybiB0cmF2ZXJzZU1lKG5leHRTZWxlY3Rpb24tPm5vZGUoKSwgZGlyZWN0aW9uKTsKKyAg
ICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChzZWxlY3Rp
b24tPmluc2VydGlvblBvaW50KCksIGRpcmVjdGlvbik7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVl
VHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0IE5vZGUqIG5vZGUs
IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQo
bm9kZSk7CisgICAgaWYgKE5vZGUqIG5leHQgPSAoZGlyZWN0aW9uID09IFJlaWZpZWRUcmVlVHJh
dmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IG5vZGUtPm5leHRTaWJsaW5nKCkgOiBub2RlLT5wcmV2
aW91c1NpYmxpbmcoKSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZU1lKG5leHQsIGRpcmVjdGlv
bik7CisgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZUJhY2tpbmdUb1lvdW5nZXJTaGFkb3dS
b290KG5vZGUsIGRpcmVjdGlvbikpCisgICAgICAgIHJldHVybiBuZXh0OworICAgIHJldHVybiBl
c2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KG5vZGUsIGRpcmVjdGlvbik7Cit9CisKK05vZGUq
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZUJhY2tpbmdUb1lvdW5nZXJTaGFkb3dSb290
KGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlv
bikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSAmJiBu
b2RlLT5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIFNoYWRvd1Jvb3Qq
IHBhcmVudFNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKTsKKyAg
ICAgICAgaWYgKCFwYXJlbnRTaGFkb3dSb290LT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAg
IEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlvblBvaW50ID0gcGFyZW50U2hhZG93Um9v
dC0+YXNzaWduZWRUbygpOworICAgICAgICAgICAgQVNTRVJUKGFzc2lnbmVkSW5zZXJ0aW9uUG9p
bnQpOworICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUoYXNz
aWduZWRJbnNlcnRpb25Qb2ludCwgZGlyZWN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OmVzY2FwZUZhbGxiYWNr
Q29udGVudEVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAobm9kZS0+cGFy
ZW50Tm9kZSgpICYmIGlzSW5zZXJ0aW9uUG9pbnQobm9kZS0+cGFyZW50Tm9kZSgpKSkKKyAgICAg
ICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZS0+
cGFyZW50Tm9kZSgpLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyhjb25z
dCBOb2RlKiBub2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBBU1NF
UlQobm9kZSk7CisgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpCisgICAgICAgIHJldHVy
biBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBjcm9zc2VkKTsKKyAg
ICBjcm9zc2VkID0gTm90Q3Jvc3NlZDsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obm9k
ZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlKGNvbnN0IE5v
ZGUqIG5vZGUsIENyb3NzZWRVcHBlckJvdW5kYXJ5JiBjcm9zc2VkKQoreworICAgIEFTU0VSVChu
b2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyAgICAvLyBGSVhNRTog
QWRkIGFuIGFzc2VydGlvbiBvbmNlIEluc2VydGlvblBvaW50IGhhdmUgaXNBY3RpdmUoKSBmdW5j
dGlvbi4KKyAgICAvLyBBU1NFUlQoIWlzSW5zZXJ0aW9uUG9pbnQobm9kZSkgfHwgIXRvSW5zZXJ0
aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCkpOworICAgIHJldHVybiBwYXJlbnROb2RlTWF5YmVC
YWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBjcm9zc2VkKTsKK30KKworTm9kZSogUmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICAvLyBGSVhN
RTogRG8gbm90IHVzZSAndW5zZWQnIHBhcmFtZXRlci4KKyAgICBDcm9zc2VkVXBwZXJCb3VuZGFy
eSB1bnVzZWQ7CisgICAgcmV0dXJuIHBhcmVudE5vZGUobm9kZSwgdW51c2VkKTsKK30KKworCitO
b2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVy
Qm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNT
RVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgLy8gRklYTUU6IEFkZCBhbiBhc3NlcnRp
b24gb25jZSBJbnNlcnRpb25Qb2ludCBoYXZlIGlzQWN0aXZlKCkgZnVuY3Rpb24uCisgICAgLy8g
QVNTRVJUKCFpc0luc2VydGlvblBvaW50KG5vZGUpIHx8ICF0b0luc2VydGlvblBvaW50KG5vZGUp
LT5pc0FjdGl2ZSgpKTsKKyAgICBDcm9zc2VkVXBwZXJCb3VuZGFyeSBjcm9zc2VkOworICAgIE5v
ZGUqIHBhcmVudCA9IHBhcmVudE5vZGVNYXliZUJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIGNy
b3NzZWQpOworICAgIGlmIChjcm9zc2VkID09IENyb3NzZWQpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBwYXJlbnQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJl
bnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlLCBDcm9zc2Vk
VXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBpZiAoU2hhZG93VHJlZSogc2hhZG93VHJl
ZSA9IHNoYWRvd1RyZWVPZlBhcmVudChub2RlKSkgeworICAgICAgICBpZiAoSFRNTENvbnRlbnRT
ZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRvd1RyZWUtPnNlbGVjdGlvbkZvcihub2RlKSkKKyAg
ICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChzZWxl
Y3Rpb24tPmluc2VydGlvblBvaW50KCksIGNyb3NzZWQpOworICAgIH0KKyAgICByZXR1cm4gcGFy
ZW50Tm9kZUluQ3VycmVudFRyZWUobm9kZSwgY3Jvc3NlZCk7Cit9CisKK05vZGUqIFJlaWZpZWRU
cmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlSW5DdXJyZW50VHJlZShjb25zdCBOb2RlKiBub2RlLCBD
cm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBpZiAoTm9kZSogcGFyZW50ID0g
bm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgp
KQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9y
SG9zdCh0b1NoYWRvd1Jvb3QocGFyZW50KSwgY3Jvc3NlZCk7CisgICAgICAgIHJldHVybiB0cmF2
ZXJzZU1lRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzKHBhcmVudCwgY3Jvc3NlZCk7CisgICAgfQor
ICAgIGNyb3NzZWQgPSBOb3RDcm9zc2VkOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0
KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIENyb3NzZWRVcHBlckJvdW5kYXJ5JiBjcm9z
c2VkKQoreworICAgIEFTU0VSVChzaGFkb3dSb290KTsKKyAgICBpZiAoc2hhZG93Um9vdC0+aXNZ
b3VuZ2VzdCgpKSB7CisgICAgICAgIGNyb3NzZWQgPSBDcm9zc2VkOworICAgICAgICByZXR1cm4g
c2hhZG93Um9vdC0+aG9zdCgpOworICAgIH0KKyAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRJ
bnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsKKyAgICBBU1NFUlQoYXNz
aWduZWRJbnNlcnRpb25Qb2ludCk7CisgICAgcmV0dXJuIHBhcmVudE5vZGVNYXliZUJhY2tUb0lu
c2VydGlvblBvaW50KGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGNyb3NzZWQpOworfQorCitOb2Rl
KiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6YWRqdXN0ZWRQYXJlbnROb2RlKGNvbnN0IE5vZGUqIG5v
ZGUpCit7CisgICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJl
bnQobm9kZSkpIHsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24g
PSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gc2Vs
ZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpOworICAgIH0KKyAgICBpZiAobm9kZS0+aXNTaGFkb3dS
b290KCkpIHsKKyAgICAgICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93
Um9vdChub2RlKTsKKyAgICAgICAgaWYgKCFzaGFkb3dSb290LT5pc1lvdW5nZXN0KCkpIHsKKyAg
ICAgICAgICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlvblBvaW50ID0gc2hhZG93
Um9vdC0+YXNzaWduZWRUbygpOworICAgICAgICAgICAgQVNTRVJUKGFzc2lnbmVkSW5zZXJ0aW9u
UG9pbnQpOworICAgICAgICAgICAgcmV0dXJuIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQ7CisgICAg
ICAgIH0KKyAgICAgICAgc2hhZG93Um9vdC0+aG9zdCgpOworICAgIH0KKyAgICByZXR1cm4gbm9k
ZS0+cGFyZW50Tm9kZSgpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVy
c2VOZXh0Tm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiBuZXh0ID0gZmly
c3RDaGlsZChub2RlKSkKKyAgICAgICAgcmV0dXJuIG5leHQ7CisgICAgaWYgKE5vZGUqIG5leHQg
PSBuZXh0U2libGluZyhub2RlKSkKKyAgICAgICAgcmV0dXJuIG5leHQ7CisgICAgY29uc3QgTm9k
ZSogbiA9IG5vZGU7CisgICAgd2hpbGUgKG4gJiYgIW5leHRTaWJsaW5nKG4pKQorICAgICAgICBu
ID0gcGFyZW50Tm9kZShuKTsKKyAgICBpZiAobikKKyAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5n
KG4pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9k
ZSkKK3sKKyAgICBpZiAoIWlzU2hhZG93SG9zdChub2RlKSkgeworICAgICAgICBpZiAoTm9kZSog
bmV4dCA9IHRyYXZlcnNlTGlnaHRDaGlsZHJlbihub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERp
cmVjdGlvbkZvcndhcmQpKQorICAgICAgICAgICAgcmV0dXJuIG5leHQ7CisgICAgfQorICAgIGlm
IChOb2RlKiBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSkpCisgICAgICAgIHJldHVybiBuZXh0Owor
ICAgIGNvbnN0IE5vZGUqIG4gPSBub2RlOworICAgIHdoaWxlIChuICYmICFuZXh0U2libGluZyhu
KSkKKyAgICAgICAgbiA9IHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KG4p
OworICAgIGlmIChuKQorICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcobik7CisgICAgcmV0dXJu
IDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9k
ZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiBuID0gcHJldmlvdXNTaWJsaW5n
KG5vZGUpKSB7CisgICAgICAgIHdoaWxlIChOb2RlKiBjaGlsZCA9IFJlaWZpZWRUcmVlVHJhdmVy
c2FsOjpsYXN0Q2hpbGQobikpCisgICAgICAgICAgICBuID0gY2hpbGQ7CisgICAgICAgIHJldHVy
biBuOworICAgIH0KKyAgICByZXR1cm4gcGFyZW50Tm9kZShub2RlKTsKK30KKworTm9kZSogUmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiBuID0gcHJldmlv
dXNTaWJsaW5nKG5vZGUpKSB7CisgICAgICAgIHdoaWxlICghaXNTaGFkb3dIb3N0KG4pKSB7Cisg
ICAgICAgICAgICBpZiAoTm9kZSogY2hpbGQgPSBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVy
c2VMaWdodENoaWxkcmVuKG4sIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQp
KQorICAgICAgICAgICAgICAgIG4gPSBjaGlsZDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAg
cmV0dXJuIHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KG5vZGUpOworfQor
Cit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRU
cmVlVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZTI0M2Q0YzhmMGNjOTZjNzQ4ODgyMThhY2Y1ZmIwN2IxYmJmMWM0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2Fs
LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVpZmllZFRyZWVUcmF2ZXJzYWxfaAorI2Rl
ZmluZSBSZWlmaWVkVHJlZVRyYXZlcnNhbF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CisKK2VudW0gUmVpZmllZFRyZWVUcmF2ZXJzYWxE
aXJlY3Rpb24geworICAgIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCwKKyAg
ICBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkCit9OworCisvLyBGSVhNRTog
TWFrZSBzb21lIGZ1bmN0aW9ucyBpbmxpbmUgdG8gb3B0aW1pc2UgdGhlIHBlcmZvcm1hbmNlLgor
Y2xhc3MgUmVpZmllZFRyZWVUcmF2ZXJzYWwgeworcHVibGljOgorICAgIGVudW0gQ3Jvc3NlZFVw
cGVyQm91bmRhcnkgeworICAgICAgICBOb3RDcm9zc2VkLAorICAgICAgICBDcm9zc2VkLAorICAg
IH07CisKKyAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChjb25zdCBOb2RlKik7CisgICAgc3Rh
dGljIE5vZGUqIGxhc3RDaGlsZChjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIGxhc3RD
aGlsZFdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCisgICAgc3Rh
dGljIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogcHJl
dmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2Rl
KGNvbnN0IE5vZGUqLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYpOworICAgIHN0YXRpYyBOb2RlKiBw
YXJlbnROb2RlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZVdpdGhv
dXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCisgICAgc3RhdGljIE5vZGUq
IHRyYXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJz
ZVByZXZpb3VzTm9kZShjb25zdCBOb2RlKik7CisKKyAgICAvLyBGSVhNRTogQW4gJ2FkanVzdGVk
JyBpcyBub3QgZ29vZCBuYW1lIGZvciBnZW5lcmFsIHVzZSBjYXNlLiBSZW5hbWUgdGhpcy4KKyAg
ICAvLyBEbyBub3Qgc2tpcCBlaXRoZXIgU2hhZG93Um9vdCBvciBJbnNlcnRpb25Qb2ludC4KKyAg
ICBzdGF0aWMgTm9kZSogYWRqdXN0ZWRQYXJlbnROb2RlKGNvbnN0IE5vZGUqKTsKKworICAgIHN0
YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShj
b25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2RlV2l0aG91
dENyb3NzaW5nVXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKik7CisKK3ByaXZhdGU6CisgICAgc3Rh
dGljIE5vZGUqIHRyYXZlcnNlQ2hpbGQoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2Fs
RGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VNZShjb25zdCBOb2RlKiwgUmVp
ZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZUxp
Z2h0Q2hpbGRyZW4oY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsK
KworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBv
aW50KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisgICAgc3Rh
dGljIE5vZGUqIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUoY29uc3QgTm9kZSosIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZUJh
Y2tpbmdUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNh
bERpcmVjdGlvbik7CisgICAgc3RhdGljIE5vZGUqIGVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1l
bnQoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKworICAgIHN0
YXRpYyBOb2RlKiB0cmF2ZXJzZU1lRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzKGNvbnN0IE5vZGUq
LCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYpOworCisgICAgc3RhdGljIE5vZGUqIHBhcmVudE5vZGVN
YXliZUJhY2tUb0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqLCBDcm9zc2VkVXBwZXJCb3VuZGFy
eSYpOworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlSW5DdXJyZW50VHJlZShjb25zdCBOb2Rl
KiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZUJh
Y2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnN0IFNoYWRvd1Jvb3QqLCBDcm9zc2VkVXBw
ZXJCb3VuZGFyeSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93VHJlZS5jcHAKaW5kZXggMWJhZTNiZWE3ZTllYTBhYjllYjYyNDZhZWYyZGUwODBjNmFj
YzNkZi4uNmZiZTcyOTVkNjNhMzk4MWFhNWU4MGQyNGNjMDAzZTc3YWM4NmE2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dUcmVlLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgU2hhZG93VHJlZTo6
ZGV0YWNoSG9zdChFbGVtZW50KiBob3N0KQogICAgIGhvc3QtPmRldGFjaEFzTm9kZSgpOwogfQog
Ci1JbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9k
ZSkgY29uc3QKK0luc2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcihj
b25zdCBOb2RlKiBub2RlKSBjb25zdAogewogICAgIEFTU0VSVChub2RlICYmIG5vZGUtPnBhcmVu
dE5vZGUoKSk7CiAKQEAgLTIyMSw2ICsyMjEsMTEgQEAgSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1Ry
ZWU6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgcmV0dXJuIGZvdW5k
LT5pbnNlcnRpb25Qb2ludCgpOwogfQogCitIVE1MQ29udGVudFNlbGVjdGlvbiogU2hhZG93VHJl
ZTo6c2VsZWN0aW9uRm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c2VsZWN0b3IuZmluZEZvcihub2RlKTsKK30KKwogdm9pZCBTaGFkb3dUcmVlOjpyZWF0dGFjaCgp
CiB7CiAgICAgZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaAppbmRleCA1NzIyMjE4M2Ey
NjMxNzQ0MmY4OTA3ZmVlZTkyY2NhMzY3OGQyNzI2Li5lOWMyY2NhZGIwY2NmN2NkMTU1MGY0MGQz
MjA4OWFmMGY3MzYyOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJl
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKQEAgLTQxLDYgKzQxLDcg
QEAgY2xhc3MgTm9kZTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNlcnRpb25Qb2ludDsKIGNs
YXNzIFRyZWVTY29wZTsKK2NsYXNzIEhUTUxDb250ZW50U2VsZWN0aW9uOwogCiBjbGFzcyBTaGFk
b3dUcmVlIHsKIHB1YmxpYzoKQEAgLTc5LDcgKzgwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVh
dHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICB2b2lkIGhvc3RDaGlsZHJlbkNoYW5n
ZWQoKTsKIAotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihOb2RlKikgY29u
c3Q7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqKSBj
b25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uRm9yKGNvbnN0IE5vZGUq
KSBjb25zdDsKIAogICAgIEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9yKCk7CiAgICAgY29u
c3QgSFRNTENvbnRlbnRTZWxlY3RvciYgc2VsZWN0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKaW5kZXggOGI2MmQ1
NmE3NzNkYjMwZGI2ZDMxOGFmNzNiZGQxYzBmOGRiYjQ2Ny4uMzFlNDE5NGVjNWEzN2RlMDM5NGMw
M2Y4ZTgzOGU2NWJiNDU4NzRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEhUTUxD
b250ZW50U2VsZWN0b3I6OnVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogbGlzdCkK
ICAgICBsaXN0LT5jbGVhcigpOwogfQogCi1IVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENvbnRl
bnRTZWxlY3Rvcjo6ZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0CitIVE1MQ29udGVudFNlbGVjdGlv
biogSFRNTENvbnRlbnRTZWxlY3Rvcjo6ZmluZEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fc2VsZWN0aW9uU2V0LmZpbmQoa2V5KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaAppbmRleCBlMDExODA1MDBi
YWQxMjM0MjNhMTc1ODhhODE5MzJmMTgwZjE0YzUzLi5iY2ZiZGRiYmQ4ODI3Mzg1YTdjOWFmYzEx
YzI0ZjZmZWNhNmUzNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRTZWxlY3Rvci5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZChIVE1MQ29udGVudFNlbGVjdGlvbiogdmFsdWUpIHsgbV9zZXQuYWRkKHZhbHVlKTsgfQogICAg
IHZvaWQgcmVtb3ZlKEhUTUxDb250ZW50U2VsZWN0aW9uKiB2YWx1ZSkgeyBtX3NldC5yZW1vdmUo
dmFsdWUpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zZXQuaXNFbXB0
eSgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoTm9kZSoga2V5KSBjb25zdDsK
KyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChjb25zdCBOb2RlKiBrZXkpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKQEAgLTExOCw5ICsxMTgsOSBAQCBw
cml2YXRlOgogICAgIFBvaW50ZXJTZXQgbV9zZXQ7CiB9OwogCi1pbmxpbmUgSFRNTENvbnRlbnRT
ZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKE5vZGUqIGtleSkgY29uc3QK
K2lubGluZSBIVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZp
bmQoY29uc3QgTm9kZSoga2V5KSBjb25zdAogewotICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZv
dW5kID0gbV9zZXQuZmluZDxOb2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OlRyYW5zbGF0
b3I+KGtleSk7CisgICAgUG9pbnRlclNldDo6aXRlcmF0b3IgZm91bmQgPSBtX3NldC5maW5kPGNv
bnN0IE5vZGUqLCBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNsYXRvcj4oa2V5KTsKICAg
ICByZXR1cm4gZm91bmQgIT0gbV9zZXQuZW5kKCkgPyAqZm91bmQgOiAwOwogfQogCkBAIC0xMzIs
NyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZWxlY3QoSW5zZXJ0aW9uUG9pbnQqLCBI
VE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKICAgICB2b2lkIHVuc2VsZWN0KEhUTUxDb250ZW50
U2VsZWN0aW9uTGlzdCopOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kRm9yKE5vZGUq
IGtleSkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmRGb3IoY29uc3QgTm9k
ZSoga2V5KSBjb25zdDsKIAogICAgIHZvaWQgd2lsbFNlbGVjdCgpOwogICAgIGJvb2wgaXNTZWxl
Y3RpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5oCmluZGV4IGI1MjgyY2RkYzI3NDgyY2VjMzM1MzVkZGJlYjY4YzcwZjU1ODg0YmMuLjc0YjFh
MjAwYzRkOWUyYjEyNzgwNTRjNDQ3YWY0MDExZDQ2ZDQ4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgog
ICAgIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCBtX3NlbGVjdGlvbnM7CiB9OwogCi1pbmxpbmUg
Ym9vbCBpc0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCitpbmxpbmUgYm9vbCBpc0luc2VydGlv
blBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTg4LDYgKzg4LDEyIEBAIGlubGluZSBJbnNlcnRpb25Qb2ludCogdG9JbnNl
cnRpb25Qb2ludChOb2RlKiBub2RlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNlcnRpb25Q
b2ludCo+KG5vZGUpOwogfQogCitpbmxpbmUgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0
aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNJbnNlcnRpb25Qb2lu
dChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEluc2VydGlvblBvaW50Kj4o
bm9kZSk7Cit9CisKIGlubGluZSBib29sIGlzU2hhZG93Qm91bmRhcnkoTm9kZSogbm9kZSkKIHsK
ICAgICBpZiAoIWlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggYzgyNmIxNTBhMDcyZDg4NTMwM2UyZjQyMmYyMzQ3ZTBmNjFiODJmZS4u
MmE1NWNhMGE1YzEyOTkyNjBhZTJhOWM3MmE2MTVjZDJjNjE4OTEzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIk5vZGVSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisj
aW5jbHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
QEAgLTE4MCw2ICsxODEsNTEgQEAgYm9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBub2RlLT5hdHRhY2hlZCgpOwogfQogCitO
b2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUmVpZmll
ZFRyZWVUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKG5vZGUpOworfQorCitOb2RlKiBJbnRlcm5hbHM6
OmZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmICghbm9kZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6
Zmlyc3RDaGlsZChub2RlKTsKK30KKworTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hpbGRJblJlaWZp
ZWRUcmVlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkg
eworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkKG5vZGUpOwor
fQorCitOb2RlKiBJbnRlcm5hbHM6OnRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKE5vZGUq
IG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAgICAgICBl
YyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJl
dHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZShub2RlKTsKK30KKwor
Tm9kZSogSW50ZXJuYWxzOjp0cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVpZmllZFRyZWUoTm9kZSog
bm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0
dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZShub2RlKTsKK30K
KwogU3RyaW5nIEludGVybmFsczo6ZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxlbWVudCogZWxl
bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFlbGVtZW50KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA2ODgzNDYwNWY0NjQwNzlhOWU5YzViYWFjNzc4M2E3
MjExNjcyYjRkLi4zNDNhNGQzNDNlNjFiMDdkYWI2YTI0ODE0MmJjOGQ0YzM3MTlkMzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTg0LDYgKzg0LDEyIEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgYXR0YWNoZWQoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIE5vZGUqIG5l
eHRTaWJsaW5nSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIE5vZGUq
IGZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CisgICAgTm9k
ZSogbGFzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIE5v
ZGUqIHRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7
CisgICAgTm9kZSogdHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNl
cHRpb25Db2RlJik7CisKICNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCiAgICAgdm9pZCBzZWxlY3RD
b2xvckluQ29sb3JDaG9vc2VyKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZGRhMTIyOTg0YTRj
ZjVjMGY5NDFjMDlhMWY3YjA0YmUyMTdmODMyYy4uZjQ0Yjg5NjVjYjlhZjllMzMyZWJmMzRiZWQ1
NGFiMDc4ODRmN2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNTUs
NiArNTUsMTIgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEVsZW1lbnQgZ2V0RWxlbWVudEJ5
SWRJblNoYWRvd1Jvb3QoaW4gTm9kZSBzaGFkb3dSb290LCBpbiBET01TdHJpbmcgaWQpIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFuIGlzVmFsaWRDb250ZW50U2VsZWN0KGlu
IEVsZW1lbnQgY29udGVudEVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCisgICAgICAg
IE5vZGUgbmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIE5vZGUgZmlyc3RDaGlsZEluUmVpZmllZFRyZWUoaW4gTm9kZSBu
b2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSBsYXN0Q2hpbGRJblJlaWZp
ZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUg
dHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRyZWUoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKKyAgICAgICAgTm9kZSB0cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVpZmllZFRyZWUo
aW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwogICAgICAgICBib29sZWFuIGF0
dGFjaGVkKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICNpZiBkZWZpbmVk
KEVOQUJMRV9JTlBVVF9DT0xPUikgJiYgRU5BQkxFX0lOUFVUX0NPTE9SCmRpZmYgLS1naXQgYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgppbmRleCA2NTJmMTgyZTY4NGY1NGJiNmFlYzMzZGFiOTZmMDE0ZWY1YzVhZjlhLi44
NzI3NDYzZmM3Y2E1MzA0ZDc5YzMzN2FhNjIyZjcwMTBlOWYyOTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKQEAgLTYzLDYgKzYzLDExIEBAIF9aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1l
bnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFOwogX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xs
ZXIzOXNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVybmFsc0VpaTsKIF9aTjdXZWJD
b3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEMxRVBOU180Tm9kZUU7CiBfWk43V2ViQ29yZTIwTm9k
ZVJlbmRlcmluZ0NvbnRleHREMUV2OworX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2Fs
MTFuZXh0U2libGluZ0VQS05TXzROb2RlRTsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZl
cnNhbDIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtOU180Tm9kZUU7CitfWk43V2ViQ29yZTIwUmVp
ZmllZFRyZWVUcmF2ZXJzYWw5bGFzdENoaWxkRVBLTlNfNE5vZGVFOworX1pON1dlYkNvcmUyMFJl
aWZpZWRUcmVlVHJhdmVyc2FsMTZ0cmF2ZXJzZU5leHROb2RlRVBLTlNfNE5vZGVFOworX1pON1dl
YkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTBmaXJzdENoaWxkRVBLTlNfNE5vZGVFOwogX1pO
N1dlYkNvcmUyMWdldENhY2hlZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
S04zSlNDOUNsYXNzSW5mb0U7CiBfWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQ
TlNfN0VsZW1lbnRFajsKIF9aTjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXY7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYzMyNzA5MmUxMjU1ZDZkNTBmMzFiZTBkY2Y2NzhmYTY5NzQ5MGY3Yi4uM2Y4MGQ4YjYz
MzRhMGZmMjAwMjhkNDg3OTgyMmYwMzZjNTg0YzFkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDEyLTAzLTE1ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
U2hhZG93IERPTV0gQWRkIFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRl
cm5hbCBBUElzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUs
IHdoaWNoIGlzCisgICAgICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRo
bSBleHBsYWluZWQgaW4gU2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMu
b3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwK
KworICAgICAgICBFdmVyeSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVU
cmF2ZXJzYWwgYXJlIHN0YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBh
IHNpbWlsYXIgd2F5IHRvIG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAg
ICAgICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJ
cyBjb25zaWRlciBzaGFkb3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMg
aXMgU2hhZG93IERPTSBzdWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2Vy
IGJvdW5kYXJ5CisgICAgICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8g
YWN0dWFsIGNsaWVudCB3aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZv
ciBGb2N1c05hdmlnYXRpb24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0
aGUgQVBJcyBzbyB0aGF0IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9y
ZGVyLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10
cmVlLXRyYXZlcnNhbC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMy0yMSAgS2Vpc2hpIEhhdHRvcmkg
IDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1hcmtpbmcgbG9zdC1j
b21wb3NpdG9yLWNvbnRleHQtcGVybWFuZW50bHkuaHRtbCBvbiBXSU4gYXMgZmxha3kuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNh
bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVl
LXRyYXZlcnNhbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA0MjRlNzQxODdhMmU1N2M4NWVk
ZjM2NmFkZDYzM2VjN2JhNmMzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE1NiBAQAorVGVzdHMgZm9yIFJlaWZpZWQgRE9NIFRyZWUgVHJhdmVyc2FsIEFQSXMuIENhbiBv
bmx5IHJ1biB3aXRoaW4gRFJUCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitTaGFk
b3dSb290IHNob3VsZCBiZSB1c2VkLgorUmVpZmllZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBp
ZD1iCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorVHJhdmVy
c2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitBIGNvbnRlbnQgZWxlbWVu
dCBzaG91bGQgc2VsZWN0IGxpZ2h0IGNoaWxkcmVuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEK
KwlESVYJIGlkPWIKKwlESVYJIGlkPWMKKwlESVYJIGlkPWQKKworVHJhdmVyc2UgaW4gZm9yd2Fy
ZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9ZAorVHJhdmVyc2Ug
aW4gYmFja3dhcmQuCitESVYJIGlkPWQKK0RJVgkgaWQ9YworRElWCSBpZD1iCitESVYJIGlkPWEK
KworVGVzdCBmb3IgY29udGVudCBlbGVtZW50IHNlbGVjdG9yLgorUmVpZmllZCBUcmVlOgorRElW
CSBpZD1hCisJRElWCSBpZD1iCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK1Ry
YXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1hCisKK0xpZ2h0IGNoaWxkcmVuIHNob3VsZCBi
ZSBzZWxlY3RlZCBvbmx5IGF0IG9uY2UuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJ
IGlkPWIKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitUcmF2
ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZQorRElWCSBpZD1kCitESVYJIGlkPWMKK0RJVgkg
aWQ9YQorCitBIGNvbnRlbnQgZWxlbWVudCBjYW4gaGF2ZSBmYWxsYmFjayBlbGVtZW50cy4KK1Jl
aWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCURJVgkgaWQ9ZjEKKwlESVYJIGlk
PWYyCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBp
ZD1mMQorRElWCSBpZD1mMgorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWYyCitESVYJ
IGlkPWYxCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitGYWxsYmFjayBlbGVtZW50cyBzaG91bGQg
bm90IGJlIHVzZWQgaWYgIGVsZW1lbnQgc2VsZWN0cyBhbnkgZWxlbWVudHMuCitSZWlmaWVkIFRy
ZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwlESVYJIGlkPWYxCisJRElWCSBpZD1mMgorCitU
cmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9ZjEKK0RJ
VgkgaWQ9ZjIKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1mMgorRElWCSBpZD1mMQor
RElWCSBpZD1iCitESVYJIGlkPWEKKworVGVzdCBmb3IgTmVzdGVkIFNoYWRvd1Jvb3RzLgorUmVp
ZmllZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1iCisJCURJVgkgaWQ9YworCQlESVYJIGlk
PWUKKwkJRElWCSBpZD1kCisJRElWCSBpZD1mCisJRElWCSBpZD1oCisJRElWCSBpZD1pCisJRElW
CSBpZD1nCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElW
CSBpZD1jCitESVYJIGlkPWUKK0RJVgkgaWQ9ZAorRElWCSBpZD1mCitESVYJIGlkPWgKK0RJVgkg
aWQ9aQorRElWCSBpZD1nCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZworRElWCSBp
ZD1pCitESVYJIGlkPWgKK0RJVgkgaWQ9ZgorRElWCSBpZD1kCitESVYJIGlkPWUKK0RJVgkgaWQ9
YworRElWCSBpZD1iCitESVYJIGlkPWEKKworVGVzdCBmb3IgTXVsdGlwbGUgU2hhZG93Um9vdHMu
CitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWQKKwlESVYJIGlkPWIKKwlESVYJ
IGlkPWYKKwlESVYJIGlkPWMKKwlESVYJIGlkPWUKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJ
VgkgaWQ9YQorRElWCSBpZD1kCitESVYJIGlkPWIKK0RJVgkgaWQ9ZgorRElWCSBpZD1jCitESVYJ
IGlkPWUKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1lCitESVYJIGlkPWMKK0RJVgkg
aWQ9ZgorRElWCSBpZD1iCitESVYJIGlkPWQKK0RJVgkgaWQ9YQorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTc4YWVlYzc1MmYxNmNmYmZlY2VlYjc3NmEwZjAyNzExNjI1ZTU1ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2Fs
Lmh0bWwKQEAgLTAsMCArMSwxNjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlRlc3RzIGZvciBSZWlmaWVkIERPTSBUcmVlIFRyYXZlcnNhbCBBUElzLiBDYW4gb25seSBy
dW4gd2l0aGluIERSVCIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gZHVtcE5vZGUo
bm9kZSkKK3sKKyAgICB2YXIgb3V0cHV0ID0gbm9kZS5ub2RlTmFtZSArICJcdCI7CisgICAgaWYg
KG5vZGUuaWQpCisgICAgICAgIG91dHB1dCArPSAnIGlkPScgKyBub2RlLmlkOworICAgIGlmIChu
b2RlLmNsYXNzTmFtZSkKKyAgICAgICAgb3V0cHV0ICs9ICcgY2xhc3M9JyArIG5vZGUuY2xhc3NO
YW1lOworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGR1bXBSZWlmaWVkVHJlZShu
b2RlLCBpbmRlbnQpCit7CisgICAgaW5kZW50ID0gaW5kZW50IHx8ICIiOworICAgIHZhciBvdXRw
dXQgPSBpbmRlbnQgKyBkdW1wTm9kZShub2RlKSArICJcbiI7CisgICAgdmFyIGNoaWxkOworICAg
IGZvciAoY2hpbGQgPSBpbnRlcm5hbHMuZmlyc3RDaGlsZEluUmVpZmllZFRyZWUobm9kZSk7IGNo
aWxkOyBjaGlsZCA9IGludGVybmFscy5uZXh0U2libGluZ0luUmVpZmllZFRyZWUoY2hpbGQpKQor
ICAgICAgICAgb3V0cHV0ICs9IGR1bXBSZWlmaWVkVHJlZShjaGlsZCwgaW5kZW50ICsgIlx0Iik7
CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworZnVuY3Rpb24gbGFzdE5vZGVJblJlaWZpZWRUcmVl
KHJvb3QpCit7CisgICAgdmFyIGxhc3ROb2RlID0gcm9vdDsKKyAgICB3aGlsZSAoaW50ZXJuYWxz
Lmxhc3RDaGlsZEluUmVpZmllZFRyZWUobGFzdE5vZGUpKQorICAgICAgICBsYXN0Tm9kZSA9IGlu
dGVybmFscy5sYXN0Q2hpbGRJblJlaWZpZWRUcmVlKGxhc3ROb2RlKTsKKyAgICByZXR1cm4gbGFz
dE5vZGU7Cit9CisKK2Z1bmN0aW9uIHNob3dSZWlmaWVkVHJlZUJ5VHJhdmVyc2luZ0luRm93YXJk
KHJvb3QpCit7CisgICAgdmFyIG5vZGUgPSByb290OworICAgIHZhciBsYXN0ID0gbGFzdE5vZGVJ
blJlaWZpZWRUcmVlKHJvb3QpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGRlYnVnKGR1
bXBOb2RlKG5vZGUpKTsKKyAgICAgICAgaWYgKG5vZGUgPT0gbGFzdCkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBub2RlID0gaW50ZXJuYWxzLnRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRU
cmVlKG5vZGUpOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJz
aW5nSW5CYWNrd2FyZChyb290KQoreworICAgIHZhciBub2RlID0gbGFzdE5vZGVJblJlaWZpZWRU
cmVlKHJvb3QpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGRlYnVnKGR1bXBOb2RlKG5v
ZGUpKTsKKyAgICAgICAgaWYgKG5vZGUgPT0gcm9vdCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBub2RlID0gaW50ZXJuYWxzLnRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVkVHJlZShu
b2RlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3dSZWlmaWVkVHJlZShub2RlKQoreworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgZG9jdW1lbnQuYm9keS5vZmZz
ZXRMZWZ0OworCisgICAgZGVidWcoJ1JlaWZpZWQgVHJlZTonKTsKKyAgICBkZWJ1ZyhkdW1wUmVp
ZmllZFRyZWUobm9kZSkpOworCisgICAgZGVidWcoJ1RyYXZlcnNlIGluIGZvcndhcmQuJyk7Cisg
ICAgc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5nSW5Gb3dhcmQobm9kZSk7CisKKyAgICBkZWJ1
ZygnVHJhdmVyc2UgaW4gYmFja3dhcmQuJyk7CisgICAgc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJz
aW5nSW5CYWNrd2FyZChub2RlKTsKKworICAgIGRlYnVnKCcnKTsKK30KKworZGVidWcoJ1NoYWRv
d1Jvb3Qgc2hvdWxkIGJlIHVzZWQuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdjJ30pKSk7CisKK2RlYnVnKCdBIGNvbnRlbnQgZWxlbWVudCBzaG91bGQgc2Vs
ZWN0IGxpZ2h0IGNoaWxkcmVuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdjJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSkp
OworCitkZWJ1ZygnVGVzdCBmb3IgY29udGVudCBlbGVtZW50IHNlbGVjdG9yLicpOworc2hvd1Jl
aWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3Qn
OiAnLmQnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJ30pKSk7CisKK2RlYnVnKCdMaWdodCBjaGls
ZHJlbiBzaG91bGQgYmUgc2VsZWN0ZWQgb25seSBhdCBvbmNlLicpOworc2hvd1JlaWZpZWRUcmVl
KAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmQnfSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdlJ30pKSk7CisKK2RlYnVnKCdBIGNvbnRlbnQgZWxlbWVudCBjYW4g
aGF2ZSBmYWxsYmFjayBlbGVtZW50cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy56J30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmMSd9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2YyJ30pKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdjJ30pKSk7CisKK2RlYnVnKCdGYWxsYmFjayBlbGVtZW50cyBzaG91bGQgbm90IGJlIHVz
ZWQgaWYgPGNvbnRlbnQ+IGVsZW1lbnQgc2VsZWN0cyBhbnkgZWxlbWVudHMuJyk7CitzaG93UmVp
ZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAg
ICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6
ICcuYyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnZjEnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmMid9KSkpLAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSkpOworCitkZWJ1ZygnVGVzdCBmb3IgTmVz
dGVkIFNoYWRvd1Jvb3RzLicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2InfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2NvbnRlbnQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdlJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnZid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnZyd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdoJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaSd9
KSkpOworCitkZWJ1ZygnVGVzdCBmb3IgTXVsdGlwbGUgU2hhZG93Um9vdHMuJyk7CitzaG93UmVp
ZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAg
ICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSksCisg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2Qn
fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
ZSd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30pKSk7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApp
bmRleCAyY2IzNmQ1MTdjZDQ1ODQyMjM1ZmZmZDVjMzg0ZGE5NzQ2MzYwZjRkLi4yN2YzN2QxMmFi
ZmU4NjkzOGM0YTdkMjNkZmUzZjVhZTU3YjE2NmI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBl
ZApAQCAtMTk0MSw2ICsxOTQxLDcgQEAgZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1v
dXRzaWRlLXNoYWRvdy1zdHlsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50
LWluLW1lZGlhLWVsZW1lbnQuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1p
bi1tZXRlci1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9nZXQtZWxlbWVudC1ieS1pZC1p
bi1zaGFkb3ctcm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNh
bC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3Qt
YXR0YWNoZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggNGIwODFmZmY5OWNiMjFi
Y2MyNTNmZDUwYjJlZGFhOWY4MmIwZGIxZi4uMjVhZmI3ODE2ZTcyMGVmY2I3M2E5ZjllZjAzYmI2
Yzk2NzQ0MTlhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xNzQsNiArMTc0LDcgQEAg
ZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3cuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qt
cmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0
Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctY29udGVudC1jcmFzaC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBiOWUzNDg3YjQ3YTE4NDM4Njk4ZmM0
MmJjODNlNjczMmU1NDdkN2U2Li4zNzc3NmRjNjdkZDY5YzE1MTQ4YmU0ODcxODE5YmYxZGQzZTMy
NmVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ2NCw2ICsxNDY0LDcgQEAgZmFz
dC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy1zdHlsZS5odG1sCiBm
YXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWluLW1lZGlhLWVsZW1lbnQuaHRtbAogZmFz
dC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1tZXRlci1lbGVtZW50Lmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9nZXQtZWxlbWVudC1ieS1pZC1pbi1zaGFkb3ctcm9vdC5odG1sCitmYXN0L2Rv
bS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYWN0aXZlRWxlbWVudC5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCAxMjE2YjE5MmFiODM1ZGE2NjI2Nzk1NjY0
N2UxYzVhY2U5YzlmOTgzLi4zM2RmYzIxMTk5YTQyOTZlNDViZGI5YmEzZmM4ZTE1MTU5NTg5MmE1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5NzUsNiArMTk3NSw3
IEBAIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3cuaHRtbAog
ZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1tZWRpYS1lbGVtZW50Lmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWV0ZXItZWxlbWVudC5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvZ2V0LWVsZW1lbnQtYnktaWQtaW4tc2hhZG93LXJvb3QuaHRtbAorZmFzdC9k
b20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFjdGl2ZUVsZW1lbnQuaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvU2tpcHBlZAppbmRleCA4OWM2NTc2NjhlYjdhYTJiNTMyZWQ3OGZiNDY2YTY2NjBk
YTJmYTU3Li4wYjU0Y2YxMGZhZTA1NWVjYjU5MjdlN2I0MDYyZWYyNDcyNjIyODVmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTA4NSw2ICsxMDg1LDcgQEAgZmFzdC9kb20vc2hhZG93
L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29u
dGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93LXN0eWxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9j
b250ZW50LWVsZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29u
dGVudC1lbGVtZW50LWluLW1ldGVyLWVsZW1lbnQuaHRtbAorZmFzdC9kb20vc2hhZG93L3JlaWZp
ZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFw
aS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yb290LWFjdGl2ZUVsZW1lbnQuaHRtbApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IGExNzFmZmIyZTBmNjkzNjM4YjYwMzE2YzBkYWIxYTU3MjdmOGYy
ZmIuLjk0OWY5OWU2YWI5NWMyNzlmNTVkYmViOWFmZDdiOTEwMjg2NGM3ZTYgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMy0xNSAg
SGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IEFkZCBSZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBpbnRlcm5hbCBBUElzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW50ZXJuYWwgQVBJcyB3
aGljaCBjYW4gYmUgdXNlZCB0byB0cmF2ZXJzZSBSZWlmaWVkIERPTSB0cmVlLCB3aGljaCBpcwor
ICAgICAgICBhIHJlc3VsdCBvZiBub2RlIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0gZXhwbGFpbmVk
IGluIFNoYWRvdyBET00gc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy93ZWJj
b21wb25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5odG1sCisKKyAgICAgICAg
RXZlcnkgcHVibGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIFJlaWZpZWRUcmVlVHJhdmVyc2FsIGFy
ZSBzdGF0aWMKKyAgICAgICAgZnVuY3Rpb25zIGFuZCBhcmUgbmFtZWQgaW4gYSBzaW1pbGFyIHdh
eSB0byBvbmVzIGRlZmluZWQgaW4gV2ViQ29yZTo6Tm9kZSBjbGFzcy4KKyAgICAgICAgVGhlIG9u
bHkgZGlmZmVyZW5jZSBpcyB0aGF0IFJlaWZpZWRUcmVlVHJhdmVyc2FsIEFQSXMgY29uc2lkZXIg
c2hhZG93CisgICAgICAgIGhvc3RzIGFuZCBhbHNvIHRyYXZlcnNlIG5vZGVzIGlzIFNoYWRvdyBE
T00gc3VidHJlZXMsIGNyb3NzaW5nIHNoYWRvdydzIHVwcGVyIGFuZCBsb3dlciBib3VuZGFyeQor
ICAgICAgICB0cmFuc3BhcmVudGx5LgorCisgICAgICAgIFRoZXJlIGlzIG5vIGFjdHVhbCBjbGll
bnQgd2hpY2ggdXNlcyB0aGVzZSBBUElzLiBGb2xsb3ctdXAgcGF0Y2hlcyBmb3IgRm9jdXNOYXZp
Z2F0aW9uCisgICAgICAgIGFuZCBFdmVudERpc3BhdGNoZXIgd2lsbCB1c2UgdGhlIEFQSXMgc28g
dGhhdCB0aGV5IGNhbiB0cmF2ZXJzZSBub2RlIGluIHJlaWZpZWQgdHJlZSBvcmRlci4KKworICAg
ICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDMtMjAgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgd3RmL1BsYXRmb3Jt
LmggZnJvbSBKYXZhU2NyaXB0Q29yZSB0byBTb3VyY2UvV1RGL3d0Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133178</attachid>
            <date>2012-03-21 20:40:32 -0700</date>
            <delta_ts>2012-03-22 23:45:05 -0700</delta_ts>
            <desc>fix win build hopefully.</desc>
            <filename>bug-79197-20120322124030.patch</filename>
            <type>text/plain</type>
            <size>59530</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM2YzQ2YzhjZDUzODcw
OWI5OWMwYzEwZjY4MTU4ZTA0YjQwYjkwNy4uMjlkZjkxOGIxODNmZTA3YTI3MDA2YzQ5ZjMxMzQx
OGQ0NjFhNjE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTAzLTE1ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisgICAg
ICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQgaW4g
U2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBv
bmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBFdmVy
eSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJlIHN0
YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRv
IG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBk
aWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBzaGFk
b3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERPTSBz
dWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5CisgICAg
ICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVudCB3
aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmlnYXRp
b24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0aGF0
IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NoYWRvd0hvc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6c2hhZG93VHJlZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dUcmVl
T2ZQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZpcnN0
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkV2l0
aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VMaWdodENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxp
bmdJbkN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
Ojp0cmF2ZXJzZUJhY2tpbmdUb1lvdW5nZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjplc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU1lRXNjYXBpbmdG
YWxsYmFja0NvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
OjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
YXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZU1heWJlQmFja1RvSW5zZXJ0aW9uUG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVJ
bkN1cnJlbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
YXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmFkanVzdGVkUGFyZW50Tm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRD
cm9zc2luZ1VwcGVyQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2
ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRU
cmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91
bmRhcnkpOgorICAgICAgICAqIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVpZmllZFRyZWVUcmF2ZXJzYWwpOgorICAgICAg
ICAqIGRvbS9TaGFkb3dUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omlu
c2VydGlvblBvaW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnNlbGVjdGlv
bkZvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dUcmVlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b250ZW50U2VsZWN0b3I6OmZpbmRGb3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWN0aW9uU2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKToKKyAgICAgICAgKEhU
TUxDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2li
bGluZ0luUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6bGFzdENoaWxkSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6dHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDMtMjEgIFhpbmduYW4gV2FuZyAgPHhp
bmduYW4ud2FuZ0BpbnRlbC5jb20+CiAKICAgICAgICAgV2ViIGF1ZGlvIGxheW91dCB0ZXN0IGZh
aWxlZCBpbiBkZWJ1ZyB3aXRoIGFuIEFTU0VSVCBlcnJvciBpbiBSZXZlcmJDb252b2x2ZXJTdGFn
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBjYTNmOGZkOTFiY2EwMGVjYzI1NGI0YjI1ZmM1Y2NmNTAyNGI2
NDUxLi4wZmFkMTg3NTM3OWQ4NjhhMWIxYjU3MTRhMGY1NzRhMDBkYmUyN2YxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDMtMjEgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBBZGQgUmVpZmllZCBET00gVHJlZSB0cmF2
ZXJzYWwgaW50ZXJuYWwgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc5MTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGludGVybmFsIEFQSXMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdHJhdmVy
c2UgUmVpZmllZCBET00gdHJlZSwgd2hpY2ggaXMKKyAgICAgICAgYSByZXN1bHQgb2Ygbm9kZSBk
aXN0cmlidXRpb24gYWxnb3JpdGhtIGV4cGxhaW5lZCBpbiBTaGFkb3cgRE9NIHNwZWMuCisgICAg
ICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAvc3Bl
Yy9zaGFkb3cvaW5kZXguaHRtbAorCisgICAgICAgIEV2ZXJ5IHB1YmxpYyBmdW5jdGlvbnMgZGVm
aW5lZCBpbiBSZWlmaWVkVHJlZVRyYXZlcnNhbCBhcmUgc3RhdGljCisgICAgICAgIGZ1bmN0aW9u
cyBhbmQgYXJlIG5hbWVkIGluIGEgc2ltaWxhciB3YXkgdG8gb25lcyBkZWZpbmVkIGluIFdlYkNv
cmU6Ok5vZGUgY2xhc3MuCisgICAgICAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBSZWlm
aWVkVHJlZVRyYXZlcnNhbCBBUElzIGNvbnNpZGVyIHNoYWRvdworICAgICAgICBob3N0cyBhbmQg
YWxzbyB0cmF2ZXJzZSBub2RlcyBpcyBTaGFkb3cgRE9NIHN1YnRyZWVzLCBjcm9zc2luZyBzaGFk
b3cncyB1cHBlciBhbmQgbG93ZXIgYm91bmRhcnkKKyAgICAgICAgdHJhbnNwYXJlbnRseS4KKwor
ICAgICAgICBUaGVyZSBpcyBubyBhY3R1YWwgY2xpZW50IHdoaWNoIHVzZXMgdGhlc2UgQVBJcy4g
Rm9sbG93LXVwIHBhdGNoZXMgZm9yIEZvY3VzTmF2aWdhdGlvbgorICAgICAgICBhbmQgRXZlbnRE
aXNwYXRjaGVyIHdpbGwgdXNlIHRoZSBBUElzIHNvIHRoYXQgdGhleSBjYW4gdHJhdmVyc2Ugbm9k
ZSBpbiByZWlmaWVkIHRyZWUgb3JkZXIuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6Cisg
ICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTAzLTIxICBKb2NlbHluIFR1
cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBXZWJH
cmFwaGljc0xheWVyOiBVbnRpZSB0aGUgbGF5ZXIgdXBkYXRlcyBhbmQgdGlsZSB1cGRhdGVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkNDNiZWEzZGM4YjljNTBkYmUxODIxZGM5YWQ3MTg2OWRj
OThmODVhLi40NGNkNmJmYTUyZTkxMzllNGViYjFiYjM2ZmYwMzk0YTVjNDNmZmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNjEzLDYgKzYxMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAg
ICBkb20vUmFuZ2UuY3BwCiAgICAgZG9tL1JhbmdlRXhjZXB0aW9uLmNwcAogICAgIGRvbS9SZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAKKyAgICBkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3Bw
CiAgICAgZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwCiAgICAgZG9tL1NjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5jcHAKICAgICBkb20vU2NyaXB0RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDQ3NGZjZGYyZjBiY2IwM2Q3M2ZhOTM0YzQ3MTQ5ZTNlYTk5YTQxNTku
LjMyMTZhZDU0OTMzODEwNjAzYzc0NmI0NTA5NjlhMmQ2ZGZjNzE4MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtMTkwOSw2ICsxOTA5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20v
UmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRy
ZWVUcmF2ZXJzYWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1JlbmRlcmVkRG9jdW1lbnRNYXJr
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vU2NvcGVkRXZlbnRRdWV1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDM4NDAy
NjY2NDFlNTg2OGFkNDdhY2JkNzZiZjUwOGM1ZDJmMzI2ZGIuLmFhYjc4NTFkNmE0N2YxMTdmZTFl
NTZhMjhhMGE2NDlmM2U0NTlkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTkxLDYgKzU5MSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAgXAogICAgIGRvbS9SYXdEYXRh
RG9jdW1lbnRQYXJzZXIuaCBcCiAgICAgZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCBc
CisgICAgZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL1Njb3BlZEV2ZW50
UXVldWUuY3BwIFwKICAgICBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBcCiAg
ICAgZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgXApAQCAtMTcxOCw2ICsxNzE5LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgZG9tL1F1YWxpZmllZE5hbWUuaCBcCiAgICAgZG9tL1Jhbmdl
LmggXAogICAgIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIFwKKyAgICBkb20vUmVpZmll
ZFRyZWVUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL1JlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBcCiAg
ICAgZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIFwKICAgICBkb20vU2NyaXB0RWxl
bWVudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzE3ODFhMjdjNmU4NzU1ZDc3N2M4OWQ4
OTYwN2IxYTE2OWExNWI3ZS4uNDJjZmNiMWEwM2Y3YmY1Njg4NmYwOWQ1NjkyNTYxMDQyMTUwMjg0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTYwNyw2ICs2MDcsMTEgQEAgX19aTjdXZWJDb3Jl
MjBOb2RlUmVuZGVyaW5nQ29udGV4dEMxRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTIwTm9kZVJl
bmRlcmluZ0NvbnRleHREMUV2CiBfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjRj
cmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnRFUDdOU0V2ZW50UDZOU1ZpZXcKIF9fWk43V2ViQ29yZTIw
UGxhdGZvcm1FdmVudEZhY3RvcnkyN2NyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudEVQN05TRXZl
bnQKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxMW5leHRTaWJsaW5nRVBLTlNf
NE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMjB0cmF2ZXJzZVByZXZp
b3VzTm9kZUVQS05TXzROb2RlRQorX19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDls
YXN0Q2hpbGRFUEtOU180Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwx
NnRyYXZlcnNlTmV4dE5vZGVFUEtOU180Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVU
cmF2ZXJzYWwxMGZpcnN0Q2hpbGRFUEtOU180Tm9kZUUKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1i
ZWRkZWRPYmplY3QzMHNldFNob3dzQ3Jhc2hlZFBsdWdpbkluZGljYXRvckV2CiBfX1pON1dlYkNv
cmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTFzZXRNaW1lVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxN3NldEhUVFBTdGF0dXNDb2RlRWkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCA2ZDMxMjIwOTE1OWVkOTUzNTRiMzUwYTQ4ZWNjZmYyYjg2NGQ5ZjAz
Li5hMmY4ZjViZTM5ZThkNDc5YTBiM2E4NTkwZThiMmVhZjdjZTliMmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC02MjUsNiArNjI1LDcgQEAKICAgICAgICAgICAgICdkb20vUmFuZ2UuaCcsCiAgICAg
ICAgICAgICAnZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oJywKICAgICAgICAgICAgICdkb20vUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCcsCisgICAgICAgICAgICAnZG9tL1JlaWZpZWRUcmVlVHJh
dmVyc2FsLmgnLAogICAgICAgICAgICAgJ2RvbS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmgnLAog
ICAgICAgICAgICAgJ2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgnLAogICAgICAgICAgICAg
J2RvbS9TY3JpcHRSdW5uZXIuaCcsCkBAIC01MjA0LDYgKzUyMDUsOCBAQAogICAgICAgICAgICAg
J2RvbS9SYW5nZUV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vUmF3RGF0YURvY3VtZW50
UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAn
LAorICAgICAgICAgICAgJ2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAnLAorICAgICAgICAg
ICAgJ2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oJywKICAgICAgICAgICAgICdkb20vUmVxdWVz
dEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50
UXVldWUuY3BwJywKICAgICAgICAgICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAw
OTdjZDAyMzhmYTIyZWVjYTdiZjZkYmVhODM5YmQ5ZDM0YzU3OTRhLi41NWIxMjRiMjczM2M0NTlm
ZDkwMjIxMDBiNTM4YzYwN2M1YzYwMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzU2LDYgKzEzNTYsOCBAQAogCQk0OUZG
QkYxRDExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYxQzExQzg1NTBFMDA2
QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi87IH07CiAJCTQ5RkZCRjNGMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5o
ICovOyB9OwogCQk0OUZGQkY0MDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNFMTFDOTNF
RTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovOyB9OworCQk0QTAxM0QyOTE1MTJGRDc3MDBF
MUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwMTNEMjcxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsLmNwcCAqLzsgfTsKKwkJNEEwMTNEMkExNTEyRkQ3NzAwRTFFNjEzIC8q
IFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0QTAxM0QyODE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2
ZXJzYWwuaCAqLzsgfTsKIAkJNEEwREEyRkUxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTBEQTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCAqLzsgfTsKIAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
REEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMUU3MTkwMTRFMTAx
RTQwMDYyNkY5RCAvKiBKU0hUTUxDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTFFNzE4RTE0RTEwMUU0MDA2MjZGOUQgLyog
SlNIVE1MQ29udGVudEVsZW1lbnQuY3BwICovOyB9OwpAQCAtODI4OCw2ICs4MjkwLDggQEAKIAkJ
NDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdM
TGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlGRkJGM0UxMUM5M0VFMzAw
NkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTAx
M0QyNzE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTAxM0QyODE1MTJGRDc3MDBFMUU2MTMgLyog
UmVpZmllZFRyZWVUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVpZmllZFRyZWVUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEw
REEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEg
LyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTFFNzE4RTE0RTEwMUU0MDA2MjZGOUQgLyogSlNIVE1MQ29udGVudEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQ29udGVudEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNDksNiArMjEwNTMsOCBAQAog
CQkJCUE4NEQ4MjdCMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAq
LywKIAkJCQk4NTAzMUIzNTBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuY3BwICovLAogCQkJCTg1MDMxQjM2MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lci5oICovLAorCQkJCTRBMDEzRDI3MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVk
VHJlZVRyYXZlcnNhbC5jcHAgKi8sCisJCQkJNEEwMTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJl
aWZpZWRUcmVlVHJhdmVyc2FsLmggKi8sCiAJCQkJQTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8q
IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAqLywKIAkJCQk0OTk4QUVDNDEzRjlEMEVBMDA5MEIx
QUEgLyogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCAqLywKIAkJCQk0OTk4QUVDNTEz
RjlEMEVBMDA5MEIxQUEgLyogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsICovLApA
QCAtMjM3NDksNiArMjM3NTUsNyBAQAogCQkJCUJDQUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBS
ZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRDMEE0NEVGQzcwMEY5OTJFMCAvKiBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkQwRDAw
NkMxRDAwRUY2RjI2IC8qIFJlZ3VsYXJFeHByZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
QTAxM0QyQTE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzMzA5RTAxMDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVDU1NQcm9wZXJ0
eUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1RjQzRiAv
KiBSZW1vdmVGb3JtYXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNTA5OUU2
NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY4
OTUsNiArMjY5MDIsNyBAQAogCQkJCUJDQUI0MTgxMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCNEIwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTJDMEQwMDZD
MUQwMEVGNkYyNiAvKiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
QTAxM0QyOTE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTMzMDlFMDAwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZUNTU1Byb3Bl
cnR5Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMDZDMEQ5MDBDRkQxMTQ2MDA2NUY0
M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUw
NDA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40Y2NiNTAxNWY2MzRlZWQ5MjU4NDUxODFlY2ZhZDJhMDA5ZGE1MjU0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcApAQCAtMCww
ICsxLDMyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWlmaWVkVHJlZVRy
YXZlcnNhbC5oIgorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb250ZW50
U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgorI2luY2x1ZGUgIlNoYWRv
d1RyZWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNT
aGFkb3dIb3N0KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+
aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpOworfQor
CitzdGF0aWMgaW5saW5lIFNoYWRvd1RyZWUqIHNoYWRvd1RyZWVGb3IoY29uc3QgTm9kZSogbm9k
ZSkKK3sKKyAgICBpZiAobm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJl
dHVybiB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1RyZWUoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
c3RhdGljIGlubGluZSBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlT2ZQYXJlbnQoY29uc3QgTm9kZSog
bm9kZSkKK3sKKyAgICBpZiAobm9kZSAmJiBub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgIHJl
dHVybiBzaGFkb3dUcmVlRm9yKG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgcmV0dXJuIDA7Cit9
CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpmaXJzdENoaWxkKGNvbnN0IE5vZGUqIG5v
ZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VDaGls
ZChub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQpOworICAgIEFTU0VS
VCghY2hpbGQgfHwgIWNoaWxkLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIGNoaWxkOwor
fQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkKGNvbnN0IE5vZGUqIG5v
ZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VDaGls
ZChub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBBU1NF
UlQoIWNoaWxkIHx8ICFjaGlsZC0+aXNTaGFkb3dSb290KCkpOworICAgIHJldHVybiBjaGlsZDsK
K30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZFdpdGhvdXRDcm9zc2lu
Z1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7Cisg
ICAgTm9kZSogY2hpbGQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgUmVpZmllZFRyZWVU
cmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hpbGQt
PmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUqIFJlaWZpZWRU
cmVlVHJhdmVyc2FsOjp0cmF2ZXJzZUNoaWxkKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVl
VHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAg
Ly8gRklYTUU6IEFkZCBhbiBhc3NlcnRpb24gb25jZSBJbnNlcnRpb25Qb2ludCBoYXZlIGlzQWN0
aXZlKCkgZnVuY3Rpb24uCisgICAgLy8gQVNTRVJUKCFpc0luc2VydGlvblBvaW50KG5vZGUpIHx8
ICF0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW5vZGUt
PmlzU2hhZG93Um9vdCgpKTsKKyAgICBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlID0gc2hhZG93VHJl
ZUZvcihub2RlKTsKKyAgICBpZiAoc2hhZG93VHJlZSAmJiBzaGFkb3dUcmVlLT5oYXNTaGFkb3dS
b290KCkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4oc2hhZG93VHJlZS0+
eW91bmdlc3RTaGFkb3dSb290KCksIGRpcmVjdGlvbik7CisgICAgTm9kZSogY2hpbGQgPSB0cmF2
ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9
CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4oY29u
c3QgTm9kZSogbm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQor
eworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoTm9kZSogY2hpbGQgPSAoZGlyZWN0aW9uID09
IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IG5vZGUtPmZpcnN0Q2hpbGQo
KSA6IG5vZGUtPmxhc3RDaGlsZCgpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTWUoY2hpbGQs
IGRpcmVjdGlvbik7CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVy
c2FsOjp0cmF2ZXJzZU1lKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKGlzSW5zZXJ0
aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0
KiBzZWxlY3Rpb25MaXN0ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+c2VsZWN0aW9ucygpOwor
ICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IChkaXJlY3Rpb24g
PT0gUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9uTGlzdC0+
Zmlyc3QoKSA6IHNlbGVjdGlvbkxpc3QtPmxhc3QoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJh
dmVyc2VNZShzZWxlY3Rpb24tPm5vZGUoKSwgZGlyZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIHRy
YXZlcnNlTGlnaHRDaGlsZHJlbihub2RlLCBkaXJlY3Rpb24pOworICAgIH0KKyAgICByZXR1cm4g
Y29uc3RfY2FzdDxOb2RlKj4obm9kZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2Fs
OjpuZXh0U2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAg
ICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyAgICBOb2RlKiBuZXh0ID0gdHJhdmVy
c2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBSZWlmaWVkVHJlZVRyYXZl
cnNhbERpcmVjdGlvbkZvcndhcmQpOworICAgIEFTU0VSVCghbmV4dCB8fCAhbmV4dC0+aXNTaGFk
b3dSb290KCkpOworICAgIHJldHVybiBuZXh0OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZl
cnNhbDo6cHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5v
ZGUpOworICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIE5vZGUqIG5leHQg
PSB0cmF2ZXJzZVNpYmxpbmdNYXliZUJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFJlaWZpZWRU
cmVlVHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOworICAgIEFTU0VSVCghbmV4dCB8fCAhbmV4
dC0+aXNTaGFkb3dSb290KCkpOworICAgIHJldHVybiBuZXh0OworfQorCitOb2RlKiBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChj
b25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24p
Cit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFk
b3dUcmVlT2ZQYXJlbnQobm9kZSk7CisgICAgaWYgKCFzaGFkb3dUcmVlKQorICAgICAgICByZXR1
cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOworICAgIEhU
TUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Io
bm9kZSk7CisgICAgaWYgKCFzZWxlY3Rpb24pCisgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxp
bmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7CisgICAgaWYgKEhUTUxDb250ZW50U2Vs
ZWN0aW9uKiBuZXh0U2VsZWN0aW9uID0gKGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNh
bERpcmVjdGlvbkZvcndhcmQgPyBzZWxlY3Rpb24tPm5leHQoKSA6IHNlbGVjdGlvbi0+cHJldmlv
dXMoKSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZU1lKG5leHRTZWxlY3Rpb24tPm5vZGUoKSwg
ZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nTWF5YmVCYWNrVG9JbnNlcnRp
b25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCksIGRpcmVjdGlvbik7Cit9CisKK05v
ZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNv
bnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikK
K3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKE5vZGUqIG5leHQgPSAoZGlyZWN0aW9uID09
IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IG5vZGUtPm5leHRTaWJsaW5n
KCkgOiBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZU1l
KG5leHQsIGRpcmVjdGlvbik7CisgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZUJhY2tpbmdU
b1lvdW5nZXJTaGFkb3dSb290KG5vZGUsIGRpcmVjdGlvbikpCisgICAgICAgIHJldHVybiBuZXh0
OworICAgIHJldHVybiBlc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KG5vZGUsIGRpcmVjdGlv
bik7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZUJhY2tpbmdUb1lv
dW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKG5vZGUtPnBh
cmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKSB7CisgICAg
ICAgIFNoYWRvd1Jvb3QqIHBhcmVudFNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3Qobm9kZS0+cGFy
ZW50Tm9kZSgpKTsKKyAgICAgICAgaWYgKCFwYXJlbnRTaGFkb3dSb290LT5pc1lvdW5nZXN0KCkp
IHsKKyAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlvblBvaW50ID0g
cGFyZW50U2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAgICAgICAgICAgQVNTRVJUKGFzc2ln
bmVkSW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0lu
Q3VycmVudFRyZWUoYXNzaWduZWRJbnNlcnRpb25Qb2ludCwgZGlyZWN0aW9uKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6
OmVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSwgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIEFTU0VSVChub2RlKTsKKyAg
ICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIGlzSW5zZXJ0aW9uUG9pbnQobm9kZS0+cGFyZW50
Tm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ01heWJlQmFja1RvSW5zZXJ0
aW9uUG9pbnQobm9kZS0+cGFyZW50Tm9kZSgpLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOwor
fQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VNZUVzY2FwaW5nRmFsbGJh
Y2tDb250ZW50cyhjb25zdCBOb2RlKiBub2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3Nl
ZCkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkp
CisgICAgICAgIHJldHVybiBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2Rl
LCBjcm9zc2VkKTsKKyAgICBjcm9zc2VkID0gTm90Q3Jvc3NlZDsKKyAgICByZXR1cm4gY29uc3Rf
Y2FzdDxOb2RlKj4obm9kZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJl
bnROb2RlKGNvbnN0IE5vZGUqIG5vZGUsIENyb3NzZWRVcHBlckJvdW5kYXJ5JiBjcm9zc2VkKQor
eworICAgIEFTU0VSVChub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9vdCgpKTsK
KyAgICAvLyBGSVhNRTogQWRkIGFuIGFzc2VydGlvbiBvbmNlIEluc2VydGlvblBvaW50IGhhdmUg
aXNBY3RpdmUoKSBmdW5jdGlvbi4KKyAgICAvLyBBU1NFUlQoIWlzSW5zZXJ0aW9uUG9pbnQobm9k
ZSkgfHwgIXRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCkpOworICAgIHJldHVybiBw
YXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBjcm9zc2VkKTsKK30KKwor
Tm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGUoY29uc3QgTm9kZSogbm9kZSkK
K3sKKyAgICAvLyBGSVhNRTogRG8gbm90IHVzZSAndW5zZWQnIHBhcmFtZXRlci4KKyAgICBDcm9z
c2VkVXBwZXJCb3VuZGFyeSB1bnVzZWQ7CisgICAgcmV0dXJuIHBhcmVudE5vZGUobm9kZSwgdW51
c2VkKTsKK30KKworCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZVdpdGhv
dXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
bm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgLy8gRklYTUU6
IEFkZCBhbiBhc3NlcnRpb24gb25jZSBJbnNlcnRpb25Qb2ludCBoYXZlIGlzQWN0aXZlKCkgZnVu
Y3Rpb24uCisgICAgLy8gQVNTRVJUKCFpc0luc2VydGlvblBvaW50KG5vZGUpIHx8ICF0b0luc2Vy
dGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKTsKKyAgICBDcm9zc2VkVXBwZXJCb3VuZGFyeSBj
cm9zc2VkOworICAgIE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVNYXliZUJhY2tUb0luc2VydGlv
blBvaW50KG5vZGUsIGNyb3NzZWQpOworICAgIGlmIChjcm9zc2VkID09IENyb3NzZWQpCisgICAg
ICAgIHJldHVybiAwOworICAgIHJldHVybiBwYXJlbnQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVl
VHJhdmVyc2FsOjpwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2Rl
KiBub2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBpZiAoU2hhZG93
VHJlZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVPZlBhcmVudChub2RlKSkgeworICAgICAgICBp
ZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRvd1RyZWUtPnNlbGVjdGlv
bkZvcihub2RlKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlTWF5YmVCYWNrVG9JbnNl
cnRpb25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCksIGNyb3NzZWQpOworICAgIH0K
KyAgICByZXR1cm4gcGFyZW50Tm9kZUluQ3VycmVudFRyZWUobm9kZSwgY3Jvc3NlZCk7Cit9CisK
K05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlSW5DdXJyZW50VHJlZShjb25z
dCBOb2RlKiBub2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBpZiAo
Tm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChwYXJlbnQt
PmlzU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVCYWNrVG9Zb3Vu
Z2VyU2hhZG93Um9vdE9ySG9zdCh0b1NoYWRvd1Jvb3QocGFyZW50KSwgY3Jvc3NlZCk7CisgICAg
ICAgIHJldHVybiB0cmF2ZXJzZU1lRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzKHBhcmVudCwgY3Jv
c3NlZCk7CisgICAgfQorICAgIGNyb3NzZWQgPSBOb3RDcm9zc2VkOworICAgIHJldHVybiAwOwor
fQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUJhY2tUb1lvdW5nZXJT
aGFkb3dSb290T3JIb3N0KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIENyb3NzZWRVcHBl
ckJvdW5kYXJ5JiBjcm9zc2VkKQoreworICAgIEFTU0VSVChzaGFkb3dSb290KTsKKyAgICBpZiAo
c2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgIGNyb3NzZWQgPSBDcm9zc2VkOwor
ICAgICAgICByZXR1cm4gc2hhZG93Um9vdC0+aG9zdCgpOworICAgIH0KKyAgICBJbnNlcnRpb25Q
b2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsK
KyAgICBBU1NFUlQoYXNzaWduZWRJbnNlcnRpb25Qb2ludCk7CisgICAgcmV0dXJuIHBhcmVudE5v
ZGVNYXliZUJhY2tUb0luc2VydGlvblBvaW50KGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGNyb3Nz
ZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6YWRqdXN0ZWRQYXJlbnROb2Rl
KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBz
aGFkb3dUcmVlT2ZQYXJlbnQobm9kZSkpIHsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0
aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAgICAg
ICAgICByZXR1cm4gc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpOworICAgIH0KKyAgICBpZiAo
bm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93
Um9vdCA9IHRvU2hhZG93Um9vdChub2RlKTsKKyAgICAgICAgaWYgKCFzaGFkb3dSb290LT5pc1lv
dW5nZXN0KCkpIHsKKyAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlv
blBvaW50ID0gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAgICAgICAgICAgQVNTRVJUKGFz
c2lnbmVkSW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgcmV0dXJuIGFzc2lnbmVkSW5zZXJ0
aW9uUG9pbnQ7CisgICAgICAgIH0KKyAgICAgICAgc2hhZG93Um9vdC0+aG9zdCgpOworICAgIH0K
KyAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChO
b2RlKiBuZXh0ID0gZmlyc3RDaGlsZChub2RlKSkKKyAgICAgICAgcmV0dXJuIG5leHQ7CisgICAg
aWYgKE5vZGUqIG5leHQgPSBuZXh0U2libGluZyhub2RlKSkKKyAgICAgICAgcmV0dXJuIG5leHQ7
CisgICAgY29uc3QgTm9kZSogbiA9IG5vZGU7CisgICAgd2hpbGUgKG4gJiYgIW5leHRTaWJsaW5n
KG4pKQorICAgICAgICBuID0gcGFyZW50Tm9kZShuKTsKKyAgICBpZiAobikKKyAgICAgICAgcmV0
dXJuIG5leHRTaWJsaW5nKG4pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnko
Y29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIWlzU2hhZG93SG9zdChub2RlKSkgeworICAg
ICAgICBpZiAoTm9kZSogbmV4dCA9IHRyYXZlcnNlTGlnaHRDaGlsZHJlbihub2RlLCBSZWlmaWVk
VHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQpKQorICAgICAgICAgICAgcmV0dXJuIG5leHQ7
CisgICAgfQorICAgIGlmIChOb2RlKiBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSkpCisgICAgICAg
IHJldHVybiBuZXh0OworICAgIGNvbnN0IE5vZGUqIG4gPSBub2RlOworICAgIHdoaWxlIChuICYm
ICFuZXh0U2libGluZyhuKSkKKyAgICAgICAgbiA9IHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdV
cHBlckJvdW5kYXJ5KG4pOworICAgIGlmIChuKQorICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmco
bik7CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2
ZXJzZVByZXZpb3VzTm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiBuID0g
cHJldmlvdXNTaWJsaW5nKG5vZGUpKSB7CisgICAgICAgIHdoaWxlIChOb2RlKiBjaGlsZCA9IFJl
aWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGQobikpCisgICAgICAgICAgICBuID0gY2hpbGQ7
CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXR1cm4gcGFyZW50Tm9kZShub2RlKTsK
K30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlV2l0
aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChO
b2RlKiBuID0gcHJldmlvdXNTaWJsaW5nKG5vZGUpKSB7CisgICAgICAgIHdoaWxlICghaXNTaGFk
b3dIb3N0KG4pKSB7CisgICAgICAgICAgICBpZiAoTm9kZSogY2hpbGQgPSBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6dHJhdmVyc2VMaWdodENoaWxkcmVuKG4sIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uQmFja3dhcmQpKQorICAgICAgICAgICAgICAgIG4gPSBjaGlsZDsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bjsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5k
YXJ5KG5vZGUpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVpZmll
ZFRyZWVUcmF2ZXJzYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTI0M2Q0YzhmMGNjOTZjNzQ4ODgyMThhY2Y1
ZmIwN2IxYmJmMWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZp
ZWRUcmVlVHJhdmVyc2FsLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVpZmllZFRyZWVU
cmF2ZXJzYWxfaAorI2RlZmluZSBSZWlmaWVkVHJlZVRyYXZlcnNhbF9oCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CisKK2VudW0gUmVpZmll
ZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24geworICAgIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0
aW9uRm9yd2FyZCwKKyAgICBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkCit9
OworCisvLyBGSVhNRTogTWFrZSBzb21lIGZ1bmN0aW9ucyBpbmxpbmUgdG8gb3B0aW1pc2UgdGhl
IHBlcmZvcm1hbmNlLgorY2xhc3MgUmVpZmllZFRyZWVUcmF2ZXJzYWwgeworcHVibGljOgorICAg
IGVudW0gQ3Jvc3NlZFVwcGVyQm91bmRhcnkgeworICAgICAgICBOb3RDcm9zc2VkLAorICAgICAg
ICBDcm9zc2VkLAorICAgIH07CisKKyAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChjb25zdCBO
b2RlKik7CisgICAgc3RhdGljIE5vZGUqIGxhc3RDaGlsZChjb25zdCBOb2RlKik7CisgICAgc3Rh
dGljIE5vZGUqIGxhc3RDaGlsZFdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9k
ZSopOworCisgICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKyAgICBz
dGF0aWMgTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBO
b2RlKiBwYXJlbnROb2RlKGNvbnN0IE5vZGUqLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYpOworICAg
IHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSog
cGFyZW50Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCisg
ICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSopOworICAgIHN0YXRp
YyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzTm9kZShjb25zdCBOb2RlKik7CisKKyAgICAvLyBGSVhN
RTogQW4gJ2FkanVzdGVkJyBpcyBub3QgZ29vZCBuYW1lIGZvciBnZW5lcmFsIHVzZSBjYXNlLiBS
ZW5hbWUgdGhpcy4KKyAgICAvLyBEbyBub3Qgc2tpcCBlaXRoZXIgU2hhZG93Um9vdCBvciBJbnNl
cnRpb25Qb2ludC4KKyAgICBzdGF0aWMgTm9kZSogYWRqdXN0ZWRQYXJlbnROb2RlKGNvbnN0IE5v
ZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5n
VXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJl
dmlvdXNOb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKik7CisKK3By
aXZhdGU6CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlQ2hpbGQoY29uc3QgTm9kZSosIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VNZShj
b25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBO
b2RlKiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4oY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVy
c2FsRGlyZWN0aW9uKTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxpbmdNYXliZUJh
Y2tUb0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVj
dGlvbik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUoY29u
c3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKworICAgIHN0YXRpYyBO
b2RlKiB0cmF2ZXJzZUJhY2tpbmdUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqLCBSZWlm
aWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisgICAgc3RhdGljIE5vZGUqIGVzY2FwZUZhbGxi
YWNrQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0
aW9uKTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU1lRXNjYXBpbmdGYWxsYmFja0NvbnRl
bnRzKGNvbnN0IE5vZGUqLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYpOworCisgICAgc3RhdGljIE5v
ZGUqIHBhcmVudE5vZGVNYXliZUJhY2tUb0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqLCBDcm9z
c2VkVXBwZXJCb3VuZGFyeSYpOworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlSW5DdXJyZW50
VHJlZShjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9k
ZSogcGFyZW50Tm9kZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnN0IFNoYWRvd1Jv
b3QqLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKaW5kZXggMWJhZTNiZWE3ZTllYTBhYjllYjYy
NDZhZWYyZGUwODBjNmFjYzNkZi4uNmZiZTcyOTVkNjNhMzk4MWFhNWU4MGQyNGNjMDAzZTc3YWM4
NmE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZv
aWQgU2hhZG93VHJlZTo6ZGV0YWNoSG9zdChFbGVtZW50KiBob3N0KQogICAgIGhvc3QtPmRldGFj
aEFzTm9kZSgpOwogfQogCi1JbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9p
bnRGb3IoTm9kZSogbm9kZSkgY29uc3QKK0luc2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjppbnNl
cnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewogICAgIEFTU0VSVChub2Rl
ICYmIG5vZGUtPnBhcmVudE5vZGUoKSk7CiAKQEAgLTIyMSw2ICsyMjEsMTEgQEAgSW5zZXJ0aW9u
UG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0CiAg
ICAgcmV0dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgpOwogfQogCitIVE1MQ29udGVudFNlbGVj
dGlvbiogU2hhZG93VHJlZTo6c2VsZWN0aW9uRm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2VsZWN0b3IuZmluZEZvcihub2RlKTsKK30KKwogdm9pZCBTaGFkb3dU
cmVlOjpyZWF0dGFjaCgpCiB7CiAgICAgZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApp
bmRleCA1NzIyMjE4M2EyNjMxNzQ0MmY4OTA3ZmVlZTkyY2NhMzY3OGQyNzI2Li5lOWMyY2NhZGIw
Y2NmN2NkMTU1MGY0MGQzMjA4OWFmMGY3MzYyOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgK
QEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNl
cnRpb25Qb2ludDsKIGNsYXNzIFRyZWVTY29wZTsKK2NsYXNzIEhUTUxDb250ZW50U2VsZWN0aW9u
OwogCiBjbGFzcyBTaGFkb3dUcmVlIHsKIHB1YmxpYzoKQEAgLTc5LDcgKzgwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICB2b2lkIGhv
c3RDaGlsZHJlbkNoYW5nZWQoKTsKIAotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2lu
dEZvcihOb2RlKikgY29uc3Q7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9y
KGNvbnN0IE5vZGUqKSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9u
Rm9yKGNvbnN0IE5vZGUqKSBjb25zdDsKIAogICAgIEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVj
dG9yKCk7CiAgICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3RvciYgc2VsZWN0b3IoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5j
cHAKaW5kZXggOGI2MmQ1NmE3NzNkYjMwZGI2ZDMxOGFmNzNiZGQxYzBmOGRiYjQ2Ny4uMzFlNDE5
NGVjNWEzN2RlMDM5NGMwM2Y4ZTgzOGU2NWJiNDU4NzRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKQEAgLTEzOCw3ICsxMzgs
NyBAQCB2b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OnVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0
aW9uTGlzdCogbGlzdCkKICAgICBsaXN0LT5jbGVhcigpOwogfQogCi1IVE1MQ29udGVudFNlbGVj
dGlvbiogSFRNTENvbnRlbnRTZWxlY3Rvcjo6ZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0CitIVE1M
Q29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rvcjo6ZmluZEZvcihjb25zdCBOb2Rl
KiBrZXkpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2VsZWN0aW9uU2V0LmZpbmQoa2V5KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApp
bmRleCBlMDExODA1MDBiYWQxMjM0MjNhMTc1ODhhODE5MzJmMTgwZjE0YzUzLi5iY2ZiZGRiYmQ4
ODI3Mzg1YTdjOWFmYzExYzI0ZjZmZWNhNmUzNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCkBAIC05OCw3ICs5OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZChIVE1MQ29udGVudFNlbGVjdGlvbiogdmFsdWUpIHsgbV9zZXQuYWRk
KHZhbHVlKTsgfQogICAgIHZvaWQgcmVtb3ZlKEhUTUxDb250ZW50U2VsZWN0aW9uKiB2YWx1ZSkg
eyBtX3NldC5yZW1vdmUodmFsdWUpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9zZXQuaXNFbXB0eSgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoTm9k
ZSoga2V5KSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChjb25zdCBOb2Rl
KiBrZXkpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKQEAgLTEx
OCw5ICsxMTgsOSBAQCBwcml2YXRlOgogICAgIFBvaW50ZXJTZXQgbV9zZXQ7CiB9OwogCi1pbmxp
bmUgSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKE5v
ZGUqIGtleSkgY29uc3QKK2lubGluZSBIVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRT
ZWxlY3Rpb25TZXQ6OmZpbmQoY29uc3QgTm9kZSoga2V5KSBjb25zdAogewotICAgIFBvaW50ZXJT
ZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxOb2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rp
b25TZXQ6OlRyYW5zbGF0b3I+KGtleSk7CisgICAgUG9pbnRlclNldDo6aXRlcmF0b3IgZm91bmQg
PSBtX3NldC5maW5kPGNvbnN0IE5vZGUqLCBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNs
YXRvcj4oa2V5KTsKICAgICByZXR1cm4gZm91bmQgIT0gbV9zZXQuZW5kKCkgPyAqZm91bmQgOiAw
OwogfQogCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZWxlY3QoSW5z
ZXJ0aW9uUG9pbnQqLCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKICAgICB2b2lkIHVuc2Vs
ZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9u
KiBmaW5kRm9yKE5vZGUqIGtleSkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZp
bmRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdDsKIAogICAgIHZvaWQgd2lsbFNlbGVjdCgpOwog
ICAgIGJvb2wgaXNTZWxlY3RpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IGI1MjgyY2RkYzI3NDgyY2VjMzM1MzVkZGJlYjY4Yzcw
ZjU1ODg0YmMuLjc0YjFhMjAwYzRkOWUyYjEyNzgwNTRjNDQ3YWY0MDExZDQ2ZDQ4YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNzEsNyArNzEs
NyBAQCBwcml2YXRlOgogICAgIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCBtX3NlbGVjdGlvbnM7
CiB9OwogCi1pbmxpbmUgYm9vbCBpc0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCitpbmxpbmUg
Ym9vbCBpc0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg4LDYgKzg4LDEyIEBAIGlubGluZSBJbnNlcnRp
b25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxJbnNlcnRpb25Qb2ludCo+KG5vZGUpOwogfQogCitpbmxpbmUgY29uc3QgSW5zZXJ0aW9u
UG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNJbnNlcnRpb25Qb2ludChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IElu
c2VydGlvblBvaW50Kj4obm9kZSk7Cit9CisKIGlubGluZSBib29sIGlzU2hhZG93Qm91bmRhcnko
Tm9kZSogbm9kZSkKIHsKICAgICBpZiAoIWlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYzgyNmIxNTBhMDcyZDg4NTMwM2UyZjQyMmYy
MzQ3ZTBmNjFiODJmZS4uMmE1NWNhMGE1YzEyOTkyNjBhZTJhOWM3MmE2MTVjZDJjNjE4OTEzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDksNiArNDksNyBAQAogI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKQEAgLTE4MCw2ICsxODEsNTEgQEAgYm9vbCBJbnRlcm5hbHM6OmF0dGFj
aGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBub2RlLT5hdHRh
Y2hlZCgpOwogfQogCitOb2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShO
b2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKG5vZGUpOworfQorCitO
b2RlKiBJbnRlcm5hbHM6OmZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqIG5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAgICAgICBlYyA9IElOVkFMSURf
QUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZChub2RlKTsKK30KKworTm9kZSogSW50ZXJuYWxzOjps
YXN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmICghbm9kZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFz
dENoaWxkKG5vZGUpOworfQorCitOb2RlKiBJbnRlcm5hbHM6OnRyYXZlcnNlTmV4dE5vZGVJblJl
aWZpZWRUcmVlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9k
ZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9k
ZShub2RlKTsKK30KKworTm9kZSogSW50ZXJuYWxzOjp0cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVp
ZmllZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2Rl
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgcmV0dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3Vz
Tm9kZShub2RlKTsKK30KKwogU3RyaW5nIEludGVybmFsczo6ZWxlbWVudFJlbmRlclRyZWVBc1Rl
eHQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFlbGVt
ZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA2ODgzNDYwNWY0NjQwNzlh
OWU5YzViYWFjNzc4M2E3MjExNjcyYjRkLi4zNDNhNGQzNDNlNjFiMDdkYWI2YTI0ODE0MmJjOGQ0
YzM3MTlkMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTg0LDYgKzg0LDEy
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXR0YWNoZWQoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsK
IAorICAgIE5vZGUqIG5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIE5vZGUqIGZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgTm9kZSogbGFzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIE5vZGUqIHRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKE5vZGUqLCBF
eGNlcHRpb25Db2RlJik7CisgICAgTm9kZSogdHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRU
cmVlKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CisKICNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCiAg
ICAgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcm
IGNvbG9yVmFsdWUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5k
ZXggZGRhMTIyOTg0YTRjZjVjMGY5NDFjMDlhMWY3YjA0YmUyMTdmODMyYy4uZjQ0Yjg5NjVjYjlh
ZjllMzMyZWJmMzRiZWQ1NGFiMDc4ODRmN2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbApAQCAtNTUsNiArNTUsMTIgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEVsZW1l
bnQgZ2V0RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4gTm9kZSBzaGFkb3dSb290LCBpbiBET01T
dHJpbmcgaWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFuIGlzVmFsaWRD
b250ZW50U2VsZWN0KGluIEVsZW1lbnQgY29udGVudEVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogCisgICAgICAgIE5vZGUgbmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9k
ZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgZmlyc3RDaGlsZEluUmVpZmll
ZFRyZWUoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSBs
YXN0Q2hpbGRJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIE5vZGUgdHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRyZWUoaW4gTm9kZSBub2Rl
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSB0cmF2ZXJzZVByZXZpb3VzTm9k
ZUluUmVpZmllZFRyZWUoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwogICAg
ICAgICBib29sZWFuIGF0dGFjaGVkKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9JTlBVVF9DT0xPUikgJiYgRU5BQkxFX0lOUFVUX0NPTE9S
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggODIzODhlYWQ1MWFhNWRjNDU4NTFlMWRjMjU4NmRj
ODU1NjRjZTY0Mi4uMjE1NGQzOGE1ZWZmY2VhOGViMTlkNTk1ZjA2ZmE3YzZlYTVkODRkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMTY3LDYgKzE2Nyw3IEBAIEVYUE9SVFMKICAgICAgICAg
P2VxdWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgogICAgICAg
ICA/ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQFBBVkVs
ZW1lbnRAMUBJQFoKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBJQFoK
KyAgICAgICAgP2ZpcnN0Q2hpbGRAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZO
b2RlQDJAUEJWMzJAQFoKICAgICAgICAgP2ZyYW1lRGVzdHJveWVkQEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlckBXZWJDb3JlQEBVQUVYWFoKICAgICAgICAgP2Zyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrQFN0cmluZ0BXVEZAQFNBP0FWMTJAUEJFSUBaCiAgICAgICAgID9nZXRDYWNoZWRET01TdHJ1
Y3R1cmVAV2ViQ29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAx
QFBCVUNsYXNzSW5mb0AzQEBaCkBAIC0xNzksNyArMTgwLDkgQEAgRVhQT1JUUwogICAgICAgICA/
aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdA
V1RGQEBAWgogICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVA
SlNDQEBQQVZFeGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdl
YWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJhaXRzQFBBVlN0
cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpT
Q0BAQDJAQFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNl
ckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgorICAgICAg
ICA/bGFzdENoaWxkQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9kZUAyQFBC
VjMyQEBaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJD
b3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBA
UEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCisgICAgICAgID9uZXh0
U2libGluZ0BSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVAMkBQQlYzMkBA
WgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASUBaCiAgICAgICAgID9udW1i
ZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBIQFoKICAgICAgICAgP29ic2VydmVGcmFtZUBGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBASUFFWFBBVkZyYW1lQDJAQFoKQEAgLTIyNiw2ICsy
MjksOCBAQCBFWFBPUlRTCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NA
QFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWUmFuZ2VAMUBAWgogICAg
ICAgICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZK
U0RPTUdsb2JhbE9iamVjdEAxQFBBVk5vZGVMaXN0QDFAQFoKICAgICAgICAgP3RvUmFuZ2VAV2Vi
Q29yZUBAWUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKKyAgICAgICAgP3RyYXZlcnNlTmV4
dE5vZGVAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJAUEJWMzJAQFoK
KyAgICAgICAgP3RyYXZlcnNlUHJldmlvdXNOb2RlQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNv
cmVAQFNBUEFWTm9kZUAyQFBCVjMyQEBaCiAgICAgICAgID91cGRhdGVMYXlvdXRJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID91c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBA
V1RGQEBYWgogICAgICAgICA/dXRmOEBTdHJpbmdAV1RGQEBRQkU/QVZDU3RyaW5nQDJAX05AWgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IGUwNTRkNTUyZjQ1MTNjNWI0YjA3
Y2Y0ZTc0NzJlYzYxYTc1OTVhNjIuLjM3MGZkMWVhMGIzMjVhMzZkMWE1YThhYjczOTMyZjYyMDM4
YjEyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTE1OCw2ICsxNTgs
NyBAQCBFWFBPUlRTCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAUEJF
QFoKICAgICAgICAgP2VxdWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQ
QkVAWgogICAgICAgICA/ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkBXZWJDb3JlQEBZQT9BVlN0cmlu
Z0BXVEZAQFBBVkVsZW1lbnRAMUBJQFoKKyAgICAgICAgP2ZpcnN0Q2hpbGRAUmVpZmllZFRyZWVU
cmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJAUEJWMzJAQFoKICAgICAgICAgP2ZyYW1lRGVz
dHJveWVkQEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBVQUVYWFoKICAgICAgICAg
P2dldENhY2hlZERPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpT
RE9NR2xvYmFsT2JqZWN0QDFAUEJVQ2xhc3NJbmZvQDNAQFoKICAgICAgICAgP2dldERhdGExNlNs
b3dDYXNlQFN0cmluZ0ltcGxAV1RGQEBBQkVQQl9XWFoKQEAgLTE2OSw5ICsxNzAsMTEgQEAgRVhQ
T1JUUwogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBA
UUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3Jl
QEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5n
SW1wbEBXVEZAQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRI
YXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpT
U3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9s
YXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBA
UUJFX05YWgorICAgICAgICA/bGFzdENoaWxkQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVA
QFNBUEFWTm9kZUAyQFBCVjMyQEBaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2Vy
Q29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJD
b3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBa
CiAgICAgICAgID9vYnNlcnZlRnJhbWVARnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVA
QElBRVhQQVZGcmFtZUAyQEBaCiAgICAgICAgID9vdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXNAV2ViQ29yZUBAWUFYQUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBAWgorICAg
ICAgICA/bmV4dFNpYmxpbmdAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2Rl
QDJAUEJWMzJAQFoKICAgICAgICAgP251bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5ATm9k
ZUBXZWJDb3JlQEBRQkVJWFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFW
UGFnZUAyQFhaCiAgICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBA
QUFFWFhaCkBAIC0yMTEsNiArMjE0LDggQEAgRVhQT1JUUwogICAgICAgICA/dG9KU0BXZWJDb3Jl
QEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAx
QFBBVlJhbmdlQDFAQFoKICAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BA
UEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZOb2RlTGlzdEAxQEBaCiAg
ICAgICAgID90b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NAQEBaCisg
ICAgICAgID90cmF2ZXJzZU5leHROb2RlQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNB
UEFWTm9kZUAyQFBCVjMyQEBaCisgICAgICAgID90cmF2ZXJzZVByZXZpb3VzTm9kZUBSZWlmaWVk
VHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVAMkBQQlYzMkBAWgogICAgICAgICA/dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhY
WgogICAgICAgICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVjdG9y
QFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29y
ZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDY1MmYx
ODJlNjg0ZjU0YmI2YWVjMzNkYWI5NmYwMTRlZjVjNWFmOWEuLjg3Mjc0NjNmYzdjYTUzMDRkNzlj
MzM3YWE2MjJmNzAxMGU5ZjI5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjMsNiAr
NjMsMTEgQEAgX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1
bWVudEU7CiBfWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0
YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzRWlpOwogX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdD
b250ZXh0QzFFUE5TXzROb2RlRTsKIF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEQx
RXY7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxMW5leHRTaWJsaW5nRVBLTlNf
NE5vZGVFOworX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMjB0cmF2ZXJzZVByZXZp
b3VzTm9kZUVQS05TXzROb2RlRTsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDls
YXN0Q2hpbGRFUEtOU180Tm9kZUU7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwx
NnRyYXZlcnNlTmV4dE5vZGVFUEtOU180Tm9kZUU7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVU
cmF2ZXJzYWwxMGZpcnN0Q2hpbGRFUEtOU180Tm9kZUU7CiBfWk43V2ViQ29yZTIxZ2V0Q2FjaGVk
RE9NU3RydWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBLTjNKU0M5Q2xhc3NJbmZvRTsK
IF9aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU183RWxlbWVudEVqOwogX1pO
N1dlYkNvcmUyMnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFdjsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNjZlZWUyM2I0ZGI3
OTNkMzY3YzliZjdhOTUxMDcwODYyZTgwOTI4Li5kN2E5N2U1ZTk5MGUxMzJiZmY1YWYzNzg4ZTkw
OTU3YzVlOTJhMmU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDMtMTUgIEhheWF0byBJ
dG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBBZGQgUmVp
ZmllZCBET00gVHJlZSB0cmF2ZXJzYWwgaW50ZXJuYWwgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTk3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGludGVybmFsIEFQSXMgd2hpY2ggY2Fu
IGJlIHVzZWQgdG8gdHJhdmVyc2UgUmVpZmllZCBET00gdHJlZSwgd2hpY2ggaXMKKyAgICAgICAg
YSByZXN1bHQgb2Ygbm9kZSBkaXN0cmlidXRpb24gYWxnb3JpdGhtIGV4cGxhaW5lZCBpbiBTaGFk
b3cgRE9NIHNwZWMuCisgICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50
cy9yYXctZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbAorCisgICAgICAgIEV2ZXJ5IHB1
YmxpYyBmdW5jdGlvbnMgZGVmaW5lZCBpbiBSZWlmaWVkVHJlZVRyYXZlcnNhbCBhcmUgc3RhdGlj
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgYXJlIG5hbWVkIGluIGEgc2ltaWxhciB3YXkgdG8gb25l
cyBkZWZpbmVkIGluIFdlYkNvcmU6Ok5vZGUgY2xhc3MuCisgICAgICAgIFRoZSBvbmx5IGRpZmZl
cmVuY2UgaXMgdGhhdCBSZWlmaWVkVHJlZVRyYXZlcnNhbCBBUElzIGNvbnNpZGVyIHNoYWRvdwor
ICAgICAgICBob3N0cyBhbmQgYWxzbyB0cmF2ZXJzZSBub2RlcyBpcyBTaGFkb3cgRE9NIHN1YnRy
ZWVzLCBjcm9zc2luZyBzaGFkb3cncyB1cHBlciBhbmQgbG93ZXIgYm91bmRhcnkKKyAgICAgICAg
dHJhbnNwYXJlbnRseS4KKworICAgICAgICBUaGVyZSBpcyBubyBhY3R1YWwgY2xpZW50IHdoaWNo
IHVzZXMgdGhlc2UgQVBJcy4gRm9sbG93LXVwIHBhdGNoZXMgZm9yIEZvY3VzTmF2aWdhdGlvbgor
ICAgICAgICBhbmQgRXZlbnREaXNwYXRjaGVyIHdpbGwgdXNlIHRoZSBBUElzIHNvIHRoYXQgdGhl
eSBjYW4gdHJhdmVyc2Ugbm9kZSBpbiByZWlmaWVkIHRyZWUgb3JkZXIuCisKKyAgICAgICAgKiBm
YXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTAzLTIxICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIEZvbnQgZmFsbGJhY2sgaW4gY3Itd2luIGlzIHdyb25nIGZvciBz
dHJpbmcgY29udGFpbnMgemVyby13aWR0aC1zcGFjZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMDQyNGU3NDE4N2EyZTU3Yzg1ZWRmMzY2YWRkNjMzZWM3YmE2YzM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQt
dHJlZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTU2IEBACitUZXN0cyBmb3Ig
UmVpZmllZCBET00gVHJlZSBUcmF2ZXJzYWwgQVBJcy4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NoYWRvd1Jvb3Qgc2hvdWxkIGJlIHVz
ZWQuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKworVHJhdmVyc2UgaW4g
Zm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJ
VgkgaWQ9YgorRElWCSBpZD1hCisKK0EgY29udGVudCBlbGVtZW50IHNob3VsZCBzZWxlY3QgbGln
aHQgY2hpbGRyZW4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCURJVgkg
aWQ9YworCURJVgkgaWQ9ZAorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJ
IGlkPWIKK0RJVgkgaWQ9YworRElWCSBpZD1kCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkg
aWQ9ZAorRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitUZXN0IGZvciBjb250ZW50
IGVsZW1lbnQgc2VsZWN0b3IuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIK
KworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorVHJhdmVyc2UgaW4gYmFja3dhcmQu
CitESVYJIGlkPWEKKworTGlnaHQgY2hpbGRyZW4gc2hvdWxkIGJlIHNlbGVjdGVkIG9ubHkgYXQg
b25jZS4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCitUcmF2ZXJzZSBp
biBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgor
RElWCSBpZD1lCitESVYJIGlkPWQKK0RJVgkgaWQ9YworRElWCSBpZD1hCisKK0EgY29udGVudCBl
bGVtZW50IGNhbiBoYXZlIGZhbGxiYWNrIGVsZW1lbnRzLgorUmVpZmllZCBUcmVlOgorRElWCSBp
ZD1hCisJRElWCSBpZD1iCisJRElWCSBpZD1mMQorCURJVgkgaWQ9ZjIKKworVHJhdmVyc2UgaW4g
Zm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWYxCitESVYJIGlkPWYyCitU
cmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZjIKK0RJVgkgaWQ9ZjEKK0RJVgkgaWQ9Ygor
RElWCSBpZD1hCisKK0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZCBpZiAgZWxl
bWVudCBzZWxlY3RzIGFueSBlbGVtZW50cy4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJ
VgkgaWQ9YgorCURJVgkgaWQ9ZjEKKwlESVYJIGlkPWYyCisKK1RyYXZlcnNlIGluIGZvcndhcmQu
CitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1mMQorRElWCSBpZD1mMgorVHJhdmVyc2Ug
aW4gYmFja3dhcmQuCitESVYJIGlkPWYyCitESVYJIGlkPWYxCitESVYJIGlkPWIKK0RJVgkgaWQ9
YQorCitUZXN0IGZvciBOZXN0ZWQgU2hhZG93Um9vdHMuCitSZWlmaWVkIFRyZWU6CitESVYJIGlk
PWEKKwlESVYJIGlkPWIKKwkJRElWCSBpZD1jCisJCURJVgkgaWQ9ZQorCQlESVYJIGlkPWQKKwlE
SVYJIGlkPWYKKwlESVYJIGlkPWgKKwlESVYJIGlkPWkKKwlESVYJIGlkPWcKKworVHJhdmVyc2Ug
aW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9ZQor
RElWCSBpZD1kCitESVYJIGlkPWYKK0RJVgkgaWQ9aAorRElWCSBpZD1pCitESVYJIGlkPWcKK1Ry
YXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1nCitESVYJIGlkPWkKK0RJVgkgaWQ9aAorRElW
CSBpZD1mCitESVYJIGlkPWQKK0RJVgkgaWQ9ZQorRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkg
aWQ9YQorCitUZXN0IGZvciBNdWx0aXBsZSBTaGFkb3dSb290cy4KK1JlaWZpZWQgVHJlZToKK0RJ
VgkgaWQ9YQorCURJVgkgaWQ9ZAorCURJVgkgaWQ9YgorCURJVgkgaWQ9ZgorCURJVgkgaWQ9Ywor
CURJVgkgaWQ9ZQorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWQK
K0RJVgkgaWQ9YgorRElWCSBpZD1mCitESVYJIGlkPWMKK0RJVgkgaWQ9ZQorVHJhdmVyc2UgaW4g
YmFja3dhcmQuCitESVYJIGlkPWUKK0RJVgkgaWQ9YworRElWCSBpZD1mCitESVYJIGlkPWIKK0RJ
VgkgaWQ9ZAorRElWCSBpZD1hCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
cmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzhhZWVjNzUyZjE2Y2Zi
ZmVjZWViNzc2YTBmMDI3MTE2MjVlNTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApAQCAtMCwwICsxLDE2
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgZm9yIFJlaWZp
ZWQgRE9NIFRyZWUgVHJhdmVyc2FsIEFQSXMuIENhbiBvbmx5IHJ1biB3aXRoaW4gRFJUIik7CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBkdW1wTm9kZShub2RlKQoreworICAgIHZhciBv
dXRwdXQgPSBub2RlLm5vZGVOYW1lICsgIlx0IjsKKyAgICBpZiAobm9kZS5pZCkKKyAgICAgICAg
b3V0cHV0ICs9ICcgaWQ9JyArIG5vZGUuaWQ7CisgICAgaWYgKG5vZGUuY2xhc3NOYW1lKQorICAg
ICAgICBvdXRwdXQgKz0gJyBjbGFzcz0nICsgbm9kZS5jbGFzc05hbWU7CisgICAgcmV0dXJuIG91
dHB1dDsKK30KKworZnVuY3Rpb24gZHVtcFJlaWZpZWRUcmVlKG5vZGUsIGluZGVudCkKK3sKKyAg
ICBpbmRlbnQgPSBpbmRlbnQgfHwgIiI7CisgICAgdmFyIG91dHB1dCA9IGluZGVudCArIGR1bXBO
b2RlKG5vZGUpICsgIlxuIjsKKyAgICB2YXIgY2hpbGQ7CisgICAgZm9yIChjaGlsZCA9IGludGVy
bmFscy5maXJzdENoaWxkSW5SZWlmaWVkVHJlZShub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW50ZXJu
YWxzLm5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShjaGlsZCkpCisgICAgICAgICBvdXRwdXQgKz0g
ZHVtcFJlaWZpZWRUcmVlKGNoaWxkLCBpbmRlbnQgKyAiXHQiKTsKKyAgICByZXR1cm4gb3V0cHV0
OworfQorCitmdW5jdGlvbiBsYXN0Tm9kZUluUmVpZmllZFRyZWUocm9vdCkKK3sKKyAgICB2YXIg
bGFzdE5vZGUgPSByb290OworICAgIHdoaWxlIChpbnRlcm5hbHMubGFzdENoaWxkSW5SZWlmaWVk
VHJlZShsYXN0Tm9kZSkpCisgICAgICAgIGxhc3ROb2RlID0gaW50ZXJuYWxzLmxhc3RDaGlsZElu
UmVpZmllZFRyZWUobGFzdE5vZGUpOworICAgIHJldHVybiBsYXN0Tm9kZTsKK30KKworZnVuY3Rp
b24gc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5nSW5Gb3dhcmQocm9vdCkKK3sKKyAgICB2YXIg
bm9kZSA9IHJvb3Q7CisgICAgdmFyIGxhc3QgPSBsYXN0Tm9kZUluUmVpZmllZFRyZWUocm9vdCk7
CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgZGVidWcoZHVtcE5vZGUobm9kZSkpOworICAg
ICAgICBpZiAobm9kZSA9PSBsYXN0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5vZGUg
PSBpbnRlcm5hbHMudHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRyZWUobm9kZSk7CisgICAgfQor
fQorCitmdW5jdGlvbiBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNpbmdJbkJhY2t3YXJkKHJvb3Qp
Cit7CisgICAgdmFyIG5vZGUgPSBsYXN0Tm9kZUluUmVpZmllZFRyZWUocm9vdCk7CisgICAgd2hp
bGUgKG5vZGUpIHsKKyAgICAgICAgZGVidWcoZHVtcE5vZGUobm9kZSkpOworICAgICAgICBpZiAo
bm9kZSA9PSByb290KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5vZGUgPSBpbnRlcm5h
bHMudHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKG5vZGUpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVlKG5vZGUpCit7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChub2RlKTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisKKyAgICBkZWJ1
ZygnUmVpZmllZCBUcmVlOicpOworICAgIGRlYnVnKGR1bXBSZWlmaWVkVHJlZShub2RlKSk7CisK
KyAgICBkZWJ1ZygnVHJhdmVyc2UgaW4gZm9yd2FyZC4nKTsKKyAgICBzaG93UmVpZmllZFRyZWVC
eVRyYXZlcnNpbmdJbkZvd2FyZChub2RlKTsKKworICAgIGRlYnVnKCdUcmF2ZXJzZSBpbiBiYWNr
d2FyZC4nKTsKKyAgICBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNpbmdJbkJhY2t3YXJkKG5vZGUp
OworCisgICAgZGVidWcoJycpOworfQorCitkZWJ1ZygnU2hhZG93Um9vdCBzaG91bGQgYmUgdXNl
ZC4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdiJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKTsK
KworZGVidWcoJ0EgY29udGVudCBlbGVtZW50IHNob3VsZCBzZWxlY3QgbGlnaHQgY2hpbGRyZW4n
KTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAor
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdi
J30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcp
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pKSk7CisKK2RlYnVnKCdUZXN0IGZv
ciBjb250ZW50IGVsZW1lbnQgc2VsZWN0b3IuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9v
dChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZCd9KSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2UnfSkpKTsKKworZGVidWcoJ0xpZ2h0IGNoaWxkcmVuIHNob3VsZCBiZSBzZWxl
Y3RlZCBvbmx5IGF0IG9uY2UuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZCd9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2Un
fSkpKTsKKworZGVidWcoJ0EgY29udGVudCBlbGVtZW50IGNhbiBoYXZlIGZhbGxiYWNrIGVsZW1l
bnRzLicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdh
J30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2InfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250
ZW50JywgeydzZWxlY3QnOiAnLnonfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YxJ30pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZjInfSkp
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKTsKKworZGVi
dWcoJ0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZCBpZiA8Y29udGVudD4gZWxl
bWVudCBzZWxlY3RzIGFueSBlbGVtZW50cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5jJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdm
MSd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2YyJ30pKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdjJ30pKSk7CisKK2RlYnVnKCdUZXN0IGZvciBOZXN0ZWQgU2hhZG93Um9vdHMuJyk7
CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dS
b290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdn
J30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2gnfSksCisgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdpJ30pKSk7CisKK2RlYnVnKCdUZXN0
IGZvciBNdWx0aXBsZSBTaGFkb3dSb290cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJ30pKSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YnfSkpKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDJjYjM2ZDUxN2NkNDU4
NDIyMzVmZmZkNWMzODRkYTk3NDYzNjBmNGQuLjI3ZjM3ZDEyYWJmZTg2OTM4YzRhN2QyM2RmZTNm
NWFlNTdiMTY2YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xOTQxLDYgKzE5NDEs
NyBAQCBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93LXN0eWxl
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWluLW1ldGVyLWVsZW1lbnQuaHRt
bAogZmFzdC9kb20vc2hhZG93L2dldC1lbGVtZW50LWJ5LWlkLWluLXNoYWRvdy1yb290Lmh0bWwK
K2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNh
YmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAppbmRleCBhNjg4MDcxYmJlMWQ0ZTg5NmMzNGVhYWUzNTFkNGY3NTE3
OWEwNjhmLi4zZjkyYjU4OGIyMGFhN2Y0YmFlMTgwYjRiOGQ2MDZjMTAwZGI3MmQ1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQKQEAgLTE3NCw2ICsxNzQsNyBAQCBmYXN0L2RvbS9zaGFkb3cvaWZy
YW1lLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogZmFz
dC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbAorZmFzdC9kb20vc2hh
ZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1i
b3VuZGFyeS1ldmVudHMuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50LWNyYXNo
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9Ta2lwcGVkCmluZGV4IGI5ZTM0ODdiNDdhMTg0Mzg2OThmYzQyYmM4M2U2NzMyZTU0N2Q3ZTYu
LjM3Nzc2ZGM2N2RkNjljMTUxNDhiZTQ4NzE4MTliZjFkZDNlMzI2ZWQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCkBAIC0xNDY0LDYgKzE0NjQsNyBAQCBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1lbGVtZW50LW91dHNpZGUtc2hhZG93LXN0eWxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250
ZW50LWVsZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1lbGVtZW50LWluLW1ldGVyLWVsZW1lbnQuaHRtbAogZmFzdC9kb20vc2hhZG93L2dldC1lbGVt
ZW50LWJ5LWlkLWluLXNoYWRvdy1yb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRy
ZWUtdHJhdmVyc2FsLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1hY3RpdmVFbGVtZW50Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbmNhaXJvL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9T
a2lwcGVkCmluZGV4IDEyMTZiMTkyYWI4MzVkYTY2MjY3OTU2NjQ3ZTFjNWFjZTljOWY5ODMuLjMz
ZGZjMjExOTlhNDI5NmU0NWJkYjliYTNmYzhlMTUxNTk1ODkyYTUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luY2Fpcm8vU2tpcHBlZApAQCAtMTk3NSw2ICsxOTc1LDcgQEAgZmFzdC9kb20vc2hhZG93
L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29u
dGVudC1lbGVtZW50LWluLW1lZGlhLWVsZW1lbnQuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRl
bnQtZWxlbWVudC1pbi1tZXRlci1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9nZXQtZWxl
bWVudC1ieS1pZC1pbi1zaGFkb3ctcm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10
cmVlLXRyYXZlcnNhbC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtYWN0aXZlRWxlbWVudC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmlu
ZGV4IDg5YzY1NzY2OGViN2FhMmI1MzJlZDc4ZmI0NjZhNjY2MGRhMmZhNTcuLjBiNTRjZjEwZmFl
MDU1ZWNiNTkyN2U3YjQwNjJlZjI0NzI2MjI4NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVk
CkBAIC0xMDg1LDYgKzEwODUsNyBAQCBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91
dHNpZGUtc2hhZG93Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lk
ZS1zaGFkb3ctc3R5bGUuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1t
ZWRpYS1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWV0
ZXItZWxlbWVudC5odG1sCitmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYWN0
aXZlRWxlbWVudC5odG1sCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
YTE3MWZmYjJlMGY2OTM2MzhiNjAzMTZjMGRhYjFhNTcyN2Y4ZjJmYi4uOTQ5Zjk5ZTZhYjk1YzI3
OWY1NWRiZWI5YWZkN2I5MTAyODY0YzdlNiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAzLTE1ICBIYXlhdG8gSXRvICA8aGF5YXRv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRkIFJlaWZpZWQgRE9NIFRy
ZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdoaWNoIGNhbiBiZSB1c2VkIHRv
IHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisgICAgICAgIGEgcmVzdWx0IG9m
IG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQgaW4gU2hhZG93IERPTSBzcGVj
LgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUv
dGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBFdmVyeSBwdWJsaWMgZnVuY3Rp
b25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJlIHN0YXRpYworICAgICAgICBm
dW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRvIG9uZXMgZGVmaW5lZCBp
biBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRo
YXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBzaGFkb3cKKyAgICAgICAgaG9z
dHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERPTSBzdWJ0cmVlcywgY3Jvc3Np
bmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5CisgICAgICAgIHRyYW5zcGFyZW50
bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVudCB3aGljaCB1c2VzIHRoZXNl
IEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmlnYXRpb24KKyAgICAgICAgYW5k
IEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0aGF0IHRoZXkgY2FuIHRyYXZl
cnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAgICAgICogU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wMy0yMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSB3dGYvUGxhdGZvcm0uaCBmcm9tIEphdmFTY3JpcHRD
b3JlIHRvIFNvdXJjZS9XVEYvd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133434</attachid>
            <date>2012-03-22 23:45:15 -0700</date>
            <delta_ts>2012-03-23 00:51:42 -0700</delta_ts>
            <desc>update</desc>
            <filename>bug-79197-20120323154513.patch</filename>
            <type>text/plain</type>
            <size>59945</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVhYzRkYWJiYTMyYzQ2
NGFlNTUyM2NlZjdjNTNiYjBlYzNmOWM5Mi4uYjhiMjVjMDAyY2MzMTg2ODU0ZDFlZDY2YmUwNjdh
ZTkwMTRmNmYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTAzLTIyICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisgICAg
ICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQgaW4g
U2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBv
bmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBFdmVy
eSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJlIHN0
YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRv
IG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBk
aWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBzaGFk
b3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERPTSBz
dWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5CisgICAg
ICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVudCB3
aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmlnYXRp
b24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0aGF0
IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NoYWRvd0hvc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6c2hhZG93VHJlZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dUcmVl
T2ZQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZpcnN0
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkV2l0
aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VMaWdodENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVp
ZmllZFRyZWVUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGlu
Z0luQ3VycmVudFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6
OnRyYXZlcnNlU2libGluZ09yQmFja1RvWW91bmdlclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTm9kZUVz
Y2FwaW5nRmFsbGJhY2tDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6cGFyZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZl
cnNhbDo6cGFyZW50Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVPckJhY2tUb0luc2VydGlv
blBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnRO
b2RlSW5DdXJyZW50VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6cGFyZW50Tm9kZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjphZGp1c3RlZFBhcmVudE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGVXaXRo
b3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVl
VHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91c05vZGVXaXRob3V0Q3Jvc3NpbmdVcHBl
ckJvdW5kYXJ5KToKKyAgICAgICAgKiBkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJlaWZpZWRUcmVlVHJhdmVyc2FsKToKKyAg
ICAgICAgKiBkb20vU2hhZG93VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVl
OjppbnNlcnRpb25Qb2ludEZvcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpzZWxl
Y3Rpb25Gb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hhZG93VHJlZSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29udGVudFNlbGVjdG9yOjpmaW5kRm9yKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1M
Q29udGVudFNlbGVjdG9yLmg6CisgICAgICAgIChIVE1MQ29udGVudFNlbGVjdGlvblNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZCk6CisgICAgICAg
IChIVE1MQ29udGVudFNlbGVjdG9yKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bmV4
dFNpYmxpbmdJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpmaXJzdENoaWxkSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6Omxhc3RDaGlsZEluUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjp0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OnRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVkVHJlZSk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTAzLTIxICBFbWlsIEEgRWtsdW5k
ICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNoYW5nZSB0b3VjaGlu
ZyBDdXN0b21GaWx0ZXJQcm9ncmFtLmggdG8gdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYThjOGIzZmM5YjE0
MzRhZDE0MzAwNjE4MDE0ODMxOTkzZGRjZjJiMC4uMzZkYjcwMmMwNTcwN2VmOWM2OGNjNGIxZWMx
YTlkOWRkYzUwNmNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAzLTIyICBI
YXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0g
QWRkIFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdo
aWNoIGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisg
ICAgICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQg
aW4gU2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNv
bXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBF
dmVyeSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJl
IHN0YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5
IHRvIG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25s
eSBkaWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBz
aGFkb3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERP
TSBzdWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5Cisg
ICAgICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVu
dCB3aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmln
YXRpb24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0
aGF0IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAg
ICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoK
KwogMjAxMi0wMy0yMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIHVzZSBvZiBDRyByb3VuZGVkLXJlY3QgcHJpbWl0aXZlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA1NWEyNDQ5NGExYmQzMzNlYzc4ZDNmMjQyODI2ZjFjYmM4NmRlMDQyLi5m
ZjkzN2ZmNTIzMGYwMDY2NjQ1MGU3ZjViNDMzNTk1ZDFlYTljMDkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtNjEzLDYgKzYxMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vUmFu
Z2UuY3BwCiAgICAgZG9tL1JhbmdlRXhjZXB0aW9uLmNwcAogICAgIGRvbS9SZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lci5jcHAKKyAgICBkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwCiAgICAgZG9t
L1Njb3BlZEV2ZW50UXVldWUuY3BwCiAgICAgZG9tL1NjcmlwdGFibGVEb2N1bWVudFBhcnNlci5j
cHAKICAgICBkb20vU2NyaXB0RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDNhMDU3OTI2MTVlODA2Y2QxZTM3MGEyZTUyYWU4ZjgyNDRmNjQyNWQuLjVmZWVjNjlk
NGYxY2Q3ODg2MjliYTNhYjczMzkyMDJmMTc5MWJmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtMTkwOSw2ICsxOTA5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9S
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRy
ZWVUcmF2ZXJzYWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJz
YWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1JlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vU2NvcGVkRXZlbnRRdWV1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGNlNzQ0ZDRlZDIzODdk
ZDMyOTAyMmRkYjkyNDI5NWIyZTNlMzY0ZGYuLmJkNjZhYzA5ZDg4ZTAxYWE0ODUxZjcwYjc5ODU2
MjdiNTY0MTE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNTkxLDYgKzU5MSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAgXAogICAgIGRvbS9SYXdEYXRhRG9jdW1lbnRQ
YXJzZXIuaCBcCiAgICAgZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCBcCisgICAgZG9t
L1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL1Njb3BlZEV2ZW50UXVldWUuY3Bw
IFwKICAgICBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBcCiAgICAgZG9tL1Nj
cmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgXApAQCAtMTcxOCw2ICsxNzE5LDcgQEAgSEVBREVS
UyArPSBcCiAgICAgZG9tL1F1YWxpZmllZE5hbWUuaCBcCiAgICAgZG9tL1JhbmdlLmggXAogICAg
IGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIFwKKyAgICBkb20vUmVpZmllZFRyZWVUcmF2
ZXJzYWwuaCBcCiAgICAgZG9tL1JlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBcCiAgICAgZG9tL1Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIFwKICAgICBkb20vU2NyaXB0RWxlbWVudC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOTJmNDUzYTI2YjM3MDYyZDZiOGVjNGU5MGZlMmQ3ZjBh
Y2E5ZDU5Yy4uNDY2NWM1ZjNlNGEzZmZjMjQyYzQyYTY0NDg0MjgyMGVmOGE3MTBmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTYwNyw2ICs2MDcsMTEgQEAgX19aTjdXZWJDb3JlMjBOb2RlUmVu
ZGVyaW5nQ29udGV4dEMxRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0Nv
bnRleHREMUV2CiBfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjRjcmVhdGVQbGF0
Zm9ybU1vdXNlRXZlbnRFUDdOU0V2ZW50UDZOU1ZpZXcKIF9fWk43V2ViQ29yZTIwUGxhdGZvcm1F
dmVudEZhY3RvcnkyN2NyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudEVQN05TRXZlbnQKK19fWk43
V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxMW5leHRTaWJsaW5nRVBLTlNfNE5vZGVFCitf
X1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMjB0cmF2ZXJzZVByZXZpb3VzTm9kZUVQ
S05TXzROb2RlRQorX19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDlsYXN0Q2hpbGRF
UEtOU180Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxNnRyYXZlcnNl
TmV4dE5vZGVFUEtOU180Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwx
MGZpcnN0Q2hpbGRFUEtOU180Tm9kZUUKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmpl
Y3QzMHNldFNob3dzQ3Jhc2hlZFBsdWdpbkluZGljYXRvckV2CiBfX1pON1dlYkNvcmUyMFJlc291
cmNlUmVzcG9uc2VCYXNlMTFzZXRNaW1lVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxN3NldEhUVFBTdGF0dXNDb2RlRWkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBiMjc2MzY1MWE5ODVkYjdjNGZiOTExNWY4ZGJhYTdiM2JiMmY5Zjc3Li5jNjllMjQ0
OWQ4OWZkNjgxOWE0OGI2MDg1NzcyZGIzZTljM2MyNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02
MjUsNiArNjI1LDcgQEAKICAgICAgICAgICAgICdkb20vUmFuZ2UuaCcsCiAgICAgICAgICAgICAn
ZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuaCcsCisgICAgICAgICAgICAnZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmgn
LAogICAgICAgICAgICAgJ2RvbS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmgnLAogICAgICAgICAg
ICAgJ2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9TY3Jp
cHRSdW5uZXIuaCcsCkBAIC01MjA0LDYgKzUyMDUsOCBAQAogICAgICAgICAgICAgJ2RvbS9SYW5n
ZUV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgn
LAogICAgICAgICAgICAgJ2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAnLAorICAgICAg
ICAgICAgJ2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9S
ZWlmaWVkVHJlZVRyYXZlcnNhbC5oJywKICAgICAgICAgICAgICdkb20vUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuY3Bw
JywKICAgICAgICAgICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5oJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNjBhNzljZDlk
ZGIyZDJlNzc2MjYzOGNhNDQwZWMwN2FiZTE3MWMyLi45YjA1OWFhZGVkM2ViZGQ1M2Q4MDI2YTI2
MDMzMjRiNmQ2MWUyMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzU2LDYgKzEzNTYsOCBAQAogCQk0OUZGQkYxRDExQzg1
NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTggLyog
R3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi87IH07CiAJCTQ5RkZCRjNGMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oICovOyB9Owog
CQk0OUZGQkY0MDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RkZCRjNFMTFDOTNFRTMwMDZBNzEx
OCAvKiBXZWJHTExheWVyLm1tICovOyB9OworCQk0QTAxM0QyOTE1MTJGRDc3MDBFMUU2MTMgLyog
UmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEEwMTNEMjcxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJh
dmVyc2FsLmNwcCAqLzsgfTsKKwkJNEEwMTNEMkExNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRU
cmVlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTAxM0QyODE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCAq
LzsgfTsKIAkJNEEwREEyRkUxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTBE
QTJGQzEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCAqLzsgfTsK
IAkJNEEwREEyRkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwREEyRkQxMjlC
MjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRBMUU3MTkwMTRFMTAxRTQwMDYyNkY5
RCAvKiBKU0hUTUxDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QTFFNzE4RTE0RTEwMUU0MDA2MjZGOUQgLyogSlNIVE1MQ29u
dGVudEVsZW1lbnQuY3BwICovOyB9OwpAQCAtODI5Myw2ICs4Mjk1LDggQEAKIAkJNDlGRkJGMUMx
MUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkZCRjNEMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJH
TExheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMTGF5ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlGRkJGM0UxMUM5M0VFMzAwNkE3MTE4IC8q
IFdlYkdMTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJHTExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTAxM0QyNzE1MTJG
RDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0QTAxM0QyODE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRy
ZWVUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVpZmllZFRy
ZWVUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkMxMjlC
MjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0QTBEQTJGRDEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1B
c3NvY2lhdGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTFFNzE4
RTE0RTEwMUU0MDA2MjZGOUQgLyogSlNIVE1MQ29udGVudEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQ29udGVudEVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwNjQsNiArMjEwNjgsOCBAQAogCQkJCUE4NEQ4
MjdCMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQk4
NTAzMUIzNTBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwICov
LAogCQkJCTg1MDMxQjM2MEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5oICovLAorCQkJCTRBMDEzRDI3MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZl
cnNhbC5jcHAgKi8sCisJCQkJNEEwMTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVl
VHJhdmVyc2FsLmggKi8sCiAJCQkJQTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVk
RG9jdW1lbnRNYXJrZXIuaCAqLywKIAkJCQk0OTk4QUVDNDEzRjlEMEVBMDA5MEIxQUEgLyogUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCAqLywKIAkJCQk0OTk4QUVDNTEzRjlEMEVBMDA5
MEIxQUEgLyogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsICovLApAQCAtMjM3NjUs
NiArMjM3NzEsNyBAQAogCQkJCUJDQUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRDMEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkQwRDAwNkMxRDAwRUY2
RjI2IC8qIFJlZ3VsYXJFeHByZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QTAxM0QyQTE1
MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMzA5RTAxMDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUQwNkMwRDhGMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVG
b3JtYXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwNTA5OUU2NDkyMDA1NkU1
ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY5MTMsNiArMjY5
MjAsNyBAQAogCQkJCUJDQUI0MTgxMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODUwMzFCNEIwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTJDMEQwMDZDMUQwMEVGNkYy
NiAvKiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QTAxM0QyOTE1
MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTMzMDlFMDAwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMDZDMEQ5MDBDRkQxMTQ2MDA2NUY0M0YgLyogUmVt
b3ZlRm9ybWF0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwNDA5OUU2NDky
MDA1NkU1ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWFlNzRm
YWZmZGU4ODZkNDRiYTIxNjY1M2EzMzFkMTY1NThkNDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcApAQCAtMCwwICsxLDMyNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWlmaWVkVHJlZVRyYXZlcnNhbC5o
IgorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3Iu
aCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTaGFkb3dIb3N0
KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50
Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpOworfQorCitzdGF0aWMg
aW5saW5lIFNoYWRvd1RyZWUqIHNoYWRvd1RyZWVGb3IoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBpZiAobm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiB0b0Vs
ZW1lbnQobm9kZSktPnNoYWRvd1RyZWUoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlu
bGluZSBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlT2ZQYXJlbnQoY29uc3QgTm9kZSogbm9kZSkKK3sK
KyAgICBpZiAobm9kZSAmJiBub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybiBzaGFk
b3dUcmVlRm9yKG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUq
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpmaXJzdENoaWxkKGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VDaGlsZChub2RlLCBS
ZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQpOworICAgIEFTU0VSVCghY2hpbGQg
fHwgIWNoaWxkLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIGNoaWxkOworfQorCitOb2Rl
KiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkKGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VDaGlsZChub2RlLCBS
ZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBBU1NFUlQoIWNoaWxk
IHx8ICFjaGlsZC0+aXNTaGFkb3dSb290KCkpOworICAgIHJldHVybiBjaGlsZDsKK30KKworTm9k
ZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZFdpdGhvdXRDcm9zc2luZ1VwcGVyQm91
bmRhcnkoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgTm9kZSog
Y2hpbGQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxE
aXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hpbGQtPmlzU2hhZG93
Um9vdCgpKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVy
c2FsOjp0cmF2ZXJzZUNoaWxkKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2Fs
RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgLy8gRklYTUU6
IEFkZCBhbiBhc3NlcnRpb24gb25jZSBJbnNlcnRpb25Qb2ludCBoYXZlIGlzQWN0aXZlKCkgZnVu
Y3Rpb24uCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
MDEwCisgICAgLy8gQVNTRVJUKCFpc0luc2VydGlvblBvaW50KG5vZGUpIHx8ICF0b0luc2VydGlv
blBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9v
dCgpKTsKKyAgICBTaGFkb3dUcmVlKiBzaGFkb3dUcmVlID0gc2hhZG93VHJlZUZvcihub2RlKTsK
KyAgICBpZiAoc2hhZG93VHJlZSAmJiBzaGFkb3dUcmVlLT5oYXNTaGFkb3dSb290KCkpCisgICAg
ICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4oc2hhZG93VHJlZS0+eW91bmdlc3RTaGFk
b3dSb290KCksIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZlcnNlTGlnaHRDaGlsZHJlbihu
b2RlLCBkaXJlY3Rpb24pOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVy
c2VMaWdodENoaWxkcmVuKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKE5vZGUqIGNo
aWxkID0gKGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQg
PyBub2RlLT5maXJzdENoaWxkKCkgOiBub2RlLT5sYXN0Q2hpbGQoKSkpCisgICAgICAgIHJldHVy
biB0cmF2ZXJzZU5vZGUoY2hpbGQsIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIDA7Cit9CisKK05v
ZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5vZGUoY29uc3QgTm9kZSogbm9kZSwg
UmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIEFTU0VSVChu
b2RlKTsKKyAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAgICAgICBjb25zdCBI
VE1MQ29udGVudFNlbGVjdGlvbkxpc3QqIHNlbGVjdGlvbkxpc3QgPSB0b0luc2VydGlvblBvaW50
KG5vZGUpLT5zZWxlY3Rpb25zKCk7CisgICAgICAgIGlmIChIVE1MQ29udGVudFNlbGVjdGlvbiog
c2VsZWN0aW9uID0gKGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZv
cndhcmQgPyBzZWxlY3Rpb25MaXN0LT5maXJzdCgpIDogc2VsZWN0aW9uTGlzdC0+bGFzdCgpKSkK
KyAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZU5vZGUoc2VsZWN0aW9uLT5ub2RlKCksIGRpcmVj
dGlvbik7CisgICAgICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgZGlyZWN0
aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOworfQorCitO
b2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkK
K3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7
CisgICAgTm9kZSogbmV4dCA9IHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQo
bm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBBU1NFUlQo
IW5leHQgfHwgIW5leHQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gbmV4dDsKK30KKwor
Tm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKiBu
b2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBBU1NFUlQoIW5vZGUtPmlzU2hhZG93Um9v
dCgpKTsKKyAgICBOb2RlKiBuZXh0ID0gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Q
b2ludChub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBB
U1NFUlQoIW5leHQgfHwgIW5leHQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gbmV4dDsK
K30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGluZ09yQmFja1Rv
SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBTaGFkb3dUcmVlKiBz
aGFkb3dUcmVlID0gc2hhZG93VHJlZU9mUGFyZW50KG5vZGUpOworICAgIGlmICghc2hhZG93VHJl
ZSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGly
ZWN0aW9uKTsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gc2hhZG93VHJl
ZS0+c2VsZWN0aW9uRm9yKG5vZGUpOworICAgIGlmICghc2VsZWN0aW9uKQorICAgICAgICByZXR1
cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOworICAgIGlm
IChIVE1MQ29udGVudFNlbGVjdGlvbiogbmV4dFNlbGVjdGlvbiA9IChkaXJlY3Rpb24gPT0gUmVp
ZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9uLT5uZXh0KCkgOiBz
ZWxlY3Rpb24tPnByZXZpb3VzKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHRT
ZWxlY3Rpb24tPm5vZGUoKSwgZGlyZWN0aW9uKTsKKyAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5n
T3JCYWNrVG9JbnNlcnRpb25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCksIGRpcmVj
dGlvbik7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdJ
bkN1cnJlbnRUcmVlKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0
aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKE5vZGUqIG5leHQg
PSAoZGlyZWN0aW9uID09IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IG5v
ZGUtPm5leHRTaWJsaW5nKCkgOiBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkpCisgICAgICAgIHJl
dHVybiB0cmF2ZXJzZU5vZGUobmV4dCwgZGlyZWN0aW9uKTsKKyAgICBpZiAoTm9kZSogbmV4dCA9
IHRyYXZlcnNlU2libGluZ09yQmFja1RvWW91bmdlclNoYWRvd1Jvb3Qobm9kZSwgZGlyZWN0aW9u
KSkKKyAgICAgICAgcmV0dXJuIG5leHQ7CisgICAgcmV0dXJuIGVzY2FwZUZhbGxiYWNrQ29udGVu
dEVsZW1lbnQobm9kZSwgZGlyZWN0aW9uKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJz
YWw6OnRyYXZlcnNlU2libGluZ09yQmFja1RvWW91bmdlclNoYWRvd1Jvb3QoY29uc3QgTm9kZSog
bm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIEFT
U0VSVChub2RlKTsKKyAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5v
ZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgU2hhZG93Um9vdCogcGFyZW50U2hhZG93
Um9vdCA9IHRvU2hhZG93Um9vdChub2RlLT5wYXJlbnROb2RlKCkpOworICAgICAgICBpZiAoIXBh
cmVudFNoYWRvd1Jvb3QtPmlzWW91bmdlc3QoKSkgeworICAgICAgICAgICAgSW5zZXJ0aW9uUG9p
bnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBwYXJlbnRTaGFkb3dSb290LT5hc3NpZ25lZFRv
KCk7CisgICAgICAgICAgICBBU1NFUlQoYXNzaWduZWRJbnNlcnRpb25Qb2ludCk7CisgICAgICAg
ICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShhc3NpZ25lZEluc2VydGlv
blBvaW50LCBkaXJlY3Rpb24pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQor
CitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6ZXNjYXBlRmFsbGJhY2tDb250ZW50RWxlbWVu
dChjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rp
b24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkgJiYg
aXNJbnNlcnRpb25Qb2ludChub2RlLT5wYXJlbnROb2RlKCkpKQorICAgICAgICByZXR1cm4gdHJh
dmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLT5wYXJlbnROb2RlKCksIGRp
cmVjdGlvbik7CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2Fs
Ojp0cmF2ZXJzZU5vZGVFc2NhcGluZ0ZhbGxiYWNrQ29udGVudHMoY29uc3QgTm9kZSogbm9kZSwg
Q3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAg
IGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKQorICAgICAgICByZXR1cm4gcGFyZW50Tm9kZU9y
QmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgY3Jvc3NlZCk7CisgICAgY3Jvc3NlZCA9IE5vdENy
b3NzZWQ7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOworfQorCitOb2RlKiBS
ZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZShjb25zdCBOb2RlKiBub2RlLCBDcm9zc2Vk
VXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJU
KCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgY3Jvc3NlZCA9IE5vdENyb3NzZWQ7CisgICAg
Ly8gRklYTUU6IEFkZCBhbiBhc3NlcnRpb24gb25jZSBJbnNlcnRpb25Qb2ludCBoYXZlIGlzQWN0
aXZlKCkgZnVuY3Rpb24uCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyMDEwCisgICAgLy8gQVNTRVJUKCFpc0luc2VydGlvblBvaW50KG5vZGUpIHx8ICF0
b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKTsKKyAgICByZXR1cm4gcGFyZW50Tm9k
ZU9yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgY3Jvc3NlZCk7Cit9CisKK05vZGUqIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQ3Jv
c3NlZFVwcGVyQm91bmRhcnkgY3Jvc3NlZDsKKyAgICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2Rl
KG5vZGUsIGNyb3NzZWQpOworICAgIFVOVVNFRF9QQVJBTShjcm9zc2VkKTsKKyAgICByZXR1cm4g
cGFyZW50OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZVdpdGhv
dXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
bm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgLy8gRklYTUU6
IEFkZCBhbiBhc3NlcnRpb24gb25jZSBJbnNlcnRpb25Qb2ludCBoYXZlIGlzQWN0aXZlKCkgZnVu
Y3Rpb24uCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
MDEwCisgICAgLy8gQVNTRVJUKCFpc0luc2VydGlvblBvaW50KG5vZGUpIHx8ICF0b0luc2VydGlv
blBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKTsKKyAgICBDcm9zc2VkVXBwZXJCb3VuZGFyeSBjcm9z
c2VkOworICAgIE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVPckJhY2tUb0luc2VydGlvblBvaW50
KG5vZGUsIGNyb3NzZWQpOworICAgIGlmIChjcm9zc2VkID09IENyb3NzZWQpCisgICAgICAgIHJl
dHVybiAwOworICAgIHJldHVybiBwYXJlbnQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVy
c2FsOjpwYXJlbnROb2RlT3JCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlLCBD
cm9zc2VkVXBwZXJCb3VuZGFyeSYgY3Jvc3NlZCkKK3sKKyAgICBBU1NFUlQoY3Jvc3NlZCA9PSBO
b3RDcm9zc2VkKTsKKyAgICBpZiAoU2hhZG93VHJlZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVP
ZlBhcmVudChub2RlKSkgeworICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVj
dGlvbiA9IHNoYWRvd1RyZWUtPnNlbGVjdGlvbkZvcihub2RlKSkKKyAgICAgICAgICAgIHJldHVy
biBwYXJlbnROb2RlT3JCYWNrVG9JbnNlcnRpb25Qb2ludChzZWxlY3Rpb24tPmluc2VydGlvblBv
aW50KCksIGNyb3NzZWQpOworICAgIH0KKyAgICByZXR1cm4gcGFyZW50Tm9kZUluQ3VycmVudFRy
ZWUobm9kZSwgY3Jvc3NlZCk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJl
bnROb2RlSW5DdXJyZW50VHJlZShjb25zdCBOb2RlKiBub2RlLCBDcm9zc2VkVXBwZXJCb3VuZGFy
eSYgY3Jvc3NlZCkKK3sKKyAgICBBU1NFUlQoY3Jvc3NlZCA9PSBOb3RDcm9zc2VkKTsKKyAgICBp
ZiAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChwYXJl
bnQtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVCYWNrVG9Z
b3VuZ2VyU2hhZG93Um9vdE9ySG9zdCh0b1NoYWRvd1Jvb3QocGFyZW50KSwgY3Jvc3NlZCk7Cisg
ICAgICAgIHJldHVybiB0cmF2ZXJzZU5vZGVFc2NhcGluZ0ZhbGxiYWNrQ29udGVudHMocGFyZW50
LCBjcm9zc2VkKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVl
VHJhdmVyc2FsOjpwYXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QoY29uc3Qg
U2hhZG93Um9vdCogc2hhZG93Um9vdCwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7
CisgICAgQVNTRVJUKHNoYWRvd1Jvb3QpOworICAgIEFTU0VSVChjcm9zc2VkID09IE5vdENyb3Nz
ZWQpOworICAgIGlmIChzaGFkb3dSb290LT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgY3Jvc3Nl
ZCA9IENyb3NzZWQ7CisgICAgICAgIHJldHVybiBzaGFkb3dSb290LT5ob3N0KCk7CisgICAgfQor
ICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlvblBvaW50ID0gc2hhZG93Um9vdC0+
YXNzaWduZWRUbygpOworICAgIEFTU0VSVChhc3NpZ25lZEluc2VydGlvblBvaW50KTsKKyAgICBy
ZXR1cm4gcGFyZW50Tm9kZU9yQmFja1RvSW5zZXJ0aW9uUG9pbnQoYXNzaWduZWRJbnNlcnRpb25Q
b2ludCwgY3Jvc3NlZCk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjphZGp1c3Rl
ZFBhcmVudE5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoU2hhZG93VHJlZSogc2hh
ZG93VHJlZSA9IHNoYWRvd1RyZWVPZlBhcmVudChub2RlKSkgeworICAgICAgICBpZiAoSFRNTENv
bnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRvd1RyZWUtPnNlbGVjdGlvbkZvcihub2Rl
KSkKKyAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb24tPmluc2VydGlvblBvaW50KCk7CisgICAg
fQorICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBjb25zdCBTaGFkb3dS
b290KiBzaGFkb3dSb290ID0gdG9TaGFkb3dSb290KG5vZGUpOworICAgICAgICBpZiAoIXNoYWRv
d1Jvb3QtPmlzWW91bmdlc3QoKSkgeworICAgICAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIGFzc2ln
bmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25lZFRvKCk7CisgICAgICAgICAg
ICBBU1NFUlQoYXNzaWduZWRJbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICByZXR1cm4gYXNz
aWduZWRJbnNlcnRpb25Qb2ludDsKKyAgICAgICAgfQorICAgICAgICBzaGFkb3dSb290LT5ob3N0
KCk7CisgICAgfQorICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7Cit9CisKK05vZGUqIFJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7
CisgICAgaWYgKE5vZGUqIG5leHQgPSBmaXJzdENoaWxkKG5vZGUpKQorICAgICAgICByZXR1cm4g
bmV4dDsKKyAgICBpZiAoTm9kZSogbmV4dCA9IG5leHRTaWJsaW5nKG5vZGUpKQorICAgICAgICBy
ZXR1cm4gbmV4dDsKKyAgICBjb25zdCBOb2RlKiBuID0gbm9kZTsKKyAgICB3aGlsZSAobiAmJiAh
bmV4dFNpYmxpbmcobikpCisgICAgICAgIG4gPSBwYXJlbnROb2RlKG4pOworICAgIGlmIChuKQor
ICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcobik7CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUq
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmICghaXNTaGFkb3dIb3N0KG5v
ZGUpKSB7CisgICAgICAgIGlmIChOb2RlKiBuZXh0ID0gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5v
ZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCkpCisgICAgICAgICAgICBy
ZXR1cm4gbmV4dDsKKyAgICB9CisgICAgaWYgKE5vZGUqIG5leHQgPSBuZXh0U2libGluZyhub2Rl
KSkKKyAgICAgICAgcmV0dXJuIG5leHQ7CisgICAgY29uc3QgTm9kZSogbiA9IG5vZGU7CisgICAg
d2hpbGUgKG4gJiYgIW5leHRTaWJsaW5nKG4pKQorICAgICAgICBuID0gcGFyZW50Tm9kZVdpdGhv
dXRDcm9zc2luZ1VwcGVyQm91bmRhcnkobik7CisgICAgaWYgKG4pCisgICAgICAgIHJldHVybiBu
ZXh0U2libGluZyhuKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2
ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYg
KE5vZGUqIG4gPSBwcmV2aW91c1NpYmxpbmcobm9kZSkpIHsKKyAgICAgICAgd2hpbGUgKE5vZGUq
IGNoaWxkID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZChuKSkKKyAgICAgICAgICAg
IG4gPSBjaGlsZDsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJldHVybiBwYXJlbnRO
b2RlKG5vZGUpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2
aW91c05vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7
CisgICAgaWYgKE5vZGUqIG4gPSBwcmV2aW91c1NpYmxpbmcobm9kZSkpIHsKKyAgICAgICAgd2hp
bGUgKCFpc1NoYWRvd0hvc3QobikpIHsKKyAgICAgICAgICAgIGlmIChOb2RlKiBjaGlsZCA9IFJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obiwgUmVpZmllZFRyZWVU
cmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCkpCisgICAgICAgICAgICAgICAgbiA9IGNoaWxkOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXR1cm4gcGFyZW50Tm9kZVdpdGhvdXRDcm9zc2lu
Z1VwcGVyQm91bmRhcnkobm9kZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxMTkzNzM1ZTVkODU2MjQw
OGI3ZjkwMDY4MjYwMmNlMDAyNWQwZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBS
ZWlmaWVkVHJlZVRyYXZlcnNhbF9oCisjZGVmaW5lIFJlaWZpZWRUcmVlVHJhdmVyc2FsX2gKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb2RlOworY2xhc3MgU2hhZG93Um9vdDsKKwor
ZW51bSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiB7CisgICAgUmVpZmllZFRyZWVUcmF2
ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkLAorICAgIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9u
QmFja3dhcmQKK307CisKKy8vIEZJWE1FOiBNYWtlIHNvbWUgZnVuY3Rpb25zIGlubGluZSB0byBv
cHRpbWlzZSB0aGUgcGVyZm9ybWFuY2UuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODIwMTkKK2NsYXNzIFJlaWZpZWRUcmVlVHJhdmVyc2FsIHsKK3B1YmxpYzoK
KyAgICBlbnVtIENyb3NzZWRVcHBlckJvdW5kYXJ5IHsKKyAgICAgICAgTm90Q3Jvc3NlZCwKKyAg
ICAgICAgQ3Jvc3NlZCwKKyAgICB9OworCisgICAgc3RhdGljIE5vZGUqIGZpcnN0Q2hpbGQoY29u
c3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBsYXN0Q2hpbGQoY29uc3QgTm9kZSopOworICAg
IHN0YXRpYyBOb2RlKiBsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0
IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlKik7Cisg
ICAgc3RhdGljIE5vZGUqIHByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7CisKKyAgICBzdGF0
aWMgTm9kZSogcGFyZW50Tm9kZShjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsK
KyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5v
ZGUqIHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqKTsK
KworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5vZGUqKTsKKyAgICBz
dGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91c05vZGUoY29uc3QgTm9kZSopOworCisgICAgLy8g
RklYTUU6IEFuICdhZGp1c3RlZCcgaXMgbm90IGdvb2QgbmFtZSBmb3IgZ2VuZXJhbCB1c2UgY2Fz
ZS4gUmVuYW1lIHRoaXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyMDIyCisgICAgLy8gVGhpcyBtYXkgcmV0dXJuIFNoYWRvd1Jvb3Qgb3IgSW5zZXJ0
aW9uUG9pbnQuCisgICAgc3RhdGljIE5vZGUqIGFkanVzdGVkUGFyZW50Tm9kZShjb25zdCBOb2Rl
Kik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1Vw
cGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZp
b3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCitwcml2
YXRlOgorICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZUNoaWxkKGNvbnN0IE5vZGUqLCBSZWlmaWVk
VHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTm9kZShj
b25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBO
b2RlKiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4oY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVy
c2FsRGlyZWN0aW9uKTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxpbmdPckJhY2tU
b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlv
bik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUoY29uc3Qg
Tm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKworICAgIHN0YXRpYyBOb2Rl
KiB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqLCBS
ZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisgICAgc3RhdGljIE5vZGUqIGVzY2FwZUZh
bGxiYWNrQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uKTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5vZGVFc2NhcGluZ0ZhbGxiYWNr
Q29udGVudHMoY29uc3QgTm9kZSosIENyb3NzZWRVcHBlckJvdW5kYXJ5Jik7CisKKyAgICBzdGF0
aWMgTm9kZSogcGFyZW50Tm9kZU9yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSosIENy
b3NzZWRVcHBlckJvdW5kYXJ5Jik7CisgICAgc3RhdGljIE5vZGUqIHBhcmVudE5vZGVJbkN1cnJl
bnRUcmVlKGNvbnN0IE5vZGUqLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYpOworICAgIHN0YXRpYyBO
b2RlKiBwYXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QoY29uc3QgU2hhZG93
Um9vdCosIENyb3NzZWRVcHBlckJvdW5kYXJ5Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAppbmRleCAxYmFlM2JlYTdlOWVhMGFiOWVi
NjI0NmFlZjJkZTA4MGM2YWNjM2RmLi42ZmJlNzI5NWQ2M2EzOTgxYWE1ZTgwZDI0Y2MwMDNlNzdh
Yzg2YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAg
dm9pZCBTaGFkb3dUcmVlOjpkZXRhY2hIb3N0KEVsZW1lbnQqIGhvc3QpCiAgICAgaG9zdC0+ZGV0
YWNoQXNOb2RlKCk7CiB9CiAKLUluc2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjppbnNlcnRpb25Q
b2ludEZvcihOb2RlKiBub2RlKSBjb25zdAorSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omlu
c2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG5v
ZGUgJiYgbm9kZS0+cGFyZW50Tm9kZSgpKTsKIApAQCAtMjIxLDYgKzIyMSwxMSBAQCBJbnNlcnRp
b25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QK
ICAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7CiB9CiAKK0hUTUxDb250ZW50U2Vs
ZWN0aW9uKiBTaGFkb3dUcmVlOjpzZWxlY3Rpb25Gb3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zZWxlY3Rvci5maW5kRm9yKG5vZGUpOworfQorCiB2b2lkIFNoYWRv
d1RyZWU6OnJlYXR0YWNoKCkKIHsKICAgICBkZXRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5o
CmluZGV4IDU3MjIyMTgzYTI2MzE3NDQyZjg5MDdmZWVlOTJjY2EzNjc4ZDI3MjYuLmU5YzJjY2Fk
YjBjY2Y3Y2QxNTUwZjQwZDMyMDg5YWYwZjczNjI4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUu
aApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBOb2RlOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIElu
c2VydGlvblBvaW50OwogY2xhc3MgVHJlZVNjb3BlOworY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rp
b247CiAKIGNsYXNzIFNoYWRvd1RyZWUgewogcHVibGljOgpAQCAtNzksNyArODAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwogICAgIHZvaWQg
aG9zdENoaWxkcmVuQ2hhbmdlZCgpOwogCi0gICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBv
aW50Rm9yKE5vZGUqKSBjb25zdDsKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRG
b3IoY29uc3QgTm9kZSopIGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rp
b25Gb3IoY29uc3QgTm9kZSopIGNvbnN0OwogCiAgICAgSFRNTENvbnRlbnRTZWxlY3RvciYgc2Vs
ZWN0b3IoKTsKICAgICBjb25zdCBIVE1MQ29udGVudFNlbGVjdG9yJiBzZWxlY3RvcigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9y
LmNwcAppbmRleCA4YjYyZDU2YTc3M2RiMzBkYjZkMzE4YWY3M2JkZDFjMGY4ZGJiNDY3Li4zMWU0
MTk0ZWM1YTM3ZGUwMzk0YzAzZjhlODM4ZTY1YmI0NTg3NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcApAQCAtMTM4LDcgKzEz
OCw3IEBAIHZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6dW5zZWxlY3QoSFRNTENvbnRlbnRTZWxl
Y3Rpb25MaXN0KiBsaXN0KQogICAgIGxpc3QtPmNsZWFyKCk7CiB9CiAKLUhUTUxDb250ZW50U2Vs
ZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdG9yOjpmaW5kRm9yKE5vZGUqIGtleSkgY29uc3QKK0hU
TUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdG9yOjpmaW5kRm9yKGNvbnN0IE5v
ZGUqIGtleSkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZWxlY3Rpb25TZXQuZmluZChrZXkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxl
Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5o
CmluZGV4IGUwMTE4MDUwMGJhZDEyMzQyM2ExNzU4OGE4MTkzMmYxODBmMTRjNTMuLmJjZmJkZGJi
ZDg4MjczODVhN2M5YWZjMTFjMjRmNmZlY2E2ZTM2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkKEhUTUxDb250ZW50U2VsZWN0aW9uKiB2YWx1ZSkgeyBtX3NldC5h
ZGQodmFsdWUpOyB9CiAgICAgdm9pZCByZW1vdmUoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVl
KSB7IG1fc2V0LnJlbW92ZSh2YWx1ZSk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX3NldC5pc0VtcHR5KCk7IH0KLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChO
b2RlKiBrZXkpIGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kKGNvbnN0IE5v
ZGUqIGtleSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFRyYW5zbGF0b3IgewpAQCAt
MTE4LDkgKzExOCw5IEBAIHByaXZhdGU6CiAgICAgUG9pbnRlclNldCBtX3NldDsKIH07CiAKLWlu
bGluZSBIVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQo
Tm9kZSoga2V5KSBjb25zdAoraW5saW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVu
dFNlbGVjdGlvblNldDo6ZmluZChjb25zdCBOb2RlKiBrZXkpIGNvbnN0CiB7Ci0gICAgUG9pbnRl
clNldDo6aXRlcmF0b3IgZm91bmQgPSBtX3NldC5maW5kPE5vZGUqLCBIVE1MQ29udGVudFNlbGVj
dGlvblNldDo6VHJhbnNsYXRvcj4oa2V5KTsKKyAgICBQb2ludGVyU2V0OjppdGVyYXRvciBmb3Vu
ZCA9IG1fc2V0LmZpbmQ8Y29uc3QgTm9kZSosIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpUcmFu
c2xhdG9yPihrZXkpOwogICAgIHJldHVybiBmb3VuZCAhPSBtX3NldC5lbmQoKSA/ICpmb3VuZCA6
IDA7CiB9CiAKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbGVjdChJ
bnNlcnRpb25Qb2ludCosIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwogICAgIHZvaWQgdW5z
ZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rp
b24qIGZpbmRGb3IoTm9kZSoga2V5KSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiog
ZmluZEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0OwogCiAgICAgdm9pZCB3aWxsU2VsZWN0KCk7
CiAgICAgYm9vbCBpc1NlbGVjdGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggYjUyODJjZGRjMjc0ODJjZWMzMzUzNWRkYmViNjhj
NzBmNTU4ODRiYy4uNzRiMWEyMDBjNGQ5ZTJiMTI3ODA1NGM0NDdhZjQwMTFkNDZkNDhiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC03MSw3ICs3
MSw3IEBAIHByaXZhdGU6CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0IG1fc2VsZWN0aW9u
czsKIH07CiAKLWlubGluZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKK2lubGlu
ZSBib29sIGlzSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODgsNiArODgsMTIgQEAgaW5saW5lIEluc2Vy
dGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEluc2VydGlvblBvaW50Kj4obm9kZSk7CiB9CiAKK2lubGluZSBjb25zdCBJbnNlcnRp
b25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VS
VChpc0luc2VydGlvblBvaW50KG5vZGUpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKwogaW5saW5lIGJvb2wgaXNTaGFkb3dCb3VuZGFy
eShOb2RlKiBub2RlKQogewogICAgIGlmICghaXNJbnNlcnRpb25Qb2ludChub2RlKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjODI2YjE1MGEwNzJkODg1MzAzZTJmNDIy
ZjIzNDdlMGY2MWI4MmZlLi4yYTU1Y2EwYTVjMTI5OTI2MGFlMmE5YzcyYTYxNWNkMmM2MTg5MTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSZWlmaWVkVHJlZVRyYXZlcnNhbC5oIgogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgpAQCAtMTgwLDYgKzE4MSw1MSBAQCBib29sIEludGVybmFsczo6YXR0
YWNoZWQoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG5vZGUtPmF0
dGFjaGVkKCk7CiB9CiAKK05vZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdJblJlaWZpZWRUcmVl
KE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
ICAgIHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bmV4dFNpYmxpbmcobm9kZSk7Cit9CisK
K05vZGUqIEludGVybmFsczo6Zmlyc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpmaXJzdENoaWxkKG5vZGUpOworfQorCitOb2RlKiBJbnRlcm5hbHM6
Omxhc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjps
YXN0Q2hpbGQobm9kZSk7Cit9CisKK05vZGUqIEludGVybmFsczo6dHJhdmVyc2VOZXh0Tm9kZUlu
UmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFu
b2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHRO
b2RlKG5vZGUpOworfQorCitOb2RlKiBJbnRlcm5hbHM6OnRyYXZlcnNlUHJldmlvdXNOb2RlSW5S
ZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5v
ZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlUHJldmlv
dXNOb2RlKG5vZGUpOworfQorCiBTdHJpbmcgSW50ZXJuYWxzOjplbGVtZW50UmVuZGVyVHJlZUFz
VGV4dChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWVs
ZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDY4ODM0NjA1ZjQ2NDA3
OWE5ZTljNWJhYWM3NzgzYTcyMTE2NzJiNGQuLjM0M2E0ZDM0M2U2MWIwN2RhYjZhMjQ4MTQyYmM4
ZDRjMzcxOWQzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtODQsNiArODQs
MTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRhY2hlZChOb2RlKiwgRXhjZXB0aW9uQ29kZSYp
OwogCisgICAgTm9kZSogbmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRpb25D
b2RlJik7CisgICAgTm9kZSogZmlyc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBOb2RlKiBsYXN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRp
b25Db2RlJik7CisgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRyZWUoTm9kZSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVpZmll
ZFRyZWUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKKwogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikK
ICAgICB2b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYgY29sb3JWYWx1ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApp
bmRleCBkZGExMjI5ODRhNGNmNWMwZjk0MWMwOWExZjdiMDRiZTIxN2Y4MzJjLi5mNDRiODk2NWNi
OWFmOWUzMzJlYmYzNGJlZDU0YWIwNzg4NGY3ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC01NSw2ICs1NSwxMiBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgRWxl
bWVudCBnZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChpbiBOb2RlIHNoYWRvd1Jvb3QsIGluIERP
TVN0cmluZyBpZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGJvb2xlYW4gaXNWYWxp
ZENvbnRlbnRTZWxlY3QoaW4gRWxlbWVudCBjb250ZW50RWxlbWVudCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKKyAgICAgICAgTm9kZSBuZXh0U2libGluZ0luUmVpZmllZFRyZWUoaW4gTm9kZSBu
b2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSBmaXJzdENoaWxkSW5SZWlm
aWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBOb2Rl
IGxhc3RDaGlsZEluUmVpZmllZFRyZWUoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKyAgICAgICAgTm9kZSB0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5v
ZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHRyYXZlcnNlUHJldmlvdXNO
b2RlSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworCiAg
ICAgICAgIGJvb2xlYW4gYXR0YWNoZWQoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOUFVUX0NPTE9SKSAmJiBFTkFCTEVfSU5QVVRfQ09M
T1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA4MjM4OGVhZDUxYWE1ZGM0NTg1MWUxZGMyNTg2
ZGM4NTU2NGNlNjQyLi4yMTU0ZDM4YTVlZmZjZWE4ZWIxOWQ1OTVmMDZmYTdjNmVhNWQ4NGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNjcsNiArMTY3LDcgQEAgRVhQT1JUUwogICAgICAg
ICA/ZXF1YWxJZ25vcmluZ0Nhc2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBaCiAgICAg
ICAgID9leHRlcm5hbFJlcHJlc2VudGF0aW9uQFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAUEFW
RWxlbWVudEAxQElAWgogICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQElA
WgorICAgICAgICA/Zmlyc3RDaGlsZEBSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBB
Vk5vZGVAMkBQQlYzMkBAWgogICAgICAgICA/ZnJhbWVEZXN0cm95ZWRARnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/ZnJvbVVURjhXaXRoTGF0aW4xRmFs
bGJhY2tAU3RyaW5nQFdURkBAU0E/QVYxMkBQQkVJQFoKICAgICAgICAgP2dldENhY2hlZERPTVN0
cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0
QDFAUEJVQ2xhc3NJbmZvQDNAQFoKQEAgLTE3OSw3ICsxODAsOSBAQCBFWFBPUlRTCiAgICAgICAg
ID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmlu
Z0BXVEZAQEBaCiAgICAgICAgID9qc1N0cmluZ1Nsb3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1
ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8k
V2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVU3RyaW5nSGFzaEAyQFU/JEhhc2hUcmFpdHNAUEFW
U3RyaW5nSW1wbEBXVEZAQEAyQFU/JEhhc2hUcmFpdHNAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBA
SlNDQEBAMkBAV1RGQEBQQVZTdHJpbmdJbXBsQDZAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNV
c2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCisgICAg
ICAgID9sYXN0Q2hpbGRAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJA
UEJWMzJAQFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdl
YkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RG
QEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAgP25l
eHRTaWJsaW5nQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9kZUAyQFBCVjMy
QEBaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBJQFoKICAgICAgICAgP251
bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgogICAgICAgICA/b2JzZXJ2ZUZyYW1lQEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBJQUVYUEFWRnJhbWVAMkBAWgpAQCAtMjI2LDYg
KzIyOSw4IEBAIEVYUE9SVFMKICAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpT
Q0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZSYW5nZUAxQEBaCiAg
ICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBB
VkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUxpc3RAMUBAWgogICAgICAgICA/dG9SYW5nZUBX
ZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpTVmFsdWVASlNDQEBAWgorICAgICAgICA/dHJhdmVyc2VO
ZXh0Tm9kZUBSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVAMkBQQlYzMkBA
WgorICAgICAgICA/dHJhdmVyc2VQcmV2aW91c05vZGVAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2Vi
Q29yZUBAU0FQQVZOb2RlQDJAUEJWMzJAQFoKICAgICAgICAgP3VwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3VzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBB
QEBXVEZAQFhaCiAgICAgICAgID91dGY4QFN0cmluZ0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBfTkBa
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggZTA1NGQ1NTJmNDUxM2M1YjRi
MDdjZjRlNzQ3MmVjNjFhNzU5NWE2Mi4uMzcwZmQxZWEwYjMyNWEzNmQxYTVhOGFiNzM5MzJmNjIw
MzhiMTIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVm
CisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTU4LDYgKzE1
OCw3IEBAIEVYUE9SVFMKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUBQ
QkVAWgogICAgICAgICA/ZXF1YWxJZ25vcmluZ0Nhc2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAx
QFBCRUBaCiAgICAgICAgID9leHRlcm5hbFJlcHJlc2VudGF0aW9uQFdlYkNvcmVAQFlBP0FWU3Ry
aW5nQFdURkBAUEFWRWxlbWVudEAxQElAWgorICAgICAgICA/Zmlyc3RDaGlsZEBSZWlmaWVkVHJl
ZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVAMkBQQlYzMkBAWgogICAgICAgICA/ZnJhbWVE
ZXN0cm95ZWRARnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAg
ICA/Z2V0Q2FjaGVkRE9NU3RydWN0dXJlQFdlYkNvcmVAQFlBUEFWU3RydWN0dXJlQEpTQ0BAUEFW
SlNET01HbG9iYWxPYmplY3RAMUBQQlVDbGFzc0luZm9AM0BAWgogICAgICAgICA/Z2V0RGF0YTE2
U2xvd0Nhc2VAU3RyaW5nSW1wbEBXVEZAQEFCRVBCX1dYWgpAQCAtMTY5LDkgKzE3MCwxMSBAQCBF
WFBPUlRTCiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3Jl
QEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc1N0cmluZ1Nsb3dDYXNlQFdlYkNv
cmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJp
bmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVU3RyaW5nSGFzaEAyQFU/
JEhhc2hUcmFpdHNAUEFWU3RyaW5nSW1wbEBXVEZAQEAyQFU/JEhhc2hUcmFpdHNAVj8kV2Vha0BW
SlNTdHJpbmdASlNDQEBASlNDQEBAMkBAV1RGQEBQQVZTdHJpbmdJbXBsQDZAQFoKICAgICAgICAg
P2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3Jl
QEBRQkVfTlhaCisgICAgICAgID9sYXN0Q2hpbGRAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29y
ZUBAU0FQQVZOb2RlQDJAUEJWMzJAQFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdl
YkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJA
QFoKICAgICAgICAgP29ic2VydmVGcmFtZUBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29y
ZUBASUFFWFBBVkZyYW1lQDJAQFoKICAgICAgICAgP292ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1
YWdlc0BXZWJDb3JlQEBZQVhBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQEBaCisg
ICAgICAgID9uZXh0U2libGluZ0BSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5v
ZGVAMkBQQlYzMkBAWgogICAgICAgICA/bnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbkBO
b2RlQFdlYkNvcmVAQFFCRUlYWgogICAgICAgICA/cGFnZUBEb2N1bWVudEBXZWJDb3JlQEBRQkVQ
QVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29udHJvbFRpbnRzQEZyYW1lVmlld0BXZWJDb3Jl
QEBBQUVYWFoKQEAgLTIxMSw2ICsyMTQsOCBAQCBFWFBPUlRTCiAgICAgICAgID90b0pTQFdlYkNv
cmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0
QDFAUEFWUmFuZ2VAMUBAWgogICAgICAgICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlND
QEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVk5vZGVMaXN0QDFAQFoK
ICAgICAgICAgP3RvUmFuZ2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoK
KyAgICAgICAgP3RyYXZlcnNlTmV4dE5vZGVAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBA
U0FQQVZOb2RlQDJAUEJWMzJAQFoKKyAgICAgICAgP3RyYXZlcnNlUHJldmlvdXNOb2RlQFJlaWZp
ZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9kZUAyQFBCVjMyQEBaCiAgICAgICAgID91
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFF
WFhaCiAgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBP0FWPyRWZWN0
b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJD
b3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNjUy
ZjE4MmU2ODRmNTRiYjZhZWMzM2RhYjk2ZjAxNGVmNWM1YWY5YS4uODcyNzQ2M2ZjN2NhNTMwNGQ3
OWMzMzdhYTYyMmY3MDEwZTlmMjkyYiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC02Myw2
ICs2MywxMSBAQCBfWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERv
Y3VtZW50RTsKIF9aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMzlzZXRSZXNvdXJjZXNE
YXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNFaWk7CiBfWk43V2ViQ29yZTIwTm9kZVJlbmRlcmlu
Z0NvbnRleHRDMUVQTlNfNE5vZGVFOwogX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0
RDFFdjsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDExbmV4dFNpYmxpbmdFUEtO
U180Tm9kZUU7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwyMHRyYXZlcnNlUHJl
dmlvdXNOb2RlRVBLTlNfNE5vZGVFOworX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2Fs
OWxhc3RDaGlsZEVQS05TXzROb2RlRTsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNh
bDE2dHJhdmVyc2VOZXh0Tm9kZUVQS05TXzROb2RlRTsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJl
ZVRyYXZlcnNhbDEwZmlyc3RDaGlsZEVQS05TXzROb2RlRTsKIF9aTjdXZWJDb3JlMjFnZXRDYWNo
ZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUEtOM0pTQzlDbGFzc0luZm9F
OwogX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRpb25FUE5TXzdFbGVtZW50RWo7CiBf
Wk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2OwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI2ZjNiMDk5YzM3
MDlkMjQ1ODI4MGNkN2FiMjQxNzlhMDNkYjcyNzUuLmNhZGZmYTEwZThhODgyOTI1M2RhMDIwMWNk
MTI3N2Q0NjNiNGQzOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wMy0yMiAgSGF5YXRv
IEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEFkZCBS
ZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBpbnRlcm5hbCBBUElzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW50ZXJuYWwgQVBJcyB3aGljaCBj
YW4gYmUgdXNlZCB0byB0cmF2ZXJzZSBSZWlmaWVkIERPTSB0cmVlLCB3aGljaCBpcworICAgICAg
ICBhIHJlc3VsdCBvZiBub2RlIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0gZXhwbGFpbmVkIGluIFNo
YWRvdyBET00gc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21wb25l
bnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5odG1sCisKKyAgICAgICAgRXZlcnkg
cHVibGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIFJlaWZpZWRUcmVlVHJhdmVyc2FsIGFyZSBzdGF0
aWMKKyAgICAgICAgZnVuY3Rpb25zIGFuZCBhcmUgbmFtZWQgaW4gYSBzaW1pbGFyIHdheSB0byBv
bmVzIGRlZmluZWQgaW4gV2ViQ29yZTo6Tm9kZSBjbGFzcy4KKyAgICAgICAgVGhlIG9ubHkgZGlm
ZmVyZW5jZSBpcyB0aGF0IFJlaWZpZWRUcmVlVHJhdmVyc2FsIEFQSXMgY29uc2lkZXIgc2hhZG93
CisgICAgICAgIGhvc3RzIGFuZCBhbHNvIHRyYXZlcnNlIG5vZGVzIGlzIFNoYWRvdyBET00gc3Vi
dHJlZXMsIGNyb3NzaW5nIHNoYWRvdydzIHVwcGVyIGFuZCBsb3dlciBib3VuZGFyeQorICAgICAg
ICB0cmFuc3BhcmVudGx5LgorCisgICAgICAgIFRoZXJlIGlzIG5vIGFjdHVhbCBjbGllbnQgd2hp
Y2ggdXNlcyB0aGVzZSBBUElzLiBGb2xsb3ctdXAgcGF0Y2hlcyBmb3IgRm9jdXNOYXZpZ2F0aW9u
CisgICAgICAgIGFuZCBFdmVudERpc3BhdGNoZXIgd2lsbCB1c2UgdGhlIEFQSXMgc28gdGhhdCB0
aGV5IGNhbiB0cmF2ZXJzZSBub2RlIGluIHJlaWZpZWQgdHJlZSBvcmRlci4KKworICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9T
a2lwcGVkOgorCiAyMDEyLTAzLTIxICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYWt1Y29ARnJl
ZUJTRC5vcmc+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRy
YXZlcnNhbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA0MjRlNzQxODdhMmU1N2M4NWVkZjM2
NmFkZDYzM2VjN2JhNmMzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1
NiBAQAorVGVzdHMgZm9yIFJlaWZpZWQgRE9NIFRyZWUgVHJhdmVyc2FsIEFQSXMuIENhbiBvbmx5
IHJ1biB3aXRoaW4gRFJUCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitTaGFkb3dS
b290IHNob3VsZCBiZSB1c2VkLgorUmVpZmllZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1i
CisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorVHJhdmVyc2Ug
aW4gYmFja3dhcmQuCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitBIGNvbnRlbnQgZWxlbWVudCBz
aG91bGQgc2VsZWN0IGxpZ2h0IGNoaWxkcmVuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlE
SVYJIGlkPWIKKwlESVYJIGlkPWMKKwlESVYJIGlkPWQKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4K
K0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9ZAorVHJhdmVyc2UgaW4g
YmFja3dhcmQuCitESVYJIGlkPWQKK0RJVgkgaWQ9YworRElWCSBpZD1iCitESVYJIGlkPWEKKwor
VGVzdCBmb3IgY29udGVudCBlbGVtZW50IHNlbGVjdG9yLgorUmVpZmllZCBUcmVlOgorRElWCSBp
ZD1hCisJRElWCSBpZD1iCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK1RyYXZl
cnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1hCisKK0xpZ2h0IGNoaWxkcmVuIHNob3VsZCBiZSBz
ZWxlY3RlZCBvbmx5IGF0IG9uY2UuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlk
PWIKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitUcmF2ZXJz
ZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZQorRElWCSBpZD1kCitESVYJIGlkPWMKK0RJVgkgaWQ9
YQorCitBIGNvbnRlbnQgZWxlbWVudCBjYW4gaGF2ZSBmYWxsYmFjayBlbGVtZW50cy4KK1JlaWZp
ZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCURJVgkgaWQ9ZjEKKwlESVYJIGlkPWYy
CisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1m
MQorRElWCSBpZD1mMgorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWYyCitESVYJIGlk
PWYxCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitGYWxsYmFjayBlbGVtZW50cyBzaG91bGQgbm90
IGJlIHVzZWQgaWYgIGVsZW1lbnQgc2VsZWN0cyBhbnkgZWxlbWVudHMuCitSZWlmaWVkIFRyZWU6
CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwlESVYJIGlkPWYxCisJRElWCSBpZD1mMgorCitUcmF2
ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9ZjEKK0RJVgkg
aWQ9ZjIKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1mMgorRElWCSBpZD1mMQorRElW
CSBpZD1iCitESVYJIGlkPWEKKworVGVzdCBmb3IgTmVzdGVkIFNoYWRvd1Jvb3RzLgorUmVpZmll
ZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1iCisJCURJVgkgaWQ9YworCQlESVYJIGlkPWUK
KwkJRElWCSBpZD1kCisJRElWCSBpZD1mCisJRElWCSBpZD1oCisJRElWCSBpZD1pCisJRElWCSBp
ZD1nCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBp
ZD1jCitESVYJIGlkPWUKK0RJVgkgaWQ9ZAorRElWCSBpZD1mCitESVYJIGlkPWgKK0RJVgkgaWQ9
aQorRElWCSBpZD1nCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZworRElWCSBpZD1p
CitESVYJIGlkPWgKK0RJVgkgaWQ9ZgorRElWCSBpZD1kCitESVYJIGlkPWUKK0RJVgkgaWQ9Ywor
RElWCSBpZD1iCitESVYJIGlkPWEKKworVGVzdCBmb3IgTXVsdGlwbGUgU2hhZG93Um9vdHMuCitS
ZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWQKKwlESVYJIGlkPWIKKwlESVYJIGlk
PWYKKwlESVYJIGlkPWMKKwlESVYJIGlkPWUKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkg
aWQ9YQorRElWCSBpZD1kCitESVYJIGlkPWIKK0RJVgkgaWQ9ZgorRElWCSBpZD1jCitESVYJIGlk
PWUKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1lCitESVYJIGlkPWMKK0RJVgkgaWQ9
ZgorRElWCSBpZD1iCitESVYJIGlkPWQKK0RJVgkgaWQ9YQorCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTc4YWVlYzc1MmYxNmNmYmZlY2VlYjc3NmEwZjAyNzExNjI1ZTU1ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0
bWwKQEAgLTAsMCArMSwxNjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3RzIGZvciBSZWlmaWVkIERPTSBUcmVlIFRyYXZlcnNhbCBBUElzLiBDYW4gb25seSBydW4g
d2l0aGluIERSVCIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gZHVtcE5vZGUobm9k
ZSkKK3sKKyAgICB2YXIgb3V0cHV0ID0gbm9kZS5ub2RlTmFtZSArICJcdCI7CisgICAgaWYgKG5v
ZGUuaWQpCisgICAgICAgIG91dHB1dCArPSAnIGlkPScgKyBub2RlLmlkOworICAgIGlmIChub2Rl
LmNsYXNzTmFtZSkKKyAgICAgICAgb3V0cHV0ICs9ICcgY2xhc3M9JyArIG5vZGUuY2xhc3NOYW1l
OworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGR1bXBSZWlmaWVkVHJlZShub2Rl
LCBpbmRlbnQpCit7CisgICAgaW5kZW50ID0gaW5kZW50IHx8ICIiOworICAgIHZhciBvdXRwdXQg
PSBpbmRlbnQgKyBkdW1wTm9kZShub2RlKSArICJcbiI7CisgICAgdmFyIGNoaWxkOworICAgIGZv
ciAoY2hpbGQgPSBpbnRlcm5hbHMuZmlyc3RDaGlsZEluUmVpZmllZFRyZWUobm9kZSk7IGNoaWxk
OyBjaGlsZCA9IGludGVybmFscy5uZXh0U2libGluZ0luUmVpZmllZFRyZWUoY2hpbGQpKQorICAg
ICAgICAgb3V0cHV0ICs9IGR1bXBSZWlmaWVkVHJlZShjaGlsZCwgaW5kZW50ICsgIlx0Iik7Cisg
ICAgcmV0dXJuIG91dHB1dDsKK30KKworZnVuY3Rpb24gbGFzdE5vZGVJblJlaWZpZWRUcmVlKHJv
b3QpCit7CisgICAgdmFyIGxhc3ROb2RlID0gcm9vdDsKKyAgICB3aGlsZSAoaW50ZXJuYWxzLmxh
c3RDaGlsZEluUmVpZmllZFRyZWUobGFzdE5vZGUpKQorICAgICAgICBsYXN0Tm9kZSA9IGludGVy
bmFscy5sYXN0Q2hpbGRJblJlaWZpZWRUcmVlKGxhc3ROb2RlKTsKKyAgICByZXR1cm4gbGFzdE5v
ZGU7Cit9CisKK2Z1bmN0aW9uIHNob3dSZWlmaWVkVHJlZUJ5VHJhdmVyc2luZ0luRm93YXJkKHJv
b3QpCit7CisgICAgdmFyIG5vZGUgPSByb290OworICAgIHZhciBsYXN0ID0gbGFzdE5vZGVJblJl
aWZpZWRUcmVlKHJvb3QpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGRlYnVnKGR1bXBO
b2RlKG5vZGUpKTsKKyAgICAgICAgaWYgKG5vZGUgPT0gbGFzdCkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBub2RlID0gaW50ZXJuYWxzLnRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVl
KG5vZGUpOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5n
SW5CYWNrd2FyZChyb290KQoreworICAgIHZhciBub2RlID0gbGFzdE5vZGVJblJlaWZpZWRUcmVl
KHJvb3QpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGRlYnVnKGR1bXBOb2RlKG5vZGUp
KTsKKyAgICAgICAgaWYgKG5vZGUgPT0gcm9vdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBub2RlID0gaW50ZXJuYWxzLnRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVkVHJlZShub2Rl
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3dSZWlmaWVkVHJlZShub2RlKQoreworICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRM
ZWZ0OworCisgICAgZGVidWcoJ1JlaWZpZWQgVHJlZTonKTsKKyAgICBkZWJ1ZyhkdW1wUmVpZmll
ZFRyZWUobm9kZSkpOworCisgICAgZGVidWcoJ1RyYXZlcnNlIGluIGZvcndhcmQuJyk7CisgICAg
c2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5nSW5Gb3dhcmQobm9kZSk7CisKKyAgICBkZWJ1Zygn
VHJhdmVyc2UgaW4gYmFja3dhcmQuJyk7CisgICAgc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5n
SW5CYWNrd2FyZChub2RlKTsKKworICAgIGRlYnVnKCcnKTsKK30KKworZGVidWcoJ1NoYWRvd1Jv
b3Qgc2hvdWxkIGJlIHVzZWQuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdjJ30pKSk7CisKK2RlYnVnKCdBIGNvbnRlbnQgZWxlbWVudCBzaG91bGQgc2VsZWN0
IGxpZ2h0IGNoaWxkcmVuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdjJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSkpOwor
CitkZWJ1ZygnVGVzdCBmb3IgY29udGVudCBlbGVtZW50IHNlbGVjdG9yLicpOworc2hvd1JlaWZp
ZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAg
IGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAn
LmQnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJ30pKSk7CisKK2RlYnVnKCdMaWdodCBjaGlsZHJl
biBzaG91bGQgYmUgc2VsZWN0ZWQgb25seSBhdCBvbmNlLicpOworc2hvd1JlaWZpZWRUcmVlKAor
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmQnfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwKKyAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdlJ30pKSk7CisKK2RlYnVnKCdBIGNvbnRlbnQgZWxlbWVudCBjYW4gaGF2
ZSBmYWxsYmFjayBlbGVtZW50cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy56J30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmMSd9KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2YyJ30pKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdjJ30pKSk7CisKK2RlYnVnKCdGYWxsYmFjayBlbGVtZW50cyBzaG91bGQgbm90IGJlIHVzZWQg
aWYgPGNvbnRlbnQ+IGVsZW1lbnQgc2VsZWN0cyBhbnkgZWxlbWVudHMuJyk7CitzaG93UmVpZmll
ZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAg
Y3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcu
Yyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnZjEnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmMid9KSkpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSkpOworCitkZWJ1ZygnVGVzdCBmb3IgTmVzdGVk
IFNoYWRvd1Jvb3RzLicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2InfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdlJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnZid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2NvbnRlbnQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnZyd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdoJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaSd9KSkp
OworCitkZWJ1ZygnVGVzdCBmb3IgTXVsdGlwbGUgU2hhZG93Um9vdHMuJyk7CitzaG93UmVpZmll
ZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAg
Y3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSksCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZSd9
KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30pKSk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRl
eCA0OWMzNjQyMTRiNzcwMzcwNjQzZTkzZGEyZjE5OTVjMDQ0NDFhZGQ1Li5lNzQ4ZjU2Nzg1NTdh
ZGI3MmI2ODdiYTIxODlhYTRhYzMzZTI3MDA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApA
QCAtMTk0MSw2ICsxOTQxLDcgQEAgZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1vdXRz
aWRlLXNoYWRvdy1zdHlsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWlu
LW1lZGlhLWVsZW1lbnQuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1t
ZXRlci1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9nZXQtZWxlbWVudC1ieS1pZC1pbi1z
aGFkb3ctcm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0
YWNoZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZTVkOTlhOWY4OTJiYzk5ZDll
MTdjZDU5MzlhYmY2OGI2MjRlZDQ4Yy4uOGE5MDliMTI1YjgwZTc1NjAwYjYwMDAwNGM5YTQyNjA5
OWJmYzI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xNzQsNiArMTc0LDcgQEAgZmFz
dC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3cuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVu
ZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0
bWwKK2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctY29udGVudC1jcmFzaC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRt
bApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCAxYWVjNThkYmQ5NDMxZTAxZjA2YTUwYzJi
MmJmNjA5MzA1YWY5ZDIwLi5iZmMzYjIwNzU4MjAyZTRlY2U4MWJiNDk2MmEyMWMwZTI2ZTllYzQ1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ2OCw2ICsxNDY4LDcgQEAgZmFzdC9k
b20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy1zdHlsZS5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWluLW1lZGlhLWVsZW1lbnQuaHRtbAogZmFzdC9k
b20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1tZXRlci1lbGVtZW50Lmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9nZXQtZWxlbWVudC1ieS1pZC1pbi1zaGFkb3ctcm9vdC5odG1sCitmYXN0L2RvbS9z
aGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYWN0aXZlRWxlbWVudC5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCBhZWY3OTgyYTU2NWQ2NGEyZWQ1Y2UxZDAxZjll
MzI0MzIwNWY0MTM4Li5jMTkzNWM4YmRhMTBmYmMyZGM2ZmVhMzRhZjEyZDM2MDIxNWQzYzZlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5NzksNiArMTk3OSw3IEBA
IGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3cuaHRtbAogZmFz
dC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1tZWRpYS1lbGVtZW50Lmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWV0ZXItZWxlbWVudC5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvZ2V0LWVsZW1lbnQtYnktaWQtaW4tc2hhZG93LXJvb3QuaHRtbAorZmFzdC9kb20v
c2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAog
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFjdGl2ZUVsZW1lbnQuaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvU2tpcHBlZAppbmRleCA4OWM2NTc2NjhlYjdhYTJiNTMyZWQ3OGZiNDY2YTY2NjBkYTJm
YTU3Li4wYjU0Y2YxMGZhZTA1NWVjYjU5MjdlN2I0MDYyZWYyNDcyNjIyODVmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvU2tpcHBlZApAQCAtMTA4NSw2ICsxMDg1LDcgQEAgZmFzdC9kb20vc2hhZG93L2Nv
bnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1lbGVtZW50LW91dHNpZGUtc2hhZG93LXN0eWxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250
ZW50LWVsZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1lbGVtZW50LWluLW1ldGVyLWVsZW1lbnQuaHRtbAorZmFzdC9kb20vc2hhZG93L3JlaWZpZWQt
dHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1yb290LWFjdGl2ZUVsZW1lbnQuaHRtbApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IGExNzFmZmIyZTBmNjkzNjM4YjYwMzE2YzBkYWIxYTU3MjdmOGYyZmIu
LmVkMDMzMDYzZWNkMzBjNGE2NzU3ZGY2ZmZkZDc2YWZlYjE5YmQ1NTQgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMy0yMiAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEFk
ZCBSZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBpbnRlcm5hbCBBUElzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW50ZXJuYWwgQVBJcyB3aGlj
aCBjYW4gYmUgdXNlZCB0byB0cmF2ZXJzZSBSZWlmaWVkIERPTSB0cmVlLCB3aGljaCBpcworICAg
ICAgICBhIHJlc3VsdCBvZiBub2RlIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0gZXhwbGFpbmVkIGlu
IFNoYWRvdyBET00gc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21w
b25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5odG1sCisKKyAgICAgICAgRXZl
cnkgcHVibGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIFJlaWZpZWRUcmVlVHJhdmVyc2FsIGFyZSBz
dGF0aWMKKyAgICAgICAgZnVuY3Rpb25zIGFuZCBhcmUgbmFtZWQgaW4gYSBzaW1pbGFyIHdheSB0
byBvbmVzIGRlZmluZWQgaW4gV2ViQ29yZTo6Tm9kZSBjbGFzcy4KKyAgICAgICAgVGhlIG9ubHkg
ZGlmZmVyZW5jZSBpcyB0aGF0IFJlaWZpZWRUcmVlVHJhdmVyc2FsIEFQSXMgY29uc2lkZXIgc2hh
ZG93CisgICAgICAgIGhvc3RzIGFuZCBhbHNvIHRyYXZlcnNlIG5vZGVzIGlzIFNoYWRvdyBET00g
c3VidHJlZXMsIGNyb3NzaW5nIHNoYWRvdydzIHVwcGVyIGFuZCBsb3dlciBib3VuZGFyeQorICAg
ICAgICB0cmFuc3BhcmVudGx5LgorCisgICAgICAgIFRoZXJlIGlzIG5vIGFjdHVhbCBjbGllbnQg
d2hpY2ggdXNlcyB0aGVzZSBBUElzLiBGb2xsb3ctdXAgcGF0Y2hlcyBmb3IgRm9jdXNOYXZpZ2F0
aW9uCisgICAgICAgIGFuZCBFdmVudERpc3BhdGNoZXIgd2lsbCB1c2UgdGhlIEFQSXMgc28gdGhh
dCB0aGV5IGNhbiB0cmF2ZXJzZSBub2RlIGluIHJlaWZpZWQgdHJlZSBvcmRlci4KKworICAgICAg
ICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDMtMjAgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgd3RmL1BsYXRmb3JtLmgg
ZnJvbSBKYXZhU2NyaXB0Q29yZSB0byBTb3VyY2UvV1RGL3d0Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133440</attachid>
            <date>2012-03-23 00:53:08 -0700</date>
            <delta_ts>2012-03-23 02:07:30 -0700</delta_ts>
            <desc>fix vcproj</desc>
            <filename>bug-79197-20120323165306.patch</filename>
            <type>text/plain</type>
            <size>60673</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZiYjNkMTdhMWQ2YWNi
NmU0YzkzM2NmODUyMTRhOTJmMmVmZjFkMC4uNTUxNzdhY2RlZDRiOTFkZDJkNTA5NWVlM2Y4ZDlm
YTdlZjkxN2RiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTAzLTIyICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisgICAg
ICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQgaW4g
U2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBv
bmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBFdmVy
eSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJlIHN0
YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRv
IG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBk
aWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBzaGFk
b3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERPTSBz
dWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5CisgICAg
ICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVudCB3
aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmlnYXRp
b24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0aGF0
IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjppc1NoYWRvd0hvc3QpOgorICAgICAgICAoV2ViQ29yZTo6c2hh
ZG93VHJlZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dUcmVlT2ZQYXJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VMaWdodENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVy
c2FsOjp0cmF2ZXJzZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
OjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJz
YWw6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGlu
Z09yQmFja1RvWW91bmdlclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OmVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTm9kZUVzY2FwaW5nRmFsbGJhY2tD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9k
ZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmll
ZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVPckJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlSW5DdXJyZW50VHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUJh
Y2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRU
cmVlVHJhdmVyc2FsOjphZGp1c3RlZFBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBl
ckJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2
ZXJzZVByZXZpb3VzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6dHJhdmVyc2VQcmV2aW91c05vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KToKKyAg
ICAgICAgKiBkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFJlaWZpZWRUcmVlVHJhdmVyc2FsKToKKyAgICAgICAgKiBkb20vU2hh
ZG93VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2lu
dEZvcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpzZWxlY3Rpb25Gb3IpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoU2hhZG93VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVj
dG9yOjpmaW5kRm9yKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9y
Lmg6CisgICAgICAgIChIVE1MQ29udGVudFNlbGVjdGlvblNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZCk6CisgICAgICAgIChIVE1MQ29udGVudFNl
bGVjdG9yKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAg
ICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjp0b0luc2Vy
dGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bmV4dFNpYmxpbmdJblJlaWZp
ZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpmaXJzdENoaWxkSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Omxhc3RDaGlsZEluUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0
cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OnRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVkVHJlZSk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuaWRsOgorCiAyMDEyLTAzLTIyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTW92ZSBOb3RpZmljYXRpb25zIEFQSXMgZnJvbSBET01XaW5kb3cuaWRs
IHRvIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsIChQYXJ0IDEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTYx
MjhkYTgwNDE1OTBiYTljODU5OTg2M2Q2ODI3ZGY0YWFmNWEwMC4uOWNkZjg0M2UyMWY3N2ExNDJk
OGZiYjgwOTMzNTMwODIyZmNhNDY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEy
LTAzLTIyICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hh
ZG93IERPTV0gQWRkIFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5h
bCBBUElzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdo
aWNoIGlzCisgICAgICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBl
eHBsYWluZWQgaW4gU2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3Jn
L2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKwor
ICAgICAgICBFdmVyeSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2
ZXJzYWwgYXJlIHN0YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNp
bWlsYXIgd2F5IHRvIG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAg
ICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBj
b25zaWRlciBzaGFkb3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMg
U2hhZG93IERPTSBzdWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJv
dW5kYXJ5CisgICAgICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0
dWFsIGNsaWVudCB3aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBG
b2N1c05hdmlnYXRpb24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUg
QVBJcyBzbyB0aGF0IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVy
LgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZM
aXRlLmRlZjoKKwogMjAxMi0wMy0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgRmxhc2ggTlBSdW50aW1lIHNob3J0LWNpcmN1aXQg
aGFja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNThjZjVlNTBhZWNlYTMzNTI0NjY4YzFmMTA4
MjI1NDYyYzFkMjk5NC4uNmQ4MmMyNWRjOTc4MWU5N2MzMzFlZGNkOGFhZDcxM2VlMDJlYWVkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYxNCw2ICs2MTQsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgZG9tL1JhbmdlLmNwcAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAKICAgICBk
b20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwCisgICAgZG9tL1JlaWZpZWRUcmVlVHJhdmVy
c2FsLmNwcAogICAgIGRvbS9TY29wZWRFdmVudFF1ZXVlLmNwcAogICAgIGRvbS9TY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA5Y2U3ZTdkOTI5YWQ0ZWQ0MzA3NTIzZDU1NzJmN2U5NzI0
NDlmMWYwLi43OGUwOWI0MWJlNzNjNWExZWMxNjhiN2ZmNjE2NWZjMDI2Y2E0ZjRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MTAsNiArMTkxMCw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisJU291cmNlL1dlYkNv
cmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1Jl
aWZpZWRUcmVlVHJhdmVyc2FsLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9SZW5kZXJlZERvY3Vt
ZW50TWFya2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCAzNTE0YjdiMGM2ZGZhYTAzNzc3NTNlNmI2NjVmMTk5ZTg5NGM2YmVjLi5jNTYwOTIwYzViMjli
MjVlMGU1ZGM0NDI0ZTc2M2MxZjdjMmEzZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTU5Miw2ICs1OTIs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vUmFuZ2VFeGNlcHRpb24uY3BwIFwKICAgICBkb20v
UmF3RGF0YURvY3VtZW50UGFyc2VyLmggXAogICAgIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5jcHAgXAorICAgIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9TY29w
ZWRFdmVudFF1ZXVlLmNwcCBcCiAgICAgZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAgXAogICAgIGRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwIFwKQEAgLTE3MjAsNiAr
MTcyMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9RdWFsaWZpZWROYW1lLmggXAogICAgIGRv
bS9SYW5nZS5oIFwKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisgICAgZG9t
L1JlaWZpZWRUcmVlVHJhdmVyc2FsLmggXAogICAgIGRvbS9SZW5kZXJlZERvY3VtZW50TWFya2Vy
LmggXAogICAgIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBcCiAgICAgZG9tL1Nj
cmlwdEVsZW1lbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDcyMWFjNGMzODk3MjA1ODNh
NWJiZTM4NjRmZDA5NzFlMGVmZWU1ODUuLjBjNDI2ZjdlMGMxN2Y2MzI5Mjc4ZmYxYmRkZGQ1YWYz
Nzg0NWM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02MDcsNiArNjA3LDExIEBAIF9fWk43
V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUy
ME5vZGVSZW5kZXJpbmdDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFj
dG9yeTI0Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50RVA3TlNFdmVudFA2TlNWaWV3CiBfX1pON1dl
YkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjdjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRF
UDdOU0V2ZW50CitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTFuZXh0U2libGlu
Z0VQS05TXzROb2RlRQorX19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDIwdHJhdmVy
c2VQcmV2aW91c05vZGVFUEtOU180Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2
ZXJzYWw5bGFzdENoaWxkRVBLTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJh
dmVyc2FsMTZ0cmF2ZXJzZU5leHROb2RlRVBLTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZp
ZWRUcmVlVHJhdmVyc2FsMTBmaXJzdENoaWxkRVBLTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyMFJl
bmRlckVtYmVkZGVkT2JqZWN0MzBzZXRTaG93c0NyYXNoZWRQbHVnaW5JbmRpY2F0b3JFdgogX19a
TjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTExc2V0TWltZVR5cGVFUktOM1dURjZTdHJp
bmdFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzZXRIVFRQU3RhdHVzQ29k
ZUVpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjc0MWYxMGY1MGNhNTNjYTIxOGMzNmNjMTQ1N2YyM2Vm
MjRlYTZlOC4uMzMyMDI1MWQxZWI3N2FkOGM0YjUzYjc5YmMwZjY4NTg3MGI3Nzk2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNjI1LDYgKzYyNSw3IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlLmgn
LAogICAgICAgICAgICAgJ2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaCcsCiAgICAgICAgICAgICAn
ZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9SZWlmaWVk
VHJlZVRyYXZlcnNhbC5oJywKICAgICAgICAgICAgICdkb20vUmVuZGVyZWREb2N1bWVudE1hcmtl
ci5oJywKICAgICAgICAgICAgICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oJywKICAgICAg
ICAgICAgICdkb20vU2NyaXB0UnVubmVyLmgnLApAQCAtNTIwNiw2ICs1MjA3LDggQEAKICAgICAg
ICAgICAgICdkb20vUmFuZ2VFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1Jhd0RhdGFE
b2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwJywKKyAg
ICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCcsCiAgICAgICAgICAgICAnZG9t
L1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2RvbS9TY29w
ZWRFdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDA3
NDI5ZTJkYjdkNGQ5MzdhY2QxZDk0OWRmNjY4NWMyNTZmMWU2ZjAuLmJlMGExOGZhODQ4ZTViMzRm
NTcxMmZhMjA4YzBlMDgzYjYyZjVhMDMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MTkwMiw2ICs1MTkwMiwxNCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUmVpZmllZFRyZWVUcmF2
ZXJzYWwuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNw
cCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzEwN2I4YTY2ZmViNDMxOTIx
YjMxMzVmOWVhY2U0MTExNGY5YTkxOS4uYzEyNDljZjVlYmFlNDc5MTI1MWFlMTYwOTAyMDczYTlm
MTg4ZGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTM1NSw2ICsxMzU1LDggQEAKIAkJNDlGRkJGMUQxMUM4NTUwRTAwNkE3
MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNz
Q29udGV4dDNETWFjLm1tICovOyB9OwogCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2Vi
R0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLzsgfTsKIAkJNDlGRkJG
NDAxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2Vi
R0xMYXllci5tbSAqLzsgfTsKKwkJNEEwMTNEMjkxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRU
cmVlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBMDEzRDI3MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNhbC5j
cHAgKi87IH07CisJCTRBMDEzRDJBMTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZl
cnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
MTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggKi87IH07CiAJ
CTRBMERBMkZFMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwREEyRkMxMjlC
MjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi87IH07CiAJCTRBMERB
MkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMERBMkZEMTI5QjI0MTkwMEFC
NjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTFFNzE5MDE0RTEwMUU0MDA2MjZGOUQgLyogSlNI
VE1MQ29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEExRTcxOEUxNEUxMDFFNDAwNjI2RjlEIC8qIEpTSFRNTENvbnRlbnRFbGVt
ZW50LmNwcCAqLzsgfTsKQEAgLTgyOTMsNiArODI5NSw4IEBACiAJCTQ5RkZCRjFDMTFDODU1MEUw
MDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNETWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTExheWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExh
eWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR0xMYXll
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEEwMTNEMjcxNTEyRkQ3NzAwRTFF
NjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNEEwMTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVy
c2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlaWZpZWRUcmVlVHJhdmVy
c2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZDMTI5QjI0MTkwMEFC
NjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEExRTcxOEUxNEUxMDFF
NDAwNjI2RjlEIC8qIEpTSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENvbnRlbnRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDcwLDYgKzIxMDc0LDggQEAKIAkJCQlBODREODI3QjExRDMz
M0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJODUwMzFCMzUw
QTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCAqLywKIAkJCQk4
NTAzMUIzNjBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCAqLywK
KwkJCQk0QTAxM0QyNzE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3Bw
ICovLAorCQkJCTRBMDEzRDI4MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bC5oICovLAogCQkJCUE3NkU1RjdFMTM1RTBEQ0YwMEE2OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50
TWFya2VyLmggKi8sCiAJCQkJNDk5OEFFQzQxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrLmggKi8sCiAJCQkJNDk5OEFFQzUxM0Y5RDBFQTAwOTBCMUFBIC8q
IFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbCAqLywKQEAgLTIzNzczLDYgKzIzNzc5
LDcgQEAKIAkJCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTAzMUI0QzBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTJEMEQwMDZDMUQwMEVGNkYyNiAvKiBS
ZWd1bGFyRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEEwMTNEMkExNTEyRkQ3NzAw
RTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUwMTA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJl
bW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTIyLDYgKzI2OTI5LDcgQEAK
IAkJCQlCQ0FCNDE4MTEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg1MDMxQjRCMEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEyQzBEMDA2QzFEMDBFRjZGMjYgLyogUmVn
dWxhckV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEEwMTNEMjkxNTEyRkQ3NzAw
RTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MzA5RTAwMDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRDA2QzBEOTAwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1h
dENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMDQwOTlFNjQ5MjAwNTZFNTgx
IC8qIFJlbW92ZU5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTlhZTc0ZmFmZmRlODg2
ZDQ0YmEyMTY2NTNhMzMxZDE2NTU4ZDQ0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKKworI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5j
bHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBib29sIGlzU2hhZG93SG9zdChjb25zdCBO
b2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAm
JiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRvd1Jvb3QoKTsKK30KKworc3RhdGljIGlubGluZSBT
aGFkb3dUcmVlKiBzaGFkb3dUcmVlRm9yKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5v
ZGUpLT5zaGFkb3dUcmVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hh
ZG93VHJlZSogc2hhZG93VHJlZU9mUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYg
KG5vZGUgJiYgbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gc2hhZG93VHJlZUZv
cihub2RlLT5wYXJlbnROb2RlKCkpOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VS
VChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBBU1NFUlQoIWNoaWxkIHx8ICFjaGls
ZC0+aXNTaGFkb3dSb290KCkpOworICAgIHJldHVybiBjaGlsZDsKK30KKworTm9kZSogUmVpZmll
ZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VS
VChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hp
bGQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUqIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNv
bnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0g
dHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9u
QmFja3dhcmQpOworICAgIEFTU0VSVCghY2hpbGQgfHwgIWNoaWxkLT5pc1NoYWRvd1Jvb3QoKSk7
CisgICAgcmV0dXJuIGNoaWxkOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VDaGlsZChjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlv
biBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIC8vIEZJWE1FOiBBZGQgYW4g
YXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAxMAorICAg
IC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChu
b2RlKS0+aXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7Cisg
ICAgU2hhZG93VHJlZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVGb3Iobm9kZSk7CisgICAgaWYg
KHNoYWRvd1RyZWUgJiYgc2hhZG93VHJlZS0+aGFzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1
cm4gdHJhdmVyc2VMaWdodENoaWxkcmVuKHNoYWRvd1RyZWUtPnlvdW5nZXN0U2hhZG93Um9vdCgp
LCBkaXJlY3Rpb24pOworICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgZGly
ZWN0aW9uKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTGlnaHRD
aGlsZHJlbihjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBk
aXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChOb2RlKiBjaGlsZCA9IChk
aXJlY3Rpb24gPT0gUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gbm9kZS0+
Zmlyc3RDaGlsZCgpIDogbm9kZS0+bGFzdENoaWxkKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVy
c2VOb2RlKGNoaWxkLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOb2RlKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRU
cmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7Cisg
ICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgY29uc3QgSFRNTENvbnRl
bnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25MaXN0ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+
c2VsZWN0aW9ucygpOworICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlv
biA9IChkaXJlY3Rpb24gPT0gUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8g
c2VsZWN0aW9uTGlzdC0+Zmlyc3QoKSA6IHNlbGVjdGlvbkxpc3QtPmxhc3QoKSkpCisgICAgICAg
ICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKHNlbGVjdGlvbi0+bm9kZSgpLCBkaXJlY3Rpb24pOwor
ICAgICAgICByZXR1cm4gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIGRpcmVjdGlvbik7Cisg
ICAgfQorICAgIHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihub2RlKTsKK30KKworTm9kZSogUmVp
ZmllZFRyZWVUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
QVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIE5v
ZGUqIG5leHQgPSB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFJl
aWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgQVNTRVJUKCFuZXh0IHx8
ICFuZXh0LT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIG5leHQ7Cit9CisKK05vZGUqIFJl
aWZpZWRUcmVlVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sK
KyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7Cisg
ICAgTm9kZSogbmV4dCA9IHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9k
ZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFu
ZXh0IHx8ICFuZXh0LT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIG5leHQ7Cit9CisKK05v
ZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlv
blBvaW50KGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRp
cmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgU2hhZG93VHJlZSogc2hhZG93VHJl
ZSA9IHNoYWRvd1RyZWVPZlBhcmVudChub2RlKTsKKyAgICBpZiAoIXNoYWRvd1RyZWUpCisgICAg
ICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7
CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRvd1RyZWUtPnNlbGVj
dGlvbkZvcihub2RlKTsKKyAgICBpZiAoIXNlbGVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRyYXZl
cnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0aW9uKTsKKyAgICBpZiAoSFRNTENv
bnRlbnRTZWxlY3Rpb24qIG5leHRTZWxlY3Rpb24gPSAoZGlyZWN0aW9uID09IFJlaWZpZWRUcmVl
VHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IHNlbGVjdGlvbi0+bmV4dCgpIDogc2VsZWN0aW9u
LT5wcmV2aW91cygpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTm9kZShuZXh0U2VsZWN0aW9u
LT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFja1Rv
SW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBkaXJlY3Rpb24pOwor
fQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50
VHJlZShjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChOb2RlKiBuZXh0ID0gKGRpcmVj
dGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5uZXh0
U2libGluZygpIDogbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpKQorICAgICAgICByZXR1cm4gdHJh
dmVyc2VOb2RlKG5leHQsIGRpcmVjdGlvbik7CisgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJz
ZVNpYmxpbmdPckJhY2tUb1lvdW5nZXJTaGFkb3dSb290KG5vZGUsIGRpcmVjdGlvbikpCisgICAg
ICAgIHJldHVybiBuZXh0OworICAgIHJldHVybiBlc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50
KG5vZGUsIGRpcmVjdGlvbik7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2
ZXJzZVNpYmxpbmdPckJhY2tUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUsIFJl
aWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9k
ZSk7CisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlz
U2hhZG93Um9vdCgpKSB7CisgICAgICAgIFNoYWRvd1Jvb3QqIHBhcmVudFNoYWRvd1Jvb3QgPSB0
b1NoYWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKTsKKyAgICAgICAgaWYgKCFwYXJlbnRTaGFk
b3dSb290LT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBhc3Np
Z25lZEluc2VydGlvblBvaW50ID0gcGFyZW50U2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAg
ICAgICAgICAgQVNTRVJUKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgcmV0
dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUoYXNzaWduZWRJbnNlcnRpb25Qb2ludCwg
ZGlyZWN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1lbnQoY29uc3Qg
Tm9kZSogbm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIGlzSW5zZXJ0
aW9uUG9pbnQobm9kZS0+cGFyZW50Tm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2li
bGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZS0+cGFyZW50Tm9kZSgpLCBkaXJlY3Rpb24p
OworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVy
c2VOb2RlRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzKGNvbnN0IE5vZGUqIG5vZGUsIENyb3NzZWRV
cHBlckJvdW5kYXJ5JiBjcm9zc2VkKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoaXNJ
bnNlcnRpb25Qb2ludChub2RlKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVPckJhY2tUb0lu
c2VydGlvblBvaW50KG5vZGUsIGNyb3NzZWQpOworICAgIGNyb3NzZWQgPSBOb3RDcm9zc2VkOwor
ICAgIHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihub2RlKTsKK30KKworTm9kZSogUmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGUoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91
bmRhcnkmIGNyb3NzZWQpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+
aXNTaGFkb3dSb290KCkpOworICAgIGNyb3NzZWQgPSBOb3RDcm9zc2VkOworICAgIC8vIEZJWE1F
OiBBZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1
bmN0aW9uLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MjAxMAorICAgIC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRp
b25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7CisgICAgcmV0dXJuIHBhcmVudE5vZGVPckJhY2tU
b0luc2VydGlvblBvaW50KG5vZGUsIGNyb3NzZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6cGFyZW50Tm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIENyb3NzZWRVcHBl
ckJvdW5kYXJ5IGNyb3NzZWQ7CisgICAgTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZShub2RlLCBj
cm9zc2VkKTsKKyAgICBVTlVTRURfUEFSQU0oY3Jvc3NlZCk7CisgICAgcmV0dXJuIHBhcmVudDsK
K30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVXaXRob3V0Q3Jvc3Np
bmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOwor
ICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIC8vIEZJWE1FOiBBZGQgYW4g
YXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAxMAorICAg
IC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChu
b2RlKS0+aXNBY3RpdmUoKSk7CisgICAgQ3Jvc3NlZFVwcGVyQm91bmRhcnkgY3Jvc3NlZDsKKyAg
ICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlT3JCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBj
cm9zc2VkKTsKKyAgICBpZiAoY3Jvc3NlZCA9PSBDcm9zc2VkKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gcGFyZW50OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFy
ZW50Tm9kZU9yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVw
cGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgQVNTRVJUKGNyb3NzZWQgPT0gTm90Q3Jvc3Nl
ZCk7CisgICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQo
bm9kZSkpIHsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBz
aGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50
Tm9kZU9yQmFja1RvSW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBj
cm9zc2VkKTsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGVJbkN1cnJlbnRUcmVlKG5vZGUs
IGNyb3NzZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUlu
Q3VycmVudFRyZWUoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3Nz
ZWQpCit7CisgICAgQVNTRVJUKGNyb3NzZWQgPT0gTm90Q3Jvc3NlZCk7CisgICAgaWYgKE5vZGUq
IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlQmFja1RvWW91bmdlclNo
YWRvd1Jvb3RPckhvc3QodG9TaGFkb3dSb290KHBhcmVudCksIGNyb3NzZWQpOworICAgICAgICBy
ZXR1cm4gdHJhdmVyc2VOb2RlRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzKHBhcmVudCwgY3Jvc3Nl
ZCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6cGFyZW50Tm9kZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnN0IFNoYWRvd1Jv
b3QqIHNoYWRvd1Jvb3QsIENyb3NzZWRVcHBlckJvdW5kYXJ5JiBjcm9zc2VkKQoreworICAgIEFT
U0VSVChzaGFkb3dSb290KTsKKyAgICBBU1NFUlQoY3Jvc3NlZCA9PSBOb3RDcm9zc2VkKTsKKyAg
ICBpZiAoc2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgIGNyb3NzZWQgPSBDcm9z
c2VkOworICAgICAgICByZXR1cm4gc2hhZG93Um9vdC0+aG9zdCgpOworICAgIH0KKyAgICBJbnNl
cnRpb25Qb2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVk
VG8oKTsKKyAgICBBU1NFUlQoYXNzaWduZWRJbnNlcnRpb25Qb2ludCk7CisgICAgcmV0dXJuIHBh
cmVudE5vZGVPckJhY2tUb0luc2VydGlvblBvaW50KGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGNy
b3NzZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6YWRqdXN0ZWRQYXJlbnRO
b2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUg
PSBzaGFkb3dUcmVlT2ZQYXJlbnQobm9kZSkpIHsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2Vs
ZWN0aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpOworICAgIH0KKyAgICBp
ZiAobm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgY29uc3QgU2hhZG93Um9vdCogc2hh
ZG93Um9vdCA9IHRvU2hhZG93Um9vdChub2RlKTsKKyAgICAgICAgaWYgKCFzaGFkb3dSb290LT5p
c1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2Vy
dGlvblBvaW50ID0gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAgICAgICAgICAgQVNTRVJU
KGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgcmV0dXJuIGFzc2lnbmVkSW5z
ZXJ0aW9uUG9pbnQ7CisgICAgICAgIH0KKyAgICAgICAgc2hhZG93Um9vdC0+aG9zdCgpOworICAg
IH0KKyAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOworfQorCitOb2RlKiBSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlm
IChOb2RlKiBuZXh0ID0gZmlyc3RDaGlsZChub2RlKSkKKyAgICAgICAgcmV0dXJuIG5leHQ7Cisg
ICAgaWYgKE5vZGUqIG5leHQgPSBuZXh0U2libGluZyhub2RlKSkKKyAgICAgICAgcmV0dXJuIG5l
eHQ7CisgICAgY29uc3QgTm9kZSogbiA9IG5vZGU7CisgICAgd2hpbGUgKG4gJiYgIW5leHRTaWJs
aW5nKG4pKQorICAgICAgICBuID0gcGFyZW50Tm9kZShuKTsKKyAgICBpZiAobikKKyAgICAgICAg
cmV0dXJuIG5leHRTaWJsaW5nKG4pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRh
cnkoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIWlzU2hhZG93SG9zdChub2RlKSkgewor
ICAgICAgICBpZiAoTm9kZSogbmV4dCA9IHRyYXZlcnNlTGlnaHRDaGlsZHJlbihub2RlLCBSZWlm
aWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQpKQorICAgICAgICAgICAgcmV0dXJuIG5l
eHQ7CisgICAgfQorICAgIGlmIChOb2RlKiBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSkpCisgICAg
ICAgIHJldHVybiBuZXh0OworICAgIGNvbnN0IE5vZGUqIG4gPSBub2RlOworICAgIHdoaWxlIChu
ICYmICFuZXh0U2libGluZyhuKSkKKyAgICAgICAgbiA9IHBhcmVudE5vZGVXaXRob3V0Q3Jvc3Np
bmdVcHBlckJvdW5kYXJ5KG4pOworICAgIGlmIChuKQorICAgICAgICByZXR1cm4gbmV4dFNpYmxp
bmcobik7CisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0
cmF2ZXJzZVByZXZpb3VzTm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiBu
ID0gcHJldmlvdXNTaWJsaW5nKG5vZGUpKSB7CisgICAgICAgIHdoaWxlIChOb2RlKiBjaGlsZCA9
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGQobikpCisgICAgICAgICAgICBuID0gY2hp
bGQ7CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXR1cm4gcGFyZW50Tm9kZShub2Rl
KTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlUHJldmlvdXNOb2Rl
V2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlm
IChOb2RlKiBuID0gcHJldmlvdXNTaWJsaW5nKG5vZGUpKSB7CisgICAgICAgIHdoaWxlICghaXNT
aGFkb3dIb3N0KG4pKSB7CisgICAgICAgICAgICBpZiAoTm9kZSogY2hpbGQgPSBSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VMaWdodENoaWxkcmVuKG4sIFJlaWZpZWRUcmVlVHJhdmVyc2Fs
RGlyZWN0aW9uQmFja3dhcmQpKQorICAgICAgICAgICAgICAgIG4gPSBjaGlsZDsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJv
dW5kYXJ5KG5vZGUpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVp
ZmllZFRyZWVUcmF2ZXJzYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTE5MzczNWU1ZDg1NjI0MDhiN2Y5MDA2
ODI2MDJjZTAwMjVkMGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jl
aWZpZWRUcmVlVHJhdmVyc2FsLmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxfaAorI2RlZmluZSBSZWlmaWVkVHJlZVRyYXZlcnNhbF9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CisKK2VudW0gUmVp
ZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24geworICAgIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uRm9yd2FyZCwKKyAgICBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJk
Cit9OworCisvLyBGSVhNRTogTWFrZSBzb21lIGZ1bmN0aW9ucyBpbmxpbmUgdG8gb3B0aW1pc2Ug
dGhlIHBlcmZvcm1hbmNlLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgyMDE5CitjbGFzcyBSZWlmaWVkVHJlZVRyYXZlcnNhbCB7CitwdWJsaWM6CisgICAgZW51
bSBDcm9zc2VkVXBwZXJCb3VuZGFyeSB7CisgICAgICAgIE5vdENyb3NzZWQsCisgICAgICAgIENy
b3NzZWQsCisgICAgfTsKKworICAgIHN0YXRpYyBOb2RlKiBmaXJzdENoaWxkKGNvbnN0IE5vZGUq
KTsKKyAgICBzdGF0aWMgTm9kZSogbGFzdENoaWxkKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMg
Tm9kZSogbGFzdENoaWxkV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKik7
CisKKyAgICBzdGF0aWMgTm9kZSogbmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOworICAgIHN0YXRp
YyBOb2RlKiBwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSopOworCisgICAgc3RhdGljIE5vZGUq
IHBhcmVudE5vZGUoY29uc3QgTm9kZSosIENyb3NzZWRVcHBlckJvdW5kYXJ5Jik7CisgICAgc3Rh
dGljIE5vZGUqIHBhcmVudE5vZGUoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBwYXJl
bnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKik7CisKKyAgICBz
dGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5v
ZGUqIHRyYXZlcnNlUHJldmlvdXNOb2RlKGNvbnN0IE5vZGUqKTsKKworICAgIC8vIEZJWE1FOiBB
biAnYWRqdXN0ZWQnIGlzIG5vdCBnb29kIG5hbWUgZm9yIGdlbmVyYWwgdXNlIGNhc2UuIFJlbmFt
ZSB0aGlzLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MjAyMgorICAgIC8vIFRoaXMgbWF5IHJldHVybiBTaGFkb3dSb290IG9yIEluc2VydGlvblBvaW50
LgorICAgIHN0YXRpYyBOb2RlKiBhZGp1c3RlZFBhcmVudE5vZGUoY29uc3QgTm9kZSopOworCisg
ICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5k
YXJ5KGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91c05vZGVX
aXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqKTsKKworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgTm9kZSogdHJhdmVyc2VDaGlsZChjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2
ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5vZGUoY29uc3QgTm9k
ZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSogdHJh
dmVyc2VMaWdodENoaWxkcmVuKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVj
dGlvbik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRp
b25Qb2ludChjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAg
IHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0IE5vZGUqLCBS
ZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVy
c2VTaWJsaW5nT3JCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdChjb25zdCBOb2RlKiwgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworICAgIHN0YXRpYyBOb2RlKiBlc2NhcGVGYWxsYmFja0Nv
bnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7
CisKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOb2RlRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRz
KGNvbnN0IE5vZGUqLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYpOworCisgICAgc3RhdGljIE5vZGUq
IHBhcmVudE5vZGVPckJhY2tUb0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqLCBDcm9zc2VkVXBw
ZXJCb3VuZGFyeSYpOworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlSW5DdXJyZW50VHJlZShj
b25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9kZSogcGFy
ZW50Tm9kZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnN0IFNoYWRvd1Jvb3QqLCBD
cm9zc2VkVXBwZXJCb3VuZGFyeSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93VHJlZS5jcHAKaW5kZXggMWJhZTNiZWE3ZTllYTBhYjllYjYyNDZhZWYy
ZGUwODBjNmFjYzNkZi4uNmZiZTcyOTVkNjNhMzk4MWFhNWU4MGQyNGNjMDAzZTc3YWM4NmE2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgU2hh
ZG93VHJlZTo6ZGV0YWNoSG9zdChFbGVtZW50KiBob3N0KQogICAgIGhvc3QtPmRldGFjaEFzTm9k
ZSgpOwogfQogCi1JbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3Io
Tm9kZSogbm9kZSkgY29uc3QKK0luc2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjppbnNlcnRpb25Q
b2ludEZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewogICAgIEFTU0VSVChub2RlICYmIG5v
ZGUtPnBhcmVudE5vZGUoKSk7CiAKQEAgLTIyMSw2ICsyMjEsMTEgQEAgSW5zZXJ0aW9uUG9pbnQq
IFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgcmV0
dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgpOwogfQogCitIVE1MQ29udGVudFNlbGVjdGlvbiog
U2hhZG93VHJlZTo6c2VsZWN0aW9uRm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fc2VsZWN0b3IuZmluZEZvcihub2RlKTsKK30KKwogdm9pZCBTaGFkb3dUcmVlOjpy
ZWF0dGFjaCgpCiB7CiAgICAgZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaAppbmRleCA1
NzIyMjE4M2EyNjMxNzQ0MmY4OTA3ZmVlZTkyY2NhMzY3OGQyNzI2Li5lOWMyY2NhZGIwY2NmN2Nk
MTU1MGY0MGQzMjA4OWFmMGY3MzYyOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKQEAgLTQx
LDYgKzQxLDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNlcnRpb25Q
b2ludDsKIGNsYXNzIFRyZWVTY29wZTsKK2NsYXNzIEhUTUxDb250ZW50U2VsZWN0aW9uOwogCiBj
bGFzcyBTaGFkb3dUcmVlIHsKIHB1YmxpYzoKQEAgLTc5LDcgKzgwLDggQEAgcHVibGljOgogICAg
IHZvaWQgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICB2b2lkIGhvc3RDaGls
ZHJlbkNoYW5nZWQoKTsKIAotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihO
b2RlKikgY29uc3Q7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKGNvbnN0
IE5vZGUqKSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uRm9yKGNv
bnN0IE5vZGUqKSBjb25zdDsKIAogICAgIEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9yKCk7
CiAgICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3RvciYgc2VsZWN0b3IoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKaW5k
ZXggOGI2MmQ1NmE3NzNkYjMwZGI2ZDMxOGFmNzNiZGQxYzBmOGRiYjQ2Ny4uMzFlNDE5NGVjNWEz
N2RlMDM5NGMwM2Y4ZTgzOGU2NWJiNDU4NzRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2
b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OnVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlz
dCogbGlzdCkKICAgICBsaXN0LT5jbGVhcigpOwogfQogCi1IVE1MQ29udGVudFNlbGVjdGlvbiog
SFRNTENvbnRlbnRTZWxlY3Rvcjo6ZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0CitIVE1MQ29udGVu
dFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rvcjo6ZmluZEZvcihjb25zdCBOb2RlKiBrZXkp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2VsZWN0aW9uU2V0LmZpbmQoa2V5KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaAppbmRleCBl
MDExODA1MDBiYWQxMjM0MjNhMTc1ODhhODE5MzJmMTgwZjE0YzUzLi5iY2ZiZGRiYmQ4ODI3Mzg1
YTdjOWFmYzExYzI0ZjZmZWNhNmUzNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZChIVE1MQ29udGVudFNlbGVjdGlvbiogdmFsdWUpIHsgbV9zZXQuYWRkKHZhbHVl
KTsgfQogICAgIHZvaWQgcmVtb3ZlKEhUTUxDb250ZW50U2VsZWN0aW9uKiB2YWx1ZSkgeyBtX3Nl
dC5yZW1vdmUodmFsdWUpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9z
ZXQuaXNFbXB0eSgpOyB9Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoTm9kZSoga2V5
KSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZChjb25zdCBOb2RlKiBrZXkp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKQEAgLTExOCw5ICsx
MTgsOSBAQCBwcml2YXRlOgogICAgIFBvaW50ZXJTZXQgbV9zZXQ7CiB9OwogCi1pbmxpbmUgSFRN
TENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKE5vZGUqIGtl
eSkgY29uc3QKK2lubGluZSBIVE1MQ29udGVudFNlbGVjdGlvbiogSFRNTENvbnRlbnRTZWxlY3Rp
b25TZXQ6OmZpbmQoY29uc3QgTm9kZSoga2V5KSBjb25zdAogewotICAgIFBvaW50ZXJTZXQ6Oml0
ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxOb2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6
OlRyYW5zbGF0b3I+KGtleSk7CisgICAgUG9pbnRlclNldDo6aXRlcmF0b3IgZm91bmQgPSBtX3Nl
dC5maW5kPGNvbnN0IE5vZGUqLCBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNsYXRvcj4o
a2V5KTsKICAgICByZXR1cm4gZm91bmQgIT0gbV9zZXQuZW5kKCkgPyAqZm91bmQgOiAwOwogfQog
CkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZWxlY3QoSW5zZXJ0aW9u
UG9pbnQqLCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKICAgICB2b2lkIHVuc2VsZWN0KEhU
TUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5k
Rm9yKE5vZGUqIGtleSkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmRGb3Io
Y29uc3QgTm9kZSoga2V5KSBjb25zdDsKIAogICAgIHZvaWQgd2lsbFNlbGVjdCgpOwogICAgIGJv
b2wgaXNTZWxlY3RpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oCmluZGV4IGI1MjgyY2RkYzI3NDgyY2VjMzM1MzVkZGJlYjY4YzcwZjU1ODg0
YmMuLjc0YjFhMjAwYzRkOWUyYjEyNzgwNTRjNDQ3YWY0MDExZDQ2ZDQ4YjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNzEsNyArNzEsNyBAQCBw
cml2YXRlOgogICAgIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCBtX3NlbGVjdGlvbnM7CiB9Owog
Ci1pbmxpbmUgYm9vbCBpc0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCitpbmxpbmUgYm9vbCBp
c0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg4LDYgKzg4LDEyIEBAIGlubGluZSBJbnNlcnRpb25Qb2lu
dCogdG9JbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxJ
bnNlcnRpb25Qb2ludCo+KG5vZGUpOwogfQogCitpbmxpbmUgY29uc3QgSW5zZXJ0aW9uUG9pbnQq
IHRvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNJbnNl
cnRpb25Qb2ludChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEluc2VydGlv
blBvaW50Kj4obm9kZSk7Cit9CisKIGlubGluZSBib29sIGlzU2hhZG93Qm91bmRhcnkoTm9kZSog
bm9kZSkKIHsKICAgICBpZiAoIWlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggNmYyZWUzM2E3YWI2OGYyNmZkMTA3MTk3ZTgxODc2NmFm
MTlmNTA2Ny4uZjJmMTA5ODA0MjQwNzY3ZDI1MmE1OTY4NTQ3ZTYxMjM1NjY5OTYyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJh
bmdlLmgiCisjaW5jbHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTE4MSw2ICsxODIsNTEgQEAgYm9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5v
ZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBub2RlLT5hdHRhY2hlZCgp
OwogfQogCitOb2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1
cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKG5vZGUpOworfQorCitOb2RlKiBJ
bnRlcm5hbHM6OmZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6Zmlyc3RDaGlsZChub2RlKTsKK30KKworTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hp
bGRJblJlaWZpZWRUcmVlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghbm9kZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxk
KG5vZGUpOworfQorCitOb2RlKiBJbnRlcm5hbHM6OnRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRU
cmVlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOZXh0Tm9kZShub2Rl
KTsKK30KKworTm9kZSogSW50ZXJuYWxzOjp0cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVpZmllZFRy
ZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgcmV0dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZShu
b2RlKTsKK30KKwogU3RyaW5nIEludGVybmFsczo6ZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxl
bWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFlbGVtZW50KSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA3NWVkN2UyNmU5OWQ5ZjhhMzAxMjI5
YzgwZmZiN2VlMDVkZTk0ZGUxLi5hMDYxM2FjMjE3YjgzZWI5ZjgxM2VmYTkwODc3MTNkMDBjZjhh
M2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTg0LDYgKzg0LDEyIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgYXR0YWNoZWQoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAg
IE5vZGUqIG5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIE5vZGUqIGZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7
CisgICAgTm9kZSogbGFzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIE5vZGUqIHRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKE5vZGUqLCBFeGNlcHRp
b25Db2RlJik7CisgICAgTm9kZSogdHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKE5v
ZGUqLCBFeGNlcHRpb25Db2RlJik7CisKICNpZiBFTkFCTEUoSU5QVVRfQ09MT1IpCiAgICAgdm9p
ZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGNvbG9y
VmFsdWUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZjIy
MDBmZmM0YjE1OWEwNzY4ZmZkZmFmNjAyZmM3MGY0OTg3NTAzNC4uOTVmZTlkYzU1OGQ0MDBlMjI1
ZTI0NzM1YzI5ZDc2MGYwOGJhNDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bApAQCAtNTUsNiArNTUsMTIgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEVsZW1lbnQgZ2V0
RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4gTm9kZSBzaGFkb3dSb290LCBpbiBET01TdHJpbmcg
aWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFuIGlzVmFsaWRDb250ZW50
U2VsZWN0KGluIEVsZW1lbnQgY29udGVudEVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwog
CisgICAgICAgIE5vZGUgbmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgZmlyc3RDaGlsZEluUmVpZmllZFRyZWUo
aW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSBsYXN0Q2hp
bGRJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIE5vZGUgdHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRyZWUoaW4gTm9kZSBub2RlKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSB0cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVp
ZmllZFRyZWUoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwogICAgICAgICBi
b29sZWFuIGF0dGFjaGVkKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICNp
ZiBkZWZpbmVkKEVOQUJMRV9JTlBVVF9DT0xPUikgJiYgRU5BQkxFX0lOUFVUX0NPTE9SCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi5kZWYKaW5kZXggZTJjOGY2ZGZhZGQ3NDIyNGJmZjUyYjhjOTJlOGY1NDQ2MDFm
ZWI1NC4uYWRhODgzNzliZDk1MGFhNTk5ZDBhNGQxMDk0ZjJmZDAzNDkwYzNkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLmRlZgpAQCAtMTY4LDYgKzE2OCw3IEBAIEVYUE9SVFMKICAgICAgICAgP2VxdWFs
SWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgogICAgICAgICA/ZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQFBBVkVsZW1lbnRA
MUBJQFoKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBJQFoKKyAgICAg
ICAgP2ZpcnN0Q2hpbGRAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJA
UEJWMzJAQFoKICAgICAgICAgP2ZyYW1lRGVzdHJveWVkQEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
ckBXZWJDb3JlQEBVQUVYWFoKICAgICAgICAgP2Zyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrQFN0
cmluZ0BXVEZAQFNBP0FWMTJAUEJFSUBaCiAgICAgICAgID9nZXRDYWNoZWRET01TdHJ1Y3R1cmVA
V2ViQ29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBCVUNs
YXNzSW5mb0AzQEBaCkBAIC0xODAsNyArMTgxLDkgQEAgRVhQT1JUUwogICAgICAgICA/aXNQcmVs
b2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBA
WgogICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQ
QVZFeGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtAVkpT
U3RyaW5nQEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0lt
cGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJA
QFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRA
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgorICAgICAgICA/bGFz
dENoaWxkQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9kZUAyQFBCVjMyQEBa
CiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBR
QUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9k
ZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCisgICAgICAgID9uZXh0U2libGlu
Z0BSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVAMkBQQlYzMkBAWgogICAg
ICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASUBaCiAgICAgICAgID9udW1iZXJAU3Ry
aW5nQFdURkBAU0E/QVYxMkBIQFoKICAgICAgICAgP29ic2VydmVGcmFtZUBGcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZXJAV2ViQ29yZUBASUFFWFBBVkZyYW1lQDJAQFoKQEAgLTIyNyw2ICsyMzAsOCBA
QCBFWFBPUlRTCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4
ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWUmFuZ2VAMUBAWgogICAgICAgICA/
dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUds
b2JhbE9iamVjdEAxQFBBVk5vZGVMaXN0QDFAQFoKICAgICAgICAgP3RvUmFuZ2VAV2ViQ29yZUBA
WUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKKyAgICAgICAgP3RyYXZlcnNlTmV4dE5vZGVA
UmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJAUEJWMzJAQFoKKyAgICAg
ICAgP3RyYXZlcnNlUHJldmlvdXNOb2RlQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNB
UEFWTm9kZUAyQFBCVjMyQEBaCiAgICAgICAgID91cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID91c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzQFdlYkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBY
WgogICAgICAgICA/dXRmOEBTdHJpbmdAV1RGQEBRQkU/QVZDU3RyaW5nQDJAX05AWgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IDY3Njk2MTVmNmJhNjRjY2E5ODA3OTM2YmQ3
MzNlZDcxNzhlYzkzOGIuLjZlN2ZhMTY3OWFiOGMyY2FhYmIyNGQzZTViZDVmYzQzMmU4NWQ1Zjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTE1OSw2ICsxNTksNyBAQCBF
WFBPUlRTCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAUEJFQFoKICAg
ICAgICAgP2VxdWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgog
ICAgICAgICA/ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZA
QFBBVkVsZW1lbnRAMUBJQFoKKyAgICAgICAgP2ZpcnN0Q2hpbGRAUmVpZmllZFRyZWVUcmF2ZXJz
YWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJAUEJWMzJAQFoKICAgICAgICAgP2ZyYW1lRGVzdHJveWVk
QEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBVQUVYWFoKICAgICAgICAgP2dldENh
Y2hlZERPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xv
YmFsT2JqZWN0QDFAUEJVQ2xhc3NJbmZvQDNAQFoKICAgICAgICAgP2dldERhdGExNlNsb3dDYXNl
QFN0cmluZ0ltcGxAV1RGQEBBQkVQQl9XWFoKQEAgLTE3MCw5ICsxNzEsMTEgQEAgRVhQT1JUUwog
ICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05B
QlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9B
VkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBX
VEZAQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJh
aXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5n
QEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9sYXN0Q2hh
bmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05Y
WgorICAgICAgICA/bGFzdENoaWxkQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFW
Tm9kZUAyQFBCVjMyQEBaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJv
bGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAk
MEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCiAgICAg
ICAgID9vYnNlcnZlRnJhbWVARnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQElBRVhQ
QVZGcmFtZUAyQEBaCiAgICAgICAgID9vdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2Vi
Q29yZUBAWUFYQUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBAWgorICAgICAgICA/
bmV4dFNpYmxpbmdAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJAUEJW
MzJAQFoKICAgICAgICAgP251bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5ATm9kZUBXZWJD
b3JlQEBRQkVJWFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAy
QFhaCiAgICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFha
CkBAIC0yMTIsNiArMjE1LDggQEAgRVhQT1JUUwogICAgICAgICA/dG9KU0BXZWJDb3JlQEBZQT9B
VkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVlJh
bmdlQDFAQFoKICAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhl
Y1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZOb2RlTGlzdEAxQEBaCiAgICAgICAg
ID90b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NAQEBaCisgICAgICAg
ID90cmF2ZXJzZU5leHROb2RlQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9k
ZUAyQFBCVjMyQEBaCisgICAgICAgID90cmF2ZXJzZVByZXZpb3VzTm9kZUBSZWlmaWVkVHJlZVRy
YXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVAMkBQQlYzMkBAWgogICAgICAgICA/dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgogICAg
ICAgICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVjdG9yQFZTdHJp
bmdAV1RGQEAkMEFAQFdURkBAWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJF
UEFWRnJhbWVWaWV3QDJAWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGFjN2IwMGNkZWQx
N2ZlOWIxOWY1ODJlNzEzNzRmMDJjNzRiMTYyNGEuLjUzMjBlOGIzNGQwMDNhNjEwYzNiOWYwN2Y4
ZTQxNTdlNmMwODhlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjQsNiArNjQsMTEg
QEAgX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEU7
CiBfWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVM
aW1pdHNGcm9tSW50ZXJuYWxzRWlpOwogX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0
QzFFUE5TXzROb2RlRTsKIF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEQxRXY7Citf
Wk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxMW5leHRTaWJsaW5nRVBLTlNfNE5vZGVF
OworX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMjB0cmF2ZXJzZVByZXZpb3VzTm9k
ZUVQS05TXzROb2RlRTsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDlsYXN0Q2hp
bGRFUEtOU180Tm9kZUU7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwxNnRyYXZl
cnNlTmV4dE5vZGVFUEtOU180Tm9kZUU7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJz
YWwxMGZpcnN0Q2hpbGRFUEtOU180Tm9kZUU7CiBfWk43V2ViQ29yZTIxZ2V0Q2FjaGVkRE9NU3Ry
dWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBLTjNKU0M5Q2xhc3NJbmZvRTsKIF9aTjdX
ZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBOU183RWxlbWVudEVqOwogX1pON1dlYkNv
cmUyMnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFdjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4Nzg4Nzk0YTU3ZjY1YWNjYWNi
ZTVlNjc5ZWQ4YjU2N2RlYTAzNjRmLi5iNTlhNTRkYTI3NGQ4NjAyOGU4ZjY4OTIwMTlkZGVhMjU5
YTU0Y2Y5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDMtMjIgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBBZGQgUmVpZmllZCBE
T00gVHJlZSB0cmF2ZXJzYWwgaW50ZXJuYWwgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGludGVybmFsIEFQSXMgd2hpY2ggY2FuIGJlIHVz
ZWQgdG8gdHJhdmVyc2UgUmVpZmllZCBET00gdHJlZSwgd2hpY2ggaXMKKyAgICAgICAgYSByZXN1
bHQgb2Ygbm9kZSBkaXN0cmlidXRpb24gYWxnb3JpdGhtIGV4cGxhaW5lZCBpbiBTaGFkb3cgRE9N
IHNwZWMuCisgICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXct
ZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbAorCisgICAgICAgIEV2ZXJ5IHB1YmxpYyBm
dW5jdGlvbnMgZGVmaW5lZCBpbiBSZWlmaWVkVHJlZVRyYXZlcnNhbCBhcmUgc3RhdGljCisgICAg
ICAgIGZ1bmN0aW9ucyBhbmQgYXJlIG5hbWVkIGluIGEgc2ltaWxhciB3YXkgdG8gb25lcyBkZWZp
bmVkIGluIFdlYkNvcmU6Ok5vZGUgY2xhc3MuCisgICAgICAgIFRoZSBvbmx5IGRpZmZlcmVuY2Ug
aXMgdGhhdCBSZWlmaWVkVHJlZVRyYXZlcnNhbCBBUElzIGNvbnNpZGVyIHNoYWRvdworICAgICAg
ICBob3N0cyBhbmQgYWxzbyB0cmF2ZXJzZSBub2RlcyBpcyBTaGFkb3cgRE9NIHN1YnRyZWVzLCBj
cm9zc2luZyBzaGFkb3cncyB1cHBlciBhbmQgbG93ZXIgYm91bmRhcnkKKyAgICAgICAgdHJhbnNw
YXJlbnRseS4KKworICAgICAgICBUaGVyZSBpcyBubyBhY3R1YWwgY2xpZW50IHdoaWNoIHVzZXMg
dGhlc2UgQVBJcy4gRm9sbG93LXVwIHBhdGNoZXMgZm9yIEZvY3VzTmF2aWdhdGlvbgorICAgICAg
ICBhbmQgRXZlbnREaXNwYXRjaGVyIHdpbGwgdXNlIHRoZSBBUElzIHNvIHRoYXQgdGhleSBjYW4g
dHJhdmVyc2Ugbm9kZSBpbiByZWlmaWVkIHRyZWUgb3JkZXIuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoK
KwogMjAxMi0wMy0yMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZGVkIGZhc3QvZXZlbnRzL3JlbW92ZS10YXJnZXQtd2l0aC1zaGFkb3ctaW4tZHJhZy5odG1s
IHRvIHRoZSBNYWMgV2ViS2l0MiBza2lwIGxpc3QsIHNpbmNlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA0MjRlNzQxODdhMmU1N2M4NWVkZjM2NmFkZDYzM2VjN2Jh
NmMzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlm
aWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1NiBAQAorVGVzdHMg
Zm9yIFJlaWZpZWQgRE9NIFRyZWUgVHJhdmVyc2FsIEFQSXMuIENhbiBvbmx5IHJ1biB3aXRoaW4g
RFJUCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitTaGFkb3dSb290IHNob3VsZCBi
ZSB1c2VkLgorUmVpZmllZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1iCisKK1RyYXZlcnNl
IGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorVHJhdmVyc2UgaW4gYmFja3dhcmQu
CitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitBIGNvbnRlbnQgZWxlbWVudCBzaG91bGQgc2VsZWN0
IGxpZ2h0IGNoaWxkcmVuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwlE
SVYJIGlkPWMKKwlESVYJIGlkPWQKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQor
RElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9ZAorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitE
SVYJIGlkPWQKK0RJVgkgaWQ9YworRElWCSBpZD1iCitESVYJIGlkPWEKKworVGVzdCBmb3IgY29u
dGVudCBlbGVtZW50IHNlbGVjdG9yLgorUmVpZmllZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBp
ZD1iCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK1RyYXZlcnNlIGluIGJhY2t3
YXJkLgorRElWCSBpZD1hCisKK0xpZ2h0IGNoaWxkcmVuIHNob3VsZCBiZSBzZWxlY3RlZCBvbmx5
IGF0IG9uY2UuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKworVHJhdmVy
c2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitUcmF2ZXJzZSBpbiBiYWNrd2Fy
ZC4KK0RJVgkgaWQ9ZQorRElWCSBpZD1kCitESVYJIGlkPWMKK0RJVgkgaWQ9YQorCitBIGNvbnRl
bnQgZWxlbWVudCBjYW4gaGF2ZSBmYWxsYmFjayBlbGVtZW50cy4KK1JlaWZpZWQgVHJlZToKK0RJ
VgkgaWQ9YQorCURJVgkgaWQ9YgorCURJVgkgaWQ9ZjEKKwlESVYJIGlkPWYyCisKK1RyYXZlcnNl
IGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1mMQorRElWCSBpZD1m
MgorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWYyCitESVYJIGlkPWYxCitESVYJIGlk
PWIKK0RJVgkgaWQ9YQorCitGYWxsYmFjayBlbGVtZW50cyBzaG91bGQgbm90IGJlIHVzZWQgaWYg
IGVsZW1lbnQgc2VsZWN0cyBhbnkgZWxlbWVudHMuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEK
KwlESVYJIGlkPWIKKwlESVYJIGlkPWYxCisJRElWCSBpZD1mMgorCitUcmF2ZXJzZSBpbiBmb3J3
YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9ZjEKK0RJVgkgaWQ9ZjIKK1RyYXZl
cnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1mMgorRElWCSBpZD1mMQorRElWCSBpZD1iCitESVYJ
IGlkPWEKKworVGVzdCBmb3IgTmVzdGVkIFNoYWRvd1Jvb3RzLgorUmVpZmllZCBUcmVlOgorRElW
CSBpZD1hCisJRElWCSBpZD1iCisJCURJVgkgaWQ9YworCQlESVYJIGlkPWUKKwkJRElWCSBpZD1k
CisJRElWCSBpZD1mCisJRElWCSBpZD1oCisJRElWCSBpZD1pCisJRElWCSBpZD1nCisKK1RyYXZl
cnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1jCitESVYJIGlk
PWUKK0RJVgkgaWQ9ZAorRElWCSBpZD1mCitESVYJIGlkPWgKK0RJVgkgaWQ9aQorRElWCSBpZD1n
CitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZworRElWCSBpZD1pCitESVYJIGlkPWgK
K0RJVgkgaWQ9ZgorRElWCSBpZD1kCitESVYJIGlkPWUKK0RJVgkgaWQ9YworRElWCSBpZD1iCitE
SVYJIGlkPWEKKworVGVzdCBmb3IgTXVsdGlwbGUgU2hhZG93Um9vdHMuCitSZWlmaWVkIFRyZWU6
CitESVYJIGlkPWEKKwlESVYJIGlkPWQKKwlESVYJIGlkPWIKKwlESVYJIGlkPWYKKwlESVYJIGlk
PWMKKwlESVYJIGlkPWUKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBp
ZD1kCitESVYJIGlkPWIKK0RJVgkgaWQ9ZgorRElWCSBpZD1jCitESVYJIGlkPWUKK1RyYXZlcnNl
IGluIGJhY2t3YXJkLgorRElWCSBpZD1lCitESVYJIGlkPWMKK0RJVgkgaWQ9ZgorRElWCSBpZD1i
CitESVYJIGlkPWQKK0RJVgkgaWQ9YQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc4YWVlYzc1MmYx
NmNmYmZlY2VlYjc3NmEwZjAyNzExNjI1ZTU1ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKQEAgLTAsMCAr
MSwxNjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIGZvciBS
ZWlmaWVkIERPTSBUcmVlIFRyYXZlcnNhbCBBUElzLiBDYW4gb25seSBydW4gd2l0aGluIERSVCIp
OworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gZHVtcE5vZGUobm9kZSkKK3sKKyAgICB2
YXIgb3V0cHV0ID0gbm9kZS5ub2RlTmFtZSArICJcdCI7CisgICAgaWYgKG5vZGUuaWQpCisgICAg
ICAgIG91dHB1dCArPSAnIGlkPScgKyBub2RlLmlkOworICAgIGlmIChub2RlLmNsYXNzTmFtZSkK
KyAgICAgICAgb3V0cHV0ICs9ICcgY2xhc3M9JyArIG5vZGUuY2xhc3NOYW1lOworICAgIHJldHVy
biBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGR1bXBSZWlmaWVkVHJlZShub2RlLCBpbmRlbnQpCit7
CisgICAgaW5kZW50ID0gaW5kZW50IHx8ICIiOworICAgIHZhciBvdXRwdXQgPSBpbmRlbnQgKyBk
dW1wTm9kZShub2RlKSArICJcbiI7CisgICAgdmFyIGNoaWxkOworICAgIGZvciAoY2hpbGQgPSBp
bnRlcm5hbHMuZmlyc3RDaGlsZEluUmVpZmllZFRyZWUobm9kZSk7IGNoaWxkOyBjaGlsZCA9IGlu
dGVybmFscy5uZXh0U2libGluZ0luUmVpZmllZFRyZWUoY2hpbGQpKQorICAgICAgICAgb3V0cHV0
ICs9IGR1bXBSZWlmaWVkVHJlZShjaGlsZCwgaW5kZW50ICsgIlx0Iik7CisgICAgcmV0dXJuIG91
dHB1dDsKK30KKworZnVuY3Rpb24gbGFzdE5vZGVJblJlaWZpZWRUcmVlKHJvb3QpCit7CisgICAg
dmFyIGxhc3ROb2RlID0gcm9vdDsKKyAgICB3aGlsZSAoaW50ZXJuYWxzLmxhc3RDaGlsZEluUmVp
ZmllZFRyZWUobGFzdE5vZGUpKQorICAgICAgICBsYXN0Tm9kZSA9IGludGVybmFscy5sYXN0Q2hp
bGRJblJlaWZpZWRUcmVlKGxhc3ROb2RlKTsKKyAgICByZXR1cm4gbGFzdE5vZGU7Cit9CisKK2Z1
bmN0aW9uIHNob3dSZWlmaWVkVHJlZUJ5VHJhdmVyc2luZ0luRm93YXJkKHJvb3QpCit7CisgICAg
dmFyIG5vZGUgPSByb290OworICAgIHZhciBsYXN0ID0gbGFzdE5vZGVJblJlaWZpZWRUcmVlKHJv
b3QpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGRlYnVnKGR1bXBOb2RlKG5vZGUpKTsK
KyAgICAgICAgaWYgKG5vZGUgPT0gbGFzdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBu
b2RlID0gaW50ZXJuYWxzLnRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKG5vZGUpOworICAg
IH0KK30KKworZnVuY3Rpb24gc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5nSW5CYWNrd2FyZChy
b290KQoreworICAgIHZhciBub2RlID0gbGFzdE5vZGVJblJlaWZpZWRUcmVlKHJvb3QpOworICAg
IHdoaWxlIChub2RlKSB7CisgICAgICAgIGRlYnVnKGR1bXBOb2RlKG5vZGUpKTsKKyAgICAgICAg
aWYgKG5vZGUgPT0gcm9vdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBub2RlID0gaW50
ZXJuYWxzLnRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVkVHJlZShub2RlKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHNob3dSZWlmaWVkVHJlZShub2RlKQoreworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQobm9kZSk7CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworCisgICAg
ZGVidWcoJ1JlaWZpZWQgVHJlZTonKTsKKyAgICBkZWJ1ZyhkdW1wUmVpZmllZFRyZWUobm9kZSkp
OworCisgICAgZGVidWcoJ1RyYXZlcnNlIGluIGZvcndhcmQuJyk7CisgICAgc2hvd1JlaWZpZWRU
cmVlQnlUcmF2ZXJzaW5nSW5Gb3dhcmQobm9kZSk7CisKKyAgICBkZWJ1ZygnVHJhdmVyc2UgaW4g
YmFja3dhcmQuJyk7CisgICAgc2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5nSW5CYWNrd2FyZChu
b2RlKTsKKworICAgIGRlYnVnKCcnKTsKK30KKworZGVidWcoJ1NoYWRvd1Jvb3Qgc2hvdWxkIGJl
IHVzZWQuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsn
aWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30p
KSk7CisKK2RlYnVnKCdBIGNvbnRlbnQgZWxlbWVudCBzaG91bGQgc2VsZWN0IGxpZ2h0IGNoaWxk
cmVuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2En
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRl
bnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSkpOworCitkZWJ1ZygnVGVz
dCBmb3IgY29udGVudCBlbGVtZW50IHNlbGVjdG9yLicpOworc2hvd1JlaWZpZWRUcmVlKAorICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRv
d1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmQnfSkpLAorICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwKKyAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdlJ30pKSk7CisKK2RlYnVnKCdMaWdodCBjaGlsZHJlbiBzaG91bGQgYmUg
c2VsZWN0ZWQgb25seSBhdCBvbmNlLicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmQnfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JykpLAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdlJ30pKSk7CisKK2RlYnVnKCdBIGNvbnRlbnQgZWxlbWVudCBjYW4gaGF2ZSBmYWxsYmFjayBl
bGVtZW50cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
Y29udGVudCcsIHsnc2VsZWN0JzogJy56J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmMSd9KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2Yy
J30pKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pKSk7CisK
K2RlYnVnKCdGYWxsYmFjayBlbGVtZW50cyBzaG91bGQgbm90IGJlIHVzZWQgaWYgPGNvbnRlbnQ+
IGVsZW1lbnQgc2VsZWN0cyBhbnkgZWxlbWVudHMuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuYyd9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnZjEnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdmMid9KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYyd9KSkpOworCitkZWJ1ZygnVGVzdCBmb3IgTmVzdGVkIFNoYWRvd1Jvb3Rz
LicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30s
CisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2InfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRl
bnQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJ30pKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
Zid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnZyd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdoJ30pLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaSd9KSkpOworCitkZWJ1Zygn
VGVzdCBmb3IgTXVsdGlwbGUgU2hhZG93Um9vdHMuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSksCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZSd9KSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30pKSk7CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCA1YjdiOTc5MzBk
YjJiOTVhM2VjODA5ODRiNmJhZGM3YjFlOWMwYjA1Li42YjVmOWNlMjgyZjQzNTg4ZWFiNDIzYWU4
MjIwNjE2MTA2NmUxMWZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMTg5NSw2ICsx
ODk1LDcgQEAgZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy1z
dHlsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWluLW1lZGlhLWVsZW1l
bnQuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1tZXRlci1lbGVtZW50
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9nZXQtZWxlbWVudC1ieS1pZC1pbi1zaGFkb3ctcm9vdC5o
dG1sCitmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
ZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMjRmNDRiNTNkY2M5YzI5MGYwOTZhMDVmYjJkODE2
YjZhNzQ1ZTFkMC4uOTNhMzcwY2E4Y2ZiYWExZWUwZjk0OTI0ZGYyYjEwOWM4MjY4OTBlMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xNzQsNiArMTc0LDcgQEAgZmFzdC9kb20vc2hhZG93
L2lmcmFtZS1zaGFkb3cuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qu
aHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKK2Zhc3QvZG9t
L3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctYm91bmRhcnktZXZlbnRzLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudC1j
cmFzaC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vU2tpcHBlZAppbmRleCA2ZjExYTg3NGI4N2NlNjQ0Y2M1MDZiY2E0NjU3YTcwMWUxOGFh
MDNkLi41NDU5Y2IxNjA0NGQ2N2NmOTM1YTdjZGI0YzM3MGRhNTA3NzYxNTI2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ2OCw2ICsxNDY4LDcgQEAgZmFzdC9kb20vc2hhZG93L2Nv
bnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy1zdHlsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
Y29udGVudC1lbGVtZW50LWluLW1lZGlhLWVsZW1lbnQuaHRtbAogZmFzdC9kb20vc2hhZG93L2Nv
bnRlbnQtZWxlbWVudC1pbi1tZXRlci1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9nZXQt
ZWxlbWVudC1ieS1pZC1pbi1zaGFkb3ctcm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvcmVpZmll
ZC10cmVlLXRyYXZlcnNhbC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBp
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJvb3QtYWN0aXZlRWxlbWVudC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fp
cm8vU2tpcHBlZAppbmRleCBhZWY3OTgyYTU2NWQ2NGEyZWQ1Y2UxZDAxZjllMzI0MzIwNWY0MTM4
Li5jMTkzNWM4YmRhMTBmYmMyZGM2ZmVhMzRhZjEyZDM2MDIxNWQzYzZlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5NzksNiArMTk3OSw3IEBAIGZhc3QvZG9tL3No
YWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3cuaHRtbAogZmFzdC9kb20vc2hhZG93
L2NvbnRlbnQtZWxlbWVudC1pbi1tZWRpYS1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9j
b250ZW50LWVsZW1lbnQtaW4tbWV0ZXItZWxlbWVudC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvZ2V0
LWVsZW1lbnQtYnktaWQtaW4tc2hhZG93LXJvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L3JlaWZp
ZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFw
aS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yb290LWFjdGl2ZUVsZW1lbnQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBl
ZAppbmRleCA4OWM2NTc2NjhlYjdhYTJiNTMyZWQ3OGZiNDY2YTY2NjBkYTJmYTU3Li4wYjU0Y2Yx
MGZhZTA1NWVjYjU5MjdlN2I0MDYyZWYyNDcyNjIyODVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tp
cHBlZApAQCAtMTA4NSw2ICsxMDg1LDcgQEAgZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVu
dC1vdXRzaWRlLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91
dHNpZGUtc2hhZG93LXN0eWxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQt
aW4tbWVkaWEtZWxlbWVudC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWlu
LW1ldGVyLWVsZW1lbnQuaHRtbAorZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJz
YWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWFjdGl2ZUVsZW1lbnQuaHRtbApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IDQ0M2VlZThhYzZhMzk2NTI4NjJhY2Q2OGJjYmUwN2EzM2UzMGU2MDEuLjMzNWFhOGJlMWRj
NmIxMWY3NzZlODVmNTcxN2Q4Yjg5YjEyNDEzN2EgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMy0yMiAgSGF5YXRvIEl0byAgPGhh
eWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEFkZCBSZWlmaWVkIERP
TSBUcmVlIHRyYXZlcnNhbCBpbnRlcm5hbCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW50ZXJuYWwgQVBJcyB3aGljaCBjYW4gYmUgdXNl
ZCB0byB0cmF2ZXJzZSBSZWlmaWVkIERPTSB0cmVlLCB3aGljaCBpcworICAgICAgICBhIHJlc3Vs
dCBvZiBub2RlIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0gZXhwbGFpbmVkIGluIFNoYWRvdyBET00g
c3BlYy4KKyAgICAgICAgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1m
aWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5odG1sCisKKyAgICAgICAgRXZlcnkgcHVibGljIGZ1
bmN0aW9ucyBkZWZpbmVkIGluIFJlaWZpZWRUcmVlVHJhdmVyc2FsIGFyZSBzdGF0aWMKKyAgICAg
ICAgZnVuY3Rpb25zIGFuZCBhcmUgbmFtZWQgaW4gYSBzaW1pbGFyIHdheSB0byBvbmVzIGRlZmlu
ZWQgaW4gV2ViQ29yZTo6Tm9kZSBjbGFzcy4KKyAgICAgICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBp
cyB0aGF0IFJlaWZpZWRUcmVlVHJhdmVyc2FsIEFQSXMgY29uc2lkZXIgc2hhZG93CisgICAgICAg
IGhvc3RzIGFuZCBhbHNvIHRyYXZlcnNlIG5vZGVzIGlzIFNoYWRvdyBET00gc3VidHJlZXMsIGNy
b3NzaW5nIHNoYWRvdydzIHVwcGVyIGFuZCBsb3dlciBib3VuZGFyeQorICAgICAgICB0cmFuc3Bh
cmVudGx5LgorCisgICAgICAgIFRoZXJlIGlzIG5vIGFjdHVhbCBjbGllbnQgd2hpY2ggdXNlcyB0
aGVzZSBBUElzLiBGb2xsb3ctdXAgcGF0Y2hlcyBmb3IgRm9jdXNOYXZpZ2F0aW9uCisgICAgICAg
IGFuZCBFdmVudERpc3BhdGNoZXIgd2lsbCB1c2UgdGhlIEFQSXMgc28gdGhhdCB0aGV5IGNhbiB0
cmF2ZXJzZSBub2RlIGluIHJlaWZpZWQgdHJlZSBvcmRlci4KKworICAgICAgICAqIFNvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDMtMjIgIFJhcGhhZWwgS3VibyBkYSBD
b3N0YSAgPHJha3Vjb0BGcmVlQlNELm9yZz4KIAogICAgICAgICBbQ01ha2VdIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGFmdGVyIHIxMTE3NzguCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133447</attachid>
            <date>2012-03-23 02:07:38 -0700</date>
            <delta_ts>2012-03-25 22:28:57 -0700</delta_ts>
            <desc>fix adjustedParentNode</desc>
            <filename>bug-79197-20120323180737.patch</filename>
            <type>text/plain</type>
            <size>60680</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZiYjNkMTdhMWQ2YWNi
NmU0YzkzM2NmODUyMTRhOTJmMmVmZjFkMC4uNTUxNzdhY2RlZDRiOTFkZDJkNTA5NWVlM2Y4ZDlm
YTdlZjkxN2RiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTAzLTIyICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisgICAg
ICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQgaW4g
U2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBv
bmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBFdmVy
eSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJlIHN0
YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRv
IG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBk
aWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBzaGFk
b3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERPTSBz
dWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5CisgICAg
ICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVudCB3
aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmlnYXRp
b24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0aGF0
IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjppc1NoYWRvd0hvc3QpOgorICAgICAgICAoV2ViQ29yZTo6c2hh
ZG93VHJlZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dUcmVlT2ZQYXJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VMaWdodENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVy
c2FsOjp0cmF2ZXJzZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2Fs
OjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJz
YWw6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlU2libGlu
Z09yQmFja1RvWW91bmdlclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OmVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTm9kZUVzY2FwaW5nRmFsbGJhY2tD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9k
ZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmll
ZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVPckJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlSW5DdXJyZW50VHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUJh
Y2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRU
cmVlVHJhdmVyc2FsOjphZGp1c3RlZFBhcmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBl
ckJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2
ZXJzZVByZXZpb3VzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6dHJhdmVyc2VQcmV2aW91c05vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KToKKyAg
ICAgICAgKiBkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFJlaWZpZWRUcmVlVHJhdmVyc2FsKToKKyAgICAgICAgKiBkb20vU2hh
ZG93VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2lu
dEZvcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpzZWxlY3Rpb25Gb3IpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoU2hhZG93VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVj
dG9yOjpmaW5kRm9yKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9y
Lmg6CisgICAgICAgIChIVE1MQ29udGVudFNlbGVjdGlvblNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZCk6CisgICAgICAgIChIVE1MQ29udGVudFNl
bGVjdG9yKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAg
ICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjp0b0luc2Vy
dGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bmV4dFNpYmxpbmdJblJlaWZp
ZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpmaXJzdENoaWxkSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Omxhc3RDaGlsZEluUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0
cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OnRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVkVHJlZSk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuaWRsOgorCiAyMDEyLTAzLTIyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgTW92ZSBOb3RpZmljYXRpb25zIEFQSXMgZnJvbSBET01XaW5kb3cuaWRs
IHRvIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaWRsIChQYXJ0IDEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTYx
MjhkYTgwNDE1OTBiYTljODU5OTg2M2Q2ODI3ZGY0YWFmNWEwMC4uOWNkZjg0M2UyMWY3N2ExNDJk
OGZiYjgwOTMzNTMwODIyZmNhNDY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEy
LTAzLTIyICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hh
ZG93IERPTV0gQWRkIFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5h
bCBBUElzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdo
aWNoIGlzCisgICAgICAgIGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBl
eHBsYWluZWQgaW4gU2hhZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3Jn
L2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKwor
ICAgICAgICBFdmVyeSBwdWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2
ZXJzYWwgYXJlIHN0YXRpYworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNp
bWlsYXIgd2F5IHRvIG9uZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAg
ICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBj
b25zaWRlciBzaGFkb3cKKyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMg
U2hhZG93IERPTSBzdWJ0cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJv
dW5kYXJ5CisgICAgICAgIHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0
dWFsIGNsaWVudCB3aGljaCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBG
b2N1c05hdmlnYXRpb24KKyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUg
QVBJcyBzbyB0aGF0IHRoZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVy
LgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZM
aXRlLmRlZjoKKwogMjAxMi0wMy0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgRmxhc2ggTlBSdW50aW1lIHNob3J0LWNpcmN1aXQg
aGFja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNThjZjVlNTBhZWNlYTMzNTI0NjY4YzFmMTA4
MjI1NDYyYzFkMjk5NC4uNmQ4MmMyNWRjOTc4MWU5N2MzMzFlZGNkOGFhZDcxM2VlMDJlYWVkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYxNCw2ICs2MTQsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgZG9tL1JhbmdlLmNwcAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAKICAgICBk
b20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwCisgICAgZG9tL1JlaWZpZWRUcmVlVHJhdmVy
c2FsLmNwcAogICAgIGRvbS9TY29wZWRFdmVudFF1ZXVlLmNwcAogICAgIGRvbS9TY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuY3BwCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA5Y2U3ZTdkOTI5YWQ0ZWQ0MzA3NTIzZDU1NzJmN2U5NzI0
NDlmMWYwLi43OGUwOWI0MWJlNzNjNWExZWMxNjhiN2ZmNjE2NWZjMDI2Y2E0ZjRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MTAsNiArMTkxMCw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisJU291cmNlL1dlYkNv
cmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1Jl
aWZpZWRUcmVlVHJhdmVyc2FsLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9SZW5kZXJlZERvY3Vt
ZW50TWFya2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCAzNTE0YjdiMGM2ZGZhYTAzNzc3NTNlNmI2NjVmMTk5ZTg5NGM2YmVjLi5jNTYwOTIwYzViMjli
MjVlMGU1ZGM0NDI0ZTc2M2MxZjdjMmEzZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTU5Miw2ICs1OTIs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vUmFuZ2VFeGNlcHRpb24uY3BwIFwKICAgICBkb20v
UmF3RGF0YURvY3VtZW50UGFyc2VyLmggXAogICAgIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5jcHAgXAorICAgIGRvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9TY29w
ZWRFdmVudFF1ZXVlLmNwcCBcCiAgICAgZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAgXAogICAgIGRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwIFwKQEAgLTE3MjAsNiAr
MTcyMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9RdWFsaWZpZWROYW1lLmggXAogICAgIGRv
bS9SYW5nZS5oIFwKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisgICAgZG9t
L1JlaWZpZWRUcmVlVHJhdmVyc2FsLmggXAogICAgIGRvbS9SZW5kZXJlZERvY3VtZW50TWFya2Vy
LmggXAogICAgIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBcCiAgICAgZG9tL1Nj
cmlwdEVsZW1lbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDcyMWFjNGMzODk3MjA1ODNh
NWJiZTM4NjRmZDA5NzFlMGVmZWU1ODUuLjBjNDI2ZjdlMGMxN2Y2MzI5Mjc4ZmYxYmRkZGQ1YWYz
Nzg0NWM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02MDcsNiArNjA3LDExIEBAIF9fWk43
V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUy
ME5vZGVSZW5kZXJpbmdDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFj
dG9yeTI0Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50RVA3TlNFdmVudFA2TlNWaWV3CiBfX1pON1dl
YkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjdjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRF
UDdOU0V2ZW50CitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTFuZXh0U2libGlu
Z0VQS05TXzROb2RlRQorX19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDIwdHJhdmVy
c2VQcmV2aW91c05vZGVFUEtOU180Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2
ZXJzYWw5bGFzdENoaWxkRVBLTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJh
dmVyc2FsMTZ0cmF2ZXJzZU5leHROb2RlRVBLTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZp
ZWRUcmVlVHJhdmVyc2FsMTBmaXJzdENoaWxkRVBLTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyMFJl
bmRlckVtYmVkZGVkT2JqZWN0MzBzZXRTaG93c0NyYXNoZWRQbHVnaW5JbmRpY2F0b3JFdgogX19a
TjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTExc2V0TWltZVR5cGVFUktOM1dURjZTdHJp
bmdFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzZXRIVFRQU3RhdHVzQ29k
ZUVpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjc0MWYxMGY1MGNhNTNjYTIxOGMzNmNjMTQ1N2YyM2Vm
MjRlYTZlOC4uMzMyMDI1MWQxZWI3N2FkOGM0YjUzYjc5YmMwZjY4NTg3MGI3Nzk2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNjI1LDYgKzYyNSw3IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlLmgn
LAogICAgICAgICAgICAgJ2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaCcsCiAgICAgICAgICAgICAn
ZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9SZWlmaWVk
VHJlZVRyYXZlcnNhbC5oJywKICAgICAgICAgICAgICdkb20vUmVuZGVyZWREb2N1bWVudE1hcmtl
ci5oJywKICAgICAgICAgICAgICdkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oJywKICAgICAg
ICAgICAgICdkb20vU2NyaXB0UnVubmVyLmgnLApAQCAtNTIwNiw2ICs1MjA3LDggQEAKICAgICAg
ICAgICAgICdkb20vUmFuZ2VFeGNlcHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1Jhd0RhdGFE
b2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwJywKKyAg
ICAgICAgICAgICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCcsCiAgICAgICAgICAgICAnZG9t
L1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2RvbS9TY29w
ZWRFdmVudFF1ZXVlLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDA3
NDI5ZTJkYjdkNGQ5MzdhY2QxZDk0OWRmNjY4NWMyNTZmMWU2ZjAuLmJlMGExOGZhODQ4ZTViMzRm
NTcxMmZhMjA4YzBlMDgzYjYyZjVhMDMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MTkwMiw2ICs1MTkwMiwxNCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUmVpZmllZFRyZWVUcmF2
ZXJzYWwuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNw
cCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzEwN2I4YTY2ZmViNDMxOTIx
YjMxMzVmOWVhY2U0MTExNGY5YTkxOS4uYzEyNDljZjVlYmFlNDc5MTI1MWFlMTYwOTAyMDczYTlm
MTg4ZGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTM1NSw2ICsxMzU1LDggQEAKIAkJNDlGRkJGMUQxMUM4NTUwRTAwNkE3
MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNz
Q29udGV4dDNETWFjLm1tICovOyB9OwogCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2Vi
R0xMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlGRkJGM0QxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLzsgfTsKIAkJNDlGRkJG
NDAxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2Vi
R0xMYXllci5tbSAqLzsgfTsKKwkJNEEwMTNEMjkxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRU
cmVlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBMDEzRDI3MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNhbC5j
cHAgKi87IH07CisJCTRBMDEzRDJBMTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZl
cnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEw
MTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggKi87IH07CiAJ
CTRBMERBMkZFMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwREEyRkMxMjlC
MjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgKi87IH07CiAJCTRBMERB
MkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMERBMkZEMTI5QjI0MTkwMEFC
NjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTFFNzE5MDE0RTEwMUU0MDA2MjZGOUQgLyogSlNI
VE1MQ29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEExRTcxOEUxNEUxMDFFNDAwNjI2RjlEIC8qIEpTSFRNTENvbnRlbnRFbGVt
ZW50LmNwcCAqLzsgfTsKQEAgLTgyOTMsNiArODI5NSw4IEBACiAJCTQ5RkZCRjFDMTFDODU1MEUw
MDZBNzExOCAvKiBHcmFwaGljc0NvbnRleHQzRE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNETWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OUZGQkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTExheWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExh
eWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR0xMYXll
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEEwMTNEMjcxNTEyRkQ3NzAwRTFF
NjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNEEwMTNEMjgxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVy
c2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlaWZpZWRUcmVlVHJhdmVy
c2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMERBMkZDMTI5QjI0MTkwMEFC
NjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEExRTcxOEUxNEUxMDFF
NDAwNjI2RjlEIC8qIEpTSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENvbnRlbnRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDcwLDYgKzIxMDc0LDggQEAKIAkJCQlBODREODI3QjExRDMz
M0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJODUwMzFCMzUw
QTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCAqLywKIAkJCQk4
NTAzMUIzNjBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCAqLywK
KwkJCQk0QTAxM0QyNzE1MTJGRDc3MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3Bw
ICovLAorCQkJCTRBMDEzRDI4MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bC5oICovLAogCQkJCUE3NkU1RjdFMTM1RTBEQ0YwMEE2OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50
TWFya2VyLmggKi8sCiAJCQkJNDk5OEFFQzQxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrLmggKi8sCiAJCQkJNDk5OEFFQzUxM0Y5RDBFQTAwOTBCMUFBIC8q
IFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbCAqLywKQEAgLTIzNzczLDYgKzIzNzc5
LDcgQEAKIAkJCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTAzMUI0QzBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTJEMEQwMDZDMUQwMEVGNkYyNiAvKiBS
ZWd1bGFyRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEEwMTNEMkExNTEyRkQ3NzAw
RTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUwMTA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJl
bW92ZU5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTIyLDYgKzI2OTI5LDcgQEAK
IAkJCQlCQ0FCNDE4MTEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg1MDMxQjRCMEE0NEVGQzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEyQzBEMDA2QzFEMDBFRjZGMjYgLyogUmVn
dWxhckV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEEwMTNEMjkxNTEyRkQ3NzAw
RTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MzA5RTAwMDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRDA2QzBEOTAwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1h
dENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMDQwOTlFNjQ5MjAwNTZFNTgx
IC8qIFJlbW92ZU5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M1NDM1NDg4ZjU3MWZl
NzVlM2Y5NDJlNjE0N2ZhNTQ4OGQyMTJhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKKworI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5j
bHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBib29sIGlzU2hhZG93SG9zdChjb25zdCBO
b2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAm
JiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRvd1Jvb3QoKTsKK30KKworc3RhdGljIGlubGluZSBT
aGFkb3dUcmVlKiBzaGFkb3dUcmVlRm9yKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5v
ZGUpLT5zaGFkb3dUcmVlKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hh
ZG93VHJlZSogc2hhZG93VHJlZU9mUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYg
KG5vZGUgJiYgbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gc2hhZG93VHJlZUZv
cihub2RlLT5wYXJlbnROb2RlKCkpOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6Zmlyc3RDaGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VS
VChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBBU1NFUlQoIWNoaWxkIHx8ICFjaGls
ZC0+aXNTaGFkb3dSb290KCkpOworICAgIHJldHVybiBjaGlsZDsKK30KKworTm9kZSogUmVpZmll
ZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VS
VChub2RlKTsKKyAgICBOb2RlKiBjaGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hp
bGQtPmlzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUqIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNv
bnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0g
dHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9u
QmFja3dhcmQpOworICAgIEFTU0VSVCghY2hpbGQgfHwgIWNoaWxkLT5pc1NoYWRvd1Jvb3QoKSk7
CisgICAgcmV0dXJuIGNoaWxkOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VDaGlsZChjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlv
biBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIC8vIEZJWE1FOiBBZGQgYW4g
YXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAxMAorICAg
IC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChu
b2RlKS0+aXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7Cisg
ICAgU2hhZG93VHJlZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVGb3Iobm9kZSk7CisgICAgaWYg
KHNoYWRvd1RyZWUgJiYgc2hhZG93VHJlZS0+aGFzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1
cm4gdHJhdmVyc2VMaWdodENoaWxkcmVuKHNoYWRvd1RyZWUtPnlvdW5nZXN0U2hhZG93Um9vdCgp
LCBkaXJlY3Rpb24pOworICAgIHJldHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgZGly
ZWN0aW9uKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTGlnaHRD
aGlsZHJlbihjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBk
aXJlY3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChOb2RlKiBjaGlsZCA9IChk
aXJlY3Rpb24gPT0gUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gbm9kZS0+
Zmlyc3RDaGlsZCgpIDogbm9kZS0+bGFzdENoaWxkKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVy
c2VOb2RlKGNoaWxkLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlm
aWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOb2RlKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRU
cmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7Cisg
ICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgY29uc3QgSFRNTENvbnRl
bnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25MaXN0ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+
c2VsZWN0aW9ucygpOworICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlv
biA9IChkaXJlY3Rpb24gPT0gUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8g
c2VsZWN0aW9uTGlzdC0+Zmlyc3QoKSA6IHNlbGVjdGlvbkxpc3QtPmxhc3QoKSkpCisgICAgICAg
ICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKHNlbGVjdGlvbi0+bm9kZSgpLCBkaXJlY3Rpb24pOwor
ICAgICAgICByZXR1cm4gdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIGRpcmVjdGlvbik7Cisg
ICAgfQorICAgIHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihub2RlKTsKK30KKworTm9kZSogUmVp
ZmllZFRyZWVUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
QVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIE5v
ZGUqIG5leHQgPSB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFJl
aWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgQVNTRVJUKCFuZXh0IHx8
ICFuZXh0LT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIG5leHQ7Cit9CisKK05vZGUqIFJl
aWZpZWRUcmVlVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sK
KyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7Cisg
ICAgTm9kZSogbmV4dCA9IHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9k
ZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFu
ZXh0IHx8ICFuZXh0LT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIG5leHQ7Cit9CisKK05v
ZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlv
blBvaW50KGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRp
cmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgU2hhZG93VHJlZSogc2hhZG93VHJl
ZSA9IHNoYWRvd1RyZWVPZlBhcmVudChub2RlKTsKKyAgICBpZiAoIXNoYWRvd1RyZWUpCisgICAg
ICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7
CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRvd1RyZWUtPnNlbGVj
dGlvbkZvcihub2RlKTsKKyAgICBpZiAoIXNlbGVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRyYXZl
cnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0aW9uKTsKKyAgICBpZiAoSFRNTENv
bnRlbnRTZWxlY3Rpb24qIG5leHRTZWxlY3Rpb24gPSAoZGlyZWN0aW9uID09IFJlaWZpZWRUcmVl
VHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IHNlbGVjdGlvbi0+bmV4dCgpIDogc2VsZWN0aW9u
LT5wcmV2aW91cygpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTm9kZShuZXh0U2VsZWN0aW9u
LT5ub2RlKCksIGRpcmVjdGlvbik7CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFja1Rv
SW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBkaXJlY3Rpb24pOwor
fQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50
VHJlZShjb25zdCBOb2RlKiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmIChOb2RlKiBuZXh0ID0gKGRpcmVj
dGlvbiA9PSBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5uZXh0
U2libGluZygpIDogbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpKQorICAgICAgICByZXR1cm4gdHJh
dmVyc2VOb2RlKG5leHQsIGRpcmVjdGlvbik7CisgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJz
ZVNpYmxpbmdPckJhY2tUb1lvdW5nZXJTaGFkb3dSb290KG5vZGUsIGRpcmVjdGlvbikpCisgICAg
ICAgIHJldHVybiBuZXh0OworICAgIHJldHVybiBlc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50
KG5vZGUsIGRpcmVjdGlvbik7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2
ZXJzZVNpYmxpbmdPckJhY2tUb1lvdW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUsIFJl
aWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9k
ZSk7CisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlz
U2hhZG93Um9vdCgpKSB7CisgICAgICAgIFNoYWRvd1Jvb3QqIHBhcmVudFNoYWRvd1Jvb3QgPSB0
b1NoYWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKTsKKyAgICAgICAgaWYgKCFwYXJlbnRTaGFk
b3dSb290LT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBhc3Np
Z25lZEluc2VydGlvblBvaW50ID0gcGFyZW50U2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAg
ICAgICAgICAgQVNTRVJUKGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgcmV0
dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUoYXNzaWduZWRJbnNlcnRpb25Qb2ludCwg
ZGlyZWN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OmVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1lbnQoY29uc3Qg
Tm9kZSogbm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIGlzSW5zZXJ0
aW9uUG9pbnQobm9kZS0+cGFyZW50Tm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2li
bGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZS0+cGFyZW50Tm9kZSgpLCBkaXJlY3Rpb24p
OworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVy
c2VOb2RlRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzKGNvbnN0IE5vZGUqIG5vZGUsIENyb3NzZWRV
cHBlckJvdW5kYXJ5JiBjcm9zc2VkKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoaXNJ
bnNlcnRpb25Qb2ludChub2RlKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVPckJhY2tUb0lu
c2VydGlvblBvaW50KG5vZGUsIGNyb3NzZWQpOworICAgIGNyb3NzZWQgPSBOb3RDcm9zc2VkOwor
ICAgIHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihub2RlKTsKK30KKworTm9kZSogUmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGUoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91
bmRhcnkmIGNyb3NzZWQpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+
aXNTaGFkb3dSb290KCkpOworICAgIGNyb3NzZWQgPSBOb3RDcm9zc2VkOworICAgIC8vIEZJWE1F
OiBBZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1
bmN0aW9uLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MjAxMAorICAgIC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRp
b25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7CisgICAgcmV0dXJuIHBhcmVudE5vZGVPckJhY2tU
b0luc2VydGlvblBvaW50KG5vZGUsIGNyb3NzZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6cGFyZW50Tm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIENyb3NzZWRVcHBl
ckJvdW5kYXJ5IGNyb3NzZWQ7CisgICAgTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZShub2RlLCBj
cm9zc2VkKTsKKyAgICBVTlVTRURfUEFSQU0oY3Jvc3NlZCk7CisgICAgcmV0dXJuIHBhcmVudDsK
K30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVXaXRob3V0Q3Jvc3Np
bmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOwor
ICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIC8vIEZJWE1FOiBBZGQgYW4g
YXNzZXJ0aW9uIG9uY2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAxMAorICAg
IC8vIEFTU0VSVCghaXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChu
b2RlKS0+aXNBY3RpdmUoKSk7CisgICAgQ3Jvc3NlZFVwcGVyQm91bmRhcnkgY3Jvc3NlZDsKKyAg
ICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlT3JCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBj
cm9zc2VkKTsKKyAgICBpZiAoY3Jvc3NlZCA9PSBDcm9zc2VkKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gcGFyZW50OworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFy
ZW50Tm9kZU9yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVw
cGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgQVNTRVJUKGNyb3NzZWQgPT0gTm90Q3Jvc3Nl
ZCk7CisgICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQo
bm9kZSkpIHsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBz
aGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50
Tm9kZU9yQmFja1RvSW5zZXJ0aW9uUG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBj
cm9zc2VkKTsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGVJbkN1cnJlbnRUcmVlKG5vZGUs
IGNyb3NzZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUlu
Q3VycmVudFRyZWUoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3Nz
ZWQpCit7CisgICAgQVNTRVJUKGNyb3NzZWQgPT0gTm90Q3Jvc3NlZCk7CisgICAgaWYgKE5vZGUq
IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlQmFja1RvWW91bmdlclNo
YWRvd1Jvb3RPckhvc3QodG9TaGFkb3dSb290KHBhcmVudCksIGNyb3NzZWQpOworICAgICAgICBy
ZXR1cm4gdHJhdmVyc2VOb2RlRXNjYXBpbmdGYWxsYmFja0NvbnRlbnRzKHBhcmVudCwgY3Jvc3Nl
ZCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6cGFyZW50Tm9kZUJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnN0IFNoYWRvd1Jv
b3QqIHNoYWRvd1Jvb3QsIENyb3NzZWRVcHBlckJvdW5kYXJ5JiBjcm9zc2VkKQoreworICAgIEFT
U0VSVChzaGFkb3dSb290KTsKKyAgICBBU1NFUlQoY3Jvc3NlZCA9PSBOb3RDcm9zc2VkKTsKKyAg
ICBpZiAoc2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgIGNyb3NzZWQgPSBDcm9z
c2VkOworICAgICAgICByZXR1cm4gc2hhZG93Um9vdC0+aG9zdCgpOworICAgIH0KKyAgICBJbnNl
cnRpb25Qb2ludCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVk
VG8oKTsKKyAgICBBU1NFUlQoYXNzaWduZWRJbnNlcnRpb25Qb2ludCk7CisgICAgcmV0dXJuIHBh
cmVudE5vZGVPckJhY2tUb0luc2VydGlvblBvaW50KGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGNy
b3NzZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6YWRqdXN0ZWRQYXJlbnRO
b2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUg
PSBzaGFkb3dUcmVlT2ZQYXJlbnQobm9kZSkpIHsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2Vs
ZWN0aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpOworICAgIH0KKyAgICBp
ZiAobm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgY29uc3QgU2hhZG93Um9vdCogc2hh
ZG93Um9vdCA9IHRvU2hhZG93Um9vdChub2RlKTsKKyAgICAgICAgaWYgKCFzaGFkb3dSb290LT5p
c1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2Vy
dGlvblBvaW50ID0gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAgICAgICAgICAgQVNTRVJU
KGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgcmV0dXJuIGFzc2lnbmVkSW5z
ZXJ0aW9uUG9pbnQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmhvc3Qo
KTsKKyAgICB9CisgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKK30KKworTm9kZSogUmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sK
KyAgICBpZiAoTm9kZSogbmV4dCA9IGZpcnN0Q2hpbGQobm9kZSkpCisgICAgICAgIHJldHVybiBu
ZXh0OworICAgIGlmIChOb2RlKiBuZXh0ID0gbmV4dFNpYmxpbmcobm9kZSkpCisgICAgICAgIHJl
dHVybiBuZXh0OworICAgIGNvbnN0IE5vZGUqIG4gPSBub2RlOworICAgIHdoaWxlIChuICYmICFu
ZXh0U2libGluZyhuKSkKKyAgICAgICAgbiA9IHBhcmVudE5vZGUobik7CisgICAgaWYgKG4pCisg
ICAgICAgIHJldHVybiBuZXh0U2libGluZyhuKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBl
ckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFpc1NoYWRvd0hvc3Qobm9k
ZSkpIHsKKyAgICAgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9k
ZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICAgICAgICAgIHJl
dHVybiBuZXh0OworICAgIH0KKyAgICBpZiAoTm9kZSogbmV4dCA9IG5leHRTaWJsaW5nKG5vZGUp
KQorICAgICAgICByZXR1cm4gbmV4dDsKKyAgICBjb25zdCBOb2RlKiBuID0gbm9kZTsKKyAgICB3
aGlsZSAobiAmJiAhbmV4dFNpYmxpbmcobikpCisgICAgICAgIG4gPSBwYXJlbnROb2RlV2l0aG91
dENyb3NzaW5nVXBwZXJCb3VuZGFyeShuKTsKKyAgICBpZiAobikKKyAgICAgICAgcmV0dXJuIG5l
eHRTaWJsaW5nKG4pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZl
cnNhbDo6dHJhdmVyc2VQcmV2aW91c05vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
Tm9kZSogbiA9IHByZXZpb3VzU2libGluZyhub2RlKSkgeworICAgICAgICB3aGlsZSAoTm9kZSog
Y2hpbGQgPSBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6bGFzdENoaWxkKG4pKQorICAgICAgICAgICAg
biA9IGNoaWxkOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5v
ZGUobm9kZSk7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZp
b3VzTm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkKK3sK
KyAgICBpZiAoTm9kZSogbiA9IHByZXZpb3VzU2libGluZyhub2RlKSkgeworICAgICAgICB3aGls
ZSAoIWlzU2hhZG93SG9zdChuKSkgeworICAgICAgICAgICAgaWYgKE5vZGUqIGNoaWxkID0gUmVp
ZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTGlnaHRDaGlsZHJlbihuLCBSZWlmaWVkVHJlZVRy
YXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKSkKKyAgICAgICAgICAgICAgICBuID0gY2hpbGQ7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIG47CisgICAgfQorICAgIHJldHVybiBwYXJlbnROb2RlV2l0aG91dENyb3NzaW5n
VXBwZXJCb3VuZGFyeShub2RlKTsKK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjExOTM3MzVlNWQ4NTYyNDA4
YjdmOTAwNjgyNjAyY2UwMDI1ZDBlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJl
aWZpZWRUcmVlVHJhdmVyc2FsX2gKKyNkZWZpbmUgUmVpZmllZFRyZWVUcmF2ZXJzYWxfaAorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dSb290OworCitl
bnVtIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIHsKKyAgICBSZWlmaWVkVHJlZVRyYXZl
cnNhbERpcmVjdGlvbkZvcndhcmQsCisgICAgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25C
YWNrd2FyZAorfTsKKworLy8gRklYTUU6IE1ha2Ugc29tZSBmdW5jdGlvbnMgaW5saW5lIHRvIG9w
dGltaXNlIHRoZSBwZXJmb3JtYW5jZS4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MjAxOQorY2xhc3MgUmVpZmllZFRyZWVUcmF2ZXJzYWwgeworcHVibGljOgor
ICAgIGVudW0gQ3Jvc3NlZFVwcGVyQm91bmRhcnkgeworICAgICAgICBOb3RDcm9zc2VkLAorICAg
ICAgICBDcm9zc2VkLAorICAgIH07CisKKyAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChjb25z
dCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIGxhc3RDaGlsZChjb25zdCBOb2RlKik7CisgICAg
c3RhdGljIE5vZGUqIGxhc3RDaGlsZFdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3Qg
Tm9kZSopOworCisgICAgc3RhdGljIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKyAg
ICBzdGF0aWMgTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKworICAgIHN0YXRp
YyBOb2RlKiBwYXJlbnROb2RlKGNvbnN0IE5vZGUqLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYpOwor
ICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9k
ZSogcGFyZW50Tm9kZVdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOwor
CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSopOworICAgIHN0
YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzTm9kZShjb25zdCBOb2RlKik7CisKKyAgICAvLyBG
SVhNRTogQW4gJ2FkanVzdGVkJyBpcyBub3QgZ29vZCBuYW1lIGZvciBnZW5lcmFsIHVzZSBjYXNl
LiBSZW5hbWUgdGhpcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODIwMjIKKyAgICAvLyBUaGlzIG1heSByZXR1cm4gU2hhZG93Um9vdCBvciBJbnNlcnRp
b25Qb2ludC4KKyAgICBzdGF0aWMgTm9kZSogYWRqdXN0ZWRQYXJlbnROb2RlKGNvbnN0IE5vZGUq
KTsKKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlv
dXNOb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKik7CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlQ2hpbGQoY29uc3QgTm9kZSosIFJlaWZpZWRU
cmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOb2RlKGNv
bnN0IE5vZGUqLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbik7CisgICAgc3RhdGljIE5v
ZGUqIHRyYXZlcnNlTGlnaHRDaGlsZHJlbihjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJz
YWxEaXJlY3Rpb24pOworCisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlU2libGluZ09yQmFja1Rv
SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9u
KTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShjb25zdCBO
b2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworCisgICAgc3RhdGljIE5vZGUq
IHRyYXZlcnNlU2libGluZ09yQmFja1RvWW91bmdlclNoYWRvd1Jvb3QoY29uc3QgTm9kZSosIFJl
aWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSogZXNjYXBlRmFs
bGJhY2tDb250ZW50RWxlbWVudChjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJl
Y3Rpb24pOworCisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTm9kZUVzY2FwaW5nRmFsbGJhY2tD
b250ZW50cyhjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKworICAgIHN0YXRp
YyBOb2RlKiBwYXJlbnROb2RlT3JCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiwgQ3Jv
c3NlZFVwcGVyQm91bmRhcnkmKTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZUluQ3VycmVu
dFRyZWUoY29uc3QgTm9kZSosIENyb3NzZWRVcHBlckJvdW5kYXJ5Jik7CisgICAgc3RhdGljIE5v
ZGUqIHBhcmVudE5vZGVCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dS
b290KiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCmluZGV4IDFiYWUzYmVhN2U5ZWEwYWI5ZWI2
MjQ2YWVmMmRlMDgwYzZhY2MzZGYuLjZmYmU3Mjk1ZDYzYTM5ODFhYTVlODBkMjRjYzAwM2U3N2Fj
ODZhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2
b2lkIFNoYWRvd1RyZWU6OmRldGFjaEhvc3QoRWxlbWVudCogaG9zdCkKICAgICBob3N0LT5kZXRh
Y2hBc05vZGUoKTsKIH0KIAotSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBv
aW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0CitJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5z
ZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBBU1NFUlQobm9k
ZSAmJiBub2RlLT5wYXJlbnROb2RlKCkpOwogCkBAIC0yMjEsNiArMjIxLDExIEBAIEluc2VydGlv
blBvaW50KiBTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAog
ICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKIH0KIAorSFRNTENvbnRlbnRTZWxl
Y3Rpb24qIFNoYWRvd1RyZWU6OnNlbGVjdGlvbkZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAor
eworICAgIHJldHVybiBtX3NlbGVjdG9yLmZpbmRGb3Iobm9kZSk7Cit9CisKIHZvaWQgU2hhZG93
VHJlZTo6cmVhdHRhY2goKQogewogICAgIGRldGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgK
aW5kZXggNTcyMjIxODNhMjYzMTc0NDJmODkwN2ZlZWU5MmNjYTM2NzhkMjcyNi4uZTljMmNjYWRi
MGNjZjdjZDE1NTBmNDBkMzIwODlhZjBmNzM2MjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5o
CkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5z
ZXJ0aW9uUG9pbnQ7CiBjbGFzcyBUcmVlU2NvcGU7CitjbGFzcyBIVE1MQ29udGVudFNlbGVjdGlv
bjsKIAogY2xhc3MgU2hhZG93VHJlZSB7CiBwdWJsaWM6CkBAIC03OSw3ICs4MCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAgdm9pZCBo
b3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKLSAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnRGb3IoTm9kZSopIGNvbnN0OworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZv
cihjb25zdCBOb2RlKikgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlv
bkZvcihjb25zdCBOb2RlKikgY29uc3Q7CiAKICAgICBIVE1MQ29udGVudFNlbGVjdG9yJiBzZWxl
Y3RvcigpOwogICAgIGNvbnN0IEhUTUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9yKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3Iu
Y3BwCmluZGV4IDhiNjJkNTZhNzczZGIzMGRiNmQzMThhZjczYmRkMWMwZjhkYmI0NjcuLjMxZTQx
OTRlYzVhMzdkZTAzOTRjMDNmOGU4MzhlNjViYjQ1ODc0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp1bnNlbGVjdChIVE1MQ29udGVudFNlbGVj
dGlvbkxpc3QqIGxpc3QpCiAgICAgbGlzdC0+Y2xlYXIoKTsKIH0KIAotSFRNTENvbnRlbnRTZWxl
Y3Rpb24qIEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoTm9kZSoga2V5KSBjb25zdAorSFRN
TENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoY29uc3QgTm9k
ZSoga2V5KSBjb25zdAogewogICAgIHJldHVybiBtX3NlbGVjdGlvblNldC5maW5kKGtleSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgK
aW5kZXggZTAxMTgwNTAwYmFkMTIzNDIzYTE3NTg4YTgxOTMyZjE4MGYxNGM1My4uYmNmYmRkYmJk
ODgyNzM4NWE3YzlhZmMxMWMyNGY2ZmVjYTZlMzYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGQoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0LmFk
ZCh2YWx1ZSk7IH0KICAgICB2b2lkIHJlbW92ZShIVE1MQ29udGVudFNlbGVjdGlvbiogdmFsdWUp
IHsgbV9zZXQucmVtb3ZlKHZhbHVlKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2V0LmlzRW1wdHkoKTsgfQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kKE5v
ZGUqIGtleSkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoY29uc3QgTm9k
ZSoga2V5KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgVHJhbnNsYXRvciB7CkBAIC0x
MTgsOSArMTE4LDkgQEAgcHJpdmF0ZToKICAgICBQb2ludGVyU2V0IG1fc2V0OwogfTsKIAotaW5s
aW5lIEhUTUxDb250ZW50U2VsZWN0aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZChO
b2RlKiBrZXkpIGNvbnN0CitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50
U2VsZWN0aW9uU2V0OjpmaW5kKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKIHsKLSAgICBQb2ludGVy
U2V0OjppdGVyYXRvciBmb3VuZCA9IG1fc2V0LmZpbmQ8Tm9kZSosIEhUTUxDb250ZW50U2VsZWN0
aW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOworICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5k
ID0gbV9zZXQuZmluZDxjb25zdCBOb2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OlRyYW5z
bGF0b3I+KGtleSk7CiAgICAgcmV0dXJuIGZvdW5kICE9IG1fc2V0LmVuZCgpID8gKmZvdW5kIDog
MDsKIH0KIApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VsZWN0KElu
c2VydGlvblBvaW50KiwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7CiAgICAgdm9pZCB1bnNl
bGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlv
biogZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBm
aW5kRm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3Q7CiAKICAgICB2b2lkIHdpbGxTZWxlY3QoKTsK
ICAgICBib29sIGlzU2VsZWN0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCBiNTI4MmNkZGMyNzQ4MmNlYzMzNTM1ZGRiZWI2OGM3
MGY1NTg4NGJjLi43NGIxYTIwMGM0ZDllMmIxMjc4MDU0YzQ0N2FmNDAxMWQ0NmQ0OGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTcxLDcgKzcx
LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QgbV9zZWxlY3Rpb25z
OwogfTsKIAotaW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQoraW5saW5l
IGJvb2wgaXNJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQogewogICAgIGlmICghbm9k
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04OCw2ICs4OCwxMiBAQCBpbmxpbmUgSW5zZXJ0
aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKIH0KIAoraW5saW5lIGNvbnN0IEluc2VydGlv
blBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJU
KGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJ
bnNlcnRpb25Qb2ludCo+KG5vZGUpOworfQorCiBpbmxpbmUgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5
KE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFpc0luc2VydGlvblBvaW50KG5vZGUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDZmMmVlMzNhN2FiNjhmMjZmZDEwNzE5N2U4
MTg3NjZhZjE5ZjUwNjcuLmYyZjEwOTgwNDI0MDc2N2QyNTJhNTk2ODU0N2U2MTIzNTY2OTk2Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNp
bmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlaWZpZWRUcmVlVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC0xODEsNiArMTgyLDUxIEBAIGJvb2wgSW50ZXJuYWxzOjphdHRh
Y2hlZChOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gbm9kZS0+YXR0
YWNoZWQoKTsKIH0KIAorTm9kZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0luUmVpZmllZFRyZWUo
Tm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgcmV0dXJuIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpuZXh0U2libGluZyhub2RlKTsKK30KKwor
Tm9kZSogSW50ZXJuYWxzOjpmaXJzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUmVpZmll
ZFRyZWVUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQobm9kZSk7Cit9CisKK05vZGUqIEludGVybmFsczo6
bGFzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxh
c3RDaGlsZChub2RlKTsKK30KKworTm9kZSogSW50ZXJuYWxzOjp0cmF2ZXJzZU5leHROb2RlSW5S
ZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5v
ZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5v
ZGUobm9kZSk7Cit9CisKK05vZGUqIEludGVybmFsczo6dHJhdmVyc2VQcmV2aW91c05vZGVJblJl
aWZpZWRUcmVlKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9k
ZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHJldHVybiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91
c05vZGUobm9kZSk7Cit9CisKIFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNU
ZXh0KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZWxl
bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNzVlZDdlMjZlOTlkOWY4
YTMwMTIyOWM4MGZmYjdlZTA1ZGU5NGRlMS4uYTA2MTNhYzIxN2I4M2ViOWY4MTNlZmE5MDg3NzEz
ZDAwY2Y4YTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04NCw2ICs4NCwx
MiBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0dGFjaGVkKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7
CiAKKyAgICBOb2RlKiBuZXh0U2libGluZ0luUmVpZmllZFRyZWUoTm9kZSosIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBOb2RlKiBmaXJzdENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIE5vZGUqIGxhc3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBOb2RlKiB0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShOb2RlKiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVk
VHJlZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQog
ICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihFbGVtZW50KiwgY29uc3QgU3RyaW5n
JiBjb2xvclZhbHVlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmlu
ZGV4IGYyMjAwZmZjNGIxNTlhMDc2OGZmZGZhZjYwMmZjNzBmNDk4NzUwMzQuLjk1ZmU5ZGM1NThk
NDAwZTIyNWUyNDczNWMyOWQ3NjBmMDhiYTQ4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKQEAgLTU1LDYgKzU1LDEyIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVt
ZW50IGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KGluIE5vZGUgc2hhZG93Um9vdCwgaW4gRE9N
U3RyaW5nIGlkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiBpc1ZhbGlk
Q29udGVudFNlbGVjdChpbiBFbGVtZW50IGNvbnRlbnRFbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKIAorICAgICAgICBOb2RlIG5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5v
ZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIGZpcnN0Q2hpbGRJblJlaWZp
ZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUg
bGFzdENoaWxkSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICBOb2RlIHRyYXZlcnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9k
ZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgdHJhdmVyc2VQcmV2aW91c05v
ZGVJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAg
ICAgICAgYm9vbGVhbiBhdHRhY2hlZChpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogCiAjaWYgZGVmaW5lZChFTkFCTEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xP
UgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGUyYzhmNmRmYWRkNzQyMjRiZmY1MmI4YzkyZThm
NTQ0NjAxZmViNTQuLmFkYTg4Mzc5YmQ5NTBhYTU5OWQwYTRkMTA5NGYyZmQwMzQ5MGMzZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTE2OCw2ICsxNjgsNyBAQCBFWFBPUlRTCiAgICAgICAg
ID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJpbmdJbXBsQDFAUEJFQFoKICAgICAg
ICAgP2V4dGVybmFsUmVwcmVzZW50YXRpb25AV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBQQVZF
bGVtZW50QDFASUBaCiAgICAgICAgID9maW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJUEFWMTJASUBa
CisgICAgICAgID9maXJzdENoaWxkQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFW
Tm9kZUAyQFBCVjMyQEBaCiAgICAgICAgID9mcmFtZURlc3Ryb3llZEBGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID9mcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFja0BTdHJpbmdAV1RGQEBTQT9BVjEyQFBCRUlAWgogICAgICAgICA/Z2V0Q2FjaGVkRE9NU3Ry
dWN0dXJlQFdlYkNvcmVAQFlBUEFWU3RydWN0dXJlQEpTQ0BAUEFWSlNET01HbG9iYWxPYmplY3RA
MUBQQlVDbGFzc0luZm9AM0BAWgpAQCAtMTgwLDcgKzE4MSw5IEBAIEVYUE9SVFMKICAgICAgICAg
P2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5n
QFdURkBAQFoKICAgICAgICAgP2pzU3RyaW5nU2xvd0Nhc2VAV2ViQ29yZUBAWUE/QVZKU1ZhbHVl
QEpTQ0BAUEFWRXhlY1N0YXRlQDNAQUFWPyRIYXNoTWFwQFBBVlN0cmluZ0ltcGxAV1RGQEBWPyRX
ZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQFVTdHJpbmdIYXNoQDJAVT8kSGFzaFRyYWl0c0BQQVZT
dHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBK
U0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1Vz
ZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAg
ICAgP2xhc3RDaGlsZEBSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVAMkBQ
QlYzMkBAWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2Vi
Q29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZA
QFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgorICAgICAgICA/bmV4
dFNpYmxpbmdAUmVpZmllZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJAUEJWMzJA
QFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQElAWgogICAgICAgICA/bnVt
YmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASEBaCiAgICAgICAgID9vYnNlcnZlRnJhbWVARnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQElBRVhQQVZGcmFtZUAyQEBaCkBAIC0yMjcsNiAr
MjMwLDggQEAgRVhQT1JUUwogICAgICAgICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlND
QEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVlJhbmdlQDFAQFoKICAg
ICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFW
SlNET01HbG9iYWxPYmplY3RAMUBQQVZOb2RlTGlzdEAxQEBaCiAgICAgICAgID90b1JhbmdlQFdl
YkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NAQEBaCisgICAgICAgID90cmF2ZXJzZU5l
eHROb2RlQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9kZUAyQFBCVjMyQEBa
CisgICAgICAgID90cmF2ZXJzZVByZXZpb3VzTm9kZUBSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJD
b3JlQEBTQVBBVk5vZGVAMkBQQlYzMkBAWgogICAgICAgICA/dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/dXNlclBy
ZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFA
QFdURkBAWFoKICAgICAgICAgP3V0ZjhAU3RyaW5nQFdURkBAUUJFP0FWQ1N0cmluZ0AyQF9OQFoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCA2NzY5NjE1ZjZiYTY0Y2NhOTgw
NzkzNmJkNzMzZWQ3MTc4ZWM5MzhiLi42ZTdmYTE2NzlhYjhjMmNhYWJiMjRkM2U1YmQ1ZmM0MzJl
ODVkNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYK
KysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCkBAIC0xNTksNiArMTU5
LDcgQEAgRVhQT1JUUwogICAgICAgICA/ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQFBC
RUBaCiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJpbmdJbXBsQDFA
UEJFQFoKICAgICAgICAgP2V4dGVybmFsUmVwcmVzZW50YXRpb25AV2ViQ29yZUBAWUE/QVZTdHJp
bmdAV1RGQEBQQVZFbGVtZW50QDFASUBaCisgICAgICAgID9maXJzdENoaWxkQFJlaWZpZWRUcmVl
VHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9kZUAyQFBCVjMyQEBaCiAgICAgICAgID9mcmFtZURl
c3Ryb3llZEBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAg
ID9nZXRDYWNoZWRET01TdHJ1Y3R1cmVAV2ViQ29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZK
U0RPTUdsb2JhbE9iamVjdEAxQFBCVUNsYXNzSW5mb0AzQEBaCiAgICAgICAgID9nZXREYXRhMTZT
bG93Q2FzZUBTdHJpbmdJbXBsQFdURkBAQUJFUEJfV1haCkBAIC0xNzAsOSArMTcxLDExIEBAIEVY
UE9SVFMKICAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVA
QFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pzU3RyaW5nU2xvd0Nhc2VAV2ViQ29y
ZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAQUFWPyRIYXNoTWFwQFBBVlN0cmlu
Z0ltcGxAV1RGQEBWPyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQFVTdHJpbmdIYXNoQDJAVT8k
SGFzaFRyYWl0c0BQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZK
U1N0cmluZ0BKU0NAQEBKU0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWgogICAgICAgICA/
bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVA
QFFCRV9OWFoKKyAgICAgICAgP2xhc3RDaGlsZEBSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3Jl
QEBTQVBBVk5vZGVAMkBQQlYzMkBAWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2Vi
Q29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBA
WgogICAgICAgICA/b2JzZXJ2ZUZyYW1lQEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3Jl
QEBJQUVYUEFWRnJhbWVAMkBAWgogICAgICAgICA/b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQFoKKyAg
ICAgICAgP25leHRTaWJsaW5nQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9k
ZUAyQFBCVjMyQEBaCiAgICAgICAgID9udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuQE5v
ZGVAV2ViQ29yZUBAUUJFSVhaCiAgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBB
VlBhZ2VAMkBYWgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVA
QEFBRVhYWgpAQCAtMjEyLDYgKzIxNSw4IEBAIEVYUE9SVFMKICAgICAgICAgP3RvSlNAV2ViQ29y
ZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RA
MUBQQVZSYW5nZUAxQEBaCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NA
QFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWTm9kZUxpc3RAMUBAWgog
ICAgICAgICA/dG9SYW5nZUBXZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpTVmFsdWVASlNDQEBAWgor
ICAgICAgICA/dHJhdmVyc2VOZXh0Tm9kZUBSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBT
QVBBVk5vZGVAMkBQQlYzMkBAWgorICAgICAgICA/dHJhdmVyc2VQcmV2aW91c05vZGVAUmVpZmll
ZFRyZWVUcmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJAUEJWMzJAQFoKICAgICAgICAgP3Vw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVY
WFoKICAgICAgICAgP3VzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3Rv
ckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNv
cmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBhYzdi
MDBjZGVkMTdmZTliMTlmNTgyZTcxMzc0ZjAyYzc0YjE2MjRhLi41MzIwZThiMzRkMDAzYTYxMGMz
YjlmMDdmOGU0MTU3ZTZjMDg4ZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTY0LDYg
KzY0LDExIEBAIF9aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9j
dW1lbnRFOwogX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIzOXNldFJlc291cmNlc0Rh
dGFTaXplTGltaXRzRnJvbUludGVybmFsc0VpaTsKIF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5n
Q29udGV4dEMxRVBOU180Tm9kZUU7CiBfWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRE
MUV2OworX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTFuZXh0U2libGluZ0VQS05T
XzROb2RlRTsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDIwdHJhdmVyc2VQcmV2
aW91c05vZGVFUEtOU180Tm9kZUU7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWw5
bGFzdENoaWxkRVBLTlNfNE5vZGVFOworX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2Fs
MTZ0cmF2ZXJzZU5leHROb2RlRVBLTlNfNE5vZGVFOworX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVl
VHJhdmVyc2FsMTBmaXJzdENoaWxkRVBLTlNfNE5vZGVFOwogX1pON1dlYkNvcmUyMWdldENhY2hl
ZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQS04zSlNDOUNsYXNzSW5mb0U7
CiBfWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFajsKIF9a
TjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXY7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODc4ODc5NGE1N2Y2
NWFjY2FjYmU1ZTY3OWVkOGI1NjdkZWEwMzY0Zi4uYjU5YTU0ZGEyNzRkODYwMjhlOGY2ODkyMDE5
ZGRlYTI1OWE1NGNmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAzLTIyICBIYXlhdG8g
SXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRkIFJl
aWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbnRlcm5hbCBBUElzIHdoaWNoIGNh
biBiZSB1c2VkIHRvIHRyYXZlcnNlIFJlaWZpZWQgRE9NIHRyZWUsIHdoaWNoIGlzCisgICAgICAg
IGEgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9uIGFsZ29yaXRobSBleHBsYWluZWQgaW4gU2hh
ZG93IERPTSBzcGVjLgorICAgICAgICBodHRwczovL2R2Y3MudzMub3JnL2hnL3dlYmNvbXBvbmVu
dHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwKKworICAgICAgICBFdmVyeSBw
dWJsaWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gUmVpZmllZFRyZWVUcmF2ZXJzYWwgYXJlIHN0YXRp
YworICAgICAgICBmdW5jdGlvbnMgYW5kIGFyZSBuYW1lZCBpbiBhIHNpbWlsYXIgd2F5IHRvIG9u
ZXMgZGVmaW5lZCBpbiBXZWJDb3JlOjpOb2RlIGNsYXNzLgorICAgICAgICBUaGUgb25seSBkaWZm
ZXJlbmNlIGlzIHRoYXQgUmVpZmllZFRyZWVUcmF2ZXJzYWwgQVBJcyBjb25zaWRlciBzaGFkb3cK
KyAgICAgICAgaG9zdHMgYW5kIGFsc28gdHJhdmVyc2Ugbm9kZXMgaXMgU2hhZG93IERPTSBzdWJ0
cmVlcywgY3Jvc3Npbmcgc2hhZG93J3MgdXBwZXIgYW5kIGxvd2VyIGJvdW5kYXJ5CisgICAgICAg
IHRyYW5zcGFyZW50bHkuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYWN0dWFsIGNsaWVudCB3aGlj
aCB1c2VzIHRoZXNlIEFQSXMuIEZvbGxvdy11cCBwYXRjaGVzIGZvciBGb2N1c05hdmlnYXRpb24K
KyAgICAgICAgYW5kIEV2ZW50RGlzcGF0Y2hlciB3aWxsIHVzZSB0aGUgQVBJcyBzbyB0aGF0IHRo
ZXkgY2FuIHRyYXZlcnNlIG5vZGUgaW4gcmVpZmllZCB0cmVlIG9yZGVyLgorCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2syL1Nr
aXBwZWQ6CisKIDIwMTItMDMtMjIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGRlZCBmYXN0L2V2ZW50cy9yZW1vdmUtdGFyZ2V0LXdpdGgtc2hhZG93LWluLWRy
YWcuaHRtbCB0byB0aGUgTWFjIFdlYktpdDIgc2tpcCBsaXN0LCBzaW5jZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJz
YWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwNDI0ZTc0MTg3YTJlNTdjODVlZGYzNjZhZGQ2
MzNlYzdiYTZjMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNTYgQEAK
K1Rlc3RzIGZvciBSZWlmaWVkIERPTSBUcmVlIFRyYXZlcnNhbCBBUElzLiBDYW4gb25seSBydW4g
d2l0aGluIERSVAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU2hhZG93Um9vdCBz
aG91bGQgYmUgdXNlZC4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCitU
cmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK1RyYXZlcnNlIGluIGJh
Y2t3YXJkLgorRElWCSBpZD1iCitESVYJIGlkPWEKKworQSBjb250ZW50IGVsZW1lbnQgc2hvdWxk
IHNlbGVjdCBsaWdodCBjaGlsZHJlbgorUmVpZmllZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBp
ZD1iCisJRElWCSBpZD1jCisJRElWCSBpZD1kCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJ
IGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1jCitESVYJIGlkPWQKK1RyYXZlcnNlIGluIGJhY2t3
YXJkLgorRElWCSBpZD1kCitESVYJIGlkPWMKK0RJVgkgaWQ9YgorRElWCSBpZD1hCisKK1Rlc3Qg
Zm9yIGNvbnRlbnQgZWxlbWVudCBzZWxlY3Rvci4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQor
CURJVgkgaWQ9YgorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitUcmF2ZXJzZSBp
biBiYWNrd2FyZC4KK0RJVgkgaWQ9YQorCitMaWdodCBjaGlsZHJlbiBzaG91bGQgYmUgc2VsZWN0
ZWQgb25seSBhdCBvbmNlLgorUmVpZmllZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1iCisK
K1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorVHJhdmVyc2UgaW4g
YmFja3dhcmQuCitESVYJIGlkPWUKK0RJVgkgaWQ9ZAorRElWCSBpZD1jCitESVYJIGlkPWEKKwor
QSBjb250ZW50IGVsZW1lbnQgY2FuIGhhdmUgZmFsbGJhY2sgZWxlbWVudHMuCitSZWlmaWVkIFRy
ZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwlESVYJIGlkPWYxCisJRElWCSBpZD1mMgorCitU
cmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9ZjEKK0RJ
VgkgaWQ9ZjIKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1mMgorRElWCSBpZD1mMQor
RElWCSBpZD1iCitESVYJIGlkPWEKKworRmFsbGJhY2sgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSB1
c2VkIGlmICBlbGVtZW50IHNlbGVjdHMgYW55IGVsZW1lbnRzLgorUmVpZmllZCBUcmVlOgorRElW
CSBpZD1hCisJRElWCSBpZD1iCisJRElWCSBpZD1mMQorCURJVgkgaWQ9ZjIKKworVHJhdmVyc2Ug
aW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWYxCitESVYJIGlkPWYy
CitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZjIKK0RJVgkgaWQ9ZjEKK0RJVgkgaWQ9
YgorRElWCSBpZD1hCisKK1Rlc3QgZm9yIE5lc3RlZCBTaGFkb3dSb290cy4KK1JlaWZpZWQgVHJl
ZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCQlESVYJIGlkPWMKKwkJRElWCSBpZD1lCisJCURJ
VgkgaWQ9ZAorCURJVgkgaWQ9ZgorCURJVgkgaWQ9aAorCURJVgkgaWQ9aQorCURJVgkgaWQ9Zwor
CitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9Ywor
RElWCSBpZD1lCitESVYJIGlkPWQKK0RJVgkgaWQ9ZgorRElWCSBpZD1oCitESVYJIGlkPWkKK0RJ
VgkgaWQ9ZworVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWcKK0RJVgkgaWQ9aQorRElW
CSBpZD1oCitESVYJIGlkPWYKK0RJVgkgaWQ9ZAorRElWCSBpZD1lCitESVYJIGlkPWMKK0RJVgkg
aWQ9YgorRElWCSBpZD1hCisKK1Rlc3QgZm9yIE11bHRpcGxlIFNoYWRvd1Jvb3RzLgorUmVpZmll
ZCBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1kCisJRElWCSBpZD1iCisJRElWCSBpZD1mCisJ
RElWCSBpZD1jCisJRElWCSBpZD1lCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEK
K0RJVgkgaWQ9ZAorRElWCSBpZD1iCitESVYJIGlkPWYKK0RJVgkgaWQ9YworRElWCSBpZD1lCitU
cmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZQorRElWCSBpZD1jCitESVYJIGlkPWYKK0RJ
VgkgaWQ9YgorRElWCSBpZD1kCitESVYJIGlkPWEKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3OGFl
ZWM3NTJmMTZjZmJmZWNlZWI3NzZhMGYwMjcxMTYyNWU1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sCkBA
IC0wLDAgKzEsMTYyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
cyBmb3IgUmVpZmllZCBET00gVHJlZSBUcmF2ZXJzYWwgQVBJcy4gQ2FuIG9ubHkgcnVuIHdpdGhp
biBEUlQiKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIGR1bXBOb2RlKG5vZGUpCit7
CisgICAgdmFyIG91dHB1dCA9IG5vZGUubm9kZU5hbWUgKyAiXHQiOworICAgIGlmIChub2RlLmlk
KQorICAgICAgICBvdXRwdXQgKz0gJyBpZD0nICsgbm9kZS5pZDsKKyAgICBpZiAobm9kZS5jbGFz
c05hbWUpCisgICAgICAgIG91dHB1dCArPSAnIGNsYXNzPScgKyBub2RlLmNsYXNzTmFtZTsKKyAg
ICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBkdW1wUmVpZmllZFRyZWUobm9kZSwgaW5k
ZW50KQoreworICAgIGluZGVudCA9IGluZGVudCB8fCAiIjsKKyAgICB2YXIgb3V0cHV0ID0gaW5k
ZW50ICsgZHVtcE5vZGUobm9kZSkgKyAiXG4iOworICAgIHZhciBjaGlsZDsKKyAgICBmb3IgKGNo
aWxkID0gaW50ZXJuYWxzLmZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKG5vZGUpOyBjaGlsZDsgY2hp
bGQgPSBpbnRlcm5hbHMubmV4dFNpYmxpbmdJblJlaWZpZWRUcmVlKGNoaWxkKSkKKyAgICAgICAg
IG91dHB1dCArPSBkdW1wUmVpZmllZFRyZWUoY2hpbGQsIGluZGVudCArICJcdCIpOworICAgIHJl
dHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGxhc3ROb2RlSW5SZWlmaWVkVHJlZShyb290KQor
eworICAgIHZhciBsYXN0Tm9kZSA9IHJvb3Q7CisgICAgd2hpbGUgKGludGVybmFscy5sYXN0Q2hp
bGRJblJlaWZpZWRUcmVlKGxhc3ROb2RlKSkKKyAgICAgICAgbGFzdE5vZGUgPSBpbnRlcm5hbHMu
bGFzdENoaWxkSW5SZWlmaWVkVHJlZShsYXN0Tm9kZSk7CisgICAgcmV0dXJuIGxhc3ROb2RlOwor
fQorCitmdW5jdGlvbiBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNpbmdJbkZvd2FyZChyb290KQor
eworICAgIHZhciBub2RlID0gcm9vdDsKKyAgICB2YXIgbGFzdCA9IGxhc3ROb2RlSW5SZWlmaWVk
VHJlZShyb290KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBkZWJ1ZyhkdW1wTm9kZShu
b2RlKSk7CisgICAgICAgIGlmIChub2RlID09IGxhc3QpCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgbm9kZSA9IGludGVybmFscy50cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShub2Rl
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3dSZWlmaWVkVHJlZUJ5VHJhdmVyc2luZ0luQmFj
a3dhcmQocm9vdCkKK3sKKyAgICB2YXIgbm9kZSA9IGxhc3ROb2RlSW5SZWlmaWVkVHJlZShyb290
KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBkZWJ1ZyhkdW1wTm9kZShub2RlKSk7Cisg
ICAgICAgIGlmIChub2RlID09IHJvb3QpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbm9k
ZSA9IGludGVybmFscy50cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVpZmllZFRyZWUobm9kZSk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBzaG93UmVpZmllZFRyZWUobm9kZSkKK3sKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKG5vZGUpOworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsK
KworICAgIGRlYnVnKCdSZWlmaWVkIFRyZWU6Jyk7CisgICAgZGVidWcoZHVtcFJlaWZpZWRUcmVl
KG5vZGUpKTsKKworICAgIGRlYnVnKCdUcmF2ZXJzZSBpbiBmb3J3YXJkLicpOworICAgIHNob3dS
ZWlmaWVkVHJlZUJ5VHJhdmVyc2luZ0luRm93YXJkKG5vZGUpOworCisgICAgZGVidWcoJ1RyYXZl
cnNlIGluIGJhY2t3YXJkLicpOworICAgIHNob3dSZWlmaWVkVHJlZUJ5VHJhdmVyc2luZ0luQmFj
a3dhcmQobm9kZSk7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKK2RlYnVnKCdTaGFkb3dSb290IHNo
b3VsZCBiZSB1c2VkLicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2InfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYyd9KSkpOworCitkZWJ1ZygnQSBjb250ZW50IGVsZW1lbnQgc2hvdWxkIHNlbGVjdCBsaWdo
dCBjaGlsZHJlbicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdjb250ZW50JykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSkpKTsKKworZGVi
dWcoJ1Rlc3QgZm9yIGNvbnRlbnQgZWxlbWVudCBzZWxlY3Rvci4nKTsKK3Nob3dSZWlmaWVkVHJl
ZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5kJ30p
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pLAorICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnZSd9KSkpOworCitkZWJ1ZygnTGlnaHQgY2hpbGRyZW4gc2hv
dWxkIGJlIHNlbGVjdGVkIG9ubHkgYXQgb25jZS4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dS
b290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5kJ30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnZSd9KSkpOworCitkZWJ1ZygnQSBjb250ZW50IGVsZW1lbnQgY2FuIGhhdmUgZmFs
bGJhY2sgZWxlbWVudHMuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcueid9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZjEnfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdmMid9KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9
KSkpOworCitkZWJ1ZygnRmFsbGJhY2sgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSB1c2VkIGlmIDxj
b250ZW50PiBlbGVtZW50IHNlbGVjdHMgYW55IGVsZW1lbnRzLicpOworc2hvd1JlaWZpZWRUcmVl
KAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmMnfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2YxJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZjInfSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKTsKKworZGVidWcoJ1Rlc3QgZm9yIE5lc3RlZCBTaGFk
b3dSb290cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdiJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdjb250ZW50JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
ZSd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2YnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdj
b250ZW50JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2cnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
aCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2knfSkpKTsKKwor
ZGVidWcoJ1Rlc3QgZm9yIE11bHRpcGxlIFNoYWRvd1Jvb3RzLicpOworc2hvd1JlaWZpZWRUcmVl
KAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpLAorICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZid9KSkpOworCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggNWI3
Yjk3OTMwZGIyYjk1YTNlYzgwOTg0YjZiYWRjN2IxZTljMGIwNS4uNmI1ZjljZTI4MmY0MzU4OGVh
YjQyM2FlODIyMDYxNjEwNjZlMTFmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTE4
OTUsNiArMTg5NSw3IEBAIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1z
aGFkb3ctc3R5bGUuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1tZWRp
YS1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWV0ZXIt
ZWxlbWVudC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvZ2V0LWVsZW1lbnQtYnktaWQtaW4tc2hhZG93
LXJvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAog
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVk
Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDI0ZjQ0YjUzZGNjOWMyOTBmMDk2YTA1
ZmIyZDgxNmI2YTc0NWUxZDAuLjkzYTM3MGNhOGNmYmFhMWVlMGY5NDkyNGRmMmIxMDljODI2ODkw
ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTc0LDYgKzE3NCw3IEBAIGZhc3QvZG9t
L3NoYWRvdy9pZnJhbWUtc2hhZG93Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmlu
Zy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCitm
YXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LWJvdW5kYXJ5LWV2ZW50cy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNv
bnRlbnQtY3Jhc2guaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggNmYxMWE4NzRiODdjZTY0NGNjNTA2YmNhNDY1N2E3
MDFlMThhYTAzZC4uNTQ1OWNiMTYwNDRkNjdjZjkzNWE3Y2RiNGMzNzBkYTUwNzc2MTUyNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE0NjgsNiArMTQ2OCw3IEBAIGZhc3QvZG9tL3No
YWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3ctc3R5bGUuaHRtbAogZmFzdC9kb20v
c2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1tZWRpYS1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWV0ZXItZWxlbWVudC5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvZ2V0LWVsZW1lbnQtYnktaWQtaW4tc2hhZG93LXJvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93
L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yb290LWFjdGl2ZUVsZW1lbnQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbmNhaXJvL1NraXBwZWQKaW5kZXggYWVmNzk4MmE1NjVkNjRhMmVkNWNlMWQwMWY5ZTMyNDMy
MDVmNDEzOC4uYzE5MzVjOGJkYTEwZmJjMmRjNmZlYTM0YWYxMmQzNjAyMTVkM2M2ZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0xOTc5LDYgKzE5NzksNyBAQCBmYXN0
L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93Lmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvY29udGVudC1lbGVtZW50LWluLW1ldGVyLWVsZW1lbnQuaHRtbAogZmFzdC9kb20vc2hh
ZG93L2dldC1lbGVtZW50LWJ5LWlkLWluLXNoYWRvdy1yb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRv
dy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9v
dC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hY3RpdmVFbGVtZW50Lmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2sy
L1NraXBwZWQKaW5kZXggODljNjU3NjY4ZWI3YWEyYjUzMmVkNzhmYjQ2NmE2NjYwZGEyZmE1Ny4u
MGI1NGNmMTBmYWUwNTVlY2I1OTI3ZTdiNDA2MmVmMjQ3MjYyMjg1ZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQKQEAgLTEwODUsNiArMTA4NSw3IEBAIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50
LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3cuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxl
bWVudC1vdXRzaWRlLXNoYWRvdy1zdHlsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1l
bGVtZW50LWluLW1lZGlhLWVsZW1lbnQuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxl
bWVudC1pbi1tZXRlci1lbGVtZW50Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUt
dHJhdmVyc2FsLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAog
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcm9vdC1hY3RpdmVFbGVtZW50Lmh0bWwKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCA0NDNlZWU4YWM2YTM5NjUyODYyYWNkNjhiY2JlMDdhMzNlMzBlNjAxLi4zMzVh
YThiZTFkYzZiMTFmNzc2ZTg1ZjU3MTdkOGI4OWIxMjQxMzdhIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDMtMjIgIEhheWF0byBJ
dG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBBZGQgUmVp
ZmllZCBET00gVHJlZSB0cmF2ZXJzYWwgaW50ZXJuYWwgQVBJcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTk3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGludGVybmFsIEFQSXMgd2hpY2ggY2Fu
IGJlIHVzZWQgdG8gdHJhdmVyc2UgUmVpZmllZCBET00gdHJlZSwgd2hpY2ggaXMKKyAgICAgICAg
YSByZXN1bHQgb2Ygbm9kZSBkaXN0cmlidXRpb24gYWxnb3JpdGhtIGV4cGxhaW5lZCBpbiBTaGFk
b3cgRE9NIHNwZWMuCisgICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50
cy9yYXctZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbAorCisgICAgICAgIEV2ZXJ5IHB1
YmxpYyBmdW5jdGlvbnMgZGVmaW5lZCBpbiBSZWlmaWVkVHJlZVRyYXZlcnNhbCBhcmUgc3RhdGlj
CisgICAgICAgIGZ1bmN0aW9ucyBhbmQgYXJlIG5hbWVkIGluIGEgc2ltaWxhciB3YXkgdG8gb25l
cyBkZWZpbmVkIGluIFdlYkNvcmU6Ok5vZGUgY2xhc3MuCisgICAgICAgIFRoZSBvbmx5IGRpZmZl
cmVuY2UgaXMgdGhhdCBSZWlmaWVkVHJlZVRyYXZlcnNhbCBBUElzIGNvbnNpZGVyIHNoYWRvdwor
ICAgICAgICBob3N0cyBhbmQgYWxzbyB0cmF2ZXJzZSBub2RlcyBpcyBTaGFkb3cgRE9NIHN1YnRy
ZWVzLCBjcm9zc2luZyBzaGFkb3cncyB1cHBlciBhbmQgbG93ZXIgYm91bmRhcnkKKyAgICAgICAg
dHJhbnNwYXJlbnRseS4KKworICAgICAgICBUaGVyZSBpcyBubyBhY3R1YWwgY2xpZW50IHdoaWNo
IHVzZXMgdGhlc2UgQVBJcy4gRm9sbG93LXVwIHBhdGNoZXMgZm9yIEZvY3VzTmF2aWdhdGlvbgor
ICAgICAgICBhbmQgRXZlbnREaXNwYXRjaGVyIHdpbGwgdXNlIHRoZSBBUElzIHNvIHRoYXQgdGhl
eSBjYW4gdHJhdmVyc2Ugbm9kZSBpbiByZWlmaWVkIHRyZWUgb3JkZXIuCisKKyAgICAgICAgKiBT
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTAzLTIyICBSYXBoYWVsIEt1
Ym8gZGEgQ29zdGEgIDxyYWt1Y29ARnJlZUJTRC5vcmc+CiAKICAgICAgICAgW0NNYWtlXSBVbnJl
dmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTExNzc4Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133730</attachid>
            <date>2012-03-25 22:29:06 -0700</date>
            <delta_ts>2012-03-25 23:44:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79197-20120326142905.patch</filename>
            <type>text/plain</type>
            <size>60725</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uNDViZGQyODdhYjkwOWExOTBkOTI4ZTYyMzAwZmQ1
ZDYwOThhMWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTAzLTIyICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRk
IFJlaWZpZWQgRE9NIFRyZWUgdHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmll
d2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICBBZGQgaW50ZXJuYWwgQVBJcyB3aGlj
aCBjYW4gYmUgdXNlZCB0byB0cmF2ZXJzZSBSZWlmaWVkIERPTSB0cmVlLCB3aGljaCBpcworICAg
ICAgICBhIHJlc3VsdCBvZiBub2RlIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0gZXhwbGFpbmVkIGlu
IFNoYWRvdyBET00gc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21w
b25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5odG1sCisKKyAgICAgICAgRXZl
cnkgcHVibGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIFJlaWZpZWRUcmVlVHJhdmVyc2FsIGFyZSBz
dGF0aWMKKyAgICAgICAgZnVuY3Rpb25zIGFuZCBhcmUgbmFtZWQgaW4gYSBzaW1pbGFyIHdheSB0
byBvbmVzIGRlZmluZWQgaW4gV2ViQ29yZTo6Tm9kZSBjbGFzcy4KKyAgICAgICAgVGhlIG9ubHkg
ZGlmZmVyZW5jZSBpcyB0aGF0IFJlaWZpZWRUcmVlVHJhdmVyc2FsIEFQSXMgY29uc2lkZXIgc2hh
ZG93CisgICAgICAgIGhvc3RzIGFuZCBhbHNvIHRyYXZlcnNlIG5vZGVzIGlzIFNoYWRvdyBET00g
c3VidHJlZXMsIGNyb3NzaW5nIHNoYWRvdydzIHVwcGVyIGFuZCBsb3dlciBib3VuZGFyeQorICAg
ICAgICB0cmFuc3BhcmVudGx5LgorCisgICAgICAgIFRoZXJlIGlzIG5vIGFjdHVhbCBjbGllbnQg
d2hpY2ggdXNlcyB0aGVzZSBBUElzLiBGb2xsb3ctdXAgcGF0Y2hlcyBmb3IgRm9jdXNOYXZpZ2F0
aW9uCisgICAgICAgIGFuZCBFdmVudERpc3BhdGNoZXIgd2lsbCB1c2UgdGhlIEFQSXMgc28gdGhh
dCB0aGV5IGNhbiB0cmF2ZXJzZSBub2RlIGluIHJlaWZpZWQgdHJlZSBvcmRlci4KKworICAgICAg
ICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1sCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNTaGFkb3dIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OnNo
YWRvd1RyZWVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93VHJlZU9mUGFyZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpmaXJzdENoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0Q2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZFdpdGhvdXRDcm9zc2luZ1Vw
cGVyQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRy
YXZlcnNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRy
YXZlcnNlTGlnaHRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZl
cnNhbDo6dHJhdmVyc2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVy
c2FsOjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNh
bDo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVy
c2FsOjp0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxp
bmdPckJhY2tUb1lvdW5nZXJTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRU
cmVlVHJhdmVyc2FsOjplc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5vZGVFc2NhcGluZ0ZhbGxiYWNr
Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVu
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5v
ZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZp
ZWRUcmVlVHJhdmVyc2FsOjpwYXJlbnROb2RlT3JCYWNrVG9JbnNlcnRpb25Qb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUluQ3VycmVudFRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVC
YWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVk
VHJlZVRyYXZlcnNhbDo6YWRqdXN0ZWRQYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
aWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5nVXBw
ZXJCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VQcmV2aW91c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZFRyZWVUcmF2ZXJz
YWw6OnRyYXZlcnNlUHJldmlvdXNOb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeSk6Cisg
ICAgICAgICogZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChSZWlmaWVkVHJlZVRyYXZlcnNhbCk6CisgICAgICAgICogZG9tL1No
YWRvd1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9p
bnRGb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6c2VsZWN0aW9uRm9yKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9TaGFkb3dUcmVlLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1RyZWUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hU
TUxDb250ZW50U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxl
Y3Rvcjo6ZmluZEZvcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rv
ci5oOgorICAgICAgICAoSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQpOgorICAgICAgICAoSFRNTENvbnRlbnRT
ZWxlY3Rvcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9JbnNl
cnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5leHRTaWJsaW5nSW5SZWlm
aWVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6Zmlyc3RDaGlsZEluUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpsYXN0Q2hpbGRJblJlaWZpZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
dHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjp0cmF2ZXJzZVByZXZpb3VzTm9kZUluUmVpZmllZFRyZWUpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmlkbDoKKwogMjAxMi0wMy0yNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRG9uJ3QgdXNlIENTU1J1bGVMaXN0IGZvciBjaGlsZCBydWxlIG93
bmVyc2hpcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDJkNjk4YWUzN2RiMWY5YTdiZTM1ODA4MDQzZThhZTM0NWFj
ZWY1NmQuLjg5ZjEwYWY1ODVhOTQwMzE1ODE0NzBhYzkxY2Q4YmVkNWIxOTM0N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wMy0yMiAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01dIEFkZCBSZWlmaWVkIERPTSBUcmVlIHRy
YXZlcnNhbCBpbnRlcm5hbCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzkxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXpr
b3YuCisKKyAgICAgICAgQWRkIGludGVybmFsIEFQSXMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdHJh
dmVyc2UgUmVpZmllZCBET00gdHJlZSwgd2hpY2ggaXMKKyAgICAgICAgYSByZXN1bHQgb2Ygbm9k
ZSBkaXN0cmlidXRpb24gYWxnb3JpdGhtIGV4cGxhaW5lZCBpbiBTaGFkb3cgRE9NIHNwZWMuCisg
ICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAv
c3BlYy9zaGFkb3cvaW5kZXguaHRtbAorCisgICAgICAgIEV2ZXJ5IHB1YmxpYyBmdW5jdGlvbnMg
ZGVmaW5lZCBpbiBSZWlmaWVkVHJlZVRyYXZlcnNhbCBhcmUgc3RhdGljCisgICAgICAgIGZ1bmN0
aW9ucyBhbmQgYXJlIG5hbWVkIGluIGEgc2ltaWxhciB3YXkgdG8gb25lcyBkZWZpbmVkIGluIFdl
YkNvcmU6Ok5vZGUgY2xhc3MuCisgICAgICAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBS
ZWlmaWVkVHJlZVRyYXZlcnNhbCBBUElzIGNvbnNpZGVyIHNoYWRvdworICAgICAgICBob3N0cyBh
bmQgYWxzbyB0cmF2ZXJzZSBub2RlcyBpcyBTaGFkb3cgRE9NIHN1YnRyZWVzLCBjcm9zc2luZyBz
aGFkb3cncyB1cHBlciBhbmQgbG93ZXIgYm91bmRhcnkKKyAgICAgICAgdHJhbnNwYXJlbnRseS4K
KworICAgICAgICBUaGVyZSBpcyBubyBhY3R1YWwgY2xpZW50IHdoaWNoIHVzZXMgdGhlc2UgQVBJ
cy4gRm9sbG93LXVwIHBhdGNoZXMgZm9yIEZvY3VzTmF2aWdhdGlvbgorICAgICAgICBhbmQgRXZl
bnREaXNwYXRjaGVyIHdpbGwgdXNlIHRoZSBBUElzIHNvIHRoYXQgdGhleSBjYW4gdHJhdmVyc2Ug
bm9kZSBpbiByZWlmaWVkIHRyZWUgb3JkZXIuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6
CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTAzLTI1ICBBbGV4YW5k
ZXIgRsOmcsO4eSAgPGFsZXhhbmRlci5mYWVyb3lAbm9raWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgYnVpbGQgZml4IGZvciBRdFdlYktpdCBvbiBNYWMgT1MgWC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggYTg0ODU4MzZjZDE4ODI2YTdmNzVjYWMwNDVmODFlYjM5MTJlYmZhNS4uNWY5Nzdm
OGI2NDEwNDVlMDQ3ZDQ1NDZkMzhjMmYwM2E3MzkwNWYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTYxNSw2ICs2MTUsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1JhbmdlLmNw
cAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5jcHAKICAgICBkb20vUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuY3BwCisgICAgZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcAogICAgIGRvbS9TY29w
ZWRFdmVudFF1ZXVlLmNwcAogICAgIGRvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwCiAg
ICAgZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCBmZDg4ZmVkYTY4N2RiOWQ2MjVhZGFhOTNjNTRiZWZiNTdmZjE4NDYwLi41MWExMzQ2NzdiNjc5
MDk0Njg3N2M0YzNlMmEyYThhY2FkNDhlNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTE5MTksNiArMTkxOSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJh
dmVyc2FsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2FsLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L1Njb3BlZEV2ZW50UXVldWUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA4M2QzZDMzMWJjZDFlYzEyZDQ4
ZDYzM2YyNTU4YzVhYmRmYWU2MWRjLi4yY2YzNmZiMDc0YTY4NDIzNjE5N2NkZWJkMWE4NDk3NDk1
OTU0MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTU5Miw2ICs1OTIsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBkb20vUmFuZ2VFeGNlcHRpb24uY3BwIFwKICAgICBkb20vUmF3RGF0YURvY3VtZW50UGFyc2Vy
LmggXAogICAgIGRvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgXAorICAgIGRvbS9SZWlm
aWVkVHJlZVRyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCBcCiAg
ICAgZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXAogICAgIGRvbS9TY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuY3BwIFwKQEAgLTE3MjEsNiArMTcyMiw3IEBAIEhFQURFUlMgKz0g
XAogICAgIGRvbS9RdWFsaWZpZWROYW1lLmggXAogICAgIGRvbS9SYW5nZS5oIFwKICAgICBkb20v
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBcCisgICAgZG9tL1JlaWZpZWRUcmVlVHJhdmVyc2Fs
LmggXAogICAgIGRvbS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmggXAogICAgIGRvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBcCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuaCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCmluZGV4IDcyMWFjNGMzODk3MjA1ODNhNWJiZTM4NjRmZDA5NzFlMGVmZWU1
ODUuLjBjNDI2ZjdlMGMxN2Y2MzI5Mjc4ZmYxYmRkZGQ1YWYzNzg0NWM3MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCkBAIC02MDcsNiArNjA3LDExIEBAIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmlu
Z0NvbnRleHRDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0
RDFFdgogX19aTjdXZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFjdG9yeTI0Y3JlYXRlUGxhdGZvcm1N
b3VzZUV2ZW50RVA3TlNFdmVudFA2TlNWaWV3CiBfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRG
YWN0b3J5MjdjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRFUDdOU0V2ZW50CitfX1pON1dlYkNv
cmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTFuZXh0U2libGluZ0VQS05TXzROb2RlRQorX19aTjdX
ZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtOU180
Tm9kZUUKK19fWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWw5bGFzdENoaWxkRVBLTlNf
NE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTZ0cmF2ZXJzZU5leHRO
b2RlRVBLTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJhdmVyc2FsMTBmaXJz
dENoaWxkRVBLTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0MzBz
ZXRTaG93c0NyYXNoZWRQbHVnaW5JbmRpY2F0b3JFdgogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJl
c3BvbnNlQmFzZTExc2V0TWltZVR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMFJl
c291cmNlUmVzcG9uc2VCYXNlMTdzZXRIVFRQU3RhdHVzQ29kZUVpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggOGVlZDcxZmMzZDFhMThkMTFhZDJjNzNlZjRjZmFlMzJlY2Y1NTdmMC4uM2QyZWY3OTYwZDhj
ZmJjOTYyMmQ0ZmQ3MWYzYTc0NTlhODMxYjlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjI1LDYg
KzYyNSw3IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlLmgnLAogICAgICAgICAgICAgJ2RvbS9S
YW5nZUJvdW5kYXJ5UG9pbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1JlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmgnLAorICAgICAgICAgICAgJ2RvbS9SZWlmaWVkVHJlZVRyYXZlcnNhbC5oJywKICAg
ICAgICAgICAgICdkb20vUmVuZGVyZWREb2N1bWVudE1hcmtlci5oJywKICAgICAgICAgICAgICdk
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oJywKICAgICAgICAgICAgICdkb20vU2NyaXB0UnVu
bmVyLmgnLApAQCAtNTIxNiw2ICs1MjE3LDggQEAKICAgICAgICAgICAgICdkb20vUmFuZ2VFeGNl
cHRpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oJywKICAg
ICAgICAgICAgICdkb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY3BwJywKKyAgICAgICAgICAg
ICdkb20vUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwJywKKyAgICAgICAgICAgICdkb20vUmVpZmll
ZFRyZWVUcmF2ZXJzYWwuaCcsCiAgICAgICAgICAgICAnZG9tL1JlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcCcsCiAg
ICAgICAgICAgICAnZG9tL1Njb3BlZEV2ZW50UXVldWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDEzNzY2ZjJlZDI3ZDMyNjE0ZjkxMjUw
MjI1NjYxMWFjNjVlNGRmZWQuLjA4ZWU3ODAxNWJiZWVjYWRhZmUyY2I4OGE5ZWU4ZTQzNjQxMjVi
NTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC01MTkwMiw2ICs1MTkwMiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUmVpZmllZFRyZWVU
cmF2ZXJzYWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVD
b25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNjQwMDczNzZkNzNhNmE1MjE1Yjg5MDlmNjU0ZjkxMTVjOTMyMDU1
NC4uYmVlOGVhNjExYWFkOWRjNzZjNDQ4OWY3NDIwYzlmOTkzNDUyYWIzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1NSw2
ICsxMzU1LDggQEAKIAkJNDlGRkJGMUQxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4
dDNETWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tICovOyB9
OwogCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlGRkJGM0QxMUM5M0VFMzAwNkE3
MTE4IC8qIFdlYkdMTGF5ZXIuaCAqLzsgfTsKIAkJNDlGRkJGNDAxMUM5M0VFMzAwNkE3MTE4IC8q
IFdlYkdMTGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OUZGQkYzRTExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5tbSAqLzsgfTsKKwkJ
NEEwMTNEMjkxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMDEzRDI3MTUxMkZE
NzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNhbC5jcHAgKi87IH07CisJCTRBMDEzRDJB
MTUxMkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwMTNEMjgxNTEyRkQ3NzAwRTFFNjEz
IC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggKi87IH07CiAJCTRBMERBMkZFMTI5QjI0MTkwMEFC
NjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEEwREEyRkMxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1B
c3NvY2lhdGVkRWxlbWVudC5jcHAgKi87IH07CiAJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAv
KiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBMERBMkZEMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QTFFNzE5MDE0RTEwMUU0MDA2MjZGOUQgLyogSlNIVE1MQ29udGVudEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEExRTcxOEUx
NEUxMDFFNDAwNjI2RjlEIC8qIEpTSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTgy
OTUsNiArODI5Nyw4IEBACiAJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0Nv
bnRleHQzRE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dDNETWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUZG
QkYzRDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHTExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5RkZCRjNFMTFDOTNFRTMwMDZBNzExOCAvKiBXZWJHTExheWVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR0xMYXllci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNEEwMTNEMjcxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJh
dmVyc2FsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlaWZpZWRU
cmVlVHJhdmVyc2FsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEEwMTNEMjgx
NTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVlVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlaWZpZWRUcmVlVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRBMERBMkZDMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEwREEy
RkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEExRTcxOEUxNEUxMDFFNDAwNjI2RjlEIC8qIEpTSFRNTENv
bnRlbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SFRNTENvbnRlbnRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MDgwLDYgKzIxMDg0LDggQEAKIAkJCQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0
YURvY3VtZW50UGFyc2VyLmggKi8sCiAJCQkJODUwMzFCMzUwQTQ0RUZDNzAwRjk5MkUwIC8qIFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCAqLywKIAkJCQk4NTAzMUIzNjBBNDRFRkM3MDBGOTky
RTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCAqLywKKwkJCQk0QTAxM0QyNzE1MTJGRDc3
MDBFMUU2MTMgLyogUmVpZmllZFRyZWVUcmF2ZXJzYWwuY3BwICovLAorCQkJCTRBMDEzRDI4MTUx
MkZENzcwMEUxRTYxMyAvKiBSZWlmaWVkVHJlZVRyYXZlcnNhbC5oICovLAogCQkJCUE3NkU1RjdF
MTM1RTBEQ0YwMEE2OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi8sCiAJCQkJNDk5
OEFFQzQxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgg
Ki8sCiAJCQkJNDk5OEFFQzUxM0Y5RDBFQTAwOTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrLmlkbCAqLywKQEAgLTIzNzgzLDYgKzIzNzg5LDcgQEAKIAkJCQlCQ0FCNDE4MjEz
RTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0QzBB
NDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyQzNEQTJEMEQwMDZDMUQwMEVGNkYyNiAvKiBSZWd1bGFyRXhwcmVzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNEEwMTNEMkExNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVl
VHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwMTA5OUU2NDkyMDA1NkU1ODEg
LyogUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZDMEQ4
RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKQEAgLTI2OTMzLDYgKzI2OTQwLDcgQEAKIAkJCQlCQ0FCNDE4MTEzRTM1NkU4
MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjRCMEE0NEVG
QzcwMEY5OTJFMCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMkMzREEyQzBEMDA2QzFEMDBFRjZGMjYgLyogUmVndWxhckV4cHJlc3Npb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNEEwMTNEMjkxNTEyRkQ3NzAwRTFFNjEzIC8qIFJlaWZpZWRUcmVl
VHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTAwMDk5RTY0OTIwMDU2RTU4
MSAvKiBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDA2
QzBEOTAwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzMDlFMDQwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5k
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZp
ZWRUcmVlVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZl
cnNhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M1NDM1NDg4ZjU3MWZlNzVlM2Y5NDJlNjE0N2ZhNTQ4OGQy
MTJhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRy
YXZlcnNhbC5jcHAKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVpZmllZFRyZWVUcmF2ZXJzYWwuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQu
aCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGlubGluZSBib29sIGlzU2hhZG93SG9zdChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJl
dHVybiBub2RlICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhh
c1NoYWRvd1Jvb3QoKTsKK30KKworc3RhdGljIGlubGluZSBTaGFkb3dUcmVlKiBzaGFkb3dUcmVl
Rm9yKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dUcmVlKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgU2hhZG93VHJlZSogc2hhZG93VHJlZU9m
UGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+cGFyZW50
Tm9kZSgpKQorICAgICAgICByZXR1cm4gc2hhZG93VHJlZUZvcihub2RlLT5wYXJlbnROb2RlKCkp
OworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6Zmlyc3RD
aGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBj
aGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25G
b3J3YXJkKTsKKyAgICBBU1NFUlQoIWNoaWxkIHx8ICFjaGlsZC0+aXNTaGFkb3dSb290KCkpOwor
ICAgIHJldHVybiBjaGlsZDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RD
aGlsZChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBOb2RlKiBj
aGlsZCA9IHRyYXZlcnNlQ2hpbGQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25C
YWNrd2FyZCk7CisgICAgQVNTRVJUKCFjaGlsZCB8fCAhY2hpbGQtPmlzU2hhZG93Um9vdCgpKTsK
KyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpsYXN0
Q2hpbGRXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgQVNTRVJUKG5vZGUpOworICAgIE5vZGUqIGNoaWxkID0gdHJhdmVyc2VMaWdodENoaWxkcmVu
KG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOworICAgIEFTU0VS
VCghY2hpbGQgfHwgIWNoaWxkLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIGNoaWxkOwor
fQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VDaGlsZChjb25zdCBOb2Rl
KiBub2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAg
QVNTRVJUKG5vZGUpOworICAgIC8vIEZJWE1FOiBBZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0
aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAxMAorICAgIC8vIEFTU0VSVCghaXNJbnNlcnRp
b25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7Cisg
ICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgU2hhZG93VHJlZSogc2hhZG93
VHJlZSA9IHNoYWRvd1RyZWVGb3Iobm9kZSk7CisgICAgaWYgKHNoYWRvd1RyZWUgJiYgc2hhZG93
VHJlZS0+aGFzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VMaWdodENoaWxk
cmVuKHNoYWRvd1RyZWUtPnlvdW5nZXN0U2hhZG93Um9vdCgpLCBkaXJlY3Rpb24pOworICAgIHJl
dHVybiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgZGlyZWN0aW9uKTsKK30KKworTm9kZSog
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTGlnaHRDaGlsZHJlbihjb25zdCBOb2RlKiBu
b2RlLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNT
RVJUKG5vZGUpOworICAgIGlmIChOb2RlKiBjaGlsZCA9IChkaXJlY3Rpb24gPT0gUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gbm9kZS0+Zmlyc3RDaGlsZCgpIDogbm9kZS0+
bGFzdENoaWxkKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKGNoaWxkLCBkaXJlY3Rp
b24pOworICAgIHJldHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJh
dmVyc2VOb2RlKGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9u
IGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKGlzSW5zZXJ0aW9uUG9p
bnQobm9kZSkpIHsKKyAgICAgICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxl
Y3Rpb25MaXN0ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+c2VsZWN0aW9ucygpOworICAgICAg
ICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IChkaXJlY3Rpb24gPT0gUmVp
ZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gc2VsZWN0aW9uTGlzdC0+Zmlyc3Qo
KSA6IHNlbGVjdGlvbkxpc3QtPmxhc3QoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VO
b2RlKHNlbGVjdGlvbi0+bm9kZSgpLCBkaXJlY3Rpb24pOworICAgICAgICByZXR1cm4gdHJhdmVy
c2VMaWdodENoaWxkcmVuKG5vZGUsIGRpcmVjdGlvbik7CisgICAgfQorICAgIHJldHVybiBjb25z
dF9jYXN0PE5vZGUqPihub2RlKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6Om5l
eHRTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFT
U0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIE5vZGUqIG5leHQgPSB0cmF2ZXJzZVNp
YmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uRm9yd2FyZCk7CisgICAgQVNTRVJUKCFuZXh0IHx8ICFuZXh0LT5pc1NoYWRvd1Jvb3Qo
KSk7CisgICAgcmV0dXJuIG5leHQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjpw
cmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7Cisg
ICAgQVNTRVJUKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisgICAgTm9kZSogbmV4dCA9IHRyYXZl
cnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJz
YWxEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgQVNTRVJUKCFuZXh0IHx8ICFuZXh0LT5pc1NoYWRv
d1Jvb3QoKSk7CisgICAgcmV0dXJuIG5leHQ7Cit9CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVy
c2FsOjp0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5v
ZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NF
UlQobm9kZSk7CisgICAgU2hhZG93VHJlZSogc2hhZG93VHJlZSA9IHNoYWRvd1RyZWVPZlBhcmVu
dChub2RlKTsKKyAgICBpZiAoIXNoYWRvd1RyZWUpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZVNp
YmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7CisgICAgSFRNTENvbnRlbnRTZWxl
Y3Rpb24qIHNlbGVjdGlvbiA9IHNoYWRvd1RyZWUtPnNlbGVjdGlvbkZvcihub2RlKTsKKyAgICBp
ZiAoIXNlbGVjdGlvbikKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRy
ZWUobm9kZSwgZGlyZWN0aW9uKTsKKyAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIG5leHRT
ZWxlY3Rpb24gPSAoZGlyZWN0aW9uID09IFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uRm9y
d2FyZCA/IHNlbGVjdGlvbi0+bmV4dCgpIDogc2VsZWN0aW9uLT5wcmV2aW91cygpKSkKKyAgICAg
ICAgcmV0dXJuIHRyYXZlcnNlTm9kZShuZXh0U2VsZWN0aW9uLT5ub2RlKCksIGRpcmVjdGlvbik7
CisgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoc2VsZWN0
aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBkaXJlY3Rpb24pOworfQorCitOb2RlKiBSZWlmaWVkVHJl
ZVRyYXZlcnNhbDo6dHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShjb25zdCBOb2RlKiBub2Rl
LCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgQVNTRVJU
KG5vZGUpOworICAgIGlmIChOb2RlKiBuZXh0ID0gKGRpcmVjdGlvbiA9PSBSZWlmaWVkVHJlZVRy
YXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5uZXh0U2libGluZygpIDogbm9kZS0+cHJl
dmlvdXNTaWJsaW5nKCkpKQorICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlKG5leHQsIGRpcmVj
dGlvbik7CisgICAgaWYgKE5vZGUqIG5leHQgPSB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb1lvdW5n
ZXJTaGFkb3dSb290KG5vZGUsIGRpcmVjdGlvbikpCisgICAgICAgIHJldHVybiBuZXh0OworICAg
IHJldHVybiBlc2NhcGVGYWxsYmFja0NvbnRlbnRFbGVtZW50KG5vZGUsIGRpcmVjdGlvbik7Cit9
CisKK05vZGUqIFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb1lv
dW5nZXJTaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUsIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKG5vZGUtPnBh
cmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKSB7CisgICAg
ICAgIFNoYWRvd1Jvb3QqIHBhcmVudFNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3Qobm9kZS0+cGFy
ZW50Tm9kZSgpKTsKKyAgICAgICAgaWYgKCFwYXJlbnRTaGFkb3dSb290LT5pc1lvdW5nZXN0KCkp
IHsKKyAgICAgICAgICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlvblBvaW50ID0g
cGFyZW50U2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworICAgICAgICAgICAgQVNTRVJUKGFzc2ln
bmVkSW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0lu
Q3VycmVudFRyZWUoYXNzaWduZWRJbnNlcnRpb25Qb2ludCwgZGlyZWN0aW9uKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6
OmVzY2FwZUZhbGxiYWNrQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSwgUmVpZmllZFRy
ZWVUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIEFTU0VSVChub2RlKTsKKyAg
ICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpICYmIGlzSW5zZXJ0aW9uUG9pbnQobm9kZS0+cGFyZW50
Tm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9u
UG9pbnQobm9kZS0+cGFyZW50Tm9kZSgpLCBkaXJlY3Rpb24pOworICAgIHJldHVybiAwOworfQor
CitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VOb2RlRXNjYXBpbmdGYWxsYmFj
a0NvbnRlbnRzKGNvbnN0IE5vZGUqIG5vZGUsIENyb3NzZWRVcHBlckJvdW5kYXJ5JiBjcm9zc2Vk
KQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSkK
KyAgICAgICAgcmV0dXJuIHBhcmVudE5vZGVPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIGNy
b3NzZWQpOworICAgIGNyb3NzZWQgPSBOb3RDcm9zc2VkOworICAgIHJldHVybiBjb25zdF9jYXN0
PE5vZGUqPihub2RlKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnBhcmVudE5v
ZGUoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7Cisg
ICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+aXNTaGFkb3dSb290KCkpOworICAg
IGNyb3NzZWQgPSBOb3RDcm9zc2VkOworICAgIC8vIEZJWE1FOiBBZGQgYW4gYXNzZXJ0aW9uIG9u
Y2UgSW5zZXJ0aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAxMAorICAgIC8vIEFTU0VSVCgh
aXNJbnNlcnRpb25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3Rp
dmUoKSk7CisgICAgcmV0dXJuIHBhcmVudE5vZGVPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUs
IGNyb3NzZWQpOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZShj
b25zdCBOb2RlKiBub2RlKQoreworICAgIENyb3NzZWRVcHBlckJvdW5kYXJ5IGNyb3NzZWQ7Cisg
ICAgTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZShub2RlLCBjcm9zc2VkKTsKKyAgICBVTlVTRURf
UEFSQU0oY3Jvc3NlZCk7CisgICAgcmV0dXJuIHBhcmVudDsKK30KKworTm9kZSogUmVpZmllZFRy
ZWVUcmF2ZXJzYWw6OnBhcmVudE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVCghbm9kZS0+aXNT
aGFkb3dSb290KCkpOworICAgIC8vIEZJWE1FOiBBZGQgYW4gYXNzZXJ0aW9uIG9uY2UgSW5zZXJ0
aW9uUG9pbnQgaGF2ZSBpc0FjdGl2ZSgpIGZ1bmN0aW9uLgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAxMAorICAgIC8vIEFTU0VSVCghaXNJbnNlcnRp
b25Qb2ludChub2RlKSB8fCAhdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSk7Cisg
ICAgQ3Jvc3NlZFVwcGVyQm91bmRhcnkgY3Jvc3NlZDsKKyAgICBOb2RlKiBwYXJlbnQgPSBwYXJl
bnROb2RlT3JCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBjcm9zc2VkKTsKKyAgICBpZiAoY3Jv
c3NlZCA9PSBDcm9zc2VkKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFyZW50Owor
fQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZU9yQmFja1RvSW5zZXJ0
aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQp
Cit7CisgICAgQVNTRVJUKGNyb3NzZWQgPT0gTm90Q3Jvc3NlZCk7CisgICAgaWYgKFNoYWRvd1Ry
ZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQobm9kZSkpIHsKKyAgICAgICAgaWYg
KEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBzaGFkb3dUcmVlLT5zZWxlY3Rpb25G
b3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50Tm9kZU9yQmFja1RvSW5zZXJ0aW9u
UG9pbnQoc2VsZWN0aW9uLT5pbnNlcnRpb25Qb2ludCgpLCBjcm9zc2VkKTsKKyAgICB9CisgICAg
cmV0dXJuIHBhcmVudE5vZGVJbkN1cnJlbnRUcmVlKG5vZGUsIGNyb3NzZWQpOworfQorCitOb2Rl
KiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUluQ3VycmVudFRyZWUoY29uc3QgTm9k
ZSogbm9kZSwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmIGNyb3NzZWQpCit7CisgICAgQVNTRVJUKGNy
b3NzZWQgPT0gTm90Q3Jvc3NlZCk7CisgICAgaWYgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVu
dE5vZGUoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAg
ICAgIHJldHVybiBwYXJlbnROb2RlQmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QodG9TaGFk
b3dSb290KHBhcmVudCksIGNyb3NzZWQpOworICAgICAgICByZXR1cm4gdHJhdmVyc2VOb2RlRXNj
YXBpbmdGYWxsYmFja0NvbnRlbnRzKHBhcmVudCwgY3Jvc3NlZCk7CisgICAgfQorICAgIHJldHVy
biAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6cGFyZW50Tm9kZUJhY2tUb1lv
dW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIENyb3Nz
ZWRVcHBlckJvdW5kYXJ5JiBjcm9zc2VkKQoreworICAgIEFTU0VSVChzaGFkb3dSb290KTsKKyAg
ICBBU1NFUlQoY3Jvc3NlZCA9PSBOb3RDcm9zc2VkKTsKKyAgICBpZiAoc2hhZG93Um9vdC0+aXNZ
b3VuZ2VzdCgpKSB7CisgICAgICAgIGNyb3NzZWQgPSBDcm9zc2VkOworICAgICAgICByZXR1cm4g
c2hhZG93Um9vdC0+aG9zdCgpOworICAgIH0KKyAgICBJbnNlcnRpb25Qb2ludCogYXNzaWduZWRJ
bnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsKKyAgICBBU1NFUlQoYXNz
aWduZWRJbnNlcnRpb25Qb2ludCk7CisgICAgcmV0dXJuIHBhcmVudE5vZGVPckJhY2tUb0luc2Vy
dGlvblBvaW50KGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQsIGNyb3NzZWQpOworfQorCitOb2RlKiBS
ZWlmaWVkVHJlZVRyYXZlcnNhbDo6YWRqdXN0ZWRQYXJlbnROb2RlKGNvbnN0IE5vZGUqIG5vZGUp
Cit7CisgICAgaWYgKFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUgPSBzaGFkb3dUcmVlT2ZQYXJlbnQo
bm9kZSkpIHsKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBz
aGFkb3dUcmVlLT5zZWxlY3Rpb25Gb3Iobm9kZSkpCisgICAgICAgICAgICByZXR1cm4gc2VsZWN0
aW9uLT5pbnNlcnRpb25Qb2ludCgpOworICAgIH0KKyAgICBpZiAobm9kZS0+aXNTaGFkb3dSb290
KCkpIHsKKyAgICAgICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9v
dChub2RlKTsKKyAgICAgICAgaWYgKCFzaGFkb3dSb290LT5pc1lvdW5nZXN0KCkpIHsKKyAgICAg
ICAgICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlvblBvaW50ID0gc2hhZG93Um9v
dC0+YXNzaWduZWRUbygpOworICAgICAgICAgICAgQVNTRVJUKGFzc2lnbmVkSW5zZXJ0aW9uUG9p
bnQpOworICAgICAgICAgICAgcmV0dXJuIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQ7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmhvc3QoKTsKKyAgICB9CisgICAgcmV0dXJu
IG5vZGUtPnBhcmVudE5vZGUoKTsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRy
YXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogbmV4dCA9
IGZpcnN0Q2hpbGQobm9kZSkpCisgICAgICAgIHJldHVybiBuZXh0OworICAgIGlmIChOb2RlKiBu
ZXh0ID0gbmV4dFNpYmxpbmcobm9kZSkpCisgICAgICAgIHJldHVybiBuZXh0OworICAgIGNvbnN0
IE5vZGUqIG4gPSBub2RlOworICAgIHdoaWxlIChuICYmICFuZXh0U2libGluZyhuKSkKKyAgICAg
ICAgbiA9IHBhcmVudE5vZGUobik7CisgICAgaWYgKG4pCisgICAgICAgIHJldHVybiBuZXh0U2li
bGluZyhuKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogUmVpZmllZFRyZWVUcmF2ZXJzYWw6
OnRyYXZlcnNlTmV4dE5vZGVXaXRob3V0Q3Jvc3NpbmdVcHBlckJvdW5kYXJ5KGNvbnN0IE5vZGUq
IG5vZGUpCit7CisgICAgaWYgKCFpc1NoYWRvd0hvc3Qobm9kZSkpIHsKKyAgICAgICAgaWYgKE5v
ZGUqIG5leHQgPSB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4obm9kZSwgUmVpZmllZFRyZWVUcmF2ZXJz
YWxEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICAgICAgICAgIHJldHVybiBuZXh0OworICAgIH0KKyAg
ICBpZiAoTm9kZSogbmV4dCA9IG5leHRTaWJsaW5nKG5vZGUpKQorICAgICAgICByZXR1cm4gbmV4
dDsKKyAgICBjb25zdCBOb2RlKiBuID0gbm9kZTsKKyAgICB3aGlsZSAobiAmJiAhbmV4dFNpYmxp
bmcobikpCisgICAgICAgIG4gPSBwYXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFy
eShuKTsKKyAgICBpZiAobikKKyAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKG4pOworICAgIHJl
dHVybiAwOworfQorCitOb2RlKiBSZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91
c05vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogbiA9IHByZXZpb3VzU2li
bGluZyhub2RlKSkgeworICAgICAgICB3aGlsZSAoTm9kZSogY2hpbGQgPSBSZWlmaWVkVHJlZVRy
YXZlcnNhbDo6bGFzdENoaWxkKG4pKQorICAgICAgICAgICAgbiA9IGNoaWxkOworICAgICAgICBy
ZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIHBhcmVudE5vZGUobm9kZSk7Cit9CisKK05vZGUq
IFJlaWZpZWRUcmVlVHJhdmVyc2FsOjp0cmF2ZXJzZVByZXZpb3VzTm9kZVdpdGhvdXRDcm9zc2lu
Z1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogbiA9IHBy
ZXZpb3VzU2libGluZyhub2RlKSkgeworICAgICAgICB3aGlsZSAoIWlzU2hhZG93SG9zdChuKSkg
eworICAgICAgICAgICAgaWYgKE5vZGUqIGNoaWxkID0gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRy
YXZlcnNlTGlnaHRDaGlsZHJlbihuLCBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkJhY2t3
YXJkKSkKKyAgICAgICAgICAgICAgICBuID0gY2hpbGQ7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG47CisgICAgfQor
ICAgIHJldHVybiBwYXJlbnROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShub2RlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlm
aWVkVHJlZVRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlaWZpZWRUcmVlVHJhdmVy
c2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjExOTM3MzVlNWQ4NTYyNDA4YjdmOTAwNjgyNjAyY2UwMDI1ZDBl
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWlmaWVkVHJlZVRyYXZl
cnNhbC5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlaWZpZWRUcmVlVHJhdmVyc2FsX2gK
KyNkZWZpbmUgUmVpZmllZFRyZWVUcmF2ZXJzYWxfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dSb290OworCitlbnVtIFJlaWZpZWRUcmVlVHJhdmVy
c2FsRGlyZWN0aW9uIHsKKyAgICBSZWlmaWVkVHJlZVRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQs
CisgICAgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZAorfTsKKworLy8gRklY
TUU6IE1ha2Ugc29tZSBmdW5jdGlvbnMgaW5saW5lIHRvIG9wdGltaXNlIHRoZSBwZXJmb3JtYW5j
ZS4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAxOQorY2xh
c3MgUmVpZmllZFRyZWVUcmF2ZXJzYWwgeworcHVibGljOgorICAgIGVudW0gQ3Jvc3NlZFVwcGVy
Qm91bmRhcnkgeworICAgICAgICBOb3RDcm9zc2VkLAorICAgICAgICBDcm9zc2VkLAorICAgIH07
CisKKyAgICBzdGF0aWMgTm9kZSogZmlyc3RDaGlsZChjb25zdCBOb2RlKik7CisgICAgc3RhdGlj
IE5vZGUqIGxhc3RDaGlsZChjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIGxhc3RDaGls
ZFdpdGhvdXRDcm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCisgICAgc3RhdGlj
IE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogcHJldmlv
dXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlKGNv
bnN0IE5vZGUqLCBDcm9zc2VkVXBwZXJCb3VuZGFyeSYpOworICAgIHN0YXRpYyBOb2RlKiBwYXJl
bnROb2RlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZVdpdGhvdXRD
cm9zc2luZ1VwcGVyQm91bmRhcnkoY29uc3QgTm9kZSopOworCisgICAgc3RhdGljIE5vZGUqIHRy
YXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVBy
ZXZpb3VzTm9kZShjb25zdCBOb2RlKik7CisKKyAgICAvLyBGSVhNRTogQW4gJ2FkanVzdGVkJyBp
cyBub3QgZ29vZCBuYW1lIGZvciBnZW5lcmFsIHVzZSBjYXNlLiBSZW5hbWUgdGhpcy4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwMjIKKyAgICAvLyBU
aGlzIG1heSByZXR1cm4gU2hhZG93Um9vdCBvciBJbnNlcnRpb25Qb2ludC4KKyAgICBzdGF0aWMg
Tm9kZSogYWRqdXN0ZWRQYXJlbnROb2RlKGNvbnN0IE5vZGUqKTsKKworICAgIHN0YXRpYyBOb2Rl
KiB0cmF2ZXJzZU5leHROb2RlV2l0aG91dENyb3NzaW5nVXBwZXJCb3VuZGFyeShjb25zdCBOb2Rl
Kik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2RlV2l0aG91dENyb3NzaW5n
VXBwZXJCb3VuZGFyeShjb25zdCBOb2RlKik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIE5vZGUq
IHRyYXZlcnNlQ2hpbGQoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9u
KTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOb2RlKGNvbnN0IE5vZGUqLCBSZWlmaWVkVHJl
ZVRyYXZlcnNhbERpcmVjdGlvbik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTGlnaHRDaGls
ZHJlbihjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworCisgICAg
c3RhdGljIE5vZGUqIHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3Qg
Tm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSog
dHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShjb25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2
ZXJzYWxEaXJlY3Rpb24pOworCisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlU2libGluZ09yQmFj
a1RvWW91bmdlclNoYWRvd1Jvb3QoY29uc3QgTm9kZSosIFJlaWZpZWRUcmVlVHJhdmVyc2FsRGly
ZWN0aW9uKTsKKyAgICBzdGF0aWMgTm9kZSogZXNjYXBlRmFsbGJhY2tDb250ZW50RWxlbWVudChj
b25zdCBOb2RlKiwgUmVpZmllZFRyZWVUcmF2ZXJzYWxEaXJlY3Rpb24pOworCisgICAgc3RhdGlj
IE5vZGUqIHRyYXZlcnNlTm9kZUVzY2FwaW5nRmFsbGJhY2tDb250ZW50cyhjb25zdCBOb2RlKiwg
Q3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsKKworICAgIHN0YXRpYyBOb2RlKiBwYXJlbnROb2RlT3JC
YWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiwgQ3Jvc3NlZFVwcGVyQm91bmRhcnkmKTsK
KyAgICBzdGF0aWMgTm9kZSogcGFyZW50Tm9kZUluQ3VycmVudFRyZWUoY29uc3QgTm9kZSosIENy
b3NzZWRVcHBlckJvdW5kYXJ5Jik7CisgICAgc3RhdGljIE5vZGUqIHBhcmVudE5vZGVCYWNrVG9Z
b3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dSb290KiwgQ3Jvc3NlZFVwcGVyQm91
bmRhcnkmKTsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1RyZWUuY3BwCmluZGV4IDFiYWUzYmVhN2U5ZWEwYWI5ZWI2MjQ2YWVmMmRlMDgwYzZhY2MzZGYu
LjZmYmU3Mjk1ZDYzYTM5ODFhYTVlODBkMjRjYzAwM2U3N2FjODZhNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93VHJlZS5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFNoYWRvd1RyZWU6OmRldGFj
aEhvc3QoRWxlbWVudCogaG9zdCkKICAgICBob3N0LT5kZXRhY2hBc05vZGUoKTsKIH0KIAotSW5z
ZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNv
bnN0CitJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoY29uc3Qg
Tm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5wYXJlbnROb2Rl
KCkpOwogCkBAIC0yMjEsNiArMjIxLDExIEBAIEluc2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjpp
bnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAogICAgIHJldHVybiBmb3VuZC0+aW5z
ZXJ0aW9uUG9pbnQoKTsKIH0KIAorSFRNTENvbnRlbnRTZWxlY3Rpb24qIFNoYWRvd1RyZWU6OnNl
bGVjdGlvbkZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAoreworICAgIHJldHVybiBtX3NlbGVj
dG9yLmZpbmRGb3Iobm9kZSk7Cit9CisKIHZvaWQgU2hhZG93VHJlZTo6cmVhdHRhY2goKQogewog
ICAgIGRldGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKaW5kZXggNTcyMjIxODNhMjYzMTc0
NDJmODkwN2ZlZWU5MmNjYTM2NzhkMjcyNi4uZTljMmNjYWRiMGNjZjdjZDE1NTBmNDBkMzIwODlh
ZjBmNzM2MjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCkBAIC00MSw2ICs0MSw3IEBAIGNs
YXNzIE5vZGU7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CiBjbGFzcyBU
cmVlU2NvcGU7CitjbGFzcyBIVE1MQ29udGVudFNlbGVjdGlvbjsKIAogY2xhc3MgU2hhZG93VHJl
ZSB7CiBwdWJsaWM6CkBAIC03OSw3ICs4MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYXR0YWNo
SG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7
CiAKLSAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNvbnN0Owor
ICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKikgY29uc3Q7
CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbkZvcihjb25zdCBOb2RlKikgY29u
c3Q7CiAKICAgICBIVE1MQ29udGVudFNlbGVjdG9yJiBzZWxlY3RvcigpOwogICAgIGNvbnN0IEhU
TUxDb250ZW50U2VsZWN0b3ImIHNlbGVjdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCmluZGV4IDhiNjJkNTZhNzcz
ZGIzMGRiNmQzMThhZjczYmRkMWMwZjhkYmI0NjcuLjMxZTQxOTRlYzVhMzdkZTAzOTRjMDNmOGU4
MzhlNjViYjQ1ODc0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50U2VsZWN0b3IuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBIVE1MQ29udGVu
dFNlbGVjdG9yOjp1bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqIGxpc3QpCiAgICAg
bGlzdC0+Y2xlYXIoKTsKIH0KIAotSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2Vs
ZWN0b3I6OmZpbmRGb3IoTm9kZSoga2V5KSBjb25zdAorSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhU
TUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAogewogICAg
IHJldHVybiBtX3NlbGVjdGlvblNldC5maW5kKGtleSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKaW5kZXggZTAxMTgwNTAwYmFkMTIz
NDIzYTE3NTg4YTgxOTMyZjE4MGYxNGM1My4uYmNmYmRkYmJkODgyNzM4NWE3YzlhZmMxMWMyNGY2
ZmVjYTZlMzYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGQoSFRN
TENvbnRlbnRTZWxlY3Rpb24qIHZhbHVlKSB7IG1fc2V0LmFkZCh2YWx1ZSk7IH0KICAgICB2b2lk
IHJlbW92ZShIVE1MQ29udGVudFNlbGVjdGlvbiogdmFsdWUpIHsgbV9zZXQucmVtb3ZlKHZhbHVl
KTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0LmlzRW1wdHkoKTsg
fQotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kKE5vZGUqIGtleSkgY29uc3Q7CisgICAg
SFRNTENvbnRlbnRTZWxlY3Rpb24qIGZpbmQoY29uc3QgTm9kZSoga2V5KSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBzdHJ1Y3QgVHJhbnNsYXRvciB7CkBAIC0xMTgsOSArMTE4LDkgQEAgcHJpdmF0
ZToKICAgICBQb2ludGVyU2V0IG1fc2V0OwogfTsKIAotaW5saW5lIEhUTUxDb250ZW50U2VsZWN0
aW9uKiBIVE1MQ29udGVudFNlbGVjdGlvblNldDo6ZmluZChOb2RlKiBrZXkpIGNvbnN0Citpbmxp
bmUgSFRNTENvbnRlbnRTZWxlY3Rpb24qIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpmaW5kKGNv
bnN0IE5vZGUqIGtleSkgY29uc3QKIHsKLSAgICBQb2ludGVyU2V0OjppdGVyYXRvciBmb3VuZCA9
IG1fc2V0LmZpbmQ8Tm9kZSosIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpUcmFuc2xhdG9yPihr
ZXkpOworICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxjb25zdCBO
b2RlKiwgSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OlRyYW5zbGF0b3I+KGtleSk7CiAgICAgcmV0
dXJuIGZvdW5kICE9IG1fc2V0LmVuZCgpID8gKmZvdW5kIDogMDsKIH0KIApAQCAtMTMyLDcgKzEz
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VsZWN0KEluc2VydGlvblBvaW50KiwgSFRNTENv
bnRlbnRTZWxlY3Rpb25MaXN0Kik7CiAgICAgdm9pZCB1bnNlbGVjdChIVE1MQ29udGVudFNlbGVj
dGlvbkxpc3QqKTsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZEZvcihOb2RlKiBrZXkp
IGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kRm9yKGNvbnN0IE5vZGUqIGtl
eSkgY29uc3Q7CiAKICAgICB2b2lkIHdpbGxTZWxlY3QoKTsKICAgICBib29sIGlzU2VsZWN0aW5n
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRp
b25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApp
bmRleCBiNTI4MmNkZGMyNzQ4MmNlYzMzNTM1ZGRiZWI2OGM3MGY1NTg4NGJjLi43NGIxYTIwMGM0
ZDllMmIxMjc4MDU0YzQ0N2FmNDAxMWQ0NmQ0OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBI
VE1MQ29udGVudFNlbGVjdGlvbkxpc3QgbV9zZWxlY3Rpb25zOwogfTsKIAotaW5saW5lIGJvb2wg
aXNJbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQoraW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2lu
dChjb25zdCBOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC04OCw2ICs4OCwxMiBAQCBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9u
UG9pbnQoTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zZXJ0aW9uUG9pbnQq
Pihub2RlKTsKIH0KIAoraW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBv
aW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKGlzSW5zZXJ0aW9uUG9pbnQobm9k
ZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbnNlcnRpb25Qb2ludCo+KG5vZGUp
OworfQorCiBpbmxpbmUgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KE5vZGUqIG5vZGUpCiB7CiAgICAg
aWYgKCFpc0luc2VydGlvblBvaW50KG5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IDZmMmVlMzNhN2FiNjhmMjZmZDEwNzE5N2U4MTg3NjZhZjE5ZjUwNjcuLmYyZjEw
OTgwNDI0MDc2N2QyNTJhNTk2ODU0N2U2MTIzNTY2OTk2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1
ZGUgIlJlaWZpZWRUcmVlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0x
ODEsNiArMTgyLDUxIEBAIGJvb2wgSW50ZXJuYWxzOjphdHRhY2hlZChOb2RlKiBub2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gbm9kZS0+YXR0YWNoZWQoKTsKIH0KIAorTm9kZSog
SW50ZXJuYWxzOjpuZXh0U2libGluZ0luUmVpZmllZFRyZWUoTm9kZSogbm9kZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFJlaWZpZWRUcmVl
VHJhdmVyc2FsOjpuZXh0U2libGluZyhub2RlKTsKK30KKworTm9kZSogSW50ZXJuYWxzOjpmaXJz
dENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6OmZpcnN0
Q2hpbGQobm9kZSk7Cit9CisKK05vZGUqIEludGVybmFsczo6bGFzdENoaWxkSW5SZWlmaWVkVHJl
ZShOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICByZXR1cm4gUmVpZmllZFRyZWVUcmF2ZXJzYWw6Omxhc3RDaGlsZChub2RlKTsKK30KKwor
Tm9kZSogSW50ZXJuYWxzOjp0cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShOb2RlKiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4g
UmVpZmllZFRyZWVUcmF2ZXJzYWw6OnRyYXZlcnNlTmV4dE5vZGUobm9kZSk7Cit9CisKK05vZGUq
IEludGVybmFsczo6dHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKE5vZGUqIG5vZGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBS
ZWlmaWVkVHJlZVRyYXZlcnNhbDo6dHJhdmVyc2VQcmV2aW91c05vZGUobm9kZSk7Cit9CisKIFN0
cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqIGVsZW1lbnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZWxlbWVudCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggNzVlZDdlMjZlOTlkOWY4YTMwMTIyOWM4MGZmYjdlZTA1ZGU5
NGRlMS4uYTA2MTNhYzIxN2I4M2ViOWY4MTNlZmE5MDg3NzEzZDAwY2Y4YTNiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04NCw2ICs4NCwxMiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGF0dGFjaGVkKE5vZGUqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBOb2RlKiBuZXh0U2li
bGluZ0luUmVpZmllZFRyZWUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBOb2RlKiBmaXJz
dENoaWxkSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIE5vZGUqIGxh
c3RDaGlsZEluUmVpZmllZFRyZWUoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBOb2RlKiB0
cmF2ZXJzZU5leHROb2RlSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAg
IE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2RlSW5SZWlmaWVkVHJlZShOb2RlKiwgRXhjZXB0aW9u
Q29kZSYpOworCiAjaWYgRU5BQkxFKElOUFVUX0NPTE9SKQogICAgIHZvaWQgc2VsZWN0Q29sb3JJ
bkNvbG9yQ2hvb3NlcihFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBjb2xvclZhbHVlKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGYyMjAwZmZjNGIxNTlhMDc2
OGZmZGZhZjYwMmZjNzBmNDk4NzUwMzQuLjk1ZmU5ZGM1NThkNDAwZTIyNWUyNDczNWMyOWQ3NjBm
MDhiYTQ4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTU1LDYgKzU1
LDEyIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlkSW5T
aGFkb3dSb290KGluIE5vZGUgc2hhZG93Um9vdCwgaW4gRE9NU3RyaW5nIGlkKSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiBpc1ZhbGlkQ29udGVudFNlbGVjdChpbiBFbGVt
ZW50IGNvbnRlbnRFbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAorICAgICAgICBOb2Rl
IG5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRp
b24pOworICAgICAgICBOb2RlIGZpcnN0Q2hpbGRJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9kZSkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIE5vZGUgbGFzdENoaWxkSW5SZWlmaWVkVHJl
ZShpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHRyYXZl
cnNlTmV4dE5vZGVJblJlaWZpZWRUcmVlKGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIE5vZGUgdHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKGluIE5v
ZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgYm9vbGVhbiBhdHRhY2hl
ZChpbiBOb2RlIG5vZGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAjaWYgZGVmaW5lZChFTkFC
TEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xPUgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
CmluZGV4IGUyYzhmNmRmYWRkNzQyMjRiZmY1MmI4YzkyZThmNTQ0NjAxZmViNTQuLmFkYTg4Mzc5
YmQ5NTBhYTU5OWQwYTRkMTA5NGYyZmQwMzQ5MGMzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYK
QEAgLTE2OCw2ICsxNjgsNyBAQCBFWFBPUlRTCiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2FzZUBX
VEZAQFlBX05QQVZTdHJpbmdJbXBsQDFAUEJFQFoKICAgICAgICAgP2V4dGVybmFsUmVwcmVzZW50
YXRpb25AV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBQQVZFbGVtZW50QDFASUBaCiAgICAgICAg
ID9maW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJUEFWMTJASUBaCisgICAgICAgID9maXJzdENoaWxk
QFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9kZUAyQFBCVjMyQEBaCiAgICAg
ICAgID9mcmFtZURlc3Ryb3llZEBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFF
WFhaCiAgICAgICAgID9mcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFja0BTdHJpbmdAV1RGQEBTQT9B
VjEyQFBCRUlAWgogICAgICAgICA/Z2V0Q2FjaGVkRE9NU3RydWN0dXJlQFdlYkNvcmVAQFlBUEFW
U3RydWN0dXJlQEpTQ0BAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQlVDbGFzc0luZm9AM0BAWgpA
QCAtMTgwLDcgKzE4MSw5IEBAIEVYUE9SVFMKICAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJl
c291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pz
U3RyaW5nU2xvd0Nhc2VAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNA
QUFWPyRIYXNoTWFwQFBBVlN0cmluZ0ltcGxAV1RGQEBWPyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBK
U0NAQFVTdHJpbmdIYXNoQDJAVT8kSGFzaFRyYWl0c0BQQVZTdHJpbmdJbXBsQFdURkBAQDJAVT8k
SGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQEAyQEBXVEZAQFBBVlN0cmlu
Z0ltcGxANkBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP2xhc3RDaGlsZEBSZWlmaWVk
VHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVAMkBQQlYzMkBAWgogICAgICAgICA/bWFy
a2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JA
UEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlw
ZXNARG9jdW1lbnRNYXJrZXJAMkBAWgorICAgICAgICA/bmV4dFNpYmxpbmdAUmVpZmllZFRyZWVU
cmF2ZXJzYWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJAUEJWMzJAQFoKICAgICAgICAgP251bWJlckBT
dHJpbmdAV1RGQEBTQT9BVjEyQElAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FW
MTJASEBaCiAgICAgICAgID9vYnNlcnZlRnJhbWVARnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQFdl
YkNvcmVAQElBRVhQQVZGcmFtZUAyQEBaCkBAIC0yMjcsNiArMjMwLDggQEAgRVhQT1JUUwogICAg
ICAgICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZK
U0RPTUdsb2JhbE9iamVjdEAxQFBBVlJhbmdlQDFAQFoKICAgICAgICAgP3RvSlNAV2ViQ29yZUBA
WUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQ
QVZOb2RlTGlzdEAxQEBaCiAgICAgICAgID90b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBW
SlNWYWx1ZUBKU0NAQEBaCisgICAgICAgID90cmF2ZXJzZU5leHROb2RlQFJlaWZpZWRUcmVlVHJh
dmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9kZUAyQFBCVjMyQEBaCisgICAgICAgID90cmF2ZXJzZVBy
ZXZpb3VzTm9kZUBSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVAMkBQQlYz
MkBAWgogICAgICAgICA/dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3Vt
ZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJD
b3JlQEBZQT9BVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKICAgICAgICAgP3V0
ZjhAU3RyaW5nQFdURkBAUUJFP0FWQ1N0cmluZ0AyQF9OQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZgppbmRleCA4MWE0M2EyMGVjMDMyNmZkNjBkMTQ3NzQ5NjMzODJjMDcxOTQ3NjE3
Li45ZWUyZWUxNzE4ZmYwYTU2Y2Y5ZjFiNTY5MGMzZDI3ZmQ1ZGUzNGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDJDRkxpdGUuZGVmCkBAIC0xNjEsNiArMTYxLDcgQEAgRVhQT1JUUwogICAgICAg
ICA/ZXF1YWxJZ25vcmluZ0Nhc2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBaCiAgICAg
ICAgID9leHRlcm5hbFJlcHJlc2VudGF0aW9uQFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAUEFW
RWxlbWVudEAxQElAWgogICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQElA
WgorICAgICAgICA/Zmlyc3RDaGlsZEBSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBB
Vk5vZGVAMkBQQlYzMkBAWgogICAgICAgICA/ZnJhbWVEZXN0cm95ZWRARnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/ZnJvbVVURjhXaXRoTGF0aW4xRmFs
bGJhY2tAU3RyaW5nQFdURkBAU0E/QVYxMkBQQkVJQFoKICAgICAgICAgP2dldENhY2hlZERPTVN0
cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0
QDFAUEJVQ2xhc3NJbmZvQDNAQFoKQEAgLTE3MywxMSArMTc0LDEzIEBAIEVYUE9SVFMKICAgICAg
ICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3Ry
aW5nQFdURkBAQFoKICAgICAgICAgP2pzU3RyaW5nU2xvd0Nhc2VAV2ViQ29yZUBAWUE/QVZKU1Zh
bHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAQUFWPyRIYXNoTWFwQFBBVlN0cmluZ0ltcGxAV1RGQEBW
PyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQFVTdHJpbmdIYXNoQDJAVT8kSGFzaFRyYWl0c0BQ
QVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0cmluZ0BKU0NA
QEBKU0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWgogICAgICAgICA/bGFzdENoYW5nZVdh
c1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKKyAg
ICAgICAgP2xhc3RDaGlsZEBSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJDb3JlQEBTQVBBVk5vZGVA
MkBQQlYzMkBAWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJA
V2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBX
VEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgogICAgICAgICA/
bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASUBaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdU
RkBAU0E/QVYxMkBIQFoKICAgICAgICAgP29ic2VydmVGcmFtZUBGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXJAV2ViQ29yZUBASUFFWFBBVkZyYW1lQDJAQFoKICAgICAgICAgP292ZXJyaWRlVXNlclBy
ZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQVhBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBB
QEBXVEZAQEBaCisgICAgICAgID9uZXh0U2libGluZ0BSZWlmaWVkVHJlZVRyYXZlcnNhbEBXZWJD
b3JlQEBTQVBBVk5vZGVAMkBQQlYzMkBAWgogICAgICAgICA/bnVtYmVyT2ZTY29wZWRIVE1MU3R5
bGVDaGlsZHJlbkBOb2RlQFdlYkNvcmVAQFFCRUlYWgogICAgICAgICA/cGFnZUBEb2N1bWVudEBX
ZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29udHJvbFRpbnRzQEZyYW1l
Vmlld0BXZWJDb3JlQEBBQUVYWFoKQEAgLTIyMCw2ICsyMjMsOCBAQCBFWFBPUlRTCiAgICAgICAg
ID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9N
R2xvYmFsT2JqZWN0QDFAUEFWUmFuZ2VAMUBAWgogICAgICAgICA/dG9KU0BXZWJDb3JlQEBZQT9B
VkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVk5v
ZGVMaXN0QDFAQFoKICAgICAgICAgP3RvUmFuZ2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1Zh
bHVlQEpTQ0BAQFoKKyAgICAgICAgP3RyYXZlcnNlTmV4dE5vZGVAUmVpZmllZFRyZWVUcmF2ZXJz
YWxAV2ViQ29yZUBAU0FQQVZOb2RlQDJAUEJWMzJAQFoKKyAgICAgICAgP3RyYXZlcnNlUHJldmlv
dXNOb2RlQFJlaWZpZWRUcmVlVHJhdmVyc2FsQFdlYkNvcmVAQFNBUEFWTm9kZUAyQFBCVjMyQEBa
CiAgICAgICAgID91cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRA
V2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVA
QFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgogICAgICAgICA/dXRmOEBT
dHJpbmdAV1RGQEBRQkU/QVZDU3RyaW5nQDJAX05AWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5k
ZXggYWM3YjAwY2RlZDE3ZmU5YjE5ZjU4MmU3MTM3NGYwMmM3NGIxNjI0YS4uNTMyMGU4YjM0ZDAw
M2E2MTBjM2I5ZjA3ZjhlNDE1N2U2YzA4OGU3NSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBA
IC02NCw2ICs2NCwxMSBAQCBfWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0ZUVQ
TlNfOERvY3VtZW50RTsKIF9aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMzlzZXRSZXNv
dXJjZXNEYXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHNFaWk7CiBfWk43V2ViQ29yZTIwTm9kZVJl
bmRlcmluZ0NvbnRleHRDMUVQTlNfNE5vZGVFOwogX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdD
b250ZXh0RDFFdjsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRyYXZlcnNhbDExbmV4dFNpYmxp
bmdFUEtOU180Tm9kZUU7CitfWk43V2ViQ29yZTIwUmVpZmllZFRyZWVUcmF2ZXJzYWwyMHRyYXZl
cnNlUHJldmlvdXNOb2RlRVBLTlNfNE5vZGVFOworX1pON1dlYkNvcmUyMFJlaWZpZWRUcmVlVHJh
dmVyc2FsOWxhc3RDaGlsZEVQS05TXzROb2RlRTsKK19aTjdXZWJDb3JlMjBSZWlmaWVkVHJlZVRy
YXZlcnNhbDE2dHJhdmVyc2VOZXh0Tm9kZUVQS05TXzROb2RlRTsKK19aTjdXZWJDb3JlMjBSZWlm
aWVkVHJlZVRyYXZlcnNhbDEwZmlyc3RDaGlsZEVQS05TXzROb2RlRTsKIF9aTjdXZWJDb3JlMjFn
ZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUEtOM0pTQzlDbGFz
c0luZm9FOwogX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRpb25FUE5TXzdFbGVtZW50
RWo7CiBfWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2OwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU1ZTQ4
MWYxZmQ2ZTAyOGMxMzk3MmE5YTk2NzlhNjhjMjEwZDAzMjkuLjgyYThhYTk3NjNjNGU1ZWM4NDVk
NGZjOTljYTAyNjJkNTkyNzdjZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wMy0yMiAg
SGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IEFkZCBSZWlmaWVkIERPTSBUcmVlIHRyYXZlcnNhbCBpbnRlcm5hbCBBUElzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxOTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAgQWRkIGludGVybmFsIEFQSXMg
d2hpY2ggY2FuIGJlIHVzZWQgdG8gdHJhdmVyc2UgUmVpZmllZCBET00gdHJlZSwgd2hpY2ggaXMK
KyAgICAgICAgYSByZXN1bHQgb2Ygbm9kZSBkaXN0cmlidXRpb24gYWxnb3JpdGhtIGV4cGxhaW5l
ZCBpbiBTaGFkb3cgRE9NIHNwZWMuCisgICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvd2Vi
Y29tcG9uZW50cy9yYXctZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5kZXguaHRtbAorCisgICAgICAg
IEV2ZXJ5IHB1YmxpYyBmdW5jdGlvbnMgZGVmaW5lZCBpbiBSZWlmaWVkVHJlZVRyYXZlcnNhbCBh
cmUgc3RhdGljCisgICAgICAgIGZ1bmN0aW9ucyBhbmQgYXJlIG5hbWVkIGluIGEgc2ltaWxhciB3
YXkgdG8gb25lcyBkZWZpbmVkIGluIFdlYkNvcmU6Ok5vZGUgY2xhc3MuCisgICAgICAgIFRoZSBv
bmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBSZWlmaWVkVHJlZVRyYXZlcnNhbCBBUElzIGNvbnNpZGVy
IHNoYWRvdworICAgICAgICBob3N0cyBhbmQgYWxzbyB0cmF2ZXJzZSBub2RlcyBpcyBTaGFkb3cg
RE9NIHN1YnRyZWVzLCBjcm9zc2luZyBzaGFkb3cncyB1cHBlciBhbmQgbG93ZXIgYm91bmRhcnkK
KyAgICAgICAgdHJhbnNwYXJlbnRseS4KKworICAgICAgICBUaGVyZSBpcyBubyBhY3R1YWwgY2xp
ZW50IHdoaWNoIHVzZXMgdGhlc2UgQVBJcy4gRm9sbG93LXVwIHBhdGNoZXMgZm9yIEZvY3VzTmF2
aWdhdGlvbgorICAgICAgICBhbmQgRXZlbnREaXNwYXRjaGVyIHdpbGwgdXNlIHRoZSBBUElzIHNv
IHRoYXQgdGhleSBjYW4gdHJhdmVyc2Ugbm9kZSBpbiByZWlmaWVkIHRyZWUgb3JkZXIuCisKKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVy
c2FsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvU2tpcHBlZDoKKwogMjAxMi0wMy0yNSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFr
dWNvQEZyZWVCU0Qub3JnPgogCiAgICAgICAgIFtFRkxdIE1vcmUgZ2FyZGVuaW5nLiBVcGRhdGUg
YmFzZWxpbmVzIGFuZCBleHBlY3RhdGlvbnMgaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMDQyNGU3NDE4N2EyZTU3Yzg1ZWRmMzY2YWRkNjMzZWM3YmE2YzM1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlaWZpZWQtdHJl
ZS10cmF2ZXJzYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTU2IEBACitUZXN0cyBmb3IgUmVp
ZmllZCBET00gVHJlZSBUcmF2ZXJzYWwgQVBJcy4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NoYWRvd1Jvb3Qgc2hvdWxkIGJlIHVzZWQu
CitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKworVHJhdmVyc2UgaW4gZm9y
d2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkg
aWQ9YgorRElWCSBpZD1hCisKK0EgY29udGVudCBlbGVtZW50IHNob3VsZCBzZWxlY3QgbGlnaHQg
Y2hpbGRyZW4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCURJVgkgaWQ9
YworCURJVgkgaWQ9ZAorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlk
PWIKK0RJVgkgaWQ9YworRElWCSBpZD1kCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9
ZAorRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitUZXN0IGZvciBjb250ZW50IGVs
ZW1lbnQgc2VsZWN0b3IuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwor
VHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitE
SVYJIGlkPWEKKworTGlnaHQgY2hpbGRyZW4gc2hvdWxkIGJlIHNlbGVjdGVkIG9ubHkgYXQgb25j
ZS4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCitUcmF2ZXJzZSBpbiBm
b3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElW
CSBpZD1lCitESVYJIGlkPWQKK0RJVgkgaWQ9YworRElWCSBpZD1hCisKK0EgY29udGVudCBlbGVt
ZW50IGNhbiBoYXZlIGZhbGxiYWNrIGVsZW1lbnRzLgorUmVpZmllZCBUcmVlOgorRElWCSBpZD1h
CisJRElWCSBpZD1iCisJRElWCSBpZD1mMQorCURJVgkgaWQ9ZjIKKworVHJhdmVyc2UgaW4gZm9y
d2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWYxCitESVYJIGlkPWYyCitUcmF2
ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZjIKK0RJVgkgaWQ9ZjEKK0RJVgkgaWQ9YgorRElW
CSBpZD1hCisKK0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZCBpZiAgZWxlbWVu
dCBzZWxlY3RzIGFueSBlbGVtZW50cy4KK1JlaWZpZWQgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkg
aWQ9YgorCURJVgkgaWQ9ZjEKKwlESVYJIGlkPWYyCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitE
SVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1mMQorRElWCSBpZD1mMgorVHJhdmVyc2UgaW4g
YmFja3dhcmQuCitESVYJIGlkPWYyCitESVYJIGlkPWYxCitESVYJIGlkPWIKK0RJVgkgaWQ9YQor
CitUZXN0IGZvciBOZXN0ZWQgU2hhZG93Um9vdHMuCitSZWlmaWVkIFRyZWU6CitESVYJIGlkPWEK
KwlESVYJIGlkPWIKKwkJRElWCSBpZD1jCisJCURJVgkgaWQ9ZQorCQlESVYJIGlkPWQKKwlESVYJ
IGlkPWYKKwlESVYJIGlkPWgKKwlESVYJIGlkPWkKKwlESVYJIGlkPWcKKworVHJhdmVyc2UgaW4g
Zm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9ZQorRElW
CSBpZD1kCitESVYJIGlkPWYKK0RJVgkgaWQ9aAorRElWCSBpZD1pCitESVYJIGlkPWcKK1RyYXZl
cnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1nCitESVYJIGlkPWkKK0RJVgkgaWQ9aAorRElWCSBp
ZD1mCitESVYJIGlkPWQKK0RJVgkgaWQ9ZQorRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9
YQorCitUZXN0IGZvciBNdWx0aXBsZSBTaGFkb3dSb290cy4KK1JlaWZpZWQgVHJlZToKK0RJVgkg
aWQ9YQorCURJVgkgaWQ9ZAorCURJVgkgaWQ9YgorCURJVgkgaWQ9ZgorCURJVgkgaWQ9YworCURJ
VgkgaWQ9ZQorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWQKK0RJ
VgkgaWQ9YgorRElWCSBpZD1mCitESVYJIGlkPWMKK0RJVgkgaWQ9ZQorVHJhdmVyc2UgaW4gYmFj
a3dhcmQuCitESVYJIGlkPWUKK0RJVgkgaWQ9YworRElWCSBpZD1mCitESVYJIGlkPWIKK0RJVgkg
aWQ9ZAorRElWCSBpZD1hCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVp
ZmllZC10cmVlLXRyYXZlcnNhbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jl
aWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzhhZWVjNzUyZjE2Y2ZiZmVj
ZWViNzc2YTBmMDI3MTE2MjVlNTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbApAQCAtMCwwICsxLDE2MiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgZm9yIFJlaWZpZWQg
RE9NIFRyZWUgVHJhdmVyc2FsIEFQSXMuIENhbiBvbmx5IHJ1biB3aXRoaW4gRFJUIik7CisKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBkdW1wTm9kZShub2RlKQoreworICAgIHZhciBvdXRw
dXQgPSBub2RlLm5vZGVOYW1lICsgIlx0IjsKKyAgICBpZiAobm9kZS5pZCkKKyAgICAgICAgb3V0
cHV0ICs9ICcgaWQ9JyArIG5vZGUuaWQ7CisgICAgaWYgKG5vZGUuY2xhc3NOYW1lKQorICAgICAg
ICBvdXRwdXQgKz0gJyBjbGFzcz0nICsgbm9kZS5jbGFzc05hbWU7CisgICAgcmV0dXJuIG91dHB1
dDsKK30KKworZnVuY3Rpb24gZHVtcFJlaWZpZWRUcmVlKG5vZGUsIGluZGVudCkKK3sKKyAgICBp
bmRlbnQgPSBpbmRlbnQgfHwgIiI7CisgICAgdmFyIG91dHB1dCA9IGluZGVudCArIGR1bXBOb2Rl
KG5vZGUpICsgIlxuIjsKKyAgICB2YXIgY2hpbGQ7CisgICAgZm9yIChjaGlsZCA9IGludGVybmFs
cy5maXJzdENoaWxkSW5SZWlmaWVkVHJlZShub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW50ZXJuYWxz
Lm5leHRTaWJsaW5nSW5SZWlmaWVkVHJlZShjaGlsZCkpCisgICAgICAgICBvdXRwdXQgKz0gZHVt
cFJlaWZpZWRUcmVlKGNoaWxkLCBpbmRlbnQgKyAiXHQiKTsKKyAgICByZXR1cm4gb3V0cHV0Owor
fQorCitmdW5jdGlvbiBsYXN0Tm9kZUluUmVpZmllZFRyZWUocm9vdCkKK3sKKyAgICB2YXIgbGFz
dE5vZGUgPSByb290OworICAgIHdoaWxlIChpbnRlcm5hbHMubGFzdENoaWxkSW5SZWlmaWVkVHJl
ZShsYXN0Tm9kZSkpCisgICAgICAgIGxhc3ROb2RlID0gaW50ZXJuYWxzLmxhc3RDaGlsZEluUmVp
ZmllZFRyZWUobGFzdE5vZGUpOworICAgIHJldHVybiBsYXN0Tm9kZTsKK30KKworZnVuY3Rpb24g
c2hvd1JlaWZpZWRUcmVlQnlUcmF2ZXJzaW5nSW5Gb3dhcmQocm9vdCkKK3sKKyAgICB2YXIgbm9k
ZSA9IHJvb3Q7CisgICAgdmFyIGxhc3QgPSBsYXN0Tm9kZUluUmVpZmllZFRyZWUocm9vdCk7Cisg
ICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgZGVidWcoZHVtcE5vZGUobm9kZSkpOworICAgICAg
ICBpZiAobm9kZSA9PSBsYXN0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5vZGUgPSBp
bnRlcm5hbHMudHJhdmVyc2VOZXh0Tm9kZUluUmVpZmllZFRyZWUobm9kZSk7CisgICAgfQorfQor
CitmdW5jdGlvbiBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNpbmdJbkJhY2t3YXJkKHJvb3QpCit7
CisgICAgdmFyIG5vZGUgPSBsYXN0Tm9kZUluUmVpZmllZFRyZWUocm9vdCk7CisgICAgd2hpbGUg
KG5vZGUpIHsKKyAgICAgICAgZGVidWcoZHVtcE5vZGUobm9kZSkpOworICAgICAgICBpZiAobm9k
ZSA9PSByb290KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5vZGUgPSBpbnRlcm5hbHMu
dHJhdmVyc2VQcmV2aW91c05vZGVJblJlaWZpZWRUcmVlKG5vZGUpOworICAgIH0KK30KKworZnVu
Y3Rpb24gc2hvd1JlaWZpZWRUcmVlKG5vZGUpCit7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChub2RlKTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisKKyAgICBkZWJ1Zygn
UmVpZmllZCBUcmVlOicpOworICAgIGRlYnVnKGR1bXBSZWlmaWVkVHJlZShub2RlKSk7CisKKyAg
ICBkZWJ1ZygnVHJhdmVyc2UgaW4gZm9yd2FyZC4nKTsKKyAgICBzaG93UmVpZmllZFRyZWVCeVRy
YXZlcnNpbmdJbkZvd2FyZChub2RlKTsKKworICAgIGRlYnVnKCdUcmF2ZXJzZSBpbiBiYWNrd2Fy
ZC4nKTsKKyAgICBzaG93UmVpZmllZFRyZWVCeVRyYXZlcnNpbmdJbkJhY2t3YXJkKG5vZGUpOwor
CisgICAgZGVidWcoJycpOworfQorCitkZWJ1ZygnU2hhZG93Um9vdCBzaG91bGQgYmUgdXNlZC4n
KTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAor
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdi
J30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKTsKKwor
ZGVidWcoJ0EgY29udGVudCBlbGVtZW50IHNob3VsZCBzZWxlY3QgbGlnaHQgY2hpbGRyZW4nKTsK
K3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pKSk7CisKK2RlYnVnKCdUZXN0IGZvciBj
b250ZW50IGVsZW1lbnQgc2VsZWN0b3IuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZCd9KSksCisgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2UnfSkpKTsKKworZGVidWcoJ0xpZ2h0IGNoaWxkcmVuIHNob3VsZCBiZSBzZWxlY3Rl
ZCBvbmx5IGF0IG9uY2UuJyk7CitzaG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZCd9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnKSksCisgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsn
aWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkp
KTsKKworZGVidWcoJ0EgY29udGVudCBlbGVtZW50IGNhbiBoYXZlIGZhbGxiYWNrIGVsZW1lbnRz
LicpOworc2hvd1JlaWZpZWRUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30s
CisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2InfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50
JywgeydzZWxlY3QnOiAnLnonfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YxJ30pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZjInfSkpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKTsKKworZGVidWco
J0ZhbGxiYWNrIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZCBpZiA8Y29udGVudD4gZWxlbWVu
dCBzZWxlY3RzIGFueSBlbGVtZW50cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5jJ30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmMSd9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2YyJ30pKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdjJ30pKSk7CisKK2RlYnVnKCdUZXN0IGZvciBOZXN0ZWQgU2hhZG93Um9vdHMuJyk7Citz
aG93UmVpZmllZFRyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdnJ30p
KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2gnfSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdpJ30pKSk7CisKK2RlYnVnKCdUZXN0IGZv
ciBNdWx0aXBsZSBTaGFkb3dSb290cy4nKTsKK3Nob3dSZWlmaWVkVHJlZSgKKyAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJ30pKSwKKyAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YnfSkpKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IGIxNWVhMmQyN2I1ZDEwYTkz
NDg1OTg5NTcwODk1MzJmNDMzNmYxYzIuLjRiYzE3MzVhOGJjZTI0NjY5ZWZlNDNkYzQyODBjNjky
NTQ5MzAwODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xODg2LDYgKzE4ODYsNyBA
QCBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93LXN0eWxlLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWluLW1ldGVyLWVsZW1lbnQuaHRtbAog
ZmFzdC9kb20vc2hhZG93L2dldC1lbGVtZW50LWJ5LWlkLWluLXNoYWRvdy1yb290Lmh0bWwKK2Zh
c3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUtdHJhdmVyc2FsLmh0bWwKIGZhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxl
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAppbmRleCBhNzljNTNkYmZjZDNkODhkMjM3Mzc4MGU1NTQ2NTZjZDQ5OTcy
OGZhLi44ZWUxOGQ1MGI1M2JlMDUxOTY4NjM5MDhjODhjNDBiYjYyYTBmNTY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKQEAgLTE3NCw2ICsxNzQsNyBAQCBmYXN0L2RvbS9zaGFkb3cvaWZyYW1l
LXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBm
YXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbAorZmFzdC9kb20vc2hhZG93
L3JlaWZpZWQtdHJlZS10cmF2ZXJzYWwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1ib3Vu
ZGFyeS1ldmVudHMuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50LWNyYXNoLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkCmluZGV4IDI0NzdmMWU2OTI0Mzk5OWMzOTA1Yjk0YWI0Yjk5YTg3OTcyOTFlN2IuLjFl
ZDk2ZjljNWNhYmFhM2YxZjU2YzIyOTAyNzc2ZTM5ZDdhNmIyMjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9Ta2lwcGVkCkBAIC0xNDY5LDYgKzE0NjksNyBAQCBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1l
bGVtZW50LW91dHNpZGUtc2hhZG93LXN0eWxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50
LWVsZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1l
bGVtZW50LWluLW1ldGVyLWVsZW1lbnQuaHRtbAogZmFzdC9kb20vc2hhZG93L2dldC1lbGVtZW50
LWJ5LWlkLWluLXNoYWRvdy1yb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9yZWlmaWVkLXRyZWUt
dHJhdmVyc2FsLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAog
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcm9vdC1hY3RpdmVFbGVtZW50Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbmNhaXJvL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lw
cGVkCmluZGV4IGFlZjc5ODJhNTY1ZDY0YTJlZDVjZTFkMDFmOWUzMjQzMjA1ZjQxMzguLmMxOTM1
YzhiZGExMGZiYzJkYzZmZWEzNGFmMTJkMzYwMjE1ZDNjNmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vU2tpcHBlZApAQCAtMTk3OSw2ICsxOTc5LDcgQEAgZmFzdC9kb20vc2hhZG93L2Nv
bnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1lbGVtZW50LWluLW1lZGlhLWVsZW1lbnQuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQt
ZWxlbWVudC1pbi1tZXRlci1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9nZXQtZWxlbWVu
dC1ieS1pZC1pbi1zaGFkb3ctcm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVl
LXRyYXZlcnNhbC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtYWN0aXZlRWxlbWVudC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4
IDg5YzY1NzY2OGViN2FhMmI1MzJlZDc4ZmI0NjZhNjY2MGRhMmZhNTcuLjBiNTRjZjEwZmFlMDU1
ZWNiNTkyN2U3YjQwNjJlZjI0NzI2MjI4NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBA
IC0xMDg1LDYgKzEwODUsNyBAQCBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91dHNp
ZGUtc2hhZG93Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1z
aGFkb3ctc3R5bGUuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1pbi1tZWRp
YS1lbGVtZW50Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWV0ZXIt
ZWxlbWVudC5odG1sCitmYXN0L2RvbS9zaGFkb3cvcmVpZmllZC10cmVlLXRyYXZlcnNhbC5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYWN0aXZl
RWxlbWVudC5odG1sCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNGZh
Mjk5NzM2OTkxYzcwMjQ1NmY2ZWY1Yjk4MTk3MmE2YzEyYWE5ZC4uYjEwZjIyYzEyMjJhMGJhMDU1
Yjk4MjM4NDU1NTQ1NGY1NDU3MjVhOCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAzLTIyICBIYXlhdG8gSXRvICA8aGF5YXRvQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERPTV0gQWRkIFJlaWZpZWQgRE9NIFRyZWUg
dHJhdmVyc2FsIGludGVybmFsIEFQSXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTE5NworCisgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KKworICAgICAgICBBZGQgaW50ZXJuYWwgQVBJcyB3aGljaCBjYW4gYmUgdXNlZCB0byB0
cmF2ZXJzZSBSZWlmaWVkIERPTSB0cmVlLCB3aGljaCBpcworICAgICAgICBhIHJlc3VsdCBvZiBu
b2RlIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0gZXhwbGFpbmVkIGluIFNoYWRvdyBET00gc3BlYy4K
KyAgICAgICAgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3Rp
cC9zcGVjL3NoYWRvdy9pbmRleC5odG1sCisKKyAgICAgICAgRXZlcnkgcHVibGljIGZ1bmN0aW9u
cyBkZWZpbmVkIGluIFJlaWZpZWRUcmVlVHJhdmVyc2FsIGFyZSBzdGF0aWMKKyAgICAgICAgZnVu
Y3Rpb25zIGFuZCBhcmUgbmFtZWQgaW4gYSBzaW1pbGFyIHdheSB0byBvbmVzIGRlZmluZWQgaW4g
V2ViQ29yZTo6Tm9kZSBjbGFzcy4KKyAgICAgICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0
IFJlaWZpZWRUcmVlVHJhdmVyc2FsIEFQSXMgY29uc2lkZXIgc2hhZG93CisgICAgICAgIGhvc3Rz
IGFuZCBhbHNvIHRyYXZlcnNlIG5vZGVzIGlzIFNoYWRvdyBET00gc3VidHJlZXMsIGNyb3NzaW5n
IHNoYWRvdydzIHVwcGVyIGFuZCBsb3dlciBib3VuZGFyeQorICAgICAgICB0cmFuc3BhcmVudGx5
LgorCisgICAgICAgIFRoZXJlIGlzIG5vIGFjdHVhbCBjbGllbnQgd2hpY2ggdXNlcyB0aGVzZSBB
UElzLiBGb2xsb3ctdXAgcGF0Y2hlcyBmb3IgRm9jdXNOYXZpZ2F0aW9uCisgICAgICAgIGFuZCBF
dmVudERpc3BhdGNoZXIgd2lsbCB1c2UgdGhlIEFQSXMgc28gdGhhdCB0aGV5IGNhbiB0cmF2ZXJz
ZSBub2RlIGluIHJlaWZpZWQgdHJlZSBvcmRlci4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDMtMjQgIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkLiBGaXggdGhlIGJ1
aWxkIGFmdGVyIFdURiBtb3ZlLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>