<?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>104332</bug_id>
          
          <creation_ts>2012-12-06 18:16:08 -0800</creation_ts>
          <short_desc>NodeRenderingContext is slow due to ComposedShadowTreeWalker</short_desc>
          <delta_ts>2012-12-13 22:52:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>103697</dependson>
          <blocked>103339</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>esprehn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>785508</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-06 18:16:08 -0800</bug_when>
    <thetext>This is variant of Bug 103208.
Since I don&apos;t want to obsolete the original patch there, I&apos;d file a separate bug.
My attempt is to kill the slowdown even if SHADOW_DOM is on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785781</commentid>
    <comment_count>1</comment_count>
      <attachid>178190</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-07 03:11:09 -0800</bug_when>
    <thetext>Created attachment 178190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785782</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-07 03:14:31 -0800</bug_when>
    <thetext>Need to measure this on Apple Mac. dom-modify is too noisy on Chromium to see difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785791</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-07 03:52:44 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Need to measure this on Apple Mac. dom-modify is too noisy on Chromium to see difference.
Will do next week....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786946</commentid>
    <comment_count>4</comment_count>
      <attachid>178462</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-09 20:14:43 -0800</bug_when>
    <thetext>Created attachment 178462
dom-modify innerHTML result

I confirmed similar progression similar to what Antti did at Bug 103208.
Note that this is not whole dom-modify. It runs only innerHTML sub test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786947</commentid>
    <comment_count>5</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-09 20:15:30 -0800</bug_when>
    <thetext>First three trial came from patched, last three from original.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787000</commentid>
    <comment_count>6</comment_count>
      <attachid>178476</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-09 22:33:20 -0800</bug_when>
    <thetext>Created attachment 178476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787475</commentid>
    <comment_count>7</comment_count>
      <attachid>178476</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-10 10:16:13 -0800</bug_when>
    <thetext>Comment on attachment 178476
Patch

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

This looks nice. I am not sure whether the ShadowTreeJoint is the right term, since it needs explanation. Not sure if I have better ideas, but it seems like the shadow tree joint node is a node that impacts shadow tree algorithms... ImpactsShadowDOMAlgorithms is way too verbose though :)

&gt; Source/WebCore/ChangeLog:29
&gt; +        This chagne has 3-4% speedup on Dromaeo/dom-modify/innerHTML.

chagne -&gt; change

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:261
&gt; +    bool inDocument = node-&gt;inDocument();
&gt; +    bool isShadowTreeJoint = node-&gt;isShadowTreeJoint();
&gt; +    bool isContainerNode = node-&gt;isContainerNode();

Not sure why all these guys need to be pre-declared upfront.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787510</commentid>
    <comment_count>8</comment_count>
      <attachid>178476</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 10:38:37 -0800</bug_when>
    <thetext>Comment on attachment 178476
Patch

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

It seems like we could do this without the flag and having to maintain it everywhere. It also seems like we can make CSTW::nextSibling and previousSibling inline and have them check a bitfield based on the m_node that the ComposedShadowTreeWalker was created with for &quot;started on a joint node&quot;. If that bitfield is false then the walker should fast path itself. Callers should not need to use special static methods.

&gt; Source/WebCore/ChangeLog:23
&gt; +        - The node is a child of shadow host.

Can we do this without the flag? Why not just parentOrHostNode() for being either an InsertionPointNode or having an elementShadow ?

&gt; Source/WebCore/ChangeLog:49
&gt; +        (WebCore::Element::childrenChanged): Maingains shadow tree joint flag.

Misspelled maintains? You have this all over the description. :)

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:95
&gt; +    for (Node* sibling = ComposedShadowTreeWalker::traverseNextSibling(m_node); sibling; sibling = ComposedShadowTreeWalker::traverseNextSibling(sibling)) {

This doesn&apos;t seem right because if you started a non-joint node you&apos;ll never run into a joint node by walking siblings per your definition in the ChangeLog so you shouldn&apos;t need this complexity where you subvert the walker and use static methods. If that&apos;s the case when Walker::nextSibling() can just be smart enough to handle this all for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787524</commentid>
    <comment_count>9</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 10:44:44 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 178476 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178476&amp;action=review
&gt; ...
&gt; 
&gt; Can we do this without the flag? Why not just parentOrHostNode() for being either an InsertionPointNode or having an elementShadow ?

Specifically, this check seems equivalent:

// These are bitfield checks, they should be super fast.
bool isShadowPivot() { return !parentOrHostNode()-&gt;isInsertionPoint() &amp;&amp; (!parentOrHostNode()-&gt;isElementNode() || toElement(parentOrHostNode())-&gt;shadow(); }

and you could do:

inline void ComposedShadowTreeWalker::nextSibling()
{
  m_node = m_node-&gt;isShadowPivot() ? slowTraverse() : m_node-&gt;nextSibling();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787842</commentid>
    <comment_count>10</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-10 16:33:42 -0800</bug_when>
    <thetext>I consume a flag here since even checking parent node and rare data is a 
const considering what we can do without shadow is just fetching
a word for m_firstChild.

I hope this change be comparable to Bug 103208, where these whole paths are
compiled out by SHADOW_DOM flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787850</commentid>
    <comment_count>11</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 16:57:10 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I consume a flag here since even checking parent node and rare data is a 
&gt; const considering what we can do without shadow is just fetching
&gt; a word for m_firstChild.
&gt; 
&gt; I hope this change be comparable to Bug 103208, where these whole paths are
&gt; compiled out by SHADOW_DOM flag.

Can you try the bool on CSTW construction and inline path instead? We also can&apos;t compile this check out as we need to support traversing the composed children for the new DOM based generated content to work properly with &lt;input&gt;... unless we plan to drop support for all generated content on shadows again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787853</commentid>
    <comment_count>12</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 16:58:43 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; I consume a flag here since even checking parent node and rare data is a 
&gt; &gt; const considering what we can do without shadow is just fetching
&gt; &gt; a word for m_firstChild.
&gt; &gt; 
&gt; &gt; I hope this change be comparable to Bug 103208, where these whole paths are
&gt; &gt; compiled out by SHADOW_DOM flag.
&gt; 
&gt; Can you try the bool on CSTW construction and inline path instead? We also can&apos;t compile this check out as we need to support traversing the composed children for the new DOM based generated content to work properly with &lt;input&gt;... unless we plan to drop support for all generated content on shadows again.

Also note that Antti himself has said there&apos;s no reason to avoid bitfield checks with fancy acrobatics: https://bugs.webkit.org/show_bug.cgi?id=101448

So checking parentOrHostNode()-&gt;isShadowRoot() || parentOrHostNode()-&gt;isInsertionPoint() on CSTW should be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787864</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-10 17:11:16 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; I consume a flag here since even checking parent node and rare data is a 
&gt; &gt; &gt; const considering what we can do without shadow is just fetching
&gt; &gt; &gt; a word for m_firstChild.
&gt; &gt; &gt; 
&gt; &gt; &gt; I hope this change be comparable to Bug 103208, where these whole paths are
&gt; &gt; &gt; compiled out by SHADOW_DOM flag.
&gt; &gt; 
&gt; &gt; Can you try the bool on CSTW construction and inline path instead? We also can&apos;t compile this check out as we need to support traversing the composed children for the new DOM based generated content to work properly with &lt;input&gt;... unless we plan to drop support for all generated content on shadows again.
&gt; 
&gt; Also note that Antti himself has said there&apos;s no reason to avoid bitfield checks with fancy acrobatics: https://bugs.webkit.org/show_bug.cgi?id=101448
This doesn&apos;t conflict introducing shadow-tree-joint flag ...
Anyway, I&apos;m now aware that we need to take care of generated content here.
But I don&apos;t think it is good idea to mix shadow tree walking and generated content. 
I&apos;m introducing NodeRenderingTraversal module as a sister of NodeTraversal ns,
which is going to be added by Bug 104507. We could manage generated content things there.
Let me try... before you land Bug 178634 :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787952</commentid>
    <comment_count>14</comment_count>
      <attachid>178690</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-10 19:35:24 -0800</bug_when>
    <thetext>Created attachment 178690
Benchmark result with non-bitflag version

I tried non bitflag version but the benchmark doesn&apos;t say it&apos;s good. 
The last three columns came from non-flag version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787998</commentid>
    <comment_count>15</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-10 21:04:19 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=178690) [details]
&gt; Benchmark result with non-bitflag version
&gt; 
&gt; I tried non bitflag version but the benchmark doesn&apos;t say it&apos;s good. 
&gt; The last three columns came from non-flag version.

Hmm, that&apos;s really suspicious since isShadowRoot() and isInsertionPoint() are both bitfields and checking two bitfields vs 1 (isShadowPivot) shouldn&apos;t have any noticeable difference... Okay lets go with this and perhaps we can try to get rid of this new bitfield in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788524</commentid>
    <comment_count>16</comment_count>
      <attachid>178476</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-11 09:47:32 -0800</bug_when>
    <thetext>Comment on attachment 178476
Patch

Please take care of the remaining comments and let&apos;s file two bugs: one to track better naming of ShadowTreeJoint and one to combine flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788921</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-11 16:09:53 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 178476 [details])
&gt; Please take care of the remaining comments and let&apos;s file two bugs: one to track better naming of ShadowTreeJoint and one to combine flags.

I can&apos;t land this since it conflicts Elliot&apos;s pseudo element patch.
I&apos;ll adopt the change and ask for review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789330</commentid>
    <comment_count>18</comment_count>
      <attachid>178998</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 01:40:25 -0800</bug_when>
    <thetext>Created attachment 178998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789357</commentid>
    <comment_count>19</comment_count>
      <attachid>178998</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-12 02:12:54 -0800</bug_when>
    <thetext>Comment on attachment 178998
Patch

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

This patch is going to make generated content much slower, and also makes appending children to a ShadowRoot n^2 which is bad. Please don&apos;t do this :(

&gt; Source/WebCore/dom/Element.cpp:2160
&gt; +        child-&gt;resetShadowTreeJoint();

This doesn&apos;t seem like the right place for this. Why does adding a pseudo element reset the join bits? I don&apos;t like this because it means adding :before and :after to a page dynamically now causes an extra walk across all children of the node you defined it on.

ex. You made &lt;div&gt; ... thousands of nodes ... &lt;/div&gt; and then adding div:before {} much slower by introducing a new DOM walk.

&gt; Source/WebCore/dom/Element.h:373
&gt; +    bool isChildShadowTreeJoint() const { return isInsertionPoint() || shadow() || hasPseudoElements(); }

This is way too agressive. You&apos;re making everything with :before or :after into a joint node which is not correct.

&gt; Source/WebCore/dom/ShadowRoot.cpp:330
&gt; +        child-&gt;setShadowTreeJoint();

Again this is bad, you make appendChild() to ShadowRoot into an O(n^2) operation. This needs to be handled inside appendChild() itself where you check if the parent isShadowRoot() and update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789376</commentid>
    <comment_count>20</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-12 02:26:33 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 178998 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178998&amp;action=review
&gt; ...
&gt; Again this is bad, you make appendChild() to ShadowRoot into an O(n^2) operation. This needs to be handled inside appendChild() itself where you check if the parent isShadowRoot() and update.

More correctly Node::insertedInto, but adding a ShadowRoot to an existing element needs to update every child as well so that won&apos;t work... instead what if inside Node::attach() and Node::detach() you look at your parent node and update the bits? That removes the n^2 traversals.

Also can we call the bit &quot;needsShadowRootAwareAttach&quot; ? :before and :after are not &quot;Shadow Joints&quot;, especially when the page has no shadows. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789417</commentid>
    <comment_count>21</comment_count>
      <attachid>179014</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 03:19:32 -0800</bug_when>
    <thetext>Created attachment 179014
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789430</commentid>
    <comment_count>22</comment_count>
      <attachid>178998</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 03:43:36 -0800</bug_when>
    <thetext>Comment on attachment 178998
Patch

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

Elliot, I noticed your comment now. I&apos;ll do some routine work like adding files to exp file before addressing your comment.

&gt;&gt; Source/WebCore/dom/Element.cpp:2160
&gt;&gt; +        child-&gt;resetShadowTreeJoint();
&gt; 
&gt; This doesn&apos;t seem like the right place for this. Why does adding a pseudo element reset the join bits? I don&apos;t like this because it means adding :before and :after to a page dynamically now causes an extra walk across all children of the node you defined it on.
&gt; 
&gt; ex. You made &lt;div&gt; ... thousands of nodes ... &lt;/div&gt; and then adding div:before {} much slower by introducing a new DOM walk.

Right. we need some compromise here.

&gt;&gt; Source/WebCore/dom/ShadowRoot.cpp:330
&gt;&gt; +        child-&gt;setShadowTreeJoint();
&gt; 
&gt; Again this is bad, you make appendChild() to ShadowRoot into an O(n^2) operation. This needs to be handled inside appendChild() itself where you check if the parent isShadowRoot() and update.

Oh I overlooked the comment. I should take care of this in coming patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789435</commentid>
    <comment_count>23</comment_count>
      <attachid>179018</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 04:00:53 -0800</bug_when>
    <thetext>Created attachment 179018
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789457</commentid>
    <comment_count>24</comment_count>
      <attachid>179025</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 04:51:10 -0800</bug_when>
    <thetext>Created attachment 179025
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789491</commentid>
    <comment_count>25</comment_count>
      <attachid>179025</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 06:06:04 -0800</bug_when>
    <thetext>Comment on attachment 179025
WIP

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

New failing tests:
fast/dom/shadow/pseudoclass-update-disabled-fieldset.html
fast/dom/shadow/dynamically-created-shadow-root.html
fast/dom/shadow/pseudoclass-update-link-anchor.html
fast/dom/shadow/focus-navigation.html
fast/dom/shadow/pseudoclass-update-target.html
fast/dom/shadow/distribution-className-modified.html
fast/dom/shadow/pseudoclass-update-enabled-fieldset.html
fast/dom/shadow/content-element-select-dynamic.html
editing/shadow/select-contenteditable-shadowhost.html
fast/dom/shadow/pseudoclass-update-indeterminate-progress.html
fast/dom/shadow/content-element-move.html
fast/dom/shadow/pseudoclass-update-checked-input.html
fast/dom/shadow/pseudoclass-update-disabled-select.html
fast/dom/shadow/pseudoclass-update-visited-area.html
fast/dom/shadow/pseudoclass-update-disabled-textarea.html
fast/dom/shadow/pseudoclass-update-enabled-select.html
fast/dom/shadow/distribution-id-modified.html
fast/dom/shadow/no-renderers-for-light-children.html
fast/dom/shadow/pseudoclass-update-indeterminate-input.html
editing/shadow/shadow-selection-not-exported.html
editing/shadow/contenteditable-propagation-at-shadow-boundary.html
fast/dom/shadow/pseudoclass-update-link-area.html
fast/dom/shadow/pseudoclass-update-visited-anchor.html
fast/dom/shadow/multiple-shadowroot-rendering.html
fast/dom/shadow/pseudoclass-update-enabled-button.html
fast/dom/shadow/pseudoclass-update-disabled-input.html
fast/dom/shadow/pseudoclass-update-enabled-input.html
fast/dom/shadow/distribution-attribute-modified.html
fast/dom/shadow/pseudoclass-update-enabled-textarea.html
fast/dom/shadow/pseudoclass-update-disabled-button.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789502</commentid>
    <comment_count>26</comment_count>
      <attachid>179025</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 06:54:03 -0800</bug_when>
    <thetext>Comment on attachment 179025
WIP

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

New failing tests:
fast/dom/shadow/pseudoclass-update-disabled-fieldset.html
fast/dom/shadow/dynamically-created-shadow-root.html
fast/dom/shadow/pseudoclass-update-link-anchor.html
fast/dom/shadow/focus-navigation.html
fast/dom/shadow/pseudoclass-update-target.html
fast/dom/shadow/distribution-className-modified.html
fast/dom/shadow/pseudoclass-update-enabled-fieldset.html
fast/dom/shadow/content-element-select-dynamic.html
editing/shadow/select-contenteditable-shadowhost.html
fast/dom/shadow/pseudoclass-update-indeterminate-progress.html
fast/dom/shadow/content-element-move.html
fast/dom/shadow/pseudoclass-update-checked-input.html
fast/dom/shadow/pseudoclass-update-disabled-select.html
fast/dom/shadow/pseudoclass-update-visited-area.html
fast/dom/shadow/pseudoclass-update-disabled-textarea.html
fast/dom/shadow/pseudoclass-update-enabled-select.html
fast/dom/shadow/distribution-id-modified.html
fast/dom/shadow/no-renderers-for-light-children.html
fast/dom/shadow/pseudoclass-update-indeterminate-input.html
editing/shadow/shadow-selection-not-exported.html
editing/shadow/contenteditable-propagation-at-shadow-boundary.html
fast/dom/shadow/pseudoclass-update-link-area.html
fast/dom/shadow/pseudoclass-update-visited-anchor.html
fast/dom/shadow/multiple-shadowroot-rendering.html
fast/dom/shadow/pseudoclass-update-enabled-button.html
fast/dom/shadow/pseudoclass-update-disabled-input.html
fast/dom/shadow/pseudoclass-update-enabled-input.html
fast/dom/shadow/distribution-attribute-modified.html
fast/dom/shadow/pseudoclass-update-enabled-textarea.html
fast/dom/shadow/pseudoclass-update-disabled-button.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790199</commentid>
    <comment_count>27</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-12 19:05:17 -0800</bug_when>
    <thetext>I had an idea for an even better way to do this, lets just pass the need for a shadow tree walker down through ::attach() into createRendererIfNeeded and finally sets a boolean on the constructor for NodeRenderingContext.

and then you just need to update ContainerNode::attachChildren to do:

// outside the loop.
bool needsWalker = isShadowRoot() || isInsertionPoint() || hasPseudoElements();

// inside the loop...
child-&gt;attach(needsWalker);

and inside Element::attach(bool walkerIsNeeded) you do

createRendererIfNeeded(walkerIsNeeded)

and NodeRenderingContext(this, walkerIsNeeded).createRendererForElementIfNeeded();

This saves us from all these n^2 traversals and having to maintain the bit and should be very fast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790232</commentid>
    <comment_count>28</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 20:36:07 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; I had an idea for an even better way to do this, lets just pass the need for a shadow tree walker down through ::attach() into createRendererIfNeeded and finally sets a boolean on the constructor for NodeRenderingContext.

My thought was a variation of this - We can pass NodeRenderingContext as a parameter to attach().
We can tell NRC which node is the parent/caller of attach().

Changing the signature of attach() is certainly a big change and that&apos;s why I&apos;m hesitating to do that.
But we could probably do that in a follow up patch instead of this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790282</commentid>
    <comment_count>29</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 21:41:06 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; 
&gt; and NodeRenderingContext(this, walkerIsNeeded).createRendererForElementIfNeeded();
Noticed that this approach might not work since the parent can change during
nextSibling/previosuSibling traversal: The next sibling of fast-traversable-node can be 
not-fast-traversable. It can be an insertion point for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790300</commentid>
    <comment_count>30</comment_count>
      <attachid>179198</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 22:37:15 -0800</bug_when>
    <thetext>Created attachment 179198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790305</commentid>
    <comment_count>31</comment_count>
      <attachid>179200</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-12 22:42:01 -0800</bug_when>
    <thetext>Created attachment 179200
Fixed ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790347</commentid>
    <comment_count>32</comment_count>
      <attachid>179214</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 00:09:26 -0800</bug_when>
    <thetext>Created attachment 179214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790349</commentid>
    <comment_count>33</comment_count>
      <attachid>179215</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 00:11:40 -0800</bug_when>
    <thetext>Created attachment 179215
benchmark result showing 2-3% win for document-modify-innerhtml

This one is no longer as strong as before.  The improvement is now 2-3%. 
I&apos;d like to land this and attack further in separate change.
The patch will be bigger otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791285</commentid>
    <comment_count>34</comment_count>
      <attachid>179214</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-12-13 20:40:01 -0800</bug_when>
    <thetext>Comment on attachment 179214
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        chagne, NRC directly used CSTW. This NRT module hides and narrows

chagne -&gt; change

&gt; Source/WebCore/ChangeLog:21
&gt; +          doesn&apos;t need to use CSTW and just goes neighboring nodes in a plain DOM way.

doesn&apos;t -&gt; don&apos;t, &quot;just goes _to_ neighboring nodes&quot;

&gt; Source/WebCore/ChangeLog:25
&gt; +        - CSTW::ParentTraversalDetails is moved and renamed to

This could&apos;ve been a nice separate patch :-\

&gt; Source/WebCore/ChangeLog:37
&gt; +        node flag. Each DOM node is now markd as NeedsShadowTreeWalker if
&gt; +        it requires non-trivial traversal in NRT which uses CSTW. This

This is great.

&gt; Source/WebCore/ChangeLog:44
&gt; +        - The node is a pseudo element or

or...? :)

&gt; Source/WebCore/ChangeLog:46
&gt; +        This criteria criteria is defined in Node::needsShadowTreeWalkerSlow(). The node actually needs

zap one &quot;criteria&quot; from the sentence. You have two.

&gt; Source/WebCore/dom/ContainerNode.h:268
&gt; +inline bool Node::needsShadowTreeWalker() const

Looks like this is the hottest function in the whole patch.

&gt; Source/WebCore/dom/NodeRenderingTraversal.h:36
&gt; +namespace NodeRenderingTraversal {

The name is a touch obtuse, but I don&apos;t have better ideas.

&gt; Source/WebCore/html/HTMLOptGroupElement.cpp:29
&gt; +#include &quot;ElementShadow.h&quot;

Why do we need this?

&gt; Source/WebCore/html/HTMLOptionElement.cpp:32
&gt; +#include &quot;ElementShadow.h&quot;

And this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791300</commentid>
    <comment_count>35</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 21:00:47 -0800</bug_when>
    <thetext>Thanks for the review! I can land this.

(In reply to comment #34)
&gt; &gt; Source/WebCore/dom/ContainerNode.h:268
&gt; &gt; +inline bool Node::needsShadowTreeWalker() const
&gt; 
&gt; Looks like this is the hottest function in the whole patch.
&gt; 

Yeah, it&apos;s sad to see the parent here. I should figure out how we can get rid of it.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLOptGroupElement.cpp:29
&gt; &gt; +#include &quot;ElementShadow.h&quot;
&gt; 
&gt; Why do we need this?
&gt; 
&gt; &gt; Source/WebCore/html/HTMLOptionElement.cpp:32
&gt; &gt; +#include &quot;ElementShadow.h&quot;
&gt; 
&gt; And this?

We originally included ComposedShadowTreeWalker.h through NodeRenderingContext.h
but we no longer do. That change revealed these implicit dependency. I&apos;ll explain it in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791302</commentid>
    <comment_count>36</comment_count>
      <attachid>179411</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 21:06:52 -0800</bug_when>
    <thetext>Created attachment 179411
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791304</commentid>
    <comment_count>37</comment_count>
      <attachid>179411</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 21:09:35 -0800</bug_when>
    <thetext>Comment on attachment 179411
Patch for landing

Rejecting attachment 179411 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: 1

/mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/15319529</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791308</commentid>
    <comment_count>38</comment_count>
      <attachid>179413</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-13 21:15:34 -0800</bug_when>
    <thetext>Created attachment 179413
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791351</commentid>
    <comment_count>39</comment_count>
      <attachid>179413</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 22:51:54 -0800</bug_when>
    <thetext>Comment on attachment 179413
Patch for landing

Clearing flags on attachment: 179413

Committed r137715: &lt;http://trac.webkit.org/changeset/137715&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791352</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 22:52:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178190</attachid>
            <date>2012-12-07 03:11:09 -0800</date>
            <delta_ts>2012-12-09 22:33:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104332-20121207200833.patch</filename>
            <type>text/plain</type>
            <size>14129</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCmluZGV4IGE5YmU5NTM3NjkyZTVmZGUwNTMwYmMwNjAx
NzZmZjUzMGE5M2YxZjcuLmFiMjNiZWVjYWI5NjFkMmJlNzg1NjZkM2YzNWI2MzEwNGU1MGZjOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3Bw
CkBAIC05Myw3ICs5Myw3IEBAIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OmZyb21GaXJzdENoaWxkKGNvbnN0IE5vZGUqIG5vCiAgICAgcmV0dXJuIHdh
bGtlcjsKIH0KIAotdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZpbmRQYXJlbnQoY29u
c3QgTm9kZSogbm9kZSwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogZGV0YWlscykKK3ZvaWQgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmaW5kUGFyZW50U2xvdyhjb25zdCBOb2RlKiBub2RlLCBQ
YXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKQogewogICAgIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlciB3YWxrZXIobm9kZSwgQ3Jvc3NVcHBlckJvdW5kYXJ5LCBDYW5TdGFydEZyb21TaGFk
b3dCb3VuZGFyeSk7CiAgICAgQ29udGFpbmVyTm9kZSogZm91bmQgPSB0b0NvbnRhaW5lck5vZGUo
d2Fsa2VyLnRyYXZlcnNlUGFyZW50KHdhbGtlci5nZXQoKSwgZGV0YWlscykpOwpAQCAtMzAyLDEz
ICszMDIsMTMgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVu
dEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnMKICAgICByZXR1cm4gMDsKIH0KIAot
Tm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0
IE5vZGUqIG5vZGUpCitOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4
dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAg
IHJldHVybiB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFRyYXZl
cnNhbERpcmVjdGlvbkZvcndhcmQpOwogfQogCi1Ob2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCitOb2RlKiBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nU2xvdyhjb25zdCBO
b2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKICAgICByZXR1cm4gdHJhdmVyc2VTaWJs
aW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2Fy
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKaW5k
ZXggODk3NjliMTcyMzQyZGQ0YTE4YzU5N2U1YzZhZTI0ZDFlODBkMmRjMS4uN2QxMDJlNWQyMTcy
ZGU2YzhmOGEwMmI3ZDY4MWViYjA2OWU1ZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaApAQCAtNjcsNiArNjcsMTQgQEAgcHVibGljOgogICAg
ICAgICB2b2lkIGRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqKTsKICAg
ICAgICAgdm9pZCBkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCopOwogICAg
ICAgICB2b2lkIGNoaWxkV2FzT3V0T2ZDb21wb3NpdGlvbigpIHsgbV9vdXRPZkNvbXBvc2l0aW9u
ID0gdHJ1ZTsgfQorICAgICAgICB2b2lkIHNldE5vZGUoQ29udGFpbmVyTm9kZSogbm9kZSkgeyBt
X25vZGUgPSBub2RlOyB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhcmVudFRy
YXZlcnNhbERldGFpbHMmIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKG1f
bm9kZSA9PSBvdGhlci5tX25vZGUgJiYgbV9pbnNlcnRpb25Qb2ludCA9PSBvdGhlci5tX2luc2Vy
dGlvblBvaW50CisgICAgICAgICAgICAgICAgJiYgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgPT0g
b3RoZXIubV9yZXNldFN0eWxlSW5oZXJpdGFuY2UKKyAgICAgICAgICAgICAgICAmJiBtX291dE9m
Q29tcG9zaXRpb24gPT0gb3RoZXIubV9vdXRPZkNvbXBvc2l0aW9uKTsKKyAgICAgICAgfQogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQ29udGFpbmVyTm9kZSogbV9ub2RlOwpAQCAtODEsNiArODks
OCBAQCBwdWJsaWM6CiAgICAgLy8gZm9yIChDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2Vy
ID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGlsZChub2RlKTsgd2Fsa2Vy
LmdldCgpOyB3YWxrZXIubmV4dFNpYmxpbmcoKSkKICAgICBzdGF0aWMgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIGZyb21GaXJzdENoaWxkKGNvbnN0IE5vZGUqLCBQb2xpY3kgPSBDcm9zc1VwcGVy
Qm91bmRhcnkpOwogICAgIHN0YXRpYyB2b2lkIGZpbmRQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVu
dFRyYXZlcnNhbERldGFpbHMqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0U2libGlu
Zyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5n
KGNvbnN0IE5vZGUqKTsKIAogICAgIE5vZGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nh
c3Q8Tm9kZSo+KG1fbm9kZSk7IH0KIApAQCAtMTI1LDYgKzEzNSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBmaW5kUGFyZW50U2xvdyhjb25zdCBOb2RlKiwg
UGFyZW50VHJhdmVyc2FsRGV0YWlscyopOwogICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5vZGUo
Y29uc3QgTm9kZSosIFRyYXZlcnNhbERpcmVjdGlvbik7CiAgICAgc3RhdGljIE5vZGUqIHRyYXZl
cnNlTGlnaHRDaGlsZHJlbihjb25zdCBOb2RlKiwgVHJhdmVyc2FsRGlyZWN0aW9uKTsKIApAQCAt
MTMzLDggKzE0NCw4IEBAIHByaXZhdGU6CiAgICAgTm9kZSogdHJhdmVyc2VDaGlsZChjb25zdCBO
b2RlKiwgVHJhdmVyc2FsRGlyZWN0aW9uKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZVBhcmVu
dChjb25zdCBOb2RlKiwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogPSAwKSBjb25zdDsKIAotICAg
IHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKLSAgICBzdGF0
aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSopOworICAgIHN0YXRp
YyBOb2RlKiB0cmF2ZXJzZU5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKik7CisgICAgc3RhdGlj
IE5vZGUqIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKik7CiAKICAgICBz
dGF0aWMgTm9kZSogdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBO
b2RlKiwgVHJhdmVyc2FsRGlyZWN0aW9uKTsKICAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VTaWJs
aW5nSW5DdXJyZW50VHJlZShjb25zdCBOb2RlKiwgVHJhdmVyc2FsRGlyZWN0aW9uKTsKQEAgLTE2
NCw2ICsxNzUsNDEgQEAgaW5saW5lIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUsIFBvbGkKICNlbmRpZgogfQogCitpbmxp
bmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZpbmRQYXJlbnQoY29uc3QgTm9kZSog
bm9kZSwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogZGV0YWlscykKK3sKKyAgICBpZiAoIW5vZGUt
PmlzU2hhZG93VHJlZUpvaW50KCkpIHsKKyAgICAgICAgZGV0YWlscy0+c2V0Tm9kZShub2RlLT5w
YXJlbnROb2RlKCkpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgUGFyZW50VHJhdmVyc2FsRGV0
YWlscyBzbG93UmVzdWx0OworICAgICAgICBmaW5kUGFyZW50U2xvdyhub2RlLCAmc2xvd1Jlc3Vs
dCk7CisgICAgICAgIEFTU0VSVChzbG93UmVzdWx0ID09ICpkZXRhaWxzKTsKKyNlbmRpZgorICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZmluZFBhcmVudFNsb3cobm9kZSwgZGV0YWlscyk7
Cit9CisKK2lubGluZSBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4
dFNpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUtPmlzU2hhZG93VHJl
ZUpvaW50KCkpIHsKKyAgICAgICAgQVNTRVJUKHRyYXZlcnNlTmV4dFNpYmxpbmdTbG93KG5vZGUp
ID09IG5vZGUtPm5leHRTaWJsaW5nKCkpOworICAgICAgICByZXR1cm4gbm9kZS0+bmV4dFNpYmxp
bmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJhdmVyc2VOZXh0U2libGluZ1Nsb3cobm9kZSk7
Cit9CisKK2lubGluZSBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUHJl
dmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5pc1NoYWRv
d1RyZWVKb2ludCgpKSB7CisgICAgICAgIEFTU0VSVCh0cmF2ZXJzZVByZXZpb3VzU2libGluZ1Ns
b3cobm9kZSkgPT0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpOworICAgICAgICByZXR1cm4gbm9k
ZS0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIHRyYXZlcnNlUHJldmlv
dXNTaWJsaW5nU2xvdyhub2RlKTsKK30KKwogY2xhc3MgQW5jZXN0b3JDaGFpbldhbGtlciB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQW5jZXN0b3JDaGFpbldhbGtlcihjb25zdCBOb2RlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IDIxOWE1
ZDQ5NjBjYmIyZTMzNGYzZmQxZGRmOGE5OTljYTA5OTc1MmIuLmQyZWU2ZGMwZjM3NDQ3NzhjMjVj
ZjBlMTJiZWYyMWE3NGIxM2M2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5oCkBAIC0yNTYsMTEgKzI1NiwxNiBAQCBpbmxpbmUgdm9pZCBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9k
ZSogbgogCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeShOb2Rl
KiBub2RlKQogewotICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpIHsKKyAgICBib29sIGluRG9j
dW1lbnQgPSBub2RlLT5pbkRvY3VtZW50KCk7CisgICAgYm9vbCBpc1NoYWRvd1RyZWVKb2ludCA9
IG5vZGUtPmlzU2hhZG93VHJlZUpvaW50KCk7CisgICAgYm9vbCBpc0NvbnRhaW5lck5vZGUgPSBu
b2RlLT5pc0NvbnRhaW5lck5vZGUoKTsKKyAgICBpZiAoaW5Eb2N1bWVudCkgewogICAgICAgICBu
b3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChub2RlKTsKICAgICAgICAgbm9kZS0+ZG9jdW1l
bnQoKS0+bm90aWZ5UmVtb3ZlUGVuZGluZ1NoZWV0SWZOZWVkZWQoKTsKLSAgICB9IGVsc2UgaWYg
KG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKQorICAgIH0gZWxzZSBpZiAoaXNDb250YWluZXJOb2Rl
KQogICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShub2Rl
KSk7CisgICAgaWYgKGlzU2hhZG93VHJlZUpvaW50KQorICAgICAgICBub2RlLT5zZXRTaGFkb3dU
cmVlSm9pbnQobm9kZS0+aXNTaGFkb3dUcmVlSm9pbnROb2RlKCkpOwogfQogCiBjbGFzcyBDaGls
ZEZyYW1lRGlzY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5ZTdlMjdhOWVm
YmE4NDc0MWM5ZWFkZjJjYTA0YmYzMzAyYTUyZjkzLi45MjNjODUwMGFmNzI1NzAwZTBiNWI0Njdj
ZDBjYWYwNzY4YzdhNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNTIyLDcgKzE1MjIs
NyBAQCB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwg
Tm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZgogICAgICAgICBjaGVja0ZvclNpYmxpbmdTdHls
ZUNoYW5nZXModGhpcywgcmVuZGVyU3R5bGUoKSwgZmFsc2UsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJD
aGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAKICAgICBpZiAoRWxlbWVudFNoYWRvdyAqIHNoYWRv
dyA9IHRoaXMtPnNoYWRvdygpKQotICAgICAgICBzaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRp
b24oKTsKKyAgICAgICAgc2hhZG93LT5kaWRKb2ludENoYW5nZSgpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OmJlZ2luUGFyc2luZ0NoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNw
cAppbmRleCBjOWYxOTgyOWIwZjk1YjVmMTZlMWRjOGI2ZWJjZTE1NzMyZGExOGYxLi43NWZiMzA1
MTZlNzRjYmRkYTVmMTQ2MThkZmM1NjhiYmMzNmFjMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRTaGFkb3cuY3BwCkBAIC04Myw4ICs4Myw4IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hh
ZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAg
ICAgc2hhZG93Um9vdC0+c2V0UGFyZW50VHJlZVNjb3BlKHNoYWRvd0hvc3QtPnRyZWVTY29wZSgp
KTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9vdC5nZXQoKSk7CiAgICAgc2V0VmFs
aWRpdHlVbmRldGVybWluZWQoKTsKLSAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hv
c3QpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShz
aGFkb3dSb290LmdldCgpKTsKKyAgICBkaWRKb2ludENoYW5nZSgpOwogCiAgICAgLy8gRklYTUUo
OTQ5MDUpOiBTaGFkb3dIb3N0IHNob3VsZCBiZSByZWF0dGFjaGVkIGR1cmluZyByZWNhbGNTdHls
ZS4KICAgICAvLyBTZXQgc29tZSBmbGFnIGhlcmUgYW5kIHJlY3JlYXRlIHNoYWRvdyBob3N0cycg
cmVuZGVyZXIgaW4KQEAgLTE5Myw2ICsxOTMsMTMgQEAgdm9pZCBFbGVtZW50U2hhZG93OjppbnZh
bGlkYXRlRGlzdHJpYnV0aW9uKEVsZW1lbnQqIGhvc3QpCiAgICAgICAgIG1fZGlzdHJpYnV0b3Iu
ZmluaXNoSW5pdmFsaWRhdGlvbigpOwogfQogCit2b2lkIEVsZW1lbnRTaGFkb3c6OmRpZEpvaW50
Q2hhbmdlKCkKK3sKKyAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgZm9yIChOb2Rl
KiBub2RlID0gaG9zdCgpLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpKQorICAgICAgICBub2RlLT5zZXRTaGFkb3dUcmVlSm9pbnQodHJ1ZSk7Cit9CisKIHZv
aWQgRWxlbWVudFNoYWRvdzo6c2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKQogewog
ICAgIGlmIChzaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50U2hhZG93LmgKaW5kZXggZjUyMTk1MTRlNGRlZjkyZTVkNTRhOTY2MGI4NzMwNGNiYmU4MWI5
OC4uOWYzZTMzNWI2NzBhNTI5Y2Q1Yzc2ODIwOWIyZDhmODEwZDcwZDZjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFNoYWRvdy5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFZhbGlkaXR5VW5kZXRlcm1pbmVkKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9u
KCk7CiAgICAgdm9pZCBlbnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICB2b2lkIGRpZEpvaW50Q2hh
bmdlKCk7CiAKICAgICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCk7CiAgICAgY29u
c3QgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5k
ZXggN2NiMzFjMGI0OTUzNGNkZjgyZmIwODg5OWI5YWQ5Y2YzYmNhYzcyNC4uMmZlYmZlZjE5MjRk
NjE3YTIyMmIwM2E0YTk0MDExYTE2ZTkzMGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNTQsNiArMjU0
LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzRG9jdW1lbnRGcmFnbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGdldEZsYWcoSXNEb2N1bWVudEZyYWdtZW50RmxhZyk7IH0KICAgICBib29sIGlzU2hhZG93
Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGlzRG9jdW1lbnRGcmFnbWVudCgpICYmIGRvY3VtZW50RnJh
Z21lbnRJc1NoYWRvd1Jvb3QoKTsgfQogICAgIGJvb2wgaXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0
IHsgcmV0dXJuIGdldEZsYWcoSXNJbnNlcnRpb25Qb2ludEZsYWcpOyB9CisgICAgYm9vbCBpc1No
YWRvd1RyZWVKb2ludE5vZGUoKSBjb25zdCB7IHJldHVybiBpc0luc2VydGlvblBvaW50KCkgfHwg
aXNTaGFkb3dSb290KCk7IH0KKyAgICBib29sIGlzU2hhZG93VHJlZUpvaW50KCkgY29uc3QgeyBy
ZXR1cm4gZ2V0RmxhZyhJc1NoYWRvd1RyZWVKb2ludEZsYWcpOyB9CisgICAgdm9pZCBzZXRTaGFk
b3dUcmVlSm9pbnQoYm9vbCBmbGFnKSB7IHNldEZsYWcoZmxhZywgSXNTaGFkb3dUcmVlSm9pbnRG
bGFnKTsgfQorCiAgICAgYm9vbCBpbk5hbWVkRmxvdygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWco
SW5OYW1lZEZsb3dGbGFnKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tQ2FsbGJhY2tzKCkgY29uc3Qg
eyByZXR1cm4gZ2V0RmxhZyhIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsgfQogCkBAIC03MzMsNyAr
NzM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwg
MjUsCiAgICAgICAgIFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDRmxhZyA9IDEgPDwgMjYsCiAg
ICAgICAgIElzSW5zZXJ0aW9uUG9pbnRGbGFnID0gMSA8PCAyNywKLQorICAgICAgICBJc1NoYWRv
d1RyZWVKb2ludEZsYWcgPSAxIDw8IDI4LAogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQ
YXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcKICAgICB9OwogCkBAIC03NTEsMTQgKzc1NSwxNCBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIENyZWF0ZUNvbnRhaW5lciA9IERlZmF1bHROb2RlRmxhZ3Mg
fCBJc0NvbnRhaW5lckZsYWcsIAogICAgICAgICBDcmVhdGVFbGVtZW50ID0gQ3JlYXRlQ29udGFp
bmVyIHwgSXNFbGVtZW50RmxhZywgCiAgICAgICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3Jl
YXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFnLAotICAgICAgICBDcmVhdGVTaGFkb3dSb290ID0g
Q3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZywKKyAgICAgICAgQ3JlYXRl
U2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFnbWVudEZsYWcgfCBJ
c1NoYWRvd1RyZWVKb2ludEZsYWcsCiAgICAgICAgIENyZWF0ZURvY3VtZW50RnJhZ21lbnQgPSBD
cmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnLAogICAgICAgICBDcmVhdGVT
dHlsZWRFbGVtZW50ID0gQ3JlYXRlRWxlbWVudCB8IElzU3R5bGVkRWxlbWVudEZsYWcsIAogICAg
ICAgICBDcmVhdGVIVE1MRWxlbWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc0hUTUxGbGFn
LCAKICAgICAgICAgQ3JlYXRlRnJhbWVPd25lckVsZW1lbnQgPSBDcmVhdGVIVE1MRWxlbWVudCB8
IEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcsCiAgICAgICAgIENyZWF0ZVNWR0VsZW1lbnQgPSBDcmVh
dGVTdHlsZWRFbGVtZW50IHwgSXNTVkdGbGFnLAogICAgICAgICBDcmVhdGVEb2N1bWVudCA9IENy
ZWF0ZUNvbnRhaW5lciB8IEluRG9jdW1lbnRGbGFnLAotICAgICAgICBDcmVhdGVJbnNlcnRpb25Q
b2ludCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgSXNJbnNlcnRpb25Qb2ludEZsYWcsCisgICAgICAg
IENyZWF0ZUluc2VydGlvblBvaW50ID0gQ3JlYXRlSFRNTEVsZW1lbnQgfCBJc0luc2VydGlvblBv
aW50RmxhZyB8IElzU2hhZG93VHJlZUpvaW50RmxhZywKICAgICAgICAgQ3JlYXRlRWRpdGluZ1Rl
eHQgPSBDcmVhdGVUZXh0IHwgSGFzTmFtZU9ySXNFZGl0aW5nVGV4dEZsYWcsCiAgICAgfTsKICAg
ICBOb2RlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0NjQ2Y2Q4NGEzZDljMGI2NmJmMzIwMzM2
YmQ1MTM5OTU5YzRhNGM3Li41ZGZlNGEwMjEwYzNlYjRhZWUwYTRjNGY0ZDU5MDA2YWU2Y2NkNWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTky
LDkgKzkyLDggQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyIHdhbGtlcihtX25vZGUpOwotICAgIGZvciAod2Fsa2VyLm5leHRTaWJsaW5n
KCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsKKyAgICBm
b3IgKE5vZGUqIHNpYmxpbmcgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4
dFNpYmxpbmcobV9ub2RlKTsgc2libGluZzsgc2libGluZyA9IENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyhzaWJsaW5nKSkgeworICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8v
IFJlbmRlcmVycyBmb3IgZWxlbWVudHMgYXR0YWNoZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQg
YmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgYXJlIHBhcmVudGVkIGRpZmZlcmVudGx5LgogICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJlci0+
c3R5bGUoKSAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMjAsOSArMTE5LDggQEAgUmVuZGVyT2JqZWN0
KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBhdm9pZGFuY2UgYXMgbmV4dFJl
bmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJpZWQgYWRkaW5nIGl0LCBzZXZl
cmFsIHRlc3RzIGZhaWxlZC4KIAotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIo
bV9ub2RlKTsKLSAgICBmb3IgKHdhbGtlci5wcmV2aW91c1NpYmxpbmcoKTsgd2Fsa2VyLmdldCgp
OyB3YWxrZXIucHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsKKyAgICBmb3IgKE5vZGUqIHNp
YmxpbmcgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5n
KG1fbm9kZSk7IHNpYmxpbmc7IHNpYmxpbmcgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRy
YXZlcnNlUHJldmlvdXNTaWJsaW5nKHNpYmxpbmcpKSB7CisgICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gUmVu
ZGVyZXJzIGZvciBlbGVtZW50cyBhdHRhY2hlZCB0byBhIGZsb3cgdGhyZWFkIHNob3VsZCBiZSBz
a2lwcGVkIGJlY2F1c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlmZmVyZW50bHkuCiAgICAgICAgICAg
ICBpZiAocmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5zdHls
ZSgpICYmICFyZW5kZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBjNmIy
NjFiZTVjYTMxMDZmMjFkZTdjMGUzMDg2YzZhMjlmZTUwN2FiLi41NjllYjIwZDZlODc4ZTJhZDdj
NTY4YjkxZTUzOWFlZGRjM2MwODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0z
MjYsNiArMzI2LDggQEAgdm9pZCBTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFu
Z2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSoKIAogICAgIENvbnRhaW5lck5v
ZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJD
aGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAgICAgb3duZXIoKS0+aW52YWxpZGF0ZURpc3RyaWJ1
dGlvbigpOworICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICBjaGlsZC0+c2V0U2hhZG93VHJlZUpv
aW50KHRydWUpOwogfQogCiBjb25zdCBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqPiYgU2hhZG93Um9v
dDo6aW5zZXJ0aW9uUG9pbnRMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmNwcAppbmRleCBlMWQ4OGI0YTI5ZTY2NTYzNzI5ODQ0NTFhNTAyYzEwN2Y1
MWNhMTAxLi4yNGQ4NDY4YmVhYmYyNTcyYmJlNjBlNmMxODY3NTA5MDRjYTMwYTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0xMzAsNiAr
MTMwLDggQEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE4KICAgICBIVE1MRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGNvbnRhaW5pbmdTaGFk
b3dSb290KCkpCiAgICAgICAgIHJvb3QtPm93bmVyKCktPmludmFsaWRhdGVEaXN0cmlidXRpb24o
KTsKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGQtPnNldFNoYWRvd1RyZWVKb2ludCh0
cnVlKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBJbnNlcnRpb25Q
b2ludDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>178462</attachid>
            <date>2012-12-09 20:14:43 -0800</date>
            <delta_ts>2012-12-09 20:14:43 -0800</delta_ts>
            <desc>dom-modify innerHTML result</desc>
            <filename>dom-modify-innerHTML.html</filename>
            <type>text/html</type>
            <size>22484</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvbW9ycml0YS93b3JrL3dlYmtpdC9hbGljZSc7CiAgICB2YXIgcmVt
b3RlUGF0aCA9ICdodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5r
JzsKICAgIHZhciBudW1iZXJPZkZhaWx1cmVzID0gMDsKICAgIHZhciBzdGFydGVkTG9hZGluZ1Bs
dWdpbnMgPSBmYWxzZTsKICAgIHZhciBudW1iZXJPZkxvYWRlZFBsdWdpbnMgPSAwOwoKICAgIGZ1
bmN0aW9uIGxvYWRTY3JpcHQoc3JjLCBsb2FkZWQsIGZhaWxlZCkgewogICAgICAgIHZhciBzY3Jp
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzY3JpcHQuYXN5
bmMgPSB0cnVlOwogICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7CiAgICAgICAgc2NyaXB0Lm9ubG9h
ZCA9IGxvYWRlZDsKICAgICAgICBpZiAoZmFpbGVkKQogICAgICAgICAgICBzY3JpcHQub25lcnJv
ciA9IGZhaWxlZDsKICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CiAg
ICB9CgogICAgZnVuY3Rpb24gbG9hZFBsdWdpbnModHJ1bmtQYXRoKSB7CiAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKQogICAgICAgICAgICBsb2FkU2NyaXB0
KHRydW5rUGF0aCArICcvJyArIHBsdWdpbnNbaV0sIGxvYWRlZFBsdWdpbiwgY3JlYXRlRmFpbGVk
VG9Mb2FkUGx1Z2luKHBsdWdpbnNbaV0pKTsKICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkZWRQbHVn
aW4oKSB7CiAgICAgICAgbnVtYmVyT2ZMb2FkZWRQbHVnaW5zKys7CiAgICAgICAgaWYgKG51bWJl
ck9mTG9hZGVkUGx1Z2lucyA9PSBwbHVnaW5zLmxlbmd0aCkKICAgICAgICAgICAgc2V0VGltZW91
dChpbml0LCAwKTsgICAgICAgICAgICAKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVGYWlsZWRU
b0xvYWRQbHVnaW4ocGx1Z2luKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgYWxlcnQo
IkZhaWxlZCB0byBsb2FkICIgKyBwbHVnaW4pOyB9CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRl
TG9hZGVkSlF1ZXJ5KHRydW5rUGF0aCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGxv
YWRQbHVnaW5zKHRydW5rUGF0aCk7IH0KICAgIH0KCiAgICBsb2FkU2NyaXB0KGxvY2FsUGF0aCAr
ICcvJyArIGpRdWVyeSwKICAgICAgICBjcmVhdGVMb2FkZWRKUXVlcnkobG9jYWxQYXRoKSwKICAg
ICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRTY3JpcHQocmVtb3RlUGF0aCArICcv
JyArIGpRdWVyeSwKICAgICAgICAgICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShyZW1vdGVQYXRo
KSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZhaWxlZCB0byBsb2FkIGpR
dWVyeS4iKTsgfSk7CiAgICAgICAgfSk7Cn0pKCk7CgpmdW5jdGlvbiBUZXN0UmVzdWx0KGFzc29j
aWF0ZWRUZXN0LCByZXN1bHQsIGFzc29jaWF0ZWRSdW4pIHsKICAgIHRoaXMudW5pdCA9IGZ1bmN0
aW9uICgpIHsgcmV0dXJuIHJlc3VsdC51bml0OyB9CiAgICB0aGlzLnRlc3QgPSBmdW5jdGlvbiAo
KSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdDsgfQogICAgdGhpcy52YWx1ZXMgPSBmdW5jdGlvbiAo
KSB7IHJldHVybiByZXN1bHQudmFsdWVzID8gcmVzdWx0LnZhbHVlcy5tYXAoZnVuY3Rpb24gKHZh
bHVlKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiB2YWx1ZTsgfSkg
OiB1bmRlZmluZWQ7IH0KICAgIHRoaXMudW5zY2FsZWRNZWFuID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5tZWFuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNz
b2NpYXRlZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5taW4g
PSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiBy
ZXN1bHQubWluOyB9CiAgICB0aGlzLm1heCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0
ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3VsdC5tYXg7IH0KICAgIHRoaXMuc3RkZXYgPSBm
dW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1
bHQuc3RkZXY7IH0KICAgIHRoaXMuc3RkZXZSYXRpbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJl
c3VsdC5zdGRldiAvIHJlc3VsdC5hdmc7IH0KICAgIHRoaXMucGVyY2VudERpZmZlcmVuY2UgPSBm
dW5jdGlvbihvdGhlcikgeyByZXR1cm4gKG90aGVyLm1lYW4oKSAtIHRoaXMubWVhbigpKSAvIHRo
aXMubWVhbigpOyB9CiAgICB0aGlzLmlzU3RhdGlzdGljYWxseVNpZ25pZmljYW50ID0gZnVuY3Rp
b24gKG90aGVyKSB7CiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhvdGhlci5tZWFuKCkgLSB0
aGlzLm1lYW4oKSk7CiAgICAgICAgcmV0dXJuIGRpZmYgPiB0aGlzLnN0ZGV2KCkgJiYgZGlmZiA+
IG90aGVyLnN0ZGV2KCk7CiAgICB9CiAgICB0aGlzLnJ1biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IGFzc29jaWF0ZWRSdW47IH0KfQoKZnVuY3Rpb24gVGVzdFJ1bihlbnRyeSkgewogICAgdGhpcy5k
ZXNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVudHJ5WydkZXNjcmlwdGlvbiddOyB9
CiAgICB0aGlzLndlYmtpdFJldmlzaW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ3dl
YmtpdC1yZXZpc2lvbiddOyB9CiAgICB0aGlzLmxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAg
IHZhciBsYWJlbCA9ICdyJyArIHRoaXMud2Via2l0UmV2aXNpb24oKTsKICAgICAgICBpZiAodGhp
cy5kZXNjcmlwdGlvbigpKQogICAgICAgICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgdGhpcy5k
ZXNjcmlwdGlvbigpOwogICAgICAgIHJldHVybiBsYWJlbDsKICAgIH0KfQoKZnVuY3Rpb24gUGVy
ZlRlc3QobmFtZSkgewogICAgdmFyIHRlc3RSZXN1bHRzID0gW107CiAgICB2YXIgY2FjaGVkVW5p
dCA9IG51bGw7CiAgICB2YXIgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IG51bGw7CgogICAgLy8gV2Ug
Y2FuJ3QgZG8gdGhpcyBpbiBUZXN0UmVzdWx0IGJlY2F1c2UgYWxsIHJlc3VsdHMgZm9yIGVhY2gg
dGVzdCBuZWVkIHRvIHNoYXJlIHRoZSBzYW1lIHVuaXQgYW5kIHRoZSBzYW1lIHNjYWxpbmcgZmFj
dG9yLgogICAgZnVuY3Rpb24gY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpIHsKICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGFkanVzdGluZyB1bml0cyBvbiBldmVyeSB0ZXN0
IHJlc3VsdC4KICAgICAgICAvLyBXZSBjYW4gb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCB0ZXN0
LgogICAgICAgIGlmICghdGVzdFJlc3VsdHMubGVuZ3RoIHx8IGNhY2hlZFVuaXQpCiAgICAgICAg
ICAgIHJldHVybjsKCiAgICAgICAgdmFyIHVuaXQgPSB0ZXN0UmVzdWx0c1swXS51bml0KCk7IC8v
IEZJWE1FOiBXZSBzaG91bGQgdmVyaWZ5IHRoYXQgYWxsIHJlc3VsdHMgaGF2ZSB0aGUgc2FtZSB1
bml0LgogICAgICAgIHZhciBtZWFuID0gdGVzdFJlc3VsdHNbMF0udW5zY2FsZWRNZWFuKCk7IC8v
IEZJWE1FOiBXZSBzaG91bGQgbG9vayBhdCBhbGwgdmFsdWVzLgogICAgICAgIHZhciBraWxvID0g
dW5pdCA9PSAnYnl0ZXMnID8gMTAyNCA6IDEwMDA7CiAgICAgICAgaWYgKG1lYW4gPiAxMCAqIGtp
bG8gKiBraWxvICYmIHVuaXQgIT0gJ21zJykgewogICAgICAgICAgICBjYWNoZWRTY2FsaW5nRmFj
dG9yID0gMSAvIGtpbG8gLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gJ00gJyArIHVu
aXQ7CiAgICAgICAgfSBlbHNlIGlmIChtZWFuID4gMTAgKiBraWxvKSB7CiAgICAgICAgICAgIGNh
Y2hlZFNjYWxpbmdGYWN0b3IgPSAxIC8ga2lsbzsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVu
aXQgPT0gJ21zJyA/ICdzJyA6ICgnSyAnICsgdW5pdCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IDE7CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSB1
bml0OwogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLm5hbWUgPSBmdW5jdGlvbiAoKSB7IHJldHVy
biBuYW1lOyB9CiAgICB0aGlzLmlzTWVtb3J5VGVzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5h
bWUuaW5kZXhPZignOicpID49IDA7IH0KICAgIHRoaXMuYWRkUmVzdWx0ID0gZnVuY3Rpb24gKG5l
d1Jlc3VsdCkgewogICAgICAgIHRlc3RSZXN1bHRzLnB1c2gobmV3UmVzdWx0KTsKICAgICAgICBj
YWNoZWRVbml0ID0gbnVsbDsKICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAg
IH0KICAgIHRoaXMucmVzdWx0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRlc3RSZXN1bHRzOyB9
CiAgICB0aGlzLnNjYWxpbmdGYWN0b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb21wdXRlU2Nh
bGluZ0ZhY3RvcklmTmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFNjYWxpbmdGYWN0b3I7
CiAgICB9CiAgICB0aGlzLnVuaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgY29tcHV0ZVNjYWxp
bmdGYWN0b3JJZk5lZWRlZCgpOwogICAgICAgIHJldHVybiBjYWNoZWRVbml0OwogICAgfQogICAg
dGhpcy5zbWFsbGVySXNCZXR0ZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnVuaXQoKSA9
PSAnbXMnIHx8IHRoaXMudW5pdCgpID09ICdieXRlcyc7IH0KfQoKdmFyIHBsb3RDb2xvciA9ICdy
Z2IoMjMwLDUwLDUwKSc7CnZhciBzdWJwb2ludHNQbG90T3B0aW9ucyA9IHsKICAgIGxpbmVzOiB7
c2hvdzp0cnVlLCBsaW5lV2lkdGg6IDB9LAogICAgY29sb3I6IHBsb3RDb2xvciwKICAgIHBvaW50
czoge3Nob3c6IHRydWUsIHJhZGl1czogMX0sCiAgICBiYXJzOiB7c2hvdzogZmFsc2V9fTsKCnZh
ciBtYWluUGxvdE9wdGlvbnMgPSB7CiAgICB4YXhpczogewogICAgICAgIG1pbjogLTAuNSwKICAg
ICAgICB0aWNrU2l6ZTogMSwKICAgIH0sCiAgICBjcm9zc2hhaXI6IHsgbW9kZTogJ3knIH0sCiAg
ICBzZXJpZXM6IHsgc2hhZG93U2l6ZTogMCB9LAogICAgYmFyczoge3Nob3c6IHRydWUsIGFsaWdu
OiAnY2VudGVyJywgYmFyV2lkdGg6IDAuNX0sCiAgICBsaW5lczogeyBzaG93OiBmYWxzZSB9LAog
ICAgcG9pbnRzOiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6IHsKICAgICAgICBib3JkZXJXaWR0
aDogMSwKICAgICAgICBib3JkZXJDb2xvcjogJyNjY2MnLAogICAgICAgIGJhY2tncm91bmRDb2xv
cjogJyNmZmYnLAogICAgICAgIGhvdmVyYWJsZTogdHJ1ZSwKICAgICAgICBhdXRvSGlnaGxpZ2h0
OiBmYWxzZSwKICAgIH0KfTsKCnZhciB0aW1lUGxvdE9wdGlvbnMgPSB7CiAgICB5YXhpczogeyBz
aG93OiBmYWxzZSB9LAogICAgeGF4aXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIGxpbmVzOiB7IHNo
b3c6IHRydWUgfSwKICAgIGdyaWQ6IHsgYm9yZGVyV2lkdGg6IDEsIGJvcmRlckNvbG9yOiAnI2Nj
YycgfSwKICAgIGNvbG9yczogWyBwbG90Q29sb3IgXQp9OwoKZnVuY3Rpb24gY3JlYXRlUGxvdChj
b250YWluZXIsIHRlc3QpIHsKICAgIHZhciBzZWN0aW9uID0gJCgnPHNlY3Rpb24+PGRpdiBjbGFz
cz0icGxvdCI+PC9kaXY+PGRpdiBjbGFzcz0idGltZS1wbG90cyI+PC9kaXY+JwogICAgICAgICsg
JzxzcGFuIGNsYXNzPSJ0b29sdGlwIj48L3NwYW4+PC9zZWN0aW9uPicpOwogICAgc2VjdGlvbi5j
aGlsZHJlbignLnBsb3QnKS5jc3Moeyd3aWR0aCc6ICgxMDAgKiB0ZXN0LnJlc3VsdHMoKS5sZW5n
dGggKyAyNSkgKyAncHgnLCAnaGVpZ2h0JzogJzMwMHB4J30pOwogICAgJChjb250YWluZXIpLmFw
cGVuZChzZWN0aW9uKTsKCiAgICB2YXIgcGxvdENvbnRhaW5lciA9IHNlY3Rpb24uY2hpbGRyZW4o
Jy5wbG90Jyk7CiAgICB2YXIgbWluSXNaZXJvID0gdHJ1ZTsKICAgIGF0dGFjaFBsb3QodGVzdCwg
cGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKCiAgICBhdHRhY2hUaW1lUGxvdHModGVzdCwgc2Vj
dGlvbi5jaGlsZHJlbignLnRpbWUtcGxvdHMnKSk7CgogICAgdmFyIHRvb2x0aXAgPSBzZWN0aW9u
LmNoaWxkcmVuKCcudG9vbHRpcCcpOwogICAgcGxvdENvbnRhaW5lci5iaW5kKCdwbG90aG92ZXIn
LCBmdW5jdGlvbiAoZXZlbnQsIHBvc2l0aW9uLCBpdGVtKSB7CiAgICAgICAgaWYgKGl0ZW0pIHsK
ICAgICAgICAgICAgdmFyIHBvc3RmaXggPSBpdGVtLnNlcmllcy5pZCA/ICcgKCcgKyBpdGVtLnNl
cmllcy5pZCArICcpJyA6ICcnOwogICAgICAgICAgICB0b29sdGlwLmh0bWwoaXRlbS5kYXRhcG9p
bnRbMV0udG9QcmVjaXNpb24oNCkgKyBwb3N0Zml4KTsKICAgICAgICAgICAgdmFyIHNlY3Rpb25P
ZmZzZXQgPSAkKHNlY3Rpb24pLm9mZnNldCgpOwogICAgICAgICAgICB0b29sdGlwLmNzcyh7bGVm
dDogaXRlbS5wYWdlWCAtIHNlY3Rpb25PZmZzZXQubGVmdCAtIHRvb2x0aXAub3V0ZXJXaWR0aCgp
IC8gMiwgdG9wOiBpdGVtLnBhZ2VZIC0gc2VjdGlvbk9mZnNldC50b3AgKyAxMH0pOwogICAgICAg
ICAgICB0b29sdGlwLmZhZGVJbigyMDApOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICB0b29s
dGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5tb3VzZW91dChmdW5jdGlvbiAo
KSB7CiAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsKICAgIHBsb3RDb250YWluZXIuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAg
ICAgICBtaW5Jc1plcm8gPSAhbWluSXNaZXJvOwogICAgICAgIGF0dGFjaFBsb3QodGVzdCwgcGxv
dENvbnRhaW5lciwgbWluSXNaZXJvKTsKICAgIH0pOwoKICAgIHJldHVybiBzZWN0aW9uOwp9Cgpm
dW5jdGlvbiBhdHRhY2hUaW1lUGxvdHModGVzdCwgY29udGFpbmVyKSB7CiAgICB2YXIgcmVzdWx0
cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIGF0dGFjaGVkUGxvdCA9IGZhbHNlOwogICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29udGFpbmVy
LmFwcGVuZCgnPGRpdj48L2Rpdj4nKTsKICAgICAgICB2YXIgdmFsdWVzID0gcmVzdWx0c1tpXS52
YWx1ZXMoKTsKICAgICAgICBpZiAoIXZhbHVlcykKICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgYXR0YWNoZWRQbG90ID0gdHJ1ZTsKCiAgICAgICAgJC5wbG90KGNvbnRhaW5lci5jaGlsZHJl
bigpLmxhc3QoKSwgW3ZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkgeyByZXR1cm4g
W2luZGV4LCB2YWx1ZV07IH0pXSwKICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwge30sIHRpbWVQ
bG90T3B0aW9ucywge3lheGlzOiB7bWluOiBNYXRoLm1pbi5hcHBseShNYXRoLCB2YWx1ZXMpICog
MC45LCBtYXg6IE1hdGgubWF4LmFwcGx5KE1hdGgsIHZhbHVlcykgKiAxLjF9LAogICAgICAgICAg
ICAgICAgeGF4aXM6IHttaW46IC0wLjUsIG1heDogdmFsdWVzLmxlbmd0aCAtIDAuNX19KSk7CiAg
ICB9CiAgICBpZiAoIWF0dGFjaGVkUGxvdCkKICAgICAgICBjb250YWluZXIuY2hpbGRyZW4oKS5y
ZW1vdmUoKTsKfQoKZnVuY3Rpb24gYXR0YWNoUGxvdCh0ZXN0LCBwbG90Q29udGFpbmVyLCBtaW5J
c1plcm8pIHsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CgogICAgdmFyIHZhbHVl
cyA9IHJlc3VsdHMucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZXMsIHJlc3VsdCwgaW5kZXgpIHsKICAg
ICAgICB2YXIgbmV3VmFsdWVzID0gcmVzdWx0LnZhbHVlcygpOwogICAgICAgIHJldHVybiBuZXdW
YWx1ZXMgPyB2YWx1ZXMuY29uY2F0KG5ld1ZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJl
dHVybiBbaW5kZXgsIHZhbHVlXTsgfSkpIDogdmFsdWVzOwogICAgfSwgW10pOwoKICAgIHZhciBw
bG90RGF0YSA9IFtdOwogICAgaWYgKHZhbHVlcy5sZW5ndGgpCiAgICAgICAgcGxvdERhdGEgPSBb
JC5leHRlbmQodHJ1ZSwge30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7ZGF0YTogdmFsdWVzfSld
OwogICAgZWxzZSB7CiAgICAgICAgZnVuY3Rpb24gbWFrZVN1YnBvaW50cyhpZCwgY2FsbGJhY2sp
IHsgcmV0dXJuICQuZXh0ZW5kKHRydWUsIHt9LCBzdWJwb2ludHNQbG90T3B0aW9ucywge2lkOiBp
ZCwgZGF0YTogcmVzdWx0cy5tYXAoY2FsbGJhY2spfSk7IH0KICAgICAgICBwbG90RGF0YSA9IFtt
YWtlU3VicG9pbnRzKCdtaW4nLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2lu
ZGV4LCByZXN1bHQubWluKCldOyB9KSwKICAgICAgICBtYWtlU3VicG9pbnRzKCdtYXgnLCBmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQubWF4KCldOyB9KSwK
ICAgICAgICBtYWtlU3VicG9pbnRzKCctJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgp
IHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKSAtIHJlc3VsdC5zdGRldigpXTsgfSksCiAg
ICAgICAgbWFrZVN1YnBvaW50cygnKyYjOTYzOycsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7
IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tZWFuKCkgKyByZXN1bHQuc3RkZXYoKV07IH0pXTsKICAg
IH0KCiAgICBwbG90RGF0YS5wdXNoKHtpZDogJyZtdTsnLCBkYXRhOiByZXN1bHRzLm1hcChmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpXTsgfSks
IGNvbG9yOiBwbG90Q29sb3J9KTsKCiAgICB2YXIgY3VycmVudFBsb3RPcHRpb25zID0gJC5leHRl
bmQodHJ1ZSwge30sIG1haW5QbG90T3B0aW9ucywge3lheGlzOiB7CiAgICAgICAgbWluOiBtaW5J
c1plcm8gPyAwIDogTWF0aC5taW4uYXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJl
c3VsdCwgaW5kZXgpIHsgcmV0dXJuIHJlc3VsdC5taW4oKTsgfSkpICogMC45OCwKICAgICAgICBt
YXg6IE1hdGgubWF4LmFwcGx5KE1hdGgsIHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGlu
ZGV4KSB7IHJldHVybiByZXN1bHQubWF4KCk7IH0pKSAqIChtaW5Jc1plcm8gPyAxLjEgOiAxLjAx
KX19KTsKCiAgICBjdXJyZW50UGxvdE9wdGlvbnMueGF4aXMubWF4ID0gcmVzdWx0cy5sZW5ndGgg
LSAwLjU7CiAgICBjdXJyZW50UGxvdE9wdGlvbnMueGF4aXMudGlja3MgPSByZXN1bHRzLm1hcChm
dW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQucnVuKCkubGFi
ZWwoKV07IH0pOwoKICAgICQucGxvdChwbG90Q29udGFpbmVyLCBwbG90RGF0YSwgY3VycmVudFBs
b3RPcHRpb25zKTsKfQoKZnVuY3Rpb24gdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHZhbHVlKSB7CiAg
ICB2YXIgZGVjaW1hbCA9IHZhbHVlLnRvRml4ZWQoMik7CiAgICByZXR1cm4gZGVjaW1hbDsKfQoK
ZnVuY3Rpb24gZm9ybWF0UGVyY2VudGFnZShmcmFjdGlvbikgewogICAgdmFyIHBlcmNlbnRhZ2Ug
PSBmcmFjdGlvbiAqIDEwMDsKICAgIHJldHVybiAoZnJhY3Rpb24gKiAxMDApLnRvRml4ZWQoMikg
KyAnJSc7Cn0KCmZ1bmN0aW9uIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25vcmVN
ZW1vcnksIHJlZmVyZW5jZUluZGV4KSB7CiAgICAkKCcjY29udGFpbmVyJykuaHRtbCgnPHRoZWFk
Pjx0cj48dGg+VGVzdDwvdGg+PHRoPlVuaXQ8L3RoPicgKyBydW5zLm1hcChmdW5jdGlvbiAocnVu
LCBpbmRleCkgewogICAgICAgIHJldHVybiAnPHRoIGNvbHNwYW49IicgKyAoaW5kZXggPT0gcmVm
ZXJlbmNlSW5kZXggPyAyIDogMykgKyAnIiBjbGFzcz0ie3NvcnRlcjogXCdjb21wYXJpc29uXCd9
Ij4nICsgcnVuLmxhYmVsKCkgKyAnPC90aD4nOwogICAgfSkucmVkdWNlKGZ1bmN0aW9uIChtYXJr
dXAsIGNlbGwpIHsgcmV0dXJuIG1hcmt1cCArIGNlbGw7IH0sICcnKSArICc8L3RyPjwvaGVhZD48
dGJvZHk+PC90Ym9keT4nKTsKCiAgICB2YXIgdGVzdE5hbWVzID0gW107CiAgICBmb3IgKHRlc3RO
YW1lIGluIHRlc3RzKQogICAgICAgIHRlc3ROYW1lcy5wdXNoKHRlc3ROYW1lKTsKCiAgICB0ZXN0
TmFtZXMuc29ydCgpLm1hcChmdW5jdGlvbiAodGVzdE5hbWUpIHsKICAgICAgICB2YXIgdGVzdCA9
IHRlc3RzW3Rlc3ROYW1lXTsKICAgICAgICBpZiAodGVzdC5pc01lbW9yeVRlc3QoKSAhPSBzaG91
bGRJZ25vcmVNZW1vcnkpCiAgICAgICAgICAgIGNyZWF0ZVRhYmxlUm93KHJ1bnMsIHRlc3QsIHJl
ZmVyZW5jZUluZGV4KTsKICAgIH0pOwoKICAgICQoJyNjb250YWluZXInKS50YWJsZXNvcnRlcih7
d2lkZ2V0czogWyd6ZWJyYSddfSk7Cn0KCmZ1bmN0aW9uIGxpbmVhclJlZ3Jlc3Npb24ocG9pbnRz
KSB7CiAgICAvLyBJbXBsZW1lbnQgaHR0cDovL3d3dy5lYXN5Y2FsY3VsYXRpb24uY29tL3N0YXRp
c3RpY3MvbGVhcm4tY29ycmVsYXRpb24ucGhwLgogICAgLy8geCA9IG1hZ25pdHVkZQogICAgLy8g
eSA9IGl0ZXJhdGlvbnMKICAgIHZhciBzdW1YID0gMDsKICAgIHZhciBzdW1ZID0gMDsKICAgIHZh
ciBzdW1YU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWVNxdWFyZWQgPSAwOwogICAgdmFyIHN1bVhU
aW1lc1kgPSAwOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgdmFyIHggPSBpOwogICAgICAgIHZhciB5ID0gcG9pbnRzW2ldOwogICAgICAgIHN1
bVggKz0geDsKICAgICAgICBzdW1ZICs9IHk7CiAgICAgICAgc3VtWFNxdWFyZWQgKz0geCAqIHg7
CiAgICAgICAgc3VtWVNxdWFyZWQgKz0geSAqIHk7CiAgICAgICAgc3VtWFRpbWVzWSArPSB4ICog
eTsKICAgIH0KCiAgICB2YXIgciA9IChwb2ludHMubGVuZ3RoICogc3VtWFRpbWVzWSAtIHN1bVgg
KiBzdW1ZKSAvCiAgICAgICAgTWF0aC5zcXJ0KChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQg
LSBzdW1YICogc3VtWCkgKgogICAgICAgICAgICAgICAgICAocG9pbnRzLmxlbmd0aCAqIHN1bVlT
cXVhcmVkIC0gc3VtWSAqIHN1bVkpKTsKCiAgICBpZiAoaXNOYU4ocikgfHwgciA9PSBNYXRoLklu
ZmluaXR5KQogICAgICAgIHIgPSAwOwoKICAgIHZhciBzbG9wZSA9IChwb2ludHMubGVuZ3RoICog
c3VtWFRpbWVzWSAtIHN1bVggKiBzdW1ZKSAvIChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQg
LSBzdW1YICogc3VtWCk7CiAgICB2YXIgaW50ZXJjZXB0ID0gc3VtWSAvIHBvaW50cy5sZW5ndGgg
LSBzbG9wZSAqIHN1bVggLyBwb2ludHMubGVuZ3RoOwogICAgcmV0dXJuIHtzbG9wZTogc2xvcGUs
IGludGVyY2VwdDogaW50ZXJjZXB0LCByU3F1YXJlZDogciAqIHJ9Owp9Cgp2YXIgd2FybmluZ1Np
Z24gPSAnPHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4OyBoZWln
aHQ6IDE4cHg7IHZlcnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPicKICAgICsg
Jzxwb2x5Z29uIGZpbGw9InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+Jwog
ICAgKyAnPHBvbHlnb24gZmlsbD0id2hpdGUiIHBvaW50cz0iNDcsMzAgNDgsMjksIDUwLCAyOC43
LCA1MiwyOSA1MywzMCA1MCw2MCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ry
b2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAgICArICc8Y2lyY2xlIGN4PSI1MCIgY3k9IjczIiBy
PSI2IiBmaWxsPSJ3aGl0ZSIgLz4nCiAgICArICc8L3N2Zz4nOwoKZnVuY3Rpb24gY3JlYXRlVGFi
bGVSb3cocnVucywgdGVzdCwgcmVmZXJlbmNlSW5kZXgpIHsKICAgIHZhciB0YWJsZVJvdyA9ICQo
Jzx0cj48dGQgY2xhc3M9InRlc3QiPicgKyB0ZXN0Lm5hbWUoKSArICc8L3RkPjx0ZCBjbGFzcz0i
dW5pdCI+JyArIHRlc3QudW5pdCgpICsgJzwvdGQ+PC90cj4nKTsKCiAgICBmdW5jdGlvbiBtYXJr
dXBGb3JSdW4ocmVzdWx0LCByZWZlcmVuY2VSZXN1bHQpIHsKICAgICAgICB2YXIgY29tcGFyaXNv
bkNlbGwgPSAnJzsKICAgICAgICB2YXIgaGlkZGVuVmFsdWUgPSAnJzsKICAgICAgICB2YXIgc2hv
dWxkQ29tcGFyZSA9IHJlc3VsdCAhPT0gcmVmZXJlbmNlUmVzdWx0OwogICAgICAgIGlmIChzaG91
bGRDb21wYXJlICYmIHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgICAgICB2YXIgcGVyY2VudERp
ZmZlcmVuY2UgPSByZWZlcmVuY2VSZXN1bHQucGVyY2VudERpZmZlcmVuY2UocmVzdWx0KTsKICAg
ICAgICAgICAgdmFyIGJldHRlciA9IHRlc3Quc21hbGxlcklzQmV0dGVyKCkgPyBwZXJjZW50RGlm
ZmVyZW5jZSA8IDAgOiBwZXJjZW50RGlmZmVyZW5jZSA+IDA7CiAgICAgICAgICAgIHZhciBjb21w
YXJpc29uID0gJyc7CiAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAnY29tcGFyaXNvbic7CiAg
ICAgICAgICAgIGlmIChyZWZlcmVuY2VSZXN1bHQuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQo
cmVzdWx0KSkgewogICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IGZvcm1hdFBlcmNlbnRhZ2Uo
TWF0aC5hYnMocGVyY2VudERpZmZlcmVuY2UpKSArIChiZXR0ZXIgPyAnIEJldHRlcicgOiAnIFdv
cnNlJm5ic3A7Jyk7CiAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gYmV0dGVyID8gJyBiZXR0
ZXInIDogJyB3b3JzZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGlkZGVuVmFsdWUgPSAn
PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwnICsgY29tcGFyaXNvbiArICc8L3NwYW4+JzsK
ICAgICAgICAgICAgY29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSInICsgY2xhc3NOYW1lICsg
JyI+JyArIGNvbXBhcmlzb24gKyAnPC90ZD4nOwogICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkQ29t
cGFyZSkKICAgICAgICAgICAgY29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSJjb21wYXJpc29u
Ij48L3RkPic7CgogICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAg
dmFyIHdhcm5pbmcgPSAnJzsKICAgICAgICB2YXIgcmVncmVzc2lvbkFuYWx5c2lzID0gJyc7CiAg
ICAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoID4gMykgewogICAgICAgICAgICByZWdy
ZXNzaW9uUmVzdWx0ID0gbGluZWFyUmVncmVzc2lvbih2YWx1ZXMpOwogICAgICAgICAgICByZWdy
ZXNzaW9uQW5hbHlzaXMgPSAnc2xvcGU9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZWdyZXNz
aW9uUmVzdWx0LnNsb3BlKQogICAgICAgICAgICAgICAgKyAnLCBSXjI9JyArIHRvRml4ZWRXaWR0
aFByZWNpc2lvbihyZWdyZXNzaW9uUmVzdWx0LnJTcXVhcmVkKTsKICAgICAgICAgICAgaWYgKHJl
Z3Jlc3Npb25SZXN1bHQuclNxdWFyZWQgPiAwLjYgJiYgTWF0aC5hYnMocmVncmVzc2lvblJlc3Vs
dC5zbG9wZSkgPiAwLjAxKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nID0gJyA8c3BhbiBjbGFz
cz0icmVncmVzc2lvbi13YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kg
d2l0aCAnICsgcmVncmVzc2lvbkFuYWx5c2lzICsgJyI+JyArIHdhcm5pbmdTaWduICsgJyA8L3Nw
YW4+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHN0YXRpc3RpY3MgPSAn
JnNpZ21hOz0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5zdGRldigpKSArICcsIG1p
bj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5taW4oKSkKICAgICAgICAgICAgKyAn
LCBtYXg9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWF4KCkpICsgJ1xuJyArIHJl
Z3Jlc3Npb25BbmFseXNpczsKCiAgICAgICAgLy8gVGFibGVzb3J0ZXIgZG9lc24ndCBrbm93IGFi
b3V0IHRoZSBzZWNvbmQgY2VsbCBzbyBwdXQgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGludmlzaWJs
ZSBlbGVtZW50LgogICAgICAgIHJldHVybiAnPHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSInICsg
c3RhdGlzdGljcyArICciPicgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1lYW4oKSkg
KyBoaWRkZW5WYWx1ZQogICAgICAgICAgICArICc8L3RkPjx0ZCBjbGFzcz0ic3RkZXYiIHRpdGxl
PSInICsgc3RhdGlzdGljcyArICciPiZwbHVzbW47ICcKICAgICAgICAgICAgKyBmb3JtYXRQZXJj
ZW50YWdlKHJlc3VsdC5zdGRldlJhdGlvKCkpICsgd2FybmluZyArICc8L3RkPicgKyBjb21wYXJp
c29uQ2VsbDsKICAgIH0KCiAgICBmdW5jdGlvbiBtYXJrdXBGb3JNaXNzaW5nUnVuKGlzUmVmZXJl
bmNlKSB7CiAgICAgICAgcmV0dXJuICc8dGQgY29sc3Bhbj0iJyArIChpc1JlZmVyZW5jZSA/IDIg
OiAzKSArICciIGNsYXNzPSJtaXNzaW5nIj5NaXNzaW5nPC90ZD4nOwogICAgfQoKICAgIHZhciBy
dW5JbmRleCA9IDA7CiAgICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIHJl
ZmVyZW5jZVJlc3VsdCA9IHVuZGVmaW5lZDsKICAgIHZhciByZXN1bHRJbmRleE1hcCA9IHt9Owog
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgd2hp
bGUgKHJ1bnNbcnVuSW5kZXhdICE9PSByZXN1bHRzW2ldLnJ1bigpKQogICAgICAgICAgICBydW5J
bmRleCsrOwogICAgICAgIGlmIChydW5JbmRleCA9PSByZWZlcmVuY2VJbmRleCkKICAgICAgICAg
ICAgcmVmZXJlbmNlUmVzdWx0ID0gcmVzdWx0c1tpXTsKICAgICAgICByZXN1bHRJbmRleE1hcFty
dW5JbmRleF0gPSBpOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydW5zLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgdmFyIHJlc3VsdEluZGV4ID0gcmVzdWx0SW5kZXhNYXBbaV07CiAgICAg
ICAgaWYgKHJlc3VsdEluZGV4ID09IHVuZGVmaW5lZCkKICAgICAgICAgICAgdGFibGVSb3cuYXBw
ZW5kKG1hcmt1cEZvck1pc3NpbmdSdW4oaSA9PSByZWZlcmVuY2VJbmRleCkpOwogICAgICAgIGVs
c2UKICAgICAgICAgICAgdGFibGVSb3cuYXBwZW5kKG1hcmt1cEZvclJ1bihyZXN1bHRzW3Jlc3Vs
dEluZGV4XSwgcmVmZXJlbmNlUmVzdWx0KSk7CiAgICB9CgogICAgJCgnI2NvbnRhaW5lcicpLmNo
aWxkcmVuKCd0Ym9keScpLmxhc3QoKS5hcHBlbmQodGFibGVSb3cpOwoKICAgIHRhYmxlUm93LmNs
aWNrKGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIGlmIChldmVudC50YXJnZXQgIT0gdGFibGVS
b3dbMF0gJiYgZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUgIT0gdGFibGVSb3dbMF0pCiAgICAgICAg
ICAgIHJldHVybjsKCiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgdmFy
IGZpcnN0Q2VsbCA9IHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmZpcnN0KCk7CiAgICAgICAgaWYg
KGZpcnN0Q2VsbC5jaGlsZHJlbignc2VjdGlvbicpLmxlbmd0aCkgewogICAgICAgICAgICBmaXJz
dENlbGwuY2hpbGRyZW4oJ3NlY3Rpb24nKS5yZW1vdmUoKTsKICAgICAgICAgICAgdGFibGVSb3cu
Y2hpbGRyZW4oJ3RkJykuY3NzKHsncGFkZGluZy1ib3R0b20nOiAnJ30pOwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIHZhciBwbG90ID0gY3JlYXRlUGxvdChmaXJzdENlbGwsIHRlc3QpOwog
ICAgICAgICAgICBwbG90LmNzcyh7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3otaW5kZXgnOiAy
fSk7CiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0YWJsZVJvdy5vZmZzZXQoKTsKICAgICAgICAg
ICAgb2Zmc2V0LmxlZnQgKz0gMTsKICAgICAgICAgICAgb2Zmc2V0LnRvcCArPSB0YWJsZVJvdy5v
dXRlckhlaWdodCgpOwogICAgICAgICAgICBwbG90Lm9mZnNldChvZmZzZXQpOwogICAgICAgICAg
ICB0YWJsZVJvdy5jaGlsZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6IHBsb3Qub3V0
ZXJIZWlnaHQoKSArIDV9KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0p
Owp9CgpmdW5jdGlvbiBpbml0KCkgewogICAgJC50YWJsZXNvcnRlci5hZGRQYXJzZXIoewogICAg
ICAgIGlkOiAnY29tcGFyaXNvbicsCiAgICAgICAgaXM6IGZ1bmN0aW9uKHMpIHsKICAgICAgICAg
ICAgcmV0dXJuIHMuaW5kZXhPZignfCcpID49IDA7CiAgICAgICAgfSwKICAgICAgICBmb3JtYXQ6
IGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlRmxvYXQocy5zdWJz
dHJpbmcocy5pbmRleE9mKCd8JykgKyAxKSk7CiAgICAgICAgICAgIHJldHVybiBpc05hTihwYXJz
ZWQpID8gMCA6IHBhcnNlZDsKICAgICAgICB9LAogICAgICAgIHR5cGU6ICdudW1lcmljJywKICAg
IH0pOwoKICAgIHZhciBydW5zID0gW107CiAgICB2YXIgdGVzdHMgPSB7fTsKICAgICQuZWFjaChK
U09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdqc29uJykudGV4dENvbnRlbnQpLCBm
dW5jdGlvbiAoaW5kZXgsIGVudHJ5KSB7CiAgICAgICAgdmFyIHJ1biA9IG5ldyBUZXN0UnVuKGVu
dHJ5KTsKICAgICAgICBydW5zLnB1c2gocnVuKTsKICAgICAgICAkLmVhY2goZW50cnkucmVzdWx0
cywgZnVuY3Rpb24gKHRlc3QsIHJlc3VsdCkgewogICAgICAgICAgICBpZiAoIXRlc3RzW3Rlc3Rd
KQogICAgICAgICAgICAgICAgdGVzdHNbdGVzdF0gPSBuZXcgUGVyZlRlc3QodGVzdCk7CiAgICAg
ICAgICAgIHRlc3RzW3Rlc3RdLmFkZFJlc3VsdChuZXcgVGVzdFJlc3VsdCh0ZXN0c1t0ZXN0XSwg
cmVzdWx0LCBydW4pKTsKICAgICAgICB9KTsKICAgIH0pOwoKICAgIHZhciBzaG91bGRJZ25vcmVN
ZW1vcnk9IHRydWU7CiAgICB2YXIgcmVmZXJlbmNlSW5kZXggPSAwOwogICAgY3JlYXRlVGFibGUo
dGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwoKICAgICQo
JyN0aW1lLW1lbW9yeScpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChldmVudCwgY2hlY2tlZEVs
ZW1lbnQpIHsKICAgICAgICBzaG91bGRJZ25vcmVNZW1vcnkgPSBjaGVja2VkRWxlbWVudC50ZXh0
Q29udGVudCA9PSAnVGltZSc7CiAgICAgICAgY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3Vs
ZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwogICAgfSk7CgogICAgcnVucy5tYXAoZnVu
Y3Rpb24gKHJ1biwgaW5kZXgpIHsKICAgICAgICAkKCcjcmVmZXJlbmNlJykuYXBwZW5kKCc8c3Bh
biB2YWx1ZT0iJyArIGluZGV4ICsgJyInICsgKGluZGV4ID09IHJlZmVyZW5jZUluZGV4ID8gJyBj
bGFzcz0iY2hlY2tlZCInIDogJycpICsgJz4nICsgcnVuLmxhYmVsKCkgKyAnPC9zcGFuPicpOwog
ICAgfSkKCiAgICAkKCcjcmVmZXJlbmNlJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50
LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHJlZmVyZW5jZUluZGV4ID0gcGFyc2VJbnQoY2hl
Y2tlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKTsKICAgICAgICBjcmVhdGVUYWJsZSh0
ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsK
CiAgICAkKCcuY2hlY2tib3gnKS5lYWNoKGZ1bmN0aW9uIChpbmRleCwgY2hlY2tib3gpIHsKICAg
ICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLmNsaWNrKGZ1bmN0aW9uIChldmVudCkg
ewogICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnY2hlY2tlZCcpKQogICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLnJl
bW92ZUNsYXNzKCdjaGVja2VkJyk7CiAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2NoZWNr
ZWQnKTsKICAgICAgICAgICAgJChjaGVja2JveCkudHJpZ2dlcignY2hhbmdlJywgJCh0aGlzKSk7
CiAgICAgICAgfSk7CiAgICB9KTsKfQoKPC9zY3JpcHQ+CjxzY3JpcHQgaWQ9Impzb24iIHR5cGU9
ImFwcGxpY2F0aW9uL2pzb24iPlt7InRpbWVzdGFtcCI6IDEzNTUxMTIyNDgsICJyZXN1bHRzIjog
eyJEcm9tYWVvL2RvbS1tb2RpZnkiOiB7Im1pbiI6IDcwLjUwNjQ1NDgxNjI4NiwgIm1heCI6IDcy
LjQ5MjU1MjEzNTA1NDYyLCAibWVkaWFuIjogNzAuOTI5MDcwOTI5MDcwOTMsICJ2YWx1ZXMiOiBb
NzAuNTA2NDU0ODE2Mjg2LCA3MC43ODc2MzcwODg3MzM4LCA3MC45MjkwNzA5MjkwNzA5MywgNzEu
ODU2Mjg3NDI1MTQ5NywgNzIuNDkyNTUyMTM1MDU0NjJdLCAic3RkZXYiOiAwLjgzMDcyNTIxMjE0
MDQ3MjcsICJhdmciOiA3MS4zMTQ0MDA0Nzg4NTkwMSwgInVuaXQiOiAicnVucy9zIn19LCAiYnJh
bmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3MTAyIn0sIHsidGlt
ZXN0YW1wIjogMTM1NTExMjI2MiwgInJlc3VsdHMiOiB7IkRyb21hZW8vZG9tLW1vZGlmeSI6IHsi
bWluIjogNzEuMzU3Nzc5OTgwMTc4MzksICJtYXgiOiA3My4wLCAibWVkaWFuIjogNzEuNzg0NjQ2
MDYxODE0NTYsICJ2YWx1ZXMiOiBbNzEuMzU3Nzc5OTgwMTc4MzksIDcxLjcxMzE0NzQxMDM1ODU2
LCA3MS43ODQ2NDYwNjE4MTQ1NiwgNzIuNDIwNjM0OTIwNjM0OTIsIDczLjBdLCAic3RkZXYiOiAw
LjY1MjQ1Mzc5MjI1ODgxMzQsICJhdmciOiA3Mi4wNTUyNDE2NzQ1OTcyOCwgInVuaXQiOiAicnVu
cy9zIn19LCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3
MTAyIn0sIHsidGltZXN0YW1wIjogMTM1NTExMjI3OCwgInJlc3VsdHMiOiB7IkRyb21hZW8vZG9t
LW1vZGlmeSI6IHsibWluIjogNzEuMCwgIm1heCI6IDcyLjYzNjgxNTkyMDM5OCwgIm1lZGlhbiI6
IDcxLjY0MTc5MTA0NDc3NjExLCAidmFsdWVzIjogWzcxLjAsIDcxLjM1Nzc3OTk4MDE3ODM5LCA3
MS42NDE3OTEwNDQ3NzYxMSwgNzIuMTM0Mzg3MzUxNzc4NjYsIDcyLjYzNjgxNTkyMDM5OF0sICJz
dGRldiI6IDAuNjQ0NjIzMDUyNzQ3NDk2NiwgImF2ZyI6IDcxLjc1NDE1NDg1OTQyNjI0LCAidW5p
dCI6ICJydW5zL3MifX0sICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndlYmtpdC1yZXZpc2lv
biI6ICIxMzcxMDIifSwgeyJ0aW1lc3RhbXAiOiAxMzU1MTEyMzA5LCAicmVzdWx0cyI6IHsiRHJv
bWFlby9kb20tbW9kaWZ5IjogeyJtaW4iOiA2Ni42MDAzOTc2MTQzMTQxMiwgIm1heCI6IDY5LjY1
MTc0MTI5MzUzMjM0LCAibWVkaWFuIjogNjYuNzMzMDY3NzI5MDgzNjcsICJ2YWx1ZXMiOiBbNjYu
NjAwMzk3NjE0MzE0MTIsIDY2LjY2NjY2NjY2NjY2NjY3LCA2Ni43MzMwNjc3MjkwODM2NywgNjku
MzA2OTMwNjkzMDY5MywgNjkuNjUxNzQxMjkzNTMyMzRdLCAic3RkZXYiOiAxLjU0NjA2NjA4MTEx
MTk0NzgsICJhdmciOiA2Ny43OTE3NjA3OTkzMzMyMiwgInVuaXQiOiAicnVucy9zIn19LCAiYnJh
bmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3MTAyIn0sIHsidGlt
ZXN0YW1wIjogMTM1NTExMjMyOSwgInJlc3VsdHMiOiB7IkRyb21hZW8vZG9tLW1vZGlmeSI6IHsi
bWluIjogNjUuODY4MjYzNDczMDUzODksICJtYXgiOiA2OC4zODQ1MzkxNDc2NzA5NiwgIm1lZGlh
biI6IDY2LjczMzA2NzcyOTA4MzY3LCAidmFsdWVzIjogWzY1Ljg2ODI2MzQ3MzA1Mzg5LCA2Ni4w
LCA2Ni43MzMwNjc3MjkwODM2NywgNjcuNTk0NDMzMzk5NjAyMzgsIDY4LjM4NDUzOTE0NzY3MDk2
XSwgInN0ZGV2IjogMS4wNzA4ODE3NzgzODY5OTI4LCAiYXZnIjogNjYuOTE2MDYwNzQ5ODgyMTgs
ICJ1bml0IjogInJ1bnMvcyJ9fSwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAid2Via2l0LXJl
dmlzaW9uIjogIjEzNzEwMiJ9LCB7InRpbWVzdGFtcCI6IDEzNTUxMTIzNTIsICJyZXN1bHRzIjog
eyJEcm9tYWVvL2RvbS1tb2RpZnkiOiB7Im1pbiI6IDY1LjkzNDA2NTkzNDA2NTkzLCAibWF4Ijog
NjkuMDMzNTMwNTcxOTkyMTIsICJtZWRpYW4iOiA2Ny42NjE2OTE1NDIyODg1NSwgInZhbHVlcyI6
IFs2NS45MzQwNjU5MzQwNjU5MywgNjYuMzM2NjMzNjYzMzY2MzQsIDY3LjY2MTY5MTU0MjI4ODU1
LCA2Ny44NjQyNzE0NTcwODU4MywgNjkuMDMzNTMwNTcxOTkyMTJdLCAic3RkZXYiOiAxLjI0NzYz
NzQwMzA5MTM0MTcsICJhdmciOiA2Ny4zNjYwMzg2MzM3NTk3NiwgInVuaXQiOiAicnVucy9zIn19
LCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3MTAyIn1d
PC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178476</attachid>
            <date>2012-12-09 22:33:20 -0800</date>
            <delta_ts>2012-12-12 01:40:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104332-20121210153041.patch</filename>
            <type>text/plain</type>
            <size>18208</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYyMjMyYzJhYTAyYWU1
N2YzNDBhNzNjYzhkZjI0ZTAzZjZhYWY2MS4uNzYwZTBjZjNkZjg1ZmIxODhjMGRiNzgwZDMwYTA2
MTY2OGE5MDUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTEyLTA5ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBOb2RlUmVuZGVyaW5n
Q29udGV4dCBpcyBzbG93IGR1ZSB0byBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDMzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlciBjYXVzZXMgc2xvd25lc3Mgb2YgTm9kZVJlbmRlcmluZ0NvbnRleHQKKyAgICAgICAg
ZHVlIHRvIHRoZSBjb21wbGV4aXR5IG9mIGl0cyB0cmF2ZXJzYWwgYWxnb3JpdGhtLiBUaGlzIGNo
YW5nZSBhZGRzCisgICAgICAgIHNvbWUgZmFzdCBwYXRocyBmb3IgdGhlIHRyYXZlcnNhbCB3aGlj
aCBhcmUgdXNlZCBpbiBOb2RlUmVuZGVyaW5nQ29udGV4dC4KKworICAgICAgICBUaGUgZmFzdCBw
YXRoIGlzIGltcGxlbWVudGVkIGJ5IGludHJvZHVjaW5nICJzaGFkb3cgdHJlZSBqb2ludCIKKyAg
ICAgICAgY29uY2VwdC4gQSBTaGFkb3cgVHJlZSBKb2ludCBpcyBhIERPTSBub2RlIHdoZXJlIENT
VFcgbmVlZHMKKyAgICAgICAgc3BlY2lhbCB0cmF2ZXJzYWwgYWxnb3JpdGhtLiBGb3Igbm9uLWpv
aW50IG5vZGVzLCB3aGljaCBhcmUKKyAgICAgICAgbWFqb3JpdHksIENTVFcgdHJhdmVyc2FsIGFu
ZCBwbGFpbiBET00gdHJhdmVyc2FsIGFyZSBpZGVudGljYWwuCisKKyAgICAgICAgU2hhZG93IFRy
ZWUgSm9pbnQgaXMgZGVmaW5lZCBieSB0aGUgbm9kZSdzIGVsZW1lbnQgdHlwZSBvciBpdHMKKyAg
ICAgICAgcGFyZW50J3MgdHlwZS4gSGVyZSBpcyB0aGUgZGVmaW5pdGlvbjoKKworICAgICAgICBB
IG5vZGUgaXMgYSBzaGFkb3cgdHJlZSBqb2ludCBpZi4uLgorICAgICAgICAtIFRoZSBub2RlIGlz
IGFuIEluc2VydGlvblBvaW50IG9yIGEgU2hhZG93Um9vdCwKKyAgICAgICAgLSBUaGUgbm9kZSBp
cyBhIGNoaWxkIG9mIGFuIEluc2VydGlvblBvaW50IG9yIGEgY2hpbGQgb2YgYSBTaGFkb3dSb290
IG9yCisgICAgICAgIC0gVGhlIG5vZGUgaXMgYSBjaGlsZCBvZiBzaGFkb3cgaG9zdC4KKworICAg
ICAgICBOb2RlcyBhcmUgZmxhZ2dlZCBhcyBqb2ludCBiYXNlZCBvbiB0aGVzZSBjcml0ZXJpYSwg
YW5kIENTV1QgdGFrZXMgYQorICAgICAgICBmYXN0IHBhdGggdW5sZXNzIHRoZSB2aXNpdGluZyBu
b2RlIGlzIGZsYWdnZWQuCisKKyAgICAgICAgVGhlIG9yaWdpbmFsIGlkZWEgb2YgdGhpcyBjaGFu
Z2Ugd2FzIGRlbW9uc3RyYXRlZCBieSBBbnR0aSBLb2l2aXN0byBvbiBidWcgMTAzMjA4LgorICAg
ICAgICBUaGlzIGNoYWduZSBoYXMgMy00JSBzcGVlZHVwIG9uIERyb21hZW8vZG9tLW1vZGlmeS9p
bm5lckhUTUwuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZpbmRQYXJlbnRTbG93KTog
UmVuYW1lZCBmcm9tIGZpbmRQYXJlbnQoKS4gVGhpcyBpcyBhIG5vbi1mYXN0IHBhdGguCisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dFNpYmxp
bmdTbG93KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nU2xvdyk6IERpdHRvLgorICAgICAgICAqIGRvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWlsczo6c2V0Tm9kZSk6IEFkZGVkLgor
ICAgICAgICAoUGFyZW50VHJhdmVyc2FsRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6Om9wZXJhdG9yPT0p
OiBBZGRlZC4KKyAgICAgICAgKENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZpbmRQYXJlbnQpOiBJbmxpbmVkIHdp
dGggYSBmYXN0IHBhdGguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3Vz
U2libGluZyk6IERpdHRvLgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkpOiBN
YWluZ2FpbnMgc2hhZG93IHRyZWUgam9pbnQgZmxhZy4KKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBNYWluZ2Fp
bnMgc2hhZG93IHRyZWUgam9pbnQgZmxhZy4KKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KTogTWFp
bmdhaW5zIHNoYWRvdyB0cmVlIGpvaW50IGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
U2hhZG93OjpkaWRKb2ludENoYW5nZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogZG9tL0VsZW1lbnRTaGFkb3cuaDoKKyAgICAgICAgKEVsZW1lbnRTaGFkb3cpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc1NoYWRvd1RyZWVK
b2ludE5vZGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzU2hhZG93VHJlZUpv
aW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTaGFkb3dUcmVlSm9pbnQp
OiBBZGRlZC4KKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJl
bmRlcmVyKTogTW9kaWZpZWQgdG8gdXNlIGEgbG9jYWwgTm9kZSogdmFyaWFibGUgdG8gbWFrZSB0
aGUgY29kZSBjb21waWxlciBmcmllbmRseS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKTogRGl0dG8uCisgICAgICAgICogZG9tL1NoYWRv
d1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2Vk
KTogTWFpbmdhaW5zIHNoYWRvdyB0cmVlIGpvaW50IGZsYWcuCisgICAgICAgICogaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6IE1haW5nYWlucyBzaGFkb3cgdHJlZSBqb2ludCBmbGFnLgorCiAy
MDEyLTEyLTA5ICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBhY2Nlc3NpYmlsaXR5L3BsYWNlaG9sZGVyLmh0bWwgaXMgZmFpbGluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBhOWJl
OTUzNzY5MmU1ZmRlMDUzMGJjMDYwMTc2ZmY1MzBhOTNmMWY3Li5hYjIzYmVlY2FiOTYxZDJiZTc4
NTY2ZDNmMzViNjMxMDRlNTBmYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtOTMsNyArOTMsNyBAQCBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGlsZChjb25zdCBO
b2RlKiBubwogICAgIHJldHVybiB3YWxrZXI7CiB9CiAKLXZvaWQgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyOjpmaW5kUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNhbERldGFp
bHMqIGRldGFpbHMpCit2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZmluZFBhcmVudFNs
b3coY29uc3QgTm9kZSogbm9kZSwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogZGV0YWlscykKIHsK
ICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUsIENyb3NzVXBwZXJCb3Vu
ZGFyeSwgQ2FuU3RhcnRGcm9tU2hhZG93Qm91bmRhcnkpOwogICAgIENvbnRhaW5lck5vZGUqIGZv
dW5kID0gdG9Db250YWluZXJOb2RlKHdhbGtlci50cmF2ZXJzZVBhcmVudCh3YWxrZXIuZ2V0KCks
IGRldGFpbHMpKTsKQEAgLTMwMiwxMyArMzAyLDEzIEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25z
CiAgICAgcmV0dXJuIDA7CiB9CiAKLU5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJh
dmVyc2VOZXh0U2libGluZyhjb25zdCBOb2RlKiBub2RlKQorTm9kZSogQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjp0cmF2ZXJzZU5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogewog
ICAgIEFTU0VSVChub2RlKTsKICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNl
cnRpb25Qb2ludChub2RlLCBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKIH0KIAotTm9kZSog
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzU2libGluZyhjb25zdCBO
b2RlKiBub2RlKQorTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZp
b3VzU2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7CiAg
ICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJh
dmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlci5oCmluZGV4IDg5NzY5YjE3MjM0MmRkNGExOGM1OTdlNWM2YWUyNGQx
ZTgwZDJkYzEuLjdkMTAyZTVkMjE3MmRlNmM4ZjhhMDJiN2Q2ODFlYmIwNjllNWZmY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTY3LDYg
KzY3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50
KEluc2VydGlvblBvaW50Kik7CiAgICAgICAgIHZvaWQgZGlkVHJhdmVyc2VTaGFkb3dSb290KGNv
bnN0IFNoYWRvd1Jvb3QqKTsKICAgICAgICAgdm9pZCBjaGlsZFdhc091dE9mQ29tcG9zaXRpb24o
KSB7IG1fb3V0T2ZDb21wb3NpdGlvbiA9IHRydWU7IH0KKyAgICAgICAgdm9pZCBzZXROb2RlKENv
bnRhaW5lck5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQorCisgICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzJiBvdGhlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIChtX25vZGUgPT0gb3RoZXIubV9ub2RlICYmIG1faW5zZXJ0aW9u
UG9pbnQgPT0gb3RoZXIubV9pbnNlcnRpb25Qb2ludAorICAgICAgICAgICAgICAgICYmIG1fcmVz
ZXRTdHlsZUluaGVyaXRhbmNlID09IG90aGVyLm1fcmVzZXRTdHlsZUluaGVyaXRhbmNlCisgICAg
ICAgICAgICAgICAgJiYgbV9vdXRPZkNvbXBvc2l0aW9uID09IG90aGVyLm1fb3V0T2ZDb21wb3Np
dGlvbik7CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIENvbnRhaW5lck5vZGUq
IG1fbm9kZTsKQEAgLTgxLDYgKzg5LDggQEAgcHVibGljOgogICAgIC8vIGZvciAoQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZnJvbUZp
cnN0Q2hpbGQobm9kZSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLm5leHRTaWJsaW5nKCkpCiAgICAg
c3RhdGljIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBmcm9tRmlyc3RDaGlsZChjb25zdCBOb2Rl
KiwgUG9saWN5ID0gQ3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICBzdGF0aWMgdm9pZCBmaW5kUGFy
ZW50KGNvbnN0IE5vZGUqLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKik7CisgICAgc3RhdGljIE5v
ZGUqIHRyYXZlcnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0
cmF2ZXJzZVByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7CiAKICAgICBOb2RlKiBnZXQoKSBj
b25zdCB7IHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihtX25vZGUpOyB9CiAKQEAgLTEyNSw2ICsx
MzUsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgZmluZFBh
cmVudFNsb3coY29uc3QgTm9kZSosIFBhcmVudFRyYXZlcnNhbERldGFpbHMqKTsKICAgICBzdGF0
aWMgTm9kZSogdHJhdmVyc2VOb2RlKGNvbnN0IE5vZGUqLCBUcmF2ZXJzYWxEaXJlY3Rpb24pOwog
ICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZUxpZ2h0Q2hpbGRyZW4oY29uc3QgTm9kZSosIFRyYXZl
cnNhbERpcmVjdGlvbik7CiAKQEAgLTEzMyw4ICsxNDQsOCBAQCBwcml2YXRlOgogICAgIE5vZGUq
IHRyYXZlcnNlQ2hpbGQoY29uc3QgTm9kZSosIFRyYXZlcnNhbERpcmVjdGlvbikgY29uc3Q7CiAg
ICAgTm9kZSogdHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudFRyYXZlcnNhbERldGFp
bHMqID0gMCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0U2libGluZyhj
b25zdCBOb2RlKik7Ci0gICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKGNv
bnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0U2libGluZ1Nsb3coY29u
c3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzU2libGluZ1Nsb3co
Y29uc3QgTm9kZSopOwogCiAgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlU2libGluZ09yQmFja1Rv
SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSosIFRyYXZlcnNhbERpcmVjdGlvbik7CiAgICAgc3Rh
dGljIE5vZGUqIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUoY29uc3QgTm9kZSosIFRyYXZl
cnNhbERpcmVjdGlvbik7CkBAIC0xNjQsNiArMTc1LDQxIEBAIGlubGluZSBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihjb25zdCBOb2RlKiBub2RlLCBQ
b2xpCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpm
aW5kUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNhbERldGFpbHMqIGRldGFp
bHMpCit7CisgICAgaWYgKCFub2RlLT5pc1NoYWRvd1RyZWVKb2ludCgpKSB7CisgICAgICAgIGRl
dGFpbHMtPnNldE5vZGUobm9kZS0+cGFyZW50Tm9kZSgpKTsKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICAgIFBhcmVudFRyYXZlcnNhbERldGFpbHMgc2xvd1Jlc3VsdDsKKyAgICAgICAgZmluZFBhcmVu
dFNsb3cobm9kZSwgJnNsb3dSZXN1bHQpOworICAgICAgICBBU1NFUlQoc2xvd1Jlc3VsdCA9PSAq
ZGV0YWlscyk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZpbmRQYXJl
bnRTbG93KG5vZGUsIGRldGFpbHMpOworfQorCitpbmxpbmUgTm9kZSogQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjp0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
aWYgKCFub2RlLT5pc1NoYWRvd1RyZWVKb2ludCgpKSB7CisgICAgICAgIEFTU0VSVCh0cmF2ZXJz
ZU5leHRTaWJsaW5nU2xvdyhub2RlKSA9PSBub2RlLT5uZXh0U2libGluZygpKTsKKyAgICAgICAg
cmV0dXJuIG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIHRyYXZlcnNl
TmV4dFNpYmxpbmdTbG93KG5vZGUpOworfQorCitpbmxpbmUgTm9kZSogQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKiBub2RlKQorewor
ICAgIGlmICghbm9kZS0+aXNTaGFkb3dUcmVlSm9pbnQoKSkgeworICAgICAgICBBU1NFUlQodHJh
dmVyc2VQcmV2aW91c1NpYmxpbmdTbG93KG5vZGUpID09IG5vZGUtPnByZXZpb3VzU2libGluZygp
KTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPnByZXZpb3VzU2libGluZygpOworICAgIH0KKworICAg
IHJldHVybiB0cmF2ZXJzZVByZXZpb3VzU2libGluZ1Nsb3cobm9kZSk7Cit9CisKIGNsYXNzIEFu
Y2VzdG9yQ2hhaW5XYWxrZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEFuY2VzdG9yQ2hhaW5X
YWxrZXIoY29uc3QgTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaAppbmRleCAyMTlhNWQ0OTYwY2JiMmUzMzRmM2ZkMWRkZjhhOTk5Y2EwOTk3NTJi
Li5kMmVlNmRjMGYzNzQ0Nzc4YzI1Y2YwZTEyYmVmMjFhNzRiMTNjNmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMjU2LDExICsyNTYsMTYg
QEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3Zl
ZEZyb21UcmVlKENvbnRhaW5lck5vZGUqIG4KIAogaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3Zh
bE5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+aW5Eb2N1bWVu
dCgpKSB7CisgICAgYm9vbCBpbkRvY3VtZW50ID0gbm9kZS0+aW5Eb2N1bWVudCgpOworICAgIGJv
b2wgaXNTaGFkb3dUcmVlSm9pbnQgPSBub2RlLT5pc1NoYWRvd1RyZWVKb2ludCgpOworICAgIGJv
b2wgaXNDb250YWluZXJOb2RlID0gbm9kZS0+aXNDb250YWluZXJOb2RlKCk7CisgICAgaWYgKGlu
RG9jdW1lbnQpIHsKICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQobm9kZSk7
CiAgICAgICAgIG5vZGUtPmRvY3VtZW50KCktPm5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVl
ZGVkKCk7Ci0gICAgfSBlbHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKKyAgICB9IGVs
c2UgaWYgKGlzQ29udGFpbmVyTm9kZSkKICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJl
ZSh0b0NvbnRhaW5lck5vZGUobm9kZSkpOworICAgIGlmIChpc1NoYWRvd1RyZWVKb2ludCkKKyAg
ICAgICAgbm9kZS0+c2V0U2hhZG93VHJlZUpvaW50KG5vZGUtPmlzU2hhZG93VHJlZUpvaW50Tm9k
ZSgpKTsKIH0KIAogY2xhc3MgQ2hpbGRGcmFtZURpc2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggNjI3ZTk4MTNiZmQ3ZjkyOTg5ZjcxYTM4MTNmNGEyMTUzMjMzM2YzMi4uOWQz
N2NjMDZkOTA1NzZhYmIyYTQ3NjIxMjAzZTgwZTUzODlkYTQyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtMTUyNSw3ICsxNTI1LDcgQEAgdm9pZCBFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWYKICAgICAg
ICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKHRoaXMsIHJlbmRlclN0eWxlKCksIGZhbHNl
LCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogCiAgICAgaWYg
KEVsZW1lbnRTaGFkb3cgKiBzaGFkb3cgPSB0aGlzLT5zaGFkb3coKSkKLSAgICAgICAgc2hhZG93
LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgIHNoYWRvdy0+ZGlkSm9pbnRDaGFu
Z2UoKTsKIH0KIAogdm9pZCBFbGVtZW50OjpiZWdpblBhcnNpbmdDaGlsZHJlbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggYzlmMTk4MjliMGY5NWI1ZjE2ZTFkYzhiNmVi
Y2UxNTczMmRhMThmMS4uNzVmYjMwNTE2ZTc0Y2JkZGE1ZjE0NjE4ZGZjNTY4YmJjMzZhYzA2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtODMsOCArODMsOCBAQCB2b2lk
IEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1Jl
ZlB0cjxTaGFkb3dSb290PiBzaAogICAgIHNoYWRvd1Jvb3QtPnNldFBhcmVudFRyZWVTY29wZShz
aGFkb3dIb3N0LT50cmVlU2NvcGUoKSk7CiAgICAgbV9zaGFkb3dSb290cy5wdXNoKHNoYWRvd1Jv
b3QuZ2V0KCkpOwogICAgIHNldFZhbGlkaXR5VW5kZXRlcm1pbmVkKCk7Ci0gICAgaW52YWxpZGF0
ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cihzaGFkb3dIb3N0KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQoKSk7CisgICAgZGlkSm9pbnRDaGFu
Z2UoKTsKIAogICAgIC8vIEZJWE1FKDk0OTA1KTogU2hhZG93SG9zdCBzaG91bGQgYmUgcmVhdHRh
Y2hlZCBkdXJpbmcgcmVjYWxjU3R5bGUuCiAgICAgLy8gU2V0IHNvbWUgZmxhZyBoZXJlIGFuZCBy
ZWNyZWF0ZSBzaGFkb3cgaG9zdHMnIHJlbmRlcmVyIGluCkBAIC0xOTMsNiArMTkzLDEzIEBAIHZv
aWQgRWxlbWVudFNoYWRvdzo6aW52YWxpZGF0ZURpc3RyaWJ1dGlvbihFbGVtZW50KiBob3N0KQog
ICAgICAgICBtX2Rpc3RyaWJ1dG9yLmZpbmlzaEluaXZhbGlkYXRpb24oKTsKIH0KIAordm9pZCBF
bGVtZW50U2hhZG93OjpkaWRKb2ludENoYW5nZSgpCit7CisgICAgaW52YWxpZGF0ZURpc3RyaWJ1
dGlvbigpOworICAgIGZvciAoTm9kZSogbm9kZSA9IGhvc3QoKS0+Zmlyc3RDaGlsZCgpOyBub2Rl
OyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbm9kZS0+c2V0U2hhZG93VHJl
ZUpvaW50KHRydWUpOworfQorCiB2b2lkIEVsZW1lbnRTaGFkb3c6OnNldFNob3VsZENvbGxlY3RT
ZWxlY3RGZWF0dXJlU2V0KCkKIHsKICAgICBpZiAoc2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVT
ZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmluZGV4IGY1MjE5NTE0ZTRkZWY5MmU1
ZDU0YTk2NjBiODczMDRjYmJlODFiOTguLjlmM2UzMzViNjcwYTUyOWNkNWM3NjgyMDliMmQ4Zjgx
MGQ3MGQ2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaApAQCAtNjYsNiArNjYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWYWxpZGl0eVVuZGV0ZXJtaW5lZCgpOwogICAgIHZvaWQg
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogICAgIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9uKCk7
CisgICAgdm9pZCBkaWRKb2ludENoYW5nZSgpOwogCiAgICAgQ29udGVudERpc3RyaWJ1dG9yJiBk
aXN0cmlidXRvcigpOwogICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3Io
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGM5NTFjNzIzODc5MTdiZTIwMjM5MjhlNmVjZDQyZGFh
MDkyZGYwM2YuLmVhYTI5Y2Q1MGU0NjYyMTNmZTRiYWY1ZDZhNGJhNDhlZmFjMTY1NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtMjU0LDYgKzI1NCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RvY3VtZW50
RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzRG9jdW1lbnRGcmFnbWVudEZsYWcp
OyB9CiAgICAgYm9vbCBpc1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBpc0RvY3VtZW50RnJh
Z21lbnQoKSAmJiBkb2N1bWVudEZyYWdtZW50SXNTaGFkb3dSb290KCk7IH0KICAgICBib29sIGlz
SW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzSW5zZXJ0aW9uUG9pbnRG
bGFnKTsgfQorICAgIGJvb2wgaXNTaGFkb3dUcmVlSm9pbnROb2RlKCkgY29uc3QgeyByZXR1cm4g
aXNJbnNlcnRpb25Qb2ludCgpIHx8IGlzU2hhZG93Um9vdCgpOyB9CisgICAgYm9vbCBpc1NoYWRv
d1RyZWVKb2ludCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dUcmVlSm9pbnRGbGFn
KTsgfQorICAgIHZvaWQgc2V0U2hhZG93VHJlZUpvaW50KGJvb2wgZmxhZykgeyBzZXRGbGFnKGZs
YWcsIElzU2hhZG93VHJlZUpvaW50RmxhZyk7IH0KKwogICAgIGJvb2wgaW5OYW1lZEZsb3coKSBj
b25zdCB7IHJldHVybiBnZXRGbGFnKEluTmFtZWRGbG93RmxhZyk7IH0KICAgICBib29sIGhhc0N1
c3RvbUNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzQ3VzdG9tQ2FsbGJhY2tz
RmxhZyk7IH0KIApAQCAtNzMyLDExICs3MzYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzRXZl
bnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMjUsCiAgICAgICAgIFY4Q29sbGVjdGFibGVEdXJpbmdN
aW5vckdDRmxhZyA9IDEgPDwgMjYsCiAgICAgICAgIElzSW5zZXJ0aW9uUG9pbnRGbGFnID0gMSA8
PCAyNywKLQorICAgICAgICBJc1NoYWRvd1RyZWVKb2ludEZsYWcgPSAxIDw8IDI4LAogICAgICAg
ICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcKICAgICB9
OwogCi0gICAgLy8gNCBiaXRzIHJlbWFpbmluZworICAgIC8vIDMgYml0cyByZW1haW5pbmcKIAog
ICAgIGJvb2wgZ2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9ub2RlRmxh
Z3MgJiBtYXNrOyB9CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wgZiwgTm9kZUZsYWdzIG1hc2spIGNv
bnN0IHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+bWFzaykgfCAoLShpbnQzMl90KWYg
JiBtYXNrKTsgfSAKQEAgLTc1MCwxNCArNzU0LDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3Jl
YXRlQ29udGFpbmVyID0gRGVmYXVsdE5vZGVGbGFncyB8IElzQ29udGFpbmVyRmxhZywgCiAgICAg
ICAgIENyZWF0ZUVsZW1lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJc0VsZW1lbnRGbGFnLCAKICAg
ICAgICAgQ3JlYXRlUHNldWRvRWxlbWVudCA9ICBDcmVhdGVFbGVtZW50IHwgSW5Eb2N1bWVudEZs
YWcsCi0gICAgICAgIENyZWF0ZVNoYWRvd1Jvb3QgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3Vt
ZW50RnJhZ21lbnRGbGFnLAorICAgICAgICBDcmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFp
bmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZyB8IElzU2hhZG93VHJlZUpvaW50RmxhZywKICAg
ICAgICAgQ3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1l
bnRGcmFnbWVudEZsYWcsCiAgICAgICAgIENyZWF0ZVN0eWxlZEVsZW1lbnQgPSBDcmVhdGVFbGVt
ZW50IHwgSXNTdHlsZWRFbGVtZW50RmxhZywgCiAgICAgICAgIENyZWF0ZUhUTUxFbGVtZW50ID0g
Q3JlYXRlU3R5bGVkRWxlbWVudCB8IElzSFRNTEZsYWcsIAogICAgICAgICBDcmVhdGVGcmFtZU93
bmVyRWxlbWVudCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZywK
ICAgICAgICAgQ3JlYXRlU1ZHRWxlbWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc1NWR0Zs
YWcsCiAgICAgICAgIENyZWF0ZURvY3VtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSW5Eb2N1bWVu
dEZsYWcsCi0gICAgICAgIENyZWF0ZUluc2VydGlvblBvaW50ID0gQ3JlYXRlSFRNTEVsZW1lbnQg
fCBJc0luc2VydGlvblBvaW50RmxhZywKKyAgICAgICAgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQgPSBD
cmVhdGVIVE1MRWxlbWVudCB8IElzSW5zZXJ0aW9uUG9pbnRGbGFnIHwgSXNTaGFkb3dUcmVlSm9p
bnRGbGFnLAogICAgICAgICBDcmVhdGVFZGl0aW5nVGV4dCA9IENyZWF0ZVRleHQgfCBIYXNOYW1l
T3JJc0VkaXRpbmdUZXh0RmxhZywKICAgICB9OwogICAgIE5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1
Y3Rpb25UeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDQ2NDZjZDg0YTNkOWMwYjY2YmYzMjAzMzZiZDUxMzk5NTljNGE0YzcuLjVkZmU0YTAy
MTBjM2ViNGFlZTBhNGM0ZjRkNTkwMDZhZTZjY2Q1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtOTIsOSArOTIsOCBAQCBSZW5kZXJPYmplY3Qq
IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG1fbm9k
ZSk7Ci0gICAgZm9yICh3YWxrZXIubmV4dFNpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIu
bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHdh
bGtlci5nZXQoKS0+cmVuZGVyZXIoKSkgeworICAgIGZvciAoTm9kZSogc2libGluZyA9IENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyhtX25vZGUpOyBzaWJsaW5n
OyBzaWJsaW5nID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZU5leHRTaWJsaW5n
KHNpYmxpbmcpKSB7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGlu
Zy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gUmVuZGVyZXJzIGZvciBlbGVtZW50cyBh
dHRhY2hlZCB0byBhIGZsb3cgdGhyZWFkIHNob3VsZCBiZSBza2lwcGVkIGJlY2F1c2UgdGhleSBh
cmUgcGFyZW50ZWQgZGlmZmVyZW50bHkuCiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPm5vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpICYmICFyZW5kZXJlci0+c3R5
bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTEyMCw5ICsxMTksOCBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpw
cmV2aW91c1JlbmRlcmVyKCkgY29uc3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgdGhl
IHNhbWUgTyhOXjIpIGF2b2lkYW5jZSBhcyBuZXh0UmVuZGVyZXIgZG9lcwogICAgIC8vIGhvd2V2
ZXIsIHdoZW4gSSB0cmllZCBhZGRpbmcgaXQsIHNldmVyYWwgdGVzdHMgZmFpbGVkLgogCi0gICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihtX25vZGUpOwotICAgIGZvciAod2Fsa2Vy
LnByZXZpb3VzU2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wcmV2aW91c1NpYmxpbmco
KSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHdhbGtlci5nZXQoKS0+
cmVuZGVyZXIoKSkgeworICAgIGZvciAoTm9kZSogc2libGluZyA9IENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcobV9ub2RlKTsgc2libGluZzsgc2libGlu
ZyA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoc2li
bGluZykpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzaWJsaW5nLT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAvLyBSZW5kZXJlcnMgZm9yIGVsZW1lbnRzIGF0dGFj
aGVkIHRvIGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNraXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBw
YXJlbnRlZCBkaWZmZXJlbnRseS4KICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpLT5p
c0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxlKCkgJiYgIXJlbmRlcmVyLT5zdHlsZSgp
LT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGM2YjI2MWJlNWNhMzEwNmYyMWRlN2MwZTMwODZj
NmEyOWZlNTA3YWIuLjU2OWViMjBkNmU4NzhlMmFkN2M1NjhiOTFlNTM5YWVkZGMzYzA4NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTMyNiw2ICszMjYsOCBAQCB2b2lkIFNoYWRv
d1Jvb3Q6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3Jl
Q2hhbmdlLCBOb2RlKgogCiAgICAgQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5n
ZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsK
ICAgICBvd25lcigpLT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgZm9yIChOb2RlKiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
CisgICAgICAgIGNoaWxkLT5zZXRTaGFkb3dUcmVlSm9pbnQodHJ1ZSk7CiB9CiAKIGNvbnN0IFZl
Y3RvcjxJbnNlcnRpb25Qb2ludCo+JiBTaGFkb3dSb290OjppbnNlcnRpb25Qb2ludExpc3QoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCmluZGV4IGUx
ZDg4YjRhMjllNjY1NjM3Mjk4NDQ1MWE1MDJjMTA3ZjUxY2ExMDEuLjI0ZDg0NjhiZWFiZjI1NzJi
YmU2MGU2YzE4Njc1MDkwNGNhMzBhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5jcHAKQEAgLTEzMCw2ICsxMzAsOCBAQCB2b2lkIEluc2VydGlvblBv
aW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNo
YW5nZSwgTgogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2Vy
LCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogICAgIGlmIChT
aGFkb3dSb290KiByb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcm9vdC0+
b3duZXIoKS0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOworICAgIGZvciAoTm9kZSogY2hpbGQg
PSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAg
ICAgICBjaGlsZC0+c2V0U2hhZG93VHJlZUpvaW50KHRydWUpOwogfQogCiBOb2RlOjpJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IEluc2VydGlvblBvaW50OjppbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>178690</attachid>
            <date>2012-12-10 19:35:24 -0800</date>
            <delta_ts>2012-12-10 19:35:24 -0800</delta_ts>
            <desc>Benchmark result with non-bitflag version</desc>
            <filename>dom-modify-innerHTML.html</filename>
            <type>text/html</type>
            <size>23615</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvbW9ycml0YS93b3JrL3dlYmtpdC9hbGljZSc7CiAgICB2YXIgcmVt
b3RlUGF0aCA9ICdodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5r
JzsKICAgIHZhciBudW1iZXJPZkZhaWx1cmVzID0gMDsKICAgIHZhciBzdGFydGVkTG9hZGluZ1Bs
dWdpbnMgPSBmYWxzZTsKICAgIHZhciBudW1iZXJPZkxvYWRlZFBsdWdpbnMgPSAwOwoKICAgIGZ1
bmN0aW9uIGxvYWRTY3JpcHQoc3JjLCBsb2FkZWQsIGZhaWxlZCkgewogICAgICAgIHZhciBzY3Jp
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzY3JpcHQuYXN5
bmMgPSB0cnVlOwogICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7CiAgICAgICAgc2NyaXB0Lm9ubG9h
ZCA9IGxvYWRlZDsKICAgICAgICBpZiAoZmFpbGVkKQogICAgICAgICAgICBzY3JpcHQub25lcnJv
ciA9IGZhaWxlZDsKICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CiAg
ICB9CgogICAgZnVuY3Rpb24gbG9hZFBsdWdpbnModHJ1bmtQYXRoKSB7CiAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKQogICAgICAgICAgICBsb2FkU2NyaXB0
KHRydW5rUGF0aCArICcvJyArIHBsdWdpbnNbaV0sIGxvYWRlZFBsdWdpbiwgY3JlYXRlRmFpbGVk
VG9Mb2FkUGx1Z2luKHBsdWdpbnNbaV0pKTsKICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkZWRQbHVn
aW4oKSB7CiAgICAgICAgbnVtYmVyT2ZMb2FkZWRQbHVnaW5zKys7CiAgICAgICAgaWYgKG51bWJl
ck9mTG9hZGVkUGx1Z2lucyA9PSBwbHVnaW5zLmxlbmd0aCkKICAgICAgICAgICAgc2V0VGltZW91
dChpbml0LCAwKTsgICAgICAgICAgICAKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVGYWlsZWRU
b0xvYWRQbHVnaW4ocGx1Z2luKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgYWxlcnQo
IkZhaWxlZCB0byBsb2FkICIgKyBwbHVnaW4pOyB9CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRl
TG9hZGVkSlF1ZXJ5KHRydW5rUGF0aCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGxv
YWRQbHVnaW5zKHRydW5rUGF0aCk7IH0KICAgIH0KCiAgICBsb2FkU2NyaXB0KGxvY2FsUGF0aCAr
ICcvJyArIGpRdWVyeSwKICAgICAgICBjcmVhdGVMb2FkZWRKUXVlcnkobG9jYWxQYXRoKSwKICAg
ICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRTY3JpcHQocmVtb3RlUGF0aCArICcv
JyArIGpRdWVyeSwKICAgICAgICAgICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShyZW1vdGVQYXRo
KSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZhaWxlZCB0byBsb2FkIGpR
dWVyeS4iKTsgfSk7CiAgICAgICAgfSk7Cn0pKCk7CgpmdW5jdGlvbiBUZXN0UmVzdWx0KGFzc29j
aWF0ZWRUZXN0LCByZXN1bHQsIGFzc29jaWF0ZWRSdW4pIHsKICAgIHRoaXMudW5pdCA9IGZ1bmN0
aW9uICgpIHsgcmV0dXJuIHJlc3VsdC51bml0OyB9CiAgICB0aGlzLnRlc3QgPSBmdW5jdGlvbiAo
KSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdDsgfQogICAgdGhpcy52YWx1ZXMgPSBmdW5jdGlvbiAo
KSB7IHJldHVybiByZXN1bHQudmFsdWVzID8gcmVzdWx0LnZhbHVlcy5tYXAoZnVuY3Rpb24gKHZh
bHVlKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiB2YWx1ZTsgfSkg
OiB1bmRlZmluZWQ7IH0KICAgIHRoaXMudW5zY2FsZWRNZWFuID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5tZWFuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNz
b2NpYXRlZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5taW4g
PSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiBy
ZXN1bHQubWluOyB9CiAgICB0aGlzLm1heCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0
ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3VsdC5tYXg7IH0KICAgIHRoaXMuc3RkZXYgPSBm
dW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1
bHQuc3RkZXY7IH0KICAgIHRoaXMuc3RkZXZSYXRpbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJl
c3VsdC5zdGRldiAvIHJlc3VsdC5hdmc7IH0KICAgIHRoaXMucGVyY2VudERpZmZlcmVuY2UgPSBm
dW5jdGlvbihvdGhlcikgeyByZXR1cm4gKG90aGVyLm1lYW4oKSAtIHRoaXMubWVhbigpKSAvIHRo
aXMubWVhbigpOyB9CiAgICB0aGlzLmlzU3RhdGlzdGljYWxseVNpZ25pZmljYW50ID0gZnVuY3Rp
b24gKG90aGVyKSB7CiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhvdGhlci5tZWFuKCkgLSB0
aGlzLm1lYW4oKSk7CiAgICAgICAgcmV0dXJuIGRpZmYgPiB0aGlzLnN0ZGV2KCkgJiYgZGlmZiA+
IG90aGVyLnN0ZGV2KCk7CiAgICB9CiAgICB0aGlzLnJ1biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IGFzc29jaWF0ZWRSdW47IH0KfQoKZnVuY3Rpb24gVGVzdFJ1bihlbnRyeSkgewogICAgdGhpcy5k
ZXNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVudHJ5WydkZXNjcmlwdGlvbiddOyB9
CiAgICB0aGlzLndlYmtpdFJldmlzaW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ3dl
YmtpdC1yZXZpc2lvbiddOyB9CiAgICB0aGlzLmxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAg
IHZhciBsYWJlbCA9ICdyJyArIHRoaXMud2Via2l0UmV2aXNpb24oKTsKICAgICAgICBpZiAodGhp
cy5kZXNjcmlwdGlvbigpKQogICAgICAgICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgdGhpcy5k
ZXNjcmlwdGlvbigpOwogICAgICAgIHJldHVybiBsYWJlbDsKICAgIH0KfQoKZnVuY3Rpb24gUGVy
ZlRlc3QobmFtZSkgewogICAgdmFyIHRlc3RSZXN1bHRzID0gW107CiAgICB2YXIgY2FjaGVkVW5p
dCA9IG51bGw7CiAgICB2YXIgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IG51bGw7CgogICAgLy8gV2Ug
Y2FuJ3QgZG8gdGhpcyBpbiBUZXN0UmVzdWx0IGJlY2F1c2UgYWxsIHJlc3VsdHMgZm9yIGVhY2gg
dGVzdCBuZWVkIHRvIHNoYXJlIHRoZSBzYW1lIHVuaXQgYW5kIHRoZSBzYW1lIHNjYWxpbmcgZmFj
dG9yLgogICAgZnVuY3Rpb24gY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpIHsKICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGFkanVzdGluZyB1bml0cyBvbiBldmVyeSB0ZXN0
IHJlc3VsdC4KICAgICAgICAvLyBXZSBjYW4gb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCB0ZXN0
LgogICAgICAgIGlmICghdGVzdFJlc3VsdHMubGVuZ3RoIHx8IGNhY2hlZFVuaXQpCiAgICAgICAg
ICAgIHJldHVybjsKCiAgICAgICAgdmFyIHVuaXQgPSB0ZXN0UmVzdWx0c1swXS51bml0KCk7IC8v
IEZJWE1FOiBXZSBzaG91bGQgdmVyaWZ5IHRoYXQgYWxsIHJlc3VsdHMgaGF2ZSB0aGUgc2FtZSB1
bml0LgogICAgICAgIHZhciBtZWFuID0gdGVzdFJlc3VsdHNbMF0udW5zY2FsZWRNZWFuKCk7IC8v
IEZJWE1FOiBXZSBzaG91bGQgbG9vayBhdCBhbGwgdmFsdWVzLgogICAgICAgIHZhciBraWxvID0g
dW5pdCA9PSAnYnl0ZXMnID8gMTAyNCA6IDEwMDA7CiAgICAgICAgaWYgKG1lYW4gPiAxMCAqIGtp
bG8gKiBraWxvICYmIHVuaXQgIT0gJ21zJykgewogICAgICAgICAgICBjYWNoZWRTY2FsaW5nRmFj
dG9yID0gMSAvIGtpbG8gLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gJ00gJyArIHVu
aXQ7CiAgICAgICAgfSBlbHNlIGlmIChtZWFuID4gMTAgKiBraWxvKSB7CiAgICAgICAgICAgIGNh
Y2hlZFNjYWxpbmdGYWN0b3IgPSAxIC8ga2lsbzsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVu
aXQgPT0gJ21zJyA/ICdzJyA6ICgnSyAnICsgdW5pdCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IDE7CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSB1
bml0OwogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLm5hbWUgPSBmdW5jdGlvbiAoKSB7IHJldHVy
biBuYW1lOyB9CiAgICB0aGlzLmlzTWVtb3J5VGVzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5h
bWUuaW5kZXhPZignOicpID49IDA7IH0KICAgIHRoaXMuYWRkUmVzdWx0ID0gZnVuY3Rpb24gKG5l
d1Jlc3VsdCkgewogICAgICAgIHRlc3RSZXN1bHRzLnB1c2gobmV3UmVzdWx0KTsKICAgICAgICBj
YWNoZWRVbml0ID0gbnVsbDsKICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAg
IH0KICAgIHRoaXMucmVzdWx0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRlc3RSZXN1bHRzOyB9
CiAgICB0aGlzLnNjYWxpbmdGYWN0b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb21wdXRlU2Nh
bGluZ0ZhY3RvcklmTmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFNjYWxpbmdGYWN0b3I7
CiAgICB9CiAgICB0aGlzLnVuaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgY29tcHV0ZVNjYWxp
bmdGYWN0b3JJZk5lZWRlZCgpOwogICAgICAgIHJldHVybiBjYWNoZWRVbml0OwogICAgfQogICAg
dGhpcy5zbWFsbGVySXNCZXR0ZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnVuaXQoKSA9
PSAnbXMnIHx8IHRoaXMudW5pdCgpID09ICdieXRlcyc7IH0KfQoKdmFyIHBsb3RDb2xvciA9ICdy
Z2IoMjMwLDUwLDUwKSc7CnZhciBzdWJwb2ludHNQbG90T3B0aW9ucyA9IHsKICAgIGxpbmVzOiB7
c2hvdzp0cnVlLCBsaW5lV2lkdGg6IDB9LAogICAgY29sb3I6IHBsb3RDb2xvciwKICAgIHBvaW50
czoge3Nob3c6IHRydWUsIHJhZGl1czogMX0sCiAgICBiYXJzOiB7c2hvdzogZmFsc2V9fTsKCnZh
ciBtYWluUGxvdE9wdGlvbnMgPSB7CiAgICB4YXhpczogewogICAgICAgIG1pbjogLTAuNSwKICAg
ICAgICB0aWNrU2l6ZTogMSwKICAgIH0sCiAgICBjcm9zc2hhaXI6IHsgbW9kZTogJ3knIH0sCiAg
ICBzZXJpZXM6IHsgc2hhZG93U2l6ZTogMCB9LAogICAgYmFyczoge3Nob3c6IHRydWUsIGFsaWdu
OiAnY2VudGVyJywgYmFyV2lkdGg6IDAuNX0sCiAgICBsaW5lczogeyBzaG93OiBmYWxzZSB9LAog
ICAgcG9pbnRzOiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6IHsKICAgICAgICBib3JkZXJXaWR0
aDogMSwKICAgICAgICBib3JkZXJDb2xvcjogJyNjY2MnLAogICAgICAgIGJhY2tncm91bmRDb2xv
cjogJyNmZmYnLAogICAgICAgIGhvdmVyYWJsZTogdHJ1ZSwKICAgICAgICBhdXRvSGlnaGxpZ2h0
OiBmYWxzZSwKICAgIH0KfTsKCnZhciB0aW1lUGxvdE9wdGlvbnMgPSB7CiAgICB5YXhpczogeyBz
aG93OiBmYWxzZSB9LAogICAgeGF4aXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIGxpbmVzOiB7IHNo
b3c6IHRydWUgfSwKICAgIGdyaWQ6IHsgYm9yZGVyV2lkdGg6IDEsIGJvcmRlckNvbG9yOiAnI2Nj
YycgfSwKICAgIGNvbG9yczogWyBwbG90Q29sb3IgXQp9OwoKZnVuY3Rpb24gY3JlYXRlUGxvdChj
b250YWluZXIsIHRlc3QpIHsKICAgIHZhciBzZWN0aW9uID0gJCgnPHNlY3Rpb24+PGRpdiBjbGFz
cz0icGxvdCI+PC9kaXY+PGRpdiBjbGFzcz0idGltZS1wbG90cyI+PC9kaXY+JwogICAgICAgICsg
JzxzcGFuIGNsYXNzPSJ0b29sdGlwIj48L3NwYW4+PC9zZWN0aW9uPicpOwogICAgc2VjdGlvbi5j
aGlsZHJlbignLnBsb3QnKS5jc3Moeyd3aWR0aCc6ICgxMDAgKiB0ZXN0LnJlc3VsdHMoKS5sZW5n
dGggKyAyNSkgKyAncHgnLCAnaGVpZ2h0JzogJzMwMHB4J30pOwogICAgJChjb250YWluZXIpLmFw
cGVuZChzZWN0aW9uKTsKCiAgICB2YXIgcGxvdENvbnRhaW5lciA9IHNlY3Rpb24uY2hpbGRyZW4o
Jy5wbG90Jyk7CiAgICB2YXIgbWluSXNaZXJvID0gdHJ1ZTsKICAgIGF0dGFjaFBsb3QodGVzdCwg
cGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKCiAgICBhdHRhY2hUaW1lUGxvdHModGVzdCwgc2Vj
dGlvbi5jaGlsZHJlbignLnRpbWUtcGxvdHMnKSk7CgogICAgdmFyIHRvb2x0aXAgPSBzZWN0aW9u
LmNoaWxkcmVuKCcudG9vbHRpcCcpOwogICAgcGxvdENvbnRhaW5lci5iaW5kKCdwbG90aG92ZXIn
LCBmdW5jdGlvbiAoZXZlbnQsIHBvc2l0aW9uLCBpdGVtKSB7CiAgICAgICAgaWYgKGl0ZW0pIHsK
ICAgICAgICAgICAgdmFyIHBvc3RmaXggPSBpdGVtLnNlcmllcy5pZCA/ICcgKCcgKyBpdGVtLnNl
cmllcy5pZCArICcpJyA6ICcnOwogICAgICAgICAgICB0b29sdGlwLmh0bWwoaXRlbS5kYXRhcG9p
bnRbMV0udG9QcmVjaXNpb24oNCkgKyBwb3N0Zml4KTsKICAgICAgICAgICAgdmFyIHNlY3Rpb25P
ZmZzZXQgPSAkKHNlY3Rpb24pLm9mZnNldCgpOwogICAgICAgICAgICB0b29sdGlwLmNzcyh7bGVm
dDogaXRlbS5wYWdlWCAtIHNlY3Rpb25PZmZzZXQubGVmdCAtIHRvb2x0aXAub3V0ZXJXaWR0aCgp
IC8gMiwgdG9wOiBpdGVtLnBhZ2VZIC0gc2VjdGlvbk9mZnNldC50b3AgKyAxMH0pOwogICAgICAg
ICAgICB0b29sdGlwLmZhZGVJbigyMDApOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICB0b29s
dGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5tb3VzZW91dChmdW5jdGlvbiAo
KSB7CiAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsKICAgIHBsb3RDb250YWluZXIuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAg
ICAgICBtaW5Jc1plcm8gPSAhbWluSXNaZXJvOwogICAgICAgIGF0dGFjaFBsb3QodGVzdCwgcGxv
dENvbnRhaW5lciwgbWluSXNaZXJvKTsKICAgIH0pOwoKICAgIHJldHVybiBzZWN0aW9uOwp9Cgpm
dW5jdGlvbiBhdHRhY2hUaW1lUGxvdHModGVzdCwgY29udGFpbmVyKSB7CiAgICB2YXIgcmVzdWx0
cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIGF0dGFjaGVkUGxvdCA9IGZhbHNlOwogICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29udGFpbmVy
LmFwcGVuZCgnPGRpdj48L2Rpdj4nKTsKICAgICAgICB2YXIgdmFsdWVzID0gcmVzdWx0c1tpXS52
YWx1ZXMoKTsKICAgICAgICBpZiAoIXZhbHVlcykKICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgYXR0YWNoZWRQbG90ID0gdHJ1ZTsKCiAgICAgICAgJC5wbG90KGNvbnRhaW5lci5jaGlsZHJl
bigpLmxhc3QoKSwgW3ZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkgeyByZXR1cm4g
W2luZGV4LCB2YWx1ZV07IH0pXSwKICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwge30sIHRpbWVQ
bG90T3B0aW9ucywge3lheGlzOiB7bWluOiBNYXRoLm1pbi5hcHBseShNYXRoLCB2YWx1ZXMpICog
MC45LCBtYXg6IE1hdGgubWF4LmFwcGx5KE1hdGgsIHZhbHVlcykgKiAxLjF9LAogICAgICAgICAg
ICAgICAgeGF4aXM6IHttaW46IC0wLjUsIG1heDogdmFsdWVzLmxlbmd0aCAtIDAuNX19KSk7CiAg
ICB9CiAgICBpZiAoIWF0dGFjaGVkUGxvdCkKICAgICAgICBjb250YWluZXIuY2hpbGRyZW4oKS5y
ZW1vdmUoKTsKfQoKZnVuY3Rpb24gYXR0YWNoUGxvdCh0ZXN0LCBwbG90Q29udGFpbmVyLCBtaW5J
c1plcm8pIHsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CgogICAgdmFyIHZhbHVl
cyA9IHJlc3VsdHMucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZXMsIHJlc3VsdCwgaW5kZXgpIHsKICAg
ICAgICB2YXIgbmV3VmFsdWVzID0gcmVzdWx0LnZhbHVlcygpOwogICAgICAgIHJldHVybiBuZXdW
YWx1ZXMgPyB2YWx1ZXMuY29uY2F0KG5ld1ZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJl
dHVybiBbaW5kZXgsIHZhbHVlXTsgfSkpIDogdmFsdWVzOwogICAgfSwgW10pOwoKICAgIHZhciBw
bG90RGF0YSA9IFtdOwogICAgaWYgKHZhbHVlcy5sZW5ndGgpCiAgICAgICAgcGxvdERhdGEgPSBb
JC5leHRlbmQodHJ1ZSwge30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7ZGF0YTogdmFsdWVzfSld
OwogICAgZWxzZSB7CiAgICAgICAgZnVuY3Rpb24gbWFrZVN1YnBvaW50cyhpZCwgY2FsbGJhY2sp
IHsgcmV0dXJuICQuZXh0ZW5kKHRydWUsIHt9LCBzdWJwb2ludHNQbG90T3B0aW9ucywge2lkOiBp
ZCwgZGF0YTogcmVzdWx0cy5tYXAoY2FsbGJhY2spfSk7IH0KICAgICAgICBwbG90RGF0YSA9IFtt
YWtlU3VicG9pbnRzKCdtaW4nLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2lu
ZGV4LCByZXN1bHQubWluKCldOyB9KSwKICAgICAgICBtYWtlU3VicG9pbnRzKCdtYXgnLCBmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQubWF4KCldOyB9KSwK
ICAgICAgICBtYWtlU3VicG9pbnRzKCctJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgp
IHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKSAtIHJlc3VsdC5zdGRldigpXTsgfSksCiAg
ICAgICAgbWFrZVN1YnBvaW50cygnKyYjOTYzOycsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7
IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tZWFuKCkgKyByZXN1bHQuc3RkZXYoKV07IH0pXTsKICAg
IH0KCiAgICBwbG90RGF0YS5wdXNoKHtpZDogJyZtdTsnLCBkYXRhOiByZXN1bHRzLm1hcChmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpXTsgfSks
IGNvbG9yOiBwbG90Q29sb3J9KTsKCiAgICB2YXIgY3VycmVudFBsb3RPcHRpb25zID0gJC5leHRl
bmQodHJ1ZSwge30sIG1haW5QbG90T3B0aW9ucywge3lheGlzOiB7CiAgICAgICAgbWluOiBtaW5J
c1plcm8gPyAwIDogTWF0aC5taW4uYXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJl
c3VsdCwgaW5kZXgpIHsgcmV0dXJuIHJlc3VsdC5taW4oKTsgfSkpICogMC45OCwKICAgICAgICBt
YXg6IE1hdGgubWF4LmFwcGx5KE1hdGgsIHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGlu
ZGV4KSB7IHJldHVybiByZXN1bHQubWF4KCk7IH0pKSAqIChtaW5Jc1plcm8gPyAxLjEgOiAxLjAx
KX19KTsKCiAgICBjdXJyZW50UGxvdE9wdGlvbnMueGF4aXMubWF4ID0gcmVzdWx0cy5sZW5ndGgg
LSAwLjU7CiAgICBjdXJyZW50UGxvdE9wdGlvbnMueGF4aXMudGlja3MgPSByZXN1bHRzLm1hcChm
dW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQucnVuKCkubGFi
ZWwoKV07IH0pOwoKICAgICQucGxvdChwbG90Q29udGFpbmVyLCBwbG90RGF0YSwgY3VycmVudFBs
b3RPcHRpb25zKTsKfQoKZnVuY3Rpb24gdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHZhbHVlKSB7CiAg
ICB2YXIgZGVjaW1hbCA9IHZhbHVlLnRvRml4ZWQoMik7CiAgICByZXR1cm4gZGVjaW1hbDsKfQoK
ZnVuY3Rpb24gZm9ybWF0UGVyY2VudGFnZShmcmFjdGlvbikgewogICAgdmFyIHBlcmNlbnRhZ2Ug
PSBmcmFjdGlvbiAqIDEwMDsKICAgIHJldHVybiAoZnJhY3Rpb24gKiAxMDApLnRvRml4ZWQoMikg
KyAnJSc7Cn0KCmZ1bmN0aW9uIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25vcmVN
ZW1vcnksIHJlZmVyZW5jZUluZGV4KSB7CiAgICAkKCcjY29udGFpbmVyJykuaHRtbCgnPHRoZWFk
Pjx0cj48dGg+VGVzdDwvdGg+PHRoPlVuaXQ8L3RoPicgKyBydW5zLm1hcChmdW5jdGlvbiAocnVu
LCBpbmRleCkgewogICAgICAgIHJldHVybiAnPHRoIGNvbHNwYW49IicgKyAoaW5kZXggPT0gcmVm
ZXJlbmNlSW5kZXggPyAyIDogMykgKyAnIiBjbGFzcz0ie3NvcnRlcjogXCdjb21wYXJpc29uXCd9
Ij4nICsgcnVuLmxhYmVsKCkgKyAnPC90aD4nOwogICAgfSkucmVkdWNlKGZ1bmN0aW9uIChtYXJr
dXAsIGNlbGwpIHsgcmV0dXJuIG1hcmt1cCArIGNlbGw7IH0sICcnKSArICc8L3RyPjwvaGVhZD48
dGJvZHk+PC90Ym9keT4nKTsKCiAgICB2YXIgdGVzdE5hbWVzID0gW107CiAgICBmb3IgKHRlc3RO
YW1lIGluIHRlc3RzKQogICAgICAgIHRlc3ROYW1lcy5wdXNoKHRlc3ROYW1lKTsKCiAgICB0ZXN0
TmFtZXMuc29ydCgpLm1hcChmdW5jdGlvbiAodGVzdE5hbWUpIHsKICAgICAgICB2YXIgdGVzdCA9
IHRlc3RzW3Rlc3ROYW1lXTsKICAgICAgICBpZiAodGVzdC5pc01lbW9yeVRlc3QoKSAhPSBzaG91
bGRJZ25vcmVNZW1vcnkpCiAgICAgICAgICAgIGNyZWF0ZVRhYmxlUm93KHJ1bnMsIHRlc3QsIHJl
ZmVyZW5jZUluZGV4KTsKICAgIH0pOwoKICAgICQoJyNjb250YWluZXInKS50YWJsZXNvcnRlcih7
d2lkZ2V0czogWyd6ZWJyYSddfSk7Cn0KCmZ1bmN0aW9uIGxpbmVhclJlZ3Jlc3Npb24ocG9pbnRz
KSB7CiAgICAvLyBJbXBsZW1lbnQgaHR0cDovL3d3dy5lYXN5Y2FsY3VsYXRpb24uY29tL3N0YXRp
c3RpY3MvbGVhcm4tY29ycmVsYXRpb24ucGhwLgogICAgLy8geCA9IG1hZ25pdHVkZQogICAgLy8g
eSA9IGl0ZXJhdGlvbnMKICAgIHZhciBzdW1YID0gMDsKICAgIHZhciBzdW1ZID0gMDsKICAgIHZh
ciBzdW1YU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWVNxdWFyZWQgPSAwOwogICAgdmFyIHN1bVhU
aW1lc1kgPSAwOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgdmFyIHggPSBpOwogICAgICAgIHZhciB5ID0gcG9pbnRzW2ldOwogICAgICAgIHN1
bVggKz0geDsKICAgICAgICBzdW1ZICs9IHk7CiAgICAgICAgc3VtWFNxdWFyZWQgKz0geCAqIHg7
CiAgICAgICAgc3VtWVNxdWFyZWQgKz0geSAqIHk7CiAgICAgICAgc3VtWFRpbWVzWSArPSB4ICog
eTsKICAgIH0KCiAgICB2YXIgciA9IChwb2ludHMubGVuZ3RoICogc3VtWFRpbWVzWSAtIHN1bVgg
KiBzdW1ZKSAvCiAgICAgICAgTWF0aC5zcXJ0KChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQg
LSBzdW1YICogc3VtWCkgKgogICAgICAgICAgICAgICAgICAocG9pbnRzLmxlbmd0aCAqIHN1bVlT
cXVhcmVkIC0gc3VtWSAqIHN1bVkpKTsKCiAgICBpZiAoaXNOYU4ocikgfHwgciA9PSBNYXRoLklu
ZmluaXR5KQogICAgICAgIHIgPSAwOwoKICAgIHZhciBzbG9wZSA9IChwb2ludHMubGVuZ3RoICog
c3VtWFRpbWVzWSAtIHN1bVggKiBzdW1ZKSAvIChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQg
LSBzdW1YICogc3VtWCk7CiAgICB2YXIgaW50ZXJjZXB0ID0gc3VtWSAvIHBvaW50cy5sZW5ndGgg
LSBzbG9wZSAqIHN1bVggLyBwb2ludHMubGVuZ3RoOwogICAgcmV0dXJuIHtzbG9wZTogc2xvcGUs
IGludGVyY2VwdDogaW50ZXJjZXB0LCByU3F1YXJlZDogciAqIHJ9Owp9Cgp2YXIgd2FybmluZ1Np
Z24gPSAnPHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4OyBoZWln
aHQ6IDE4cHg7IHZlcnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPicKICAgICsg
Jzxwb2x5Z29uIGZpbGw9InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+Jwog
ICAgKyAnPHBvbHlnb24gZmlsbD0id2hpdGUiIHBvaW50cz0iNDcsMzAgNDgsMjksIDUwLCAyOC43
LCA1MiwyOSA1MywzMCA1MCw2MCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ry
b2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAgICArICc8Y2lyY2xlIGN4PSI1MCIgY3k9IjczIiBy
PSI2IiBmaWxsPSJ3aGl0ZSIgLz4nCiAgICArICc8L3N2Zz4nOwoKZnVuY3Rpb24gY3JlYXRlVGFi
bGVSb3cocnVucywgdGVzdCwgcmVmZXJlbmNlSW5kZXgpIHsKICAgIHZhciB0YWJsZVJvdyA9ICQo
Jzx0cj48dGQgY2xhc3M9InRlc3QiPicgKyB0ZXN0Lm5hbWUoKSArICc8L3RkPjx0ZCBjbGFzcz0i
dW5pdCI+JyArIHRlc3QudW5pdCgpICsgJzwvdGQ+PC90cj4nKTsKCiAgICBmdW5jdGlvbiBtYXJr
dXBGb3JSdW4ocmVzdWx0LCByZWZlcmVuY2VSZXN1bHQpIHsKICAgICAgICB2YXIgY29tcGFyaXNv
bkNlbGwgPSAnJzsKICAgICAgICB2YXIgaGlkZGVuVmFsdWUgPSAnJzsKICAgICAgICB2YXIgc2hv
dWxkQ29tcGFyZSA9IHJlc3VsdCAhPT0gcmVmZXJlbmNlUmVzdWx0OwogICAgICAgIGlmIChzaG91
bGRDb21wYXJlICYmIHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgICAgICB2YXIgcGVyY2VudERp
ZmZlcmVuY2UgPSByZWZlcmVuY2VSZXN1bHQucGVyY2VudERpZmZlcmVuY2UocmVzdWx0KTsKICAg
ICAgICAgICAgdmFyIGJldHRlciA9IHRlc3Quc21hbGxlcklzQmV0dGVyKCkgPyBwZXJjZW50RGlm
ZmVyZW5jZSA8IDAgOiBwZXJjZW50RGlmZmVyZW5jZSA+IDA7CiAgICAgICAgICAgIHZhciBjb21w
YXJpc29uID0gJyc7CiAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAnY29tcGFyaXNvbic7CiAg
ICAgICAgICAgIGlmIChyZWZlcmVuY2VSZXN1bHQuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQo
cmVzdWx0KSkgewogICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IGZvcm1hdFBlcmNlbnRhZ2Uo
TWF0aC5hYnMocGVyY2VudERpZmZlcmVuY2UpKSArIChiZXR0ZXIgPyAnIEJldHRlcicgOiAnIFdv
cnNlJm5ic3A7Jyk7CiAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gYmV0dGVyID8gJyBiZXR0
ZXInIDogJyB3b3JzZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGlkZGVuVmFsdWUgPSAn
PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwnICsgY29tcGFyaXNvbiArICc8L3NwYW4+JzsK
ICAgICAgICAgICAgY29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSInICsgY2xhc3NOYW1lICsg
JyI+JyArIGNvbXBhcmlzb24gKyAnPC90ZD4nOwogICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkQ29t
cGFyZSkKICAgICAgICAgICAgY29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSJjb21wYXJpc29u
Ij48L3RkPic7CgogICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAg
dmFyIHdhcm5pbmcgPSAnJzsKICAgICAgICB2YXIgcmVncmVzc2lvbkFuYWx5c2lzID0gJyc7CiAg
ICAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoID4gMykgewogICAgICAgICAgICByZWdy
ZXNzaW9uUmVzdWx0ID0gbGluZWFyUmVncmVzc2lvbih2YWx1ZXMpOwogICAgICAgICAgICByZWdy
ZXNzaW9uQW5hbHlzaXMgPSAnc2xvcGU9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZWdyZXNz
aW9uUmVzdWx0LnNsb3BlKQogICAgICAgICAgICAgICAgKyAnLCBSXjI9JyArIHRvRml4ZWRXaWR0
aFByZWNpc2lvbihyZWdyZXNzaW9uUmVzdWx0LnJTcXVhcmVkKTsKICAgICAgICAgICAgaWYgKHJl
Z3Jlc3Npb25SZXN1bHQuclNxdWFyZWQgPiAwLjYgJiYgTWF0aC5hYnMocmVncmVzc2lvblJlc3Vs
dC5zbG9wZSkgPiAwLjAxKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nID0gJyA8c3BhbiBjbGFz
cz0icmVncmVzc2lvbi13YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kg
d2l0aCAnICsgcmVncmVzc2lvbkFuYWx5c2lzICsgJyI+JyArIHdhcm5pbmdTaWduICsgJyA8L3Nw
YW4+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHN0YXRpc3RpY3MgPSAn
JnNpZ21hOz0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5zdGRldigpKSArICcsIG1p
bj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5taW4oKSkKICAgICAgICAgICAgKyAn
LCBtYXg9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWF4KCkpICsgJ1xuJyArIHJl
Z3Jlc3Npb25BbmFseXNpczsKCiAgICAgICAgLy8gVGFibGVzb3J0ZXIgZG9lc24ndCBrbm93IGFi
b3V0IHRoZSBzZWNvbmQgY2VsbCBzbyBwdXQgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGludmlzaWJs
ZSBlbGVtZW50LgogICAgICAgIHJldHVybiAnPHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSInICsg
c3RhdGlzdGljcyArICciPicgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1lYW4oKSkg
KyBoaWRkZW5WYWx1ZQogICAgICAgICAgICArICc8L3RkPjx0ZCBjbGFzcz0ic3RkZXYiIHRpdGxl
PSInICsgc3RhdGlzdGljcyArICciPiZwbHVzbW47ICcKICAgICAgICAgICAgKyBmb3JtYXRQZXJj
ZW50YWdlKHJlc3VsdC5zdGRldlJhdGlvKCkpICsgd2FybmluZyArICc8L3RkPicgKyBjb21wYXJp
c29uQ2VsbDsKICAgIH0KCiAgICBmdW5jdGlvbiBtYXJrdXBGb3JNaXNzaW5nUnVuKGlzUmVmZXJl
bmNlKSB7CiAgICAgICAgcmV0dXJuICc8dGQgY29sc3Bhbj0iJyArIChpc1JlZmVyZW5jZSA/IDIg
OiAzKSArICciIGNsYXNzPSJtaXNzaW5nIj5NaXNzaW5nPC90ZD4nOwogICAgfQoKICAgIHZhciBy
dW5JbmRleCA9IDA7CiAgICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIHJl
ZmVyZW5jZVJlc3VsdCA9IHVuZGVmaW5lZDsKICAgIHZhciByZXN1bHRJbmRleE1hcCA9IHt9Owog
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgd2hp
bGUgKHJ1bnNbcnVuSW5kZXhdICE9PSByZXN1bHRzW2ldLnJ1bigpKQogICAgICAgICAgICBydW5J
bmRleCsrOwogICAgICAgIGlmIChydW5JbmRleCA9PSByZWZlcmVuY2VJbmRleCkKICAgICAgICAg
ICAgcmVmZXJlbmNlUmVzdWx0ID0gcmVzdWx0c1tpXTsKICAgICAgICByZXN1bHRJbmRleE1hcFty
dW5JbmRleF0gPSBpOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydW5zLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgdmFyIHJlc3VsdEluZGV4ID0gcmVzdWx0SW5kZXhNYXBbaV07CiAgICAg
ICAgaWYgKHJlc3VsdEluZGV4ID09IHVuZGVmaW5lZCkKICAgICAgICAgICAgdGFibGVSb3cuYXBw
ZW5kKG1hcmt1cEZvck1pc3NpbmdSdW4oaSA9PSByZWZlcmVuY2VJbmRleCkpOwogICAgICAgIGVs
c2UKICAgICAgICAgICAgdGFibGVSb3cuYXBwZW5kKG1hcmt1cEZvclJ1bihyZXN1bHRzW3Jlc3Vs
dEluZGV4XSwgcmVmZXJlbmNlUmVzdWx0KSk7CiAgICB9CgogICAgJCgnI2NvbnRhaW5lcicpLmNo
aWxkcmVuKCd0Ym9keScpLmxhc3QoKS5hcHBlbmQodGFibGVSb3cpOwoKICAgIHRhYmxlUm93LmNs
aWNrKGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIGlmIChldmVudC50YXJnZXQgIT0gdGFibGVS
b3dbMF0gJiYgZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUgIT0gdGFibGVSb3dbMF0pCiAgICAgICAg
ICAgIHJldHVybjsKCiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgdmFy
IGZpcnN0Q2VsbCA9IHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmZpcnN0KCk7CiAgICAgICAgaWYg
KGZpcnN0Q2VsbC5jaGlsZHJlbignc2VjdGlvbicpLmxlbmd0aCkgewogICAgICAgICAgICBmaXJz
dENlbGwuY2hpbGRyZW4oJ3NlY3Rpb24nKS5yZW1vdmUoKTsKICAgICAgICAgICAgdGFibGVSb3cu
Y2hpbGRyZW4oJ3RkJykuY3NzKHsncGFkZGluZy1ib3R0b20nOiAnJ30pOwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIHZhciBwbG90ID0gY3JlYXRlUGxvdChmaXJzdENlbGwsIHRlc3QpOwog
ICAgICAgICAgICBwbG90LmNzcyh7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3otaW5kZXgnOiAy
fSk7CiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0YWJsZVJvdy5vZmZzZXQoKTsKICAgICAgICAg
ICAgb2Zmc2V0LmxlZnQgKz0gMTsKICAgICAgICAgICAgb2Zmc2V0LnRvcCArPSB0YWJsZVJvdy5v
dXRlckhlaWdodCgpOwogICAgICAgICAgICBwbG90Lm9mZnNldChvZmZzZXQpOwogICAgICAgICAg
ICB0YWJsZVJvdy5jaGlsZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6IHBsb3Qub3V0
ZXJIZWlnaHQoKSArIDV9KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0p
Owp9CgpmdW5jdGlvbiBpbml0KCkgewogICAgJC50YWJsZXNvcnRlci5hZGRQYXJzZXIoewogICAg
ICAgIGlkOiAnY29tcGFyaXNvbicsCiAgICAgICAgaXM6IGZ1bmN0aW9uKHMpIHsKICAgICAgICAg
ICAgcmV0dXJuIHMuaW5kZXhPZignfCcpID49IDA7CiAgICAgICAgfSwKICAgICAgICBmb3JtYXQ6
IGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlRmxvYXQocy5zdWJz
dHJpbmcocy5pbmRleE9mKCd8JykgKyAxKSk7CiAgICAgICAgICAgIHJldHVybiBpc05hTihwYXJz
ZWQpID8gMCA6IHBhcnNlZDsKICAgICAgICB9LAogICAgICAgIHR5cGU6ICdudW1lcmljJywKICAg
IH0pOwoKICAgIHZhciBydW5zID0gW107CiAgICB2YXIgdGVzdHMgPSB7fTsKICAgICQuZWFjaChK
U09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdqc29uJykudGV4dENvbnRlbnQpLCBm
dW5jdGlvbiAoaW5kZXgsIGVudHJ5KSB7CiAgICAgICAgdmFyIHJ1biA9IG5ldyBUZXN0UnVuKGVu
dHJ5KTsKICAgICAgICBydW5zLnB1c2gocnVuKTsKICAgICAgICAkLmVhY2goZW50cnkucmVzdWx0
cywgZnVuY3Rpb24gKHRlc3QsIHJlc3VsdCkgewogICAgICAgICAgICBpZiAoIXRlc3RzW3Rlc3Rd
KQogICAgICAgICAgICAgICAgdGVzdHNbdGVzdF0gPSBuZXcgUGVyZlRlc3QodGVzdCk7CiAgICAg
ICAgICAgIHRlc3RzW3Rlc3RdLmFkZFJlc3VsdChuZXcgVGVzdFJlc3VsdCh0ZXN0c1t0ZXN0XSwg
cmVzdWx0LCBydW4pKTsKICAgICAgICB9KTsKICAgIH0pOwoKICAgIHZhciBzaG91bGRJZ25vcmVN
ZW1vcnk9IHRydWU7CiAgICB2YXIgcmVmZXJlbmNlSW5kZXggPSAwOwogICAgY3JlYXRlVGFibGUo
dGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwoKICAgICQo
JyN0aW1lLW1lbW9yeScpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChldmVudCwgY2hlY2tlZEVs
ZW1lbnQpIHsKICAgICAgICBzaG91bGRJZ25vcmVNZW1vcnkgPSBjaGVja2VkRWxlbWVudC50ZXh0
Q29udGVudCA9PSAnVGltZSc7CiAgICAgICAgY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3Vs
ZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwogICAgfSk7CgogICAgcnVucy5tYXAoZnVu
Y3Rpb24gKHJ1biwgaW5kZXgpIHsKICAgICAgICAkKCcjcmVmZXJlbmNlJykuYXBwZW5kKCc8c3Bh
biB2YWx1ZT0iJyArIGluZGV4ICsgJyInICsgKGluZGV4ID09IHJlZmVyZW5jZUluZGV4ID8gJyBj
bGFzcz0iY2hlY2tlZCInIDogJycpICsgJz4nICsgcnVuLmxhYmVsKCkgKyAnPC9zcGFuPicpOwog
ICAgfSkKCiAgICAkKCcjcmVmZXJlbmNlJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50
LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHJlZmVyZW5jZUluZGV4ID0gcGFyc2VJbnQoY2hl
Y2tlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKTsKICAgICAgICBjcmVhdGVUYWJsZSh0
ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsK
CiAgICAkKCcuY2hlY2tib3gnKS5lYWNoKGZ1bmN0aW9uIChpbmRleCwgY2hlY2tib3gpIHsKICAg
ICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLmNsaWNrKGZ1bmN0aW9uIChldmVudCkg
ewogICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnY2hlY2tlZCcpKQogICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLnJl
bW92ZUNsYXNzKCdjaGVja2VkJyk7CiAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2NoZWNr
ZWQnKTsKICAgICAgICAgICAgJChjaGVja2JveCkudHJpZ2dlcignY2hhbmdlJywgJCh0aGlzKSk7
CiAgICAgICAgfSk7CiAgICB9KTsKfQoKPC9zY3JpcHQ+CjxzY3JpcHQgaWQ9Impzb24iIHR5cGU9
ImFwcGxpY2F0aW9uL2pzb24iPlt7InRpbWVzdGFtcCI6IDEzNTUxMTIyNDgsICJyZXN1bHRzIjog
eyJEcm9tYWVvL2RvbS1tb2RpZnkiOiB7Im1pbiI6IDcwLjUwNjQ1NDgxNjI4NiwgIm1heCI6IDcy
LjQ5MjU1MjEzNTA1NDYyLCAibWVkaWFuIjogNzAuOTI5MDcwOTI5MDcwOTMsICJ2YWx1ZXMiOiBb
NzAuNTA2NDU0ODE2Mjg2LCA3MC43ODc2MzcwODg3MzM4LCA3MC45MjkwNzA5MjkwNzA5MywgNzEu
ODU2Mjg3NDI1MTQ5NywgNzIuNDkyNTUyMTM1MDU0NjJdLCAic3RkZXYiOiAwLjgzMDcyNTIxMjE0
MDQ3MjcsICJhdmciOiA3MS4zMTQ0MDA0Nzg4NTkwMSwgInVuaXQiOiAicnVucy9zIn19LCAiYnJh
bmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3MTAyIn0sIHsidGlt
ZXN0YW1wIjogMTM1NTExMjI2MiwgInJlc3VsdHMiOiB7IkRyb21hZW8vZG9tLW1vZGlmeSI6IHsi
bWluIjogNzEuMzU3Nzc5OTgwMTc4MzksICJtYXgiOiA3My4wLCAibWVkaWFuIjogNzEuNzg0NjQ2
MDYxODE0NTYsICJ2YWx1ZXMiOiBbNzEuMzU3Nzc5OTgwMTc4MzksIDcxLjcxMzE0NzQxMDM1ODU2
LCA3MS43ODQ2NDYwNjE4MTQ1NiwgNzIuNDIwNjM0OTIwNjM0OTIsIDczLjBdLCAic3RkZXYiOiAw
LjY1MjQ1Mzc5MjI1ODgxMzQsICJhdmciOiA3Mi4wNTUyNDE2NzQ1OTcyOCwgInVuaXQiOiAicnVu
cy9zIn19LCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3
MTAyIn0sIHsidGltZXN0YW1wIjogMTM1NTExMjI3OCwgInJlc3VsdHMiOiB7IkRyb21hZW8vZG9t
LW1vZGlmeSI6IHsibWluIjogNzEuMCwgIm1heCI6IDcyLjYzNjgxNTkyMDM5OCwgIm1lZGlhbiI6
IDcxLjY0MTc5MTA0NDc3NjExLCAidmFsdWVzIjogWzcxLjAsIDcxLjM1Nzc3OTk4MDE3ODM5LCA3
MS42NDE3OTEwNDQ3NzYxMSwgNzIuMTM0Mzg3MzUxNzc4NjYsIDcyLjYzNjgxNTkyMDM5OF0sICJz
dGRldiI6IDAuNjQ0NjIzMDUyNzQ3NDk2NiwgImF2ZyI6IDcxLjc1NDE1NDg1OTQyNjI0LCAidW5p
dCI6ICJydW5zL3MifX0sICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndlYmtpdC1yZXZpc2lv
biI6ICIxMzcxMDIifSwgeyJ0aW1lc3RhbXAiOiAxMzU1MTEyMzA5LCAicmVzdWx0cyI6IHsiRHJv
bWFlby9kb20tbW9kaWZ5IjogeyJtaW4iOiA2Ni42MDAzOTc2MTQzMTQxMiwgIm1heCI6IDY5LjY1
MTc0MTI5MzUzMjM0LCAibWVkaWFuIjogNjYuNzMzMDY3NzI5MDgzNjcsICJ2YWx1ZXMiOiBbNjYu
NjAwMzk3NjE0MzE0MTIsIDY2LjY2NjY2NjY2NjY2NjY3LCA2Ni43MzMwNjc3MjkwODM2NywgNjku
MzA2OTMwNjkzMDY5MywgNjkuNjUxNzQxMjkzNTMyMzRdLCAic3RkZXYiOiAxLjU0NjA2NjA4MTEx
MTk0NzgsICJhdmciOiA2Ny43OTE3NjA3OTkzMzMyMiwgInVuaXQiOiAicnVucy9zIn19LCAiYnJh
bmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3MTAyIn0sIHsidGlt
ZXN0YW1wIjogMTM1NTExMjMyOSwgInJlc3VsdHMiOiB7IkRyb21hZW8vZG9tLW1vZGlmeSI6IHsi
bWluIjogNjUuODY4MjYzNDczMDUzODksICJtYXgiOiA2OC4zODQ1MzkxNDc2NzA5NiwgIm1lZGlh
biI6IDY2LjczMzA2NzcyOTA4MzY3LCAidmFsdWVzIjogWzY1Ljg2ODI2MzQ3MzA1Mzg5LCA2Ni4w
LCA2Ni43MzMwNjc3MjkwODM2NywgNjcuNTk0NDMzMzk5NjAyMzgsIDY4LjM4NDUzOTE0NzY3MDk2
XSwgInN0ZGV2IjogMS4wNzA4ODE3NzgzODY5OTI4LCAiYXZnIjogNjYuOTE2MDYwNzQ5ODgyMTgs
ICJ1bml0IjogInJ1bnMvcyJ9fSwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAid2Via2l0LXJl
dmlzaW9uIjogIjEzNzEwMiJ9LCB7InRpbWVzdGFtcCI6IDEzNTUxMTIzNTIsICJyZXN1bHRzIjog
eyJEcm9tYWVvL2RvbS1tb2RpZnkiOiB7Im1pbiI6IDY1LjkzNDA2NTkzNDA2NTkzLCAibWF4Ijog
NjkuMDMzNTMwNTcxOTkyMTIsICJtZWRpYW4iOiA2Ny42NjE2OTE1NDIyODg1NSwgInZhbHVlcyI6
IFs2NS45MzQwNjU5MzQwNjU5MywgNjYuMzM2NjMzNjYzMzY2MzQsIDY3LjY2MTY5MTU0MjI4ODU1
LCA2Ny44NjQyNzE0NTcwODU4MywgNjkuMDMzNTMwNTcxOTkyMTJdLCAic3RkZXYiOiAxLjI0NzYz
NzQwMzA5MTM0MTcsICJhdmciOiA2Ny4zNjYwMzg2MzM3NTk3NiwgInVuaXQiOiAicnVucy9zIn19
LCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3MTAyIn0s
IHsidGltZXN0YW1wIjogMTM1NTE5NTkxMiwgInJlc3VsdHMiOiB7IkRyb21hZW8vZG9tLW1vZGlm
eSI6IHsibWluIjogNjcuMjYwMTM4NDc2NzU1NjksICJtYXgiOiA3MC4wMTk3MjM4NjU4Nzc3MSwg
Im1lZGlhbiI6IDY3Ljg2NDI3MTQ1NzA4NTgzLCAidmFsdWVzIjogWzY3LjI2MDEzODQ3Njc1NTY5
LCA2Ny41OTQ0MzMzOTk2MDIzOCwgNjcuODY0MjcxNDU3MDg1ODMsIDY4LjcyNTA5OTYwMTU5MzYz
LCA3MC4wMTk3MjM4NjU4Nzc3MV0sICJzdGRldiI6IDEuMTA3NTc1MjEyMzU2MjU2MywgImF2ZyI6
IDY4LjI5MjczMzM2MDE4MzA1LCAidW5pdCI6ICJydW5zL3MifX0sICJicmFuY2giOiAid2Via2l0
LXRydW5rIiwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzcxMDIifSwgeyJ0aW1lc3RhbXAiOiAxMzU1
MTk2MDY5LCAicmVzdWx0cyI6IHsiRHJvbWFlby9kb20tbW9kaWZ5IjogeyJtaW4iOiA2OS4zNzU2
MTk0MjUxNzM0NCwgIm1heCI6IDcxLjIxNjYxNzIxMDY4MjQ5LCAibWVkaWFuIjogNjkuOTMwMDY5
OTMwMDY5OTMsICJ2YWx1ZXMiOiBbNjkuMzc1NjE5NDI1MTczNDQsIDY5Ljg2MDI3OTQ0MTExNzc3
LCA2OS45MzAwNjk5MzAwNjk5MywgNzAuNTA2NDU0ODE2Mjg2LCA3MS4yMTY2MTcyMTA2ODI0OV0s
ICJzdGRldiI6IDAuNzA1ODM5NjMzNDU2OTAzLCAiYXZnIjogNzAuMTc3ODA4MTY0NjY1OTMsICJ1
bml0IjogInJ1bnMvcyJ9fSwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAid2Via2l0LXJldmlz
aW9uIjogIjEzNzEwMiJ9LCB7InRpbWVzdGFtcCI6IDEzNTUxOTYxMDEsICJyZXN1bHRzIjogeyJE
cm9tYWVvL2RvbS1tb2RpZnkiOiB7Im1pbiI6IDY5LjUxMzQwNjE1NjkwMTcsICJtYXgiOiA3MS4y
ODcxMjg3MTI4NzEzLCAibWVkaWFuIjogNzAuMDg4ODQ1MDE0ODA3NSwgInZhbHVlcyI6IFs2OS41
MTM0MDYxNTY5MDE3LCA2OS43OTA2MjgxMTU2NTMwNCwgNzAuMDg4ODQ1MDE0ODA3NSwgNzAuNjQ2
NzY2MTY5MTU0MjMsIDcxLjI4NzEyODcxMjg3MTNdLCAic3RkZXYiOiAwLjcwOTEyNzAwNzc1MzQ3
MzUsICJhdmciOiA3MC4yNjUzNTQ4MzM4Nzc1NSwgInVuaXQiOiAicnVucy9zIn19LCAiYnJhbmNo
IjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3MTAyIn1dPC9zY3JpcHQ+
CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178998</attachid>
            <date>2012-12-12 01:40:25 -0800</date>
            <delta_ts>2012-12-12 03:43:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104332-20121212183746.patch</filename>
            <type>text/plain</type>
            <size>37418</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTczOTI5NzNjNTE1ODJj
NzQ4MDQ1NTU1MzZiZDc4NGQzNDcyZTE3Yy4uZGEwN2JjNzRkZjhlMzUxZWYwY2Y3ZGIzMDYwOWVi
OTg3M2U2NDIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTEyLTA5ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBOb2RlUmVuZGVyaW5n
Q29udGV4dCBpcyBzbG93IGR1ZSB0byBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDMzMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlciBjYXVzZXMgc2xvd25lc3Mgb2YgTm9kZVJlbmRlcmluZ0NvbnRleHQKKyAgICAgICAg
ZHVlIHRvIHRoZSBjb21wbGV4aXR5IG9mIGl0cyB0cmF2ZXJzYWwgYWxnb3JpdGhtLiBUaGlzIGNo
YW5nZSBhZGRzCisgICAgICAgIHNvbWUgZmFzdCBwYXRocyBmb3IgdGhlIHRyYXZlcnNhbCB3aGlj
aCBhcmUgdXNlZCBpbiBOb2RlUmVuZGVyaW5nQ29udGV4dC4KKworICAgICAgICBUaGUgZmFzdCBw
YXRoIGlzIGltcGxlbWVudGVkIGJ5IGludHJvZHVjaW5nICJzaGFkb3cgdHJlZSBqb2ludCIKKyAg
ICAgICAgY29uY2VwdC4gQSBTaGFkb3cgVHJlZSBKb2ludCBpcyBhIERPTSBub2RlIHdoZXJlIENT
VFcgbmVlZHMKKyAgICAgICAgc3BlY2lhbCB0cmF2ZXJzYWwgYWxnb3JpdGhtLiBGb3Igbm9uLWpv
aW50IG5vZGVzLCB3aGljaCBhcmUKKyAgICAgICAgbWFqb3JpdHksIENTVFcgdHJhdmVyc2FsIGFu
ZCBwbGFpbiBET00gdHJhdmVyc2FsIGFyZSBpZGVudGljYWwuCisKKyAgICAgICAgU2hhZG93IFRy
ZWUgSm9pbnQgaXMgZGVmaW5lZCBieSB0aGUgbm9kZSdzIGVsZW1lbnQgdHlwZSBvciBpdHMKKyAg
ICAgICAgcGFyZW50J3MgdHlwZS4gSGVyZSBpcyB0aGUgZGVmaW5pdGlvbjoKKworICAgICAgICBB
IG5vZGUgaXMgYSBzaGFkb3cgdHJlZSBqb2ludCBpZi4uLgorICAgICAgICAtIFRoZSBub2RlIGlz
IGFuIEluc2VydGlvblBvaW50IG9yIGEgU2hhZG93Um9vdCwKKyAgICAgICAgLSBUaGUgbm9kZSBp
cyBhIGNoaWxkIG9mIGFuIEluc2VydGlvblBvaW50IG9yIGEgY2hpbGQgb2YgYSBTaGFkb3dSb290
IG9yCisgICAgICAgIC0gVGhlIG5vZGUgaXMgYSBjaGlsZCBvZiBzaGFkb3cgaG9zdC4KKworICAg
ICAgICBOb2RlcyBhcmUgZmxhZ2dlZCBhcyBqb2ludCBiYXNlZCBvbiB0aGVzZSBjcml0ZXJpYSwg
YW5kIENTV1QgdGFrZXMgYQorICAgICAgICBmYXN0IHBhdGggdW5sZXNzIHRoZSB2aXNpdGluZyBu
b2RlIGlzIGZsYWdnZWQuCisKKyAgICAgICAgVGhlIG9yaWdpbmFsIGlkZWEgb2YgdGhpcyBjaGFu
Z2Ugd2FzIGRlbW9uc3RyYXRlZCBieSBBbnR0aSBLb2l2aXN0byBvbiBidWcgMTAzMjA4LgorICAg
ICAgICBUaGlzIGNoYWduZSBoYXMgMy00JSBzcGVlZHVwIG9uIERyb21hZW8vZG9tLW1vZGlmeS9p
bm5lckhUTUwuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZpbmRQYXJlbnRTbG93KTog
UmVuYW1lZCBmcm9tIGZpbmRQYXJlbnQoKS4gVGhpcyBpcyBhIG5vbi1mYXN0IHBhdGguCisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dFNpYmxp
bmdTbG93KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nU2xvdyk6IERpdHRvLgorICAgICAgICAqIGRvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWlsczo6c2V0Tm9kZSk6IEFkZGVkLgor
ICAgICAgICAoUGFyZW50VHJhdmVyc2FsRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6Om9wZXJhdG9yPT0p
OiBBZGRlZC4KKyAgICAgICAgKENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZpbmRQYXJlbnQpOiBJbmxpbmVkIHdp
dGggYSBmYXN0IHBhdGguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3Vz
U2libGluZyk6IERpdHRvLgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkpOiBN
YWluZ2FpbnMgc2hhZG93IHRyZWUgam9pbnQgZmxhZy4KKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBNYWluZ2Fp
bnMgc2hhZG93IHRyZWUgam9pbnQgZmxhZy4KKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KTogTWFp
bmdhaW5zIHNoYWRvdyB0cmVlIGpvaW50IGZsYWcuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
U2hhZG93OjpkaWRKb2ludENoYW5nZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogZG9tL0VsZW1lbnRTaGFkb3cuaDoKKyAgICAgICAgKEVsZW1lbnRTaGFkb3cpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc1NoYWRvd1RyZWVK
b2ludE5vZGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzU2hhZG93VHJlZUpv
aW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTaGFkb3dUcmVlSm9pbnQp
OiBBZGRlZC4KKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJl
bmRlcmVyKTogTW9kaWZpZWQgdG8gdXNlIGEgbG9jYWwgTm9kZSogdmFyaWFibGUgdG8gbWFrZSB0
aGUgY29kZSBjb21waWxlciBmcmllbmRseS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKTogRGl0dG8uCisgICAgICAgICogZG9tL1NoYWRv
d1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2Vk
KTogTWFpbmdhaW5zIHNoYWRvdyB0cmVlIGpvaW50IGZsYWcuCisgICAgICAgICogaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6IE1haW5nYWlucyBzaGFkb3cgdHJlZSBqb2ludCBmbGFnLgorCiAy
MDEyLTEyLTExICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBWaWRlbyBUcmFjayBjb21waWxlIG9uIFdpbmRvd3MgaW4gZGVidWcgbW9kZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggZTNjYTljOWU4YTg3ZDVkZDRmYThiZmRmOWI5MzBjNDNhYTg3YzU1
OS4uZjQ2MDgzNTE5MDJkZDQxNjFmMzcyYjAxY2Q5OTFlNmQ1ZGViYjZhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTExOTIsNiArMTE5Miw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBk
b20vTm9kZUl0ZXJhdG9yLmNwcAogICAgIGRvbS9Ob2RlUmFyZURhdGEuY3BwCiAgICAgZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorICAgIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNw
cAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcAogICAgIGRvbS9Ob3RhdGlvbi5jcHAKICAgICBk
b20vT3ZlcmZsb3dFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDIz
N2U3MjNiODA2MGRmZDBiNDlmNzJjYTBmOGRkMWZkYTAzZDQ3ZjYuLjEwYjcwMzc4ODBmMmIyNWYz
ZmZmOGM5M2Q0NWJiNTU2MmJhODdkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtMjg3Myw2ICsyODczLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZUxpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBcCisJU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlclN0eWxlLmggXAogICAgIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlVHJhdmVyc2FsLmNwcCBc
CiAgICAgU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCA3NTUzY2E5ZTkwNWMwYzU3YzhhNjEzNTQ2ODVmMjlmODA2ZjNiZmZjLi41MTA1YjAzNTliODBl
YjJmZTU4NGFhZGI0M2EyMjBmMzU1MmRiNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTQyOSw2ICs0Mjks
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm9kZUl0ZXJhdG9yLmNwcCBcCiAgICAgZG9tL05v
ZGVSYXJlRGF0YS5jcHAgXAogICAgIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgXAorICAg
IGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwu
Y3BwIFwKICAgICBkb20vTm90YXRpb24uY3BwIFwKICAgICBkb20vU3RhdGljSGFzaFNldE5vZGVM
aXN0LmNwcCBcCkBAIC0xNjExLDYgKzE2MTIsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vTm9k
ZUl0ZXJhdG9yLmggXAogICAgIGRvbS9Ob2RlUmFyZURhdGEuaCBcCiAgICAgZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmggXAorICAgIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggXAogICAg
IGRvbS9Ob2RlVHJhdmVyc2FsLmggXAogICAgIGRvbS9Ob3RhdGlvbi5oIFwKICAgICBkb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDdjOTQ0ZjUwNGY5OTEz
ZjA3ZDNjZTQ1ZDVmNDFiM2MwZWM1ZGQ0YTQuLmJhZTE5NmQ1Yzk1MDg1ZjgzZTI3YjJkMzY0ZWQw
ODFiNjc3Y2E2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4NDEsNiArMjg0MSw4IEBACiAgICAg
ICAgICAgICAnZG9tL05vZGVSYXJlRGF0YS5oJywKICAgICAgICAgICAgICdkb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwJywKICAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
aCcsCisgICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwJywKKyAgICAg
ICAgICAgICdkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oJywKICAgICAgICAgICAgICdkb20v
Tm9kZVJlbmRlclN0eWxlLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlVHJhdmVyc2FsLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL05vZGVUcmF2ZXJzYWwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCmluZGV4IDEyNDg2YTkxN2E5ZTM2Y2Q4
NDM2ZmNjNjlhNmIwNDZlY2E2Njc5OGMuLjJhYjZhZjIyZjhlYzFhYjI0MjRmNGZiNmJmOTlmMDc1
ODZkMDZjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuY3BwCkBAIC03MCwyMyArNzAsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhbkJl
RGlzdHJpYnV0ZWQoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlu
bGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWls
czo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQpCi17Ci0gICAgaWYgKCFtX2luc2VydGlvblBvaW50KQotICAgICAgICBtX2luc2VydGlvblBv
aW50ID0gaW5zZXJ0aW9uUG9pbnQ7Ci19Ci0KLWlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWlsczo6ZGlkVHJhdmVyc2VTaGFkb3dSb290KGNv
bnN0IFNoYWRvd1Jvb3QqIHJvb3QpCi17Ci0gICAgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgID0g
bV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgfHwgcm9vdC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7
Ci19Ci0KLWlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVy
c2FsRGV0YWlsczo6ZGlkRmluZE5vZGUoQ29udGFpbmVyTm9kZSogbm9kZSkKLXsKLSAgICBpZiAo
IW1fb3V0T2ZDb21wb3NpdGlvbikKLSAgICAgICAgbV9ub2RlID0gbm9kZTsKLX0KLQogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZnJvbUZpcnN0Q2hp
bGQoY29uc3QgTm9kZSogbm9kZSwgUG9saWN5IHBvbGljeSkKIHsKICAgICBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUsIHBvbGljeSk7CkBAIC0xODEsNDYgKzE2NCw2IEBAIHZv
aWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcoKQogICAgIGFzc2Vy
dFBvc3Rjb25kaXRpb24oKTsKIH0KIAotdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBz
ZXVkb0F3YXJlTmV4dFNpYmxpbmcoKQotewotICAgIGFzc2VydFByZWNvbmRpdGlvbigpOwotCi0g
ICAgY29uc3QgTm9kZSogbm9kZSA9IG1fbm9kZTsKLQotICAgIGlmIChub2RlLT5pc0JlZm9yZVBz
ZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbV9ub2RlID0gdHJhdmVyc2VGaXJzdENoaWxkKHRyYXZl
cnNlUGFyZW50KG5vZGUpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlU2li
bGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2Fy
ZCk7Ci0KLSAgICBpZiAoIW1fbm9kZSAmJiAhbm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkg
ewotICAgICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBhcmVudChub2RlKTsKLSAgICAgICAg
aWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIG1fbm9k
ZSA9IHRvRWxlbWVudChwYXJlbnQpLT5hZnRlclBzZXVkb0VsZW1lbnQoKTsKLSAgICB9Ci0KLSAg
ICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KLXZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpCi17Ci0gICAgYXNzZXJ0UHJlY29uZGl0
aW9uKCk7Ci0KLSAgICBjb25zdCBOb2RlKiBub2RlID0gbV9ub2RlOwotCi0gICAgaWYgKG5vZGUt
PmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlTGFzdENo
aWxkKHRyYXZlcnNlUGFyZW50KG5vZGUpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbm9kZSA9IHRy
YXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJhdmVyc2FsRGlyZWN0
aW9uQmFja3dhcmQpOwotCi0gICAgaWYgKCFtX25vZGUgJiYgIW5vZGUtPmlzQmVmb3JlUHNldWRv
RWxlbWVudCgpKSB7Ci0gICAgICAgIE5vZGUqIHBhcmVudCA9IHRyYXZlcnNlUGFyZW50KG5vZGUp
OwotICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAg
ICAgICAgbV9ub2RlID0gdG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsK
LSAgICB9Ci0KLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KIE5vZGUqIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VEaXN0cmlidXRlZE5vZGVzKGNvbnN0IE5vZGUqIG5v
ZGUsIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgVHJhdmVyc2FsRGlyZWN0
aW9uIGRpcmVjdGlvbikKIHsKICAgICBmb3IgKGNvbnN0IE5vZGUqIG5leHQgPSBub2RlOyBuZXh0
OyBuZXh0ID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gaW5zZXJ0
aW9uUG9pbnQtPm5leHRUbyhuZXh0KSA6IGluc2VydGlvblBvaW50LT5wcmV2aW91c1RvKG5leHQp
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCmlu
ZGV4IDRiNmZmOTU2YTQ1MTliOGQ2MDI0ODMxZjI3NTg4YTY0YzRhYTlkMDIuLmIzNDU4NjhlOTcw
ZWEzYzI1OGQ3ZWIxOTQ4ZmZkNmEwNWU3MzQwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyX2gKIAogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCisj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiArNDAsOCBAQCBjbGFzcyBTaGFkb3dS
b290OwogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNzAyCiBj
bGFzcyBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgewogcHVibGljOgorICAgIHR5cGVkZWYgTm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlscyBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxz
OworCiAgICAgZW51bSBQb2xpY3kgewogICAgICAgICBDcm9zc1VwcGVyQm91bmRhcnksCiAgICAg
ICAgIERvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5LApAQCAtNDksMzIgKzUyLDYgQEAgcHVibGljOgog
ICAgICAgICBDYW5ub3RTdGFydEZyb21TaGFkb3dCb3VuZGFyeQogICAgIH07CiAKLSAgICBjbGFz
cyBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFBhcmVudFRy
YXZlcnNhbERldGFpbHMoKQotICAgICAgICAgICAgOiBtX25vZGUoMCkKLSAgICAgICAgICAgICwg
bV9pbnNlcnRpb25Qb2ludCgwKQotICAgICAgICAgICAgLCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5j
ZShmYWxzZSkKLSAgICAgICAgICAgICwgbV9vdXRPZkNvbXBvc2l0aW9uKGZhbHNlKQotICAgICAg
ICB7IH0KLQotICAgICAgICBDb250YWluZXJOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9u
b2RlOyB9Ci0gICAgICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICAgICAgYm9vbCByZXNldFN0eWxlSW5oZXJp
dGFuY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsgfQotICAgICAg
ICBib29sIG91dE9mQ29tcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX291dE9mQ29tcG9zaXRp
b247IH0KLQotICAgICAgICB2b2lkIGRpZEZpbmROb2RlKENvbnRhaW5lck5vZGUqKTsKLSAgICAg
ICAgdm9pZCBkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50Kik7Ci0gICAg
ICAgIHZvaWQgZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0IFNoYWRvd1Jvb3QqKTsKLSAgICAg
ICAgdm9pZCBjaGlsZFdhc091dE9mQ29tcG9zaXRpb24oKSB7IG1fb3V0T2ZDb21wb3NpdGlvbiA9
IHRydWU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENvbnRhaW5lck5vZGUqIG1fbm9kZTsK
LSAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIG1faW5zZXJ0aW9uUG9pbnQ7Ci0gICAgICAgIGJvb2wg
bV9yZXNldFN0eWxlSW5oZXJpdGFuY2U7Ci0gICAgICAgIGJvb2wgbV9vdXRPZkNvbXBvc2l0aW9u
OwotICAgIH07Ci0KICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSosIFBv
bGljeSA9IENyb3NzVXBwZXJCb3VuZGFyeSwgU3RhcnRQb2xpY3kgPSBDYW5ub3RTdGFydEZyb21T
aGFkb3dCb3VuZGFyeSk7CiAKICAgICAvLyBGb3IgYSBjb21tb24gdXNlIGNhc2Ugc3VjaCBhczoK
QEAgLTkwLDE0ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBuZXh0U2libGluZygpOwogICAg
IHZvaWQgcHJldmlvdXNTaWJsaW5nKCk7CiAKLSAgICB2b2lkIHBzZXVkb0F3YXJlTmV4dFNpYmxp
bmcoKTsKLSAgICB2b2lkIHBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCk7Ci0KICAgICB2b2lk
IHBhcmVudCgpOwogCiAgICAgdm9pZCBuZXh0KCk7CiAgICAgdm9pZCBwcmV2aW91cygpOwogCisg
ICAgTm9kZSogdHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudFRyYXZlcnNhbERldGFp
bHMqID0gMCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
KGNvbnN0IE5vZGUqLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKik7CiAKQEAgLTEzNCw3ICsxMTAs
NiBAQCBwcml2YXRlOgogICAgIE5vZGUqIHRyYXZlcnNlRmlyc3RDaGlsZChjb25zdCBOb2RlKikg
Y29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VMYXN0Q2hpbGQoY29uc3QgTm9kZSopIGNvbnN0Owog
ICAgIE5vZGUqIHRyYXZlcnNlQ2hpbGQoY29uc3QgTm9kZSosIFRyYXZlcnNhbERpcmVjdGlvbikg
Y29uc3Q7Ci0gICAgTm9kZSogdHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudFRyYXZl
cnNhbERldGFpbHMqID0gMCkgY29uc3Q7CiAKICAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0
U2libGluZyhjb25zdCBOb2RlKik7CiAgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNT
aWJsaW5nKGNvbnN0IE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmgKaW5kZXggZTk5ZjY0NTI0MjFlNzU0NDZkNTJkNDc5MGYzNzQ4YzE5NTJhOWIy
Zi4uYWEzZDRiMWZmMDhmMDIxYzA0OGQ0NDdiNGQ0NGQ5NjZkOTRmMzlhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKQEAgLTI1NywxMSArMjU3LDE2
IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92
ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBuCiAKIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92
YWxOb3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmluRG9jdW1l
bnQoKSkgeworICAgIGJvb2wgaW5Eb2N1bWVudCA9IG5vZGUtPmluRG9jdW1lbnQoKTsKKyAgICBi
b29sIGlzU2hhZG93VHJlZUpvaW50ID0gbm9kZS0+aXNTaGFkb3dUcmVlSm9pbnQoKTsKKyAgICBi
b29sIGlzQ29udGFpbmVyTm9kZSA9IG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpOworICAgIGlmIChp
bkRvY3VtZW50KSB7CiAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG5vZGUp
OwogICAgICAgICBub2RlLT5kb2N1bWVudCgpLT5ub3RpZnlSZW1vdmVQZW5kaW5nU2hlZXRJZk5l
ZWRlZCgpOwotICAgIH0gZWxzZSBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCisgICAgfSBl
bHNlIGlmIChpc0NvbnRhaW5lck5vZGUpCiAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRy
ZWUodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICBpZiAoaXNTaGFkb3dUcmVlSm9pbnQpCisg
ICAgICAgIG5vZGUtPnJlc2V0U2hhZG93VHJlZUpvaW50KCk7CiB9CiAKIGNsYXNzIENoaWxkRnJh
bWVEaXNjb25uZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbElu
T25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggOTI5NmEx
OWExY2I5ZTRhNDgwNmYzNDM5Yjc4MmMyNTc0YjFjYTU2OS4uNTlmNTliZWJjMTc5MDg5MDUzMTVh
NDkyZjhmMGE5NjIxOTc2MGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFs
bEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC0x
MDUsNiArMTA1LDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCIKICNpbmNs
dWRlICJOb2RlSXRlcmF0b3IuY3BwIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCIKICNpbmNsdWRlICJOb3Rh
dGlvbi5jcHAiCiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAiUGFnZVRy
YW5zaXRpb25FdmVudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMzViYmU1M2NjY2M2
ODEyMTY5NjdiN2I3MGUyODhhZThkM2UzZjcyOS4uNGJmZjg3NjRjMTUyZWU2MzkxNGQ4N2RiODYw
ZWZkZDZiMjkyOTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTUzMSwxMCArMTUzMSwy
MCBAQCB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwg
Tm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZgogICAgIGVsc2UKICAgICAgICAgY2hlY2tGb3JT
aWJsaW5nU3R5bGVDaGFuZ2VzKHRoaXMsIHJlbmRlclN0eWxlKCksIGZhbHNlLCBiZWZvcmVDaGFu
Z2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogCisgICAgaWYgKGlzQ2hpbGRTaGFk
b3dUcmVlSm9pbnQoKSkKKyAgICAgICAgZGlkU2hhZG93VHJlZUpvaW50Q2hpbGRyZW5DaGFuZ2Uo
KTsKK30KKwordm9pZCBFbGVtZW50OjpkaWRTaGFkb3dUcmVlSm9pbnRDaGlsZHJlbkNoYW5nZSgp
Cit7CisgICAgQVNTRVJUKGlzQ2hpbGRTaGFkb3dUcmVlSm9pbnQoKSk7CiAgICAgaWYgKEVsZW1l
bnRTaGFkb3cgKiBzaGFkb3cgPSB0aGlzLT5zaGFkb3coKSkKICAgICAgICAgc2hhZG93LT5pbnZh
bGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgp
OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbm9kZS0+c2V0U2hh
ZG93VHJlZUpvaW50KCk7CiB9CiAKKwogdm9pZCBFbGVtZW50OjpiZWdpblBhcnNpbmdDaGlsZHJl
bigpCiB7CiAgICAgY2xlYXJJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7CkBAIC0yMDk3LDcg
KzIxMDcsNyBAQCB2b2lkIEVsZW1lbnQ6Om5vcm1hbGl6ZUF0dHJpYnV0ZXMoKQogCiB2b2lkIEVs
ZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQsIFN0eWxlQ2hhbmdl
IGNoYW5nZSkKIHsKLSAgICBQc2V1ZG9FbGVtZW50KiBleGlzdGluZyA9IGhhc1JhcmVEYXRhKCkg
PyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChwc2V1ZG9JZCkgOiAwOworICAgIFBz
ZXVkb0VsZW1lbnQqIGV4aXN0aW5nID0gcHNldWRvRWxlbWVudChwc2V1ZG9JZCk7CiAgICAgaWYg
KGV4aXN0aW5nKSB7CiAgICAgICAgIC8vIFBzZXVkb0VsZW1lbnQgc3R5bGVzIGhhbmcgb2ZmIHRo
ZWlyIHBhcmVudCBlbGVtZW50J3Mgc3R5bGUgc28gaWYgd2UgbmVlZGVkCiAgICAgICAgIC8vIGEg
c3R5bGUgcmVjYWxjIHdlIHNob3VsZCBGb3JjZSBvbmUgb24gdGhlIHBzZXVkby4KQEAgLTIxMDgs
MTAgKzIxMTgsMTAgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lk
IHBzZXVkb0lkLCBTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIC8vIHdoZW4gUmVuZGVyT2Jq
ZWN0Ojppc0NoaWxkQWxsb3dlZCBvbiBvdXIgcGFyZW50IHJldHVybnMgZmFsc2UgZm9yIHRoZQog
ICAgICAgICAvLyBQc2V1ZG9FbGVtZW50J3MgcmVuZGVyZXIgZm9yIGVhY2ggc3R5bGUgcmVjYWxj
LgogICAgICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVl
ZGVkKHJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKSkpCi0gICAgICAg
ICAgICBlbGVtZW50UmFyZURhdGEoKS0+c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgMCk7Cisg
ICAgICAgICAgICBzZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCAwKTsKICAgICB9IGVsc2UgaWYg
KFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlUHNldWRvRWxlbWVudElmTmVl
ZGVkKHBzZXVkb0lkKSkgewogICAgICAgICBlbGVtZW50LT5hdHRhY2goKTsKLSAgICAgICAgZW5z
dXJlRWxlbWVudFJhcmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1lbnQu
cmVsZWFzZSgpKTsKKyAgICAgICAgc2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxlbWVudC5y
ZWxlYXNlKCkpOwogICAgIH0KIH0KIApAQCAtMjEzMiwxNiArMjE0MiwyNSBAQCBQYXNzUmVmUHRy
PFBzZXVkb0VsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZVBzZXVkb0VsZW1lbnRJZk5lZWRlZChQc2V1
ZG9JZCBwc2V1ZG9JZAogICAgIHJldHVybiBQc2V1ZG9FbGVtZW50OjpjcmVhdGUodGhpcywgcHNl
dWRvSWQpOwogfQogCi1Qc2V1ZG9FbGVtZW50KiBFbGVtZW50OjpiZWZvcmVQc2V1ZG9FbGVtZW50
KCkgY29uc3QKK2Jvb2wgRWxlbWVudDo6aGFzUHNldWRvRWxlbWVudHMoKSBjb25zdAogewotICAg
IHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQo
QkVGT1JFKSA6IDA7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRh
KCktPmhhc1BzZXVkb0VsZW1lbnRzKCk7CiB9CiAKLVBzZXVkb0VsZW1lbnQqIEVsZW1lbnQ6OmFm
dGVyUHNldWRvRWxlbWVudCgpIGNvbnN0CitQc2V1ZG9FbGVtZW50KiBFbGVtZW50Ojpwc2V1ZG9F
bGVtZW50KFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0
YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQoQUZURVIpIDogMDsKKyAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KHBz
ZXVkb0lkKSA6IDA7CiB9CiAKK3ZvaWQgRWxlbWVudDo6c2V0UHNldWRvRWxlbWVudChQc2V1ZG9J
ZCBwc2V1ZG9JZCwgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBlbGVtZW50KQoreworICAgIGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVtZW50
KTsKKyAgICByZXNldFNoYWRvd1RyZWVKb2ludCgpOworICAgIGZvciAoTm9kZSogY2hpbGQgPSBm
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAg
ICBjaGlsZC0+cmVzZXRTaGFkb3dUcmVlSm9pbnQoKTsKK30KKworCiAvLyBFbGVtZW50VHJhdmVy
c2FsIEFQSQogRWxlbWVudCogRWxlbWVudDo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggNjJlYmI1NTllOWEyZDkyODZiOTk5N2JkYTQ2MTVkNjA4YzQ1
NWVhZS4uMTBlNjVhMWRhZmQwNjFkYWE1MjhmMzI4Y2YzMmQxY2EwOTE5MDczNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC0zNjYsOCArMzY2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2luZ0No
aWxkcmVuKCk7CiAKLSAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29u
c3Q7Ci0gICAgUHNldWRvRWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAg
Ym9vbCBoYXNQc2V1ZG9FbGVtZW50cygpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIHBzZXVk
b0VsZW1lbnQoUHNldWRvSWQpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIGJlZm9yZVBzZXVk
b0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9FbGVtZW50KEJFRk9SRSk7IH0KKyAgICBQ
c2V1ZG9FbGVtZW50KiBhZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9F
bGVtZW50KEFGVEVSKTsgfQorICAgIGJvb2wgaXNDaGlsZFNoYWRvd1RyZWVKb2ludCgpIGNvbnN0
IHsgcmV0dXJuIGlzSW5zZXJ0aW9uUG9pbnQoKSB8fCBzaGFkb3coKSB8fCBoYXNQc2V1ZG9FbGVt
ZW50cygpOyB9CisgICAgdm9pZCBkaWRTaGFkb3dUcmVlSm9pbnRDaGlsZHJlbkNoYW5nZSgpOwog
CiAgICAgLy8gRWxlbWVudFRyYXZlcnNhbCBBUEkKICAgICBFbGVtZW50KiBmaXJzdEVsZW1lbnRD
aGlsZCgpIGNvbnN0OwpAQCAtNTA0LDYgKzUwOCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkLCBTdHlsZUNoYW5nZSA9IE5vQ2hh
bmdlKTsKICAgICBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGNyZWF0ZVBzZXVkb0VsZW1lbnRJ
Zk5lZWRlZChQc2V1ZG9JZCk7CisgICAgdm9pZCBzZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lkLCBQ
YXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+KTsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5l
ZWQgZm9yIEF0dHIgdG8gY2FsbCB3aWxsTW9kaWZ5QXR0cmlidXRlL2RpZE1vZGlmeUF0dHJpYnV0
ZS4KICAgICBmcmllbmQgY2xhc3MgQXR0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aAppbmRleCAxOTdjMjQwYjgxNWQwZjBiM2YyYmI5MDZhNTlhMzhlNjdlOGQ1OGE1Li44ODNmNTM0
YTk0NTlmYjAxYjcyNGYxODdlMDExMzcyZmE3OTdjMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UHNl
dWRvRWxlbWVudChQc2V1ZG9JZCwgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50Pik7CiAgICAgUHNl
dWRvRWxlbWVudCogcHNldWRvRWxlbWVudChQc2V1ZG9JZCkgY29uc3Q7CisgICAgYm9vbCBoYXNQ
c2V1ZG9FbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdGVkQmVmb3JlIHx8IG1fZ2Vu
ZXJhdGVkQWZ0ZXI7IH0KIAogICAgIHZvaWQgcmVzZXRDb21wdXRlZFN0eWxlKCk7CiAgICAgdm9p
ZCByZXNldER5bmFtaWNSZXN0eWxlT2JzZXJ2YXRpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5jcHAKaW5kZXggMTQ5N2ZkMGRhNmMxNmI0ZGVlNmU5N2JiYWE0MTVmMTM4ODM3OTQy
Yy4uMDNhMzUxODA3ZGM4NTY5ZGZiYzk5NzZmNTliNjg5MDVlNTYxZjkzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtODQsOCArODQsOCBAQCB2b2lkIEVsZW1lbnRTaGFk
b3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dS
b290PiBzaAogICAgIHNoYWRvd1Jvb3QtPnNldFBhcmVudFRyZWVTY29wZShzaGFkb3dIb3N0LT50
cmVlU2NvcGUoKSk7CiAgICAgbV9zaGFkb3dSb290cy5wdXNoKHNoYWRvd1Jvb3QuZ2V0KCkpOwog
ICAgIHNldFZhbGlkaXR5VW5kZXRlcm1pbmVkKCk7Ci0gICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlv
bihzaGFkb3dIb3N0KTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dIb3N0
KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQoKSk7CisgICAgc2hhZG93SG9zdC0+ZGlkU2hhZG93VHJl
ZUpvaW50Q2hpbGRyZW5DaGFuZ2UoKTsKIAogICAgIC8vIEZJWE1FKDk0OTA1KTogU2hhZG93SG9z
dCBzaG91bGQgYmUgcmVhdHRhY2hlZCBkdXJpbmcgcmVjYWxjU3R5bGUuCiAgICAgLy8gU2V0IHNv
bWUgZmxhZyBoZXJlIGFuZCByZWNyZWF0ZSBzaGFkb3cgaG9zdHMnIHJlbmRlcmVyIGluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKaW5kZXggNzY1MzAyYWUxMzVkMDVjMjJkNjY0NDljMmRmMDQ1MDk4ZjAzYTk2NC4u
MDU2ZmE1MGIxYTQyYjcxNmZkZGYyNDYzZDI2Y2NhOWY4ZmMwNTQ0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cApAQCAtMTI5MCw2ICsxMjkwLDE4IEBAIEVsZW1lbnQqIE5vZGU6OnBhcmVudE9ySG9zdEVsZW1l
bnQoKSBjb25zdAogICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KTsKIH0KIAorYm9vbCBOb2Rl
Ojppc1NoYWRvd1RyZWVKb2ludFNsb3coKSBjb25zdAoreworICAgIGlmIChpc1NoYWRvd1Jvb3Qo
KSB8fCAoaXNFbGVtZW50Tm9kZSgpICYmIChpc0luc2VydGlvblBvaW50KCkgfHwgaXNQc2V1ZG9F
bGVtZW50KCkgfHwgdG9FbGVtZW50KHRoaXMpLT5oYXNQc2V1ZG9FbGVtZW50cygpKSkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5v
ZGUoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSB8fCAocGFyZW50LT5p
c0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KHBhcmVudCktPmlzQ2hpbGRTaGFkb3dUcmVlSm9p
bnQoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CiAKIGJvb2wgTm9kZTo6aXNCbG9ja0Zsb3coKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5k
ZXggNTA1MzliYjlkMGYzM2Y2ZjczNjFlZDgzM2MwYmNmYWY0NjJjNmU0My4uNzdhNDIxZmMxZTJh
N2FlNjQ2MDAwODEyYTM0ODQ3NGNiMzNiMDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNTEsNiArMjUx
LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzRG9jdW1lbnRGcmFnbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGdldEZsYWcoSXNEb2N1bWVudEZyYWdtZW50RmxhZyk7IH0KICAgICBib29sIGlzU2hhZG93
Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGlzRG9jdW1lbnRGcmFnbWVudCgpICYmIGRvY3VtZW50RnJh
Z21lbnRJc1NoYWRvd1Jvb3QoKTsgfQogICAgIGJvb2wgaXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0
IHsgcmV0dXJuIGdldEZsYWcoSXNJbnNlcnRpb25Qb2ludEZsYWcpOyB9CisgICAgYm9vbCBpc1No
YWRvd1RyZWVKb2ludCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dUcmVlSm9pbnRG
bGFnKTsgfQorICAgIGJvb2wgaXNTaGFkb3dUcmVlSm9pbnRTbG93KCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRTaGFkb3dUcmVlSm9pbnQoKSB7IHNldEZsYWcoSXNTaGFkb3dUcmVlSm9pbnRGbGFnKTsg
fQorICAgIHZvaWQgcmVzZXRTaGFkb3dUcmVlSm9pbnQoKSB7IHNldEZsYWcoaXNTaGFkb3dUcmVl
Sm9pbnRTbG93KCksIElzU2hhZG93VHJlZUpvaW50RmxhZyk7IH0KKwogICAgIGJvb2wgaW5OYW1l
ZEZsb3coKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEluTmFtZWRGbG93RmxhZyk7IH0KICAgICBi
b29sIGhhc0N1c3RvbUNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzQ3VzdG9t
Q2FsbGJhY2tzRmxhZyk7IH0KIApAQCAtNzA0LDExICs3MDksMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMjMsCiAgICAgICAgIFY4Q29sbGVjdGFi
bGVEdXJpbmdNaW5vckdDRmxhZyA9IDEgPDwgMjQsCiAgICAgICAgIElzSW5zZXJ0aW9uUG9pbnRG
bGFnID0gMSA8PCAyNSwKKyAgICAgICAgSXNTaGFkb3dUcmVlSm9pbnRGbGFnID0gMSA8PCAyNiwK
IAogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZs
YWcKICAgICB9OwogCi0gICAgLy8gNiBiaXRzIHJlbWFpbmluZworICAgIC8vIDUgYml0cyByZW1h
aW5pbmcKIAogICAgIGJvb2wgZ2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4g
bV9ub2RlRmxhZ3MgJiBtYXNrOyB9CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wgZiwgTm9kZUZsYWdz
IG1hc2spIGNvbnN0IHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+bWFzaykgfCAoLShp
bnQzMl90KWYgJiBtYXNrKTsgfSAKQEAgLTcyMSwxNSArNzI3LDE1IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgQ3JlYXRlVGV4dCA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc1RleHRGbGFnLAogICAgICAg
ICBDcmVhdGVDb250YWluZXIgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb250YWluZXJGbGFnLCAK
ICAgICAgICAgQ3JlYXRlRWxlbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRWxlbWVudEZsYWcs
IAotICAgICAgICBDcmVhdGVQc2V1ZG9FbGVtZW50ID0gIENyZWF0ZUVsZW1lbnQgfCBJbkRvY3Vt
ZW50RmxhZywKLSAgICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElz
RG9jdW1lbnRGcmFnbWVudEZsYWcsCisgICAgICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3Jl
YXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFnIHwgSXNTaGFkb3dUcmVlSm9pbnRGbGFnLAorICAg
ICAgICBDcmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdt
ZW50RmxhZyB8IElzU2hhZG93VHJlZUpvaW50RmxhZywKICAgICAgICAgQ3JlYXRlRG9jdW1lbnRG
cmFnbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFnbWVudEZsYWcsCiAgICAg
ICAgIENyZWF0ZVN0eWxlZEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwgSXNTdHlsZWRFbGVtZW50
RmxhZywgCiAgICAgICAgIENyZWF0ZUhUTUxFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8
IElzSFRNTEZsYWcsIAogICAgICAgICBDcmVhdGVGcmFtZU93bmVyRWxlbWVudCA9IENyZWF0ZUhU
TUxFbGVtZW50IHwgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZywKICAgICAgICAgQ3JlYXRlU1ZHRWxl
bWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc1NWR0ZsYWcsCiAgICAgICAgIENyZWF0ZURv
Y3VtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSW5Eb2N1bWVudEZsYWcsCi0gICAgICAgIENyZWF0
ZUluc2VydGlvblBvaW50ID0gQ3JlYXRlSFRNTEVsZW1lbnQgfCBJc0luc2VydGlvblBvaW50Rmxh
ZywKKyAgICAgICAgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQgPSBDcmVhdGVIVE1MRWxlbWVudCB8IElz
SW5zZXJ0aW9uUG9pbnRGbGFnIHwgSXNTaGFkb3dUcmVlSm9pbnRGbGFnLAogICAgICAgICBDcmVh
dGVFZGl0aW5nVGV4dCA9IENyZWF0ZVRleHQgfCBIYXNOYW1lT3JJc0VkaXRpbmdUZXh0RmxhZywK
ICAgICB9OwogICAgIE5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDJjODlhODhkOWZkNDg2
YWJjMTEwNzY5ZGQ2OWQ1ZDE3ZjU5MTI0ZTAuLjE2OTgyYzhiOTI4YWJlMjZjOGE2NzkyNmExYTcy
N2QwYWQ4YWMzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAKLSNpbmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29udGVudERpc3Ry
aWJ1dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgpAQCAtNTgsNyArNTcsNyBAQCBO
b2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAg
ICA6IG1fbm9kZShub2RlKQogICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKIHsKLSAgICBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZpbmRQYXJlbnQobV9ub2RlLCAmbV9wYXJlbnREZXRh
aWxzKTsKKyAgICBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwYXJlbnQobV9ub2RlLCAmbV9wYXJl
bnREZXRhaWxzKTsKIH0KIAogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250
ZXh0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKQEAgLTg1LDkgKzg0LDggQEAgUmVu
ZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAg
ICBpZiAobV9wYXJlbnREZXRhaWxzLm5vZGUoKSAmJiAhbV9wYXJlbnREZXRhaWxzLm5vZGUoKS0+
YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgd2Fsa2VyKG1fbm9kZSk7Ci0gICAgZm9yICh3YWxrZXIucHNldWRvQXdhcmVOZXh0U2li
bGluZygpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRl
cmVyKCkpIHsKKyAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
OjpuZXh0U2libGluZyhtX25vZGUpOyBzaWJsaW5nOyBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6bmV4dFNpYmxpbmcoc2libGluZykpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAvLyBSZW5k
ZXJlcnMgZm9yIGVsZW1lbnRzIGF0dGFjaGVkIHRvIGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNr
aXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBwYXJlbnRlZCBkaWZmZXJlbnRseS4KICAgICAgICAgICAg
IGlmIChyZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxl
KCkgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA4LDEwICsxMDYsOCBAQCBSZW5kZXJPYmplY3QqIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKCkgY29uc3QKIAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSBPKE5eMikgYXZvaWRhbmNlIGFzIG5leHRSZW5k
ZXJlciBkb2VzCiAgICAgLy8gaG93ZXZlciwgd2hlbiBJIHRyaWVkIGFkZGluZyBpdCwgc2V2ZXJh
bCB0ZXN0cyBmYWlsZWQuCi0KLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG1f
bm9kZSk7Ci0gICAgZm9yICh3YWxrZXIucHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKTsgd2Fs
a2VyLmdldCgpOyB3YWxrZXIucHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHdhbGtlci5nZXQoKS0+cmVuZGVyZXIoKSkg
eworICAgIGZvciAoTm9kZSogc2libGluZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZp
b3VzU2libGluZyhtX25vZGUpOyBzaWJsaW5nOyBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6cHJldmlvdXNTaWJsaW5nKHNpYmxpbmcpKSB7CisgICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gUmVu
ZGVyZXJzIGZvciBlbGVtZW50cyBhdHRhY2hlZCB0byBhIGZsb3cgdGhyZWFkIHNob3VsZCBiZSBz
a2lwcGVkIGJlY2F1c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlmZmVyZW50bHkuCiAgICAgICAgICAg
ICBpZiAocmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5zdHls
ZSgpICYmICFyZW5kZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmgKaW5kZXggN2RhNDhlMjlhNDI3ZDlhZTc0YzYzMjRlYzQyYThiZTAyNDFlYmI2My4uMGFm
ZmY2MTRkYTZhMmQxNjZkYzc5MTEwYjIyOTU2ODRkZjJhZjU1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5kZWYgTm9k
ZVJlbmRlcmluZ0NvbnRleHRfaAogI2RlZmluZSBOb2RlUmVuZGVyaW5nQ29udGV4dF9oCiAKLSNp
bmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmgiCisKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC02
OSw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQo
KTsKIAogICAgIE5vZGUqIG1fbm9kZTsKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBh
cmVudFRyYXZlcnNhbERldGFpbHMgbV9wYXJlbnREZXRhaWxzOworICAgIE5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWw6OlBhcmVudERldGFpbHMgbV9wYXJlbnREZXRhaWxzOwogICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gbV9zdHlsZTsKICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxv
d1JlbmRlcmVyOwogICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlmMjNiMDdj
ZDI1N2ViYzcxZmQ3NmRiZjE4NTk1ZDQ1ZDMzZWE0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcApAQCAtMCwwICsxLDEwMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
LmgiCisKKyNpbmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJQ
c2V1ZG9FbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIE5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWwgeworCit2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlSW5z
ZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQoreworICAgIGlmICgh
bV9pbnNlcnRpb25Qb2ludCkKKyAgICAgICAgbV9pbnNlcnRpb25Qb2ludCA9IGluc2VydGlvblBv
aW50OworfQorCit2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25z
dCBTaGFkb3dSb290KiByb290KQoreworICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1f
cmVzZXRTdHlsZUluaGVyaXRhbmNlIHx8IHJvb3QtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOwor
fQorCit2b2lkIFBhcmVudERldGFpbHM6OmRpZEZpbmROb2RlKENvbnRhaW5lck5vZGUqIG5vZGUp
Cit7CisgICAgaWYgKCFtX291dE9mQ29tcG9zaXRpb24pCisgICAgICAgIG1fbm9kZSA9IG5vZGU7
Cit9CisKK05vZGUqIHBhcmVudFNsb3coY29uc3QgTm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyog
ZGV0YWlscykKK3sKKyAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUsIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q3Jvc3NVcHBlckJvdW5kYXJ5LCBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OkNhblN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsKKyAgICBDb250YWluZXJO
b2RlKiBmb3VuZCA9IHRvQ29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVyc2VQYXJlbnQod2Fsa2Vy
LmdldCgpLCBkZXRhaWxzKSk7CisgICAgaWYgKGZvdW5kKSAvLyBYWFg6IGtpbGwgdGhpcworICAg
ICAgICBkZXRhaWxzLT5kaWRGaW5kTm9kZShmb3VuZCk7CisgICAgcmV0dXJuIGZvdW5kOworfQor
CitOb2RlKiBuZXh0U2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworICAgIGlmIChub2RlLT5pc0JlZm9yZVBz
ZXVkb0VsZW1lbnQoKSkgeworICAgICAgICB3YWxrZXIucGFyZW50KCk7CisgICAgICAgIHdhbGtl
ci5maXJzdENoaWxkKCk7CisgICAgfSBlbHNlIAorICAgICAgICB3YWxrZXIubmV4dFNpYmxpbmco
KTsKKworICAgIGlmICh3YWxrZXIuZ2V0KCkgfHwgbm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKworICAgIE5vZGUqIHBhcmVudCA9IHdh
bGtlci50cmF2ZXJzZVBhcmVudChub2RlKTsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNF
bGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCktPmFmdGVyUHNl
dWRvRWxlbWVudCgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIHByZXZpb3VzU2libGlu
Z1Nsb3coY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIg
d2Fsa2VyKG5vZGUpOworICAgIGlmIChub2RlLT5pc0FmdGVyUHNldWRvRWxlbWVudCgpKSB7Cisg
ICAgICAgIHdhbGtlci5wYXJlbnQoKTsKKyAgICAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOworICAg
IH0gZWxzZSAKKyAgICAgICAgd2Fsa2VyLnByZXZpb3VzU2libGluZygpOworCisgICAgaWYgKHdh
bGtlci5nZXQoKSB8fCBub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIHdhbGtlci5nZXQoKTsKKworICAgIE5vZGUqIHBhcmVudCA9IHdhbGtlci50cmF2ZXJzZVBh
cmVudChub2RlKTsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQor
ICAgICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsK
KworICAgIHJldHVybiAwOworfQorCit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDg3OTA5ODllMDAw
NzUzMzk2YzIyMjM5YzhkMDUyZTkwYzE1YjY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApAQCAtMCwwICsxLDEyMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbF9oCisjZGVmaW5lIE5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWxfaAorCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEluc2VydGlvblBvaW50OworCituYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbCB7CisKK2NsYXNzIFBhcmVudERldGFpbHMgeworcHVibGljOgorICAgIFBhcmVudERl
dGFpbHMoKQorICAgICAgICA6IG1fbm9kZSgwKQorICAgICAgICAsIG1faW5zZXJ0aW9uUG9pbnQo
MCkKKyAgICAgICAgLCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZShmYWxzZSkKKyAgICAgICAgLCBt
X291dE9mQ29tcG9zaXRpb24oZmFsc2UpCisgICAgeyB9CisKKyAgICBDb250YWluZXJOb2RlKiBu
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludDsgfQorICAgIGJvb2wg
cmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNldFN0eWxlSW5oZXJp
dGFuY2U7IH0KKyAgICBib29sIG91dE9mQ29tcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX291
dE9mQ29tcG9zaXRpb247IH0KKworICAgIHZvaWQgZGlkRmluZE5vZGUoQ29udGFpbmVyTm9kZSop
OworICAgIHZvaWQgZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCopOwor
ICAgIHZvaWQgZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0IFNoYWRvd1Jvb3QqKTsKKyAgICB2
b2lkIGNoaWxkV2FzT3V0T2ZDb21wb3NpdGlvbigpIHsgbV9vdXRPZkNvbXBvc2l0aW9uID0gdHJ1
ZTsgfQorICAgIHZvaWQgc2V0Tm9kZShDb250YWluZXJOb2RlKiBub2RlKSB7IG1fbm9kZSA9IG5v
ZGU7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJlbnREZXRhaWxzJiBvdGhlcikK
KyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlIAorICAgICAgICAg
ICAgJiYgbV9pbnNlcnRpb25Qb2ludCA9PSBvdGhlci5tX2luc2VydGlvblBvaW50CisgICAgICAg
ICAgICAmJiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA9PSBvdGhlci5tX3Jlc2V0U3R5bGVJbmhl
cml0YW5jZQorICAgICAgICAgICAgJiYgbV9vdXRPZkNvbXBvc2l0aW9uID09IG90aGVyLm1fb3V0
T2ZDb21wb3NpdGlvbjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ29udGFpbmVyTm9kZSogbV9u
b2RlOyAvLyBYWFg6IEtpbGwgdGhpcworICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBv
aW50OworICAgIGJvb2wgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2U7CisgICAgYm9vbCBtX291dE9m
Q29tcG9zaXRpb247Cit9OworCitOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudERldGFp
bHMqKTsKK05vZGUqIHBhcmVudFNsb3coY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqKTsKK05v
ZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKK05vZGUqIG5leHRTaWJsaW5nU2xvdyhjb25z
dCBOb2RlKik7CitOb2RlKiBwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSopOworTm9kZSogcHJl
dmlvdXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKik7CisKKworaW5saW5lIE5vZGUqIHBhcmVudChj
b25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQoreworICAgIGlmICghbm9k
ZS0+aXNTaGFkb3dUcmVlSm9pbnQoKSkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgUGFyZW50
RGV0YWlscyBzbG93RGV0YWlsczsKKyAgICAgICAgaWYgKENvbnRhaW5lck5vZGUqIHAgPSBub2Rl
LT5wYXJlbnROb2RlKCkpIC8vIFhYWDoga2lsbCB0aGlzCisgICAgICAgICAgICBkZXRhaWxzLT5k
aWRGaW5kTm9kZShwKTsKKyAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9PSBwYXJl
bnRTbG93KG5vZGUsICZzbG93RGV0YWlscykpOworICAgICAgICBBU1NFUlQoc2xvd0RldGFpbHMg
PT0gKmRldGFpbHMpOworI2VuZGlmCisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7
CisgICAgfQorCisgICAgcmV0dXJuIHBhcmVudFNsb3cobm9kZSwgZGV0YWlscyk7Cit9CisKK2lu
bGluZSBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmICghbm9k
ZS0+aXNTaGFkb3dUcmVlSm9pbnQoKSkgeworICAgICAgICBBU1NFUlQobmV4dFNpYmxpbmdTbG93
KG5vZGUpID09IG5vZGUtPm5leHRTaWJsaW5nKCkpOworICAgICAgICByZXR1cm4gbm9kZS0+bmV4
dFNpYmxpbmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbmV4dFNpYmxpbmdTbG93KG5vZGUpOwor
fQorCitpbmxpbmUgTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgaWYgKCFub2RlLT5pc1NoYWRvd1RyZWVKb2ludCgpKSB7CisgICAgICAgIEFTU0VSVChwcmV2
aW91c1NpYmxpbmdTbG93KG5vZGUpID09IG5vZGUtPnByZXZpb3VzU2libGluZygpKTsKKyAgICAg
ICAgcmV0dXJuIG5vZGUtPnByZXZpb3VzU2libGluZygpOworICAgIH0KKworICAgIHJldHVybiBw
cmV2aW91c1NpYmxpbmdTbG93KG5vZGUpOworfQorCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXggYzc3YTI5
NTQ0MDUwOWM0NDk2NzdlNDA2MDMyMDhkM2ZkYTBhYmZkOS4uYThlNTg5MTdhYTM2ZDAxMTI3MjBm
OGY1ZDhiZjA4Y2FjMjVlMTczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVk
b0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApA
QCAtNDMsNiArNDMsNyBAQCBQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KEVsZW1lbnQqIHBh
cmVudCwgUHNldWRvSWQgcHNldWRvSWQpCiAgICAgOiBFbGVtZW50KHBzZXVkb0VsZW1lbnRUYWdO
YW1lKCksIHBhcmVudC0+ZG9jdW1lbnQoKSwgQ3JlYXRlUHNldWRvRWxlbWVudCkKICAgICAsIG1f
cHNldWRvSWQocHNldWRvSWQpCiB7CisgICAgQVNTRVJUKHBzZXVkb0lkICE9IE5PUFNFVURPKTsK
ICAgICBBU1NFUlQocGFyZW50LT5pbkRvY3VtZW50KCkpOwogICAgIHNldFBhcmVudE9ySG9zdE5v
ZGUocGFyZW50KTsKICAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcAppbmRleCA4OTcwODllMzFkOTgwNzRmMGZhYjE5YjIyYTYzZjVhN2NmMDM4NjNl
Li5lOTBkYjY4YTY5ZjljOThkOTg5NzI0NTZhNDdjMTFkZmI5NDZjMTI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCkBAIC0zMjYsNiArMzI2LDggQEAgdm9pZCBTaGFkb3dSb290OjpjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9k
ZSoKIAogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIs
IGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAgICAgb3duZXIo
KS0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOworICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICBj
aGlsZC0+c2V0U2hhZG93VHJlZUpvaW50KCk7CiB9CiAKIGNvbnN0IFZlY3RvcjxJbnNlcnRpb25Q
b2ludCo+JiBTaGFkb3dSb290OjppbnNlcnRpb25Qb2ludExpc3QoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmlu
ZGV4IDY3MzdhZmZlYzc4YTA2ZDRiMGU0OGZiOGYxOWYxMDRiZWNlNjA3YzguLjJjYjhmYjZhMDll
ZTI1ZWFlNzEzOTk4Mjk1ZjA1NmZjMWUzNDlmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJl
bmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNo
YWRvd1Jvb3QuaCIKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5l
VGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5k
ZXggZDcxMDIxYmI4MWQwMzgyN2FiYjVkYWRkYTg3NWE5Yzg4ZDg2OWQ0Yy4uOWNiNDZmMmE4Mzgz
Nzg4YWYwMjgxMmRiMThiZDNkMTVhNjcwNGUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRHcm91cEVsZW1lbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRNTE9w
dEdyb3VwRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVt
ZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVj
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCAzOTg4OGQ4ZDYxZGU1NzIyNTBiODIwM2Zh
MGFiODI5OTdjMjRiYjU5Li5mNTEwOTY4NDA3ZWJiOTk5NGVkOTg4Y2FmNWYxYmUwN2M1NmZmMGYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgog
I2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCmluZGV4IGVhNWY0
MDc3YzFhZGU0NzQ0YThjMjczMWE5YWIwZGU4MjQ0NmEyZWEuLjEzNjc1NWJlN2E3NmZjMmM5N2I2
MTk3ZDQwMjFlYjAxYzZiOTdiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFByb2dyZXNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jl
c3NFbGVtZW50LmNwcApAQCAtMjMsMTIgKzIzLDEzIEBACiAKICNpZiBFTkFCTEUoUFJPR1JFU1Nf
RUxFTUVOVCkKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
LSNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUHJvZ3Jl
c3NTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKICNpbmNsdWRl
ICJTZWxlY3RSdWxlRmVhdHVyZVNldC5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179014</attachid>
            <date>2012-12-12 03:19:32 -0800</date>
            <delta_ts>2012-12-12 04:00:47 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-104332-20121212201653.patch</filename>
            <type>text/plain</type>
            <size>42402</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTczOTI5NzNjNTE1ODJj
NzQ4MDQ1NTU1MzZiZDc4NGQzNDcyZTE3Yy4uNGQwZTMzNzUxYzgzN2QwOTk1YzUyYTIzNTgyZjNj
ZDU1NDFiYzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxMi0xMi0xMiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgTm9kZVJlbmRlcmlu
Z0NvbnRleHQgaXMgc2xvdyBkdWUgdG8gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlUmVuZGVyaW5nQ29u
dGV4dCBoYXMgc29tZSBzbG93bmVzcyBkdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YKKyAgICAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHRoYXQgTlJDIHJlbGllcyBvbi4gVGhpcyBjaGFuZ2UK
KyAgICAgICAgY3JlYXRlcyBzb21lIGZhc3QgcGF0aHMgdG8gYWRkcmVzcyBzdWNoIHNsb3duZXNz
LgorCisgICAgICAgID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCBtb2R1bGU6CisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIG5hbWVzcGFjZSwg
YSBzaXN0ZXIKKyAgICAgICAgb2YgTm9kZVRyYXZlcnNhbC4gTlJUIGNvbnNpc3RzIG9mIGEgc2V0
IG9mIHRyZWUgdHJhdmVyc2FsCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGlzIHJlc3BvbnNpYmxl
IGZvciB0cmF2ZXJzYWwgaW4gTlJDLiAgQmVmb3JlIHRoaXMKKyAgICAgICAgY2hhZ25lLCBOUkMg
ZGlyZWN0bHkgdXNlZCBDU1RXLiBUaGlzIE5SVCBtb2R1bGUgaGlkZXMgYW5kIG5hcnJvd3MKKyAg
ICAgICAgdGhlIHVzYWdlIG9mIENTVFcuCisKKyAgICAgICAgLSBUcmF2ZXJzYWxzIHByb3ZpZGVk
IGJ5IE5SVCBoYXZlIGZhc3QgcGF0aHMuIEluIG1hbnkgY2FzZSwgc3VjaCB0cmF2ZXJzYWxzCisg
ICAgICAgICAgZG9lc24ndCBuZWVkIHRvIHVzZSBDU1RXIGFuZCBqdXN0IGdvZXMgbmVpZ2hib3Jp
bmcgbm9kZXMgaW4gYSBwbGFpbiBET00gd2F5LgorICAgICAgICAtIEl0IGFsc28gaGFuZGxlcyBO
UkMgc3BlY2lmaWMgdHJhdmVyc2FsIGNvbmNlcm5zIGxpa2UgcHNldWRvIGVsZW1lbnRzLgorICAg
ICAgICAgIENTVFc6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBhbmQgQ1NUVzo6cHNldWRvQXdh
cmVQcmV2aW91c1NpYmxpbmcoKSBhcmUKKyAgICAgICAgICBtZXJnZWQgaW50byB0aGlzIG1vZHVs
ZS4KKyAgICAgICAgLSBDU1RXOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIGlzIG1vdmVkIGFuZCBy
ZW5hbWVkIHRvCisgICAgICAgICAgTlJUOjpQYXJlbnREZXRhaWxzIHdpdGggc21hbGwgbW9kaWZp
Y2F0aW9uLiBUaGlzIGlzIGEgcHVyZQorICAgICAgICAgIHJlZmFjdG9yaW5nOiBBcyB0aGUgbmFt
ZSBpbXBsaWVzLCBUaGlzIGNsYXNzIGlzIHVzZWQgb25seSBieSBOUkMKKyAgICAgICAgICBhbmQg
dXNlZCBkdXJpbmcgYSB0cmF2ZXJzYWwgdGhlcmUuCisKKyAgICAgICAgTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbCBpcyBhbiBpc29sYXRpb24gbGF5ZXIgYmV0d2VlbiBnZW5lcmljIERPTSBhbmQgQ1NU
Vy4gVGhpcyBoaWRlcyBDU1RXCisgICAgICAgIGJlaGluZCB0aGUgd2FsbCBhbmQgd2lsbCBoZWxw
IGZ1cnRoZXIgcmVkdWN0aW9uIG9mIGl0cyB1c2FnZS4KKworICAgICAgICA9IE5vZGU6Ok5lZWRz
U2hhZG93VHJlZVdhbGtlckZsYWcgZmxhZzoKKworICAgICAgICBOUlQgZmFzdCBwYXRoIGlzIGVu
YWJsZWQgYnkgbmV3bHkgaW50cm9kdWNlZCBOZWVkc1NoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAg
bm9kZSBmbGFnLiBFYWNoIERPTSBub2RlIGlzIG5vdyBtYXJrZCBhcyBOZWVkc1NoYWRvd1RyZWVX
YWxrZXIgaWYKKyAgICAgICAgaXQgcmVxdWlyZXMgbm9uLXRyaXZpYWwgdHJhdmVyc2FsIGluIE5S
VCB3aGljaCB1c2VzIENTVFcuIFRoaXMKKyAgICAgICAgbWVhbnMgdGhhdCBlYWNoIG5vZGUgY2Fu
IGdvIGZhc3QgcGF0aCB1bmxlc3MgaXQgaXMgbWFya2VkIHdpdGggdGhpcyBmbGFnLgorCisgICAg
ICAgIEEgbm9kZSBpcyBtYXJrZWQgYXMgaXQgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyIGlmOgorCisg
ICAgICAgIC0gVGhlIG5vZGUgaXMgYSBzaGFkb3cgYm91bmRhcnkgbGlrZSBJbnNlcnRpb25Qb2lu
dCBvciBTaGFkb3dSb290LAorICAgICAgICAtIFRoZSBub2RlIGhhcyBwc2V1ZG8gZWxlbWVudHMg
bGlrZSBnZW5lcmF0ZWQgY29udGVudCwKKyAgICAgICAgLSBUaGUgbm9kZSBpcyBhIHBzZXVkbyBl
bGVtZW50IG9yCisgICAgICAgIC0gVGhlIHBhcmVudCBvZiB0aGUgbm9kZSBpcyBhIHNoYWRvdyBi
b3VuZGFyeSBvciBwc2V1ZG8gZWxlbWVudCBob2xkZXIuCisKKyAgICAgICAgVGhpcyBjcml0ZXJp
YSBpcyBkZWZpbmVkIGluIE5vZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKS4KKworICAg
ICAgICBUaGUgb3JpZ2luYWwgaWRlYSBvZiB0aGlzIGNoYW5nZSB3YXMgZGVtb25zdHJhdGVkIGJ5
IEFudHRpIEtvaXZpc3RvIG9uIGJ1ZyAxMDMyMDggYW5kIGJ1ZyAxMDQ1MDcuCisgICAgICAgIFRo
aXMgY2hhZ25lIGhhcyAzLTQlIHNwZWVkdXAgb24gRHJvbWFlby9kb20tbW9kaWZ5L2lubmVySFRN
TCBvbiBBcHBsZSBNYWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcDoKKyAgICAg
ICAgKiBkb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmg6CisgICAgICAgIChDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkpOgor
ICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKTogUmVmYWN0b3Jl
ZCBhbmQgYWRkZWQgZmxhZyBtYWludGVuYW5jZSBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkU2hhZG93VHJlZUF3YXJlQ2hpbGRyZW5DaGFu
Z2UpOiBBZGRlZCBmb3IgZmxhZyBtYWludGVuYW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOiBSZWZhY3RvcmVkCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpoYXNQc2V1ZG9FbGVtZW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6cHNldWRvRWxlbWVudCk6IEV4dHJhY3RlZCBmcm9tIGJlZm9yZVBzZXVkb0VsZW1lbnQo
KSBldGMuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRQc2V1ZG9FbGVtZW50KTogRXh0
cmFjdGVkIGZyb20gdXBkYXRlUHNldWRvRWxlbWVudCgpIGFuZCBhZGRlZCBmbGFnIG1haW50ZW5h
bmNlIGxvZ2ljLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmJlZm9yZVBzZXVkb0VsZW1lbnQpOiBSZWZhY3Rv
cmVkIHRvIHVzZSBwc2V1ZG9FbGVtZW50KCkKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFm
dGVyUHNldWRvRWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hp
bGROZWVkc1NoYWRvd1dhbGtlcik6IEFkZGVkLgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6aGFzUHNldWRvRWxlbWVu
dHMpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXJTbG93
KTogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
Om5lZWRzU2hhZG93VHJlZVdhbGtlcik6IEFkZGVkLgorICAgICAgICAoTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnJlc2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKTogQWRkZWQuCisg
ICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKToKKyAgICAgICAg
KiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdDb250
ZXh0KToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOb2RlUmVuZGVyaW5nVHJhdmVyc2FsKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6OmRp
ZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQpOiBNb3ZlZCBmcm9tIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERl
dGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6ZGlkRmluZE5vZGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudFNsb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNpYmxpbmdT
bG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3Vz
U2libGluZ1Nsb3cpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
KToKKyAgICAgICAgKFBhcmVudERldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6UGFyZW50RGV0YWlscyk6IE1vdmVkIGZyb20g
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjppbnNlcnRpb25Qb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpyZXNl
dFN0eWxlSW5oZXJpdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6UGFyZW50RGV0YWlsczo6b3V0T2ZDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpjaGlsZFdhc091dE9mQ29t
cG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFy
ZW50RGV0YWlsczo6c2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsOjpQYXJlbnREZXRhaWxzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAqIGRvbS9Qc2V1ZG9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OlBzZXVkb0VsZW1l
bnQpOiBBZGRlZCBhbiBhc3NlcnRpb24uCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2VkKTogQWRkZWQgZmxh
ZyBtYWludGVuYW5jZSBsb2dpYy4KKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgICog
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25F
bGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorCiAy
MDEyLTEyLTExICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBWaWRlbyBUcmFjayBjb21waWxlIG9uIFdpbmRvd3MgaW4gZGVidWcgbW9kZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggZTNjYTljOWU4YTg3ZDVkZDRmYThiZmRmOWI5MzBjNDNhYTg3YzU1
OS4uZjQ2MDgzNTE5MDJkZDQxNjFmMzcyYjAxY2Q5OTFlNmQ1ZGViYjZhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTExOTIsNiArMTE5Miw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBk
b20vTm9kZUl0ZXJhdG9yLmNwcAogICAgIGRvbS9Ob2RlUmFyZURhdGEuY3BwCiAgICAgZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorICAgIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNw
cAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcAogICAgIGRvbS9Ob3RhdGlvbi5jcHAKICAgICBk
b20vT3ZlcmZsb3dFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDIz
N2U3MjNiODA2MGRmZDBiNDlmNzJjYTBmOGRkMWZkYTAzZDQ3ZjYuLjEwYjcwMzc4ODBmMmIyNWYz
ZmZmOGM5M2Q0NWJiNTU2MmJhODdkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtMjg3Myw2ICsyODczLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZUxpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCisJU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBcCisJU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlclN0eWxlLmggXAogICAgIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlVHJhdmVyc2FsLmNwcCBc
CiAgICAgU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRl
eCA3NTUzY2E5ZTkwNWMwYzU3YzhhNjEzNTQ2ODVmMjlmODA2ZjNiZmZjLi41MTA1YjAzNTliODBl
YjJmZTU4NGFhZGI0M2EyMjBmMzU1MmRiNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTQyOSw2ICs0Mjks
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm9kZUl0ZXJhdG9yLmNwcCBcCiAgICAgZG9tL05v
ZGVSYXJlRGF0YS5jcHAgXAogICAgIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgXAorICAg
IGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwu
Y3BwIFwKICAgICBkb20vTm90YXRpb24uY3BwIFwKICAgICBkb20vU3RhdGljSGFzaFNldE5vZGVM
aXN0LmNwcCBcCkBAIC0xNjExLDYgKzE2MTIsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vTm9k
ZUl0ZXJhdG9yLmggXAogICAgIGRvbS9Ob2RlUmFyZURhdGEuaCBcCiAgICAgZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmggXAorICAgIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggXAogICAg
IGRvbS9Ob2RlVHJhdmVyc2FsLmggXAogICAgIGRvbS9Ob3RhdGlvbi5oIFwKICAgICBkb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDdjOTQ0ZjUwNGY5OTEz
ZjA3ZDNjZTQ1ZDVmNDFiM2MwZWM1ZGQ0YTQuLmJhZTE5NmQ1Yzk1MDg1ZjgzZTI3YjJkMzY0ZWQw
ODFiNjc3Y2E2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4NDEsNiArMjg0MSw4IEBACiAgICAg
ICAgICAgICAnZG9tL05vZGVSYXJlRGF0YS5oJywKICAgICAgICAgICAgICdkb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwJywKICAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
aCcsCisgICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwJywKKyAgICAg
ICAgICAgICdkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oJywKICAgICAgICAgICAgICdkb20v
Tm9kZVJlbmRlclN0eWxlLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlVHJhdmVyc2FsLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL05vZGVUcmF2ZXJzYWwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCmluZGV4IDEyNDg2YTkxN2E5ZTM2Y2Q4
NDM2ZmNjNjlhNmIwNDZlY2E2Njc5OGMuLjFkMDNjNTQ3ZTBiNDk4N2UyNjcyMmI5Mzk5ZDZmNWIw
ZDVmZDJiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuY3BwCkBAIC0xLDMgKzEsNCBAQAorCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNzAsMjMgKzcxLDYgQEAgc3Rh
dGljIGlubGluZSBib29sIG5vZGVDYW5CZURpc3RyaWJ1dGVkKGNvbnN0IE5vZGUqIG5vZGUpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5z
ZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQotewotICAgIGlmICghbV9pbnNlcnRpb25Qb2lu
dCkKLSAgICAgICAgbV9pbnNlcnRpb25Qb2ludCA9IGluc2VydGlvblBvaW50OwotfQotCi1pbmxp
bmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6
OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiByb290KQotewotICAgIG1f
cmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlIHx8IHJvb3Qt
PnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOwotfQotCi1pbmxpbmUgdm9pZCBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6OmRpZEZpbmROb2RlKENvbnRhaW5l
ck5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFtX291dE9mQ29tcG9zaXRpb24pCi0gICAgICAgIG1f
bm9kZSA9IG5vZGU7Ci19Ci0KIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OmZyb21GaXJzdENoaWxkKGNvbnN0IE5vZGUqIG5vZGUsIFBvbGljeSBwb2xp
Y3kpCiB7CiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlLCBwb2xpY3kp
OwpAQCAtOTQsMTQgKzc4LDYgQEAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6ZnJvbUZpcnN0Q2hpbGQoY29uc3QgTm9kZSogbm8KICAgICByZXR1cm4g
d2Fsa2VyOwogfQogCi12b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZmluZFBhcmVudChj
b25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKQotewotICAg
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSwgQ3Jvc3NVcHBlckJvdW5kYXJ5
LCBDYW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7Ci0gICAgQ29udGFpbmVyTm9kZSogZm91bmQg
PSB0b0NvbnRhaW5lck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFyZW50KHdhbGtlci5nZXQoKSwgZGV0
YWlscykpOwotICAgIGlmIChmb3VuZCkKLSAgICAgICAgZGV0YWlscy0+ZGlkRmluZE5vZGUoZm91
bmQpOwotfQotCiB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Zmlyc3RDaGlsZCgpCiB7
CiAgICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7CkBAIC0xODEsNDYgKzE1Nyw2IEBAIHZvaWQgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcoKQogICAgIGFzc2VydFBvc3Rj
b25kaXRpb24oKTsKIH0KIAotdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3
YXJlTmV4dFNpYmxpbmcoKQotewotICAgIGFzc2VydFByZWNvbmRpdGlvbigpOwotCi0gICAgY29u
c3QgTm9kZSogbm9kZSA9IG1fbm9kZTsKLQotICAgIGlmIChub2RlLT5pc0JlZm9yZVBzZXVkb0Vs
ZW1lbnQoKSkKLSAgICAgICAgbV9ub2RlID0gdHJhdmVyc2VGaXJzdENoaWxkKHRyYXZlcnNlUGFy
ZW50KG5vZGUpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlU2libGluZ09y
QmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCk7Ci0K
LSAgICBpZiAoIW1fbm9kZSAmJiAhbm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkgewotICAg
ICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBhcmVudChub2RlKTsKLSAgICAgICAgaWYgKHBh
cmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIG1fbm9kZSA9IHRv
RWxlbWVudChwYXJlbnQpLT5hZnRlclBzZXVkb0VsZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBhc3Nl
cnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KLXZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpw
c2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpCi17Ci0gICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7
Ci0KLSAgICBjb25zdCBOb2RlKiBub2RlID0gbV9ub2RlOwotCi0gICAgaWYgKG5vZGUtPmlzQWZ0
ZXJQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlTGFzdENoaWxkKHRy
YXZlcnNlUGFyZW50KG5vZGUpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbm9kZSA9IHRyYXZlcnNl
U2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uQmFj
a3dhcmQpOwotCi0gICAgaWYgKCFtX25vZGUgJiYgIW5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVu
dCgpKSB7Ci0gICAgICAgIE5vZGUqIHBhcmVudCA9IHRyYXZlcnNlUGFyZW50KG5vZGUpOwotICAg
ICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAg
bV9ub2RlID0gdG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKLSAgICB9
Ci0KLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KIE5vZGUqIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjo6dHJhdmVyc2VEaXN0cmlidXRlZE5vZGVzKGNvbnN0IE5vZGUqIG5vZGUsIGNv
bnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgVHJhdmVyc2FsRGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKICAgICBmb3IgKGNvbnN0IE5vZGUqIG5leHQgPSBub2RlOyBuZXh0OyBuZXh0
ID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gaW5zZXJ0aW9uUG9p
bnQtPm5leHRUbyhuZXh0KSA6IGluc2VydGlvblBvaW50LT5wcmV2aW91c1RvKG5leHQpKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCmluZGV4IDRi
NmZmOTU2YTQ1MTliOGQ2MDI0ODMxZjI3NTg4YTY0YzRhYTlkMDIuLmI4MDlhMjZhYzQ5OTJhODU1
YWU0ZWIyOTQwM2Y4MTM5MjdiNTNiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZpbmUgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyX2gKIAogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCisjaW5jbHVk
ZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiArNDAsOCBAQCBjbGFzcyBTaGFkb3dSb290Owog
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNzAyCiBjbGFzcyBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgewogcHVibGljOgorICAgIHR5cGVkZWYgTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlscyBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzOworCiAg
ICAgZW51bSBQb2xpY3kgewogICAgICAgICBDcm9zc1VwcGVyQm91bmRhcnksCiAgICAgICAgIERv
Tm90Q3Jvc3NVcHBlckJvdW5kYXJ5LApAQCAtNDksMzggKzUyLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgQ2Fubm90U3RhcnRGcm9tU2hhZG93Qm91bmRhcnkKICAgICB9OwogCi0gICAgY2xhc3MgUGFy
ZW50VHJhdmVyc2FsRGV0YWlscyB7Ci0gICAgcHVibGljOgotICAgICAgICBQYXJlbnRUcmF2ZXJz
YWxEZXRhaWxzKCkKLSAgICAgICAgICAgIDogbV9ub2RlKDApCi0gICAgICAgICAgICAsIG1faW5z
ZXJ0aW9uUG9pbnQoMCkKLSAgICAgICAgICAgICwgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UoZmFs
c2UpCi0gICAgICAgICAgICAsIG1fb3V0T2ZDb21wb3NpdGlvbihmYWxzZSkKLSAgICAgICAgeyB9
Ci0KLSAgICAgICAgQ29udGFpbmVyTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsg
fQotICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVy
biBtX2luc2VydGlvblBvaW50OyB9Ci0gICAgICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNl
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNldFN0eWxlSW5oZXJpdGFuY2U7IH0KLSAgICAgICAgYm9v
bCBvdXRPZkNvbXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkNvbXBvc2l0aW9uOyB9
Ci0KLSAgICAgICAgdm9pZCBkaWRGaW5kTm9kZShDb250YWluZXJOb2RlKik7Ci0gICAgICAgIHZv
aWQgZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCopOwotICAgICAgICB2
b2lkIGRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290Kik7Ci0gICAgICAgIHZv
aWQgY2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKCkgeyBtX291dE9mQ29tcG9zaXRpb24gPSB0cnVl
OyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBDb250YWluZXJOb2RlKiBtX25vZGU7Ci0gICAg
ICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50OwotICAgICAgICBib29sIG1fcmVz
ZXRTdHlsZUluaGVyaXRhbmNlOwotICAgICAgICBib29sIG1fb3V0T2ZDb21wb3NpdGlvbjsKLSAg
ICB9OwotCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqLCBQb2xpY3kg
PSBDcm9zc1VwcGVyQm91bmRhcnksIFN0YXJ0UG9saWN5ID0gQ2Fubm90U3RhcnRGcm9tU2hhZG93
Qm91bmRhcnkpOwogCiAgICAgLy8gRm9yIGEgY29tbW9uIHVzZSBjYXNlIHN1Y2ggYXM6CiAgICAg
Ly8gZm9yIChDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGlsZChub2RlKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIubmV4
dFNpYmxpbmcoKSkKICAgICBzdGF0aWMgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIGZyb21GaXJz
dENoaWxkKGNvbnN0IE5vZGUqLCBQb2xpY3kgPSBDcm9zc1VwcGVyQm91bmRhcnkpOwotICAgIHN0
YXRpYyB2b2lkIGZpbmRQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudFRyYXZlcnNhbERldGFpbHMq
KTsKIAogICAgIE5vZGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1f
bm9kZSk7IH0KIApAQCAtOTAsMTQgKzY2LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG5leHRTaWJs
aW5nKCk7CiAgICAgdm9pZCBwcmV2aW91c1NpYmxpbmcoKTsKIAotICAgIHZvaWQgcHNldWRvQXdh
cmVOZXh0U2libGluZygpOwotICAgIHZvaWQgcHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKTsK
LQogICAgIHZvaWQgcGFyZW50KCk7CiAKICAgICB2b2lkIG5leHQoKTsKICAgICB2b2lkIHByZXZp
b3VzKCk7CiAKKyAgICBOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiwgUGFyZW50VHJh
dmVyc2FsRGV0YWlscyogPSAwKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIoY29uc3QgTm9kZSosIFBhcmVudFRyYXZlcnNhbERldGFpbHMqKTsKIApAQCAt
MTM0LDcgKzEwOSw2IEBAIHByaXZhdGU6CiAgICAgTm9kZSogdHJhdmVyc2VGaXJzdENoaWxkKGNv
bnN0IE5vZGUqKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZUxhc3RDaGlsZChjb25zdCBOb2Rl
KikgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VDaGlsZChjb25zdCBOb2RlKiwgVHJhdmVyc2Fs
RGlyZWN0aW9uKSBjb25zdDsKLSAgICBOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiwg
UGFyZW50VHJhdmVyc2FsRGV0YWlscyogPSAwKSBjb25zdDsKIAogICAgIHN0YXRpYyBOb2RlKiB0
cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKICAgICBzdGF0aWMgTm9kZSogdHJhdmVy
c2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuaAppbmRleCBlOTlmNjQ1MjQyMWU3NTQ0NmQ1MmQ0NzkwZjM3
NDhjMTk1MmE5YjJmLi5mMjRhOGNiMTg3OTJkN2FiN2IzOTI0NjA4MWQ4ZjcwY2I4NGMyZmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMjU3
LDExICsyNTcsMTYgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqIG4KIAogaW5saW5lIHZvaWQgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9k
ZS0+aW5Eb2N1bWVudCgpKSB7CisgICAgYm9vbCBpbkRvY3VtZW50ID0gbm9kZS0+aW5Eb2N1bWVu
dCgpOworICAgIGJvb2wgbmVlZHNTaGFkb3dUcmVlV2Fsa2VyID0gbm9kZS0+bmVlZHNTaGFkb3dU
cmVlV2Fsa2VyKCk7CisgICAgYm9vbCBpc0NvbnRhaW5lck5vZGUgPSBub2RlLT5pc0NvbnRhaW5l
ck5vZGUoKTsKKyAgICBpZiAoaW5Eb2N1bWVudCkgewogICAgICAgICBub3RpZnlOb2RlUmVtb3Zl
ZEZyb21Eb2N1bWVudChub2RlKTsKICAgICAgICAgbm9kZS0+ZG9jdW1lbnQoKS0+bm90aWZ5UmVt
b3ZlUGVuZGluZ1NoZWV0SWZOZWVkZWQoKTsKLSAgICB9IGVsc2UgaWYgKG5vZGUtPmlzQ29udGFp
bmVyTm9kZSgpKQorICAgIH0gZWxzZSBpZiAoaXNDb250YWluZXJOb2RlKQogICAgICAgICBub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShub2RlKSk7CisgICAgaWYgKG5l
ZWRzU2hhZG93VHJlZVdhbGtlcikKKyAgICAgICAgbm9kZS0+cmVzZXROZWVkc1NoYWRvd1RyZWVX
YWxrZXIoKTsKIH0KIAogY2xhc3MgQ2hpbGRGcmFtZURpc2Nvbm5lY3RvciB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUFsbEluT25lLmNwcAppbmRleCA5Mjk2YTE5YTFjYjllNGE0ODA2ZjM0MzliNzgyYzI1NzRi
MWNhNTY5Li41OWY1OWJlYmMxNzkwODkwNTMxNWE0OTJmOGYwYTk2MjE5NzYwYjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAgLTEwNSw2ICsxMDUsNyBAQAogI2luY2x1ZGUgIk5v
ZGVGaWx0ZXJDb25kaXRpb24uY3BwIgogI2luY2x1ZGUgIk5vZGVJdGVyYXRvci5jcHAiCiAjaW5j
bHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWwuY3BwIgogI2luY2x1ZGUgIk5vdGF0aW9uLmNwcCIKICNpbmNsdWRlICJPdmVyZmxv
d0V2ZW50LmNwcCIKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCAzNWJiZTUzY2NjYzY4MTIxNjk2N2I3YjcwZTI4OGFlOGQzZTNmNzI5
Li4wMTMyYTk5NzczMDhlNzUxYTViMjAyMjlkZjQ5MGI5NmViYjY1NGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC0xNTMxLDEwICsxNTMxLDIwIEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFm
CiAgICAgZWxzZQogICAgICAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXModGhpcywgcmVu
ZGVyU3R5bGUoKSwgZmFsc2UsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnRE
ZWx0YSk7CiAKKyAgICBpZiAoY2hpbGROZWVkc1NoYWRvd1dhbGtlcigpKQorICAgICAgICBkaWRT
aGFkb3dUcmVlQXdhcmVDaGlsZHJlbkNoYW5nZSgpOworfQorCit2b2lkIEVsZW1lbnQ6OmRpZFNo
YWRvd1RyZWVBd2FyZUNoaWxkcmVuQ2hhbmdlKCkKK3sKKyAgICBBU1NFUlQoY2hpbGROZWVkc1No
YWRvd1dhbGtlcigpKTsKICAgICBpZiAoRWxlbWVudFNoYWRvdyAqIHNoYWRvdyA9IHRoaXMtPnNo
YWRvdygpKQogICAgICAgICBzaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyAgICBm
b3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpKQorICAgICAgICBub2RlLT5zZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKTsKIH0KIAor
CiB2b2lkIEVsZW1lbnQ6OmJlZ2luUGFyc2luZ0NoaWxkcmVuKCkKIHsKICAgICBjbGVhcklzUGFy
c2luZ0NoaWxkcmVuRmluaXNoZWQoKTsKQEAgLTIwOTcsNyArMjEwNyw3IEBAIHZvaWQgRWxlbWVu
dDo6bm9ybWFsaXplQXR0cmlidXRlcygpCiAKIHZvaWQgRWxlbWVudDo6dXBkYXRlUHNldWRvRWxl
bWVudChQc2V1ZG9JZCBwc2V1ZG9JZCwgU3R5bGVDaGFuZ2UgY2hhbmdlKQogewotICAgIFBzZXVk
b0VsZW1lbnQqIGV4aXN0aW5nID0gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5w
c2V1ZG9FbGVtZW50KHBzZXVkb0lkKSA6IDA7CisgICAgUHNldWRvRWxlbWVudCogZXhpc3Rpbmcg
PSBwc2V1ZG9FbGVtZW50KHBzZXVkb0lkKTsKICAgICBpZiAoZXhpc3RpbmcpIHsKICAgICAgICAg
Ly8gUHNldWRvRWxlbWVudCBzdHlsZXMgaGFuZyBvZmYgdGhlaXIgcGFyZW50IGVsZW1lbnQncyBz
dHlsZSBzbyBpZiB3ZSBuZWVkZWQKICAgICAgICAgLy8gYSBzdHlsZSByZWNhbGMgd2Ugc2hvdWxk
IEZvcmNlIG9uZSBvbiB0aGUgcHNldWRvLgpAQCAtMjEwOCwxMCArMjExOCwxMCBAQCB2b2lkIEVs
ZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQsIFN0eWxlQ2hhbmdl
IGNoYW5nZSkKICAgICAgICAgLy8gd2hlbiBSZW5kZXJPYmplY3Q6OmlzQ2hpbGRBbGxvd2VkIG9u
IG91ciBwYXJlbnQgcmV0dXJucyBmYWxzZSBmb3IgdGhlCiAgICAgICAgIC8vIFBzZXVkb0VsZW1l
bnQncyByZW5kZXJlciBmb3IgZWFjaCBzdHlsZSByZWNhbGMuCiAgICAgICAgIGlmICghcmVuZGVy
ZXIoKSB8fCAhcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQocmVuZGVyZXIoKS0+Z2V0Q2Fj
aGVkUHNldWRvU3R5bGUocHNldWRvSWQpKSkKLSAgICAgICAgICAgIGVsZW1lbnRSYXJlRGF0YSgp
LT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCAwKTsKKyAgICAgICAgICAgIHNldFBzZXVkb0Vs
ZW1lbnQocHNldWRvSWQsIDApOwogICAgIH0gZWxzZSBpZiAoUmVmUHRyPFBzZXVkb0VsZW1lbnQ+
IGVsZW1lbnQgPSBjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQocHNldWRvSWQpKSB7CiAgICAg
ICAgIGVsZW1lbnQtPmF0dGFjaCgpOwotICAgICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+
c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxlbWVudC5yZWxlYXNlKCkpOworICAgICAgICBz
ZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVtZW50LnJlbGVhc2UoKSk7CiAgICAgfQogfQog
CkBAIC0yMTMyLDE2ICsyMTQyLDI1IEBAIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4gRWxlbWVu
dDo6Y3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVkKFBzZXVkb0lkIHBzZXVkb0lkCiAgICAgcmV0
dXJuIFBzZXVkb0VsZW1lbnQ6OmNyZWF0ZSh0aGlzLCBwc2V1ZG9JZCk7CiB9CiAKLVBzZXVkb0Vs
ZW1lbnQqIEVsZW1lbnQ6OmJlZm9yZVBzZXVkb0VsZW1lbnQoKSBjb25zdAorYm9vbCBFbGVtZW50
OjpoYXNQc2V1ZG9FbGVtZW50cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkg
PyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChCRUZPUkUpIDogMDsKKyAgICByZXR1
cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+aGFzUHNldWRvRWxlbWVudHMo
KTsKIH0KIAotUHNldWRvRWxlbWVudCogRWxlbWVudDo6YWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29u
c3QKK1BzZXVkb0VsZW1lbnQqIEVsZW1lbnQ6OnBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRv
SWQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEo
KS0+cHNldWRvRWxlbWVudChBRlRFUikgOiAwOworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8g
ZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQocHNldWRvSWQpIDogMDsKIH0KIAordm9p
ZCBFbGVtZW50OjpzZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lkIHBzZXVkb0lkLCBQYXNzUmVmUHRy
PFBzZXVkb0VsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkt
PnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1lbnQpOworICAgIHJlc2V0TmVlZHNTaGFk
b3dUcmVlV2Fsa2VyKCk7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIGNoaWxkLT5yZXNldE5l
ZWRzU2hhZG93VHJlZVdhbGtlcigpOworfQorCisKIC8vIEVsZW1lbnRUcmF2ZXJzYWwgQVBJCiBF
bGVtZW50KiBFbGVtZW50OjpmaXJzdEVsZW1lbnRDaGlsZCgpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAppbmRleCA2MmViYjU1OWU5YTJkOTI4NmI5OTk3YmRhNDYxNWQ2MDhjNDU1ZWFlLi43OGY5
NTIyNDY0OWU3NTRiMWJmYTNlZWY1MTlkYjE0MDJlMWZiODM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
QEAgLTM2Niw4ICszNjYsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYXJzaW5nQ2hpbGRyZW4oKTsK
IAotICAgIFBzZXVkb0VsZW1lbnQqIGJlZm9yZVBzZXVkb0VsZW1lbnQoKSBjb25zdDsKLSAgICBQ
c2V1ZG9FbGVtZW50KiBhZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdDsKKyAgICBib29sIGhhc1Bz
ZXVkb0VsZW1lbnRzKCkgY29uc3Q7CisgICAgUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVudChQ
c2V1ZG9JZCkgY29uc3Q7CisgICAgUHNldWRvRWxlbWVudCogYmVmb3JlUHNldWRvRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHBzZXVkb0VsZW1lbnQoQkVGT1JFKTsgfQorICAgIFBzZXVkb0VsZW1l
bnQqIGFmdGVyUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVkb0VsZW1lbnQoQUZU
RVIpOyB9CisgICAgYm9vbCBjaGlsZE5lZWRzU2hhZG93V2Fsa2VyKCkgY29uc3QgeyByZXR1cm4g
aXNJbnNlcnRpb25Qb2ludCgpIHx8IHNoYWRvdygpIHx8IGhhc1BzZXVkb0VsZW1lbnRzKCk7IH0K
KyAgICB2b2lkIGRpZFNoYWRvd1RyZWVBd2FyZUNoaWxkcmVuQ2hhbmdlKCk7CiAKICAgICAvLyBF
bGVtZW50VHJhdmVyc2FsIEFQSQogICAgIEVsZW1lbnQqIGZpcnN0RWxlbWVudENoaWxkKCkgY29u
c3Q7CkBAIC01MDQsNiArNTA4LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZVBzZXVkb0VsZW1lbnQoUHNldWRvSWQsIFN0eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOwogICAg
IFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4gY3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVkKFBz
ZXVkb0lkKTsKKyAgICB2b2lkIHNldFBzZXVkb0VsZW1lbnQoUHNldWRvSWQsIFBhc3NSZWZQdHI8
UHNldWRvRWxlbWVudD4pOwogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgbmVlZCBmb3IgQXR0
ciB0byBjYWxsIHdpbGxNb2RpZnlBdHRyaWJ1dGUvZGlkTW9kaWZ5QXR0cmlidXRlLgogICAgIGZy
aWVuZCBjbGFzcyBBdHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRS
YXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDE5
N2MyNDBiODE1ZDBmMGIzZjJiYjkwNmE1OWEzOGU2N2U4ZDU4YTUuLjg4M2Y1MzRhOTQ1OWZiMDFi
NzI0ZjE4N2UwMTEzNzJmYTc5N2MwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRh
LmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQc2V1ZG9FbGVtZW50
KFBzZXVkb0lkLCBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+KTsKICAgICBQc2V1ZG9FbGVtZW50
KiBwc2V1ZG9FbGVtZW50KFBzZXVkb0lkKSBjb25zdDsKKyAgICBib29sIGhhc1BzZXVkb0VsZW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0ZWRCZWZvcmUgfHwgbV9nZW5lcmF0ZWRBZnRl
cjsgfQogCiAgICAgdm9pZCByZXNldENvbXB1dGVkU3R5bGUoKTsKICAgICB2b2lkIHJlc2V0RHlu
YW1pY1Jlc3R5bGVPYnNlcnZhdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNw
cAppbmRleCAxNDk3ZmQwZGE2YzE2YjRkZWU2ZTk3YmJhYTQxNWYxMzg4Mzc5NDJjLi5iNzQwZjBj
YmZlYTMwNzU0OGNjZmQzNGQ3ZWJkMmM1ZTAyNmU5YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRTaGFkb3cuY3BwCkBAIC04NCw4ICs4NCw4IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hh
ZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAg
ICAgc2hhZG93Um9vdC0+c2V0UGFyZW50VHJlZVNjb3BlKHNoYWRvd0hvc3QtPnRyZWVTY29wZSgp
KTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9vdC5nZXQoKSk7CiAgICAgc2V0VmFs
aWRpdHlVbmRldGVybWluZWQoKTsKLSAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hv
c3QpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShz
aGFkb3dSb290LmdldCgpKTsKKyAgICBzaGFkb3dIb3N0LT5kaWRTaGFkb3dUcmVlQXdhcmVDaGls
ZHJlbkNoYW5nZSgpOwogCiAgICAgLy8gRklYTUUoOTQ5MDUpOiBTaGFkb3dIb3N0IHNob3VsZCBi
ZSByZWF0dGFjaGVkIGR1cmluZyByZWNhbGNTdHlsZS4KICAgICAvLyBTZXQgc29tZSBmbGFnIGhl
cmUgYW5kIHJlY3JlYXRlIHNoYWRvdyBob3N0cycgcmVuZGVyZXIgaW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCA3NjUzMDJhZTEzNWQwNWMyMmQ2NjQ0OWMyZGYwNDUwOThmMDNhOTY0Li45YjdhZDNkMzhk
OTk2ODQ0ZjUyNjE5OTM1OTA3OTlhYmYyN2Q0NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMjkw
LDYgKzEyOTAsMTggQEAgRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpOwogfQogCitib29sIE5vZGU6Om5lZWRzU2hh
ZG93VHJlZVdhbGtlclNsb3coKSBjb25zdAoreworICAgIGlmIChpc1NoYWRvd1Jvb3QoKSB8fCAo
aXNFbGVtZW50Tm9kZSgpICYmIChpc0luc2VydGlvblBvaW50KCkgfHwgaXNQc2V1ZG9FbGVtZW50
KCkgfHwgdG9FbGVtZW50KHRoaXMpLT5oYXNQc2V1ZG9FbGVtZW50cygpKSkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9zdE5vZGUoKSkg
eworICAgICAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSB8fCAocGFyZW50LT5pc0VsZW1l
bnROb2RlKCkgJiYgdG9FbGVtZW50KHBhcmVudCktPmNoaWxkTmVlZHNTaGFkb3dXYWxrZXIoKSkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CiAKIGJvb2wgTm9kZTo6aXNCbG9ja0Zsb3coKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTA1
MzliYjlkMGYzM2Y2ZjczNjFlZDgzM2MwYmNmYWY0NjJjNmU0My4uMjVhMmZiMmE5OWQ1MGQ2NTMy
MzEwYWU5YzYxYWNhNWFmOTIxZGU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNTEsNiArMjUxLDExIEBA
IHB1YmxpYzoKICAgICBib29sIGlzRG9jdW1lbnRGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdl
dEZsYWcoSXNEb2N1bWVudEZyYWdtZW50RmxhZyk7IH0KICAgICBib29sIGlzU2hhZG93Um9vdCgp
IGNvbnN0IHsgcmV0dXJuIGlzRG9jdW1lbnRGcmFnbWVudCgpICYmIGRvY3VtZW50RnJhZ21lbnRJ
c1NoYWRvd1Jvb3QoKTsgfQogICAgIGJvb2wgaXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0
dXJuIGdldEZsYWcoSXNJbnNlcnRpb25Qb2ludEZsYWcpOyB9CisgICAgYm9vbCBuZWVkc1NoYWRv
d1RyZWVXYWxrZXIoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKE5lZWRzU2hhZG93VHJlZVdhbGtl
ckZsYWcpOyB9CisgICAgYm9vbCBuZWVkc1NoYWRvd1RyZWVXYWxrZXJTbG93KCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSB7IHNldEZsYWcoTmVlZHNTaGFkb3dU
cmVlV2Fsa2VyRmxhZyk7IH0KKyAgICB2b2lkIHJlc2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkg
eyBzZXRGbGFnKG5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKSwgTmVlZHNTaGFkb3dUcmVlV2Fs
a2VyRmxhZyk7IH0KKwogICAgIGJvb2wgaW5OYW1lZEZsb3coKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKEluTmFtZWRGbG93RmxhZyk7IH0KICAgICBib29sIGhhc0N1c3RvbUNhbGxiYWNrcygpIGNv
bnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyk7IH0KIApAQCAtNzA0
LDExICs3MDksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9
IDEgPDwgMjMsCiAgICAgICAgIFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDRmxhZyA9IDEgPDwg
MjQsCiAgICAgICAgIElzSW5zZXJ0aW9uUG9pbnRGbGFnID0gMSA8PCAyNSwKKyAgICAgICAgTmVl
ZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyA9IDEgPDwgMjYsCiAKICAgICAgICAgRGVmYXVsdE5vZGVG
bGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnCiAgICAgfTsKIAotICAgIC8vIDYg
Yml0cyByZW1haW5pbmcKKyAgICAvLyA1IGJpdHMgcmVtYWluaW5nCiAKICAgICBib29sIGdldEZs
YWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFzazsgfQog
ICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZs
YWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7IH0gCkBA
IC03MjEsMTUgKzcyNywxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENyZWF0ZVRleHQgPSBEZWZh
dWx0Tm9kZUZsYWdzIHwgSXNUZXh0RmxhZywKICAgICAgICAgQ3JlYXRlQ29udGFpbmVyID0gRGVm
YXVsdE5vZGVGbGFncyB8IElzQ29udGFpbmVyRmxhZywgCiAgICAgICAgIENyZWF0ZUVsZW1lbnQg
PSBDcmVhdGVDb250YWluZXIgfCBJc0VsZW1lbnRGbGFnLCAKLSAgICAgICAgQ3JlYXRlUHNldWRv
RWxlbWVudCA9ICBDcmVhdGVFbGVtZW50IHwgSW5Eb2N1bWVudEZsYWcsCi0gICAgICAgIENyZWF0
ZVNoYWRvd1Jvb3QgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnLAor
ICAgICAgICBDcmVhdGVQc2V1ZG9FbGVtZW50ID0gIENyZWF0ZUVsZW1lbnQgfCBJbkRvY3VtZW50
RmxhZyB8IE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcsCisgICAgICAgIENyZWF0ZVNoYWRvd1Jv
b3QgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnIHwgTmVlZHNTaGFk
b3dUcmVlV2Fsa2VyRmxhZywKICAgICAgICAgQ3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IENyZWF0
ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFnbWVudEZsYWcsCiAgICAgICAgIENyZWF0ZVN0eWxl
ZEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwgSXNTdHlsZWRFbGVtZW50RmxhZywgCiAgICAgICAg
IENyZWF0ZUhUTUxFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8IElzSFRNTEZsYWcsIAog
ICAgICAgICBDcmVhdGVGcmFtZU93bmVyRWxlbWVudCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgSGFz
Q3VzdG9tQ2FsbGJhY2tzRmxhZywKICAgICAgICAgQ3JlYXRlU1ZHRWxlbWVudCA9IENyZWF0ZVN0
eWxlZEVsZW1lbnQgfCBJc1NWR0ZsYWcsCiAgICAgICAgIENyZWF0ZURvY3VtZW50ID0gQ3JlYXRl
Q29udGFpbmVyIHwgSW5Eb2N1bWVudEZsYWcsCi0gICAgICAgIENyZWF0ZUluc2VydGlvblBvaW50
ID0gQ3JlYXRlSFRNTEVsZW1lbnQgfCBJc0luc2VydGlvblBvaW50RmxhZywKKyAgICAgICAgQ3Jl
YXRlSW5zZXJ0aW9uUG9pbnQgPSBDcmVhdGVIVE1MRWxlbWVudCB8IElzSW5zZXJ0aW9uUG9pbnRG
bGFnIHwgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZywKICAgICAgICAgQ3JlYXRlRWRpdGluZ1Rl
eHQgPSBDcmVhdGVUZXh0IHwgSGFzTmFtZU9ySXNFZGl0aW5nVGV4dEZsYWcsCiAgICAgfTsKICAg
ICBOb2RlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyYzg5YTg4ZDlmZDQ4NmFiYzExMDc2OWRk
NjlkNWQxN2Y1OTEyNGUwLi5kOTc3ZWZkMDc3NGMxOWYxMDVlMjk3YTFlYzY4ZTEzOGRjNTI0OGI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI2
LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5oIgogCi0jaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAjaW5j
bHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgog
I2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKQEAgLTU4LDExICs1NywxMiBAQCBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICA6IG1fbm9k
ZShub2RlKQogICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKIHsKLSAgICBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OmZpbmRQYXJlbnQobV9ub2RlLCAmbV9wYXJlbnREZXRhaWxzKTsKKyAg
ICBtX3JlbmRlcmluZ1BhcmVudCA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudChtX25v
ZGUsICZtX3BhcmVudERldGFpbHMpOwogfQogCiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIDogbV9u
b2RlKG5vZGUpCisgICAgLCBtX3JlbmRlcmluZ1BhcmVudCgwKQogICAgICwgbV9zdHlsZShzdHls
ZSkKICAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCiB7CkBAIC04MiwxMiArODIsMTEgQEAg
UmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QK
IAogICAgIC8vIEF2b2lkIGFuIE8oTl4yKSBwcm9ibGVtIHdpdGggdGhpcyBmdW5jdGlvbiBieSBu
b3QgY2hlY2tpbmcgZm9yCiAgICAgLy8gbmV4dFJlbmRlcmVyKCkgd2hlbiB0aGUgcGFyZW50IGVs
ZW1lbnQgaGFzbid0IGF0dGFjaGVkIHlldC4KLSAgICBpZiAobV9wYXJlbnREZXRhaWxzLm5vZGUo
KSAmJiAhbV9wYXJlbnREZXRhaWxzLm5vZGUoKS0+YXR0YWNoZWQoKSkKKyAgICBpZiAobV9yZW5k
ZXJpbmdQYXJlbnQgJiYgIW1fcmVuZGVyaW5nUGFyZW50LT5hdHRhY2hlZCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobV9ub2RlKTsK
LSAgICBmb3IgKHdhbGtlci5wc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCk7IHdhbGtlci5nZXQoKTsg
d2Fsa2VyLnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHdhbGtlci5nZXQoKS0+cmVuZGVyZXIoKSkgeworICAgIGZvciAoTm9k
ZSogc2libGluZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKG1fbm9kZSk7
IHNpYmxpbmc7IHNpYmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZyhz
aWJsaW5nKSkgeworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmct
PnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVudHMgYXR0
YWNoZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgYXJl
IHBhcmVudGVkIGRpZmZlcmVudGx5LgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCkt
PmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXItPnN0eWxl
KCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBA
IC0xMDgsMTAgKzEwNyw4IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBy
ZXZpb3VzUmVuZGVyZXIoKSBjb25zdAogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRo
ZSBzYW1lIE8oTl4yKSBhdm9pZGFuY2UgYXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dl
dmVyLCB3aGVuIEkgdHJpZWQgYWRkaW5nIGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KLQotICAg
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobV9ub2RlKTsKLSAgICBmb3IgKHdhbGtl
ci5wc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wc2V1
ZG9Bd2FyZVByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gd2Fsa2VyLmdldCgpLT5yZW5kZXJlcigpKSB7CisgICAgZm9yIChOb2RlKiBzaWJs
aW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKG1fbm9kZSk7IHNp
Ymxpbmc7IHNpYmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmco
c2libGluZykpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzaWJsaW5n
LT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAvLyBSZW5kZXJlcnMgZm9yIGVsZW1lbnRzIGF0
dGFjaGVkIHRvIGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNraXBwZWQgYmVjYXVzZSB0aGV5IGFy
ZSBwYXJlbnRlZCBkaWZmZXJlbnRseS4KICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgp
LT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxlKCkgJiYgIXJlbmRlcmVyLT5zdHls
ZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMTI5LDIxICsxMjYsMjEgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
cGFyZW50UmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwogCi0gICAgcmV0dXJuIG1fcGFyZW50
RGV0YWlscy5ub2RlKCkgPyBtX3BhcmVudERldGFpbHMubm9kZSgpLT5yZW5kZXJlcigpIDogMDsK
KyAgICByZXR1cm4gbV9yZW5kZXJpbmdQYXJlbnQgPyBtX3JlbmRlcmluZ1BhcmVudC0+cmVuZGVy
ZXIoKSA6IDA7CiB9CiAKIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJl
bmRlcmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fbm9kZS0+ZG9jdW1lbnQoKS0+c2hvdWxkQ3Jl
YXRlUmVuZGVyZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fcGFyZW50
RGV0YWlscy5ub2RlKCkpCisgICAgaWYgKCFtX3JlbmRlcmluZ1BhcmVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSB0aGlzLT5wYXJl
bnRSZW5kZXJlcigpOwogICAgIGlmICghcGFyZW50UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIXBhcmVudFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9wYXJlbnREZXRhaWxzLm5vZGUoKS0+Y2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcigqdGhpcykpCisgICAgaWYgKCFtX3JlbmRlcmluZ1BhcmVudC0+
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcigqdGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmgKaW5kZXggN2RhNDhlMjlhNDI3ZDlhZTc0YzYzMjRlYzQyYThiZTAyNDFlYmI2My4uYzA3
OTc3NmRjODIwODJkNGQ1ZGZmMTU5NTIxOTg1NTU1NmZiZDE2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5kZWYgTm9k
ZVJlbmRlcmluZ0NvbnRleHRfaAogI2RlZmluZSBOb2RlUmVuZGVyaW5nQ29udGV4dF9oCiAKLSNp
bmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmgiCisKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC02
OSw3ICs3MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQo
KTsKIAogICAgIE5vZGUqIG1fbm9kZTsKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBh
cmVudFRyYXZlcnNhbERldGFpbHMgbV9wYXJlbnREZXRhaWxzOworICAgIENvbnRhaW5lck5vZGUq
IG1fcmVuZGVyaW5nUGFyZW50OworICAgIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERl
dGFpbHMgbV9wYXJlbnREZXRhaWxzOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsK
ICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwogICAgIEF0
b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CkBAIC04Miw3ICs4NCw3IEBAIGlubGluZSBOb2RlKiBO
b2RlUmVuZGVyaW5nQ29udGV4dDo6bm9kZSgpIGNvbnN0CiAKIGlubGluZSBDb250YWluZXJOb2Rl
KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wYXJlbnREZXRhaWxzLm5vZGUoKTsKKyAgICByZXR1cm4g
bV9yZW5kZXJpbmdQYXJlbnQ7CiB9CiAKIGlubGluZSBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0
OjpyZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1ZDJkYjFlNjk1YWU3OGFjMTU3
NTEzYzAzNWQ1NjJiZmZlMWQwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCisKKyNpbmNs
dWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIE5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWwgeworCit2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQo
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQoreworICAgIGlmICghbV9pbnNlcnRpb25Q
b2ludCkKKyAgICAgICAgbV9pbnNlcnRpb25Qb2ludCA9IGluc2VydGlvblBvaW50OworfQorCit2
b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290
KiByb290KQoreworICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHlsZUlu
aGVyaXRhbmNlIHx8IHJvb3QtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOworfQorCitDb250YWlu
ZXJOb2RlKiBwYXJlbnRTbG93KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFp
bHMpCit7CisgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlLCBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXI6OkNyb3NzVXBwZXJCb3VuZGFyeSwgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyOjpDYW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7CisgICAgcmV0dXJuIHRvQ29udGFp
bmVyTm9kZSh3YWxrZXIudHJhdmVyc2VQYXJlbnQod2Fsa2VyLmdldCgpLCBkZXRhaWxzKSk7Cit9
CisKK05vZGUqIG5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQmVmb3Jl
UHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKKyAgICAgICAgd2Fs
a2VyLmZpcnN0Q2hpbGQoKTsKKyAgICB9IGVsc2UgCisgICAgICAgIHdhbGtlci5uZXh0U2libGlu
ZygpOworCisgICAgaWYgKHdhbGtlci5nZXQoKSB8fCBub2RlLT5pc0FmdGVyUHNldWRvRWxlbWVu
dCgpKQorICAgICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworCisgICAgTm9kZSogcGFyZW50ID0g
d2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5p
c0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KS0+YWZ0ZXJQ
c2V1ZG9FbGVtZW50KCk7CisKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogcHJldmlvdXNTaWJs
aW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpIHsK
KyAgICAgICAgd2Fsa2VyLnBhcmVudCgpOworICAgICAgICB3YWxrZXIubGFzdENoaWxkKCk7Cisg
ICAgfSBlbHNlIAorICAgICAgICB3YWxrZXIucHJldmlvdXNTaWJsaW5nKCk7CisKKyAgICBpZiAo
d2Fsa2VyLmdldCgpIHx8IG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKQorICAgICAgICBy
ZXR1cm4gd2Fsa2VyLmdldCgpOworCisgICAgTm9kZSogcGFyZW50ID0gd2Fsa2VyLnRyYXZlcnNl
UGFyZW50KG5vZGUpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkp
CisgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KS0+YmVmb3JlUHNldWRvRWxlbWVudCgp
OworCisgICAgcmV0dXJuIDA7Cit9CisKK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYjlmY2ZjNGU1
ZWEwNTM1ODU5OGQ0ZDQzODA4NTkyMmNhNWU0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsX2gKKyNkZWZpbmUgTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbF9oCisKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CisKK25hbWVzcGFjZSBOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsIHsKKworY2xhc3MgUGFyZW50RGV0YWlscyB7CitwdWJsaWM6CisgICAgUGFyZW50
RGV0YWlscygpCisgICAgICAgIDogbV9pbnNlcnRpb25Qb2ludCgwKQorICAgICAgICAsIG1fcmVz
ZXRTdHlsZUluaGVyaXRhbmNlKGZhbHNlKQorICAgICAgICAsIG1fb3V0T2ZDb21wb3NpdGlvbihm
YWxzZSkKKyAgICB7IH0KKworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICBib29sIHJlc2V0U3R5bGVJbmhl
cml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOyB9CisgICAg
Ym9vbCBvdXRPZkNvbXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkNvbXBvc2l0aW9u
OyB9CisKKyAgICB2b2lkIGRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQq
KTsKKyAgICB2b2lkIGRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290Kik7Cisg
ICAgdm9pZCBjaGlsZFdhc091dE9mQ29tcG9zaXRpb24oKSB7IG1fb3V0T2ZDb21wb3NpdGlvbiA9
IHRydWU7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJlbnREZXRhaWxzJiBvdGhl
cikKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luc2VydGlvblBvaW50ID09IG90aGVyLm1faW5z
ZXJ0aW9uUG9pbnQKKyAgICAgICAgICAgICYmIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlID09IG90
aGVyLm1fcmVzZXRTdHlsZUluaGVyaXRhbmNlCisgICAgICAgICAgICAmJiBtX291dE9mQ29tcG9z
aXRpb24gPT0gb3RoZXIubV9vdXRPZkNvbXBvc2l0aW9uOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludDsKKyAgICBib29sIG1fcmVzZXRTdHls
ZUluaGVyaXRhbmNlOworICAgIGJvb2wgbV9vdXRPZkNvbXBvc2l0aW9uOworfTsKKworQ29udGFp
bmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7CitDb250YWluZXJO
b2RlKiBwYXJlbnRTbG93KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7CitOb2RlKiBuZXh0
U2libGluZyhjb25zdCBOb2RlKik7CitOb2RlKiBuZXh0U2libGluZ1Nsb3coY29uc3QgTm9kZSop
OworTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKK05vZGUqIHByZXZpb3VzU2li
bGluZ1Nsb3coY29uc3QgTm9kZSopOworCisKK2lubGluZSBDb250YWluZXJOb2RlKiBwYXJlbnQo
Y29uc3QgTm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKK3sKKyAgICBpZiAoIW5v
ZGUtPm5lZWRzU2hhZG93VHJlZVdhbGtlcigpKSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBQ
YXJlbnREZXRhaWxzIHNsb3dEZXRhaWxzOworICAgICAgICBBU1NFUlQobm9kZS0+cGFyZW50Tm9k
ZSgpID09IHBhcmVudFNsb3cobm9kZSwgJnNsb3dEZXRhaWxzKSk7CisgICAgICAgIEFTU0VSVChz
bG93RGV0YWlscyA9PSAqZGV0YWlscyk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIG5vZGUtPnBh
cmVudE5vZGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGFyZW50U2xvdyhub2RlLCBkZXRhaWxz
KTsKK30KKworaW5saW5lIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSkgeworICAgICAgICBBU1NFUlQo
bmV4dFNpYmxpbmdTbG93KG5vZGUpID09IG5vZGUtPm5leHRTaWJsaW5nKCkpOworICAgICAgICBy
ZXR1cm4gbm9kZS0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbmV4dFNpYmxp
bmdTbG93KG5vZGUpOworfQorCitpbmxpbmUgTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5v
ZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSkgewor
ICAgICAgICBBU1NFUlQocHJldmlvdXNTaWJsaW5nU2xvdyhub2RlKSA9PSBub2RlLT5wcmV2aW91
c1NpYmxpbmcoKSk7CisgICAgICAgIHJldHVybiBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcHJldmlvdXNTaWJsaW5nU2xvdyhub2RlKTsKK30KKworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1l
bnQuY3BwCmluZGV4IGM3N2EyOTU0NDA1MDljNDQ5Njc3ZTQwNjAzMjA4ZDNmZGEwYWJmZDkuLmE4
ZTU4OTE3YWEzNmQwMTEyNzIwZjhmNWQ4YmYwOGNhYzI1ZTE3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UHNldWRvRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgUHNldWRvRWxlbWVudDo6UHNldWRv
RWxlbWVudChFbGVtZW50KiBwYXJlbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQogICAgIDogRWxlbWVu
dChwc2V1ZG9FbGVtZW50VGFnTmFtZSgpLCBwYXJlbnQtPmRvY3VtZW50KCksIENyZWF0ZVBzZXVk
b0VsZW1lbnQpCiAgICAgLCBtX3BzZXVkb0lkKHBzZXVkb0lkKQogeworICAgIEFTU0VSVChwc2V1
ZG9JZCAhPSBOT1BTRVVETyk7CiAgICAgQVNTRVJUKHBhcmVudC0+aW5Eb2N1bWVudCgpKTsKICAg
ICBzZXRQYXJlbnRPckhvc3ROb2RlKHBhcmVudCk7CiAgICAgc2V0SGFzQ3VzdG9tQ2FsbGJhY2tz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggODk3MDg5ZTMxZDk4MDc0ZjBmYWIx
OWIyMmE2M2Y1YTdjZjAzODYzZS4uNGI2NzQ3NTNlY2E1NzJlMGZiNDVkZjhlNDk0Y2E1M2EyM2Mz
NTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMzI2LDYgKzMyNiw4IEBAIHZv
aWQgU2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UsIE5vZGUqCiAKICAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5n
ZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50
RGVsdGEpOwogICAgIG93bmVyKCktPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyAgICBmb3Ig
KE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkKKyAgICAgICAgY2hpbGQtPnNldE5lZWRzU2hhZG93VHJlZVdhbGtlcigpOwogfQog
CiBjb25zdCBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqPiYgU2hhZG93Um9vdDo6aW5zZXJ0aW9uUG9p
bnRMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCA2NzM3YWZmZWM3OGEwNmQ0YjBlNDhmYjhmMTlm
MTA0YmVjZTYwN2M4Li4yY2I4ZmI2YTA5ZWUyNWVhZTcxMzk5ODI5NWYwNTZmYzFlMzQ5ZjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmlu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgogI2luY2x1ZGUgIlJl
bmRlclRleHQuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKICNpZiBFTkFCTEUoU1ZHKQog
I2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRHcm91cEVsZW1lbnQuY3BwCmluZGV4IGQ3MTAyMWJiODFkMDM4MjdhYmI1ZGFkZGE4NzVh
OWM4OGQ4NjlkNGMuLjljYjQ2ZjJhODM4Mzc4OGFmMDI4MTJkYjE4YmQzZDE1YTY3MDRlM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWVu
dUxpc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXgg
Mzk4ODhkOGQ2MWRlNTcyMjUwYjgyMDNmYTBhYjgyOTk3YzI0YmI1OS4uZjUxMDk2ODQwN2ViYjk5
OTRlZDk4OGNhZjVmMWJlMDdjNTZmZjBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jl
c3NFbGVtZW50LmNwcAppbmRleCBlYTVmNDA3N2MxYWRlNDc0NGE4YzI3MzFhOWFiMGRlODI0NDZh
MmVhLi4xMzY3NTViZTdhNzZmYzJjOTdiNjE5N2Q0MDIxZWIwMWM2Yjk3YmEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTIzLDEyICsyMywxMyBA
QAogCiAjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgi
CisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlByb2dyZXNzU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIlJl
bmRlclByb2dyZXNzLmgiCiAjaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179018</attachid>
            <date>2012-12-12 04:00:53 -0800</date>
            <delta_ts>2012-12-12 04:51:03 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-104332-20121212205813.patch</filename>
            <type>text/plain</type>
            <size>44992</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE5ZTdjMjI2YzE4OWRm
NWNhMDQ5Mzg3YzBlNTM4ZWEyYTY4MDc0OC4uYTIwYmQ5MjQ1MjMxZGMzNjQxM2MyOWFmMzA1ZGM2
NGU4MzQ2MDcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxMi0xMi0xMiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgTm9kZVJlbmRlcmlu
Z0NvbnRleHQgaXMgc2xvdyBkdWUgdG8gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlUmVuZGVyaW5nQ29u
dGV4dCBoYXMgc29tZSBzbG93bmVzcyBkdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YKKyAgICAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHRoYXQgTlJDIHJlbGllcyBvbi4gVGhpcyBjaGFuZ2UK
KyAgICAgICAgY3JlYXRlcyBzb21lIGZhc3QgcGF0aHMgdG8gYWRkcmVzcyBzdWNoIHNsb3duZXNz
LgorCisgICAgICAgID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCBtb2R1bGU6CisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIG5hbWVzcGFjZSwg
YSBzaXN0ZXIKKyAgICAgICAgb2YgTm9kZVRyYXZlcnNhbC4gTlJUIGNvbnNpc3RzIG9mIGEgc2V0
IG9mIHRyZWUgdHJhdmVyc2FsCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGlzIHJlc3BvbnNpYmxl
IGZvciB0cmF2ZXJzYWwgaW4gTlJDLiAgQmVmb3JlIHRoaXMKKyAgICAgICAgY2hhZ25lLCBOUkMg
ZGlyZWN0bHkgdXNlZCBDU1RXLiBUaGlzIE5SVCBtb2R1bGUgaGlkZXMgYW5kIG5hcnJvd3MKKyAg
ICAgICAgdGhlIHVzYWdlIG9mIENTVFcuCisKKyAgICAgICAgLSBUcmF2ZXJzYWxzIHByb3ZpZGVk
IGJ5IE5SVCBoYXZlIGZhc3QgcGF0aHMuIEluIG1hbnkgY2FzZSwgc3VjaCB0cmF2ZXJzYWxzCisg
ICAgICAgICAgZG9lc24ndCBuZWVkIHRvIHVzZSBDU1RXIGFuZCBqdXN0IGdvZXMgbmVpZ2hib3Jp
bmcgbm9kZXMgaW4gYSBwbGFpbiBET00gd2F5LgorICAgICAgICAtIEl0IGFsc28gaGFuZGxlcyBO
UkMgc3BlY2lmaWMgdHJhdmVyc2FsIGNvbmNlcm5zIGxpa2UgcHNldWRvIGVsZW1lbnRzLgorICAg
ICAgICAgIENTVFc6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBhbmQgQ1NUVzo6cHNldWRvQXdh
cmVQcmV2aW91c1NpYmxpbmcoKSBhcmUKKyAgICAgICAgICBtZXJnZWQgaW50byB0aGlzIG1vZHVs
ZS4KKyAgICAgICAgLSBDU1RXOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIGlzIG1vdmVkIGFuZCBy
ZW5hbWVkIHRvCisgICAgICAgICAgTlJUOjpQYXJlbnREZXRhaWxzIHdpdGggc21hbGwgbW9kaWZp
Y2F0aW9uLiBUaGlzIGlzIGEgcHVyZQorICAgICAgICAgIHJlZmFjdG9yaW5nOiBBcyB0aGUgbmFt
ZSBpbXBsaWVzLCBUaGlzIGNsYXNzIGlzIHVzZWQgb25seSBieSBOUkMKKyAgICAgICAgICBhbmQg
dXNlZCBkdXJpbmcgYSB0cmF2ZXJzYWwgdGhlcmUuCisKKyAgICAgICAgTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbCBpcyBhbiBpc29sYXRpb24gbGF5ZXIgYmV0d2VlbiBnZW5lcmljIERPTSBhbmQgQ1NU
Vy4gVGhpcyBoaWRlcyBDU1RXCisgICAgICAgIGJlaGluZCB0aGUgd2FsbCBhbmQgd2lsbCBoZWxw
IGZ1cnRoZXIgcmVkdWN0aW9uIG9mIGl0cyB1c2FnZS4KKworICAgICAgICA9IE5vZGU6Ok5lZWRz
U2hhZG93VHJlZVdhbGtlckZsYWcgZmxhZzoKKworICAgICAgICBOUlQgZmFzdCBwYXRoIGlzIGVu
YWJsZWQgYnkgbmV3bHkgaW50cm9kdWNlZCBOZWVkc1NoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAg
bm9kZSBmbGFnLiBFYWNoIERPTSBub2RlIGlzIG5vdyBtYXJrZCBhcyBOZWVkc1NoYWRvd1RyZWVX
YWxrZXIgaWYKKyAgICAgICAgaXQgcmVxdWlyZXMgbm9uLXRyaXZpYWwgdHJhdmVyc2FsIGluIE5S
VCB3aGljaCB1c2VzIENTVFcuIFRoaXMKKyAgICAgICAgbWVhbnMgdGhhdCBlYWNoIG5vZGUgY2Fu
IGdvIGZhc3QgcGF0aCB1bmxlc3MgaXQgaXMgbWFya2VkIHdpdGggdGhpcyBmbGFnLgorCisgICAg
ICAgIEEgbm9kZSBpcyBtYXJrZWQgYXMgaXQgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyIGlmOgorCisg
ICAgICAgIC0gVGhlIG5vZGUgaXMgYSBzaGFkb3cgYm91bmRhcnkgbGlrZSBJbnNlcnRpb25Qb2lu
dCBvciBTaGFkb3dSb290LAorICAgICAgICAtIFRoZSBub2RlIGhhcyBwc2V1ZG8gZWxlbWVudHMg
bGlrZSBnZW5lcmF0ZWQgY29udGVudCwKKyAgICAgICAgLSBUaGUgbm9kZSBpcyBhIHBzZXVkbyBl
bGVtZW50IG9yCisgICAgICAgIC0gVGhlIHBhcmVudCBvZiB0aGUgbm9kZSBpcyBhIHNoYWRvdyBi
b3VuZGFyeSBvciBwc2V1ZG8gZWxlbWVudCBob2xkZXIuCisKKyAgICAgICAgVGhpcyBjcml0ZXJp
YSBpcyBkZWZpbmVkIGluIE5vZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKS4KKworICAg
ICAgICBUaGUgb3JpZ2luYWwgaWRlYSBvZiB0aGlzIGNoYW5nZSB3YXMgZGVtb25zdHJhdGVkIGJ5
IEFudHRpIEtvaXZpc3RvIG9uIGJ1ZyAxMDMyMDggYW5kIGJ1ZyAxMDQ1MDcuCisgICAgICAgIFRo
aXMgY2hhZ25lIGhhcyAzLTQlIHNwZWVkdXAgb24gRHJvbWFlby9kb20tbW9kaWZ5L2lubmVySFRN
TCBvbiBBcHBsZSBNYWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcDoKKyAgICAg
ICAgKiBkb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmg6CisgICAgICAgIChDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkpOgor
ICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKTogUmVmYWN0b3Jl
ZCBhbmQgYWRkZWQgZmxhZyBtYWludGVuYW5jZSBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkU2hhZG93VHJlZUF3YXJlQ2hpbGRyZW5DaGFu
Z2UpOiBBZGRlZCBmb3IgZmxhZyBtYWludGVuYW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQpOiBSZWZhY3RvcmVkCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpoYXNQc2V1ZG9FbGVtZW50cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6cHNldWRvRWxlbWVudCk6IEV4dHJhY3RlZCBmcm9tIGJlZm9yZVBzZXVkb0VsZW1lbnQo
KSBldGMuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRQc2V1ZG9FbGVtZW50KTogRXh0
cmFjdGVkIGZyb20gdXBkYXRlUHNldWRvRWxlbWVudCgpIGFuZCBhZGRlZCBmbGFnIG1haW50ZW5h
bmNlIGxvZ2ljLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmJlZm9yZVBzZXVkb0VsZW1lbnQpOiBSZWZhY3Rv
cmVkIHRvIHVzZSBwc2V1ZG9FbGVtZW50KCkKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFm
dGVyUHNldWRvRWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hp
bGROZWVkc1NoYWRvd1dhbGtlcik6IEFkZGVkLgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6aGFzUHNldWRvRWxlbWVu
dHMpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXJTbG93
KTogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
Om5lZWRzU2hhZG93VHJlZVdhbGtlcik6IEFkZGVkLgorICAgICAgICAoTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjpzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnJlc2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKTogQWRkZWQuCisg
ICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKToKKyAgICAgICAg
KiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdDb250
ZXh0KToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOb2RlUmVuZGVyaW5nVHJhdmVyc2FsKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6OmRp
ZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQpOiBNb3ZlZCBmcm9tIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERl
dGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6ZGlkRmluZE5vZGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudFNsb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNpYmxpbmdT
bG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3Vz
U2libGluZ1Nsb3cpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
KToKKyAgICAgICAgKFBhcmVudERldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6UGFyZW50RGV0YWlscyk6IE1vdmVkIGZyb20g
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjppbnNlcnRpb25Qb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpyZXNl
dFN0eWxlSW5oZXJpdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6UGFyZW50RGV0YWlsczo6b3V0T2ZDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpjaGlsZFdhc091dE9mQ29t
cG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFy
ZW50RGV0YWlsczo6c2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsOjpQYXJlbnREZXRhaWxzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAqIGRvbS9Qc2V1ZG9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OlBzZXVkb0VsZW1l
bnQpOiBBZGRlZCBhbiBhc3NlcnRpb24uCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2VkKTogQWRkZWQgZmxh
ZyBtYWludGVuYW5jZSBsb2dpYy4KKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgICog
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25F
bGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorCiAy
MDEyLTEyLTEyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIEZpeCBidWlsZCBvbiBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODcy
YzI1MGI0YjJiNTRiMjQ5ODQwMWE2ZmFjMjE0ZTA4MTMwNThlMy4uZTM5Y2U5MzFhZjYyMjFiOGJm
MDhkNDNmZjUyYzZiMzMwYmVlYzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExOTIsNiAr
MTE5Miw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vTm9kZUl0ZXJhdG9yLmNwcAog
ICAgIGRvbS9Ob2RlUmFyZURhdGEuY3BwCiAgICAgZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cAorICAgIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcAogICAgIGRvbS9Ob2RlVHJhdmVy
c2FsLmNwcAogICAgIGRvbS9Ob3RhdGlvbi5jcHAKICAgICBkb20vT3ZlcmZsb3dFdmVudC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDVhMTg1ODU5NjM5MDdhNjk5ODFlZDI1
YzZhYmRkYWRiYzkwYjQxMTMuLjhjMWRhYjFhMDVmMmEwOGYxNjFiMGEzYmY0NTcwMWU0YmFiZjMx
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjg3Myw2ICsyODczLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3QuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmggXAogICAgIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlVHJhdmVyc2FsLmNwcCBcCiAgICAgU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVUcmF2ZXJzYWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBkZTdiNGEyYTA3NGQzMmMzNTE4
NzZlNmQ2MTdlN2I1NmUwYzU3ZmYwLi5jMDc5NjFiOGIzMDNjMDlkODgwYWUzZjU5YzVkYmRhZDFm
MTIyNDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTQyMCw2ICs0MjAsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBkb20vTm9kZUl0ZXJhdG9yLmNwcCBcCiAgICAgZG9tL05vZGVSYXJlRGF0YS5jcHAgXAogICAg
IGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgXAorICAgIGRvbS9Ob2RlUmVuZGVyaW5nVHJh
dmVyc2FsLmNwcCBcCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuY3BwIFwKICAgICBkb20vTm90YXRp
b24uY3BwIFwKICAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCkBAIC0xNjAyLDYg
KzE2MDMsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vTm9kZUl0ZXJhdG9yLmggXAogICAgIGRv
bS9Ob2RlUmFyZURhdGEuaCBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggXAorICAg
IGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggXAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmgg
XAogICAgIGRvbS9Ob3RhdGlvbi5oIFwKICAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDhlMTRjYjhmOTkzYzNlNzY2MjBlYzE2MTcxOWU5YTc4NGUy
OTk0NDQuLjZkOTJjY2VkYTY2NGIwMTkzOWJmYjA2YjJhYTRhM2NmNzEwZjk0YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTI4NDEsNiArMjg0MSw4IEBACiAgICAgICAgICAgICAnZG9tL05vZGVSYXJl
RGF0YS5oJywKICAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwJywKICAg
ICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCcsCisgICAgICAgICAgICAnZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwJywKKyAgICAgICAgICAgICdkb20vTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5oJywKICAgICAgICAgICAgICdkb20vTm9kZVJlbmRlclN0eWxlLmgnLAog
ICAgICAgICAgICAgJ2RvbS9Ob2RlVHJhdmVyc2FsLmNwcCcsCiAgICAgICAgICAgICAnZG9tL05v
ZGVUcmF2ZXJzYWwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMDc4NDViNzY3M2UwNzI4ZmRlN2Q4MDYxN2Q2NDJiMDc5NDUy
ZjNkMS4uMWRkZDAwNmFkNmNmZDU5NDk3YmE2NjZmM2M4MWY2ZjFmZTg1YzAyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEy
MDMsNiArMTEyMDMsOCBAQAogCQlBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERy
YWdDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRHJhZ0NvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
MUE3MEM5MTFBRkIwMjAwMDk4OUQ2RCAvKiBIVE1MTWV0ZXJFbGVtZW50LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBIVE1MTWV0ZXJFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTcyMTFGMjMxNjc4QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MjExRjI0MTY3
OEE1NDIwMDk1NzQ0NCAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhw
b3J0TWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtRXhw
b3J0TWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Mjc2M0JFMTY2ODlC
RkIwMDJGQ0FDQiAvKiBVc2VyQWN0aW9uRWxlbWVudFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVc2VyQWN0aW9uRWxlbWVudFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzJFQTNCQTE1ODVDRjU1MDA0RkFBMjYgLyogUmVmQ291bnRlZFN1cHBsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlZFN1cHBsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDc5LDYgKzIyMDgxLDggQEAK
IAkJCQk2MzE4OUFFMjBFODNBMzMzMDAwMTJFNDEgLyogTm9kZVJhcmVEYXRhLmggKi8sCiAJCQkJ
QTdGNUQ5NEQxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywK
IAkJCQlBN0Y1RDk0RTEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuaCAq
LywKKwkJCQlBNzIxMUYyMzE2NzhBNTQyMDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNh
bC5jcHAgKi8sCisJCQkJQTcyMTFGMjQxNjc4QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWwuaCAqLywKIAkJCQk2M0Q3QjMyQzBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRl
clN0eWxlLmggKi8sCiAJCQkJRTQzMTA1QjcxNjc1MEYwQzAwREIyRkI4IC8qIE5vZGVUcmF2ZXJz
YWwuY3BwICovLAogCQkJCUU0MzEwNUJBMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2Fs
LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
Y3BwCmluZGV4IGYwMGYyZWZiNDlhMWE0ZTM3MGMzYWZkOTkxOGVhYzBiMTdkOWI2OWEuLjFkMDNj
NTQ3ZTBiNDk4N2UyNjcyMmI5Mzk5ZDZmNWIwZDVmZDJiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0xLDMgKzEsNCBAQAorCiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgpAQCAtNzAsMjUgKzcxLDYgQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVDYW5CZURpc3Ry
aWJ1dGVkKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUg
dm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6OmRp
ZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQot
ewotICAgIGlmICghbV9pbnNlcnRpb25Qb2ludCkgewotICAgICAgICBtX2luc2VydGlvblBvaW50
ID0gaW5zZXJ0aW9uUG9pbnQ7Ci0gICAgICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1f
cmVzZXRTdHlsZUluaGVyaXRhbmNlIHx8IGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJp
dGFuY2UoKTsKLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6UGFyZW50VHJhdmVyc2FsRGV0YWlsczo6ZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0IFNo
YWRvd1Jvb3QqIHJvb3QpCi17Ci0gICAgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgID0gbV9yZXNl
dFN0eWxlSW5oZXJpdGFuY2UgfHwgcm9vdC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7Ci19Ci0K
LWlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0
YWlsczo6ZGlkRmluZE5vZGUoQ29udGFpbmVyTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW1fb3V0
T2ZDb21wb3NpdGlvbikKLSAgICAgICAgbV9ub2RlID0gbm9kZTsKLX0KLQogQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZnJvbUZpcnN0Q2hpbGQoY29u
c3QgTm9kZSogbm9kZSwgUG9saWN5IHBvbGljeSkKIHsKICAgICBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgd2Fsa2VyKG5vZGUsIHBvbGljeSk7CkBAIC05NiwxNCArNzgsNiBAQCBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGlsZChj
b25zdCBOb2RlKiBubwogICAgIHJldHVybiB3YWxrZXI7CiB9CiAKLXZvaWQgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOjpmaW5kUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNh
bERldGFpbHMqIGRldGFpbHMpCi17Ci0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtl
cihub2RlLCBDcm9zc1VwcGVyQm91bmRhcnksIENhblN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsK
LSAgICBDb250YWluZXJOb2RlKiBmb3VuZCA9IHRvQ29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVy
c2VQYXJlbnQod2Fsa2VyLmdldCgpLCBkZXRhaWxzKSk7Ci0gICAgaWYgKGZvdW5kKQotICAgICAg
ICBkZXRhaWxzLT5kaWRGaW5kTm9kZShmb3VuZCk7Ci19Ci0KIHZvaWQgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjpmaXJzdENoaWxkKCkKIHsKICAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKQEAg
LTE4Myw0NiArMTU3LDYgQEAgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3Vz
U2libGluZygpCiAgICAgYXNzZXJ0UG9zdGNvbmRpdGlvbigpOwogfQogCi12b2lkIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjo6cHNldWRvQXdhcmVOZXh0U2libGluZygpCi17Ci0gICAgYXNzZXJ0
UHJlY29uZGl0aW9uKCk7Ci0KLSAgICBjb25zdCBOb2RlKiBub2RlID0gbV9ub2RlOwotCi0gICAg
aWYgKG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKQotICAgICAgICBtX25vZGUgPSB0cmF2
ZXJzZUZpcnN0Q2hpbGQodHJhdmVyc2VQYXJlbnQobm9kZSkpOwotICAgIGVsc2UKLSAgICAgICAg
bV9ub2RlID0gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBUcmF2
ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKLQotICAgIGlmICghbV9ub2RlICYmICFub2RlLT5pc0Fm
dGVyUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIE5vZGUqIHBhcmVudCA9IHRyYXZlcnNlUGFy
ZW50KG5vZGUpOwotICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgp
KQotICAgICAgICAgICAgbV9ub2RlID0gdG9FbGVtZW50KHBhcmVudCktPmFmdGVyUHNldWRvRWxl
bWVudCgpOwotICAgIH0KLQotICAgIGFzc2VydFBvc3Rjb25kaXRpb24oKTsKLX0KLQotdm9pZCBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCkKLXsK
LSAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKLQotICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBtX25v
ZGU7Ci0KLSAgICBpZiAobm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbV9u
b2RlID0gdHJhdmVyc2VMYXN0Q2hpbGQodHJhdmVyc2VQYXJlbnQobm9kZSkpOwotICAgIGVsc2UK
LSAgICAgICAgbV9ub2RlID0gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChu
b2RlLCBUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7Ci0KLSAgICBpZiAoIW1fbm9kZSAmJiAh
bm9kZS0+aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkpIHsKLSAgICAgICAgTm9kZSogcGFyZW50ID0g
dHJhdmVyc2VQYXJlbnQobm9kZSk7Ci0gICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0Vs
ZW1lbnROb2RlKCkpCi0gICAgICAgICAgICBtX25vZGUgPSB0b0VsZW1lbnQocGFyZW50KS0+YmVm
b3JlUHNldWRvRWxlbWVudCgpOwotICAgIH0KLQotICAgIGFzc2VydFBvc3Rjb25kaXRpb24oKTsK
LX0KLQogTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZURpc3RyaWJ1dGVk
Tm9kZXMoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBv
aW50LCBUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGZvciAoY29uc3QgTm9k
ZSogbmV4dCA9IG5vZGU7IG5leHQ7IG5leHQgPSAoZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVj
dGlvbkZvcndhcmQgPyBpbnNlcnRpb25Qb2ludC0+bmV4dFRvKG5leHQpIDogaW5zZXJ0aW9uUG9p
bnQtPnByZXZpb3VzVG8obmV4dCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmgKaW5kZXggNGI2ZmY5NTZhNDUxOWI4ZDYwMjQ4MzFmMjc1ODhhNjRj
NGFhOWQwMi4uYjgwOWEyNmFjNDk5MmE4NTVhZTRlYjI5NDAzZjgxMzkyN2I1M2IxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2RlZmluZSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJfaAogCiAjaW5jbHVkZSAi
SW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw2ICs0
MCw4IEBAIGNsYXNzIFNoYWRvd1Jvb3Q7CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODI3MDIKIGNsYXNzIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB7CiBwdWJs
aWM6CisgICAgdHlwZWRlZiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzIFBh
cmVudFRyYXZlcnNhbERldGFpbHM7CisKICAgICBlbnVtIFBvbGljeSB7CiAgICAgICAgIENyb3Nz
VXBwZXJCb3VuZGFyeSwKICAgICAgICAgRG9Ob3RDcm9zc1VwcGVyQm91bmRhcnksCkBAIC00OSwz
OCArNTIsMTEgQEAgcHVibGljOgogICAgICAgICBDYW5ub3RTdGFydEZyb21TaGFkb3dCb3VuZGFy
eQogICAgIH07CiAKLSAgICBjbGFzcyBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIFBhcmVudFRyYXZlcnNhbERldGFpbHMoKQotICAgICAgICAgICAgOiBtX25v
ZGUoMCkKLSAgICAgICAgICAgICwgbV9pbnNlcnRpb25Qb2ludCgwKQotICAgICAgICAgICAgLCBt
X3Jlc2V0U3R5bGVJbmhlcml0YW5jZShmYWxzZSkKLSAgICAgICAgICAgICwgbV9vdXRPZkNvbXBv
c2l0aW9uKGZhbHNlKQotICAgICAgICB7IH0KLQotICAgICAgICBDb250YWluZXJOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgICAgIEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICAgICAg
Ym9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc2V0U3R5bGVJ
bmhlcml0YW5jZTsgfQotICAgICAgICBib29sIG91dE9mQ29tcG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX291dE9mQ29tcG9zaXRpb247IH0KLQotICAgICAgICB2b2lkIGRpZEZpbmROb2RlKENv
bnRhaW5lck5vZGUqKTsKLSAgICAgICAgdm9pZCBkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KElu
c2VydGlvblBvaW50Kik7Ci0gICAgICAgIHZvaWQgZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0
IFNoYWRvd1Jvb3QqKTsKLSAgICAgICAgdm9pZCBjaGlsZFdhc091dE9mQ29tcG9zaXRpb24oKSB7
IG1fb3V0T2ZDb21wb3NpdGlvbiA9IHRydWU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENv
bnRhaW5lck5vZGUqIG1fbm9kZTsKLSAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIG1faW5zZXJ0aW9u
UG9pbnQ7Ci0gICAgICAgIGJvb2wgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2U7Ci0gICAgICAgIGJv
b2wgbV9vdXRPZkNvbXBvc2l0aW9uOwotICAgIH07Ci0KICAgICBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIoY29uc3QgTm9kZSosIFBvbGljeSA9IENyb3NzVXBwZXJCb3VuZGFyeSwgU3RhcnRQb2xp
Y3kgPSBDYW5ub3RTdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7CiAKICAgICAvLyBGb3IgYSBjb21t
b24gdXNlIGNhc2Ugc3VjaCBhczoKICAgICAvLyBmb3IgKENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZyb21GaXJzdENoaWxkKG5vZGUp
OyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5uZXh0U2libGluZygpKQogICAgIHN0YXRpYyBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgZnJvbUZpcnN0Q2hpbGQoY29uc3QgTm9kZSosIFBvbGljeSA9IENy
b3NzVXBwZXJCb3VuZGFyeSk7Ci0gICAgc3RhdGljIHZvaWQgZmluZFBhcmVudChjb25zdCBOb2Rl
KiwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyopOwogCiAgICAgTm9kZSogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obV9ub2RlKTsgfQogCkBAIC05MCwxNCArNjYsMTMgQEAg
cHVibGljOgogICAgIHZvaWQgbmV4dFNpYmxpbmcoKTsKICAgICB2b2lkIHByZXZpb3VzU2libGlu
ZygpOwogCi0gICAgdm9pZCBwc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCk7Ci0gICAgdm9pZCBwc2V1
ZG9Bd2FyZVByZXZpb3VzU2libGluZygpOwotCiAgICAgdm9pZCBwYXJlbnQoKTsKIAogICAgIHZv
aWQgbmV4dCgpOwogICAgIHZvaWQgcHJldmlvdXMoKTsKIAorICAgIE5vZGUqIHRyYXZlcnNlUGFy
ZW50KGNvbnN0IE5vZGUqLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiA9IDApIGNvbnN0OworCiBw
cml2YXRlOgogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihjb25zdCBOb2RlKiwgUGFyZW50
VHJhdmVyc2FsRGV0YWlscyopOwogCkBAIC0xMzQsNyArMTA5LDYgQEAgcHJpdmF0ZToKICAgICBO
b2RlKiB0cmF2ZXJzZUZpcnN0Q2hpbGQoY29uc3QgTm9kZSopIGNvbnN0OwogICAgIE5vZGUqIHRy
YXZlcnNlTGFzdENoaWxkKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZUNo
aWxkKGNvbnN0IE5vZGUqLCBUcmF2ZXJzYWxEaXJlY3Rpb24pIGNvbnN0OwotICAgIE5vZGUqIHRy
YXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiA9IDApIGNv
bnN0OwogCiAgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSop
OwogICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IGRk
YjQwMGYxNzUzZjMwZTY0ZmJhNjQ1MGVmYTRjOWYxZjM5ZjYzNmIuLjlkYjdhMjI5Nzg3NzQyYmVk
ZWY0NzAyMWIzOTg0ZDI3OTI0MjQ1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0yNTcsMTEgKzI1NywxNiBAQCBpbmxpbmUgdm9pZCBDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVy
Tm9kZSogbgogCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeShO
b2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpIHsKKyAgICBib29sIGlu
RG9jdW1lbnQgPSBub2RlLT5pbkRvY3VtZW50KCk7CisgICAgYm9vbCBuZWVkc1NoYWRvd1RyZWVX
YWxrZXIgPSBub2RlLT5uZWVkc1NoYWRvd1RyZWVXYWxrZXIoKTsKKyAgICBib29sIGlzQ29udGFp
bmVyTm9kZSA9IG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpOworICAgIGlmIChpbkRvY3VtZW50KSB7
CiAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG5vZGUpOwogICAgICAgICBu
b2RlLT5kb2N1bWVudCgpLT5ub3RpZnlSZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpOwotICAg
IH0gZWxzZSBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCisgICAgfSBlbHNlIGlmIChpc0Nv
bnRhaW5lck5vZGUpCiAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUodG9Db250YWlu
ZXJOb2RlKG5vZGUpKTsKKyAgICBpZiAobmVlZHNTaGFkb3dUcmVlV2Fsa2VyKQorICAgICAgICBu
b2RlLT5yZXNldE5lZWRzU2hhZG93VHJlZVdhbGtlcigpOwogfQogCiBjbGFzcyBDaGlsZEZyYW1l
RGlzY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9u
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IDkyOTZhMTlh
MWNiOWU0YTQ4MDZmMzQzOWI3ODJjMjU3NGIxY2E1NjkuLjU5ZjU5YmViYzE3OTA4OTA1MzE1YTQ5
MmY4ZjBhOTYyMTk3NjBiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJ
bk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApAQCAtMTA1
LDYgKzEwNSw3IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAiCiAjaW5jbHVk
ZSAiTm9kZUl0ZXJhdG9yLmNwcCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHAi
CisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAiCiAjaW5jbHVkZSAiTm90YXRp
b24uY3BwIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuY3BwIgogI2luY2x1ZGUgIlBhZ2VUcmFu
c2l0aW9uRXZlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDg4ODI0N2NiZTcxNjll
OGNlMzU0ZDY1OTAzNmI5OGEyNzAyOGRlM2IuLmViNDJkNmQ3ODg4YmI4NGY2NjJmZjZhYjk4NzBi
YzBlNmMyMjMwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE1MzIsMTAgKzE1MzIsMjAg
QEAgdm9pZCBFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5v
ZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWYKICAgICBlbHNlCiAgICAgICAgIGNoZWNrRm9yU2li
bGluZ1N0eWxlQ2hhbmdlcyh0aGlzLCByZW5kZXJTdHlsZSgpLCBmYWxzZSwgYmVmb3JlQ2hhbmdl
LCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIAorICAgIGlmIChjaGlsZE5lZWRzU2hh
ZG93V2Fsa2VyKCkpCisgICAgICAgIGRpZFNoYWRvd1RyZWVBd2FyZUNoaWxkcmVuQ2hhbmdlKCk7
Cit9CisKK3ZvaWQgRWxlbWVudDo6ZGlkU2hhZG93VHJlZUF3YXJlQ2hpbGRyZW5DaGFuZ2UoKQor
eworICAgIEFTU0VSVChjaGlsZE5lZWRzU2hhZG93V2Fsa2VyKCkpOwogICAgIGlmIChFbGVtZW50
U2hhZG93ICogc2hhZG93ID0gdGhpcy0+c2hhZG93KCkpCiAgICAgICAgIHNoYWRvdy0+aW52YWxp
ZGF0ZURpc3RyaWJ1dGlvbigpOworICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsg
bm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIG5vZGUtPnNldE5lZWRz
U2hhZG93VHJlZVdhbGtlcigpOwogfQogCisKIHZvaWQgRWxlbWVudDo6YmVnaW5QYXJzaW5nQ2hp
bGRyZW4oKQogewogICAgIGNsZWFySXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpOwpAQCAtMjA5
OCw3ICsyMTA4LDcgQEAgdm9pZCBFbGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKIAogdm9p
ZCBFbGVtZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkIHBzZXVkb0lkLCBTdHlsZUNo
YW5nZSBjaGFuZ2UpCiB7Ci0gICAgUHNldWRvRWxlbWVudCogZXhpc3RpbmcgPSBoYXNSYXJlRGF0
YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQocHNldWRvSWQpIDogMDsKKyAg
ICBQc2V1ZG9FbGVtZW50KiBleGlzdGluZyA9IHBzZXVkb0VsZW1lbnQocHNldWRvSWQpOwogICAg
IGlmIChleGlzdGluZykgewogICAgICAgICAvLyBQc2V1ZG9FbGVtZW50IHN0eWxlcyBoYW5nIG9m
ZiB0aGVpciBwYXJlbnQgZWxlbWVudCdzIHN0eWxlIHNvIGlmIHdlIG5lZWRlZAogICAgICAgICAv
LyBhIHN0eWxlIHJlY2FsYyB3ZSBzaG91bGQgRm9yY2Ugb25lIG9uIHRoZSBwc2V1ZG8uCkBAIC0y
MTA5LDEwICsyMTE5LDEwIEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlUHNldWRvRWxlbWVudChQc2V1
ZG9JZCBwc2V1ZG9JZCwgU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICAvLyB3aGVuIFJlbmRl
ck9iamVjdDo6aXNDaGlsZEFsbG93ZWQgb24gb3VyIHBhcmVudCByZXR1cm5zIGZhbHNlIGZvciB0
aGUKICAgICAgICAgLy8gUHNldWRvRWxlbWVudCdzIHJlbmRlcmVyIGZvciBlYWNoIHN0eWxlIHJl
Y2FsYy4KICAgICAgICAgaWYgKCFyZW5kZXJlcigpIHx8ICFwc2V1ZG9FbGVtZW50UmVuZGVyZXJJ
c05lZWRlZChyZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpKQotICAg
ICAgICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIDAp
OworICAgICAgICAgICAgc2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgMCk7CiAgICAgfSBlbHNl
IGlmIChSZWZQdHI8UHNldWRvRWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZVBzZXVkb0VsZW1lbnRJ
Zk5lZWRlZChwc2V1ZG9JZCkpIHsKICAgICAgICAgZWxlbWVudC0+YXR0YWNoKCk7Ci0gICAgICAg
IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVt
ZW50LnJlbGVhc2UoKSk7CisgICAgICAgIHNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1l
bnQucmVsZWFzZSgpKTsKICAgICB9CiB9CiAKQEAgLTIxMzMsMTYgKzIxNDMsMjUgQEAgUGFzc1Jl
ZlB0cjxQc2V1ZG9FbGVtZW50PiBFbGVtZW50OjpjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQo
UHNldWRvSWQgcHNldWRvSWQKICAgICByZXR1cm4gUHNldWRvRWxlbWVudDo6Y3JlYXRlKHRoaXMs
IHBzZXVkb0lkKTsKIH0KIAotUHNldWRvRWxlbWVudCogRWxlbWVudDo6YmVmb3JlUHNldWRvRWxl
bWVudCgpIGNvbnN0Citib29sIEVsZW1lbnQ6Omhhc1BzZXVkb0VsZW1lbnRzKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVt
ZW50KEJFRk9SRSkgOiAwOworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJl
RGF0YSgpLT5oYXNQc2V1ZG9FbGVtZW50cygpOwogfQogCi1Qc2V1ZG9FbGVtZW50KiBFbGVtZW50
OjphZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdAorUHNldWRvRWxlbWVudCogRWxlbWVudDo6cHNl
dWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzUmFy
ZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KEFGVEVSKSA6IDA7Cisg
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVu
dChwc2V1ZG9JZCkgOiAwOwogfQogCit2b2lkIEVsZW1lbnQ6OnNldFBzZXVkb0VsZW1lbnQoUHNl
dWRvSWQgcHNldWRvSWQsIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4gZWxlbWVudCkKK3sKKyAg
ICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxl
bWVudCk7CisgICAgcmVzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKTsKKyAgICBmb3IgKE5vZGUq
IGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmco
KSkKKyAgICAgICAgY2hpbGQtPnJlc2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCk7Cit9CisKKwog
Ly8gRWxlbWVudFRyYXZlcnNhbCBBUEkKIEVsZW1lbnQqIEVsZW1lbnQ6OmZpcnN0RWxlbWVudENo
aWxkKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDliNjMyNTE2NTA3OTcyODY4YzE1
YWY2ZmM0NTYyZDI2MTBlYTRmYzAuLmE0YWI0NjllYzZjZDUxZTExMWNkMDY3ZmQ4YTQ4NjcxN2Rj
NzI3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzY2LDggKzM2NiwxMiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBiZWdpblBhcnNpbmdDaGlsZHJlbigpOwogCi0gICAgUHNldWRvRWxlbWVudCogYmVmb3JlUHNl
dWRvRWxlbWVudCgpIGNvbnN0OwotICAgIFBzZXVkb0VsZW1lbnQqIGFmdGVyUHNldWRvRWxlbWVu
dCgpIGNvbnN0OworICAgIGJvb2wgaGFzUHNldWRvRWxlbWVudHMoKSBjb25zdDsKKyAgICBQc2V1
ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50KFBzZXVkb0lkKSBjb25zdDsKKyAgICBQc2V1ZG9FbGVt
ZW50KiBiZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvRWxlbWVudChC
RUZPUkUpOyB9CisgICAgUHNldWRvRWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gcHNldWRvRWxlbWVudChBRlRFUik7IH0KKyAgICBib29sIGNoaWxkTmVlZHNTaGFk
b3dXYWxrZXIoKSBjb25zdCB7IHJldHVybiBpc0luc2VydGlvblBvaW50KCkgfHwgc2hhZG93KCkg
fHwgaGFzUHNldWRvRWxlbWVudHMoKTsgfQorICAgIHZvaWQgZGlkU2hhZG93VHJlZUF3YXJlQ2hp
bGRyZW5DaGFuZ2UoKTsKIAogICAgIC8vIEVsZW1lbnRUcmF2ZXJzYWwgQVBJCiAgICAgRWxlbWVu
dCogZmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdDsKQEAgLTUwNCw2ICs1MDgsNyBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUHNldWRvRWxlbWVudChQc2V1ZG9JZCwgU3R5
bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAgICAgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBjcmVh
dGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQoUHNldWRvSWQpOworICAgIHZvaWQgc2V0UHNldWRvRWxl
bWVudChQc2V1ZG9JZCwgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50Pik7CiAKICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoZSBuZWVkIGZvciBBdHRyIHRvIGNhbGwgd2lsbE1vZGlmeUF0dHJpYnV0ZS9k
aWRNb2RpZnlBdHRyaWJ1dGUuCiAgICAgZnJpZW5kIGNsYXNzIEF0dHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmgKaW5kZXggMTk3YzI0MGI4MTVkMGYwYjNmMmJiOTA2YTU5YTM4ZTY3
ZThkNThhNS4uODgzZjUzNGE5NDU5ZmIwMWI3MjRmMTg3ZTAxMTM3MmZhNzk3YzAzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldFBzZXVkb0VsZW1lbnQoUHNldWRvSWQsIFBhc3NSZWZQdHI8UHNldWRvRWxl
bWVudD4pOwogICAgIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQoUHNldWRvSWQpIGNvbnN0
OworICAgIGJvb2wgaGFzUHNldWRvRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRl
ZEJlZm9yZSB8fCBtX2dlbmVyYXRlZEFmdGVyOyB9CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRT
dHlsZSgpOwogICAgIHZvaWQgcmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmluZGV4IDNjZWE2NGU3NWQzYmU0MmNiOTk5ZTdm
NjQxM2E2YzhmZjBiNDljZWEuLmI3OTViNmZlZjBiNTgxMDMxY2FmNmM2Yzk3NTdkZDRmYTczNzUx
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKQEAgLTg0LDggKzg0LDggQEAg
dm9pZCBFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBh
c3NSZWZQdHI8U2hhZG93Um9vdD4gc2gKICAgICBzaGFkb3dSb290LT5zZXRQYXJlbnRUcmVlU2Nv
cGUoc2hhZG93SG9zdC0+dHJlZVNjb3BlKCkpOwogICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFk
b3dSb290LmdldCgpKTsKICAgICBzZXRWYWxpZGl0eVVuZGV0ZXJtaW5lZCgpOwotICAgIGludmFs
aWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9zdCk7CiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90
aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkpOworICAgIHNoYWRvd0hv
c3QtPmRpZFNoYWRvd1RyZWVBd2FyZUNoaWxkcmVuQ2hhbmdlKCk7CiAKICAgICAvLyBGSVhNRSg5
NDkwNSk6IFNoYWRvd0hvc3Qgc2hvdWxkIGJlIHJlYXR0YWNoZWQgZHVyaW5nIHJlY2FsY1N0eWxl
LgogICAgIC8vIFNldCBzb21lIGZsYWcgaGVyZSBhbmQgcmVjcmVhdGUgc2hhZG93IGhvc3RzJyBy
ZW5kZXJlciBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDc2NTMwMmFlMTM1ZDA1YzIyZDY2NDQ5YzJk
ZjA0NTA5OGYwM2E5NjQuLjliN2FkM2QzOGQ5OTY4NDRmNTI2MTk5MzU5MDc5OWFiZjI3ZDQ0ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTEyOTAsNiArMTI5MCwxOCBAQCBFbGVtZW50KiBOb2RlOjpw
YXJlbnRPckhvc3RFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCk7
CiB9CiAKK2Jvb2wgTm9kZTo6bmVlZHNTaGFkb3dUcmVlV2Fsa2VyU2xvdygpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzU2hhZG93Um9vdCgpIHx8IChpc0VsZW1lbnROb2RlKCkgJiYgKGlzSW5zZXJ0aW9u
UG9pbnQoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSB8fCB0b0VsZW1lbnQodGhpcyktPmhhc1BzZXVk
b0VsZW1lbnRzKCkpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoTm9kZSogcGFy
ZW50ID0gcGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgIGlmIChwYXJlbnQtPmlzU2hhZG93
Um9vdCgpIHx8IChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQocGFyZW50KS0+
Y2hpbGROZWVkc1NoYWRvd1dhbGtlcigpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KIAogYm9vbCBOb2RlOjppc0Jsb2NrRmxvdygpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAppbmRleCA1MDUzOWJiOWQwZjMzZjZmNzM2MWVkODMzYzBiY2ZhZjQ2
MmM2ZTQzLi4yNWEyZmIyYTk5ZDUwZDY1MzIzMTBhZTljNjFhY2E1YWY5MjFkZTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKQEAgLTI1MSw2ICsyNTEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNEb2N1bWVudEZy
YWdtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0RvY3VtZW50RnJhZ21lbnRGbGFnKTsg
fQogICAgIGJvb2wgaXNTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gaXNEb2N1bWVudEZyYWdt
ZW50KCkgJiYgZG9jdW1lbnRGcmFnbWVudElzU2hhZG93Um9vdCgpOyB9CiAgICAgYm9vbCBpc0lu
c2VydGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0luc2VydGlvblBvaW50Rmxh
Zyk7IH0KKyAgICBib29sIG5lZWRzU2hhZG93VHJlZVdhbGtlcigpIGNvbnN0IHsgcmV0dXJuIGdl
dEZsYWcoTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyk7IH0KKyAgICBib29sIG5lZWRzU2hhZG93
VHJlZVdhbGtlclNsb3coKSBjb25zdDsKKyAgICB2b2lkIHNldE5lZWRzU2hhZG93VHJlZVdhbGtl
cigpIHsgc2V0RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsgfQorICAgIHZvaWQgcmVz
ZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSB7IHNldEZsYWcobmVlZHNTaGFkb3dUcmVlV2Fsa2Vy
U2xvdygpLCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsgfQorCiAgICAgYm9vbCBpbk5hbWVk
RmxvdygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSW5OYW1lZEZsb3dGbGFnKTsgfQogICAgIGJv
b2wgaGFzQ3VzdG9tQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNDdXN0b21D
YWxsYmFja3NGbGFnKTsgfQogCkBAIC03MDQsMTEgKzcwOSwxMiBAQCBwcml2YXRlOgogICAgICAg
ICBIYXNFdmVudFRhcmdldERhdGFGbGFnID0gMSA8PCAyMywKICAgICAgICAgVjhDb2xsZWN0YWJs
ZUR1cmluZ01pbm9yR0NGbGFnID0gMSA8PCAyNCwKICAgICAgICAgSXNJbnNlcnRpb25Qb2ludEZs
YWcgPSAxIDw8IDI1LAorICAgICAgICBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnID0gMSA8PCAy
NiwKIAogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hl
ZEZsYWcKICAgICB9OwogCi0gICAgLy8gNiBiaXRzIHJlbWFpbmluZworICAgIC8vIDUgYml0cyBy
ZW1haW5pbmcKIAogICAgIGJvb2wgZ2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyByZXR1
cm4gbV9ub2RlRmxhZ3MgJiBtYXNrOyB9CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wgZiwgTm9kZUZs
YWdzIG1hc2spIGNvbnN0IHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+bWFzaykgfCAo
LShpbnQzMl90KWYgJiBtYXNrKTsgfSAKQEAgLTcyMSwxNSArNzI3LDE1IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgQ3JlYXRlVGV4dCA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc1RleHRGbGFnLAogICAg
ICAgICBDcmVhdGVDb250YWluZXIgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb250YWluZXJGbGFn
LCAKICAgICAgICAgQ3JlYXRlRWxlbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRWxlbWVudEZs
YWcsIAotICAgICAgICBDcmVhdGVQc2V1ZG9FbGVtZW50ID0gIENyZWF0ZUVsZW1lbnQgfCBJbkRv
Y3VtZW50RmxhZywKLSAgICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8
IElzRG9jdW1lbnRGcmFnbWVudEZsYWcsCisgICAgICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAg
Q3JlYXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFnIHwgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxh
ZywKKyAgICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1l
bnRGcmFnbWVudEZsYWcgfCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnLAogICAgICAgICBDcmVh
dGVEb2N1bWVudEZyYWdtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50
RmxhZywKICAgICAgICAgQ3JlYXRlU3R5bGVkRWxlbWVudCA9IENyZWF0ZUVsZW1lbnQgfCBJc1N0
eWxlZEVsZW1lbnRGbGFnLCAKICAgICAgICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHls
ZWRFbGVtZW50IHwgSXNIVE1MRmxhZywgCiAgICAgICAgIENyZWF0ZUZyYW1lT3duZXJFbGVtZW50
ID0gQ3JlYXRlSFRNTEVsZW1lbnQgfCBIYXNDdXN0b21DYWxsYmFja3NGbGFnLAogICAgICAgICBD
cmVhdGVTVkdFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8IElzU1ZHRmxhZywKICAgICAg
ICAgQ3JlYXRlRG9jdW1lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJbkRvY3VtZW50RmxhZywKLSAg
ICAgICAgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQgPSBDcmVhdGVIVE1MRWxlbWVudCB8IElzSW5zZXJ0
aW9uUG9pbnRGbGFnLAorICAgICAgICBDcmVhdGVJbnNlcnRpb25Qb2ludCA9IENyZWF0ZUhUTUxF
bGVtZW50IHwgSXNJbnNlcnRpb25Qb2ludEZsYWcgfCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFn
LAogICAgICAgICBDcmVhdGVFZGl0aW5nVGV4dCA9IENyZWF0ZVRleHQgfCBIYXNOYW1lT3JJc0Vk
aXRpbmdUZXh0RmxhZywKICAgICB9OwogICAgIE5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25U
eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IDEzMTg3YjU2Y2FlYTg2MWNhNjY1YjdjYWQwOTE5ZWY5M2NhZmQyN2YuLmVjZDc0MWFiZjNjZTRm
YTk5ODc3Y2IwMTkyNmNlOGFmMDliOGQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAKLSNpbmNsdWRlICJDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVk
ZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgpAQCAt
NTksMTEgKzU4LDEyIEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4
dChOb2RlKiBub2RlKQogICAgIDogbV9ub2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudEZsb3dSZW5k
ZXJlcigwKQogewotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZmluZFBhcmVudChtX25v
ZGUsICZtX3BhcmVudERldGFpbHMpOworICAgIG1fcmVuZGVyaW5nUGFyZW50ID0gTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6cGFyZW50KG1fbm9kZSwgJm1fcGFyZW50RGV0YWlscyk7CiB9CiAKIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlLCBSZW5k
ZXJTdHlsZSogc3R5bGUpCiAgICAgOiBtX25vZGUobm9kZSkKKyAgICAsIG1fcmVuZGVyaW5nUGFy
ZW50KDApCiAgICAgLCBtX3N0eWxlKHN0eWxlKQogICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIo
MCkKIHsKQEAgLTgzLDEyICs4MywxMSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogCiAgICAgLy8gQXZvaWQgYW4gTyhOXjIpIHByb2Js
ZW0gd2l0aCB0aGlzIGZ1bmN0aW9uIGJ5IG5vdCBjaGVja2luZyBmb3IKICAgICAvLyBuZXh0UmVu
ZGVyZXIoKSB3aGVuIHRoZSBwYXJlbnQgZWxlbWVudCBoYXNuJ3QgYXR0YWNoZWQgeWV0LgotICAg
IGlmIChtX3BhcmVudERldGFpbHMubm9kZSgpICYmICFtX3BhcmVudERldGFpbHMubm9kZSgpLT5h
dHRhY2hlZCgpKQorICAgIGlmIChtX3JlbmRlcmluZ1BhcmVudCAmJiAhbV9yZW5kZXJpbmdQYXJl
bnQtPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIHdhbGtlcihtX25vZGUpOwotICAgIGZvciAod2Fsa2VyLnBzZXVkb0F3YXJlTmV4
dFNpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucHNldWRvQXdhcmVOZXh0U2libGluZygp
KSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gd2Fsa2VyLmdldCgpLT5y
ZW5kZXJlcigpKSB7CisgICAgZm9yIChOb2RlKiBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6bmV4dFNpYmxpbmcobV9ub2RlKTsgc2libGluZzsgc2libGluZyA9IE5vZGVSZW5kZXJp
bmdUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKHNpYmxpbmcpKSB7CisgICAgICAgIGlmIChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8g
UmVuZGVyZXJzIGZvciBlbGVtZW50cyBhdHRhY2hlZCB0byBhIGZsb3cgdGhyZWFkIHNob3VsZCBi
ZSBza2lwcGVkIGJlY2F1c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlmZmVyZW50bHkuCiAgICAgICAg
ICAgICBpZiAocmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5z
dHlsZSgpICYmICFyZW5kZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEwOSwxMCArMTA4LDggQEAgUmVuZGVyT2JqZWN0
KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgdGhlIHNhbWUgTyhOXjIpIGF2b2lkYW5jZSBhcyBuZXh0
UmVuZGVyZXIgZG9lcwogICAgIC8vIGhvd2V2ZXIsIHdoZW4gSSB0cmllZCBhZGRpbmcgaXQsIHNl
dmVyYWwgdGVzdHMgZmFpbGVkLgotCi0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtl
cihtX25vZGUpOwotICAgIGZvciAod2Fsa2VyLnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCk7
IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCkpIHsKLSAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVy
KCkpIHsKKyAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpw
cmV2aW91c1NpYmxpbmcobV9ub2RlKTsgc2libGluZzsgc2libGluZyA9IE5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhzaWJsaW5nKSkgeworICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8v
IFJlbmRlcmVycyBmb3IgZWxlbWVudHMgYXR0YWNoZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQg
YmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgYXJlIHBhcmVudGVkIGRpZmZlcmVudGx5LgogICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJlci0+
c3R5bGUoKSAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMzAsMjEgKzEyNywyMSBAQCBSZW5kZXJPYmpl
Y3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlcigpIGNvbnN0CiAgICAgaWYg
KG1fcGFyZW50Rmxvd1JlbmRlcmVyKQogICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVy
ZXI7CiAKLSAgICByZXR1cm4gbV9wYXJlbnREZXRhaWxzLm5vZGUoKSA/IG1fcGFyZW50RGV0YWls
cy5ub2RlKCktPnJlbmRlcmVyKCkgOiAwOworICAgIHJldHVybiBtX3JlbmRlcmluZ1BhcmVudCA/
IG1fcmVuZGVyaW5nUGFyZW50LT5yZW5kZXJlcigpIDogMDsKIH0KIAogYm9vbCBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdAogewogICAgIGlmICghbV9u
b2RlLT5kb2N1bWVudCgpLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghbV9wYXJlbnREZXRhaWxzLm5vZGUoKSkKKyAgICBpZiAoIW1fcmVu
ZGVyaW5nUGFyZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUmVuZGVyT2JqZWN0KiBw
YXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRlcmVyKCk7CiAgICAgaWYgKCFwYXJlbnRS
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghcGFyZW50UmVuZGVyZXIt
PmNhbkhhdmVDaGlsZHJlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtX3Bh
cmVudERldGFpbHMubm9kZSgpLT5jaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKCp0aGlzKSkKKyAg
ICBpZiAoIW1fcmVuZGVyaW5nUGFyZW50LT5jaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA3ZGE0OGUyOWE0MjdkOWFlNzRj
NjMyNGVjNDJhOGJlMDI0MWViYjYzLi5jMDc5Nzc2ZGM4MjA4MmQ0ZDVkZmYxNTk1MjE5ODU1NTU2
ZmJkMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaApAQCAt
MjYsNyArMjYsOCBAQAogI2lmbmRlZiBOb2RlUmVuZGVyaW5nQ29udGV4dF9oCiAjZGVmaW5lIE5v
ZGVSZW5kZXJpbmdDb250ZXh0X2gKIAotI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKKwogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTY5LDcgKzcwLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpOwogCiAgICAgTm9kZSogbV9ub2RlOwotICAgIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWlscyBtX3BhcmVudERl
dGFpbHM7CisgICAgQ29udGFpbmVyTm9kZSogbV9yZW5kZXJpbmdQYXJlbnQ7CisgICAgTm9kZVJl
bmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlscyBtX3BhcmVudERldGFpbHM7CiAgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOwogICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCogbV9w
YXJlbnRGbG93UmVuZGVyZXI7CiAgICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZDsKQEAgLTgy
LDcgKzg0LDcgQEAgaW5saW5lIE5vZGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpub2RlKCkgY29u
c3QKIAogaW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRO
b2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhcmVudERl
dGFpbHMubm9kZSgpOworICAgIHJldHVybiBtX3JlbmRlcmluZ1BhcmVudDsKIH0KIAogaW5saW5l
IGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjA2OWZmYzc3ZDIzOWNiYjUzYzI2ZDgyOTQwZmM2ZGQzYjRmYTUzYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcApA
QCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWwuaCIKKworI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5o
IgorI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7CisKK3ZvaWQgUGFyZW50RGV0YWlsczo6
ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQp
Cit7CisgICAgaWYgKCFtX2luc2VydGlvblBvaW50KSB7CisgICAgICAgIG1faW5zZXJ0aW9uUG9p
bnQgPSBpbnNlcnRpb25Qb2ludDsKKyAgICAgICAgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgID0g
bV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgfHwgaW5zZXJ0aW9uUG9pbnQtPnJlc2V0U3R5bGVJbmhl
cml0YW5jZSgpOworICAgIH0KK30KKwordm9pZCBQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZVNo
YWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCogcm9vdCkKK3sKKyAgICBtX3Jlc2V0U3R5bGVJbmhl
cml0YW5jZSAgPSBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB8fCByb290LT5yZXNldFN0eWxlSW5o
ZXJpdGFuY2UoKTsKK30KKworQ29udGFpbmVyTm9kZSogcGFyZW50U2xvdyhjb25zdCBOb2RlKiBu
b2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQoreworICAgIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciB3YWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDcm9zc1VwcGVyQm91
bmRhcnksIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q2FuU3RhcnRGcm9tU2hhZG93Qm91bmRh
cnkpOworICAgIHJldHVybiB0b0NvbnRhaW5lck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFyZW50KHdh
bGtlci5nZXQoKSwgZGV0YWlscykpOworfQorCitOb2RlKiBuZXh0U2libGluZ1Nsb3coY29uc3Qg
Tm9kZSogbm9kZSkKK3sKKyAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUp
OworICAgIGlmIChub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICB3YWxr
ZXIucGFyZW50KCk7CisgICAgICAgIHdhbGtlci5maXJzdENoaWxkKCk7CisgICAgfSBlbHNlIAor
ICAgICAgICB3YWxrZXIubmV4dFNpYmxpbmcoKTsKKworICAgIGlmICh3YWxrZXIuZ2V0KCkgfHwg
bm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHdhbGtlci5nZXQo
KTsKKworICAgIE5vZGUqIHBhcmVudCA9IHdhbGtlci50cmF2ZXJzZVBhcmVudChub2RlKTsKKyAg
ICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4g
dG9FbGVtZW50KHBhcmVudCktPmFmdGVyUHNldWRvRWxlbWVudCgpOworCisgICAgcmV0dXJuIDA7
Cit9CisKK05vZGUqIHByZXZpb3VzU2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworICAgIGlmIChub2RlLT5p
c0FmdGVyUHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKKyAgICAg
ICAgd2Fsa2VyLmxhc3RDaGlsZCgpOworICAgIH0gZWxzZSAKKyAgICAgICAgd2Fsa2VyLnByZXZp
b3VzU2libGluZygpOworCisgICAgaWYgKHdhbGtlci5nZXQoKSB8fCBub2RlLT5pc0JlZm9yZVBz
ZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKworICAgIE5vZGUq
IHBhcmVudCA9IHdhbGtlci50cmF2ZXJzZVBhcmVudChub2RlKTsKKyAgICBpZiAocGFyZW50ICYm
IHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVu
dCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKKworICAgIHJldHVybiAwOworfQorCit9CisKK30g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZGI5ZmNmYzRlNWVhMDUzNTg1OThkNGQ0MzgwODU5MjJjYTVlNDg3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuaApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbF9o
CisjZGVmaW5lIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWxfaAorCisjaW5jbHVkZSAiQ29udGFpbmVy
Tm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc2VydGlvblBvaW50Owor
CituYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7CisKK2NsYXNzIFBhcmVudERldGFp
bHMgeworcHVibGljOgorICAgIFBhcmVudERldGFpbHMoKQorICAgICAgICA6IG1faW5zZXJ0aW9u
UG9pbnQoMCkKKyAgICAgICAgLCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZShmYWxzZSkKKyAgICAg
ICAgLCBtX291dE9mQ29tcG9zaXRpb24oZmFsc2UpCisgICAgeyB9CisKKyAgICBJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2luc2VydGlvblBvaW50OyB9
CisgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc2V0
U3R5bGVJbmhlcml0YW5jZTsgfQorICAgIGJvb2wgb3V0T2ZDb21wb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fb3V0T2ZDb21wb3NpdGlvbjsgfQorCisgICAgdm9pZCBkaWRUcmF2ZXJzZUluc2Vy
dGlvblBvaW50KEluc2VydGlvblBvaW50Kik7CisgICAgdm9pZCBkaWRUcmF2ZXJzZVNoYWRvd1Jv
b3QoY29uc3QgU2hhZG93Um9vdCopOworICAgIHZvaWQgY2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9u
KCkgeyBtX291dE9mQ29tcG9zaXRpb24gPSB0cnVlOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUGFyZW50RGV0YWlscyYgb3RoZXIpCisgICAgeworICAgICAgICByZXR1cm4gbV9pbnNl
cnRpb25Qb2ludCA9PSBvdGhlci5tX2luc2VydGlvblBvaW50CisgICAgICAgICAgICAmJiBtX3Jl
c2V0U3R5bGVJbmhlcml0YW5jZSA9PSBvdGhlci5tX3Jlc2V0U3R5bGVJbmhlcml0YW5jZQorICAg
ICAgICAgICAgJiYgbV9vdXRPZkNvbXBvc2l0aW9uID09IG90aGVyLm1fb3V0T2ZDb21wb3NpdGlv
bjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW5zZXJ0aW9uUG9pbnQqIG1faW5zZXJ0aW9uUG9p
bnQ7CisgICAgYm9vbCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsKKyAgICBib29sIG1fb3V0T2ZD
b21wb3NpdGlvbjsKK307CisKK0NvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlKiwgUGFy
ZW50RGV0YWlscyopOworQ29udGFpbmVyTm9kZSogcGFyZW50U2xvdyhjb25zdCBOb2RlKiwgUGFy
ZW50RGV0YWlscyopOworTm9kZSogbmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOworTm9kZSogbmV4
dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqKTsKK05vZGUqIHByZXZpb3VzU2libGluZyhjb25zdCBO
b2RlKik7CitOb2RlKiBwcmV2aW91c1NpYmxpbmdTbG93KGNvbnN0IE5vZGUqKTsKKworCitpbmxp
bmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMq
IGRldGFpbHMpCit7CisgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSkgewor
I2lmbmRlZiBOREVCVUcKKyAgICAgICAgUGFyZW50RGV0YWlscyBzbG93RGV0YWlsczsKKyAgICAg
ICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9PSBwYXJlbnRTbG93KG5vZGUsICZzbG93RGV0
YWlscykpOworICAgICAgICBBU1NFUlQoc2xvd0RldGFpbHMgPT0gKmRldGFpbHMpOworI2VuZGlm
CisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQorCisgICAgcmV0dXJu
IHBhcmVudFNsb3cobm9kZSwgZGV0YWlscyk7Cit9CisKK2lubGluZSBOb2RlKiBuZXh0U2libGlu
Zyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVlV2Fs
a2VyKCkpIHsKKyAgICAgICAgQVNTRVJUKG5leHRTaWJsaW5nU2xvdyhub2RlKSA9PSBub2RlLT5u
ZXh0U2libGluZygpKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAg
fQorCisgICAgcmV0dXJuIG5leHRTaWJsaW5nU2xvdyhub2RlKTsKK30KKworaW5saW5lIE5vZGUq
IHByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZS0+bmVl
ZHNTaGFkb3dUcmVlV2Fsa2VyKCkpIHsKKyAgICAgICAgQVNTRVJUKHByZXZpb3VzU2libGluZ1Ns
b3cobm9kZSkgPT0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpOworICAgICAgICByZXR1cm4gbm9k
ZS0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIHByZXZpb3VzU2libGlu
Z1Nsb3cobm9kZSk7Cit9CisKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCBjNzdhMjk1NDQwNTA5YzQ0OTY3
N2U0MDYwMzIwOGQzZmRhMGFiZmQ5Li5hOGU1ODkxN2FhMzZkMDExMjcyMGY4ZjVkOGJmMDhjYWMy
NWUxNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC00Myw2ICs0Myw3
IEBAIFBzZXVkb0VsZW1lbnQ6OlBzZXVkb0VsZW1lbnQoRWxlbWVudCogcGFyZW50LCBQc2V1ZG9J
ZCBwc2V1ZG9JZCkKICAgICA6IEVsZW1lbnQocHNldWRvRWxlbWVudFRhZ05hbWUoKSwgcGFyZW50
LT5kb2N1bWVudCgpLCBDcmVhdGVQc2V1ZG9FbGVtZW50KQogICAgICwgbV9wc2V1ZG9JZChwc2V1
ZG9JZCkKIHsKKyAgICBBU1NFUlQocHNldWRvSWQgIT0gTk9QU0VVRE8pOwogICAgIEFTU0VSVChw
YXJlbnQtPmluRG9jdW1lbnQoKSk7CiAgICAgc2V0UGFyZW50T3JIb3N0Tm9kZShwYXJlbnQpOwog
ICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmlu
ZGV4IDg5NzA4OWUzMWQ5ODA3NGYwZmFiMTliMjJhNjNmNWE3Y2YwMzg2M2UuLjRiNjc0NzUzZWNh
NTcyZTBmYjQ1ZGY4ZTQ5NGNhNTNhMjNjMzU3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKQEAgLTMyNiw2ICszMjYsOCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKgogCiAgICAgQ29u
dGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdl
LCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKICAgICBvd25lcigpLT5pbnZhbGlkYXRl
RGlzdHJpYnV0aW9uKCk7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIGNoaWxkLT5zZXROZWVk
c1NoYWRvd1RyZWVXYWxrZXIoKTsKIH0KIAogY29uc3QgVmVjdG9yPEluc2VydGlvblBvaW50Kj4m
IFNoYWRvd1Jvb3Q6Omluc2VydGlvblBvaW50TGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggZTE3
OGU1ZjY1YWJmZjkxZjliMGNkZDQwZTg1MGM3ZmRmNjE1OTJlZC4uYjViZGFiYjA5ZDdiZjdjMmIz
ZDk2MWMwZjc5YzI2MTUxOTAwOGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Rl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29t
YmluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCBkNzEw
MjFiYjgxZDAzODI3YWJiNWRhZGRhODc1YTljODhkODY5ZDRjLi45Y2I0NmYyYTgzODM3ODhhZjAy
ODEyZGIxOGJkM2QxNWE2NzA0ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MT3B0R3JvdXBF
bGVtZW50LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFk
b3cuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDM5ODg4ZDhkNjFkZTU3MjI1MGI4MjAzZmEwYWI4Mjk5
N2MyNGJiNTkuLmY1MTA5Njg0MDdlYmI5OTk0ZWQ5ODhjYWY1ZjFiZTA3YzU2ZmYwZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKaW5kZXggZWE1ZjQwNzdjMWFk
ZTQ3NDRhOGMyNzMxYTlhYjBkZTgyNDQ2YTJlYS4uMTM2NzU1YmU3YTc2ZmMyYzk3YjYxOTdkNDAy
MWViMDFjNmI5N2JhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jl
c3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1l
bnQuY3BwCkBAIC0yMywxMiArMjMsMTMgQEAKIAogI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5U
KQogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1
ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQcm9ncmVzc1NoYWRv
d0VsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJQcm9ncmVzcy5oIgogI2luY2x1ZGUgIlNlbGVj
dFJ1bGVGZWF0dXJlU2V0LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179025</attachid>
            <date>2012-12-12 04:51:10 -0800</date>
            <delta_ts>2012-12-12 22:37:10 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-104332-20121212214831.patch</filename>
            <type>text/plain</type>
            <size>47145</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE5ZTdjMjI2YzE4OWRm
NWNhMDQ5Mzg3YzBlNTM4ZWEyYTY4MDc0OC4uZmI2YTI1MWRiYjdlNjJhOTE5YTVkNzE5NGZmYjZh
NWY2ZGI3YjVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxMi0xMi0xMiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgTm9kZVJlbmRlcmlu
Z0NvbnRleHQgaXMgc2xvdyBkdWUgdG8gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlUmVuZGVyaW5nQ29u
dGV4dCBoYXMgc29tZSBzbG93bmVzcyBkdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YKKyAgICAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHRoYXQgTlJDIHJlbGllcyBvbi4gVGhpcyBjaGFuZ2UK
KyAgICAgICAgY3JlYXRlcyBzb21lIGZhc3QgcGF0aHMgdG8gYWRkcmVzcyBzdWNoIHNsb3duZXNz
LgorCisgICAgICAgID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCBtb2R1bGU6CisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIG5hbWVzcGFjZSwg
YSBzaXN0ZXIKKyAgICAgICAgb2YgTm9kZVRyYXZlcnNhbC4gTlJUIGNvbnNpc3RzIG9mIGEgc2V0
IG9mIHRyZWUgdHJhdmVyc2FsCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGlzIHJlc3BvbnNpYmxl
IGZvciB0cmF2ZXJzYWwgaW4gTlJDLiAgQmVmb3JlIHRoaXMKKyAgICAgICAgY2hhZ25lLCBOUkMg
ZGlyZWN0bHkgdXNlZCBDU1RXLiBUaGlzIE5SVCBtb2R1bGUgaGlkZXMgYW5kIG5hcnJvd3MKKyAg
ICAgICAgdGhlIHVzYWdlIG9mIENTVFcuCisKKyAgICAgICAgLSBUcmF2ZXJzYWxzIHByb3ZpZGVk
IGJ5IE5SVCBoYXZlIGZhc3QgcGF0aHMuIEluIG1hbnkgY2FzZSwgc3VjaCB0cmF2ZXJzYWxzCisg
ICAgICAgICAgZG9lc24ndCBuZWVkIHRvIHVzZSBDU1RXIGFuZCBqdXN0IGdvZXMgbmVpZ2hib3Jp
bmcgbm9kZXMgaW4gYSBwbGFpbiBET00gd2F5LgorICAgICAgICAtIEl0IGFsc28gaGFuZGxlcyBO
UkMgc3BlY2lmaWMgdHJhdmVyc2FsIGNvbmNlcm5zIGxpa2UgcHNldWRvIGVsZW1lbnRzLgorICAg
ICAgICAgIENTVFc6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBhbmQgQ1NUVzo6cHNldWRvQXdh
cmVQcmV2aW91c1NpYmxpbmcoKSBhcmUKKyAgICAgICAgICBtZXJnZWQgaW50byB0aGlzIG1vZHVs
ZS4KKyAgICAgICAgLSBDU1RXOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIGlzIG1vdmVkIGFuZCBy
ZW5hbWVkIHRvCisgICAgICAgICAgTlJUOjpQYXJlbnREZXRhaWxzIHdpdGggc21hbGwgbW9kaWZp
Y2F0aW9uLiBUaGlzIGlzIGEgcHVyZQorICAgICAgICAgIHJlZmFjdG9yaW5nOiBBcyB0aGUgbmFt
ZSBpbXBsaWVzLCBUaGlzIGNsYXNzIGlzIHVzZWQgb25seSBieSBOUkMKKyAgICAgICAgICBhbmQg
dXNlZCBkdXJpbmcgYSB0cmF2ZXJzYWwgdGhlcmUuCisKKyAgICAgICAgTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbCBpcyBhbiBpc29sYXRpb24gbGF5ZXIgYmV0d2VlbiBnZW5lcmljIERPTSBhbmQgQ1NU
Vy4gVGhpcyBoaWRlcyBDU1RXCisgICAgICAgIGJlaGluZCB0aGUgd2FsbCBhbmQgd2lsbCBoZWxw
IGZ1cnRoZXIgcmVkdWN0aW9uIG9mIGl0cyB1c2FnZS4KKworICAgICAgICA9IE5vZGU6Ok5lZWRz
U2hhZG93VHJlZVdhbGtlckZsYWcgZmxhZzoKKworICAgICAgICBOUlQgZmFzdCBwYXRoIGlzIGVu
YWJsZWQgYnkgbmV3bHkgaW50cm9kdWNlZCBOZWVkc1NoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAg
bm9kZSBmbGFnLiBFYWNoIERPTSBub2RlIGlzIG5vdyBtYXJrZCBhcyBOZWVkc1NoYWRvd1RyZWVX
YWxrZXIgaWYKKyAgICAgICAgaXQgcmVxdWlyZXMgbm9uLXRyaXZpYWwgdHJhdmVyc2FsIGluIE5S
VCB3aGljaCB1c2VzIENTVFcuIFRoaXMKKyAgICAgICAgbWVhbnMgdGhhdCBlYWNoIG5vZGUgY2Fu
IGdvIGZhc3QgcGF0aCB1bmxlc3MgaXQgaXMgbWFya2VkIHdpdGggdGhpcyBmbGFnLgorCisgICAg
ICAgIEEgbm9kZSBpcyBtYXJrZWQgYXMgaXQgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyIGlmOgorCisg
ICAgICAgIC0gVGhlIG5vZGUgaXMgYSBzaGFkb3cgYm91bmRhcnkgbGlrZSBJbnNlcnRpb25Qb2lu
dCBvciBTaGFkb3dSb290LAorICAgICAgICAtIFRoZSBub2RlIGhhcyBwc2V1ZG8gZWxlbWVudHMg
bGlrZSBnZW5lcmF0ZWQgY29udGVudCwKKyAgICAgICAgLSBUaGUgbm9kZSBpcyBhIHBzZXVkbyBl
bGVtZW50IG9yCisgICAgICAgIC0gVGhlIHBhcmVudCBvZiB0aGUgbm9kZSBpcyBhIHNoYWRvdyBi
b3VuZGFyeSBvciBwc2V1ZG8gZWxlbWVudCBob2xkZXIuCisKKyAgICAgICAgVGhpcyBjcml0ZXJp
YSBpcyBkZWZpbmVkIGluIE5vZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKS4KKworICAg
ICAgICBUaGUgb3JpZ2luYWwgaWRlYSBvZiB0aGlzIGNoYW5nZSB3YXMgZGVtb25zdHJhdGVkIGJ5
IEFudHRpIEtvaXZpc3RvIG9uIGJ1ZyAxMDMyMDggYW5kIGJ1ZyAxMDQ1MDcuCisgICAgICAgIFRo
aXMgY2hhZ25lIGhhcyAzLTQlIHNwZWVkdXAgb24gRHJvbWFlby9kb20tbW9kaWZ5L2lubmVySFRN
TCBvbiBBcHBsZSBNYWMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAgICAgICogZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5oOgorICAgICAgICAoQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5KToKKyAgICAgICAgKiBk
b20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6IFJlZmFjdG9yZWQgYW5kIGFkZGVk
IGZsYWcgbWFpbnRlbmFuY2UgbG9naWMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmRpZFNoYWRvd1RyZWVBd2FyZUNoaWxkcmVuQ2hhbmdlKTogQWRkZWQg
Zm9yIGZsYWcgbWFpbnRlbmFuY2UuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVQ
c2V1ZG9FbGVtZW50KTogUmVmYWN0b3JlZAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFz
UHNldWRvRWxlbWVudHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnBzZXVk
b0VsZW1lbnQpOiBFeHRyYWN0ZWQgZnJvbSBiZWZvcmVQc2V1ZG9FbGVtZW50KCkgZXRjLgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0UHNldWRvRWxlbWVudCk6IEV4dHJhY3RlZCBmcm9t
IHVwZGF0ZVBzZXVkb0VsZW1lbnQoKSBhbmQgYWRkZWQgZmxhZyBtYWludGVuYW5jZSBsb2dpYy4K
KyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpiZWZvcmVQc2V1ZG9FbGVtZW50KTogUmVmYWN0b3JlZCB0byB1c2Ug
cHNldWRvRWxlbWVudCgpCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphZnRlclBzZXVkb0Vs
ZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkTmVlZHNTaGFk
b3dXYWxrZXIpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6Omhhc1BzZXVkb0VsZW1lbnRzKTogQWRkZWQu
CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6bmVlZHNTaGFkb3dUcmVlV2Fsa2VyU2xvdyk6IEFkZGVkLgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpuZWVkc1NoYWRv
d1RyZWVXYWxrZXIpOiBBZGRlZC4KKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpyZXNldE5lZWRzU2hhZG93VHJlZVdhbGtlcik6IEFkZGVkLgorICAgICAgICAqIGRv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVy
aW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcik6CisgICAgICAgICogZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAg
ICAgICogZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZUlu
c2VydGlvblBvaW50KTogTW92ZWQgZnJvbSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuCisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpkaWRU
cmF2ZXJzZVNoYWRvd1Jvb3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6OmRpZEZpbmROb2RlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwYXJlbnRTbG93KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRTaWJsaW5nU2xvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmdTbG93
KToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCk6CisgICAgICAg
IChQYXJlbnREZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWw6OlBhcmVudERldGFpbHM6OlBhcmVudERldGFpbHMpOiBNb3ZlZCBmcm9tIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlci4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6
OlBhcmVudERldGFpbHM6Om5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6UGFyZW50RGV0YWlsczo6aW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6cmVzZXRTdHlsZUluaGVy
aXRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVu
dERldGFpbHM6Om91dE9mQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6Y2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6
OnNldE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFy
ZW50RGV0YWlsczo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KTogQWRkZWQg
YW4gYXNzZXJ0aW9uLgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd1Jvb3Q6OmNoaWxkcmVuQ2hhbmdlZCk6IEFkZGVkIGZsYWcgbWFpbnRlbmFu
Y2UgbG9naWMuCisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDoKKwogMjAxMi0xMi0xMiAg
U2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0
XSBGaXggYnVpbGQgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDg3MmMyNTBiNGIyYjU0
YjI0OTg0MDFhNmZhYzIxNGUwODEzMDU4ZTMuLmUzOWNlOTMxYWY2MjIxYjhiZjA4ZDQzZmY1MmM2
YjMzMGJlZWMxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTkyLDYgKzExOTIsNyBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAKICAgICBkb20vTm9k
ZVJhcmVEYXRhLmNwcAogICAgIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKyAgICBkb20v
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKICAgICBkb20vTm9kZVRyYXZlcnNhbC5jcHAKICAg
ICBkb20vTm90YXRpb24uY3BwCiAgICAgZG9tL092ZXJmbG93RXZlbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA1YTE4NTg1OTYzOTA3YTY5OTgxZWQyNWM2YWJkZGFkYmM5
MGI0MTEzLi44YzFkYWIxYTA1ZjJhMDhmMTYxYjBhM2JmNDU3MDFlNGJhYmYzMWIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI4NzMsNiArMjg3Myw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2Fs
LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJTdHlsZS5oIFwKICAgICBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVRyYXZlcnNhbC5jcHAgXAogICAgIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlVHJh
dmVyc2FsLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZGU3YjRhMmEwNzRkMzJjMzUxODc2ZTZkNjE3ZTdi
NTZlMGM1N2ZmMC4uYzA3OTYxYjhiMzAzYzA5ZDg4MGFlM2Y1OWM1ZGJkYWQxZjEyMjQxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCkBAIC00MjAsNiArNDIwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL05vZGVJ
dGVyYXRvci5jcHAgXAogICAgIGRvbS9Ob2RlUmFyZURhdGEuY3BwIFwKICAgICBkb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwIFwKKyAgICBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAg
XAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL05vdGF0aW9uLmNwcCBcCiAg
ICAgZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgXApAQCAtMTYwMiw2ICsxNjAzLDcgQEAg
SEVBREVSUyArPSBcCiAgICAgZG9tL05vZGVJdGVyYXRvci5oIFwKICAgICBkb20vTm9kZVJhcmVE
YXRhLmggXAogICAgIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIFwKKyAgICBkb20vTm9kZVJl
bmRlcmluZ1RyYXZlcnNhbC5oIFwKICAgICBkb20vTm9kZVRyYXZlcnNhbC5oIFwKICAgICBkb20v
Tm90YXRpb24uaCBcCiAgICAgZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCA4ZTE0Y2I4Zjk5M2MzZTc2NjIwZWMxNjE3MTllOWE3ODRlMjk5NDQ0Li42ZDky
Y2NlZGE2NjRiMDE5MzliZmIwNmIyYWE0YTNjZjcxMGY5NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0yODQxLDYgKzI4NDEsOCBAQAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmFyZURhdGEuaCcsCiAg
ICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAn
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgnLAorICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmNwcCcsCisgICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJTdHlsZS5oJywKICAgICAgICAgICAg
ICdkb20vTm9kZVRyYXZlcnNhbC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlVHJhdmVyc2Fs
LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDA3ODQ1Yjc2NzNlMDcyOGZkZTdkODA2MTdkNjQyYjA3OTQ1MmYzZDEuLmM2MWM1
NDZiZDdmYjc1NTU4NWMwNGRkNGE3YjA1YmE3ODE0OGExNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4ODYsNiArMzg4Niw4
IEBACiAJCUE3NDBCNUE1MTRDOTM1QUIwMEE3N0ZBNCAvKiBKU0ludGVybmFsU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjRFQTc5MTRD
OTM0ODQwMEM4RjVCRiAvKiBKU0ludGVybmFsU2V0dGluZ3MuaCAqLzsgfTsKIAkJQTc0MEI1QTcx
NEM5MzVBRjAwQTc3RkE0IC8qIEpTSW50ZXJuYWxTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0RUE3ODE0QzkzNDg0MDBDOEY1QkYg
LyogSlNJbnRlcm5hbFNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQTc0QkI3NkIxM0JEQTg2MzAwRkY3
QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIEV4Y2Vw
dGlvbkNvZGVQbGFjZWhvbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUE3NEYzRUYzMTY3OEIyNEEwMEIwNUE2RSAvKiBOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3MjExRjIzMTY3OEE1NDIwMDk1NzQ0NCAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNw
cCAqLzsgfTsKKwkJQTc0RjNFRjUxNjc4QjI0RjAwQjA1QTZFIC8qIE5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MjExRjI0MTY3OEE1NDIwMDk1NzQ0NCAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggKi87IH07
CiAJCUE3NUU0OTc2MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU0OTc0MTA3
NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzVFNDk3NzEwNzUyQUNCMDBDOUI4
OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwICovOyB9OwogCQlBNzVFOEI4ODBFMURFMkQ2MDA3RjI0ODEgLyog
RkVCbGVuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzVFOEI4MDBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5jcHAgKi87IH07CkBAIC0xMTIw
Myw2ICsxMTIwNSw4IEBACiAJCUE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQWN0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJh
Z0NvbnRyb2xsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBEcmFnQ29udHJvbGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcx
QTcwQzkxMUFGQjAyMDAwOTg5RDZEIC8qIEhUTUxNZXRlckVsZW1lbnQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEhUTUxNZXRlckVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzIxMUYyMzE2NzhBNTQyMDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNh
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyMTFGMjQxNjc4
QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzIzRjc3QTE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBv
cnRNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1FeHBv
cnRNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyNzYzQkUxNjY4OUJG
QjAwMkZDQUNCIC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVzZXJBY3Rpb25FbGVtZW50U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MkVBM0JBMTU4NUNGNTUwMDRGQUEyNiAvKiBSZWZDb3VudGVkU3VwcGxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3VudGVkU3VwcGxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwNzksNiArMjIwODMsOCBAQAog
CQkJCTYzMTg5QUUyMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCAqLywKIAkJCQlB
N0Y1RDk0RDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwICovLAog
CQkJCUE3RjVEOTRFMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oICov
LAorCQkJCUE3MjExRjIzMTY3OEE1NDIwMDk1NzQ0NCAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
LmNwcCAqLywKKwkJCQlBNzIxMUYyNDE2NzhBNTQyMDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbC5oICovLAogCQkJCTYzRDdCMzJDMEU3OENEM0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVy
U3R5bGUuaCAqLywKIAkJCQlFNDMxMDVCNzE2NzUwRjBDMDBEQjJGQjggLyogTm9kZVRyYXZlcnNh
bC5jcHAgKi8sCiAJCQkJRTQzMTA1QkExNjc1MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwu
aCAqLywKQEAgLTI1ODgzLDYgKzI1ODg5LDcgQEAKIAkJCQkzMUQ1OTFCMzE2Njk3QTZDMDBFNkJG
MDIgLyogUGx1Z0luQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUQ1OTFCQzE2NkMyRTZD
MDBFNkJGMDIgLyogUGx1Z0luT3JpZ2luSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTg2RUE4
ODMxNUZGRjI5MDAwOTg1RTVFIC8qIFByZXJlbmRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTc0RjNFRjUxNjc4QjI0RjAwQjA1QTZFIC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjg5ODcsNiArMjg5OTQsNyBAQAogCQkJCUQ2NDg5RDI1MTY2RkZD
RjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDZGNzk2MEQxNjZGRkVDRTAwNzZERDE4IC8qIEpTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUQ1OTFCQjE2NkMyRTZDMDBFNkJGMDIgLyogUGx1
Z0luT3JpZ2luSGFzaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzRGM0VGMzE2NzhCMjRBMDBC
MDVBNkUgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKaW5kZXggZjAw
ZjJlZmI0OWExYTRlMzcwYzNhZmQ5OTE4ZWFjMGIxN2Q5YjY5YS4uMWQwM2M1NDdlMGI0OTg3ZTI2
NzIyYjkzOTlkNmY1YjBkNWZkMmIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTEsMyArMSw0IEBACisKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC03MCwy
NSArNzEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhbkJlRGlzdHJpYnV0ZWQoY29uc3Qg
Tm9kZSogbm9kZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSB2b2lkIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWlsczo6ZGlkVHJhdmVyc2VJbnNl
cnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpCi17Ci0gICAgaWYgKCFt
X2luc2VydGlvblBvaW50KSB7Ci0gICAgICAgIG1faW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRpb25Q
b2ludDsKLSAgICAgICAgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgID0gbV9yZXNldFN0eWxlSW5o
ZXJpdGFuY2UgfHwgaW5zZXJ0aW9uUG9pbnQtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOwotICAg
IH0KLX0KLQotaW5saW5lIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2
ZXJzYWxEZXRhaWxzOjpkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCogcm9v
dCkKLXsKLSAgICBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSAgPSBtX3Jlc2V0U3R5bGVJbmhlcml0
YW5jZSB8fCByb290LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKLX0KLQotaW5saW5lIHZvaWQg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzOjpkaWRGaW5k
Tm9kZShDb250YWluZXJOb2RlKiBub2RlKQotewotICAgIGlmICghbV9vdXRPZkNvbXBvc2l0aW9u
KQotICAgICAgICBtX25vZGUgPSBub2RlOwotfQotCiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGlsZChjb25zdCBOb2RlKiBub2Rl
LCBQb2xpY3kgcG9saWN5KQogewogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIo
bm9kZSwgcG9saWN5KTsKQEAgLTk2LDE0ICs3OCw2IEBAIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZyb21GaXJzdENoaWxkKGNvbnN0IE5vZGUqIG5v
CiAgICAgcmV0dXJuIHdhbGtlcjsKIH0KIAotdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6
OmZpbmRQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogZGV0
YWlscykKLXsKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUsIENyb3Nz
VXBwZXJCb3VuZGFyeSwgQ2FuU3RhcnRGcm9tU2hhZG93Qm91bmRhcnkpOwotICAgIENvbnRhaW5l
ck5vZGUqIGZvdW5kID0gdG9Db250YWluZXJOb2RlKHdhbGtlci50cmF2ZXJzZVBhcmVudCh3YWxr
ZXIuZ2V0KCksIGRldGFpbHMpKTsKLSAgICBpZiAoZm91bmQpCi0gICAgICAgIGRldGFpbHMtPmRp
ZEZpbmROb2RlKGZvdW5kKTsKLX0KLQogdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZp
cnN0Q2hpbGQoKQogewogICAgIGFzc2VydFByZWNvbmRpdGlvbigpOwpAQCAtMTgzLDQ2ICsxNTcs
NiBAQCB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKCkKICAg
ICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7CiB9CiAKLXZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyOjpwc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCkKLXsKLSAgICBhc3NlcnRQcmVjb25kaXRpb24o
KTsKLQotICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0KLSAgICBpZiAobm9kZS0+aXNC
ZWZvcmVQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlRmlyc3RDaGls
ZCh0cmF2ZXJzZVBhcmVudChub2RlKSk7Ci0gICAgZWxzZQotICAgICAgICBtX25vZGUgPSB0cmF2
ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFRyYXZlcnNhbERpcmVjdGlv
bkZvcndhcmQpOwotCi0gICAgaWYgKCFtX25vZGUgJiYgIW5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVt
ZW50KCkpIHsKLSAgICAgICAgTm9kZSogcGFyZW50ID0gdHJhdmVyc2VQYXJlbnQobm9kZSk7Ci0g
ICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAg
ICBtX25vZGUgPSB0b0VsZW1lbnQocGFyZW50KS0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCk7Ci0gICAg
fQotCi0gICAgYXNzZXJ0UG9zdGNvbmRpdGlvbigpOwotfQotCi12b2lkIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjo6cHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKQotewotICAgIGFzc2VydFBy
ZWNvbmRpdGlvbigpOwotCi0gICAgY29uc3QgTm9kZSogbm9kZSA9IG1fbm9kZTsKLQotICAgIGlm
IChub2RlLT5pc0FmdGVyUHNldWRvRWxlbWVudCgpKQotICAgICAgICBtX25vZGUgPSB0cmF2ZXJz
ZUxhc3RDaGlsZCh0cmF2ZXJzZVBhcmVudChub2RlKSk7Ci0gICAgZWxzZQotICAgICAgICBtX25v
ZGUgPSB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUsIFRyYXZlcnNh
bERpcmVjdGlvbkJhY2t3YXJkKTsKLQotICAgIGlmICghbV9ub2RlICYmICFub2RlLT5pc0JlZm9y
ZVBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBhcmVu
dChub2RlKTsKLSAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkK
LSAgICAgICAgICAgIG1fbm9kZSA9IHRvRWxlbWVudChwYXJlbnQpLT5iZWZvcmVQc2V1ZG9FbGVt
ZW50KCk7Ci0gICAgfQotCi0gICAgYXNzZXJ0UG9zdGNvbmRpdGlvbigpOwotfQotCiBOb2RlKiBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlRGlzdHJpYnV0ZWROb2Rlcyhjb25zdCBO
b2RlKiBub2RlLCBjb25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQsIFRyYXZlcnNh
bERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgZm9yIChjb25zdCBOb2RlKiBuZXh0ID0gbm9k
ZTsgbmV4dDsgbmV4dCA9IChkaXJlY3Rpb24gPT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/
IGluc2VydGlvblBvaW50LT5uZXh0VG8obmV4dCkgOiBpbnNlcnRpb25Qb2ludC0+cHJldmlvdXNU
byhuZXh0KSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuaAppbmRleCA0YjZmZjk1NmE0NTE5YjhkNjAyNDgzMWYyNzU4OGE2NGM0YWE5ZDAyLi5iODA5
YTI2YWM0OTkyYTg1NWFlNGViMjk0MDNmODEzOTI3YjUzYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVm
aW5lIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcl9oCiAKICNpbmNsdWRlICJJbnNlcnRpb25Qb2lu
dC5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDYgKzQwLDggQEAgY2xhc3Mg
U2hhZG93Um9vdDsKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MjcwMgogY2xhc3MgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHsKIHB1YmxpYzoKKyAgICB0eXBl
ZGVmIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHMgUGFyZW50VHJhdmVyc2Fs
RGV0YWlsczsKKwogICAgIGVudW0gUG9saWN5IHsKICAgICAgICAgQ3Jvc3NVcHBlckJvdW5kYXJ5
LAogICAgICAgICBEb05vdENyb3NzVXBwZXJCb3VuZGFyeSwKQEAgLTQ5LDM4ICs1MiwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIENhbm5vdFN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5CiAgICAgfTsKIAot
ICAgIGNsYXNzIFBhcmVudFRyYXZlcnNhbERldGFpbHMgewotICAgIHB1YmxpYzoKLSAgICAgICAg
UGFyZW50VHJhdmVyc2FsRGV0YWlscygpCi0gICAgICAgICAgICA6IG1fbm9kZSgwKQotICAgICAg
ICAgICAgLCBtX2luc2VydGlvblBvaW50KDApCi0gICAgICAgICAgICAsIG1fcmVzZXRTdHlsZUlu
aGVyaXRhbmNlKGZhbHNlKQotICAgICAgICAgICAgLCBtX291dE9mQ29tcG9zaXRpb24oZmFsc2Up
Ci0gICAgICAgIHsgfQotCi0gICAgICAgIENvbnRhaW5lck5vZGUqIG5vZGUoKSBjb25zdCB7IHJl
dHVybiBtX25vZGU7IH0KLSAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KCkg
Y29uc3QgeyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludDsgfQotICAgICAgICBib29sIHJlc2V0U3R5
bGVJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOyB9
Ci0gICAgICAgIGJvb2wgb3V0T2ZDb21wb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZD
b21wb3NpdGlvbjsgfQotCi0gICAgICAgIHZvaWQgZGlkRmluZE5vZGUoQ29udGFpbmVyTm9kZSop
OwotICAgICAgICB2b2lkIGRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQq
KTsKLSAgICAgICAgdm9pZCBkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCop
OwotICAgICAgICB2b2lkIGNoaWxkV2FzT3V0T2ZDb21wb3NpdGlvbigpIHsgbV9vdXRPZkNvbXBv
c2l0aW9uID0gdHJ1ZTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQ29udGFpbmVyTm9kZSog
bV9ub2RlOwotICAgICAgICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludDsKLSAgICAg
ICAgYm9vbCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsKLSAgICAgICAgYm9vbCBtX291dE9mQ29t
cG9zaXRpb247Ci0gICAgfTsKLQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihjb25zdCBO
b2RlKiwgUG9saWN5ID0gQ3Jvc3NVcHBlckJvdW5kYXJ5LCBTdGFydFBvbGljeSA9IENhbm5vdFN0
YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsKIAogICAgIC8vIEZvciBhIGNvbW1vbiB1c2UgY2FzZSBz
dWNoIGFzOgogICAgIC8vIGZvciAoQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZnJvbUZpcnN0Q2hpbGQobm9kZSk7IHdhbGtlci5nZXQo
KTsgd2Fsa2VyLm5leHRTaWJsaW5nKCkpCiAgICAgc3RhdGljIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciBmcm9tRmlyc3RDaGlsZChjb25zdCBOb2RlKiwgUG9saWN5ID0gQ3Jvc3NVcHBlckJvdW5k
YXJ5KTsKLSAgICBzdGF0aWMgdm9pZCBmaW5kUGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnRUcmF2
ZXJzYWxEZXRhaWxzKik7CiAKICAgICBOb2RlKiBnZXQoKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PE5vZGUqPihtX25vZGUpOyB9CiAKQEAgLTkwLDE0ICs2NiwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBuZXh0U2libGluZygpOwogICAgIHZvaWQgcHJldmlvdXNTaWJsaW5nKCk7CiAKLSAgICB2
b2lkIHBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKTsKLSAgICB2b2lkIHBzZXVkb0F3YXJlUHJldmlv
dXNTaWJsaW5nKCk7Ci0KICAgICB2b2lkIHBhcmVudCgpOwogCiAgICAgdm9pZCBuZXh0KCk7CiAg
ICAgdm9pZCBwcmV2aW91cygpOwogCisgICAgTm9kZSogdHJhdmVyc2VQYXJlbnQoY29uc3QgTm9k
ZSosIFBhcmVudFRyYXZlcnNhbERldGFpbHMqID0gMCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqLCBQYXJlbnRUcmF2ZXJzYWxEZXRh
aWxzKik7CiAKQEAgLTEzNCw3ICsxMDksNiBAQCBwcml2YXRlOgogICAgIE5vZGUqIHRyYXZlcnNl
Rmlyc3RDaGlsZChjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VMYXN0Q2hp
bGQoY29uc3QgTm9kZSopIGNvbnN0OwogICAgIE5vZGUqIHRyYXZlcnNlQ2hpbGQoY29uc3QgTm9k
ZSosIFRyYXZlcnNhbERpcmVjdGlvbikgY29uc3Q7Ci0gICAgTm9kZSogdHJhdmVyc2VQYXJlbnQo
Y29uc3QgTm9kZSosIFBhcmVudFRyYXZlcnNhbERldGFpbHMqID0gMCkgY29uc3Q7CiAKICAgICBz
dGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0U2libGluZyhjb25zdCBOb2RlKik7CiAgICAgc3RhdGlj
IE5vZGUqIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKaW5kZXggZGRiNDAwZjE3NTNmMzBl
NjRmYmE2NDUwZWZhNGM5ZjFmMzlmNjM2Yi4uOWRiN2EyMjk3ODc3NDJiZWRlZjQ3MDIxYjM5ODRk
Mjc5MjQyNDUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0
aG1zLmgKQEAgLTI1NywxMSArMjU3LDE2IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxO
b3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBuCiAKIGlu
bGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCiB7
Ci0gICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkgeworICAgIGJvb2wgaW5Eb2N1bWVudCA9IG5v
ZGUtPmluRG9jdW1lbnQoKTsKKyAgICBib29sIG5lZWRzU2hhZG93VHJlZVdhbGtlciA9IG5vZGUt
Pm5lZWRzU2hhZG93VHJlZVdhbGtlcigpOworICAgIGJvb2wgaXNDb250YWluZXJOb2RlID0gbm9k
ZS0+aXNDb250YWluZXJOb2RlKCk7CisgICAgaWYgKGluRG9jdW1lbnQpIHsKICAgICAgICAgbm90
aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQobm9kZSk7CiAgICAgICAgIG5vZGUtPmRvY3VtZW50
KCktPm5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCk7Ci0gICAgfSBlbHNlIGlmIChu
b2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKKyAgICB9IGVsc2UgaWYgKGlzQ29udGFpbmVyTm9kZSkK
ICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSkp
OworICAgIGlmIChuZWVkc1NoYWRvd1RyZWVXYWxrZXIpCisgICAgICAgIG5vZGUtPnJlc2V0TmVl
ZHNTaGFkb3dUcmVlV2Fsa2VyKCk7CiB9CiAKIGNsYXNzIENoaWxkRnJhbWVEaXNjb25uZWN0b3Ig
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggOTI5NmExOWExY2I5ZTRhNDgwNmYz
NDM5Yjc4MmMyNTc0YjFjYTU2OS4uNTlmNTliZWJjMTc5MDg5MDUzMTVhNDkyZjhmMGE5NjIxOTc2
MGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAK
ICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCIKICNpbmNsdWRlICJOb2RlSXRlcmF0
b3IuY3BwIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCIKKyNpbmNsdWRlICJO
b2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCIKICNpbmNsdWRlICJOb3RhdGlvbi5jcHAiCiAjaW5j
bHVkZSAiT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5j
cHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODg4MjQ3Y2JlNzE2OWU4Y2UzNTRkNjU5MDM2
Yjk4YTI3MDI4ZGUzYi4uZWI0MmQ2ZDc4ODhiYjg0ZjY2MmZmNmFiOTg3MGJjMGU2YzIyMzBlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTUzMiwxMCArMTUzMiwyMCBAQCB2b2lkIEVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hh
bmdlLCBOb2RlKiBhZgogICAgIGVsc2UKICAgICAgICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFu
Z2VzKHRoaXMsIHJlbmRlclN0eWxlKCksIGZhbHNlLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdl
LCBjaGlsZENvdW50RGVsdGEpOwogCisgICAgaWYgKGNoaWxkTmVlZHNTaGFkb3dXYWxrZXIoKSkK
KyAgICAgICAgZGlkU2hhZG93VHJlZUF3YXJlQ2hpbGRyZW5DaGFuZ2UoKTsKK30KKwordm9pZCBF
bGVtZW50OjpkaWRTaGFkb3dUcmVlQXdhcmVDaGlsZHJlbkNoYW5nZSgpCit7CisgICAgQVNTRVJU
KGNoaWxkTmVlZHNTaGFkb3dXYWxrZXIoKSk7CiAgICAgaWYgKEVsZW1lbnRTaGFkb3cgKiBzaGFk
b3cgPSB0aGlzLT5zaGFkb3coKSkKICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0
aW9uKCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0g
bm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbm9kZS0+c2V0TmVlZHNTaGFkb3dUcmVlV2Fs
a2VyKCk7CiB9CiAKKwogdm9pZCBFbGVtZW50OjpiZWdpblBhcnNpbmdDaGlsZHJlbigpCiB7CiAg
ICAgY2xlYXJJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7CkBAIC0yMDk4LDcgKzIxMDgsNyBA
QCB2b2lkIEVsZW1lbnQ6Om5vcm1hbGl6ZUF0dHJpYnV0ZXMoKQogCiB2b2lkIEVsZW1lbnQ6OnVw
ZGF0ZVBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQsIFN0eWxlQ2hhbmdlIGNoYW5nZSkK
IHsKLSAgICBQc2V1ZG9FbGVtZW50KiBleGlzdGluZyA9IGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50
UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChwc2V1ZG9JZCkgOiAwOworICAgIFBzZXVkb0VsZW1l
bnQqIGV4aXN0aW5nID0gcHNldWRvRWxlbWVudChwc2V1ZG9JZCk7CiAgICAgaWYgKGV4aXN0aW5n
KSB7CiAgICAgICAgIC8vIFBzZXVkb0VsZW1lbnQgc3R5bGVzIGhhbmcgb2ZmIHRoZWlyIHBhcmVu
dCBlbGVtZW50J3Mgc3R5bGUgc28gaWYgd2UgbmVlZGVkCiAgICAgICAgIC8vIGEgc3R5bGUgcmVj
YWxjIHdlIHNob3VsZCBGb3JjZSBvbmUgb24gdGhlIHBzZXVkby4KQEAgLTIxMDksMTAgKzIxMTks
MTAgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkIHBzZXVkb0lk
LCBTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIC8vIHdoZW4gUmVuZGVyT2JqZWN0Ojppc0No
aWxkQWxsb3dlZCBvbiBvdXIgcGFyZW50IHJldHVybnMgZmFsc2UgZm9yIHRoZQogICAgICAgICAv
LyBQc2V1ZG9FbGVtZW50J3MgcmVuZGVyZXIgZm9yIGVhY2ggc3R5bGUgcmVjYWxjLgogICAgICAg
ICBpZiAoIXJlbmRlcmVyKCkgfHwgIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHJlbmRl
cmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKSkpCi0gICAgICAgICAgICBlbGVt
ZW50UmFyZURhdGEoKS0+c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgMCk7CisgICAgICAgICAg
ICBzZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCAwKTsKICAgICB9IGVsc2UgaWYgKFJlZlB0cjxQ
c2V1ZG9FbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVkKHBzZXVk
b0lkKSkgewogICAgICAgICBlbGVtZW50LT5hdHRhY2goKTsKLSAgICAgICAgZW5zdXJlRWxlbWVu
dFJhcmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1lbnQucmVsZWFzZSgp
KTsKKyAgICAgICAgc2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxlbWVudC5yZWxlYXNlKCkp
OwogICAgIH0KIH0KIApAQCAtMjEzMywxNiArMjE0MywyNSBAQCBQYXNzUmVmUHRyPFBzZXVkb0Vs
ZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZVBzZXVkb0VsZW1lbnRJZk5lZWRlZChQc2V1ZG9JZCBwc2V1
ZG9JZAogICAgIHJldHVybiBQc2V1ZG9FbGVtZW50OjpjcmVhdGUodGhpcywgcHNldWRvSWQpOwog
fQogCi1Qc2V1ZG9FbGVtZW50KiBFbGVtZW50OjpiZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3QK
K2Jvb2wgRWxlbWVudDo6aGFzUHNldWRvRWxlbWVudHMoKSBjb25zdAogewotICAgIHJldHVybiBo
YXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQoQkVGT1JFKSA6
IDA7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCktPmhhc1Bz
ZXVkb0VsZW1lbnRzKCk7CiB9CiAKLVBzZXVkb0VsZW1lbnQqIEVsZW1lbnQ6OmFmdGVyUHNldWRv
RWxlbWVudCgpIGNvbnN0CitQc2V1ZG9FbGVtZW50KiBFbGVtZW50Ojpwc2V1ZG9FbGVtZW50KFBz
ZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxl
bWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQoQUZURVIpIDogMDsKKyAgICByZXR1cm4gaGFz
UmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KHBzZXVkb0lkKSA6
IDA7CiB9CiAKK3ZvaWQgRWxlbWVudDo6c2V0UHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9J
ZCwgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBlbGVtZW50KQoreworICAgIGVuc3VyZUVsZW1l
bnRSYXJlRGF0YSgpLT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVtZW50KTsKKyAgICBy
ZXNldE5lZWRzU2hhZG93VHJlZVdhbGtlcigpOworICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICBj
aGlsZC0+cmVzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKTsKK30KKworCiAvLyBFbGVtZW50VHJh
dmVyc2FsIEFQSQogRWxlbWVudCogRWxlbWVudDo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggOWI2MzI1MTY1MDc5NzI4NjhjMTVhZjZmYzQ1NjJkMjYx
MGVhNGZjMC4uYTRhYjQ2OWVjNmNkNTFlMTExY2QwNjdmZDhhNDg2NzE3ZGM3MjdjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC0zNjYsOCArMzY2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2lu
Z0NoaWxkcmVuKCk7CiAKLSAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQc2V1ZG9FbGVtZW50KCkg
Y29uc3Q7Ci0gICAgUHNldWRvRWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3Q7Cisg
ICAgYm9vbCBoYXNQc2V1ZG9FbGVtZW50cygpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIHBz
ZXVkb0VsZW1lbnQoUHNldWRvSWQpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIGJlZm9yZVBz
ZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9FbGVtZW50KEJFRk9SRSk7IH0KKyAg
ICBQc2V1ZG9FbGVtZW50KiBhZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1
ZG9FbGVtZW50KEFGVEVSKTsgfQorICAgIGJvb2wgY2hpbGROZWVkc1NoYWRvd1dhbGtlcigpIGNv
bnN0IHsgcmV0dXJuIGlzSW5zZXJ0aW9uUG9pbnQoKSB8fCBzaGFkb3coKSB8fCBoYXNQc2V1ZG9F
bGVtZW50cygpOyB9CisgICAgdm9pZCBkaWRTaGFkb3dUcmVlQXdhcmVDaGlsZHJlbkNoYW5nZSgp
OwogCiAgICAgLy8gRWxlbWVudFRyYXZlcnNhbCBBUEkKICAgICBFbGVtZW50KiBmaXJzdEVsZW1l
bnRDaGlsZCgpIGNvbnN0OwpAQCAtNTA0LDYgKzUwOCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkLCBTdHlsZUNoYW5nZSA9IE5v
Q2hhbmdlKTsKICAgICBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGNyZWF0ZVBzZXVkb0VsZW1l
bnRJZk5lZWRlZChQc2V1ZG9JZCk7CisgICAgdm9pZCBzZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lk
LCBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+KTsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhl
IG5lZWQgZm9yIEF0dHIgdG8gY2FsbCB3aWxsTW9kaWZ5QXR0cmlidXRlL2RpZE1vZGlmeUF0dHJp
YnV0ZS4KICAgICBmcmllbmQgY2xhc3MgQXR0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURh
dGEuaAppbmRleCAxOTdjMjQwYjgxNWQwZjBiM2YyYmI5MDZhNTlhMzhlNjdlOGQ1OGE1Li44ODNm
NTM0YTk0NTlmYjAxYjcyNGYxODdlMDExMzcyZmE3OTdjMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
UHNldWRvRWxlbWVudChQc2V1ZG9JZCwgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50Pik7CiAgICAg
UHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVudChQc2V1ZG9JZCkgY29uc3Q7CisgICAgYm9vbCBo
YXNQc2V1ZG9FbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdGVkQmVmb3JlIHx8IG1f
Z2VuZXJhdGVkQWZ0ZXI7IH0KIAogICAgIHZvaWQgcmVzZXRDb21wdXRlZFN0eWxlKCk7CiAgICAg
dm9pZCByZXNldER5bmFtaWNSZXN0eWxlT2JzZXJ2YXRpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFNoYWRvdy5jcHAKaW5kZXggM2NlYTY0ZTc1ZDNiZTQyY2I5OTllN2Y2NDEzYTZjOGZmMGI0
OWNlYS4uYjc5NWI2ZmVmMGI1ODEwMzFjYWY2YzZjOTc1N2RkNGZhNzM3NTE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtODQsOCArODQsOCBAQCB2b2lkIEVsZW1lbnRT
aGFkb3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFk
b3dSb290PiBzaAogICAgIHNoYWRvd1Jvb3QtPnNldFBhcmVudFRyZWVTY29wZShzaGFkb3dIb3N0
LT50cmVlU2NvcGUoKSk7CiAgICAgbV9zaGFkb3dSb290cy5wdXNoKHNoYWRvd1Jvb3QuZ2V0KCkp
OwogICAgIHNldFZhbGlkaXR5VW5kZXRlcm1pbmVkKCk7Ci0gICAgaW52YWxpZGF0ZURpc3RyaWJ1
dGlvbihzaGFkb3dIb3N0KTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dI
b3N0KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQoKSk7CisgICAgc2hhZG93SG9zdC0+ZGlkU2hhZG93
VHJlZUF3YXJlQ2hpbGRyZW5DaGFuZ2UoKTsKIAogICAgIC8vIEZJWE1FKDk0OTA1KTogU2hhZG93
SG9zdCBzaG91bGQgYmUgcmVhdHRhY2hlZCBkdXJpbmcgcmVjYWxjU3R5bGUuCiAgICAgLy8gU2V0
IHNvbWUgZmxhZyBoZXJlIGFuZCByZWNyZWF0ZSBzaGFkb3cgaG9zdHMnIHJlbmRlcmVyIGluCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKaW5kZXggNzY1MzAyYWUxMzVkMDVjMjJkNjY0NDljMmRmMDQ1MDk4ZjAzYTk2
NC4uOWI3YWQzZDM4ZDk5Njg0NGY1MjYxOTkzNTkwNzk5YWJmMjdkNDRkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcApAQCAtMTI5MCw2ICsxMjkwLDE4IEBAIEVsZW1lbnQqIE5vZGU6OnBhcmVudE9ySG9zdEVs
ZW1lbnQoKSBjb25zdAogICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KTsKIH0KIAorYm9vbCBO
b2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXJTbG93KCkgY29uc3QKK3sKKyAgICBpZiAoaXNTaGFk
b3dSb290KCkgfHwgKGlzRWxlbWVudE5vZGUoKSAmJiAoaXNJbnNlcnRpb25Qb2ludCgpIHx8IGlz
UHNldWRvRWxlbWVudCgpIHx8IHRvRWxlbWVudCh0aGlzKS0+aGFzUHNldWRvRWxlbWVudHMoKSkp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnRP
ckhvc3ROb2RlKCkpIHsKKyAgICAgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkgfHwgKHBh
cmVudC0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChwYXJlbnQpLT5jaGlsZE5lZWRzU2hh
ZG93V2Fsa2VyKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQogCiBib29sIE5vZGU6OmlzQmxvY2tGbG93KCkgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IDUwNTM5YmI5ZDBmMzNmNmY3MzYxZWQ4MzNjMGJjZmFmNDYyYzZlNDMuLjI1YTJm
YjJhOTlkNTBkNjUzMjMxMGFlOWM2MWFjYTVhZjkyMWRlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjUx
LDYgKzI1MSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RvY3VtZW50RnJhZ21lbnQoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKElzRG9jdW1lbnRGcmFnbWVudEZsYWcpOyB9CiAgICAgYm9vbCBp
c1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBpc0RvY3VtZW50RnJhZ21lbnQoKSAmJiBkb2N1
bWVudEZyYWdtZW50SXNTaGFkb3dSb290KCk7IH0KICAgICBib29sIGlzSW5zZXJ0aW9uUG9pbnQo
KSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzSW5zZXJ0aW9uUG9pbnRGbGFnKTsgfQorICAgIGJv
b2wgbmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhOZWVkc1No
YWRvd1RyZWVXYWxrZXJGbGFnKTsgfQorICAgIGJvb2wgbmVlZHNTaGFkb3dUcmVlV2Fsa2VyU2xv
dygpIGNvbnN0OworICAgIHZvaWQgc2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkgeyBzZXRGbGFn
KE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcpOyB9CisgICAgdm9pZCByZXNldE5lZWRzU2hhZG93
VHJlZVdhbGtlcigpIHsgc2V0RmxhZyhuZWVkc1NoYWRvd1RyZWVXYWxrZXJTbG93KCksIE5lZWRz
U2hhZG93VHJlZVdhbGtlckZsYWcpOyB9CisKICAgICBib29sIGluTmFtZWRGbG93KCkgY29uc3Qg
eyByZXR1cm4gZ2V0RmxhZyhJbk5hbWVkRmxvd0ZsYWcpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21D
YWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcp
OyB9CiAKQEAgLTcwNCwxMSArNzA5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIEhhc0V2ZW50VGFy
Z2V0RGF0YUZsYWcgPSAxIDw8IDIzLAogICAgICAgICBWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JH
Q0ZsYWcgPSAxIDw8IDI0LAogICAgICAgICBJc0luc2VydGlvblBvaW50RmxhZyA9IDEgPDwgMjUs
CisgICAgICAgIE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcgPSAxIDw8IDI2LAogCiAgICAgICAg
IERlZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZwogICAgIH07
CiAKLSAgICAvLyA2IGJpdHMgcmVtYWluaW5nCisgICAgLy8gNSBiaXRzIHJlbWFpbmluZwogCiAg
ICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFn
cyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29u
c3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAm
IG1hc2spOyB9IApAQCAtNzIxLDE1ICs3MjcsMTUgQEAgcHJvdGVjdGVkOgogICAgICAgICBDcmVh
dGVUZXh0ID0gRGVmYXVsdE5vZGVGbGFncyB8IElzVGV4dEZsYWcsCiAgICAgICAgIENyZWF0ZUNv
bnRhaW5lciA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc0NvbnRhaW5lckZsYWcsIAogICAgICAgICBD
cmVhdGVFbGVtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNFbGVtZW50RmxhZywgCi0gICAgICAg
IENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3JlYXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFnLAot
ICAgICAgICBDcmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZy
YWdtZW50RmxhZywKKyAgICAgICAgQ3JlYXRlUHNldWRvRWxlbWVudCA9ICBDcmVhdGVFbGVtZW50
IHwgSW5Eb2N1bWVudEZsYWcgfCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnLAorICAgICAgICBD
cmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50Rmxh
ZyB8IE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcsCiAgICAgICAgIENyZWF0ZURvY3VtZW50RnJh
Z21lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnLAogICAgICAg
ICBDcmVhdGVTdHlsZWRFbGVtZW50ID0gQ3JlYXRlRWxlbWVudCB8IElzU3R5bGVkRWxlbWVudEZs
YWcsIAogICAgICAgICBDcmVhdGVIVE1MRWxlbWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJ
c0hUTUxGbGFnLCAKICAgICAgICAgQ3JlYXRlRnJhbWVPd25lckVsZW1lbnQgPSBDcmVhdGVIVE1M
RWxlbWVudCB8IEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcsCiAgICAgICAgIENyZWF0ZVNWR0VsZW1l
bnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNTVkdGbGFnLAogICAgICAgICBDcmVhdGVEb2N1
bWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IEluRG9jdW1lbnRGbGFnLAotICAgICAgICBDcmVhdGVJ
bnNlcnRpb25Qb2ludCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgSXNJbnNlcnRpb25Qb2ludEZsYWcs
CisgICAgICAgIENyZWF0ZUluc2VydGlvblBvaW50ID0gQ3JlYXRlSFRNTEVsZW1lbnQgfCBJc0lu
c2VydGlvblBvaW50RmxhZyB8IE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcsCiAgICAgICAgIENy
ZWF0ZUVkaXRpbmdUZXh0ID0gQ3JlYXRlVGV4dCB8IEhhc05hbWVPcklzRWRpdGluZ1RleHRGbGFn
LAogICAgIH07CiAgICAgTm9kZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMTMxODdiNTZjYWVh
ODYxY2E2NjViN2NhZDA5MTllZjkzY2FmZDI3Zi4uZWNkNzQxYWJmM2NlNGZhOTk4NzdjYjAxOTI2
Y2U4YWYwOWI4ZDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKIAotI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJDb250ZW50RGlz
dHJpYnV0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCkBAIC01OSwxMSArNTgsMTIg
QEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUp
CiAgICAgOiBtX25vZGUobm9kZSkKICAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCiB7Ci0g
ICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmaW5kUGFyZW50KG1fbm9kZSwgJm1fcGFyZW50
RGV0YWlscyk7CisgICAgbV9yZW5kZXJpbmdQYXJlbnQgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
OjpwYXJlbnQobV9ub2RlLCAmbV9wYXJlbnREZXRhaWxzKTsKIH0KIAogTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHls
ZSkKICAgICA6IG1fbm9kZShub2RlKQorICAgICwgbV9yZW5kZXJpbmdQYXJlbnQoMCkKICAgICAs
IG1fc3R5bGUoc3R5bGUpCiAgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQogewpAQCAtODMs
MTIgKzgzLDExIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5k
ZXJlcigpIGNvbnN0CiAKICAgICAvLyBBdm9pZCBhbiBPKE5eMikgcHJvYmxlbSB3aXRoIHRoaXMg
ZnVuY3Rpb24gYnkgbm90IGNoZWNraW5nIGZvcgogICAgIC8vIG5leHRSZW5kZXJlcigpIHdoZW4g
dGhlIHBhcmVudCBlbGVtZW50IGhhc24ndCBhdHRhY2hlZCB5ZXQuCi0gICAgaWYgKG1fcGFyZW50
RGV0YWlscy5ub2RlKCkgJiYgIW1fcGFyZW50RGV0YWlscy5ub2RlKCktPmF0dGFjaGVkKCkpCisg
ICAgaWYgKG1fcmVuZGVyaW5nUGFyZW50ICYmICFtX3JlbmRlcmluZ1BhcmVudC0+YXR0YWNoZWQo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fs
a2VyKG1fbm9kZSk7Ci0gICAgZm9yICh3YWxrZXIucHNldWRvQXdhcmVOZXh0U2libGluZygpOyB3
YWxrZXIuZ2V0KCk7IHdhbGtlci5wc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsK
KyAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2li
bGluZyhtX25vZGUpOyBzaWJsaW5nOyBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6
bmV4dFNpYmxpbmcoc2libGluZykpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBzaWJsaW5nLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAvLyBSZW5kZXJlcnMgZm9y
IGVsZW1lbnRzIGF0dGFjaGVkIHRvIGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNraXBwZWQgYmVj
YXVzZSB0aGV5IGFyZSBwYXJlbnRlZCBkaWZmZXJlbnRseS4KICAgICAgICAgICAgIGlmIChyZW5k
ZXJlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxlKCkgJiYgIXJl
bmRlcmVyLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtMTA5LDEwICsxMDgsOCBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJp
bmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKCkgY29uc3QKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgaGF2ZSB0aGUgc2FtZSBPKE5eMikgYXZvaWRhbmNlIGFzIG5leHRSZW5kZXJlciBkb2Vz
CiAgICAgLy8gaG93ZXZlciwgd2hlbiBJIHRyaWVkIGFkZGluZyBpdCwgc2V2ZXJhbCB0ZXN0cyBm
YWlsZWQuCi0KLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG1fbm9kZSk7Ci0g
ICAgZm9yICh3YWxrZXIucHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKTsgd2Fsa2VyLmdldCgp
OyB3YWxrZXIucHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHdhbGtlci5nZXQoKS0+cmVuZGVyZXIoKSkgeworICAgIGZv
ciAoTm9kZSogc2libGluZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3VzU2libGlu
ZyhtX25vZGUpOyBzaWJsaW5nOyBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJl
dmlvdXNTaWJsaW5nKHNpYmxpbmcpKSB7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gUmVuZGVyZXJzIGZv
ciBlbGVtZW50cyBhdHRhY2hlZCB0byBhIGZsb3cgdGhyZWFkIHNob3VsZCBiZSBza2lwcGVkIGJl
Y2F1c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlmZmVyZW50bHkuCiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpICYmICFy
ZW5kZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTEzMCwyMSArMTI3LDIxIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRl
cmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKICAgICBpZiAobV9wYXJlbnRGbG93
UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKIAotICAgIHJl
dHVybiBtX3BhcmVudERldGFpbHMubm9kZSgpID8gbV9wYXJlbnREZXRhaWxzLm5vZGUoKS0+cmVu
ZGVyZXIoKSA6IDA7CisgICAgcmV0dXJuIG1fcmVuZGVyaW5nUGFyZW50ID8gbV9yZW5kZXJpbmdQ
YXJlbnQtPnJlbmRlcmVyKCkgOiAwOwogfQogCiBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpz
aG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25vZGUtPmRvY3VtZW50
KCktPnNob3VsZENyZWF0ZVJlbmRlcmVycygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFtX3BhcmVudERldGFpbHMubm9kZSgpKQorICAgIGlmICghbV9yZW5kZXJpbmdQYXJlbnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVy
ID0gdGhpcy0+cGFyZW50UmVuZGVyZXIoKTsKICAgICBpZiAoIXBhcmVudFJlbmRlcmVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxk
cmVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fcGFyZW50RGV0YWlscy5u
b2RlKCktPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoKnRoaXMpKQorICAgIGlmICghbV9yZW5k
ZXJpbmdQYXJlbnQtPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoKnRoaXMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDdkYTQ4ZTI5YTQyN2Q5YWU3NGM2MzI0ZWM0MmE4YmUw
MjQxZWJiNjMuLmMwNzk3NzZkYzgyMDgyZDRkNWRmZjE1OTUyMTk4NTU1NTZmYmQxNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw4IEBA
CiAjaWZuZGVmIE5vZGVSZW5kZXJpbmdDb250ZXh0X2gKICNkZWZpbmUgTm9kZVJlbmRlcmluZ0Nv
bnRleHRfaAogCi0jaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVk
ZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgorCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgpAQCAtNjksNyArNzAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbW92ZVRvRmxvd1Ro
cmVhZElmTmVlZGVkKCk7CiAKICAgICBOb2RlKiBtX25vZGU7Ci0gICAgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIG1fcGFyZW50RGV0YWlsczsKKyAgICBD
b250YWluZXJOb2RlKiBtX3JlbmRlcmluZ1BhcmVudDsKKyAgICBOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsOjpQYXJlbnREZXRhaWxzIG1fcGFyZW50RGV0YWlsczsKICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IG1fc3R5bGU7CiAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBtX3BhcmVudEZsb3dSZW5k
ZXJlcjsKICAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOwpAQCAtODIsNyArODQsNyBAQCBp
bmxpbmUgTm9kZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5vZGUoKSBjb25zdAogCiBpbmxpbmUg
Q29udGFpbmVyTm9kZSogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFyZW50RGV0YWlscy5ub2RlKCk7
CisgICAgcmV0dXJuIG1fcmVuZGVyaW5nUGFyZW50OwogfQogCiBpbmxpbmUgYm9vbCBOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6cmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDY5ZmZj
NzdkMjM5Y2JiNTNjMjZkODI5NDBmYzZkZDNiNGZhNTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCkBAIC0wLDAgKzEsOTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNh
bC5oIgorCisjaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAi
UHNldWRvRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsIHsKKwordm9pZCBQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZUlu
c2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKK3sKKyAgICBpZiAo
IW1faW5zZXJ0aW9uUG9pbnQpIHsKKyAgICAgICAgbV9pbnNlcnRpb25Qb2ludCA9IGluc2VydGlv
blBvaW50OworICAgICAgICBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSAgPSBtX3Jlc2V0U3R5bGVJ
bmhlcml0YW5jZSB8fCBpbnNlcnRpb25Qb2ludC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7Cisg
ICAgfQorfQorCit2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25z
dCBTaGFkb3dSb290KiByb290KQoreworICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1f
cmVzZXRTdHlsZUluaGVyaXRhbmNlIHx8IHJvb3QtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOwor
fQorCitDb250YWluZXJOb2RlKiBwYXJlbnRTbG93KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERl
dGFpbHMqIGRldGFpbHMpCit7CisgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihu
b2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNyb3NzVXBwZXJCb3VuZGFyeSwgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjpDYW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7CisgICAgcmV0
dXJuIHRvQ29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVyc2VQYXJlbnQod2Fsa2VyLmdldCgpLCBk
ZXRhaWxzKSk7Cit9CisKK05vZGUqIG5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQor
eworICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisgICAgaWYgKG5v
ZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIHdhbGtlci5wYXJlbnQoKTsK
KyAgICAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsKKyAgICB9IGVsc2UgCisgICAgICAgIHdhbGtl
ci5uZXh0U2libGluZygpOworCisgICAgaWYgKHdhbGtlci5nZXQoKSB8fCBub2RlLT5pc0FmdGVy
UHNldWRvRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworCisgICAgTm9k
ZSogcGFyZW50ID0gd2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOworICAgIGlmIChwYXJlbnQg
JiYgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFy
ZW50KS0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CisKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSog
cHJldmlvdXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9F
bGVtZW50KCkpIHsKKyAgICAgICAgd2Fsa2VyLnBhcmVudCgpOworICAgICAgICB3YWxrZXIubGFz
dENoaWxkKCk7CisgICAgfSBlbHNlIAorICAgICAgICB3YWxrZXIucHJldmlvdXNTaWJsaW5nKCk7
CisKKyAgICBpZiAod2Fsa2VyLmdldCgpIHx8IG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgp
KQorICAgICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworCisgICAgTm9kZSogcGFyZW50ID0gd2Fs
a2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0Vs
ZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KS0+YmVmb3JlUHNl
dWRvRWxlbWVudCgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30KKworfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdkYjlmY2ZjNGU1ZWEwNTM1ODU5OGQ0ZDQzODA4NTkyMmNhNWU0ODcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCkBAIC0wLDAg
KzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsX2gKKyNkZWZpbmUgTm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbF9oCisKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CisKK25hbWVzcGFjZSBO
b2RlUmVuZGVyaW5nVHJhdmVyc2FsIHsKKworY2xhc3MgUGFyZW50RGV0YWlscyB7CitwdWJsaWM6
CisgICAgUGFyZW50RGV0YWlscygpCisgICAgICAgIDogbV9pbnNlcnRpb25Qb2ludCgwKQorICAg
ICAgICAsIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlKGZhbHNlKQorICAgICAgICAsIG1fb3V0T2ZD
b21wb3NpdGlvbihmYWxzZSkKKyAgICB7IH0KKworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICBib29sIHJl
c2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRTdHlsZUluaGVyaXRh
bmNlOyB9CisgICAgYm9vbCBvdXRPZkNvbXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vdXRP
ZkNvbXBvc2l0aW9uOyB9CisKKyAgICB2b2lkIGRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5z
ZXJ0aW9uUG9pbnQqKTsKKyAgICB2b2lkIGRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFk
b3dSb290Kik7CisgICAgdm9pZCBjaGlsZFdhc091dE9mQ29tcG9zaXRpb24oKSB7IG1fb3V0T2ZD
b21wb3NpdGlvbiA9IHRydWU7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJlbnRE
ZXRhaWxzJiBvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luc2VydGlvblBvaW50ID09
IG90aGVyLm1faW5zZXJ0aW9uUG9pbnQKKyAgICAgICAgICAgICYmIG1fcmVzZXRTdHlsZUluaGVy
aXRhbmNlID09IG90aGVyLm1fcmVzZXRTdHlsZUluaGVyaXRhbmNlCisgICAgICAgICAgICAmJiBt
X291dE9mQ29tcG9zaXRpb24gPT0gb3RoZXIubV9vdXRPZkNvbXBvc2l0aW9uOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludDsKKyAgICBib29s
IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOworICAgIGJvb2wgbV9vdXRPZkNvbXBvc2l0aW9uOwor
fTsKKworQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7
CitDb250YWluZXJOb2RlKiBwYXJlbnRTbG93KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7
CitOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlKik7CitOb2RlKiBuZXh0U2libGluZ1Nsb3co
Y29uc3QgTm9kZSopOworTm9kZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKK05vZGUq
IHByZXZpb3VzU2libGluZ1Nsb3coY29uc3QgTm9kZSopOworCisKK2lubGluZSBDb250YWluZXJO
b2RlKiBwYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKK3sK
KyAgICBpZiAoIW5vZGUtPm5lZWRzU2hhZG93VHJlZVdhbGtlcigpKSB7CisjaWZuZGVmIE5ERUJV
RworICAgICAgICBQYXJlbnREZXRhaWxzIHNsb3dEZXRhaWxzOworICAgICAgICBBU1NFUlQobm9k
ZS0+cGFyZW50Tm9kZSgpID09IHBhcmVudFNsb3cobm9kZSwgJnNsb3dEZXRhaWxzKSk7CisgICAg
ICAgIEFTU0VSVChzbG93RGV0YWlscyA9PSAqZGV0YWlscyk7CisjZW5kaWYKKyAgICAgICAgcmV0
dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGFyZW50U2xvdyhu
b2RlLCBkZXRhaWxzKTsKK30KKworaW5saW5lIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUq
IG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSkgeworICAg
ICAgICBBU1NFUlQobmV4dFNpYmxpbmdTbG93KG5vZGUpID09IG5vZGUtPm5leHRTaWJsaW5nKCkp
OworICAgICAgICByZXR1cm4gbm9kZS0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gbmV4dFNpYmxpbmdTbG93KG5vZGUpOworfQorCitpbmxpbmUgTm9kZSogcHJldmlvdXNTaWJs
aW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVX
YWxrZXIoKSkgeworICAgICAgICBBU1NFUlQocHJldmlvdXNTaWJsaW5nU2xvdyhub2RlKSA9PSBu
b2RlLT5wcmV2aW91c1NpYmxpbmcoKSk7CisgICAgICAgIHJldHVybiBub2RlLT5wcmV2aW91c1Np
YmxpbmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJldmlvdXNTaWJsaW5nU2xvdyhub2RlKTsK
K30KKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IGM3N2EyOTU0NDA1MDljNDQ5Njc3ZTQwNjAzMjA4ZDNm
ZGEwYWJmZDkuLmE4ZTU4OTE3YWEzNmQwMTEyNzIwZjhmNWQ4YmYwOGNhYzI1ZTE3MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgUHNldWRvRWxl
bWVudDo6UHNldWRvRWxlbWVudChFbGVtZW50KiBwYXJlbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQog
ICAgIDogRWxlbWVudChwc2V1ZG9FbGVtZW50VGFnTmFtZSgpLCBwYXJlbnQtPmRvY3VtZW50KCks
IENyZWF0ZVBzZXVkb0VsZW1lbnQpCiAgICAgLCBtX3BzZXVkb0lkKHBzZXVkb0lkKQogeworICAg
IEFTU0VSVChwc2V1ZG9JZCAhPSBOT1BTRVVETyk7CiAgICAgQVNTRVJUKHBhcmVudC0+aW5Eb2N1
bWVudCgpKTsKICAgICBzZXRQYXJlbnRPckhvc3ROb2RlKHBhcmVudCk7CiAgICAgc2V0SGFzQ3Vz
dG9tQ2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggODk3MDg5ZTMx
ZDk4MDc0ZjBmYWIxOWIyMmE2M2Y1YTdjZjAzODYzZS4uNGI2NzQ3NTNlY2E1NzJlMGZiNDVkZjhl
NDk0Y2E1M2EyM2MzNTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMzI2LDYg
KzMyNiw4IEBAIHZvaWQgU2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5
UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqCiAKICAgICBDb250YWluZXJOb2RlOjpj
aGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdl
LCBjaGlsZENvdW50RGVsdGEpOwogICAgIG93bmVyKCktPmludmFsaWRhdGVEaXN0cmlidXRpb24o
KTsKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGQtPnNldE5lZWRzU2hhZG93VHJlZVdh
bGtlcigpOwogfQogCiBjb25zdCBWZWN0b3I8SW5zZXJ0aW9uUG9pbnQqPiYgU2hhZG93Um9vdDo6
aW5zZXJ0aW9uUG9pbnRMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCBlMTc4ZTVmNjVhYmZmOTFm
OWIwY2RkNDBlODUwYzdmZGY2MTU5MmVkLi5iNWJkYWJiMDlkN2JmN2MyYjNkOTYxYzBmNzljMjYx
NTE5MDA4ZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgog
I2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKICNpZiBF
TkFCTEUoU1ZHKQogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCmluZGV4IGQ3MTAyMWJiODFkMDM4Mjdh
YmI1ZGFkZGE4NzVhOWM4OGQ4NjlkNGMuLjljYjQ2ZjJhODM4Mzc4OGFmMDI4MTJkYjE4YmQzZDE1
YTY3MDRlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKIAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTWVudUxpc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAKaW5kZXggMzk4ODhkOGQ2MWRlNTcyMjUwYjgyMDNmYTBhYjgyOTk3YzI0YmI1OS4uZjUx
MDk2ODQwN2ViYjk5OTRlZDk4OGNhZjVmMWJlMDdjNTZmZjBmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudFNo
YWRvdy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJIVE1MRGF0YUxp
c3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCBlYTVmNDA3N2MxYWRlNDc0NGE4YzI3MzFh
OWFiMGRlODI0NDZhMmVhLi4xMzY3NTViZTdhNzZmYzJjOTdiNjE5N2Q0MDIxZWIwMWM2Yjk3YmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTIz
LDEyICsyMywxMyBAQAogCiAjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCiAjaW5jbHVkZSAi
QXR0cmlidXRlLmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiTm9kZVJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlByb2dyZXNzU2hhZG93RWxlbWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCiAjaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVT
ZXQuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179198</attachid>
            <date>2012-12-12 22:37:15 -0800</date>
            <delta_ts>2012-12-12 22:41:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104332-20121213153435.patch</filename>
            <type>text/plain</type>
            <size>45987</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5NjEyZDNkOWU4ZTdl
MmEwOTRmMTc3OWJjNDZjYWQxMWExMjYzMS4uODBlMzY2NDAxZDYxYmQ3YzQ3ZmQwNDE3YzBhNzUw
NTNjMDE4YTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwxMSArMSwxMjcgQEAKLTIwMTItMTItMTIgIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorMjAxMi0xMi0xMiAgSGFqaW1l
IE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgTm9kZVJlbmRlcmluZ0Nv
bnRleHQgaXMgc2xvdyBkdWUgdG8gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlUmVuZGVyaW5nQ29udGV4
dCBoYXMgc29tZSBzbG93bmVzcyBkdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YKKyAgICAgICAgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHRoYXQgTlJDIHJlbGllcyBvbi4gVGhpcyBjaGFuZ2UKKyAg
ICAgICAgY3JlYXRlcyBzb21lIGZhc3QgcGF0aHMgdG8gYWRkcmVzcyBzdWNoIHNsb3duZXNzLgor
CisgICAgICAgID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCBtb2R1bGU6CisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgaW50cm9kdWNlcyBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIG5hbWVzcGFjZSwgYSBz
aXN0ZXIKKyAgICAgICAgb2YgTm9kZVRyYXZlcnNhbC4gTlJUIGNvbnNpc3RzIG9mIGEgc2V0IG9m
IHRyZWUgdHJhdmVyc2FsCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGlzIHJlc3BvbnNpYmxlIGZv
ciB0cmF2ZXJzYWwgaW4gTlJDLiAgQmVmb3JlIHRoaXMKKyAgICAgICAgY2hhZ25lLCBOUkMgZGly
ZWN0bHkgdXNlZCBDU1RXLiBUaGlzIE5SVCBtb2R1bGUgaGlkZXMgYW5kIG5hcnJvd3MKKyAgICAg
ICAgdGhlIHVzYWdlIG9mIENTVFcuCisKKyAgICAgICAgLSBUcmF2ZXJzYWxzIHByb3ZpZGVkIGJ5
IE5SVCBoYXZlIGZhc3QgcGF0aHMuIEluIG1hbnkgY2FzZSwgc3VjaCB0cmF2ZXJzYWxzCisgICAg
ICAgICAgZG9lc24ndCBuZWVkIHRvIHVzZSBDU1RXIGFuZCBqdXN0IGdvZXMgbmVpZ2hib3Jpbmcg
bm9kZXMgaW4gYSBwbGFpbiBET00gd2F5LgorICAgICAgICAtIEl0IGFsc28gaGFuZGxlcyBOUkMg
c3BlY2lmaWMgdHJhdmVyc2FsIGNvbmNlcm5zIGxpa2UgcHNldWRvIGVsZW1lbnRzLgorICAgICAg
ICAgIENTVFc6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBhbmQgQ1NUVzo6cHNldWRvQXdhcmVQ
cmV2aW91c1NpYmxpbmcoKSBhcmUKKyAgICAgICAgICBtZXJnZWQgaW50byB0aGlzIG1vZHVsZS4K
KyAgICAgICAgLSBDU1RXOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIGlzIG1vdmVkIGFuZCByZW5h
bWVkIHRvCisgICAgICAgICAgTlJUOjpQYXJlbnREZXRhaWxzIHdpdGggc21hbGwgbW9kaWZpY2F0
aW9uLiBUaGlzIGlzIGEgcHVyZQorICAgICAgICAgIHJlZmFjdG9yaW5nOiBBcyB0aGUgbmFtZSBp
bXBsaWVzLCBUaGlzIGNsYXNzIGlzIHVzZWQgb25seSBieSBOUkMKKyAgICAgICAgICBhbmQgdXNl
ZCBkdXJpbmcgYSB0cmF2ZXJzYWwgdGhlcmUuCisKKyAgICAgICAgTm9kZVJlbmRlcmluZ1RyYXZl
cnNhbCBpcyBhbiBpc29sYXRpb24gbGF5ZXIgYmV0d2VlbiBnZW5lcmljIERPTSBhbmQgQ1NUVy4g
VGhpcyBoaWRlcyBDU1RXCisgICAgICAgIGJlaGluZCB0aGUgd2FsbCBhbmQgd2lsbCBoZWxwIGZ1
cnRoZXIgcmVkdWN0aW9uIG9mIGl0cyB1c2FnZS4KKworICAgICAgICA9IE5vZGU6Ok5lZWRzU2hh
ZG93VHJlZVdhbGtlckZsYWcgZmxhZzoKKworICAgICAgICBOUlQgZmFzdCBwYXRoIGlzIGVuYWJs
ZWQgYnkgbmV3bHkgaW50cm9kdWNlZCBOZWVkc1NoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAgbm9k
ZSBmbGFnLiBFYWNoIERPTSBub2RlIGlzIG5vdyBtYXJrZCBhcyBOZWVkc1NoYWRvd1RyZWVXYWxr
ZXIgaWYKKyAgICAgICAgaXQgcmVxdWlyZXMgbm9uLXRyaXZpYWwgdHJhdmVyc2FsIGluIE5SVCB3
aGljaCB1c2VzIENTVFcuIFRoaXMKKyAgICAgICAgbWVhbnMgdGhhdCBlYWNoIG5vZGUgY2FuIGdv
IGZhc3QgcGF0aCB1bmxlc3MgaXQgaXMgbWFya2VkIHdpdGggdGhpcyBmbGFnLgorCisgICAgICAg
IEEgbm9kZSBpcyBtYXJrZWQgYXMgaXQgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyIGlmOgorCisgICAg
ICAgIC0gVGhlIG5vZGUgaXMgYSBzaGFkb3cgYm91bmRhcnkgbGlrZSBJbnNlcnRpb25Qb2ludCBv
ciBTaGFkb3dSb290LAorICAgICAgICAtIFRoZSBub2RlIGhhcyBwc2V1ZG8gZWxlbWVudHMgbGlr
ZSBnZW5lcmF0ZWQgY29udGVudCwKKyAgICAgICAgLSBUaGUgbm9kZSBpcyBhIHBzZXVkbyBlbGVt
ZW50IG9yCisKKyAgICAgICAgVGhpcyBjcml0ZXJpYSBjcml0ZXJpYSBpcyBkZWZpbmVkIGluIE5v
ZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKS4gVGhlIG5vZGUgYWN0dWFsbHkgbmVlZHMK
KyAgICAgICAgdGhlIHdhbGtlciBpZiB0aGUgbm9kZSBvciBpdHMgcGFyZW50IGlzIG1hcmtlZCB3
aXRoIHRoaXMgZmxhZy4KIAotICAgICAgICBUcnkgdG8gZml4IHRoZSBHVEsrIGRlYnVnIGJ1bGlk
CisgICAgICAgIFRoZSBvcmlnaW5hbCBpZGVhIG9mIHRoaXMgY2hhbmdlIHdhcyBkZW1vbnN0cmF0
ZWQgYnkgQW50dGkgS29pdmlzdG8gb24gYnVnIDEwMzIwOCBhbmQgYnVnIDEwNDUwNy4KKyAgICAg
ICAgVGhpcyBjaGFnbmUgaGFzIDMtNCUgc3BlZWR1cCBvbiBEcm9tYWVvL2RvbS1tb2RpZnkvaW5u
ZXJIVE1MIG9uIEFwcGxlIE1hYy4gKE9PUFM6IE1lYXN1cmUgYWdhaW4uKQogCi0gICAgICAgIExv
Z2dpbmcuaCBpcyBubyBsb25nZXIgaW5jbHVkZWQgaW4gaGVhZGVycywgc28gd2UgbmVlZCB0byBp
bmNsdWRlIGl0IG1hbnVhbGx5IGluCi0gICAgICAgIGZpbGVzIHRoYXQgcmVxdWlyZSBsb2dnaW5n
IG1hY3Jvcy4KKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LgogCi0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHA6IEluY2x1ZGUgTG9nZ2luZy5oLgorICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuY3BwOgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAg
ICAgKENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcik6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtlcik6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZVBz
ZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUHNldWRvRWxlbWVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cHNldWRvRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpzZXRQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmJlZm9yZVBzZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6YWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudFJh
cmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6Omhhc1BzZXVkb0Vs
ZW1lbnRzKToKKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXJTbG93KToK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJbnNlcnRp
b25Qb2ludE5vZGUpOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpp
c0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldE5lZWRzU2hhZG93
VHJlZVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXNldE5lZWRzU2hhZG93VHJl
ZVdhbGtlcik6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRl
UmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAg
ICAoTm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSk6CisgICAgICAgICogZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERl
dGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpwYXJlbnRTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWw6Om5leHRTaWJsaW5nU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmdTbG93KToKKyAgICAgICAgKiBkb20v
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCk6CisgICAgICAgIChQYXJlbnREZXRhaWxzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6
OlBhcmVudERldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6UGFyZW50RGV0YWlsczo6aW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6cmVzZXRTdHlsZUluaGVyaXRhbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFp
bHM6Om91dE9mQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6UGFyZW50RGV0YWlsczo6Y2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRTaWJsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3VzU2li
bGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHNldWRvRWxlbWVudDo6UHNldWRvRWxlbWVudCk6CisgICAgICAgICogZG9tL1RleHQuY3Bw
OgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgogCiAyMDEy
LTEyLTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBlODlmZjJlNzNkOTZkYWVhMGEzOTU0OTAyYjAzMTg0MmEwMzE1
Mzg0Li5lMTdkYzAwMzIzMWFiYTBkYWRhNjJlNGRmNTNlNjViZTM2MWExM2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTE5NSw2ICsxMTk1LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IGRvbS9Ob2RlSXRlcmF0b3IuY3BwCiAgICAgZG9tL05vZGVSYXJlRGF0YS5jcHAKICAgICBkb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwu
Y3BwCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuY3BwCiAgICAgZG9tL05vdGF0aW9uLmNwcAogICAg
IGRvbS9PdmVyZmxvd0V2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
N2JiZDYzNzQ3ZTFhMDM3OTljOTk2ZDNiNTBiNzI4M2E0ODM3YWY0Mi4uZDc0ODIzOGUzOWI4NDY2
NDM5NmQwZmY0MDQ1YTllZmE0ZTliZTUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0yODgwLDYgKzI4ODAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyU3R5bGUuaCBcCiAgICAgU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwuY3Bw
IFwKICAgICBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVRyYXZlcnNhbC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmlu
ZGV4IDUxYTE0ZjM4Yjg1YWQxMWMzYWE3YzAzYzdhYjc0NDBiNmM0YWI2NmEuLmFlMWUwMTQ4OWM4
YzJmYTZmOWQ1ODJkMDcwYmI1YWRlMjhiYmE4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNDIwLDYgKzQy
MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuY3BwIFwKICAgICBkb20v
Tm9kZVJhcmVEYXRhLmNwcCBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBcCisg
ICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIFwKICAgICBkb20vTm9kZVRyYXZlcnNh
bC5jcHAgXAogICAgIGRvbS9Ob3RhdGlvbi5jcHAgXAogICAgIGRvbS9TdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuY3BwIFwKQEAgLTE2MDQsNiArMTYwNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9O
b2RlSXRlcmF0b3IuaCBcCiAgICAgZG9tL05vZGVSYXJlRGF0YS5oIFwKICAgICBkb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuaCBcCisgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBcCiAg
ICAgZG9tL05vZGVUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAogICAgIGRvbS9T
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjkwZDE4ODE2NGI0
NTljMzlkNGExM2UxYjNmMzc2MmU5NTg3MTBlMC4uMDA3M2ZmMjNjYWE5NDUxOWI1ZjAwNjNjYmM3
M2MwNDVjZWY5ZDZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjg0NSw2ICsyODQ1LDggQEAKICAg
ICAgICAgICAgICdkb20vTm9kZVJhcmVEYXRhLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5oJywKKyAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAnLAorICAg
ICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgnLAogICAgICAgICAgICAgJ2Rv
bS9Ob2RlUmVuZGVyU3R5bGUuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVUcmF2ZXJzYWwuY3Bw
JywKICAgICAgICAgICAgICdkb20vTm9kZVRyYXZlcnNhbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MWI1MjE5Mzk1YmNi
NzA3MDU4Y2RkZWYwMDgzNTQ4YjkzNjc4MGIyLi43ODhiYzZhZjdlZTUyNWI5NTY0YzEzNDdkMmNl
YTAwNTcyOTE4M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zODg4LDYgKzM4ODgsOCBAQAogCQlBNzQwQjVBNTE0QzkzNUFC
MDBBNzdGQTQgLyogSlNJbnRlcm5hbFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0RUE3OTE0QzkzNDg0MDBDOEY1QkYgLyogSlNJbnRl
cm5hbFNldHRpbmdzLmggKi87IH07CiAJCUE3NDBCNUE3MTRDOTM1QUYwMEE3N0ZBNCAvKiBKU0lu
dGVybmFsU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdCNEVBNzgxNEM5MzQ4NDAwQzhGNUJGIC8qIEpTSW50ZXJuYWxTZXR0aW5ncy5j
cHAgKi87IH07CiAJCUE3NEJCNzZCMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3NEJCNzZBMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzRGM0VG
MzE2NzhCMjRBMDBCMDVBNkUgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIxMUYyMzE2NzhBNTQyMDA5
NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgKi87IH07CisJCUE3NEYzRUY1MTY3
OEIyNEYwMEIwNUE2RSAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIxMUYyNDE2NzhBNTQyMDA5NTc0NDQg
LyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oICovOyB9OwogCQlBNzVFNDk3NjEwNzUyQUNCMDBD
OUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTc1RTQ5NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLzsg
fTsKIAkJQTc1RThCODgwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODAwRTFERTJENjAwN0Yy
NDgxIC8qIEZFQmxlbmQuY3BwICovOyB9OwpAQCAtMTEyMTEsNiArMTEyMTMsOCBAQAogCQlBNzE4
NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MUE3MEM5MTFBRkIwMjAwMDk4OUQ2RCAv
KiBIVE1MTWV0ZXJFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MTWV0ZXJF
bGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyMTFGMjMxNjc4QTU0
MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MjExRjI0MTY3OEE1NDIwMDk1NzQ0NCAvKiBOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyM0Y3
N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtRXhwb3J0TWFjcm9zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3Mjc2M0JFMTY2ODlCRkIwMDJGQ0FDQiAvKiBVc2VyQWN0aW9u
RWxlbWVudFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWN0aW9u
RWxlbWVudFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJFQTNCQTE1ODVD
RjU1MDA0RkFBMjYgLyogUmVmQ291bnRlZFN1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlZFN1cHBsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIyMTAwLDYgKzIyMTA0LDggQEAKIAkJCQk2MzE4OUFFMjBFODNBMzMzMDAw
MTJFNDEgLyogTm9kZVJhcmVEYXRhLmggKi8sCiAJCQkJQTdGNUQ5NEQxMzg0RjAyRDAwQTI5QTg3
IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywKIAkJCQlBN0Y1RDk0RTEzODRGMDJEMDBB
MjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuaCAqLywKKwkJCQlBNzIxMUYyMzE2NzhBNTQy
MDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgKi8sCisJCQkJQTcyMTFGMjQx
Njc4QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCAqLywKIAkJCQk2M0Q3
QjMyQzBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggKi8sCiAJCQkJRTQzMTA1
QjcxNjc1MEYwQzAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuY3BwICovLAogCQkJCUU0MzEwNUJB
MTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmggKi8sCkBAIC0yNDgwNSw2ICsyNDgx
MSw3IEBACiAJCQkJQTgxODcyMUIwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2MzE4OUFFMzBFODNBMzMzMDAwMTJFNDEgLyogTm9kZVJhcmVEYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0Y1RDk1MDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRl
cmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NEYzRUY1MTY3OEIyNEYwMEIwNUE2
RSAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk2M0Q3QjMy
RDBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzgyQUFCNDBEOEMzODYxMDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThFQTdFQkUwQTE5NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI4MTI1LDYgKzI4MTMyLDcgQEAKIAkJCQk4NTRGRTczMjBBMjI5N0JFMDA1OEQ3
QUQgLyogTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTRGRTcz
NDBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RjVEOTRGMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBNzRGM0VGMzE2NzhCMjRBMDBCMDVBNkUgLyogTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0VCRjBBMTk0NUQwMDBBOEVG
NUYgLyogTm90YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQzcxMDE3QTFCMTAw
M0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzkwQ0E1NTBG
RkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRl
eCBmMDBmMmVmYjQ5YTFhNGUzNzBjM2FmZDk5MThlYWMwYjE3ZDliNjlhLi4xZDAzYzU0N2UwYjQ5
ODdlMjY3MjJiOTM5OWQ2ZjViMGQ1ZmQyYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAg
LTcwLDI1ICs3MSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuQmVEaXN0cmlidXRlZChj
b25zdCBOb2RlKiBub2RlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIHZvaWQgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzOjpkaWRUcmF2ZXJz
ZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKLXsKLSAgICBp
ZiAoIW1faW5zZXJ0aW9uUG9pbnQpIHsKLSAgICAgICAgbV9pbnNlcnRpb25Qb2ludCA9IGluc2Vy
dGlvblBvaW50OwotICAgICAgICBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSAgPSBtX3Jlc2V0U3R5
bGVJbmhlcml0YW5jZSB8fCBpbnNlcnRpb25Qb2ludC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7
Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVu
dFRyYXZlcnNhbERldGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290
KiByb290KQotewotICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHlsZUlu
aGVyaXRhbmNlIHx8IHJvb3QtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOwotfQotCi1pbmxpbmUg
dm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6OmRp
ZEZpbmROb2RlKENvbnRhaW5lck5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFtX291dE9mQ29tcG9z
aXRpb24pCi0gICAgICAgIG1fbm9kZSA9IG5vZGU7Ci19Ci0KIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZyb21GaXJzdENoaWxkKGNvbnN0IE5vZGUq
IG5vZGUsIFBvbGljeSBwb2xpY3kpCiB7CiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdh
bGtlcihub2RlLCBwb2xpY3kpOwpAQCAtOTYsMTQgKzc4LDYgQEAgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZnJvbUZpcnN0Q2hpbGQoY29uc3QgTm9k
ZSogbm8KICAgICByZXR1cm4gd2Fsa2VyOwogfQogCi12b2lkIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlcjo6ZmluZFBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxz
KiBkZXRhaWxzKQotewotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSwg
Q3Jvc3NVcHBlckJvdW5kYXJ5LCBDYW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7Ci0gICAgQ29u
dGFpbmVyTm9kZSogZm91bmQgPSB0b0NvbnRhaW5lck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFyZW50
KHdhbGtlci5nZXQoKSwgZGV0YWlscykpOwotICAgIGlmIChmb3VuZCkKLSAgICAgICAgZGV0YWls
cy0+ZGlkRmluZE5vZGUoZm91bmQpOwotfQotCiB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6Zmlyc3RDaGlsZCgpCiB7CiAgICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7CkBAIC0xODMsNDYg
KzE1Nyw2IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmco
KQogICAgIGFzc2VydFBvc3Rjb25kaXRpb24oKTsKIH0KIAotdm9pZCBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKQotewotICAgIGFzc2VydFByZWNvbmRp
dGlvbigpOwotCi0gICAgY29uc3QgTm9kZSogbm9kZSA9IG1fbm9kZTsKLQotICAgIGlmIChub2Rl
LT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbV9ub2RlID0gdHJhdmVyc2VGaXJz
dENoaWxkKHRyYXZlcnNlUGFyZW50KG5vZGUpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbm9kZSA9
IHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJhdmVyc2FsRGly
ZWN0aW9uRm9yd2FyZCk7Ci0KLSAgICBpZiAoIW1fbm9kZSAmJiAhbm9kZS0+aXNBZnRlclBzZXVk
b0VsZW1lbnQoKSkgewotICAgICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBhcmVudChub2Rl
KTsKLSAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAg
ICAgICAgIG1fbm9kZSA9IHRvRWxlbWVudChwYXJlbnQpLT5hZnRlclBzZXVkb0VsZW1lbnQoKTsK
LSAgICB9Ci0KLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KLXZvaWQgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpCi17Ci0gICAgYXNz
ZXJ0UHJlY29uZGl0aW9uKCk7Ci0KLSAgICBjb25zdCBOb2RlKiBub2RlID0gbV9ub2RlOwotCi0g
ICAgaWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG1fbm9kZSA9IHRy
YXZlcnNlTGFzdENoaWxkKHRyYXZlcnNlUGFyZW50KG5vZGUpKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fbm9kZSA9IHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJh
dmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOwotCi0gICAgaWYgKCFtX25vZGUgJiYgIW5vZGUtPmlz
QmVmb3JlUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIE5vZGUqIHBhcmVudCA9IHRyYXZlcnNl
UGFyZW50KG5vZGUpOwotICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9k
ZSgpKQotICAgICAgICAgICAgbV9ub2RlID0gdG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBzZXVk
b0VsZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KIE5v
ZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VEaXN0cmlidXRlZE5vZGVzKGNv
bnN0IE5vZGUqIG5vZGUsIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwgVHJh
dmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBmb3IgKGNvbnN0IE5vZGUqIG5leHQg
PSBub2RlOyBuZXh0OyBuZXh0ID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3
YXJkID8gaW5zZXJ0aW9uUG9pbnQtPm5leHRUbyhuZXh0KSA6IGluc2VydGlvblBvaW50LT5wcmV2
aW91c1RvKG5leHQpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci5oCmluZGV4IDRiNmZmOTU2YTQ1MTliOGQ2MDI0ODMxZjI3NTg4YTY0YzRhYTlkMDIu
LmI4MDlhMjZhYzQ5OTJhODU1YWU0ZWIyOTQwM2Y4MTM5MjdiNTNiMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNkZWZpbmUgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyX2gKIAogI2luY2x1ZGUgIkluc2VydGlv
blBvaW50LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiArNDAsOCBAQCBj
bGFzcyBTaGFkb3dSb290OwogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgyNzAyCiBjbGFzcyBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgewogcHVibGljOgorICAg
IHR5cGVkZWYgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlscyBQYXJlbnRUcmF2
ZXJzYWxEZXRhaWxzOworCiAgICAgZW51bSBQb2xpY3kgewogICAgICAgICBDcm9zc1VwcGVyQm91
bmRhcnksCiAgICAgICAgIERvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5LApAQCAtNDksMzggKzUyLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgQ2Fubm90U3RhcnRGcm9tU2hhZG93Qm91bmRhcnkKICAgICB9
OwogCi0gICAgY2xhc3MgUGFyZW50VHJhdmVyc2FsRGV0YWlscyB7Ci0gICAgcHVibGljOgotICAg
ICAgICBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKCkKLSAgICAgICAgICAgIDogbV9ub2RlKDApCi0g
ICAgICAgICAgICAsIG1faW5zZXJ0aW9uUG9pbnQoMCkKLSAgICAgICAgICAgICwgbV9yZXNldFN0
eWxlSW5oZXJpdGFuY2UoZmFsc2UpCi0gICAgICAgICAgICAsIG1fb3V0T2ZDb21wb3NpdGlvbihm
YWxzZSkKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgQ29udGFpbmVyTm9kZSogbm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQoKSBjb25zdCB7IHJldHVybiBtX2luc2VydGlvblBvaW50OyB9Ci0gICAgICAgIGJvb2wgcmVz
ZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNldFN0eWxlSW5oZXJpdGFu
Y2U7IH0KLSAgICAgICAgYm9vbCBvdXRPZkNvbXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9v
dXRPZkNvbXBvc2l0aW9uOyB9Ci0KLSAgICAgICAgdm9pZCBkaWRGaW5kTm9kZShDb250YWluZXJO
b2RlKik7Ci0gICAgICAgIHZvaWQgZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Q
b2ludCopOwotICAgICAgICB2b2lkIGRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dS
b290Kik7Ci0gICAgICAgIHZvaWQgY2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKCkgeyBtX291dE9m
Q29tcG9zaXRpb24gPSB0cnVlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBDb250YWluZXJO
b2RlKiBtX25vZGU7Ci0gICAgICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50Owot
ICAgICAgICBib29sIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOwotICAgICAgICBib29sIG1fb3V0
T2ZDb21wb3NpdGlvbjsKLSAgICB9OwotCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKGNv
bnN0IE5vZGUqLCBQb2xpY3kgPSBDcm9zc1VwcGVyQm91bmRhcnksIFN0YXJ0UG9saWN5ID0gQ2Fu
bm90U3RhcnRGcm9tU2hhZG93Qm91bmRhcnkpOwogCiAgICAgLy8gRm9yIGEgY29tbW9uIHVzZSBj
YXNlIHN1Y2ggYXM6CiAgICAgLy8gZm9yIChDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2Vy
ID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGlsZChub2RlKTsgd2Fsa2Vy
LmdldCgpOyB3YWxrZXIubmV4dFNpYmxpbmcoKSkKICAgICBzdGF0aWMgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIGZyb21GaXJzdENoaWxkKGNvbnN0IE5vZGUqLCBQb2xpY3kgPSBDcm9zc1VwcGVy
Qm91bmRhcnkpOwotICAgIHN0YXRpYyB2b2lkIGZpbmRQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVu
dFRyYXZlcnNhbERldGFpbHMqKTsKIAogICAgIE5vZGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8Tm9kZSo+KG1fbm9kZSk7IH0KIApAQCAtOTAsMTQgKzY2LDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIG5leHRTaWJsaW5nKCk7CiAgICAgdm9pZCBwcmV2aW91c1NpYmxpbmcoKTsKIAot
ICAgIHZvaWQgcHNldWRvQXdhcmVOZXh0U2libGluZygpOwotICAgIHZvaWQgcHNldWRvQXdhcmVQ
cmV2aW91c1NpYmxpbmcoKTsKLQogICAgIHZvaWQgcGFyZW50KCk7CiAKICAgICB2b2lkIG5leHQo
KTsKICAgICB2b2lkIHByZXZpb3VzKCk7CiAKKyAgICBOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25z
dCBOb2RlKiwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogPSAwKSBjb25zdDsKKwogcHJpdmF0ZToK
ICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSosIFBhcmVudFRyYXZlcnNh
bERldGFpbHMqKTsKIApAQCAtMTM0LDcgKzEwOSw2IEBAIHByaXZhdGU6CiAgICAgTm9kZSogdHJh
dmVyc2VGaXJzdENoaWxkKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZUxh
c3RDaGlsZChjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VDaGlsZChjb25z
dCBOb2RlKiwgVHJhdmVyc2FsRGlyZWN0aW9uKSBjb25zdDsKLSAgICBOb2RlKiB0cmF2ZXJzZVBh
cmVudChjb25zdCBOb2RlKiwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogPSAwKSBjb25zdDsKIAog
ICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKICAgICBz
dGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggM2VmNWM3MjEwNTk5ZWJiYjQyYTVjMjQ3MmQ0YjQ1
ZjBhZDU3OTFkMC4uZWFmOGQzZmE2Y2I0NGIyOWI3Nzk0NWZiODljZmJiMWNkYjE4ZTRlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0yNjUsNiArMjY1LDE0IEBAIGlubGluZSBO
b2RlKiBOb2RlOjpoaWdoZXN0QW5jZXN0b3IoKSBjb25zdAogICAgIHJldHVybiBoaWdoZXN0Owog
fQogCitpbmxpbmUgYm9vbCBOb2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSBjb25zdAorewor
ICAgIGlmIChnZXRGbGFnKE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRPckhvc3ROb2RlKCk7
CisgICAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQtPmdldEZsYWcoTmVlZHNTaGFkb3dUcmVlV2Fs
a2VyRmxhZyk7Cit9CisKIC8vIFRoaXMgY29uc3RhbnQgY29udHJvbHMgaG93IG11Y2ggYnVmZmVy
IGlzIGluaXRpYWxseSBhbGxvY2F0ZWQKIC8vIGZvciBhIE5vZGUgVmVjdG9yIHRoYXQgaXMgdXNl
ZCB0byBzdG9yZSBjaGlsZCBOb2RlcyBvZiBhIGdpdmVuIE5vZGUuCiAvLyBGSVhNRTogT3B0aW1p
emUgdGhlIHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggOTI5NmExOWEx
Y2I5ZTRhNDgwNmYzNDM5Yjc4MmMyNTc0YjFjYTU2OS4uNTlmNTliZWJjMTc5MDg5MDUzMTVhNDky
ZjhmMGE5NjIxOTc2MGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbElu
T25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC0xMDUs
NiArMTA1LDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCIKICNpbmNsdWRl
ICJOb2RlSXRlcmF0b3IuY3BwIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCIK
KyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCIKICNpbmNsdWRlICJOb3RhdGlv
bi5jcHAiCiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAiUGFnZVRyYW5z
aXRpb25FdmVudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNDQ5OGQzMjlhNWI5OWU4
OGZjOWQxNDdiOTUxN2QzYmIwMjkwMGJhZi4uOTBiOWJlNjczYzEzNDU0NDRlOTljYWZhMDkwNzNh
YThkOTViMDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjA5OCw3ICsyMDk4LDcgQEAg
dm9pZCBFbGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKIAogdm9pZCBFbGVtZW50Ojp1cGRh
dGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkIHBzZXVkb0lkLCBTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7
Ci0gICAgUHNldWRvRWxlbWVudCogZXhpc3RpbmcgPSBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJh
cmVEYXRhKCktPnBzZXVkb0VsZW1lbnQocHNldWRvSWQpIDogMDsKKyAgICBQc2V1ZG9FbGVtZW50
KiBleGlzdGluZyA9IHBzZXVkb0VsZW1lbnQocHNldWRvSWQpOwogICAgIGlmIChleGlzdGluZykg
ewogICAgICAgICAvLyBQc2V1ZG9FbGVtZW50IHN0eWxlcyBoYW5nIG9mZiB0aGVpciBwYXJlbnQg
ZWxlbWVudCdzIHN0eWxlIHNvIGlmIHdlIG5lZWRlZAogICAgICAgICAvLyBhIHN0eWxlIHJlY2Fs
YyB3ZSBzaG91bGQgRm9yY2Ugb25lIG9uIHRoZSBwc2V1ZG8uCkBAIC0yMTA5LDEwICsyMTA5LDEw
IEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlUHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9JZCwg
U3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICAvLyB3aGVuIFJlbmRlck9iamVjdDo6aXNDaGls
ZEFsbG93ZWQgb24gb3VyIHBhcmVudCByZXR1cm5zIGZhbHNlIGZvciB0aGUKICAgICAgICAgLy8g
UHNldWRvRWxlbWVudCdzIHJlbmRlcmVyIGZvciBlYWNoIHN0eWxlIHJlY2FsYy4KICAgICAgICAg
aWYgKCFyZW5kZXJlcigpIHx8ICFwc2V1ZG9FbGVtZW50UmVuZGVyZXJJc05lZWRlZChyZW5kZXJl
cigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpKQotICAgICAgICAgICAgZWxlbWVu
dFJhcmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIDApOworICAgICAgICAgICAg
c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgMCk7CiAgICAgfSBlbHNlIGlmIChSZWZQdHI8UHNl
dWRvRWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZVBzZXVkb0VsZW1lbnRJZk5lZWRlZChwc2V1ZG9J
ZCkpIHsKICAgICAgICAgZWxlbWVudC0+YXR0YWNoKCk7Ci0gICAgICAgIGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpLT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVtZW50LnJlbGVhc2UoKSk7
CisgICAgICAgIHNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1lbnQucmVsZWFzZSgpKTsK
ICAgICB9CiB9CiAKQEAgLTIxMzMsMTYgKzIxMzMsMjMgQEAgUGFzc1JlZlB0cjxQc2V1ZG9FbGVt
ZW50PiBFbGVtZW50OjpjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQoUHNldWRvSWQgcHNldWRv
SWQKICAgICByZXR1cm4gUHNldWRvRWxlbWVudDo6Y3JlYXRlKHRoaXMsIHBzZXVkb0lkKTsKIH0K
IAotUHNldWRvRWxlbWVudCogRWxlbWVudDo6YmVmb3JlUHNldWRvRWxlbWVudCgpIGNvbnN0Citi
b29sIEVsZW1lbnQ6Omhhc1BzZXVkb0VsZW1lbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFz
UmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KEJFRk9SRSkgOiAw
OworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5oYXNQc2V1
ZG9FbGVtZW50cygpOwogfQogCi1Qc2V1ZG9FbGVtZW50KiBFbGVtZW50OjphZnRlclBzZXVkb0Vs
ZW1lbnQoKSBjb25zdAorUHNldWRvRWxlbWVudCogRWxlbWVudDo6cHNldWRvRWxlbWVudChQc2V1
ZG9JZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1l
bnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KEFGVEVSKSA6IDA7CisgICAgcmV0dXJuIGhhc1Jh
cmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChwc2V1ZG9JZCkgOiAw
OwogfQogCit2b2lkIEVsZW1lbnQ6OnNldFBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQs
IFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBlbnN1cmVFbGVtZW50
UmFyZURhdGEoKS0+c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxlbWVudCk7CisgICAgcmVz
ZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKTsKK30KKworCiAvLyBFbGVtZW50VHJhdmVyc2FsIEFQ
SQogRWxlbWVudCogRWxlbWVudDo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKaW5kZXggODQzNTJjM2QyMTY0ZDc0YjUzZjI0ZjRiMzc3ZmEwYmU2M2RhZjczYy4u
NjZhYWQ2ZTlkMDgyYjkzN2RmZmE0NWFiZTlkMTNkMzE4MWIxOWZiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCkBAIC0zNjYsOCArMzY2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
UGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2luZ0NoaWxkcmVu
KCk7CiAKLSAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3Q7Ci0g
ICAgUHNldWRvRWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAgYm9vbCBo
YXNQc2V1ZG9FbGVtZW50cygpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1l
bnQoUHNldWRvSWQpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIGJlZm9yZVBzZXVkb0VsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9FbGVtZW50KEJFRk9SRSk7IH0KKyAgICBQc2V1ZG9F
bGVtZW50KiBhZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9FbGVtZW50
KEFGVEVSKTsgfQorICAgIGJvb2wgY2hpbGROZWVkc1NoYWRvd1dhbGtlcigpIGNvbnN0OworICAg
IHZvaWQgZGlkU2hhZG93VHJlZUF3YXJlQ2hpbGRyZW5DaGFuZ2UoKTsKIAogICAgIC8vIEVsZW1l
bnRUcmF2ZXJzYWwgQVBJCiAgICAgRWxlbWVudCogZmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdDsK
QEAgLTUwMCw2ICs1MDQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
UHNldWRvRWxlbWVudChQc2V1ZG9JZCwgU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAgICAgUGFz
c1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQoUHNldWRv
SWQpOworICAgIHZvaWQgc2V0UHNldWRvRWxlbWVudChQc2V1ZG9JZCwgUGFzc1JlZlB0cjxQc2V1
ZG9FbGVtZW50Pik7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBBdHRyIHRv
IGNhbGwgd2lsbE1vZGlmeUF0dHJpYnV0ZS9kaWRNb2RpZnlBdHRyaWJ1dGUuCiAgICAgZnJpZW5k
IGNsYXNzIEF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggNzkwNWNi
NTQ4ZTVmZmM0OWYyMDRhMzlkZWM1MDFjNDA5ZWQyZmExNS4uYzJkN2E5ZDcwNjc4Njc2YTdiZmI1
ZmVjZjUwN2QxMDM4NGY2MWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApA
QCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBzZXVkb0VsZW1lbnQoUHNl
dWRvSWQsIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4pOwogICAgIFBzZXVkb0VsZW1lbnQqIHBz
ZXVkb0VsZW1lbnQoUHNldWRvSWQpIGNvbnN0OworICAgIGJvb2wgaGFzUHNldWRvRWxlbWVudHMo
KSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRlZEJlZm9yZSB8fCBtX2dlbmVyYXRlZEFmdGVyOyB9
CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogICAgIHZvaWQgcmVzZXREeW5hbWlj
UmVzdHlsZU9ic2VydmF0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmlu
ZGV4IDNjZWE2NGU3NWQzYmU0MmNiOTk5ZTdmNjQxM2E2YzhmZjBiNDljZWEuLjRjNjVkZTQ4MjNh
Zjk5OTg5NTljZmY2ZjliMmQzMjYzMzY1MmE1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5jcHAKQEAgLTg3LDYgKzg3LDkgQEAgdm9pZCBFbGVtZW50U2hhZG93OjphZGRTaGFkb3dS
b290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2gKICAgICBp
bnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOwogICAgIENoaWxkTm9kZUluc2VydGlv
bk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290LmdldCgpKTsKIAorICAgIC8v
IEV4aXN0ZW5jZSBvZiBzaGFkb3cgcm9vdHMgcmVxdWlyZXMgdGhlIGhvc3QgYW5kIGl0cyBjaGls
ZHJlbiB0byBkbyB0cmF2ZXJzYWwgdXNpbmcgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLgorICAg
IHNoYWRvd0hvc3QtPnNldE5lZWRzU2hhZG93VHJlZVdhbGtlcigpOworCiAgICAgLy8gRklYTUUo
OTQ5MDUpOiBTaGFkb3dIb3N0IHNob3VsZCBiZSByZWF0dGFjaGVkIGR1cmluZyByZWNhbGNTdHls
ZS4KICAgICAvLyBTZXQgc29tZSBmbGFnIGhlcmUgYW5kIHJlY3JlYXRlIHNoYWRvdyBob3N0cycg
cmVuZGVyZXIgaW4KICAgICAvLyBFbGVtZW50OjpyZWNhbGNTdHlsZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCA3NjUzMDJhZTEzNWQwNWMyMmQ2NjQ0OWMyZGYwNDUwOThmMDNhOTY0Li40Y2IzY2UzNjBl
MjBjNTc5YTUzN2NhNmUwZTc2NDgzYmE0NTdjNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMjkw
LDYgKzEyOTAsMTAgQEAgRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpOwogfQogCitib29sIE5vZGU6Om5lZWRzU2hh
ZG93VHJlZVdhbGtlclNsb3coKSBjb25zdAoreworICAgIHJldHVybiAoaXNTaGFkb3dSb290KCkg
fHwgKGlzRWxlbWVudE5vZGUoKSAmJiAoaXNJbnNlcnRpb25Qb2ludCgpIHx8IGlzUHNldWRvRWxl
bWVudCgpIHx8IHRvRWxlbWVudCh0aGlzKS0+aGFzUHNldWRvRWxlbWVudHMoKSB8fCB0b0VsZW1l
bnQodGhpcyktPnNoYWRvdygpKSkpOworfQogCiBib29sIE5vZGU6OmlzQmxvY2tGbG93KCkgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCmluZGV4IDUwNTM5YmI5ZDBmMzNmNmY3MzYxZWQ4MzNjMGJjZmFmNDYy
YzZlNDMuLjgzZGYxZGU1NmZlOWVkMjhhNzhlZGU3M2RjMmVhZDk1Y2JmZTRlMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaApAQCAtMjQ3LDEwICsyNDcsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0Zy
YW1lT3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNQbHVnaW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgZG9jdW1lbnRGcmFnbWVudElzU2hhZG93Um9vdCgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAg
ICBib29sIGlzRG9jdW1lbnROb2RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0RvY3VtZW50RnJhZ21l
bnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzRG9jdW1lbnRGcmFnbWVudEZsYWcpOyB9CiAg
ICAgYm9vbCBpc1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBpc0RvY3VtZW50RnJhZ21lbnQo
KSAmJiBkb2N1bWVudEZyYWdtZW50SXNTaGFkb3dSb290KCk7IH0KLSAgICBib29sIGlzSW5zZXJ0
aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzSW5zZXJ0aW9uUG9pbnRGbGFnKTsg
fQorICAgIGJvb2wgaXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoTmVl
ZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZykgJiYgaXNJbnNlcnRpb25Qb2ludE5vZGUoKTsgfQorCisg
ICAgYm9vbCBuZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSBjb25zdDsKKyAgICBib29sIG5lZWRzU2hh
ZG93VHJlZVdhbGtlclNsb3coKSBjb25zdDsKKyAgICB2b2lkIHNldE5lZWRzU2hhZG93VHJlZVdh
bGtlcigpIHsgc2V0RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsgfQorICAgIHZvaWQg
cmVzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSB7IHNldEZsYWcobmVlZHNTaGFkb3dUcmVlV2Fs
a2VyU2xvdygpLCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsgfQorCiAgICAgYm9vbCBpbk5h
bWVkRmxvdygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSW5OYW1lZEZsb3dGbGFnKTsgfQogICAg
IGJvb2wgaGFzQ3VzdG9tQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNDdXN0
b21DYWxsYmFja3NGbGFnKTsgfQogCkBAIC03MDMsNyArNzExLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgSGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGRGbGFnID0gMSA8PCAyMiwKICAgICAgICAgSGFzRXZl
bnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMjMsCiAgICAgICAgIFY4Q29sbGVjdGFibGVEdXJpbmdN
aW5vckdDRmxhZyA9IDEgPDwgMjQsCi0gICAgICAgIElzSW5zZXJ0aW9uUG9pbnRGbGFnID0gMSA8
PCAyNSwKKyAgICAgICAgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyA9IDEgPDwgMjUsCiAKICAg
ICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnCiAg
ICAgfTsKQEAgLTcyMSwxNSArNzI5LDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3JlYXRlVGV4
dCA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc1RleHRGbGFnLAogICAgICAgICBDcmVhdGVDb250YWlu
ZXIgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb250YWluZXJGbGFnLCAKICAgICAgICAgQ3JlYXRl
RWxlbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRWxlbWVudEZsYWcsIAotICAgICAgICBDcmVh
dGVQc2V1ZG9FbGVtZW50ID0gIENyZWF0ZUVsZW1lbnQgfCBJbkRvY3VtZW50RmxhZywKLSAgICAg
ICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFnbWVu
dEZsYWcsCisgICAgICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3JlYXRlRWxlbWVudCB8IElu
RG9jdW1lbnRGbGFnIHwgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZywKKyAgICAgICAgQ3JlYXRl
U2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFnbWVudEZsYWcgfCBO
ZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnLAogICAgICAgICBDcmVhdGVEb2N1bWVudEZyYWdtZW50
ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZywKICAgICAgICAgQ3Jl
YXRlU3R5bGVkRWxlbWVudCA9IENyZWF0ZUVsZW1lbnQgfCBJc1N0eWxlZEVsZW1lbnRGbGFnLCAK
ICAgICAgICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNIVE1M
RmxhZywgCiAgICAgICAgIENyZWF0ZUZyYW1lT3duZXJFbGVtZW50ID0gQ3JlYXRlSFRNTEVsZW1l
bnQgfCBIYXNDdXN0b21DYWxsYmFja3NGbGFnLAogICAgICAgICBDcmVhdGVTVkdFbGVtZW50ID0g
Q3JlYXRlU3R5bGVkRWxlbWVudCB8IElzU1ZHRmxhZywKICAgICAgICAgQ3JlYXRlRG9jdW1lbnQg
PSBDcmVhdGVDb250YWluZXIgfCBJbkRvY3VtZW50RmxhZywKLSAgICAgICAgQ3JlYXRlSW5zZXJ0
aW9uUG9pbnQgPSBDcmVhdGVIVE1MRWxlbWVudCB8IElzSW5zZXJ0aW9uUG9pbnRGbGFnLAorICAg
ICAgICBDcmVhdGVJbnNlcnRpb25Qb2ludCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgTmVlZHNTaGFk
b3dUcmVlV2Fsa2VyRmxhZywKICAgICAgICAgQ3JlYXRlRWRpdGluZ1RleHQgPSBDcmVhdGVUZXh0
IHwgSGFzTmFtZU9ySXNFZGl0aW5nVGV4dEZsYWcsCiAgICAgfTsKICAgICBOb2RlKERvY3VtZW50
KiwgQ29uc3RydWN0aW9uVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCAxMzE4N2I1NmNhZWE4NjFjYTY2NWI3Y2FkMDkxOWVmOTNjYWZkMjdm
Li42NzMwNWNhMjBlNWY3ZjUzOTYzMTI4NzJkOWY0MDc4MTAxMWI0YmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogCi0j
aW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVy
Tm9kZS5oIgogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVsZW1l
bnRTaGFkb3cuaCIKQEAgLTU5LDExICs1OCwxMiBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICA6IG1fbm9kZShub2RlKQogICAgICwg
bV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKIHsKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6
OmZpbmRQYXJlbnQobV9ub2RlLCAmbV9wYXJlbnREZXRhaWxzKTsKKyAgICBtX3JlbmRlcmluZ1Bh
cmVudCA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudChub2RlLCAmbV9wYXJlbnREZXRh
aWxzKTsKIH0KIAogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5v
ZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICA6IG1fbm9kZShub2RlKQorICAgICwg
bV9yZW5kZXJpbmdQYXJlbnQoMCkKICAgICAsIG1fc3R5bGUoc3R5bGUpCiAgICAgLCBtX3BhcmVu
dEZsb3dSZW5kZXJlcigwKQogewpAQCAtODMsMTIgKzgzLDExIEBAIFJlbmRlck9iamVjdCogTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAKICAgICAvLyBBdm9pZCBh
biBPKE5eMikgcHJvYmxlbSB3aXRoIHRoaXMgZnVuY3Rpb24gYnkgbm90IGNoZWNraW5nIGZvcgog
ICAgIC8vIG5leHRSZW5kZXJlcigpIHdoZW4gdGhlIHBhcmVudCBlbGVtZW50IGhhc24ndCBhdHRh
Y2hlZCB5ZXQuCi0gICAgaWYgKG1fcGFyZW50RGV0YWlscy5ub2RlKCkgJiYgIW1fcGFyZW50RGV0
YWlscy5ub2RlKCktPmF0dGFjaGVkKCkpCisgICAgaWYgKG1fcmVuZGVyaW5nUGFyZW50ICYmICFt
X3JlbmRlcmluZ1BhcmVudC0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG1fbm9kZSk7Ci0gICAgZm9yICh3YWxrZXIu
cHNldWRvQXdhcmVOZXh0U2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wc2V1ZG9Bd2Fy
ZU5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB3
YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsKKyAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZyhtX25vZGUpOyBzaWJsaW5nOyBzaWJsaW5n
ID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNpYmxpbmcoc2libGluZykpIHsKKyAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICAvLyBSZW5kZXJlcnMgZm9yIGVsZW1lbnRzIGF0dGFjaGVkIHRvIGEgZmxvdyB0
aHJlYWQgc2hvdWxkIGJlIHNraXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBwYXJlbnRlZCBkaWZmZXJl
bnRseS4KICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkg
JiYgcmVuZGVyZXItPnN0eWxlKCkgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5mbG93VGhyZWFkKCku
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA5LDEwICsxMDgsOCBA
QCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKCkg
Y29uc3QKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSBPKE5eMikgYXZv
aWRhbmNlIGFzIG5leHRSZW5kZXJlciBkb2VzCiAgICAgLy8gaG93ZXZlciwgd2hlbiBJIHRyaWVk
IGFkZGluZyBpdCwgc2V2ZXJhbCB0ZXN0cyBmYWlsZWQuCi0KLSAgICBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIgd2Fsa2VyKG1fbm9kZSk7Ci0gICAgZm9yICh3YWxrZXIucHNldWRvQXdhcmVQcmV2
aW91c1NpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucHNldWRvQXdhcmVQcmV2aW91c1Np
YmxpbmcoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHdhbGtlci5n
ZXQoKS0+cmVuZGVyZXIoKSkgeworICAgIGZvciAoTm9kZSogc2libGluZyA9IE5vZGVSZW5kZXJp
bmdUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhtX25vZGUpOyBzaWJsaW5nOyBzaWJsaW5nID0g
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKHNpYmxpbmcpKSB7CisgICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkgewog
ICAgICAgICAgICAgLy8gUmVuZGVyZXJzIGZvciBlbGVtZW50cyBhdHRhY2hlZCB0byBhIGZsb3cg
dGhyZWFkIHNob3VsZCBiZSBza2lwcGVkIGJlY2F1c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlmZmVy
ZW50bHkuCiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgp
ICYmIHJlbmRlcmVyLT5zdHlsZSgpICYmICFyZW5kZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVhZCgp
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEzMCwyMSArMTI3LDIx
IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkg
Y29uc3QKICAgICBpZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBtX3Bh
cmVudEZsb3dSZW5kZXJlcjsKIAotICAgIHJldHVybiBtX3BhcmVudERldGFpbHMubm9kZSgpID8g
bV9wYXJlbnREZXRhaWxzLm5vZGUoKS0+cmVuZGVyZXIoKSA6IDA7CisgICAgcmV0dXJuIG1fcmVu
ZGVyaW5nUGFyZW50ID8gbV9yZW5kZXJpbmdQYXJlbnQtPnJlbmRlcmVyKCkgOiAwOwogfQogCiBi
b29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX25vZGUtPmRvY3VtZW50KCktPnNob3VsZENyZWF0ZVJlbmRlcmVycygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtX3BhcmVudERldGFpbHMubm9kZSgpKQor
ICAgIGlmICghbV9yZW5kZXJpbmdQYXJlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBS
ZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+cGFyZW50UmVuZGVyZXIoKTsKICAg
ICBpZiAoIXBhcmVudFJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFw
YXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxkcmVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIW1fcGFyZW50RGV0YWlscy5ub2RlKCktPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoKnRoaXMpKQorICAgIGlmICghbV9yZW5kZXJpbmdQYXJlbnQtPmNoaWxkU2hvdWxkQ3JlYXRl
UmVuZGVyZXIoKnRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDdkYTQ4
ZTI5YTQyN2Q5YWU3NGM2MzI0ZWM0MmE4YmUwMjQxZWJiNjMuLmMwNzk3NzZkYzgyMDgyZDRkNWRm
ZjE1OTUyMTk4NTU1NTZmYmQxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC0yNiw3ICsyNiw4IEBACiAjaWZuZGVmIE5vZGVSZW5kZXJpbmdDb250ZXh0
X2gKICNkZWZpbmUgTm9kZVJlbmRlcmluZ0NvbnRleHRfaAogCi0jaW5jbHVkZSAiQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgor
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNjksNyArNzAsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7CiAKICAgICBOb2RlKiBt
X25vZGU7Ci0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxEZXRh
aWxzIG1fcGFyZW50RGV0YWlsczsKKyAgICBDb250YWluZXJOb2RlKiBtX3JlbmRlcmluZ1BhcmVu
dDsKKyAgICBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzIG1fcGFyZW50RGV0
YWlsczsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CiAgICAgUmVuZGVyTmFtZWRG
bG93VGhyZWFkKiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKICAgICBBdG9taWNTdHJpbmcgbV9mbG93
VGhyZWFkOwpAQCAtODIsNyArODQsNyBAQCBpbmxpbmUgTm9kZSogTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6Om5vZGUoKSBjb25zdAogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcGFyZW50RGV0YWlscy5ub2RlKCk7CisgICAgcmV0dXJuIG1fcmVuZGVyaW5nUGFyZW50
OwogfQogCiBpbmxpbmUgYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cmVzZXRTdHlsZUluaGVy
aXRhbmNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVy
c2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYzlhZmFjMTY5NjIyNTY5MWJmYTc3NTkwNmMwMGQwYzNjODA5
NjhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdU
cmF2ZXJzYWwuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgorCisjaW5jbHVkZSAiQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIHsKKwordm9pZCBQ
YXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCkKK3sKKyAgICBpZiAoIW1faW5zZXJ0aW9uUG9pbnQpIHsKKyAgICAgICAg
bV9pbnNlcnRpb25Qb2ludCA9IGluc2VydGlvblBvaW50OworICAgICAgICBtX3Jlc2V0U3R5bGVJ
bmhlcml0YW5jZSAgPSBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB8fCBpbnNlcnRpb25Qb2ludC0+
cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7CisgICAgfQorfQorCit2b2lkIFBhcmVudERldGFpbHM6
OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiByb290KQoreworICAgIG1f
cmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlIHx8IHJvb3Qt
PnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOworfQorCitDb250YWluZXJOb2RlKiBwYXJlbnRTbG93
KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCit7CisgICAgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6
OkNyb3NzVXBwZXJCb3VuZGFyeSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDYW5TdGFydEZy
b21TaGFkb3dCb3VuZGFyeSk7CisgICAgQ29udGFpbmVyTm9kZSogZm91bmQgPSB0b0NvbnRhaW5l
ck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFyZW50KHdhbGtlci5nZXQoKSwgZGV0YWlscykpOworICAg
IHJldHVybiBkZXRhaWxzLT5vdXRPZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7Cit9CisKK05v
ZGUqIG5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQmVmb3JlUHNldWRv
RWxlbWVudCgpKSB7CisgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKKyAgICAgICAgd2Fsa2VyLmZp
cnN0Q2hpbGQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgd2Fsa2VyLm5leHRTaWJsaW5nKCk7CisK
KyAgICBpZiAod2Fsa2VyLmdldCgpIHx8IG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCisg
ICAgICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisKKyAgICBOb2RlKiBwYXJlbnQgPSB3YWxrZXIu
dHJhdmVyc2VQYXJlbnQobm9kZSk7CisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVu
dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpLT5hZnRlclBzZXVkb0Vs
ZW1lbnQoKTsKKworICAgIHJldHVybiAwOworfQorCitOb2RlKiBwcmV2aW91c1NpYmxpbmdTbG93
KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtl
cihub2RlKTsKKyAgICBpZiAobm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkgeworICAgICAg
ICB3YWxrZXIucGFyZW50KCk7CisgICAgICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgd2Fsa2VyLnByZXZpb3VzU2libGluZygpOworCisgICAgaWYgKHdhbGtlci5n
ZXQoKSB8fCBub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHdh
bGtlci5nZXQoKTsKKworICAgIE5vZGUqIHBhcmVudCA9IHdhbGtlci50cmF2ZXJzZVBhcmVudChu
b2RlKTsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAg
ICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKKworICAg
IHJldHVybiAwOworfQorCit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDA0M2RlMjdmMDkzNGNlZTU5
NWQxMjRjNTRhM2RhNGM4ODBiNzllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbF9oCisjZGVmaW5lIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWxf
aAorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEluc2VydGlvblBvaW50OworCituYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7CisK
K2NsYXNzIFBhcmVudERldGFpbHMgeworcHVibGljOgorICAgIFBhcmVudERldGFpbHMoKQorICAg
ICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoMCkKKyAgICAgICAgLCBtX3Jlc2V0U3R5bGVJbmhlcml0
YW5jZShmYWxzZSkKKyAgICAgICAgLCBtX291dE9mQ29tcG9zaXRpb24oZmFsc2UpCisgICAgeyB9
CisKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBt
X2luc2VydGlvblBvaW50OyB9CisgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25z
dCB7IHJldHVybiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsgfQorICAgIGJvb2wgb3V0T2ZDb21w
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZDb21wb3NpdGlvbjsgfQorCisgICAgdm9p
ZCBkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50Kik7CisgICAgdm9pZCBk
aWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCopOworICAgIHZvaWQgY2hpbGRX
YXNPdXRPZkNvbXBvc2l0aW9uKCkgeyBtX291dE9mQ29tcG9zaXRpb24gPSB0cnVlOyB9CisKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFyZW50RGV0YWlscyYgb3RoZXIpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9pbnNlcnRpb25Qb2ludCA9PSBvdGhlci5tX2luc2VydGlvblBvaW50Cisg
ICAgICAgICAgICAmJiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA9PSBvdGhlci5tX3Jlc2V0U3R5
bGVJbmhlcml0YW5jZQorICAgICAgICAgICAgJiYgbV9vdXRPZkNvbXBvc2l0aW9uID09IG90aGVy
Lm1fb3V0T2ZDb21wb3NpdGlvbjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW5zZXJ0aW9uUG9p
bnQqIG1faW5zZXJ0aW9uUG9pbnQ7CisgICAgYm9vbCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsK
KyAgICBib29sIG1fb3V0T2ZDb21wb3NpdGlvbjsKK307CisKK0NvbnRhaW5lck5vZGUqIHBhcmVu
dChjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyopOworQ29udGFpbmVyTm9kZSogcGFyZW50U2xv
dyhjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyopOworTm9kZSogbmV4dFNpYmxpbmcoY29uc3Qg
Tm9kZSopOworTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqKTsKK05vZGUqIHByZXZp
b3VzU2libGluZyhjb25zdCBOb2RlKik7CitOb2RlKiBwcmV2aW91c1NpYmxpbmdTbG93KGNvbnN0
IE5vZGUqKTsKKworCitpbmxpbmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqIG5v
ZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCit7CisgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRv
d1RyZWVXYWxrZXIoKSkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgUGFyZW50RGV0YWlscyBz
bG93RGV0YWlsczsKKyAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9PSBwYXJlbnRT
bG93KG5vZGUsICZzbG93RGV0YWlscykpOworICAgICAgICBBU1NFUlQoc2xvd0RldGFpbHMgPT0g
KmRldGFpbHMpOworI2VuZGlmCisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlR3VhcmFu
dGVlZEhvc3RGcmVlKCk7CisgICAgfQorCisgICAgcmV0dXJuIHBhcmVudFNsb3cobm9kZSwgZGV0
YWlscyk7Cit9CisKK2lubGluZSBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlKiBub2RlKQor
eworICAgIGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkpIHsKKyAgICAgICAgQVNT
RVJUKG5leHRTaWJsaW5nU2xvdyhub2RlKSA9PSBub2RlLT5uZXh0U2libGluZygpKTsKKyAgICAg
ICAgcmV0dXJuIG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIG5leHRT
aWJsaW5nU2xvdyhub2RlKTsKK30KKworaW5saW5lIE5vZGUqIHByZXZpb3VzU2libGluZyhjb25z
dCBOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkp
IHsKKyAgICAgICAgQVNTRVJUKHByZXZpb3VzU2libGluZ1Nsb3cobm9kZSkgPT0gbm9kZS0+cHJl
dmlvdXNTaWJsaW5nKCkpOworICAgICAgICByZXR1cm4gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7
CisgICAgfQorCisgICAgcmV0dXJuIHByZXZpb3VzU2libGluZ1Nsb3cobm9kZSk7Cit9CisKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9F
bGVtZW50LmNwcAppbmRleCBjNzdhMjk1NDQwNTA5YzQ0OTY3N2U0MDYwMzIwOGQzZmRhMGFiZmQ5
Li5hOGU1ODkxN2FhMzZkMDExMjcyMGY4ZjVkOGJmMDhjYWMyNWUxNzM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBAIFBzZXVkb0VsZW1lbnQ6OlBz
ZXVkb0VsZW1lbnQoRWxlbWVudCogcGFyZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKICAgICA6IEVs
ZW1lbnQocHNldWRvRWxlbWVudFRhZ05hbWUoKSwgcGFyZW50LT5kb2N1bWVudCgpLCBDcmVhdGVQ
c2V1ZG9FbGVtZW50KQogICAgICwgbV9wc2V1ZG9JZChwc2V1ZG9JZCkKIHsKKyAgICBBU1NFUlQo
cHNldWRvSWQgIT0gTk9QU0VVRE8pOwogICAgIEFTU0VSVChwYXJlbnQtPmluRG9jdW1lbnQoKSk7
CiAgICAgc2V0UGFyZW50T3JIb3N0Tm9kZShwYXJlbnQpOwogICAgIHNldEhhc0N1c3RvbUNhbGxi
YWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IGUxNzhlNWY2NWFiZmY5MWY5YjBjZGQ0MGU4NTBj
N2ZkZjYxNTkyZWQuLmI1YmRhYmIwOWQ3YmY3YzJiM2Q5NjFjMGY3OWMyNjE1MTkwMDhkMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogI2lmIEVOQUJMRShTVkcpCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdEdyb3VwRWxlbWVudC5jcHAKaW5kZXggZDcxMDIxYmI4MWQwMzgyN2FiYjVkYWRkYTg3NWE5
Yzg4ZDg2OWQ0Yy4uOWNiNDZmMmE4MzgzNzg4YWYwMjgxMmRiMThiZDNkMTVhNjcwNGUzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJNZW51
TGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCAz
OTg4OGQ4ZDYxZGU1NzIyNTBiODIwM2ZhMGFiODI5OTdjMjRiYjU5Li5mNTEwOTY4NDA3ZWJiOTk5
NGVkOTg4Y2FmNWYxYmUwN2M1NmZmMGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuY3BwCmluZGV4IGVhNWY0MDc3YzFhZGU0NzQ0YThjMjczMWE5YWIwZGU4MjQ0NmEy
ZWEuLjEzNjc1NWJlN2E3NmZjMmM5N2I2MTk3ZDQwMjFlYjAxYzZiOTdiYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAtMjMsMTIgKzIzLDEzIEBA
CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIK
KyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyUHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNldC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggMjMyYjU2M2UxMjY3
MDQzYWI1YTUyYmU4NjVjMzY4ZGUwNzNjNWYxZC4uYWVkYWMxZDBmN2QxMGY2ZDg0ZTEzNjBlODEw
MDMzOGE5MGM4MTJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7Ci0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNl
cnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiBwcml2YXRl
OgogCiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBtX2Rpc3RyaWJ1dGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179200</attachid>
            <date>2012-12-12 22:42:01 -0800</date>
            <delta_ts>2012-12-13 00:09:19 -0800</delta_ts>
            <desc>Fixed ChangeLog</desc>
            <filename>bug-104332-20121213153921.patch</filename>
            <type>text/plain</type>
            <size>45705</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5NjEyZDNkOWU4ZTdl
MmEwOTRmMTc3OWJjNDZjYWQxMWExMjYzMS4uMDc5ZTE5NThmODVmZjY4ODcwOGJmZjgwZGRjOWJm
MWM1NDY0ZmIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0xMi0xMiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgTm9kZVJlbmRlcmlu
Z0NvbnRleHQgaXMgc2xvdyBkdWUgdG8gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlUmVuZGVyaW5nQ29u
dGV4dCBoYXMgc29tZSBzbG93bmVzcyBkdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YKKyAgICAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHRoYXQgTlJDIHJlbGllcyBvbi4gVGhpcyBjaGFuZ2UK
KyAgICAgICAgY3JlYXRlcyBzb21lIGZhc3QgcGF0aHMgdG8gYWRkcmVzcyBzdWNoIHNsb3duZXNz
LgorCisgICAgICAgID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCBtb2R1bGU6CisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIG5hbWVzcGFjZSwg
YSBzaXN0ZXIKKyAgICAgICAgb2YgTm9kZVRyYXZlcnNhbC4gTlJUIGNvbnNpc3RzIG9mIGEgc2V0
IG9mIHRyZWUgdHJhdmVyc2FsCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGlzIHJlc3BvbnNpYmxl
IGZvciB0cmF2ZXJzYWwgaW4gTlJDLiAgQmVmb3JlIHRoaXMKKyAgICAgICAgY2hhZ25lLCBOUkMg
ZGlyZWN0bHkgdXNlZCBDU1RXLiBUaGlzIE5SVCBtb2R1bGUgaGlkZXMgYW5kIG5hcnJvd3MKKyAg
ICAgICAgdGhlIHVzYWdlIG9mIENTVFcuCisKKyAgICAgICAgLSBUcmF2ZXJzYWxzIHByb3ZpZGVk
IGJ5IE5SVCBoYXZlIGZhc3QgcGF0aHMuIEluIG1hbnkgY2FzZSwgc3VjaCB0cmF2ZXJzYWxzCisg
ICAgICAgICAgZG9lc24ndCBuZWVkIHRvIHVzZSBDU1RXIGFuZCBqdXN0IGdvZXMgbmVpZ2hib3Jp
bmcgbm9kZXMgaW4gYSBwbGFpbiBET00gd2F5LgorICAgICAgICAtIEl0IGFsc28gaGFuZGxlcyBO
UkMgc3BlY2lmaWMgdHJhdmVyc2FsIGNvbmNlcm5zIGxpa2UgcHNldWRvIGVsZW1lbnRzLgorICAg
ICAgICAgIENTVFc6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBhbmQgQ1NUVzo6cHNldWRvQXdh
cmVQcmV2aW91c1NpYmxpbmcoKSBhcmUKKyAgICAgICAgICBtZXJnZWQgaW50byB0aGlzIG1vZHVs
ZS4KKyAgICAgICAgLSBDU1RXOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIGlzIG1vdmVkIGFuZCBy
ZW5hbWVkIHRvCisgICAgICAgICAgTlJUOjpQYXJlbnREZXRhaWxzIHdpdGggc21hbGwgbW9kaWZp
Y2F0aW9uLiBUaGlzIGlzIGEgcHVyZQorICAgICAgICAgIHJlZmFjdG9yaW5nOiBBcyB0aGUgbmFt
ZSBpbXBsaWVzLCBUaGlzIGNsYXNzIGlzIHVzZWQgb25seSBieSBOUkMKKyAgICAgICAgICBhbmQg
dXNlZCBkdXJpbmcgYSB0cmF2ZXJzYWwgdGhlcmUuCisKKyAgICAgICAgTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbCBpcyBhbiBpc29sYXRpb24gbGF5ZXIgYmV0d2VlbiBnZW5lcmljIERPTSBhbmQgQ1NU
Vy4gVGhpcyBoaWRlcyBDU1RXCisgICAgICAgIGJlaGluZCB0aGUgd2FsbCBhbmQgd2lsbCBoZWxw
IGZ1cnRoZXIgcmVkdWN0aW9uIG9mIGl0cyB1c2FnZS4KKworICAgICAgICA9IE5vZGU6Ok5lZWRz
U2hhZG93VHJlZVdhbGtlckZsYWcgZmxhZzoKKworICAgICAgICBOUlQgZmFzdCBwYXRoIGlzIGVu
YWJsZWQgYnkgbmV3bHkgaW50cm9kdWNlZCBOZWVkc1NoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAg
bm9kZSBmbGFnLiBFYWNoIERPTSBub2RlIGlzIG5vdyBtYXJrZCBhcyBOZWVkc1NoYWRvd1RyZWVX
YWxrZXIgaWYKKyAgICAgICAgaXQgcmVxdWlyZXMgbm9uLXRyaXZpYWwgdHJhdmVyc2FsIGluIE5S
VCB3aGljaCB1c2VzIENTVFcuIFRoaXMKKyAgICAgICAgbWVhbnMgdGhhdCBlYWNoIG5vZGUgY2Fu
IGdvIGZhc3QgcGF0aCB1bmxlc3MgaXQgaXMgbWFya2VkIHdpdGggdGhpcyBmbGFnLgorCisgICAg
ICAgIEEgbm9kZSBpcyBtYXJrZWQgYXMgaXQgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyIGlmOgorCisg
ICAgICAgIC0gVGhlIG5vZGUgaXMgYSBzaGFkb3cgYm91bmRhcnkgbGlrZSBJbnNlcnRpb25Qb2lu
dCBvciBTaGFkb3dSb290LAorICAgICAgICAtIFRoZSBub2RlIGhhcyBwc2V1ZG8gZWxlbWVudHMg
bGlrZSBnZW5lcmF0ZWQgY29udGVudCwKKyAgICAgICAgLSBUaGUgbm9kZSBpcyBhIHBzZXVkbyBl
bGVtZW50IG9yCisKKyAgICAgICAgVGhpcyBjcml0ZXJpYSBjcml0ZXJpYSBpcyBkZWZpbmVkIGlu
IE5vZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKS4gVGhlIG5vZGUgYWN0dWFsbHkgbmVl
ZHMKKyAgICAgICAgdGhlIHdhbGtlciBpZiB0aGUgbm9kZSBvciBpdHMgcGFyZW50IGlzIG1hcmtl
ZCB3aXRoIHRoaXMgZmxhZy4KKworICAgICAgICBUaGUgb3JpZ2luYWwgaWRlYSBvZiB0aGlzIGNo
YW5nZSB3YXMgZGVtb25zdHJhdGVkIGJ5IEFudHRpIEtvaXZpc3RvIG9uIGJ1ZyAxMDMyMDggYW5k
IGJ1ZyAxMDQ1MDcuCisgICAgICAgIFRoaXMgY2hhZ25lIGhhcyAzLTQlIHNwZWVkdXAgb24gRHJv
bWFlby9kb20tbW9kaWZ5L2lubmVySFRNTCBvbiBBcHBsZSBNYWMuIChPT1BTOiBNZWFzdXJlIGFn
YWluLikKKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcDoKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmg6CisgICAgICAgIChDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIpOgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpuZWVk
c1NoYWRvd1RyZWVXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0RP
TUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6Omhhc1BzZXVkb0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnBz
ZXVkb0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0UHNldWRvRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpiZWZvcmVQc2V1ZG9FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFmdGVyUHNldWRvRWxlbWVudCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpoYXNQc2V1ZG9FbGVtZW50cyk6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFk
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bmVlZHNT
aGFkb3dUcmVlV2Fsa2VyU2xvdyk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmlzSW5zZXJ0aW9uUG9pbnROb2RlKToKKyAgICAgICAgKE5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6cmVzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6
Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0Nv
bnRleHQ6Om5leHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cHJldmlvdXNSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6cGFyZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuaDoKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5k
U3R5bGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6
ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50U2xvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZ1Nsb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5n
U2xvdyk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwpOgorICAg
ICAgICAoUGFyZW50RGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsOjpQYXJlbnREZXRhaWxzOjpQYXJlbnREZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6Omluc2VydGlvblBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6
OnJlc2V0U3R5bGVJbmhlcml0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpvdXRPZkNvbXBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6OmNoaWxkV2FzT3V0
T2ZDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
OjpQYXJlbnREZXRhaWxzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWw6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsOjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OlBzZXVkb0VsZW1lbnQpOgor
ICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaDoKKwogMjAxMi0xMi0xMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCB0aGUgR1RLKyBkZWJ1ZyBidWxpZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlODlmZjJlNzNkOTZkYWVhMGEzOTU0OTAyYjAzMTg0MmEw
MzE1Mzg0Li5lMTdkYzAwMzIzMWFiYTBkYWRhNjJlNGRmNTNlNjViZTM2MWExM2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTE5NSw2ICsxMTk1LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIGRvbS9Ob2RlSXRlcmF0b3IuY3BwCiAgICAgZG9tL05vZGVSYXJlRGF0YS5jcHAKICAgICBk
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuY3BwCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuY3BwCiAgICAgZG9tL05vdGF0aW9uLmNwcAog
ICAgIGRvbS9PdmVyZmxvd0V2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggN2JiZDYzNzQ3ZTFhMDM3OTljOTk2ZDNiNTBiNzI4M2E0ODM3YWY0Mi4uZDc0ODIzOGUzOWI4
NDY2NDM5NmQwZmY0MDQ1YTllZmE0ZTliZTUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0yODgwLDYgKzI4ODAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyU3R5bGUuaCBcCiAgICAgU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwu
Y3BwIFwKICAgICBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVRyYXZlcnNhbC5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CmluZGV4IDUxYTE0ZjM4Yjg1YWQxMWMzYWE3YzAzYzdhYjc0NDBiNmM0YWI2NmEuLmFlMWUwMTQ4
OWM4YzJmYTZmOWQ1ODJkMDcwYmI1YWRlMjhiYmE4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNDIwLDYg
KzQyMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuY3BwIFwKICAgICBk
b20vTm9kZVJhcmVEYXRhLmNwcCBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBc
CisgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIFwKICAgICBkb20vTm9kZVRyYXZl
cnNhbC5jcHAgXAogICAgIGRvbS9Ob3RhdGlvbi5jcHAgXAogICAgIGRvbS9TdGF0aWNIYXNoU2V0
Tm9kZUxpc3QuY3BwIFwKQEAgLTE2MDQsNiArMTYwNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRv
bS9Ob2RlSXRlcmF0b3IuaCBcCiAgICAgZG9tL05vZGVSYXJlRGF0YS5oIFwKICAgICBkb20vTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaCBcCisgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBc
CiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAogICAgIGRv
bS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjkwZDE4ODE2
NGI0NTljMzlkNGExM2UxYjNmMzc2MmU5NTg3MTBlMC4uMDA3M2ZmMjNjYWE5NDUxOWI1ZjAwNjNj
YmM3M2MwNDVjZWY5ZDZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjg0NSw2ICsyODQ1LDggQEAK
ICAgICAgICAgICAgICdkb20vTm9kZVJhcmVEYXRhLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVyaW5nQ29u
dGV4dC5oJywKKyAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAnLAor
ICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgnLAogICAgICAgICAgICAg
J2RvbS9Ob2RlUmVuZGVyU3R5bGUuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVUcmF2ZXJzYWwu
Y3BwJywKICAgICAgICAgICAgICdkb20vTm9kZVRyYXZlcnNhbC5oJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MWI1MjE5Mzk1
YmNiNzA3MDU4Y2RkZWYwMDgzNTQ4YjkzNjc4MGIyLi43ODhiYzZhZjdlZTUyNWI5NTY0YzEzNDdk
MmNlYTAwNTcyOTE4M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODg4LDYgKzM4ODgsOCBAQAogCQlBNzQwQjVBNTE0Qzkz
NUFCMDBBNzdGQTQgLyogSlNJbnRlcm5hbFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0RUE3OTE0QzkzNDg0MDBDOEY1QkYgLyogSlNJ
bnRlcm5hbFNldHRpbmdzLmggKi87IH07CiAJCUE3NDBCNUE3MTRDOTM1QUYwMEE3N0ZBNCAvKiBK
U0ludGVybmFsU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTdCNEVBNzgxNEM5MzQ4NDAwQzhGNUJGIC8qIEpTSW50ZXJuYWxTZXR0aW5n
cy5jcHAgKi87IH07CiAJCUE3NEJCNzZCMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2Rl
UGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3NEJCNzZBMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzRG
M0VGMzE2NzhCMjRBMDBCMDVBNkUgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIxMUYyMzE2NzhBNTQy
MDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgKi87IH07CisJCUE3NEYzRUY1
MTY3OEIyNEYwMEIwNUE2RSAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIxMUYyNDE2NzhBNTQyMDA5NTc0
NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oICovOyB9OwogCQlBNzVFNDk3NjEwNzUyQUNC
MDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAq
LzsgfTsKIAkJQTc1RThCODgwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODAwRTFERTJENjAw
N0YyNDgxIC8qIEZFQmxlbmQuY3BwICovOyB9OwpAQCAtMTEyMTEsNiArMTEyMTMsOCBAQAogCQlB
NzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0NvbnRyb2xsZXJNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MUE3MEM5MTFBRkIwMjAwMDk4OUQ2
RCAvKiBIVE1MTWV0ZXJFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MTWV0
ZXJFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyMTFGMjMxNjc4
QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MjExRjI0MTY3OEE1NDIwMDk1NzQ0NCAvKiBOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcy
M0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtRXhwb3J0TWFjcm9zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Mjc2M0JFMTY2ODlCRkIwMDJGQ0FDQiAvKiBVc2VyQWN0
aW9uRWxlbWVudFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyQWN0
aW9uRWxlbWVudFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJFQTNCQTE1
ODVDRjU1MDA0RkFBMjYgLyogUmVmQ291bnRlZFN1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlZFN1cHBsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIyMTAwLDYgKzIyMTA0LDggQEAKIAkJCQk2MzE4OUFFMjBFODNBMzMz
MDAwMTJFNDEgLyogTm9kZVJhcmVEYXRhLmggKi8sCiAJCQkJQTdGNUQ5NEQxMzg0RjAyRDAwQTI5
QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywKIAkJCQlBN0Y1RDk0RTEzODRGMDJE
MDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuaCAqLywKKwkJCQlBNzIxMUYyMzE2NzhB
NTQyMDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgKi8sCisJCQkJQTcyMTFG
MjQxNjc4QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCAqLywKIAkJCQk2
M0Q3QjMyQzBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggKi8sCiAJCQkJRTQz
MTA1QjcxNjc1MEYwQzAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuY3BwICovLAogCQkJCUU0MzEw
NUJBMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmggKi8sCkBAIC0yNDgwNSw2ICsy
NDgxMSw3IEBACiAJCQkJQTgxODcyMUIwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2MzE4OUFFMzBFODNBMzMzMDAwMTJFNDEgLyogTm9kZVJhcmVEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Y1RDk1MDEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJl
bmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NEYzRUY1MTY3OEIyNEYwMEIw
NUE2RSAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk2M0Q3
QjMyRDBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzgyQUFCNDBEOEMzODYxMDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThFQTdFQkUwQTE5NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI4MTI1LDYgKzI4MTMyLDcgQEAKIAkJCQk4NTRGRTczMjBBMjI5N0JFMDA1
OEQ3QUQgLyogTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTRG
RTczNDBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3RjVEOTRGMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNzRGM0VGMzE2NzhCMjRBMDBCMDVBNkUgLyogTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0VCRjBBMTk0NUQwMDBB
OEVGNUYgLyogTm90YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQzcxMDE3QTFC
MTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzkwQ0E1
NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApp
bmRleCBmMDBmMmVmYjQ5YTFhNGUzNzBjM2FmZDk5MThlYWMwYjE3ZDliNjlhLi4xZDAzYzU0N2Uw
YjQ5ODdlMjY3MjJiOTM5OWQ2ZjViMGQ1ZmQyYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMSwzICsxLDQgQEAKKwogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
QEAgLTcwLDI1ICs3MSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuQmVEaXN0cmlidXRl
ZChjb25zdCBOb2RlKiBub2RlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIHZvaWQg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzOjpkaWRUcmF2
ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKLXsKLSAg
ICBpZiAoIW1faW5zZXJ0aW9uUG9pbnQpIHsKLSAgICAgICAgbV9pbnNlcnRpb25Qb2ludCA9IGlu
c2VydGlvblBvaW50OwotICAgICAgICBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSAgPSBtX3Jlc2V0
U3R5bGVJbmhlcml0YW5jZSB8fCBpbnNlcnRpb25Qb2ludC0+cmVzZXRTdHlsZUluaGVyaXRhbmNl
KCk7Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBh
cmVudFRyYXZlcnNhbERldGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dS
b290KiByb290KQotewotICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHls
ZUluaGVyaXRhbmNlIHx8IHJvb3QtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOwotfQotCi1pbmxp
bmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6
OmRpZEZpbmROb2RlKENvbnRhaW5lck5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFtX291dE9mQ29t
cG9zaXRpb24pCi0gICAgICAgIG1fbm9kZSA9IG5vZGU7Ci19Ci0KIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlciBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZyb21GaXJzdENoaWxkKGNvbnN0IE5v
ZGUqIG5vZGUsIFBvbGljeSBwb2xpY3kpCiB7CiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlcihub2RlLCBwb2xpY3kpOwpAQCAtOTYsMTQgKzc4LDYgQEAgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZnJvbUZpcnN0Q2hpbGQoY29uc3Qg
Tm9kZSogbm8KICAgICByZXR1cm4gd2Fsa2VyOwogfQogCi12b2lkIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6ZmluZFBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJzYWxEZXRh
aWxzKiBkZXRhaWxzKQotewotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9k
ZSwgQ3Jvc3NVcHBlckJvdW5kYXJ5LCBDYW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7Ci0gICAg
Q29udGFpbmVyTm9kZSogZm91bmQgPSB0b0NvbnRhaW5lck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFy
ZW50KHdhbGtlci5nZXQoKSwgZGV0YWlscykpOwotICAgIGlmIChmb3VuZCkKLSAgICAgICAgZGV0
YWlscy0+ZGlkRmluZE5vZGUoZm91bmQpOwotfQotCiB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlcjo6Zmlyc3RDaGlsZCgpCiB7CiAgICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7CkBAIC0xODMs
NDYgKzE1Nyw2IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxp
bmcoKQogICAgIGFzc2VydFBvc3Rjb25kaXRpb24oKTsKIH0KIAotdm9pZCBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKQotewotICAgIGFzc2VydFByZWNv
bmRpdGlvbigpOwotCi0gICAgY29uc3QgTm9kZSogbm9kZSA9IG1fbm9kZTsKLQotICAgIGlmIChu
b2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbV9ub2RlID0gdHJhdmVyc2VG
aXJzdENoaWxkKHRyYXZlcnNlUGFyZW50KG5vZGUpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbm9k
ZSA9IHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJhdmVyc2Fs
RGlyZWN0aW9uRm9yd2FyZCk7Ci0KLSAgICBpZiAoIW1fbm9kZSAmJiAhbm9kZS0+aXNBZnRlclBz
ZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBhcmVudChu
b2RlKTsKLSAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKLSAg
ICAgICAgICAgIG1fbm9kZSA9IHRvRWxlbWVudChwYXJlbnQpLT5hZnRlclBzZXVkb0VsZW1lbnQo
KTsKLSAgICB9Ci0KLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KLXZvaWQgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpCi17Ci0gICAg
YXNzZXJ0UHJlY29uZGl0aW9uKCk7Ci0KLSAgICBjb25zdCBOb2RlKiBub2RlID0gbV9ub2RlOwot
Ci0gICAgaWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG1fbm9kZSA9
IHRyYXZlcnNlTGFzdENoaWxkKHRyYXZlcnNlUGFyZW50KG5vZGUpKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fbm9kZSA9IHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwg
VHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOwotCi0gICAgaWYgKCFtX25vZGUgJiYgIW5vZGUt
PmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIE5vZGUqIHBhcmVudCA9IHRyYXZl
cnNlUGFyZW50KG5vZGUpOwotICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50
Tm9kZSgpKQotICAgICAgICAgICAgbV9ub2RlID0gdG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBz
ZXVkb0VsZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0K
IE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VEaXN0cmlidXRlZE5vZGVz
KGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCwg
VHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBmb3IgKGNvbnN0IE5vZGUqIG5l
eHQgPSBub2RlOyBuZXh0OyBuZXh0ID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25G
b3J3YXJkID8gaW5zZXJ0aW9uUG9pbnQtPm5leHRUbyhuZXh0KSA6IGluc2VydGlvblBvaW50LT5w
cmV2aW91c1RvKG5leHQpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93
VHJlZVdhbGtlci5oCmluZGV4IDRiNmZmOTU2YTQ1MTliOGQ2MDI0ODMxZjI3NTg4YTY0YzRhYTlk
MDIuLmI4MDlhMjZhYzQ5OTJhODU1YWU0ZWIyOTQwM2Y4MTM5MjdiNTNiMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNkZWZpbmUgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyX2gKIAogI2luY2x1ZGUgIkluc2Vy
dGlvblBvaW50LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiArNDAsOCBA
QCBjbGFzcyBTaGFkb3dSb290OwogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyNzAyCiBjbGFzcyBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgewogcHVibGljOgor
ICAgIHR5cGVkZWYgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlscyBQYXJlbnRU
cmF2ZXJzYWxEZXRhaWxzOworCiAgICAgZW51bSBQb2xpY3kgewogICAgICAgICBDcm9zc1VwcGVy
Qm91bmRhcnksCiAgICAgICAgIERvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5LApAQCAtNDksMzggKzUy
LDExIEBAIHB1YmxpYzoKICAgICAgICAgQ2Fubm90U3RhcnRGcm9tU2hhZG93Qm91bmRhcnkKICAg
ICB9OwogCi0gICAgY2xhc3MgUGFyZW50VHJhdmVyc2FsRGV0YWlscyB7Ci0gICAgcHVibGljOgot
ICAgICAgICBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKCkKLSAgICAgICAgICAgIDogbV9ub2RlKDAp
Ci0gICAgICAgICAgICAsIG1faW5zZXJ0aW9uUG9pbnQoMCkKLSAgICAgICAgICAgICwgbV9yZXNl
dFN0eWxlSW5oZXJpdGFuY2UoZmFsc2UpCi0gICAgICAgICAgICAsIG1fb3V0T2ZDb21wb3NpdGlv
bihmYWxzZSkKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgQ29udGFpbmVyTm9kZSogbm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9u
UG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2luc2VydGlvblBvaW50OyB9Ci0gICAgICAgIGJvb2wg
cmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNldFN0eWxlSW5oZXJp
dGFuY2U7IH0KLSAgICAgICAgYm9vbCBvdXRPZkNvbXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9vdXRPZkNvbXBvc2l0aW9uOyB9Ci0KLSAgICAgICAgdm9pZCBkaWRGaW5kTm9kZShDb250YWlu
ZXJOb2RlKik7Ci0gICAgICAgIHZvaWQgZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRp
b25Qb2ludCopOwotICAgICAgICB2b2lkIGRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFk
b3dSb290Kik7Ci0gICAgICAgIHZvaWQgY2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKCkgeyBtX291
dE9mQ29tcG9zaXRpb24gPSB0cnVlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBDb250YWlu
ZXJOb2RlKiBtX25vZGU7Ci0gICAgICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50
OwotICAgICAgICBib29sIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOwotICAgICAgICBib29sIG1f
b3V0T2ZDb21wb3NpdGlvbjsKLSAgICB9OwotCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
KGNvbnN0IE5vZGUqLCBQb2xpY3kgPSBDcm9zc1VwcGVyQm91bmRhcnksIFN0YXJ0UG9saWN5ID0g
Q2Fubm90U3RhcnRGcm9tU2hhZG93Qm91bmRhcnkpOwogCiAgICAgLy8gRm9yIGEgY29tbW9uIHVz
ZSBjYXNlIHN1Y2ggYXM6CiAgICAgLy8gZm9yIChDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fs
a2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGlsZChub2RlKTsgd2Fs
a2VyLmdldCgpOyB3YWxrZXIubmV4dFNpYmxpbmcoKSkKICAgICBzdGF0aWMgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyIGZyb21GaXJzdENoaWxkKGNvbnN0IE5vZGUqLCBQb2xpY3kgPSBDcm9zc1Vw
cGVyQm91bmRhcnkpOwotICAgIHN0YXRpYyB2b2lkIGZpbmRQYXJlbnQoY29uc3QgTm9kZSosIFBh
cmVudFRyYXZlcnNhbERldGFpbHMqKTsKIAogICAgIE5vZGUqIGdldCgpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8Tm9kZSo+KG1fbm9kZSk7IH0KIApAQCAtOTAsMTQgKzY2LDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIG5leHRTaWJsaW5nKCk7CiAgICAgdm9pZCBwcmV2aW91c1NpYmxpbmcoKTsK
IAotICAgIHZvaWQgcHNldWRvQXdhcmVOZXh0U2libGluZygpOwotICAgIHZvaWQgcHNldWRvQXdh
cmVQcmV2aW91c1NpYmxpbmcoKTsKLQogICAgIHZvaWQgcGFyZW50KCk7CiAKICAgICB2b2lkIG5l
eHQoKTsKICAgICB2b2lkIHByZXZpb3VzKCk7CiAKKyAgICBOb2RlKiB0cmF2ZXJzZVBhcmVudChj
b25zdCBOb2RlKiwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogPSAwKSBjb25zdDsKKwogcHJpdmF0
ZToKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSosIFBhcmVudFRyYXZl
cnNhbERldGFpbHMqKTsKIApAQCAtMTM0LDcgKzEwOSw2IEBAIHByaXZhdGU6CiAgICAgTm9kZSog
dHJhdmVyc2VGaXJzdENoaWxkKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJz
ZUxhc3RDaGlsZChjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VDaGlsZChj
b25zdCBOb2RlKiwgVHJhdmVyc2FsRGlyZWN0aW9uKSBjb25zdDsKLSAgICBOb2RlKiB0cmF2ZXJz
ZVBhcmVudChjb25zdCBOb2RlKiwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogPSAwKSBjb25zdDsK
IAogICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKICAg
ICBzdGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggM2VmNWM3MjEwNTk5ZWJiYjQyYTVjMjQ3MmQ0
YjQ1ZjBhZDU3OTFkMC4uZWFmOGQzZmE2Y2I0NGIyOWI3Nzk0NWZiODljZmJiMWNkYjE4ZTRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0yNjUsNiArMjY1LDE0IEBAIGlubGlu
ZSBOb2RlKiBOb2RlOjpoaWdoZXN0QW5jZXN0b3IoKSBjb25zdAogICAgIHJldHVybiBoaWdoZXN0
OwogfQogCitpbmxpbmUgYm9vbCBOb2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSBjb25zdAor
eworICAgIGlmIChnZXRGbGFnKE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRPckhvc3ROb2Rl
KCk7CisgICAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQtPmdldEZsYWcoTmVlZHNTaGFkb3dUcmVl
V2Fsa2VyRmxhZyk7Cit9CisKIC8vIFRoaXMgY29uc3RhbnQgY29udHJvbHMgaG93IG11Y2ggYnVm
ZmVyIGlzIGluaXRpYWxseSBhbGxvY2F0ZWQKIC8vIGZvciBhIE5vZGUgVmVjdG9yIHRoYXQgaXMg
dXNlZCB0byBzdG9yZSBjaGlsZCBOb2RlcyBvZiBhIGdpdmVuIE5vZGUuCiAvLyBGSVhNRTogT3B0
aW1pemUgdGhlIHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbElu
T25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggOTI5NmEx
OWExY2I5ZTRhNDgwNmYzNDM5Yjc4MmMyNTc0YjFjYTU2OS4uNTlmNTliZWJjMTc5MDg5MDUzMTVh
NDkyZjhmMGE5NjIxOTc2MGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFs
bEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC0x
MDUsNiArMTA1LDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCIKICNpbmNs
dWRlICJOb2RlSXRlcmF0b3IuY3BwIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmNw
cCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCIKICNpbmNsdWRlICJOb3Rh
dGlvbi5jcHAiCiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAiUGFnZVRy
YW5zaXRpb25FdmVudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNDQ5OGQzMjlhNWI5
OWU4OGZjOWQxNDdiOTUxN2QzYmIwMjkwMGJhZi4uOTBiOWJlNjczYzEzNDU0NDRlOTljYWZhMDkw
NzNhYThkOTViMDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjA5OCw3ICsyMDk4LDcg
QEAgdm9pZCBFbGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKIAogdm9pZCBFbGVtZW50Ojp1
cGRhdGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkIHBzZXVkb0lkLCBTdHlsZUNoYW5nZSBjaGFuZ2Up
CiB7Ci0gICAgUHNldWRvRWxlbWVudCogZXhpc3RpbmcgPSBoYXNSYXJlRGF0YSgpID8gZWxlbWVu
dFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQocHNldWRvSWQpIDogMDsKKyAgICBQc2V1ZG9FbGVt
ZW50KiBleGlzdGluZyA9IHBzZXVkb0VsZW1lbnQocHNldWRvSWQpOwogICAgIGlmIChleGlzdGlu
ZykgewogICAgICAgICAvLyBQc2V1ZG9FbGVtZW50IHN0eWxlcyBoYW5nIG9mZiB0aGVpciBwYXJl
bnQgZWxlbWVudCdzIHN0eWxlIHNvIGlmIHdlIG5lZWRlZAogICAgICAgICAvLyBhIHN0eWxlIHJl
Y2FsYyB3ZSBzaG91bGQgRm9yY2Ugb25lIG9uIHRoZSBwc2V1ZG8uCkBAIC0yMTA5LDEwICsyMTA5
LDEwIEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlUHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9J
ZCwgU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICAvLyB3aGVuIFJlbmRlck9iamVjdDo6aXND
aGlsZEFsbG93ZWQgb24gb3VyIHBhcmVudCByZXR1cm5zIGZhbHNlIGZvciB0aGUKICAgICAgICAg
Ly8gUHNldWRvRWxlbWVudCdzIHJlbmRlcmVyIGZvciBlYWNoIHN0eWxlIHJlY2FsYy4KICAgICAg
ICAgaWYgKCFyZW5kZXJlcigpIHx8ICFwc2V1ZG9FbGVtZW50UmVuZGVyZXJJc05lZWRlZChyZW5k
ZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpKQotICAgICAgICAgICAgZWxl
bWVudFJhcmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIDApOworICAgICAgICAg
ICAgc2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgMCk7CiAgICAgfSBlbHNlIGlmIChSZWZQdHI8
UHNldWRvRWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZVBzZXVkb0VsZW1lbnRJZk5lZWRlZChwc2V1
ZG9JZCkpIHsKICAgICAgICAgZWxlbWVudC0+YXR0YWNoKCk7Ci0gICAgICAgIGVuc3VyZUVsZW1l
bnRSYXJlRGF0YSgpLT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVtZW50LnJlbGVhc2Uo
KSk7CisgICAgICAgIHNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1lbnQucmVsZWFzZSgp
KTsKICAgICB9CiB9CiAKQEAgLTIxMzMsMTYgKzIxMzMsMjMgQEAgUGFzc1JlZlB0cjxQc2V1ZG9F
bGVtZW50PiBFbGVtZW50OjpjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQoUHNldWRvSWQgcHNl
dWRvSWQKICAgICByZXR1cm4gUHNldWRvRWxlbWVudDo6Y3JlYXRlKHRoaXMsIHBzZXVkb0lkKTsK
IH0KIAotUHNldWRvRWxlbWVudCogRWxlbWVudDo6YmVmb3JlUHNldWRvRWxlbWVudCgpIGNvbnN0
Citib29sIEVsZW1lbnQ6Omhhc1BzZXVkb0VsZW1lbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
aGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KEJFRk9SRSkg
OiAwOworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5oYXNQ
c2V1ZG9FbGVtZW50cygpOwogfQogCi1Qc2V1ZG9FbGVtZW50KiBFbGVtZW50OjphZnRlclBzZXVk
b0VsZW1lbnQoKSBjb25zdAorUHNldWRvRWxlbWVudCogRWxlbWVudDo6cHNldWRvRWxlbWVudChQ
c2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVs
ZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KEFGVEVSKSA6IDA7CisgICAgcmV0dXJuIGhh
c1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChwc2V1ZG9JZCkg
OiAwOwogfQogCit2b2lkIEVsZW1lbnQ6OnNldFBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRv
SWQsIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBlbnN1cmVFbGVt
ZW50UmFyZURhdGEoKS0+c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxlbWVudCk7CisgICAg
cmVzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKTsKK30KKworCiAvLyBFbGVtZW50VHJhdmVyc2Fs
IEFQSQogRWxlbWVudCogRWxlbWVudDo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggODQzNTJjM2QyMTY0ZDc0YjUzZjI0ZjRiMzc3ZmEwYmU2M2RhZjcz
Yy4uNjZhYWQ2ZTlkMDgyYjkzN2RmZmE0NWFiZTlkMTNkMzE4MWIxOWZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC0zNjYsOCArMzY2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2luZ0NoaWxk
cmVuKCk7CiAKLSAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3Q7
Ci0gICAgUHNldWRvRWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CisgICAgYm9v
bCBoYXNQc2V1ZG9FbGVtZW50cygpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIHBzZXVkb0Vs
ZW1lbnQoUHNldWRvSWQpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIGJlZm9yZVBzZXVkb0Vs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9FbGVtZW50KEJFRk9SRSk7IH0KKyAgICBQc2V1
ZG9FbGVtZW50KiBhZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9FbGVt
ZW50KEFGVEVSKTsgfQorICAgIGJvb2wgY2hpbGROZWVkc1NoYWRvd1dhbGtlcigpIGNvbnN0Owor
ICAgIHZvaWQgZGlkU2hhZG93VHJlZUF3YXJlQ2hpbGRyZW5DaGFuZ2UoKTsKIAogICAgIC8vIEVs
ZW1lbnRUcmF2ZXJzYWwgQVBJCiAgICAgRWxlbWVudCogZmlyc3RFbGVtZW50Q2hpbGQoKSBjb25z
dDsKQEAgLTUwMCw2ICs1MDQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlUHNldWRvRWxlbWVudChQc2V1ZG9JZCwgU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAgICAg
UGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQoUHNl
dWRvSWQpOworICAgIHZvaWQgc2V0UHNldWRvRWxlbWVudChQc2V1ZG9JZCwgUGFzc1JlZlB0cjxQ
c2V1ZG9FbGVtZW50Pik7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBBdHRy
IHRvIGNhbGwgd2lsbE1vZGlmeUF0dHJpYnV0ZS9kaWRNb2RpZnlBdHRyaWJ1dGUuCiAgICAgZnJp
ZW5kIGNsYXNzIEF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggNzkw
NWNiNTQ4ZTVmZmM0OWYyMDRhMzlkZWM1MDFjNDA5ZWQyZmExNS4uYzJkN2E5ZDcwNjc4Njc2YTdi
ZmI1ZmVjZjUwN2QxMDM4NGY2MWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aApAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBzZXVkb0VsZW1lbnQo
UHNldWRvSWQsIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4pOwogICAgIFBzZXVkb0VsZW1lbnQq
IHBzZXVkb0VsZW1lbnQoUHNldWRvSWQpIGNvbnN0OworICAgIGJvb2wgaGFzUHNldWRvRWxlbWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRlZEJlZm9yZSB8fCBtX2dlbmVyYXRlZEFmdGVy
OyB9CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogICAgIHZvaWQgcmVzZXREeW5h
bWljUmVzdHlsZU9ic2VydmF0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3Bw
CmluZGV4IDNjZWE2NGU3NWQzYmU0MmNiOTk5ZTdmNjQxM2E2YzhmZjBiNDljZWEuLjRjNjVkZTQ4
MjNhZjk5OTg5NTljZmY2ZjliMmQzMjYzMzY1MmE1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5jcHAKQEAgLTg3LDYgKzg3LDkgQEAgdm9pZCBFbGVtZW50U2hhZG93OjphZGRTaGFk
b3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2gKICAg
ICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOwogICAgIENoaWxkTm9kZUluc2Vy
dGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290LmdldCgpKTsKIAorICAg
IC8vIEV4aXN0ZW5jZSBvZiBzaGFkb3cgcm9vdHMgcmVxdWlyZXMgdGhlIGhvc3QgYW5kIGl0cyBj
aGlsZHJlbiB0byBkbyB0cmF2ZXJzYWwgdXNpbmcgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLgor
ICAgIHNoYWRvd0hvc3QtPnNldE5lZWRzU2hhZG93VHJlZVdhbGtlcigpOworCiAgICAgLy8gRklY
TUUoOTQ5MDUpOiBTaGFkb3dIb3N0IHNob3VsZCBiZSByZWF0dGFjaGVkIGR1cmluZyByZWNhbGNT
dHlsZS4KICAgICAvLyBTZXQgc29tZSBmbGFnIGhlcmUgYW5kIHJlY3JlYXRlIHNoYWRvdyBob3N0
cycgcmVuZGVyZXIgaW4KICAgICAvLyBFbGVtZW50OjpyZWNhbGNTdHlsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAppbmRleCA3NjUzMDJhZTEzNWQwNWMyMmQ2NjQ0OWMyZGYwNDUwOThmMDNhOTY0Li40Y2IzY2Uz
NjBlMjBjNTc5YTUzN2NhNmUwZTc2NDgzYmE0NTdjNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0x
MjkwLDYgKzEyOTAsMTAgQEAgRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpOwogfQogCitib29sIE5vZGU6Om5lZWRz
U2hhZG93VHJlZVdhbGtlclNsb3coKSBjb25zdAoreworICAgIHJldHVybiAoaXNTaGFkb3dSb290
KCkgfHwgKGlzRWxlbWVudE5vZGUoKSAmJiAoaXNJbnNlcnRpb25Qb2ludCgpIHx8IGlzUHNldWRv
RWxlbWVudCgpIHx8IHRvRWxlbWVudCh0aGlzKS0+aGFzUHNldWRvRWxlbWVudHMoKSB8fCB0b0Vs
ZW1lbnQodGhpcyktPnNoYWRvdygpKSkpOworfQogCiBib29sIE5vZGU6OmlzQmxvY2tGbG93KCkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDUwNTM5YmI5ZDBmMzNmNmY3MzYxZWQ4MzNjMGJjZmFm
NDYyYzZlNDMuLjgzZGYxZGU1NmZlOWVkMjhhNzhlZGU3M2RjMmVhZDk1Y2JmZTRlMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtMjQ3LDEwICsyNDcsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c0ZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNQbHVnaW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgZG9jdW1lbnRGcmFnbWVudElzU2hhZG93Um9vdCgpIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisK
ICAgICBib29sIGlzRG9jdW1lbnROb2RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0RvY3VtZW50RnJh
Z21lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzRG9jdW1lbnRGcmFnbWVudEZsYWcpOyB9
CiAgICAgYm9vbCBpc1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBpc0RvY3VtZW50RnJhZ21l
bnQoKSAmJiBkb2N1bWVudEZyYWdtZW50SXNTaGFkb3dSb290KCk7IH0KLSAgICBib29sIGlzSW5z
ZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzSW5zZXJ0aW9uUG9pbnRGbGFn
KTsgfQorICAgIGJvb2wgaXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWco
TmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZykgJiYgaXNJbnNlcnRpb25Qb2ludE5vZGUoKTsgfQor
CisgICAgYm9vbCBuZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSBjb25zdDsKKyAgICBib29sIG5lZWRz
U2hhZG93VHJlZVdhbGtlclNsb3coKSBjb25zdDsKKyAgICB2b2lkIHNldE5lZWRzU2hhZG93VHJl
ZVdhbGtlcigpIHsgc2V0RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsgfQorICAgIHZv
aWQgcmVzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSB7IHNldEZsYWcobmVlZHNTaGFkb3dUcmVl
V2Fsa2VyU2xvdygpLCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsgfQorCiAgICAgYm9vbCBp
bk5hbWVkRmxvdygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSW5OYW1lZEZsb3dGbGFnKTsgfQog
ICAgIGJvb2wgaGFzQ3VzdG9tQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXND
dXN0b21DYWxsYmFja3NGbGFnKTsgfQogCkBAIC03MDMsNyArNzExLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgSGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGRGbGFnID0gMSA8PCAyMiwKICAgICAgICAgSGFz
RXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMjMsCiAgICAgICAgIFY4Q29sbGVjdGFibGVEdXJp
bmdNaW5vckdDRmxhZyA9IDEgPDwgMjQsCi0gICAgICAgIElzSW5zZXJ0aW9uUG9pbnRGbGFnID0g
MSA8PCAyNSwKKyAgICAgICAgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyA9IDEgPDwgMjUsCiAK
ICAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFn
CiAgICAgfTsKQEAgLTcyMSwxNSArNzI5LDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3JlYXRl
VGV4dCA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc1RleHRGbGFnLAogICAgICAgICBDcmVhdGVDb250
YWluZXIgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb250YWluZXJGbGFnLCAKICAgICAgICAgQ3Jl
YXRlRWxlbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRWxlbWVudEZsYWcsIAotICAgICAgICBD
cmVhdGVQc2V1ZG9FbGVtZW50ID0gIENyZWF0ZUVsZW1lbnQgfCBJbkRvY3VtZW50RmxhZywKLSAg
ICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFn
bWVudEZsYWcsCisgICAgICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3JlYXRlRWxlbWVudCB8
IEluRG9jdW1lbnRGbGFnIHwgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZywKKyAgICAgICAgQ3Jl
YXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFnbWVudEZsYWcg
fCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnLAogICAgICAgICBDcmVhdGVEb2N1bWVudEZyYWdt
ZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZywKICAgICAgICAg
Q3JlYXRlU3R5bGVkRWxlbWVudCA9IENyZWF0ZUVsZW1lbnQgfCBJc1N0eWxlZEVsZW1lbnRGbGFn
LCAKICAgICAgICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNI
VE1MRmxhZywgCiAgICAgICAgIENyZWF0ZUZyYW1lT3duZXJFbGVtZW50ID0gQ3JlYXRlSFRNTEVs
ZW1lbnQgfCBIYXNDdXN0b21DYWxsYmFja3NGbGFnLAogICAgICAgICBDcmVhdGVTVkdFbGVtZW50
ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8IElzU1ZHRmxhZywKICAgICAgICAgQ3JlYXRlRG9jdW1l
bnQgPSBDcmVhdGVDb250YWluZXIgfCBJbkRvY3VtZW50RmxhZywKLSAgICAgICAgQ3JlYXRlSW5z
ZXJ0aW9uUG9pbnQgPSBDcmVhdGVIVE1MRWxlbWVudCB8IElzSW5zZXJ0aW9uUG9pbnRGbGFnLAor
ICAgICAgICBDcmVhdGVJbnNlcnRpb25Qb2ludCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgTmVlZHNT
aGFkb3dUcmVlV2Fsa2VyRmxhZywKICAgICAgICAgQ3JlYXRlRWRpdGluZ1RleHQgPSBDcmVhdGVU
ZXh0IHwgSGFzTmFtZU9ySXNFZGl0aW5nVGV4dEZsYWcsCiAgICAgfTsKICAgICBOb2RlKERvY3Vt
ZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcAppbmRleCAxMzE4N2I1NmNhZWE4NjFjYTY2NWI3Y2FkMDkxOWVmOTNjYWZk
MjdmLi42NzMwNWNhMjBlNWY3ZjUzOTYzMTI4NzJkOWY0MDc4MTAxMWI0YmMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgog
Ci0jaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ29udGFp
bmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVs
ZW1lbnRTaGFkb3cuaCIKQEAgLTU5LDExICs1OCwxMiBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICA6IG1fbm9kZShub2RlKQogICAg
ICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKIHsKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OmZpbmRQYXJlbnQobV9ub2RlLCAmbV9wYXJlbnREZXRhaWxzKTsKKyAgICBtX3JlbmRlcmlu
Z1BhcmVudCA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudChub2RlLCAmbV9wYXJlbnRE
ZXRhaWxzKTsKIH0KIAogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICA6IG1fbm9kZShub2RlKQorICAg
ICwgbV9yZW5kZXJpbmdQYXJlbnQoMCkKICAgICAsIG1fc3R5bGUoc3R5bGUpCiAgICAgLCBtX3Bh
cmVudEZsb3dSZW5kZXJlcigwKQogewpAQCAtODMsMTIgKzgzLDExIEBAIFJlbmRlck9iamVjdCog
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAKICAgICAvLyBBdm9p
ZCBhbiBPKE5eMikgcHJvYmxlbSB3aXRoIHRoaXMgZnVuY3Rpb24gYnkgbm90IGNoZWNraW5nIGZv
cgogICAgIC8vIG5leHRSZW5kZXJlcigpIHdoZW4gdGhlIHBhcmVudCBlbGVtZW50IGhhc24ndCBh
dHRhY2hlZCB5ZXQuCi0gICAgaWYgKG1fcGFyZW50RGV0YWlscy5ub2RlKCkgJiYgIW1fcGFyZW50
RGV0YWlscy5ub2RlKCktPmF0dGFjaGVkKCkpCisgICAgaWYgKG1fcmVuZGVyaW5nUGFyZW50ICYm
ICFtX3JlbmRlcmluZ1BhcmVudC0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG1fbm9kZSk7Ci0gICAgZm9yICh3YWxr
ZXIucHNldWRvQXdhcmVOZXh0U2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wc2V1ZG9B
d2FyZU5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsKKyAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBO
b2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZyhtX25vZGUpOyBzaWJsaW5nOyBzaWJs
aW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNpYmxpbmcoc2libGluZykpIHsKKyAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJlcigpKSB7
CiAgICAgICAgICAgICAvLyBSZW5kZXJlcnMgZm9yIGVsZW1lbnRzIGF0dGFjaGVkIHRvIGEgZmxv
dyB0aHJlYWQgc2hvdWxkIGJlIHNraXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBwYXJlbnRlZCBkaWZm
ZXJlbnRseS4KICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1lbnROb2Rl
KCkgJiYgcmVuZGVyZXItPnN0eWxlKCkgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5mbG93VGhyZWFk
KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA5LDEwICsxMDgs
OCBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVy
KCkgY29uc3QKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSBPKE5eMikg
YXZvaWRhbmNlIGFzIG5leHRSZW5kZXJlciBkb2VzCiAgICAgLy8gaG93ZXZlciwgd2hlbiBJIHRy
aWVkIGFkZGluZyBpdCwgc2V2ZXJhbCB0ZXN0cyBmYWlsZWQuCi0KLSAgICBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIgd2Fsa2VyKG1fbm9kZSk7Ci0gICAgZm9yICh3YWxrZXIucHNldWRvQXdhcmVQ
cmV2aW91c1NpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucHNldWRvQXdhcmVQcmV2aW91
c1NpYmxpbmcoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHdhbGtl
ci5nZXQoKS0+cmVuZGVyZXIoKSkgeworICAgIGZvciAoTm9kZSogc2libGluZyA9IE5vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhtX25vZGUpOyBzaWJsaW5nOyBzaWJsaW5n
ID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKHNpYmxpbmcpKSB7Cisg
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkg
ewogICAgICAgICAgICAgLy8gUmVuZGVyZXJzIGZvciBlbGVtZW50cyBhdHRhY2hlZCB0byBhIGZs
b3cgdGhyZWFkIHNob3VsZCBiZSBza2lwcGVkIGJlY2F1c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlm
ZmVyZW50bHkuCiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9k
ZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpICYmICFyZW5kZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVh
ZCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEzMCwyMSArMTI3
LDIxIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVy
KCkgY29uc3QKICAgICBpZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBt
X3BhcmVudEZsb3dSZW5kZXJlcjsKIAotICAgIHJldHVybiBtX3BhcmVudERldGFpbHMubm9kZSgp
ID8gbV9wYXJlbnREZXRhaWxzLm5vZGUoKS0+cmVuZGVyZXIoKSA6IDA7CisgICAgcmV0dXJuIG1f
cmVuZGVyaW5nUGFyZW50ID8gbV9yZW5kZXJpbmdQYXJlbnQtPnJlbmRlcmVyKCkgOiAwOwogfQog
CiBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX25vZGUtPmRvY3VtZW50KCktPnNob3VsZENyZWF0ZVJlbmRlcmVycygp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtX3BhcmVudERldGFpbHMubm9kZSgp
KQorICAgIGlmICghbV9yZW5kZXJpbmdQYXJlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+cGFyZW50UmVuZGVyZXIoKTsK
ICAgICBpZiAoIXBhcmVudFJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxkcmVuKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIW1fcGFyZW50RGV0YWlscy5ub2RlKCktPmNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoKnRoaXMpKQorICAgIGlmICghbV9yZW5kZXJpbmdQYXJlbnQtPmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoKnRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDdk
YTQ4ZTI5YTQyN2Q5YWU3NGM2MzI0ZWM0MmE4YmUwMjQxZWJiNjMuLmMwNzk3NzZkYzgyMDgyZDRk
NWRmZjE1OTUyMTk4NTU1NTZmYmQxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVy
aW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw4IEBACiAjaWZuZGVmIE5vZGVSZW5kZXJpbmdDb250
ZXh0X2gKICNkZWZpbmUgTm9kZVJlbmRlcmluZ0NvbnRleHRfaAogCi0jaW5jbHVkZSAiQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5o
IgorCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNjksNyArNzAsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7CiAKICAgICBOb2Rl
KiBtX25vZGU7Ci0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxE
ZXRhaWxzIG1fcGFyZW50RGV0YWlsczsKKyAgICBDb250YWluZXJOb2RlKiBtX3JlbmRlcmluZ1Bh
cmVudDsKKyAgICBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzIG1fcGFyZW50
RGV0YWlsczsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CiAgICAgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkKiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKICAgICBBdG9taWNTdHJpbmcgbV9m
bG93VGhyZWFkOwpAQCAtODIsNyArODQsNyBAQCBpbmxpbmUgTm9kZSogTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6Om5vZGUoKSBjb25zdAogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fcGFyZW50RGV0YWlscy5ub2RlKCk7CisgICAgcmV0dXJuIG1fcmVuZGVyaW5nUGFy
ZW50OwogfQogCiBpbmxpbmUgYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cmVzZXRTdHlsZUlu
aGVyaXRhbmNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJh
dmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzlhZmFjMTY5NjIyNTY5MWJmYTc3NTkwNmMwMGQwYzNj
ODA5NjhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgorCisjaW5jbHVkZSAiQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIHsKKwordm9p
ZCBQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCkKK3sKKyAgICBpZiAoIW1faW5zZXJ0aW9uUG9pbnQpIHsKKyAgICAg
ICAgbV9pbnNlcnRpb25Qb2ludCA9IGluc2VydGlvblBvaW50OworICAgICAgICBtX3Jlc2V0U3R5
bGVJbmhlcml0YW5jZSAgPSBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB8fCBpbnNlcnRpb25Qb2lu
dC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7CisgICAgfQorfQorCit2b2lkIFBhcmVudERldGFp
bHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiByb290KQoreworICAg
IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlIHx8IHJv
b3QtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOworfQorCitDb250YWluZXJOb2RlKiBwYXJlbnRT
bG93KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCit7CisgICAgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OkNyb3NzVXBwZXJCb3VuZGFyeSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDYW5TdGFy
dEZyb21TaGFkb3dCb3VuZGFyeSk7CisgICAgQ29udGFpbmVyTm9kZSogZm91bmQgPSB0b0NvbnRh
aW5lck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFyZW50KHdhbGtlci5nZXQoKSwgZGV0YWlscykpOwor
ICAgIHJldHVybiBkZXRhaWxzLT5vdXRPZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7Cit9CisK
K05vZGUqIG5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQmVmb3JlUHNl
dWRvRWxlbWVudCgpKSB7CisgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKKyAgICAgICAgd2Fsa2Vy
LmZpcnN0Q2hpbGQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgd2Fsa2VyLm5leHRTaWJsaW5nKCk7
CisKKyAgICBpZiAod2Fsa2VyLmdldCgpIHx8IG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkp
CisgICAgICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisKKyAgICBOb2RlKiBwYXJlbnQgPSB3YWxr
ZXIudHJhdmVyc2VQYXJlbnQobm9kZSk7CisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxl
bWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpLT5hZnRlclBzZXVk
b0VsZW1lbnQoKTsKKworICAgIHJldHVybiAwOworfQorCitOb2RlKiBwcmV2aW91c1NpYmxpbmdT
bG93KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdh
bGtlcihub2RlKTsKKyAgICBpZiAobm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkgeworICAg
ICAgICB3YWxrZXIucGFyZW50KCk7CisgICAgICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgd2Fsa2VyLnByZXZpb3VzU2libGluZygpOworCisgICAgaWYgKHdhbGtl
ci5nZXQoKSB8fCBub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IHdhbGtlci5nZXQoKTsKKworICAgIE5vZGUqIHBhcmVudCA9IHdhbGtlci50cmF2ZXJzZVBhcmVu
dChub2RlKTsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQorICAg
ICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKKwor
ICAgIHJldHVybiAwOworfQorCit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDA0M2RlMjdmMDkzNGNl
ZTU5NWQxMjRjNTRhM2RhNGM4ODBiNzllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbF9oCisjZGVmaW5lIE5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWxfaAorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEluc2VydGlvblBvaW50OworCituYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7
CisKK2NsYXNzIFBhcmVudERldGFpbHMgeworcHVibGljOgorICAgIFBhcmVudERldGFpbHMoKQor
ICAgICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoMCkKKyAgICAgICAgLCBtX3Jlc2V0U3R5bGVJbmhl
cml0YW5jZShmYWxzZSkKKyAgICAgICAgLCBtX291dE9mQ29tcG9zaXRpb24oZmFsc2UpCisgICAg
eyB9CisKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVy
biBtX2luc2VydGlvblBvaW50OyB9CisgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsgfQorICAgIGJvb2wgb3V0T2ZD
b21wb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZDb21wb3NpdGlvbjsgfQorCisgICAg
dm9pZCBkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50Kik7CisgICAgdm9p
ZCBkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCopOworICAgIHZvaWQgY2hp
bGRXYXNPdXRPZkNvbXBvc2l0aW9uKCkgeyBtX291dE9mQ29tcG9zaXRpb24gPSB0cnVlOyB9CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFyZW50RGV0YWlscyYgb3RoZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25Qb2ludCA9PSBvdGhlci5tX2luc2VydGlvblBvaW50
CisgICAgICAgICAgICAmJiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA9PSBvdGhlci5tX3Jlc2V0
U3R5bGVJbmhlcml0YW5jZQorICAgICAgICAgICAgJiYgbV9vdXRPZkNvbXBvc2l0aW9uID09IG90
aGVyLm1fb3V0T2ZDb21wb3NpdGlvbjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW5zZXJ0aW9u
UG9pbnQqIG1faW5zZXJ0aW9uUG9pbnQ7CisgICAgYm9vbCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5j
ZTsKKyAgICBib29sIG1fb3V0T2ZDb21wb3NpdGlvbjsKK307CisKK0NvbnRhaW5lck5vZGUqIHBh
cmVudChjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyopOworQ29udGFpbmVyTm9kZSogcGFyZW50
U2xvdyhjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyopOworTm9kZSogbmV4dFNpYmxpbmcoY29u
c3QgTm9kZSopOworTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqKTsKK05vZGUqIHBy
ZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7CitOb2RlKiBwcmV2aW91c1NpYmxpbmdTbG93KGNv
bnN0IE5vZGUqKTsKKworCitpbmxpbmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUq
IG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCit7CisgICAgaWYgKCFub2RlLT5uZWVkc1No
YWRvd1RyZWVXYWxrZXIoKSkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgUGFyZW50RGV0YWls
cyBzbG93RGV0YWlsczsKKyAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9PSBwYXJl
bnRTbG93KG5vZGUsICZzbG93RGV0YWlscykpOworICAgICAgICBBU1NFUlQoc2xvd0RldGFpbHMg
PT0gKmRldGFpbHMpOworI2VuZGlmCisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlR3Vh
cmFudGVlZEhvc3RGcmVlKCk7CisgICAgfQorCisgICAgcmV0dXJuIHBhcmVudFNsb3cobm9kZSwg
ZGV0YWlscyk7Cit9CisKK2lubGluZSBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlKiBub2Rl
KQoreworICAgIGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkpIHsKKyAgICAgICAg
QVNTRVJUKG5leHRTaWJsaW5nU2xvdyhub2RlKSA9PSBub2RlLT5uZXh0U2libGluZygpKTsKKyAg
ICAgICAgcmV0dXJuIG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIG5l
eHRTaWJsaW5nU2xvdyhub2RlKTsKK30KKworaW5saW5lIE5vZGUqIHByZXZpb3VzU2libGluZyhj
b25zdCBOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVlV2Fsa2Vy
KCkpIHsKKyAgICAgICAgQVNTRVJUKHByZXZpb3VzU2libGluZ1Nsb3cobm9kZSkgPT0gbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCkpOworICAgICAgICByZXR1cm4gbm9kZS0+cHJldmlvdXNTaWJsaW5n
KCk7CisgICAgfQorCisgICAgcmV0dXJuIHByZXZpb3VzU2libGluZ1Nsb3cobm9kZSk7Cit9CisK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmNwcAppbmRleCBjNzdhMjk1NDQwNTA5YzQ0OTY3N2U0MDYwMzIwOGQzZmRhMGFi
ZmQ5Li5hOGU1ODkxN2FhMzZkMDExMjcyMGY4ZjVkOGJmMDhjYWMyNWUxNzM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBAIFBzZXVkb0VsZW1lbnQ6
OlBzZXVkb0VsZW1lbnQoRWxlbWVudCogcGFyZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKICAgICA6
IEVsZW1lbnQocHNldWRvRWxlbWVudFRhZ05hbWUoKSwgcGFyZW50LT5kb2N1bWVudCgpLCBDcmVh
dGVQc2V1ZG9FbGVtZW50KQogICAgICwgbV9wc2V1ZG9JZChwc2V1ZG9JZCkKIHsKKyAgICBBU1NF
UlQocHNldWRvSWQgIT0gTk9QU0VVRE8pOwogICAgIEFTU0VSVChwYXJlbnQtPmluRG9jdW1lbnQo
KSk7CiAgICAgc2V0UGFyZW50T3JIb3N0Tm9kZShwYXJlbnQpOwogICAgIHNldEhhc0N1c3RvbUNh
bGxiYWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IGUxNzhlNWY2NWFiZmY5MWY5YjBjZGQ0MGU4
NTBjN2ZkZjYxNTkyZWQuLmI1YmRhYmIwOWQ3YmY3YzJiM2Q5NjFjMGY3OWMyNjE1MTkwMDhkMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVy
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogI2lmIEVOQUJMRShTVkcp
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5kZXggZDcxMDIxYmI4MWQwMzgyN2FiYjVkYWRkYTg3
NWE5Yzg4ZDg2OWQ0Yy4uOWNiNDZmMmE4MzgzNzg4YWYwMjgxMmRiMThiZDNkMTVhNjcwNGUzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJN
ZW51TGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRl
eCAzOTg4OGQ4ZDYxZGU1NzIyNTBiODIwM2ZhMGFiODI5OTdjMjRiYjU5Li5mNTEwOTY4NDA3ZWJi
OTk5NGVkOTg4Y2FmNWYxYmUwN2M1NmZmMGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9n
cmVzc0VsZW1lbnQuY3BwCmluZGV4IGVhNWY0MDc3YzFhZGU0NzQ0YThjMjczMWE5YWIwZGU4MjQ0
NmEyZWEuLjEzNjc1NWJlN2E3NmZjMmM5N2I2MTk3ZDQwMjFlYjAxYzZiOTdiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAtMjMsMTIgKzIzLDEz
IEBACiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKICNpbmNsdWRlICJBdHRyaWJ1dGUu
aCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAi
UmVuZGVyUHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNldC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggMjMyYjU2M2Ux
MjY3MDQzYWI1YTUyYmU4NjVjMzY4ZGUwNzNjNWYxZC4uYWVkYWMxZDBmN2QxMGY2ZDg0ZTEzNjBl
ODEwMDMzOGE5MGM4MTJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRp
b25Qb2ludC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7Ci0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJ
bnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiBwcml2
YXRlOgogCiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBtX2Rpc3RyaWJ1dGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179214</attachid>
            <date>2012-12-13 00:09:26 -0800</date>
            <delta_ts>2012-12-13 21:06:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104332-20121213170646.patch</filename>
            <type>text/plain</type>
            <size>46228</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5NjEyZDNkOWU4ZTdl
MmEwOTRmMTc3OWJjNDZjYWQxMWExMjYzMS4uMDM3YTRjMmNjZDJhMGZhNWI3MzgxZTZhNmZlMWU1
NTUwNDdmNGQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0xMi0xMiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgTm9kZVJlbmRlcmlu
Z0NvbnRleHQgaXMgc2xvdyBkdWUgdG8gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlUmVuZGVyaW5nQ29u
dGV4dCBoYXMgc29tZSBzbG93bmVzcyBkdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YKKyAgICAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHRoYXQgTlJDIHJlbGllcyBvbi4gVGhpcyBjaGFuZ2UK
KyAgICAgICAgY3JlYXRlcyBzb21lIGZhc3QgcGF0aHMgdG8gYWRkcmVzcyBzdWNoIHNsb3duZXNz
LgorCisgICAgICAgID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCBtb2R1bGU6CisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIG5hbWVzcGFjZSwg
YSBzaXN0ZXIKKyAgICAgICAgb2YgTm9kZVRyYXZlcnNhbC4gTlJUIGNvbnNpc3RzIG9mIGEgc2V0
IG9mIHRyZWUgdHJhdmVyc2FsCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGlzIHJlc3BvbnNpYmxl
IGZvciB0cmF2ZXJzYWwgaW4gTlJDLiAgQmVmb3JlIHRoaXMKKyAgICAgICAgY2hhZ25lLCBOUkMg
ZGlyZWN0bHkgdXNlZCBDU1RXLiBUaGlzIE5SVCBtb2R1bGUgaGlkZXMgYW5kIG5hcnJvd3MKKyAg
ICAgICAgdGhlIHVzYWdlIG9mIENTVFcuCisKKyAgICAgICAgLSBUcmF2ZXJzYWxzIHByb3ZpZGVk
IGJ5IE5SVCBoYXZlIGZhc3QgcGF0aHMuIEluIG1hbnkgY2FzZSwgc3VjaCB0cmF2ZXJzYWxzCisg
ICAgICAgICAgZG9lc24ndCBuZWVkIHRvIHVzZSBDU1RXIGFuZCBqdXN0IGdvZXMgbmVpZ2hib3Jp
bmcgbm9kZXMgaW4gYSBwbGFpbiBET00gd2F5LgorICAgICAgICAtIEl0IGFsc28gaGFuZGxlcyBO
UkMgc3BlY2lmaWMgdHJhdmVyc2FsIGNvbmNlcm5zIGxpa2UgcHNldWRvIGVsZW1lbnRzLgorICAg
ICAgICAgIENTVFc6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSBhbmQgQ1NUVzo6cHNldWRvQXdh
cmVQcmV2aW91c1NpYmxpbmcoKSBhcmUKKyAgICAgICAgICBtZXJnZWQgaW50byB0aGlzIG1vZHVs
ZS4KKyAgICAgICAgLSBDU1RXOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIGlzIG1vdmVkIGFuZCBy
ZW5hbWVkIHRvCisgICAgICAgICAgTlJUOjpQYXJlbnREZXRhaWxzIHdpdGggc21hbGwgbW9kaWZp
Y2F0aW9uLiBUaGlzIGlzIGEgcHVyZQorICAgICAgICAgIHJlZmFjdG9yaW5nOiBBcyB0aGUgbmFt
ZSBpbXBsaWVzLCBUaGlzIGNsYXNzIGlzIHVzZWQgb25seSBieSBOUkMKKyAgICAgICAgICBhbmQg
dXNlZCBkdXJpbmcgYSB0cmF2ZXJzYWwgdGhlcmUuCisKKyAgICAgICAgTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbCBpcyBhbiBpc29sYXRpb24gbGF5ZXIgYmV0d2VlbiBnZW5lcmljIERPTSBhbmQgQ1NU
Vy4gVGhpcyBoaWRlcyBDU1RXCisgICAgICAgIGJlaGluZCB0aGUgd2FsbCBhbmQgd2lsbCBoZWxw
IGZ1cnRoZXIgcmVkdWN0aW9uIG9mIGl0cyB1c2FnZS4KKworICAgICAgICA9IE5vZGU6Ok5lZWRz
U2hhZG93VHJlZVdhbGtlckZsYWcgZmxhZzoKKworICAgICAgICBOUlQgZmFzdCBwYXRoIGlzIGVu
YWJsZWQgYnkgbmV3bHkgaW50cm9kdWNlZCBOZWVkc1NoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAg
bm9kZSBmbGFnLiBFYWNoIERPTSBub2RlIGlzIG5vdyBtYXJrZCBhcyBOZWVkc1NoYWRvd1RyZWVX
YWxrZXIgaWYKKyAgICAgICAgaXQgcmVxdWlyZXMgbm9uLXRyaXZpYWwgdHJhdmVyc2FsIGluIE5S
VCB3aGljaCB1c2VzIENTVFcuIFRoaXMKKyAgICAgICAgbWVhbnMgdGhhdCBlYWNoIG5vZGUgY2Fu
IGdvIGZhc3QgcGF0aCB1bmxlc3MgaXQgaXMgbWFya2VkIHdpdGggdGhpcyBmbGFnLgorCisgICAg
ICAgIEEgbm9kZSBpcyBtYXJrZWQgYXMgaXQgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyIGlmOgorCisg
ICAgICAgIC0gVGhlIG5vZGUgaXMgYSBzaGFkb3cgYm91bmRhcnkgbGlrZSBJbnNlcnRpb25Qb2lu
dCBvciBTaGFkb3dSb290LAorICAgICAgICAtIFRoZSBub2RlIGhhcyBwc2V1ZG8gZWxlbWVudHMg
bGlrZSBnZW5lcmF0ZWQgY29udGVudCwKKyAgICAgICAgLSBUaGUgbm9kZSBpcyBhIHBzZXVkbyBl
bGVtZW50IG9yCisKKyAgICAgICAgVGhpcyBjcml0ZXJpYSBjcml0ZXJpYSBpcyBkZWZpbmVkIGlu
IE5vZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKS4gVGhlIG5vZGUgYWN0dWFsbHkgbmVl
ZHMKKyAgICAgICAgdGhlIHdhbGtlciBpZiB0aGUgbm9kZSBvciBpdHMgcGFyZW50IGlzIG1hcmtl
ZCB3aXRoIHRoaXMgZmxhZy4KKworICAgICAgICBUaGUgb3JpZ2luYWwgaWRlYSBvZiB0aGlzIGNo
YW5nZSB3YXMgZGVtb25zdHJhdGVkIGJ5IEFudHRpIEtvaXZpc3RvIG9uIGJ1ZyAxMDMyMDggYW5k
IGJ1ZyAxMDQ1MDcuCisgICAgICAgIFRoaXMgY2hhZ25lIGhhcyAyLTMlIHNwZWVkdXAgb24gRHJv
bWFlby9kb20tbW9kaWZ5L2lubmVySFRNTCBvbiBBcHBsZSBNYWMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHA6CisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oOgorICAgICAg
ICAoQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKTogTW92ZSBzb21lIHBhcnQgdG8gTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbAorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXIpOiBBZGRlZC4gVGhpcyBpcyBsb2Nh
dGVkIGhlcmUgc2luY2UgaXQgcmVmZXJzIENvbnRhaW5lck5vZGUgZGVmaW5pdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9ET01BbGxJbk9uZS5jcHA6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dXBkYXRlUHNldWRv
RWxlbWVudCk6IFJlZmFjdG9yZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNQc2V1
ZG9FbGVtZW50cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cHNldWRvRWxl
bWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0UHNldWRvRWxlbWVu
dCk6IFJlZmFjdG9yZWQgYW5kIGFkZGVkIGEgZmxhZyB1cGRhdGUgbG9naWMuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpiZWZvcmVQc2V1ZG9FbGVtZW50KTogUmVmYWN0b3Jl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFmdGVyUHNldWRvRWxlbWVudCk6IFJlZmFj
dG9yZWQuCisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpoYXNQc2V1ZG9FbGVtZW50cyk6IEZhY3RvcmVkIG91dC4KKyAg
ICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
U2hhZG93OjphZGRTaGFkb3dSb290KTogQWRkZWQgYSBmbGFnIHVwZGF0ZSBsb2dpYy4KKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpuZWVkc1NoYWRvd1Ry
ZWVXYWxrZXJTbG93KTogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmlzSW5zZXJ0aW9uUG9pbnROb2RlKTogQWRkZWQuCisgICAgICAgIChOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzSW5zZXJ0aW9uUG9pbnQpOiBDaGFuZ2VkIHRv
IHVzZSBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
c2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlc2V0
TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwOiBBZG9wdGVkIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuCisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKToK
KyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaDogRGl0dG8uCisgICAgICAgIChO
b2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKToKKyAgICAgICAgKiBkb20vTm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChOb2RlUmVuZGVyaW5nVHJhdmVyc2FsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQp
OiBNb3ZlZCBmcm9tIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6ZGlkVHJhdmVyc2VTaGFkb3dS
b290KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpw
YXJlbnRTbG93KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsOjpuZXh0U2libGluZ1Nsb3cpOiBEaXR0by4gVGhlIG9yaWdpbmFsIHdhcyBwc2V1ZG9Bd2Fy
ZU5leHRTaWJsaW5nLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6
cHJldmlvdXNTaWJsaW5nU2xvdyk6IERpdHRvLiBUaGUgb3JpZ2luYWwgd2FzIHBzZXVkb0F3YXJl
UHJldmlvdXNTaWJsaW5nLgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsKToKKyAgICAgICAgKFBhcmVudERldGFpbHMpOiBNb3ZlZCBmcm9tIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlci4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBh
cmVudERldGFpbHM6OlBhcmVudERldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6aW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6cmVzZXRTdHls
ZUluaGVyaXRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6
OlBhcmVudERldGFpbHM6Om91dE9mQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6Y2hpbGRXYXNPdXRPZkNvbXBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERl
dGFpbHM6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6
Om5leHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6
OnByZXZpb3VzU2libGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6UHNldWRvRWxlbWVudCk6IEFkZGVkIGFuIGFz
c2VydGlvbi4KKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3B0
R3JvdXBFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0luc2VydGlvblBvaW50Lmg6CisKIDIwMTItMTItMTIgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggdGhlIEdUSysgZGVi
dWcgYnVsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTg5ZmYyZTczZDk2ZGFlYTBhMzk1NDkw
MmIwMzE4NDJhMDMxNTM4NC4uZTE3ZGMwMDMyMzFhYmEwZGFkYTYyZTRkZjUzZTY1YmUzNjFhMTNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExOTUsNiArMTE5NSw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICBkb20vTm9kZUl0ZXJhdG9yLmNwcAogICAgIGRvbS9Ob2RlUmFyZURhdGEu
Y3BwCiAgICAgZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorICAgIGRvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmNwcAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmNwcAogICAgIGRvbS9Ob3Rh
dGlvbi5jcHAKICAgICBkb20vT3ZlcmZsb3dFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCmluZGV4IDdiYmQ2Mzc0N2UxYTAzNzk5Yzk5NmQzYjUwYjcyODNhNDgzN2FmNDIuLmQ3
NDgyMzhlMzliODQ2NjQzOTZkMGZmNDA0NWE5ZWZhNGU5YmU1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMjg4MCw2ICsyODgwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
aCBcCisJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBcCisJU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmggXAogICAgIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
VHJhdmVyc2FsLmNwcCBcCiAgICAgU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2ZXJzYWwuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCA1MWExNGYzOGI4NWFkMTFjM2FhN2MwM2M3YWI3NDQwYjZjNGFiNjZh
Li5hZTFlMDE0ODljOGMyZmE2ZjlkNTgyZDA3MGJiNWFkZTI4YmJhODNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTQyMCw2ICs0MjAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vTm9kZUl0ZXJhdG9yLmNw
cCBcCiAgICAgZG9tL05vZGVSYXJlRGF0YS5jcHAgXAogICAgIGRvbS9Ob2RlUmVuZGVyaW5nQ29u
dGV4dC5jcHAgXAorICAgIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9t
L05vZGVUcmF2ZXJzYWwuY3BwIFwKICAgICBkb20vTm90YXRpb24uY3BwIFwKICAgICBkb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCkBAIC0xNjA0LDYgKzE2MDUsNyBAQCBIRUFERVJTICs9
IFwKICAgICBkb20vTm9kZUl0ZXJhdG9yLmggXAogICAgIGRvbS9Ob2RlUmFyZURhdGEuaCBcCiAg
ICAgZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggXAorICAgIGRvbS9Ob2RlUmVuZGVyaW5nVHJh
dmVyc2FsLmggXAogICAgIGRvbS9Ob2RlVHJhdmVyc2FsLmggXAogICAgIGRvbS9Ob3RhdGlvbi5o
IFwKICAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDY5MGQxODgxNjRiNDU5YzM5ZDRhMTNlMWIzZjM3NjJlOTU4NzEwZTAuLjAwNzNmZjIzY2FhOTQ1
MTliNWYwMDYzY2JjNzNjMDQ1Y2VmOWQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4NDUsNiAr
Mjg0NSw4IEBACiAgICAgICAgICAgICAnZG9tL05vZGVSYXJlRGF0YS5oJywKICAgICAgICAgICAg
ICdkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwJywKICAgICAgICAgICAgICdkb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuaCcsCisgICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuY3BwJywKKyAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oJywKICAg
ICAgICAgICAgICdkb20vTm9kZVJlbmRlclN0eWxlLmgnLAogICAgICAgICAgICAgJ2RvbS9Ob2Rl
VHJhdmVyc2FsLmNwcCcsCiAgICAgICAgICAgICAnZG9tL05vZGVUcmF2ZXJzYWwuaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NzFiNTIxOTM5NWJjYjcwNzA1OGNkZGVmMDA4MzU0OGI5MzY3ODBiMi4uNzg4YmM2YWY3ZWU1MjVi
OTU2NGMxMzQ3ZDJjZWEwMDU3MjkxODNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg4OCw2ICszODg4LDggQEAKIAkJQTc0
MEI1QTUxNEM5MzVBQjAwQTc3RkE0IC8qIEpTSW50ZXJuYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNEVBNzkxNEM5MzQ4NDAwQzhG
NUJGIC8qIEpTSW50ZXJuYWxTZXR0aW5ncy5oICovOyB9OwogCQlBNzQwQjVBNzE0QzkzNUFGMDBB
NzdGQTQgLyogSlNJbnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjRFQTc4MTRDOTM0ODQwMEM4RjVCRiAvKiBKU0ludGVy
bmFsU2V0dGluZ3MuY3BwICovOyB9OwogCQlBNzRCQjc2QjEzQkRBODYzMDBGRjdCRjAgLyogRXhj
ZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzRCQjc2QTEzQkRBODYzMDBGRjdCRjAgLyogRXhjZXB0aW9uQ29kZVBs
YWNlaG9sZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQTc0RjNFRjMxNjc4QjI0QTAwQjA1QTZFIC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMTFG
MjMxNjc4QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwICovOyB9Owor
CQlBNzRGM0VGNTE2NzhCMjRGMDBCMDVBNkUgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyMTFGMjQxNjc4
QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCAqLzsgfTsKIAkJQTc1RTQ5
NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RTQ5NzQxMDc1MkFDQjAwQzlC
ODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NUU0OTc3MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgKi87IH07CiAJCUE3NUU4Qjg4MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4Qjgw
MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAqLzsgfTsKQEAgLTExMjExLDYgKzExMjEz
LDggQEAKIAkJQTcxODc2MEQwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYWdBY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxl
ck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERyYWdDb250
cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzFBNzBDOTExQUZC
MDIwMDA5ODlENkQgLyogSFRNTE1ldGVyRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gSFRNTE1ldGVyRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3
MjExRjIzMTY3OEE1NDIwMDk1NzQ0NCAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzIxMUYyNDE2NzhBNTQyMDA5NTc0
NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3MjNGNzdBMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI3NjNCRTE2Njg5QkZCMDAyRkNBQ0Ig
LyogVXNlckFjdGlvbkVsZW1lbnRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVXNlckFjdGlvbkVsZW1lbnRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTcyRUEzQkExNTg1Q0Y1NTAwNEZBQTI2IC8qIFJlZkNvdW50ZWRTdXBwbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZkNvdW50ZWRTdXBwbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjEwMCw2ICsyMjEwNCw4IEBACiAJCQkJNjMxODlB
RTIwRTgzQTMzMzAwMDEyRTQxIC8qIE5vZGVSYXJlRGF0YS5oICovLAogCQkJCUE3RjVEOTREMTM4
NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJQTdGNUQ5
NEUxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmggKi8sCisJCQkJQTcy
MTFGMjMxNjc4QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwICovLAor
CQkJCUE3MjExRjI0MTY3OEE1NDIwMDk1NzQ0NCAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgg
Ki8sCiAJCQkJNjNEN0IzMkMwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oICov
LAogCQkJCUU0MzEwNUI3MTY3NTBGMEMwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmNwcCAqLywK
IAkJCQlFNDMxMDVCQTE2NzUwRjE2MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5oICovLApAQCAt
MjQ4MDUsNiArMjQ4MTEsNyBAQAogCQkJCUE4MTg3MjFCMDk3N0QzQzAwMDU4MjZEOSAvKiBOb2Rl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjMxODlBRTMwRTgzQTMzMzAwMDEyRTQxIC8qIE5v
ZGVSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGNUQ5NTAxMzg0RjAyRDAwQTI5QTg3
IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzRGM0VGNTE2
NzhCMjRGMDBCMDVBNkUgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjNEN0IzMkQwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM4MkFBQjQwRDhDMzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5kZXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3RUJFMEExOTQ1RDAwMEE4RUY1RiAvKiBOb3RhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODEyNSw2ICsyODEzMiw3IEBACiAJCQkJODU0RkU3MzIw
QTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODU0RkU3MzQwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVJdGVyYXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0Y1RDk0RjEzODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTc0RjNFRjMxNjc4QjI0QTAwQjA1QTZFIC8q
IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTdFQkYw
QTE5NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzNTAz
Q0M3MTAxN0ExQjEwMDNCNDdFMSAvKiBOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5jcHAKaW5kZXggZjAwZjJlZmI0OWExYTRlMzcwYzNhZmQ5OTE4ZWFjMGIxN2Q5YjY5YS4u
MWQwM2M1NDdlMGI0OTg3ZTI2NzIyYjkzOTlkNmY1YjBkNWZkMmIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTEsMyArMSw0IEBA
CisKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC03MCwyNSArNzEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhbkJl
RGlzdHJpYnV0ZWQoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlu
bGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWls
czo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQpCi17Ci0gICAgaWYgKCFtX2luc2VydGlvblBvaW50KSB7Ci0gICAgICAgIG1faW5zZXJ0aW9u
UG9pbnQgPSBpbnNlcnRpb25Qb2ludDsKLSAgICAgICAgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2Ug
ID0gbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgfHwgaW5zZXJ0aW9uUG9pbnQtPnJlc2V0U3R5bGVJ
bmhlcml0YW5jZSgpOwotICAgIH0KLX0KLQotaW5saW5lIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzOjpkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29u
c3QgU2hhZG93Um9vdCogcm9vdCkKLXsKLSAgICBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSAgPSBt
X3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB8fCByb290LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsK
LX0KLQotaW5saW5lIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJz
YWxEZXRhaWxzOjpkaWRGaW5kTm9kZShDb250YWluZXJOb2RlKiBub2RlKQotewotICAgIGlmICgh
bV9vdXRPZkNvbXBvc2l0aW9uKQotICAgICAgICBtX25vZGUgPSBub2RlOwotfQotCiBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGls
ZChjb25zdCBOb2RlKiBub2RlLCBQb2xpY3kgcG9saWN5KQogewogICAgIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciB3YWxrZXIobm9kZSwgcG9saWN5KTsKQEAgLTk2LDE0ICs3OCw2IEBAIENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlciBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZyb21GaXJzdENo
aWxkKGNvbnN0IE5vZGUqIG5vCiAgICAgcmV0dXJuIHdhbGtlcjsKIH0KIAotdm9pZCBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXI6OmZpbmRQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50VHJh
dmVyc2FsRGV0YWlscyogZGV0YWlscykKLXsKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIg
d2Fsa2VyKG5vZGUsIENyb3NzVXBwZXJCb3VuZGFyeSwgQ2FuU3RhcnRGcm9tU2hhZG93Qm91bmRh
cnkpOwotICAgIENvbnRhaW5lck5vZGUqIGZvdW5kID0gdG9Db250YWluZXJOb2RlKHdhbGtlci50
cmF2ZXJzZVBhcmVudCh3YWxrZXIuZ2V0KCksIGRldGFpbHMpKTsKLSAgICBpZiAoZm91bmQpCi0g
ICAgICAgIGRldGFpbHMtPmRpZEZpbmROb2RlKGZvdW5kKTsKLX0KLQogdm9pZCBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OmZpcnN0Q2hpbGQoKQogewogICAgIGFzc2VydFByZWNvbmRpdGlvbigp
OwpAQCAtMTgzLDQ2ICsxNTcsNiBAQCB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cHJl
dmlvdXNTaWJsaW5nKCkKICAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7CiB9CiAKLXZvaWQgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCkKLXsKLSAgICBh
c3NlcnRQcmVjb25kaXRpb24oKTsKLQotICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0K
LSAgICBpZiAobm9kZS0+aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG1fbm9kZSA9
IHRyYXZlcnNlRmlyc3RDaGlsZCh0cmF2ZXJzZVBhcmVudChub2RlKSk7Ci0gICAgZWxzZQotICAg
ICAgICBtX25vZGUgPSB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUs
IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQpOwotCi0gICAgaWYgKCFtX25vZGUgJiYgIW5vZGUt
PmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpIHsKLSAgICAgICAgTm9kZSogcGFyZW50ID0gdHJhdmVy
c2VQYXJlbnQobm9kZSk7Ci0gICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0VsZW1lbnRO
b2RlKCkpCi0gICAgICAgICAgICBtX25vZGUgPSB0b0VsZW1lbnQocGFyZW50KS0+YWZ0ZXJQc2V1
ZG9FbGVtZW50KCk7Ci0gICAgfQotCi0gICAgYXNzZXJ0UG9zdGNvbmRpdGlvbigpOwotfQotCi12
b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cHNldWRvQXdhcmVQcmV2aW91c1NpYmxpbmco
KQotewotICAgIGFzc2VydFByZWNvbmRpdGlvbigpOwotCi0gICAgY29uc3QgTm9kZSogbm9kZSA9
IG1fbm9kZTsKLQotICAgIGlmIChub2RlLT5pc0FmdGVyUHNldWRvRWxlbWVudCgpKQotICAgICAg
ICBtX25vZGUgPSB0cmF2ZXJzZUxhc3RDaGlsZCh0cmF2ZXJzZVBhcmVudChub2RlKSk7Ci0gICAg
ZWxzZQotICAgICAgICBtX25vZGUgPSB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBv
aW50KG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsKLQotICAgIGlmICghbV9ub2Rl
ICYmICFub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBOb2RlKiBwYXJl
bnQgPSB0cmF2ZXJzZVBhcmVudChub2RlKTsKLSAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQt
PmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIG1fbm9kZSA9IHRvRWxlbWVudChwYXJlbnQp
LT5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7Ci0gICAgfQotCi0gICAgYXNzZXJ0UG9zdGNvbmRpdGlv
bigpOwotfQotCiBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlRGlzdHJp
YnV0ZWROb2Rlcyhjb25zdCBOb2RlKiBub2RlLCBjb25zdCBJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnQsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgZm9yIChjb25z
dCBOb2RlKiBuZXh0ID0gbm9kZTsgbmV4dDsgbmV4dCA9IChkaXJlY3Rpb24gPT0gVHJhdmVyc2Fs
RGlyZWN0aW9uRm9yd2FyZCA/IGluc2VydGlvblBvaW50LT5uZXh0VG8obmV4dCkgOiBpbnNlcnRp
b25Qb2ludC0+cHJldmlvdXNUbyhuZXh0KSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuaAppbmRleCA0YjZmZjk1NmE0NTE5YjhkNjAyNDgzMWYyNzU4
OGE2NGM0YWE5ZDAyLi5iODA5YTI2YWM0OTkyYTg1NWFlNGViMjk0MDNmODEzOTI3YjUzYjEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjZGVmaW5lIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcl9oCiAKICNpbmNs
dWRlICJJbnNlcnRpb25Qb2ludC5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwu
aCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5
LDYgKzQwLDggQEAgY2xhc3MgU2hhZG93Um9vdDsKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MjcwMgogY2xhc3MgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHsK
IHB1YmxpYzoKKyAgICB0eXBlZGVmIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFp
bHMgUGFyZW50VHJhdmVyc2FsRGV0YWlsczsKKwogICAgIGVudW0gUG9saWN5IHsKICAgICAgICAg
Q3Jvc3NVcHBlckJvdW5kYXJ5LAogICAgICAgICBEb05vdENyb3NzVXBwZXJCb3VuZGFyeSwKQEAg
LTQ5LDM4ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIENhbm5vdFN0YXJ0RnJvbVNoYWRvd0Jv
dW5kYXJ5CiAgICAgfTsKIAotICAgIGNsYXNzIFBhcmVudFRyYXZlcnNhbERldGFpbHMgewotICAg
IHB1YmxpYzoKLSAgICAgICAgUGFyZW50VHJhdmVyc2FsRGV0YWlscygpCi0gICAgICAgICAgICA6
IG1fbm9kZSgwKQotICAgICAgICAgICAgLCBtX2luc2VydGlvblBvaW50KDApCi0gICAgICAgICAg
ICAsIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlKGZhbHNlKQotICAgICAgICAgICAgLCBtX291dE9m
Q29tcG9zaXRpb24oZmFsc2UpCi0gICAgICAgIHsgfQotCi0gICAgICAgIENvbnRhaW5lck5vZGUq
IG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KLSAgICAgICAgSW5zZXJ0aW9uUG9pbnQq
IGluc2VydGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludDsgfQotICAg
ICAgICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRT
dHlsZUluaGVyaXRhbmNlOyB9Ci0gICAgICAgIGJvb2wgb3V0T2ZDb21wb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3V0T2ZDb21wb3NpdGlvbjsgfQotCi0gICAgICAgIHZvaWQgZGlkRmluZE5v
ZGUoQ29udGFpbmVyTm9kZSopOwotICAgICAgICB2b2lkIGRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9p
bnQoSW5zZXJ0aW9uUG9pbnQqKTsKLSAgICAgICAgdm9pZCBkaWRUcmF2ZXJzZVNoYWRvd1Jvb3Qo
Y29uc3QgU2hhZG93Um9vdCopOwotICAgICAgICB2b2lkIGNoaWxkV2FzT3V0T2ZDb21wb3NpdGlv
bigpIHsgbV9vdXRPZkNvbXBvc2l0aW9uID0gdHJ1ZTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgQ29udGFpbmVyTm9kZSogbV9ub2RlOwotICAgICAgICBJbnNlcnRpb25Qb2ludCogbV9pbnNl
cnRpb25Qb2ludDsKLSAgICAgICAgYm9vbCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsKLSAgICAg
ICAgYm9vbCBtX291dE9mQ29tcG9zaXRpb247Ci0gICAgfTsKLQogICAgIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcihjb25zdCBOb2RlKiwgUG9saWN5ID0gQ3Jvc3NVcHBlckJvdW5kYXJ5LCBTdGFy
dFBvbGljeSA9IENhbm5vdFN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsKIAogICAgIC8vIEZvciBh
IGNvbW1vbiB1c2UgY2FzZSBzdWNoIGFzOgogICAgIC8vIGZvciAoQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZnJvbUZpcnN0Q2hpbGQo
bm9kZSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLm5leHRTaWJsaW5nKCkpCiAgICAgc3RhdGljIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlciBmcm9tRmlyc3RDaGlsZChjb25zdCBOb2RlKiwgUG9saWN5
ID0gQ3Jvc3NVcHBlckJvdW5kYXJ5KTsKLSAgICBzdGF0aWMgdm9pZCBmaW5kUGFyZW50KGNvbnN0
IE5vZGUqLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKik7CiAKICAgICBOb2RlKiBnZXQoKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihtX25vZGUpOyB9CiAKQEAgLTkwLDE0ICs2Niwx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBuZXh0U2libGluZygpOwogICAgIHZvaWQgcHJldmlvdXNT
aWJsaW5nKCk7CiAKLSAgICB2b2lkIHBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKTsKLSAgICB2b2lk
IHBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCk7Ci0KICAgICB2b2lkIHBhcmVudCgpOwogCiAg
ICAgdm9pZCBuZXh0KCk7CiAgICAgdm9pZCBwcmV2aW91cygpOwogCisgICAgTm9kZSogdHJhdmVy
c2VQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudFRyYXZlcnNhbERldGFpbHMqID0gMCkgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqLCBQ
YXJlbnRUcmF2ZXJzYWxEZXRhaWxzKik7CiAKQEAgLTEzNCw3ICsxMDksNiBAQCBwcml2YXRlOgog
ICAgIE5vZGUqIHRyYXZlcnNlRmlyc3RDaGlsZChjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgTm9k
ZSogdHJhdmVyc2VMYXN0Q2hpbGQoY29uc3QgTm9kZSopIGNvbnN0OwogICAgIE5vZGUqIHRyYXZl
cnNlQ2hpbGQoY29uc3QgTm9kZSosIFRyYXZlcnNhbERpcmVjdGlvbikgY29uc3Q7Ci0gICAgTm9k
ZSogdHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudFRyYXZlcnNhbERldGFpbHMqID0g
MCkgY29uc3Q7CiAKICAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0U2libGluZyhjb25zdCBO
b2RlKik7CiAgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKGNvbnN0IE5v
ZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDNlZjVjNzIxMDU5OWViYmI0
MmE1YzI0NzJkNGI0NWYwYWQ1NzkxZDAuLmVhZjhkM2ZhNmNiNDRiMjliNzc5NDVmYjg5Y2ZiYjFj
ZGIxOGU0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtMjY1LDYgKzI2NSwx
NCBAQCBpbmxpbmUgTm9kZSogTm9kZTo6aGlnaGVzdEFuY2VzdG9yKCkgY29uc3QKICAgICByZXR1
cm4gaGlnaGVzdDsKIH0KIAoraW5saW5lIGJvb2wgTm9kZTo6bmVlZHNTaGFkb3dUcmVlV2Fsa2Vy
KCkgY29uc3QKK3sKKyAgICBpZiAoZ2V0RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50
T3JIb3N0Tm9kZSgpOworICAgIHJldHVybiBwYXJlbnQgJiYgcGFyZW50LT5nZXRGbGFnKE5lZWRz
U2hhZG93VHJlZVdhbGtlckZsYWcpOworfQorCiAvLyBUaGlzIGNvbnN0YW50IGNvbnRyb2xzIGhv
dyBtdWNoIGJ1ZmZlciBpcyBpbml0aWFsbHkgYWxsb2NhdGVkCiAvLyBmb3IgYSBOb2RlIFZlY3Rv
ciB0aGF0IGlzIHVzZWQgdG8gc3RvcmUgY2hpbGQgTm9kZXMgb2YgYSBnaXZlbiBOb2RlLgogLy8g
RklYTUU6IE9wdGltaXplIHRoZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9ET01BbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmlu
ZGV4IDkyOTZhMTlhMWNiOWU0YTQ4MDZmMzQzOWI3ODJjMjU3NGIxY2E1NjkuLjU5ZjU5YmViYzE3
OTA4OTA1MzE1YTQ5MmY4ZjBhOTYyMTk3NjBiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25l
LmNwcApAQCAtMTA1LDYgKzEwNSw3IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5j
cHAiCiAjaW5jbHVkZSAiTm9kZUl0ZXJhdG9yLmNwcCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5jcHAiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAiCiAjaW5j
bHVkZSAiTm90YXRpb24uY3BwIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuY3BwIgogI2luY2x1
ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDQ0
OThkMzI5YTViOTllODhmYzlkMTQ3Yjk1MTdkM2JiMDI5MDBiYWYuLjkwYjliZTY3M2MxMzQ1NDQ0
ZTk5Y2FmYTA5MDczYWE4ZDk1YjA0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTIwOTgs
NyArMjA5OCw3IEBAIHZvaWQgRWxlbWVudDo6bm9ybWFsaXplQXR0cmlidXRlcygpCiAKIHZvaWQg
RWxlbWVudDo6dXBkYXRlUHNldWRvRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG9JZCwgU3R5bGVDaGFu
Z2UgY2hhbmdlKQogewotICAgIFBzZXVkb0VsZW1lbnQqIGV4aXN0aW5nID0gaGFzUmFyZURhdGEo
KSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KHBzZXVkb0lkKSA6IDA7CisgICAg
UHNldWRvRWxlbWVudCogZXhpc3RpbmcgPSBwc2V1ZG9FbGVtZW50KHBzZXVkb0lkKTsKICAgICBp
ZiAoZXhpc3RpbmcpIHsKICAgICAgICAgLy8gUHNldWRvRWxlbWVudCBzdHlsZXMgaGFuZyBvZmYg
dGhlaXIgcGFyZW50IGVsZW1lbnQncyBzdHlsZSBzbyBpZiB3ZSBuZWVkZWQKICAgICAgICAgLy8g
YSBzdHlsZSByZWNhbGMgd2Ugc2hvdWxkIEZvcmNlIG9uZSBvbiB0aGUgcHNldWRvLgpAQCAtMjEw
OSwxMCArMjEwOSwxMCBAQCB2b2lkIEVsZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoUHNldWRv
SWQgcHNldWRvSWQsIFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICAgICAgLy8gd2hlbiBSZW5kZXJP
YmplY3Q6OmlzQ2hpbGRBbGxvd2VkIG9uIG91ciBwYXJlbnQgcmV0dXJucyBmYWxzZSBmb3IgdGhl
CiAgICAgICAgIC8vIFBzZXVkb0VsZW1lbnQncyByZW5kZXJlciBmb3IgZWFjaCBzdHlsZSByZWNh
bGMuCiAgICAgICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcHNldWRvRWxlbWVudFJlbmRlcmVySXNO
ZWVkZWQocmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQpKSkKLSAgICAg
ICAgICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCAwKTsK
KyAgICAgICAgICAgIHNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIDApOwogICAgIH0gZWxzZSBp
ZiAoUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVQc2V1ZG9FbGVtZW50SWZO
ZWVkZWQocHNldWRvSWQpKSB7CiAgICAgICAgIGVsZW1lbnQtPmF0dGFjaCgpOwotICAgICAgICBl
bnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxlbWVu
dC5yZWxlYXNlKCkpOworICAgICAgICBzZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVtZW50
LnJlbGVhc2UoKSk7CiAgICAgfQogfQogCkBAIC0yMTMzLDE2ICsyMTMzLDIzIEBAIFBhc3NSZWZQ
dHI8UHNldWRvRWxlbWVudD4gRWxlbWVudDo6Y3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVkKFBz
ZXVkb0lkIHBzZXVkb0lkCiAgICAgcmV0dXJuIFBzZXVkb0VsZW1lbnQ6OmNyZWF0ZSh0aGlzLCBw
c2V1ZG9JZCk7CiB9CiAKLVBzZXVkb0VsZW1lbnQqIEVsZW1lbnQ6OmJlZm9yZVBzZXVkb0VsZW1l
bnQoKSBjb25zdAorYm9vbCBFbGVtZW50OjpoYXNQc2V1ZG9FbGVtZW50cygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVu
dChCRUZPUkUpIDogMDsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURh
dGEoKS0+aGFzUHNldWRvRWxlbWVudHMoKTsKIH0KIAotUHNldWRvRWxlbWVudCogRWxlbWVudDo6
YWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3QKK1BzZXVkb0VsZW1lbnQqIEVsZW1lbnQ6OnBzZXVk
b0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVE
YXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChBRlRFUikgOiAwOworICAg
IHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQo
cHNldWRvSWQpIDogMDsKIH0KIAordm9pZCBFbGVtZW50OjpzZXRQc2V1ZG9FbGVtZW50KFBzZXVk
b0lkIHBzZXVkb0lkLCBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGVsZW1lbnQpCit7CisgICAg
ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1l
bnQpOworICAgIHJlc2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCk7Cit9CisKKwogLy8gRWxlbWVu
dFRyYXZlcnNhbCBBUEkKIEVsZW1lbnQqIEVsZW1lbnQ6OmZpcnN0RWxlbWVudENoaWxkKCkgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDg0MzUyYzNkMjE2NGQ3NGI1M2YyNGY0YjM3N2Zh
MGJlNjNkYWY3M2MuLjY2YWFkNmU5ZDA4MmI5MzdkZmZhNDVhYmU5ZDEzZDMxODFiMTlmYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaApAQCAtMzY2LDggKzM2NiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblBh
cnNpbmdDaGlsZHJlbigpOwogCi0gICAgUHNldWRvRWxlbWVudCogYmVmb3JlUHNldWRvRWxlbWVu
dCgpIGNvbnN0OwotICAgIFBzZXVkb0VsZW1lbnQqIGFmdGVyUHNldWRvRWxlbWVudCgpIGNvbnN0
OworICAgIGJvb2wgaGFzUHNldWRvRWxlbWVudHMoKSBjb25zdDsKKyAgICBQc2V1ZG9FbGVtZW50
KiBwc2V1ZG9FbGVtZW50KFBzZXVkb0lkKSBjb25zdDsKKyAgICBQc2V1ZG9FbGVtZW50KiBiZWZv
cmVQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gcHNldWRvRWxlbWVudChCRUZPUkUpOyB9
CisgICAgUHNldWRvRWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
cHNldWRvRWxlbWVudChBRlRFUik7IH0KKyAgICBib29sIGNoaWxkTmVlZHNTaGFkb3dXYWxrZXIo
KSBjb25zdDsKKyAgICB2b2lkIGRpZFNoYWRvd1RyZWVBd2FyZUNoaWxkcmVuQ2hhbmdlKCk7CiAK
ICAgICAvLyBFbGVtZW50VHJhdmVyc2FsIEFQSQogICAgIEVsZW1lbnQqIGZpcnN0RWxlbWVudENo
aWxkKCkgY29uc3Q7CkBAIC01MDAsNiArNTA0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAg
ICB2b2lkIHVwZGF0ZVBzZXVkb0VsZW1lbnQoUHNldWRvSWQsIFN0eWxlQ2hhbmdlID0gTm9DaGFu
Z2UpOwogICAgIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4gY3JlYXRlUHNldWRvRWxlbWVudElm
TmVlZGVkKFBzZXVkb0lkKTsKKyAgICB2b2lkIHNldFBzZXVkb0VsZW1lbnQoUHNldWRvSWQsIFBh
c3NSZWZQdHI8UHNldWRvRWxlbWVudD4pOwogCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgbmVl
ZCBmb3IgQXR0ciB0byBjYWxsIHdpbGxNb2RpZnlBdHRyaWJ1dGUvZGlkTW9kaWZ5QXR0cmlidXRl
LgogICAgIGZyaWVuZCBjbGFzcyBBdHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5o
CmluZGV4IDc5MDVjYjU0OGU1ZmZjNDlmMjA0YTM5ZGVjNTAxYzQwOWVkMmZhMTUuLmMyZDdhOWQ3
MDY3ODY3NmE3YmZiNWZlY2Y1MDdkMTAzODRmNjFmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQc2V1
ZG9FbGVtZW50KFBzZXVkb0lkLCBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+KTsKICAgICBQc2V1
ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50KFBzZXVkb0lkKSBjb25zdDsKKyAgICBib29sIGhhc1Bz
ZXVkb0VsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0ZWRCZWZvcmUgfHwgbV9nZW5l
cmF0ZWRBZnRlcjsgfQogCiAgICAgdm9pZCByZXNldENvbXB1dGVkU3R5bGUoKTsKICAgICB2b2lk
IHJlc2V0RHluYW1pY1Jlc3R5bGVPYnNlcnZhdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmNwcAppbmRleCAzY2VhNjRlNzVkM2JlNDJjYjk5OWU3ZjY0MTNhNmM4ZmYwYjQ5Y2Vh
Li40YzY1ZGU0ODIzYWY5OTk4OTU5Y2ZmNmY5YjJkMzI2MzM2NTJhNWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC04Nyw2ICs4Nyw5IEBAIHZvaWQgRWxlbWVudFNoYWRv
dzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jv
b3Q+IHNoCiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKICAgICBDaGls
ZE5vZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQo
KSk7CiAKKyAgICAvLyBFeGlzdGVuY2Ugb2Ygc2hhZG93IHJvb3RzIHJlcXVpcmVzIHRoZSBob3N0
IGFuZCBpdHMgY2hpbGRyZW4gdG8gZG8gdHJhdmVyc2FsIHVzaW5nIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci4KKyAgICBzaGFkb3dIb3N0LT5zZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKTsKKwog
ICAgIC8vIEZJWE1FKDk0OTA1KTogU2hhZG93SG9zdCBzaG91bGQgYmUgcmVhdHRhY2hlZCBkdXJp
bmcgcmVjYWxjU3R5bGUuCiAgICAgLy8gU2V0IHNvbWUgZmxhZyBoZXJlIGFuZCByZWNyZWF0ZSBz
aGFkb3cgaG9zdHMnIHJlbmRlcmVyIGluCiAgICAgLy8gRWxlbWVudDo6cmVjYWxjU3R5bGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKaW5kZXggNzY1MzAyYWUxMzVkMDVjMjJkNjY0NDljMmRmMDQ1MDk4ZjAzYTk2
NC4uNGNiM2NlMzYwZTIwYzU3OWE1MzdjYTZlMGU3NjQ4M2JhNDU3YzQ3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcApAQCAtMTI5MCw2ICsxMjkwLDEwIEBAIEVsZW1lbnQqIE5vZGU6OnBhcmVudE9ySG9zdEVs
ZW1lbnQoKSBjb25zdAogICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KTsKIH0KIAorYm9vbCBO
b2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXJTbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKGlz
U2hhZG93Um9vdCgpIHx8IChpc0VsZW1lbnROb2RlKCkgJiYgKGlzSW5zZXJ0aW9uUG9pbnQoKSB8
fCBpc1BzZXVkb0VsZW1lbnQoKSB8fCB0b0VsZW1lbnQodGhpcyktPmhhc1BzZXVkb0VsZW1lbnRz
KCkgfHwgdG9FbGVtZW50KHRoaXMpLT5zaGFkb3coKSkpKTsKK30KIAogYm9vbCBOb2RlOjppc0Js
b2NrRmxvdygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1MDUzOWJiOWQwZjMzZjZmNzM2MWVk
ODMzYzBiY2ZhZjQ2MmM2ZTQzLi44M2RmMWRlNTZmZTllZDI4YTc4ZWRlNzNkYzJlYWQ5NWNiZmU0
ZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI0NywxMCArMjQ3LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNGcmFtZU93bmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzUGx1Z2luRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGRvY3VtZW50RnJhZ21lbnRJc1NoYWRvd1Jvb3QoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCiAgICAgYm9vbCBpc0RvY3VtZW50Tm9kZSgpIGNvbnN0OwogICAgIGJvb2wgaXNE
b2N1bWVudEZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0RvY3VtZW50RnJhZ21l
bnRGbGFnKTsgfQogICAgIGJvb2wgaXNTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gaXNEb2N1
bWVudEZyYWdtZW50KCkgJiYgZG9jdW1lbnRGcmFnbWVudElzU2hhZG93Um9vdCgpOyB9Ci0gICAg
Ym9vbCBpc0luc2VydGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0luc2VydGlv
blBvaW50RmxhZyk7IH0KKyAgICBib29sIGlzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVy
biBnZXRGbGFnKE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcpICYmIGlzSW5zZXJ0aW9uUG9pbnRO
b2RlKCk7IH0KKworICAgIGJvb2wgbmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkgY29uc3Q7CisgICAg
Ym9vbCBuZWVkc1NoYWRvd1RyZWVXYWxrZXJTbG93KCkgY29uc3Q7CisgICAgdm9pZCBzZXROZWVk
c1NoYWRvd1RyZWVXYWxrZXIoKSB7IHNldEZsYWcoTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyk7
IH0KKyAgICB2b2lkIHJlc2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkgeyBzZXRGbGFnKG5lZWRz
U2hhZG93VHJlZVdhbGtlclNsb3coKSwgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyk7IH0KKwog
ICAgIGJvb2wgaW5OYW1lZEZsb3coKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEluTmFtZWRGbG93
RmxhZyk7IH0KICAgICBib29sIGhhc0N1c3RvbUNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIGdl
dEZsYWcoSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyk7IH0KIApAQCAtNzAzLDcgKzcxMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkRmxhZyA9IDEgPDwgMjIsCiAg
ICAgICAgIEhhc0V2ZW50VGFyZ2V0RGF0YUZsYWcgPSAxIDw8IDIzLAogICAgICAgICBWOENvbGxl
Y3RhYmxlRHVyaW5nTWlub3JHQ0ZsYWcgPSAxIDw8IDI0LAotICAgICAgICBJc0luc2VydGlvblBv
aW50RmxhZyA9IDEgPDwgMjUsCisgICAgICAgIE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcgPSAx
IDw8IDI1LAogCiAgICAgICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZp
bmlzaGVkRmxhZwogICAgIH07CkBAIC03MjEsMTUgKzcyOSwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIENyZWF0ZVRleHQgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNUZXh0RmxhZywKICAgICAgICAg
Q3JlYXRlQ29udGFpbmVyID0gRGVmYXVsdE5vZGVGbGFncyB8IElzQ29udGFpbmVyRmxhZywgCiAg
ICAgICAgIENyZWF0ZUVsZW1lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJc0VsZW1lbnRGbGFnLCAK
LSAgICAgICAgQ3JlYXRlUHNldWRvRWxlbWVudCA9ICBDcmVhdGVFbGVtZW50IHwgSW5Eb2N1bWVu
dEZsYWcsCi0gICAgICAgIENyZWF0ZVNoYWRvd1Jvb3QgPSBDcmVhdGVDb250YWluZXIgfCBJc0Rv
Y3VtZW50RnJhZ21lbnRGbGFnLAorICAgICAgICBDcmVhdGVQc2V1ZG9FbGVtZW50ID0gIENyZWF0
ZUVsZW1lbnQgfCBJbkRvY3VtZW50RmxhZyB8IE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcsCisg
ICAgICAgIENyZWF0ZVNoYWRvd1Jvb3QgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJh
Z21lbnRGbGFnIHwgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZywKICAgICAgICAgQ3JlYXRlRG9j
dW1lbnRGcmFnbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFnbWVudEZsYWcs
CiAgICAgICAgIENyZWF0ZVN0eWxlZEVsZW1lbnQgPSBDcmVhdGVFbGVtZW50IHwgSXNTdHlsZWRF
bGVtZW50RmxhZywgCiAgICAgICAgIENyZWF0ZUhUTUxFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxl
bWVudCB8IElzSFRNTEZsYWcsIAogICAgICAgICBDcmVhdGVGcmFtZU93bmVyRWxlbWVudCA9IENy
ZWF0ZUhUTUxFbGVtZW50IHwgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZywKICAgICAgICAgQ3JlYXRl
U1ZHRWxlbWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBJc1NWR0ZsYWcsCiAgICAgICAgIENy
ZWF0ZURvY3VtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSW5Eb2N1bWVudEZsYWcsCi0gICAgICAg
IENyZWF0ZUluc2VydGlvblBvaW50ID0gQ3JlYXRlSFRNTEVsZW1lbnQgfCBJc0luc2VydGlvblBv
aW50RmxhZywKKyAgICAgICAgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQgPSBDcmVhdGVIVE1MRWxlbWVu
dCB8IE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcsCiAgICAgICAgIENyZWF0ZUVkaXRpbmdUZXh0
ID0gQ3JlYXRlVGV4dCB8IEhhc05hbWVPcklzRWRpdGluZ1RleHRGbGFnLAogICAgIH07CiAgICAg
Tm9kZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMTMxODdiNTZjYWVhODYxY2E2NjViN2NhZDA5
MTllZjkzY2FmZDI3Zi4uNjczMDVjYTIwZTVmN2Y1Mzk2MzEyODcyZDlmNDA3ODEwMTFiNGJjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0Nv
bnRleHQuaCIKIAotI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgogI2luY2x1
ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKICNp
bmNsdWRlICJFbGVtZW50U2hhZG93LmgiCkBAIC01OSwxMSArNTgsMTIgQEAgTm9kZVJlbmRlcmlu
Z0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCiAgICAgOiBtX25vZGUo
bm9kZSkKICAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCiB7Ci0gICAgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOjpmaW5kUGFyZW50KG1fbm9kZSwgJm1fcGFyZW50RGV0YWlscyk7CisgICAg
bV9yZW5kZXJpbmdQYXJlbnQgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwYXJlbnQobm9kZSwg
Jm1fcGFyZW50RGV0YWlscyk7CiB9CiAKIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVy
aW5nQ29udGV4dChOb2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgOiBtX25vZGUo
bm9kZSkKKyAgICAsIG1fcmVuZGVyaW5nUGFyZW50KDApCiAgICAgLCBtX3N0eWxlKHN0eWxlKQog
ICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKIHsKQEAgLTgzLDEyICs4MywxMSBAQCBSZW5k
ZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogCiAg
ICAgLy8gQXZvaWQgYW4gTyhOXjIpIHByb2JsZW0gd2l0aCB0aGlzIGZ1bmN0aW9uIGJ5IG5vdCBj
aGVja2luZyBmb3IKICAgICAvLyBuZXh0UmVuZGVyZXIoKSB3aGVuIHRoZSBwYXJlbnQgZWxlbWVu
dCBoYXNuJ3QgYXR0YWNoZWQgeWV0LgotICAgIGlmIChtX3BhcmVudERldGFpbHMubm9kZSgpICYm
ICFtX3BhcmVudERldGFpbHMubm9kZSgpLT5hdHRhY2hlZCgpKQorICAgIGlmIChtX3JlbmRlcmlu
Z1BhcmVudCAmJiAhbV9yZW5kZXJpbmdQYXJlbnQtPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihtX25vZGUpOwotICAg
IGZvciAod2Fsa2VyLnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxr
ZXIucHNldWRvQXdhcmVOZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gd2Fsa2VyLmdldCgpLT5yZW5kZXJlcigpKSB7CisgICAgZm9yIChOb2RlKiBz
aWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNpYmxpbmcobV9ub2RlKTsgc2li
bGluZzsgc2libGluZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKHNpYmxp
bmcpKSB7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVu
ZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gUmVuZGVyZXJzIGZvciBlbGVtZW50cyBhdHRhY2hl
ZCB0byBhIGZsb3cgdGhyZWFkIHNob3VsZCBiZSBza2lwcGVkIGJlY2F1c2UgdGhleSBhcmUgcGFy
ZW50ZWQgZGlmZmVyZW50bHkuCiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPm5vZGUoKS0+aXNF
bGVtZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpICYmICFyZW5kZXJlci0+c3R5bGUoKS0+
Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEw
OSwxMCArMTA4LDggQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlv
dXNSZW5kZXJlcigpIGNvbnN0CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgdGhlIHNh
bWUgTyhOXjIpIGF2b2lkYW5jZSBhcyBuZXh0UmVuZGVyZXIgZG9lcwogICAgIC8vIGhvd2V2ZXIs
IHdoZW4gSSB0cmllZCBhZGRpbmcgaXQsIHNldmVyYWwgdGVzdHMgZmFpbGVkLgotCi0gICAgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihtX25vZGUpOwotICAgIGZvciAod2Fsa2VyLnBz
ZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBzZXVkb0F3
YXJlUHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsKKyAgICBmb3IgKE5vZGUqIHNpYmxpbmcg
PSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcobV9ub2RlKTsgc2libGlu
Zzsgc2libGluZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhzaWJs
aW5nKSkgeworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJl
bmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVudHMgYXR0YWNo
ZWQgdG8gYSBmbG93IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgYXJlIHBh
cmVudGVkIGRpZmZlcmVudGx5LgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCktPmlz
RWxlbWVudE5vZGUoKSAmJiByZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXItPnN0eWxlKCkt
PmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0x
MzAsMjEgKzEyNywyMSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJl
bnRSZW5kZXJlcigpIGNvbnN0CiAgICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQogICAgICAg
ICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7CiAKLSAgICByZXR1cm4gbV9wYXJlbnREZXRh
aWxzLm5vZGUoKSA/IG1fcGFyZW50RGV0YWlscy5ub2RlKCktPnJlbmRlcmVyKCkgOiAwOworICAg
IHJldHVybiBtX3JlbmRlcmluZ1BhcmVudCA/IG1fcmVuZGVyaW5nUGFyZW50LT5yZW5kZXJlcigp
IDogMDsKIH0KIAogYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoKSBjb25zdAogewogICAgIGlmICghbV9ub2RlLT5kb2N1bWVudCgpLT5zaG91bGRDcmVhdGVS
ZW5kZXJlcnMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9wYXJlbnREZXRh
aWxzLm5vZGUoKSkKKyAgICBpZiAoIW1fcmVuZGVyaW5nUGFyZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJl
bmRlcmVyKCk7CiAgICAgaWYgKCFwYXJlbnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghcGFyZW50UmVuZGVyZXItPmNhbkhhdmVDaGlsZHJlbigpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtX3BhcmVudERldGFpbHMubm9kZSgpLT5jaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKCp0aGlzKSkKKyAgICBpZiAoIW1fcmVuZGVyaW5nUGFyZW50LT5jaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
aAppbmRleCA3ZGE0OGUyOWE0MjdkOWFlNzRjNjMyNGVjNDJhOGJlMDI0MWViYjYzLi5jMDc5Nzc2
ZGM4MjA4MmQ0ZDVkZmYxNTk1MjE5ODU1NTU2ZmJkMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjYsNyArMjYsOCBAQAogI2lmbmRlZiBOb2RlUmVu
ZGVyaW5nQ29udGV4dF9oCiAjZGVmaW5lIE5vZGVSZW5kZXJpbmdDb250ZXh0X2gKIAotI2luY2x1
ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWwuaCIKKwogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTY5LDcg
KzcwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIG1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpOwog
CiAgICAgTm9kZSogbV9ub2RlOwotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50
VHJhdmVyc2FsRGV0YWlscyBtX3BhcmVudERldGFpbHM7CisgICAgQ29udGFpbmVyTm9kZSogbV9y
ZW5kZXJpbmdQYXJlbnQ7CisgICAgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWls
cyBtX3BhcmVudERldGFpbHM7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOwogICAg
IFJlbmRlck5hbWVkRmxvd1RocmVhZCogbV9wYXJlbnRGbG93UmVuZGVyZXI7CiAgICAgQXRvbWlj
U3RyaW5nIG1fZmxvd1RocmVhZDsKQEAgLTgyLDcgKzg0LDcgQEAgaW5saW5lIE5vZGUqIE5vZGVS
ZW5kZXJpbmdDb250ZXh0Ojpub2RlKCkgY29uc3QKIAogaW5saW5lIENvbnRhaW5lck5vZGUqIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKSBjb25z
dAogewotICAgIHJldHVybiBtX3BhcmVudERldGFpbHMubm9kZSgpOworICAgIHJldHVybiBtX3Jl
bmRlcmluZ1BhcmVudDsKIH0KIAogaW5saW5lIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJl
c2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ1RyYXZlcnNhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM5YWZhYzE2OTYyMjU2OTFiZmE3NzU5
MDZjMDBkMGMzYzgwOTY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKKworI2luY2x1ZGUg
IkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgorI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNh
bCB7CisKK3ZvaWQgUGFyZW50RGV0YWlsczo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNl
cnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpCit7CisgICAgaWYgKCFtX2luc2VydGlvblBvaW50
KSB7CisgICAgICAgIG1faW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRpb25Qb2ludDsKKyAgICAgICAg
bV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgID0gbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgfHwgaW5z
ZXJ0aW9uUG9pbnQtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOworICAgIH0KK30KKwordm9pZCBQ
YXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCogcm9v
dCkKK3sKKyAgICBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSAgPSBtX3Jlc2V0U3R5bGVJbmhlcml0
YW5jZSB8fCByb290LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKK30KKworQ29udGFpbmVyTm9k
ZSogcGFyZW50U2xvdyhjb25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQor
eworICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSwgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOjpDcm9zc1VwcGVyQm91bmRhcnksIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6Q2FuU3RhcnRGcm9tU2hhZG93Qm91bmRhcnkpOworICAgIENvbnRhaW5lck5vZGUqIGZvdW5k
ID0gdG9Db250YWluZXJOb2RlKHdhbGtlci50cmF2ZXJzZVBhcmVudCh3YWxrZXIuZ2V0KCksIGRl
dGFpbHMpKTsKKyAgICByZXR1cm4gZGV0YWlscy0+b3V0T2ZDb21wb3NpdGlvbigpID8gMCA6IGZv
dW5kOworfQorCitOb2RlKiBuZXh0U2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworICAgIGlmIChub2RlLT5p
c0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICB3YWxrZXIucGFyZW50KCk7CisgICAg
ICAgIHdhbGtlci5maXJzdENoaWxkKCk7CisgICAgfSBlbHNlCisgICAgICAgIHdhbGtlci5uZXh0
U2libGluZygpOworCisgICAgaWYgKHdhbGtlci5nZXQoKSB8fCBub2RlLT5pc0FmdGVyUHNldWRv
RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworCisgICAgTm9kZSogcGFy
ZW50ID0gd2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOworICAgIGlmIChwYXJlbnQgJiYgcGFy
ZW50LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KS0+
YWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CisKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogcHJldmlv
dXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlciB3YWxrZXIobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50
KCkpIHsKKyAgICAgICAgd2Fsa2VyLnBhcmVudCgpOworICAgICAgICB3YWxrZXIubGFzdENoaWxk
KCk7CisgICAgfSBlbHNlCisgICAgICAgIHdhbGtlci5wcmV2aW91c1NpYmxpbmcoKTsKKworICAg
IGlmICh3YWxrZXIuZ2V0KCkgfHwgbm9kZS0+aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkpCisgICAg
ICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisKKyAgICBOb2RlKiBwYXJlbnQgPSB3YWxrZXIudHJh
dmVyc2VQYXJlbnQobm9kZSk7CisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5v
ZGUoKSkKKyAgICAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpLT5iZWZvcmVQc2V1ZG9FbGVt
ZW50KCk7CisKKyAgICByZXR1cm4gMDsKK30KKworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQwNDNk
ZTI3ZjA5MzRjZWU1OTVkMTI0YzU0YTNkYTRjODgwYjc5ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKQEAgLTAsMCArMSwxMTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWxfaAorI2RlZmluZSBOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsX2gKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJbnNlcnRpb25Qb2ludDsKKworbmFtZXNwYWNlIE5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWwgeworCitjbGFzcyBQYXJlbnREZXRhaWxzIHsKK3B1YmxpYzoKKyAgICBQYXJlbnRE
ZXRhaWxzKCkKKyAgICAgICAgOiBtX2luc2VydGlvblBvaW50KDApCisgICAgICAgICwgbV9yZXNl
dFN0eWxlSW5oZXJpdGFuY2UoZmFsc2UpCisgICAgICAgICwgbV9vdXRPZkNvbXBvc2l0aW9uKGZh
bHNlKQorICAgIHsgfQorCisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9pbnNlcnRpb25Qb2ludDsgfQorICAgIGJvb2wgcmVzZXRTdHlsZUluaGVy
aXRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNldFN0eWxlSW5oZXJpdGFuY2U7IH0KKyAgICBi
b29sIG91dE9mQ29tcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX291dE9mQ29tcG9zaXRpb247
IH0KKworICAgIHZvaWQgZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCop
OworICAgIHZvaWQgZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0IFNoYWRvd1Jvb3QqKTsKKyAg
ICB2b2lkIGNoaWxkV2FzT3V0T2ZDb21wb3NpdGlvbigpIHsgbV9vdXRPZkNvbXBvc2l0aW9uID0g
dHJ1ZTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhcmVudERldGFpbHMmIG90aGVy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQgPT0gb3RoZXIubV9pbnNl
cnRpb25Qb2ludAorICAgICAgICAgICAgJiYgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgPT0gb3Ro
ZXIubV9yZXNldFN0eWxlSW5oZXJpdGFuY2UKKyAgICAgICAgICAgICYmIG1fb3V0T2ZDb21wb3Np
dGlvbiA9PSBvdGhlci5tX291dE9mQ29tcG9zaXRpb247CisgICAgfQorCitwcml2YXRlOgorICAg
IEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50OworICAgIGJvb2wgbV9yZXNldFN0eWxl
SW5oZXJpdGFuY2U7CisgICAgYm9vbCBtX291dE9mQ29tcG9zaXRpb247Cit9OworCitDb250YWlu
ZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqKTsKK0NvbnRhaW5lck5v
ZGUqIHBhcmVudFNsb3coY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqKTsKK05vZGUqIG5leHRT
aWJsaW5nKGNvbnN0IE5vZGUqKTsKK05vZGUqIG5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKik7
CitOb2RlKiBwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSopOworTm9kZSogcHJldmlvdXNTaWJs
aW5nU2xvdyhjb25zdCBOb2RlKik7CisKKworaW5saW5lIENvbnRhaW5lck5vZGUqIHBhcmVudChj
b25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQoreworICAgIGlmICghbm9k
ZS0+bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkpIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFBh
cmVudERldGFpbHMgc2xvd0RldGFpbHM7CisgICAgICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2Rl
KCkgPT0gcGFyZW50U2xvdyhub2RlLCAmc2xvd0RldGFpbHMpKTsKKyAgICAgICAgQVNTRVJUKHNs
b3dEZXRhaWxzID09ICpkZXRhaWxzKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gbm9kZS0+cGFy
ZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpOworICAgIH0KKworICAgIHJldHVybiBwYXJlbnRT
bG93KG5vZGUsIGRldGFpbHMpOworfQorCitpbmxpbmUgTm9kZSogbmV4dFNpYmxpbmcoY29uc3Qg
Tm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUtPm5lZWRzU2hhZG93VHJlZVdhbGtlcigpKSB7
CisgICAgICAgIEFTU0VSVChuZXh0U2libGluZ1Nsb3cobm9kZSkgPT0gbm9kZS0+bmV4dFNpYmxp
bmcoKSk7CisgICAgICAgIHJldHVybiBub2RlLT5uZXh0U2libGluZygpOworICAgIH0KKworICAg
IHJldHVybiBuZXh0U2libGluZ1Nsb3cobm9kZSk7Cit9CisKK2lubGluZSBOb2RlKiBwcmV2aW91
c1NpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUtPm5lZWRzU2hhZG93
VHJlZVdhbGtlcigpKSB7CisgICAgICAgIEFTU0VSVChwcmV2aW91c1NpYmxpbmdTbG93KG5vZGUp
ID09IG5vZGUtPnByZXZpb3VzU2libGluZygpKTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPnByZXZp
b3VzU2libGluZygpOworICAgIH0KKworICAgIHJldHVybiBwcmV2aW91c1NpYmxpbmdTbG93KG5v
ZGUpOworfQorCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXggYzc3YTI5NTQ0MDUwOWM0NDk2NzdlNDA2MDMy
MDhkM2ZkYTBhYmZkOS4uYThlNTg5MTdhYTM2ZDAxMTI3MjBmOGY1ZDhiZjA4Y2FjMjVlMTczNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtNDMsNiArNDMsNyBAQCBQc2V1
ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KEVsZW1lbnQqIHBhcmVudCwgUHNldWRvSWQgcHNldWRv
SWQpCiAgICAgOiBFbGVtZW50KHBzZXVkb0VsZW1lbnRUYWdOYW1lKCksIHBhcmVudC0+ZG9jdW1l
bnQoKSwgQ3JlYXRlUHNldWRvRWxlbWVudCkKICAgICAsIG1fcHNldWRvSWQocHNldWRvSWQpCiB7
CisgICAgQVNTRVJUKHBzZXVkb0lkICE9IE5PUFNFVURPKTsKICAgICBBU1NFUlQocGFyZW50LT5p
bkRvY3VtZW50KCkpOwogICAgIHNldFBhcmVudE9ySG9zdE5vZGUocGFyZW50KTsKICAgICBzZXRI
YXNDdXN0b21DYWxsYmFja3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCBlMTc4ZTVmNjVhYmZmOTFm
OWIwY2RkNDBlODUwYzdmZGY2MTU5MmVkLi5iNWJkYWJiMDlkN2JmN2MyYjNkOTYxYzBmNzljMjYx
NTE5MDA4ZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJDb21iaW5lVGV4dC5oIgog
I2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKICNpZiBF
TkFCTEUoU1ZHKQogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCmluZGV4IGQ3MTAyMWJiODFkMDM4Mjdh
YmI1ZGFkZGE4NzVhOWM4OGQ4NjlkNGMuLjljYjQ2ZjJhODM4Mzc4OGFmMDI4MTJkYjE4YmQzZDE1
YTY3MDRlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKIAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTWVudUxpc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAKaW5kZXggMzk4ODhkOGQ2MWRlNTcyMjUwYjgyMDNmYTBhYjgyOTk3YzI0YmI1OS4uZjUx
MDk2ODQwN2ViYjk5OTRlZDk4OGNhZjVmMWJlMDdjNTZmZjBmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
IkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudFNo
YWRvdy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJIVE1MRGF0YUxp
c3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCBlYTVmNDA3N2MxYWRlNDc0NGE4YzI3MzFh
OWFiMGRlODI0NDZhMmVhLi4xMzY3NTViZTdhNzZmYzJjOTdiNjE5N2Q0MDIxZWIwMWM2Yjk3YmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTIz
LDEyICsyMywxMyBAQAogCiAjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCiAjaW5jbHVkZSAi
QXR0cmlidXRlLmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiTm9kZVJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlByb2dyZXNzU2hhZG93RWxlbWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCiAjaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVT
ZXQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4
IDIzMmI1NjNlMTI2NzA0M2FiNWE1MmJlODY1YzM2OGRlMDczYzVmMWQuLmFlZGFjMWQwZjdkMTBm
NmQ4NGUxMzYwZTgxMDAzMzhhOTBjODEyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtODcsNyArODcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJO
b2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwotCisgICAgdmlydHVh
bCBib29sIGlzSW5zZXJ0aW9uUG9pbnROb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQogcHJpdmF0ZToKIAogICAgIENvbnRlbnREaXN0cmlidXRpb24gbV9kaXN0cmlidXRpb247
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>179215</attachid>
            <date>2012-12-13 00:11:40 -0800</date>
            <delta_ts>2012-12-13 00:11:40 -0800</delta_ts>
            <desc>benchmark result showing 2-3% win for document-modify-innerhtml</desc>
            <filename>dromaeo-innerhtml.html</filename>
            <type>text/html</type>
            <size>22543</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvbW9ycml0YS93b3JrL3dlYmtpdC9hbGljZSc7CiAgICB2YXIgcmVt
b3RlUGF0aCA9ICdodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5r
JzsKICAgIHZhciBudW1iZXJPZkZhaWx1cmVzID0gMDsKICAgIHZhciBzdGFydGVkTG9hZGluZ1Bs
dWdpbnMgPSBmYWxzZTsKICAgIHZhciBudW1iZXJPZkxvYWRlZFBsdWdpbnMgPSAwOwoKICAgIGZ1
bmN0aW9uIGxvYWRTY3JpcHQoc3JjLCBsb2FkZWQsIGZhaWxlZCkgewogICAgICAgIHZhciBzY3Jp
cHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzY3JpcHQuYXN5
bmMgPSB0cnVlOwogICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7CiAgICAgICAgc2NyaXB0Lm9ubG9h
ZCA9IGxvYWRlZDsKICAgICAgICBpZiAoZmFpbGVkKQogICAgICAgICAgICBzY3JpcHQub25lcnJv
ciA9IGZhaWxlZDsKICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CiAg
ICB9CgogICAgZnVuY3Rpb24gbG9hZFBsdWdpbnModHJ1bmtQYXRoKSB7CiAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKQogICAgICAgICAgICBsb2FkU2NyaXB0
KHRydW5rUGF0aCArICcvJyArIHBsdWdpbnNbaV0sIGxvYWRlZFBsdWdpbiwgY3JlYXRlRmFpbGVk
VG9Mb2FkUGx1Z2luKHBsdWdpbnNbaV0pKTsKICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkZWRQbHVn
aW4oKSB7CiAgICAgICAgbnVtYmVyT2ZMb2FkZWRQbHVnaW5zKys7CiAgICAgICAgaWYgKG51bWJl
ck9mTG9hZGVkUGx1Z2lucyA9PSBwbHVnaW5zLmxlbmd0aCkKICAgICAgICAgICAgc2V0VGltZW91
dChpbml0LCAwKTsgICAgICAgICAgICAKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVGYWlsZWRU
b0xvYWRQbHVnaW4ocGx1Z2luKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgYWxlcnQo
IkZhaWxlZCB0byBsb2FkICIgKyBwbHVnaW4pOyB9CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRl
TG9hZGVkSlF1ZXJ5KHRydW5rUGF0aCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGxv
YWRQbHVnaW5zKHRydW5rUGF0aCk7IH0KICAgIH0KCiAgICBsb2FkU2NyaXB0KGxvY2FsUGF0aCAr
ICcvJyArIGpRdWVyeSwKICAgICAgICBjcmVhdGVMb2FkZWRKUXVlcnkobG9jYWxQYXRoKSwKICAg
ICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxvYWRTY3JpcHQocmVtb3RlUGF0aCArICcv
JyArIGpRdWVyeSwKICAgICAgICAgICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShyZW1vdGVQYXRo
KSwKICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZhaWxlZCB0byBsb2FkIGpR
dWVyeS4iKTsgfSk7CiAgICAgICAgfSk7Cn0pKCk7CgpmdW5jdGlvbiBUZXN0UmVzdWx0KGFzc29j
aWF0ZWRUZXN0LCByZXN1bHQsIGFzc29jaWF0ZWRSdW4pIHsKICAgIHRoaXMudW5pdCA9IGZ1bmN0
aW9uICgpIHsgcmV0dXJuIHJlc3VsdC51bml0OyB9CiAgICB0aGlzLnRlc3QgPSBmdW5jdGlvbiAo
KSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdDsgfQogICAgdGhpcy52YWx1ZXMgPSBmdW5jdGlvbiAo
KSB7IHJldHVybiByZXN1bHQudmFsdWVzID8gcmVzdWx0LnZhbHVlcy5tYXAoZnVuY3Rpb24gKHZh
bHVlKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiB2YWx1ZTsgfSkg
OiB1bmRlZmluZWQ7IH0KICAgIHRoaXMudW5zY2FsZWRNZWFuID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5tZWFuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNz
b2NpYXRlZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5taW4g
PSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiBy
ZXN1bHQubWluOyB9CiAgICB0aGlzLm1heCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0
ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3VsdC5tYXg7IH0KICAgIHRoaXMuc3RkZXYgPSBm
dW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1
bHQuc3RkZXY7IH0KICAgIHRoaXMuc3RkZXZSYXRpbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJl
c3VsdC5zdGRldiAvIHJlc3VsdC5hdmc7IH0KICAgIHRoaXMucGVyY2VudERpZmZlcmVuY2UgPSBm
dW5jdGlvbihvdGhlcikgeyByZXR1cm4gKG90aGVyLm1lYW4oKSAtIHRoaXMubWVhbigpKSAvIHRo
aXMubWVhbigpOyB9CiAgICB0aGlzLmlzU3RhdGlzdGljYWxseVNpZ25pZmljYW50ID0gZnVuY3Rp
b24gKG90aGVyKSB7CiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhvdGhlci5tZWFuKCkgLSB0
aGlzLm1lYW4oKSk7CiAgICAgICAgcmV0dXJuIGRpZmYgPiB0aGlzLnN0ZGV2KCkgJiYgZGlmZiA+
IG90aGVyLnN0ZGV2KCk7CiAgICB9CiAgICB0aGlzLnJ1biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IGFzc29jaWF0ZWRSdW47IH0KfQoKZnVuY3Rpb24gVGVzdFJ1bihlbnRyeSkgewogICAgdGhpcy5k
ZXNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVudHJ5WydkZXNjcmlwdGlvbiddOyB9
CiAgICB0aGlzLndlYmtpdFJldmlzaW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ3dl
YmtpdC1yZXZpc2lvbiddOyB9CiAgICB0aGlzLmxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAg
IHZhciBsYWJlbCA9ICdyJyArIHRoaXMud2Via2l0UmV2aXNpb24oKTsKICAgICAgICBpZiAodGhp
cy5kZXNjcmlwdGlvbigpKQogICAgICAgICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgdGhpcy5k
ZXNjcmlwdGlvbigpOwogICAgICAgIHJldHVybiBsYWJlbDsKICAgIH0KfQoKZnVuY3Rpb24gUGVy
ZlRlc3QobmFtZSkgewogICAgdmFyIHRlc3RSZXN1bHRzID0gW107CiAgICB2YXIgY2FjaGVkVW5p
dCA9IG51bGw7CiAgICB2YXIgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IG51bGw7CgogICAgLy8gV2Ug
Y2FuJ3QgZG8gdGhpcyBpbiBUZXN0UmVzdWx0IGJlY2F1c2UgYWxsIHJlc3VsdHMgZm9yIGVhY2gg
dGVzdCBuZWVkIHRvIHNoYXJlIHRoZSBzYW1lIHVuaXQgYW5kIHRoZSBzYW1lIHNjYWxpbmcgZmFj
dG9yLgogICAgZnVuY3Rpb24gY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpIHsKICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGFkanVzdGluZyB1bml0cyBvbiBldmVyeSB0ZXN0
IHJlc3VsdC4KICAgICAgICAvLyBXZSBjYW4gb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCB0ZXN0
LgogICAgICAgIGlmICghdGVzdFJlc3VsdHMubGVuZ3RoIHx8IGNhY2hlZFVuaXQpCiAgICAgICAg
ICAgIHJldHVybjsKCiAgICAgICAgdmFyIHVuaXQgPSB0ZXN0UmVzdWx0c1swXS51bml0KCk7IC8v
IEZJWE1FOiBXZSBzaG91bGQgdmVyaWZ5IHRoYXQgYWxsIHJlc3VsdHMgaGF2ZSB0aGUgc2FtZSB1
bml0LgogICAgICAgIHZhciBtZWFuID0gdGVzdFJlc3VsdHNbMF0udW5zY2FsZWRNZWFuKCk7IC8v
IEZJWE1FOiBXZSBzaG91bGQgbG9vayBhdCBhbGwgdmFsdWVzLgogICAgICAgIHZhciBraWxvID0g
dW5pdCA9PSAnYnl0ZXMnID8gMTAyNCA6IDEwMDA7CiAgICAgICAgaWYgKG1lYW4gPiAxMCAqIGtp
bG8gKiBraWxvICYmIHVuaXQgIT0gJ21zJykgewogICAgICAgICAgICBjYWNoZWRTY2FsaW5nRmFj
dG9yID0gMSAvIGtpbG8gLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gJ00gJyArIHVu
aXQ7CiAgICAgICAgfSBlbHNlIGlmIChtZWFuID4gMTAgKiBraWxvKSB7CiAgICAgICAgICAgIGNh
Y2hlZFNjYWxpbmdGYWN0b3IgPSAxIC8ga2lsbzsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVu
aXQgPT0gJ21zJyA/ICdzJyA6ICgnSyAnICsgdW5pdCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IDE7CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSB1
bml0OwogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLm5hbWUgPSBmdW5jdGlvbiAoKSB7IHJldHVy
biBuYW1lOyB9CiAgICB0aGlzLmlzTWVtb3J5VGVzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5h
bWUuaW5kZXhPZignOicpID49IDA7IH0KICAgIHRoaXMuYWRkUmVzdWx0ID0gZnVuY3Rpb24gKG5l
d1Jlc3VsdCkgewogICAgICAgIHRlc3RSZXN1bHRzLnB1c2gobmV3UmVzdWx0KTsKICAgICAgICBj
YWNoZWRVbml0ID0gbnVsbDsKICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAg
IH0KICAgIHRoaXMucmVzdWx0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRlc3RSZXN1bHRzOyB9
CiAgICB0aGlzLnNjYWxpbmdGYWN0b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb21wdXRlU2Nh
bGluZ0ZhY3RvcklmTmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFNjYWxpbmdGYWN0b3I7
CiAgICB9CiAgICB0aGlzLnVuaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgY29tcHV0ZVNjYWxp
bmdGYWN0b3JJZk5lZWRlZCgpOwogICAgICAgIHJldHVybiBjYWNoZWRVbml0OwogICAgfQogICAg
dGhpcy5zbWFsbGVySXNCZXR0ZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnVuaXQoKSA9
PSAnbXMnIHx8IHRoaXMudW5pdCgpID09ICdieXRlcyc7IH0KfQoKdmFyIHBsb3RDb2xvciA9ICdy
Z2IoMjMwLDUwLDUwKSc7CnZhciBzdWJwb2ludHNQbG90T3B0aW9ucyA9IHsKICAgIGxpbmVzOiB7
c2hvdzp0cnVlLCBsaW5lV2lkdGg6IDB9LAogICAgY29sb3I6IHBsb3RDb2xvciwKICAgIHBvaW50
czoge3Nob3c6IHRydWUsIHJhZGl1czogMX0sCiAgICBiYXJzOiB7c2hvdzogZmFsc2V9fTsKCnZh
ciBtYWluUGxvdE9wdGlvbnMgPSB7CiAgICB4YXhpczogewogICAgICAgIG1pbjogLTAuNSwKICAg
ICAgICB0aWNrU2l6ZTogMSwKICAgIH0sCiAgICBjcm9zc2hhaXI6IHsgbW9kZTogJ3knIH0sCiAg
ICBzZXJpZXM6IHsgc2hhZG93U2l6ZTogMCB9LAogICAgYmFyczoge3Nob3c6IHRydWUsIGFsaWdu
OiAnY2VudGVyJywgYmFyV2lkdGg6IDAuNX0sCiAgICBsaW5lczogeyBzaG93OiBmYWxzZSB9LAog
ICAgcG9pbnRzOiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6IHsKICAgICAgICBib3JkZXJXaWR0
aDogMSwKICAgICAgICBib3JkZXJDb2xvcjogJyNjY2MnLAogICAgICAgIGJhY2tncm91bmRDb2xv
cjogJyNmZmYnLAogICAgICAgIGhvdmVyYWJsZTogdHJ1ZSwKICAgICAgICBhdXRvSGlnaGxpZ2h0
OiBmYWxzZSwKICAgIH0KfTsKCnZhciB0aW1lUGxvdE9wdGlvbnMgPSB7CiAgICB5YXhpczogeyBz
aG93OiBmYWxzZSB9LAogICAgeGF4aXM6IHsgc2hvdzogZmFsc2UgfSwKICAgIGxpbmVzOiB7IHNo
b3c6IHRydWUgfSwKICAgIGdyaWQ6IHsgYm9yZGVyV2lkdGg6IDEsIGJvcmRlckNvbG9yOiAnI2Nj
YycgfSwKICAgIGNvbG9yczogWyBwbG90Q29sb3IgXQp9OwoKZnVuY3Rpb24gY3JlYXRlUGxvdChj
b250YWluZXIsIHRlc3QpIHsKICAgIHZhciBzZWN0aW9uID0gJCgnPHNlY3Rpb24+PGRpdiBjbGFz
cz0icGxvdCI+PC9kaXY+PGRpdiBjbGFzcz0idGltZS1wbG90cyI+PC9kaXY+JwogICAgICAgICsg
JzxzcGFuIGNsYXNzPSJ0b29sdGlwIj48L3NwYW4+PC9zZWN0aW9uPicpOwogICAgc2VjdGlvbi5j
aGlsZHJlbignLnBsb3QnKS5jc3Moeyd3aWR0aCc6ICgxMDAgKiB0ZXN0LnJlc3VsdHMoKS5sZW5n
dGggKyAyNSkgKyAncHgnLCAnaGVpZ2h0JzogJzMwMHB4J30pOwogICAgJChjb250YWluZXIpLmFw
cGVuZChzZWN0aW9uKTsKCiAgICB2YXIgcGxvdENvbnRhaW5lciA9IHNlY3Rpb24uY2hpbGRyZW4o
Jy5wbG90Jyk7CiAgICB2YXIgbWluSXNaZXJvID0gdHJ1ZTsKICAgIGF0dGFjaFBsb3QodGVzdCwg
cGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKCiAgICBhdHRhY2hUaW1lUGxvdHModGVzdCwgc2Vj
dGlvbi5jaGlsZHJlbignLnRpbWUtcGxvdHMnKSk7CgogICAgdmFyIHRvb2x0aXAgPSBzZWN0aW9u
LmNoaWxkcmVuKCcudG9vbHRpcCcpOwogICAgcGxvdENvbnRhaW5lci5iaW5kKCdwbG90aG92ZXIn
LCBmdW5jdGlvbiAoZXZlbnQsIHBvc2l0aW9uLCBpdGVtKSB7CiAgICAgICAgaWYgKGl0ZW0pIHsK
ICAgICAgICAgICAgdmFyIHBvc3RmaXggPSBpdGVtLnNlcmllcy5pZCA/ICcgKCcgKyBpdGVtLnNl
cmllcy5pZCArICcpJyA6ICcnOwogICAgICAgICAgICB0b29sdGlwLmh0bWwoaXRlbS5kYXRhcG9p
bnRbMV0udG9QcmVjaXNpb24oNCkgKyBwb3N0Zml4KTsKICAgICAgICAgICAgdmFyIHNlY3Rpb25P
ZmZzZXQgPSAkKHNlY3Rpb24pLm9mZnNldCgpOwogICAgICAgICAgICB0b29sdGlwLmNzcyh7bGVm
dDogaXRlbS5wYWdlWCAtIHNlY3Rpb25PZmZzZXQubGVmdCAtIHRvb2x0aXAub3V0ZXJXaWR0aCgp
IC8gMiwgdG9wOiBpdGVtLnBhZ2VZIC0gc2VjdGlvbk9mZnNldC50b3AgKyAxMH0pOwogICAgICAg
ICAgICB0b29sdGlwLmZhZGVJbigyMDApOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICB0b29s
dGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5tb3VzZW91dChmdW5jdGlvbiAo
KSB7CiAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsKICAgIHBsb3RDb250YWluZXIuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAg
ICAgICBtaW5Jc1plcm8gPSAhbWluSXNaZXJvOwogICAgICAgIGF0dGFjaFBsb3QodGVzdCwgcGxv
dENvbnRhaW5lciwgbWluSXNaZXJvKTsKICAgIH0pOwoKICAgIHJldHVybiBzZWN0aW9uOwp9Cgpm
dW5jdGlvbiBhdHRhY2hUaW1lUGxvdHModGVzdCwgY29udGFpbmVyKSB7CiAgICB2YXIgcmVzdWx0
cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIGF0dGFjaGVkUGxvdCA9IGZhbHNlOwogICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29udGFpbmVy
LmFwcGVuZCgnPGRpdj48L2Rpdj4nKTsKICAgICAgICB2YXIgdmFsdWVzID0gcmVzdWx0c1tpXS52
YWx1ZXMoKTsKICAgICAgICBpZiAoIXZhbHVlcykKICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgYXR0YWNoZWRQbG90ID0gdHJ1ZTsKCiAgICAgICAgJC5wbG90KGNvbnRhaW5lci5jaGlsZHJl
bigpLmxhc3QoKSwgW3ZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkgeyByZXR1cm4g
W2luZGV4LCB2YWx1ZV07IH0pXSwKICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwge30sIHRpbWVQ
bG90T3B0aW9ucywge3lheGlzOiB7bWluOiBNYXRoLm1pbi5hcHBseShNYXRoLCB2YWx1ZXMpICog
MC45LCBtYXg6IE1hdGgubWF4LmFwcGx5KE1hdGgsIHZhbHVlcykgKiAxLjF9LAogICAgICAgICAg
ICAgICAgeGF4aXM6IHttaW46IC0wLjUsIG1heDogdmFsdWVzLmxlbmd0aCAtIDAuNX19KSk7CiAg
ICB9CiAgICBpZiAoIWF0dGFjaGVkUGxvdCkKICAgICAgICBjb250YWluZXIuY2hpbGRyZW4oKS5y
ZW1vdmUoKTsKfQoKZnVuY3Rpb24gYXR0YWNoUGxvdCh0ZXN0LCBwbG90Q29udGFpbmVyLCBtaW5J
c1plcm8pIHsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CgogICAgdmFyIHZhbHVl
cyA9IHJlc3VsdHMucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZXMsIHJlc3VsdCwgaW5kZXgpIHsKICAg
ICAgICB2YXIgbmV3VmFsdWVzID0gcmVzdWx0LnZhbHVlcygpOwogICAgICAgIHJldHVybiBuZXdW
YWx1ZXMgPyB2YWx1ZXMuY29uY2F0KG5ld1ZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJl
dHVybiBbaW5kZXgsIHZhbHVlXTsgfSkpIDogdmFsdWVzOwogICAgfSwgW10pOwoKICAgIHZhciBw
bG90RGF0YSA9IFtdOwogICAgaWYgKHZhbHVlcy5sZW5ndGgpCiAgICAgICAgcGxvdERhdGEgPSBb
JC5leHRlbmQodHJ1ZSwge30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7ZGF0YTogdmFsdWVzfSld
OwogICAgZWxzZSB7CiAgICAgICAgZnVuY3Rpb24gbWFrZVN1YnBvaW50cyhpZCwgY2FsbGJhY2sp
IHsgcmV0dXJuICQuZXh0ZW5kKHRydWUsIHt9LCBzdWJwb2ludHNQbG90T3B0aW9ucywge2lkOiBp
ZCwgZGF0YTogcmVzdWx0cy5tYXAoY2FsbGJhY2spfSk7IH0KICAgICAgICBwbG90RGF0YSA9IFtt
YWtlU3VicG9pbnRzKCdtaW4nLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2lu
ZGV4LCByZXN1bHQubWluKCldOyB9KSwKICAgICAgICBtYWtlU3VicG9pbnRzKCdtYXgnLCBmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQubWF4KCldOyB9KSwK
ICAgICAgICBtYWtlU3VicG9pbnRzKCctJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgp
IHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKSAtIHJlc3VsdC5zdGRldigpXTsgfSksCiAg
ICAgICAgbWFrZVN1YnBvaW50cygnKyYjOTYzOycsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7
IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tZWFuKCkgKyByZXN1bHQuc3RkZXYoKV07IH0pXTsKICAg
IH0KCiAgICBwbG90RGF0YS5wdXNoKHtpZDogJyZtdTsnLCBkYXRhOiByZXN1bHRzLm1hcChmdW5j
dGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpXTsgfSks
IGNvbG9yOiBwbG90Q29sb3J9KTsKCiAgICB2YXIgY3VycmVudFBsb3RPcHRpb25zID0gJC5leHRl
bmQodHJ1ZSwge30sIG1haW5QbG90T3B0aW9ucywge3lheGlzOiB7CiAgICAgICAgbWluOiBtaW5J
c1plcm8gPyAwIDogTWF0aC5taW4uYXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJl
c3VsdCwgaW5kZXgpIHsgcmV0dXJuIHJlc3VsdC5taW4oKTsgfSkpICogMC45OCwKICAgICAgICBt
YXg6IE1hdGgubWF4LmFwcGx5KE1hdGgsIHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGlu
ZGV4KSB7IHJldHVybiByZXN1bHQubWF4KCk7IH0pKSAqIChtaW5Jc1plcm8gPyAxLjEgOiAxLjAx
KX19KTsKCiAgICBjdXJyZW50UGxvdE9wdGlvbnMueGF4aXMubWF4ID0gcmVzdWx0cy5sZW5ndGgg
LSAwLjU7CiAgICBjdXJyZW50UGxvdE9wdGlvbnMueGF4aXMudGlja3MgPSByZXN1bHRzLm1hcChm
dW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCByZXN1bHQucnVuKCkubGFi
ZWwoKV07IH0pOwoKICAgICQucGxvdChwbG90Q29udGFpbmVyLCBwbG90RGF0YSwgY3VycmVudFBs
b3RPcHRpb25zKTsKfQoKZnVuY3Rpb24gdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHZhbHVlKSB7CiAg
ICB2YXIgZGVjaW1hbCA9IHZhbHVlLnRvRml4ZWQoMik7CiAgICByZXR1cm4gZGVjaW1hbDsKfQoK
ZnVuY3Rpb24gZm9ybWF0UGVyY2VudGFnZShmcmFjdGlvbikgewogICAgdmFyIHBlcmNlbnRhZ2Ug
PSBmcmFjdGlvbiAqIDEwMDsKICAgIHJldHVybiAoZnJhY3Rpb24gKiAxMDApLnRvRml4ZWQoMikg
KyAnJSc7Cn0KCmZ1bmN0aW9uIGNyZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25vcmVN
ZW1vcnksIHJlZmVyZW5jZUluZGV4KSB7CiAgICAkKCcjY29udGFpbmVyJykuaHRtbCgnPHRoZWFk
Pjx0cj48dGg+VGVzdDwvdGg+PHRoPlVuaXQ8L3RoPicgKyBydW5zLm1hcChmdW5jdGlvbiAocnVu
LCBpbmRleCkgewogICAgICAgIHJldHVybiAnPHRoIGNvbHNwYW49IicgKyAoaW5kZXggPT0gcmVm
ZXJlbmNlSW5kZXggPyAyIDogMykgKyAnIiBjbGFzcz0ie3NvcnRlcjogXCdjb21wYXJpc29uXCd9
Ij4nICsgcnVuLmxhYmVsKCkgKyAnPC90aD4nOwogICAgfSkucmVkdWNlKGZ1bmN0aW9uIChtYXJr
dXAsIGNlbGwpIHsgcmV0dXJuIG1hcmt1cCArIGNlbGw7IH0sICcnKSArICc8L3RyPjwvaGVhZD48
dGJvZHk+PC90Ym9keT4nKTsKCiAgICB2YXIgdGVzdE5hbWVzID0gW107CiAgICBmb3IgKHRlc3RO
YW1lIGluIHRlc3RzKQogICAgICAgIHRlc3ROYW1lcy5wdXNoKHRlc3ROYW1lKTsKCiAgICB0ZXN0
TmFtZXMuc29ydCgpLm1hcChmdW5jdGlvbiAodGVzdE5hbWUpIHsKICAgICAgICB2YXIgdGVzdCA9
IHRlc3RzW3Rlc3ROYW1lXTsKICAgICAgICBpZiAodGVzdC5pc01lbW9yeVRlc3QoKSAhPSBzaG91
bGRJZ25vcmVNZW1vcnkpCiAgICAgICAgICAgIGNyZWF0ZVRhYmxlUm93KHJ1bnMsIHRlc3QsIHJl
ZmVyZW5jZUluZGV4KTsKICAgIH0pOwoKICAgICQoJyNjb250YWluZXInKS50YWJsZXNvcnRlcih7
d2lkZ2V0czogWyd6ZWJyYSddfSk7Cn0KCmZ1bmN0aW9uIGxpbmVhclJlZ3Jlc3Npb24ocG9pbnRz
KSB7CiAgICAvLyBJbXBsZW1lbnQgaHR0cDovL3d3dy5lYXN5Y2FsY3VsYXRpb24uY29tL3N0YXRp
c3RpY3MvbGVhcm4tY29ycmVsYXRpb24ucGhwLgogICAgLy8geCA9IG1hZ25pdHVkZQogICAgLy8g
eSA9IGl0ZXJhdGlvbnMKICAgIHZhciBzdW1YID0gMDsKICAgIHZhciBzdW1ZID0gMDsKICAgIHZh
ciBzdW1YU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWVNxdWFyZWQgPSAwOwogICAgdmFyIHN1bVhU
aW1lc1kgPSAwOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgdmFyIHggPSBpOwogICAgICAgIHZhciB5ID0gcG9pbnRzW2ldOwogICAgICAgIHN1
bVggKz0geDsKICAgICAgICBzdW1ZICs9IHk7CiAgICAgICAgc3VtWFNxdWFyZWQgKz0geCAqIHg7
CiAgICAgICAgc3VtWVNxdWFyZWQgKz0geSAqIHk7CiAgICAgICAgc3VtWFRpbWVzWSArPSB4ICog
eTsKICAgIH0KCiAgICB2YXIgciA9IChwb2ludHMubGVuZ3RoICogc3VtWFRpbWVzWSAtIHN1bVgg
KiBzdW1ZKSAvCiAgICAgICAgTWF0aC5zcXJ0KChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQg
LSBzdW1YICogc3VtWCkgKgogICAgICAgICAgICAgICAgICAocG9pbnRzLmxlbmd0aCAqIHN1bVlT
cXVhcmVkIC0gc3VtWSAqIHN1bVkpKTsKCiAgICBpZiAoaXNOYU4ocikgfHwgciA9PSBNYXRoLklu
ZmluaXR5KQogICAgICAgIHIgPSAwOwoKICAgIHZhciBzbG9wZSA9IChwb2ludHMubGVuZ3RoICog
c3VtWFRpbWVzWSAtIHN1bVggKiBzdW1ZKSAvIChwb2ludHMubGVuZ3RoICogc3VtWFNxdWFyZWQg
LSBzdW1YICogc3VtWCk7CiAgICB2YXIgaW50ZXJjZXB0ID0gc3VtWSAvIHBvaW50cy5sZW5ndGgg
LSBzbG9wZSAqIHN1bVggLyBwb2ludHMubGVuZ3RoOwogICAgcmV0dXJuIHtzbG9wZTogc2xvcGUs
IGludGVyY2VwdDogaW50ZXJjZXB0LCByU3F1YXJlZDogciAqIHJ9Owp9Cgp2YXIgd2FybmluZ1Np
Z24gPSAnPHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4OyBoZWln
aHQ6IDE4cHg7IHZlcnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPicKICAgICsg
Jzxwb2x5Z29uIGZpbGw9InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ry
b2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+Jwog
ICAgKyAnPHBvbHlnb24gZmlsbD0id2hpdGUiIHBvaW50cz0iNDcsMzAgNDgsMjksIDUwLCAyOC43
LCA1MiwyOSA1MywzMCA1MCw2MCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ry
b2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAgICArICc8Y2lyY2xlIGN4PSI1MCIgY3k9IjczIiBy
PSI2IiBmaWxsPSJ3aGl0ZSIgLz4nCiAgICArICc8L3N2Zz4nOwoKZnVuY3Rpb24gY3JlYXRlVGFi
bGVSb3cocnVucywgdGVzdCwgcmVmZXJlbmNlSW5kZXgpIHsKICAgIHZhciB0YWJsZVJvdyA9ICQo
Jzx0cj48dGQgY2xhc3M9InRlc3QiPicgKyB0ZXN0Lm5hbWUoKSArICc8L3RkPjx0ZCBjbGFzcz0i
dW5pdCI+JyArIHRlc3QudW5pdCgpICsgJzwvdGQ+PC90cj4nKTsKCiAgICBmdW5jdGlvbiBtYXJr
dXBGb3JSdW4ocmVzdWx0LCByZWZlcmVuY2VSZXN1bHQpIHsKICAgICAgICB2YXIgY29tcGFyaXNv
bkNlbGwgPSAnJzsKICAgICAgICB2YXIgaGlkZGVuVmFsdWUgPSAnJzsKICAgICAgICB2YXIgc2hv
dWxkQ29tcGFyZSA9IHJlc3VsdCAhPT0gcmVmZXJlbmNlUmVzdWx0OwogICAgICAgIGlmIChzaG91
bGRDb21wYXJlICYmIHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgICAgICB2YXIgcGVyY2VudERp
ZmZlcmVuY2UgPSByZWZlcmVuY2VSZXN1bHQucGVyY2VudERpZmZlcmVuY2UocmVzdWx0KTsKICAg
ICAgICAgICAgdmFyIGJldHRlciA9IHRlc3Quc21hbGxlcklzQmV0dGVyKCkgPyBwZXJjZW50RGlm
ZmVyZW5jZSA8IDAgOiBwZXJjZW50RGlmZmVyZW5jZSA+IDA7CiAgICAgICAgICAgIHZhciBjb21w
YXJpc29uID0gJyc7CiAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAnY29tcGFyaXNvbic7CiAg
ICAgICAgICAgIGlmIChyZWZlcmVuY2VSZXN1bHQuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQo
cmVzdWx0KSkgewogICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IGZvcm1hdFBlcmNlbnRhZ2Uo
TWF0aC5hYnMocGVyY2VudERpZmZlcmVuY2UpKSArIChiZXR0ZXIgPyAnIEJldHRlcicgOiAnIFdv
cnNlJm5ic3A7Jyk7CiAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gYmV0dGVyID8gJyBiZXR0
ZXInIDogJyB3b3JzZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGlkZGVuVmFsdWUgPSAn
PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwnICsgY29tcGFyaXNvbiArICc8L3NwYW4+JzsK
ICAgICAgICAgICAgY29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSInICsgY2xhc3NOYW1lICsg
JyI+JyArIGNvbXBhcmlzb24gKyAnPC90ZD4nOwogICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkQ29t
cGFyZSkKICAgICAgICAgICAgY29tcGFyaXNvbkNlbGwgPSAnPHRkIGNsYXNzPSJjb21wYXJpc29u
Ij48L3RkPic7CgogICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAg
dmFyIHdhcm5pbmcgPSAnJzsKICAgICAgICB2YXIgcmVncmVzc2lvbkFuYWx5c2lzID0gJyc7CiAg
ICAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoID4gMykgewogICAgICAgICAgICByZWdy
ZXNzaW9uUmVzdWx0ID0gbGluZWFyUmVncmVzc2lvbih2YWx1ZXMpOwogICAgICAgICAgICByZWdy
ZXNzaW9uQW5hbHlzaXMgPSAnc2xvcGU9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZWdyZXNz
aW9uUmVzdWx0LnNsb3BlKQogICAgICAgICAgICAgICAgKyAnLCBSXjI9JyArIHRvRml4ZWRXaWR0
aFByZWNpc2lvbihyZWdyZXNzaW9uUmVzdWx0LnJTcXVhcmVkKTsKICAgICAgICAgICAgaWYgKHJl
Z3Jlc3Npb25SZXN1bHQuclNxdWFyZWQgPiAwLjYgJiYgTWF0aC5hYnMocmVncmVzc2lvblJlc3Vs
dC5zbG9wZSkgPiAwLjAxKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nID0gJyA8c3BhbiBjbGFz
cz0icmVncmVzc2lvbi13YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kg
d2l0aCAnICsgcmVncmVzc2lvbkFuYWx5c2lzICsgJyI+JyArIHdhcm5pbmdTaWduICsgJyA8L3Nw
YW4+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHN0YXRpc3RpY3MgPSAn
JnNpZ21hOz0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5zdGRldigpKSArICcsIG1p
bj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5taW4oKSkKICAgICAgICAgICAgKyAn
LCBtYXg9JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWF4KCkpICsgJ1xuJyArIHJl
Z3Jlc3Npb25BbmFseXNpczsKCiAgICAgICAgLy8gVGFibGVzb3J0ZXIgZG9lc24ndCBrbm93IGFi
b3V0IHRoZSBzZWNvbmQgY2VsbCBzbyBwdXQgdGhlIGNvbXBhcmlzb24gaW4gdGhlIGludmlzaWJs
ZSBlbGVtZW50LgogICAgICAgIHJldHVybiAnPHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSInICsg
c3RhdGlzdGljcyArICciPicgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1lYW4oKSkg
KyBoaWRkZW5WYWx1ZQogICAgICAgICAgICArICc8L3RkPjx0ZCBjbGFzcz0ic3RkZXYiIHRpdGxl
PSInICsgc3RhdGlzdGljcyArICciPiZwbHVzbW47ICcKICAgICAgICAgICAgKyBmb3JtYXRQZXJj
ZW50YWdlKHJlc3VsdC5zdGRldlJhdGlvKCkpICsgd2FybmluZyArICc8L3RkPicgKyBjb21wYXJp
c29uQ2VsbDsKICAgIH0KCiAgICBmdW5jdGlvbiBtYXJrdXBGb3JNaXNzaW5nUnVuKGlzUmVmZXJl
bmNlKSB7CiAgICAgICAgcmV0dXJuICc8dGQgY29sc3Bhbj0iJyArIChpc1JlZmVyZW5jZSA/IDIg
OiAzKSArICciIGNsYXNzPSJtaXNzaW5nIj5NaXNzaW5nPC90ZD4nOwogICAgfQoKICAgIHZhciBy
dW5JbmRleCA9IDA7CiAgICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIHJl
ZmVyZW5jZVJlc3VsdCA9IHVuZGVmaW5lZDsKICAgIHZhciByZXN1bHRJbmRleE1hcCA9IHt9Owog
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgd2hp
bGUgKHJ1bnNbcnVuSW5kZXhdICE9PSByZXN1bHRzW2ldLnJ1bigpKQogICAgICAgICAgICBydW5J
bmRleCsrOwogICAgICAgIGlmIChydW5JbmRleCA9PSByZWZlcmVuY2VJbmRleCkKICAgICAgICAg
ICAgcmVmZXJlbmNlUmVzdWx0ID0gcmVzdWx0c1tpXTsKICAgICAgICByZXN1bHRJbmRleE1hcFty
dW5JbmRleF0gPSBpOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydW5zLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgdmFyIHJlc3VsdEluZGV4ID0gcmVzdWx0SW5kZXhNYXBbaV07CiAgICAg
ICAgaWYgKHJlc3VsdEluZGV4ID09IHVuZGVmaW5lZCkKICAgICAgICAgICAgdGFibGVSb3cuYXBw
ZW5kKG1hcmt1cEZvck1pc3NpbmdSdW4oaSA9PSByZWZlcmVuY2VJbmRleCkpOwogICAgICAgIGVs
c2UKICAgICAgICAgICAgdGFibGVSb3cuYXBwZW5kKG1hcmt1cEZvclJ1bihyZXN1bHRzW3Jlc3Vs
dEluZGV4XSwgcmVmZXJlbmNlUmVzdWx0KSk7CiAgICB9CgogICAgJCgnI2NvbnRhaW5lcicpLmNo
aWxkcmVuKCd0Ym9keScpLmxhc3QoKS5hcHBlbmQodGFibGVSb3cpOwoKICAgIHRhYmxlUm93LmNs
aWNrKGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIGlmIChldmVudC50YXJnZXQgIT0gdGFibGVS
b3dbMF0gJiYgZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUgIT0gdGFibGVSb3dbMF0pCiAgICAgICAg
ICAgIHJldHVybjsKCiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKCiAgICAgICAgdmFy
IGZpcnN0Q2VsbCA9IHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmZpcnN0KCk7CiAgICAgICAgaWYg
KGZpcnN0Q2VsbC5jaGlsZHJlbignc2VjdGlvbicpLmxlbmd0aCkgewogICAgICAgICAgICBmaXJz
dENlbGwuY2hpbGRyZW4oJ3NlY3Rpb24nKS5yZW1vdmUoKTsKICAgICAgICAgICAgdGFibGVSb3cu
Y2hpbGRyZW4oJ3RkJykuY3NzKHsncGFkZGluZy1ib3R0b20nOiAnJ30pOwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIHZhciBwbG90ID0gY3JlYXRlUGxvdChmaXJzdENlbGwsIHRlc3QpOwog
ICAgICAgICAgICBwbG90LmNzcyh7J3Bvc2l0aW9uJzogJ2Fic29sdXRlJywgJ3otaW5kZXgnOiAy
fSk7CiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0YWJsZVJvdy5vZmZzZXQoKTsKICAgICAgICAg
ICAgb2Zmc2V0LmxlZnQgKz0gMTsKICAgICAgICAgICAgb2Zmc2V0LnRvcCArPSB0YWJsZVJvdy5v
dXRlckhlaWdodCgpOwogICAgICAgICAgICBwbG90Lm9mZnNldChvZmZzZXQpOwogICAgICAgICAg
ICB0YWJsZVJvdy5jaGlsZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6IHBsb3Qub3V0
ZXJIZWlnaHQoKSArIDV9KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0p
Owp9CgpmdW5jdGlvbiBpbml0KCkgewogICAgJC50YWJsZXNvcnRlci5hZGRQYXJzZXIoewogICAg
ICAgIGlkOiAnY29tcGFyaXNvbicsCiAgICAgICAgaXM6IGZ1bmN0aW9uKHMpIHsKICAgICAgICAg
ICAgcmV0dXJuIHMuaW5kZXhPZignfCcpID49IDA7CiAgICAgICAgfSwKICAgICAgICBmb3JtYXQ6
IGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgdmFyIHBhcnNlZCA9IHBhcnNlRmxvYXQocy5zdWJz
dHJpbmcocy5pbmRleE9mKCd8JykgKyAxKSk7CiAgICAgICAgICAgIHJldHVybiBpc05hTihwYXJz
ZWQpID8gMCA6IHBhcnNlZDsKICAgICAgICB9LAogICAgICAgIHR5cGU6ICdudW1lcmljJywKICAg
IH0pOwoKICAgIHZhciBydW5zID0gW107CiAgICB2YXIgdGVzdHMgPSB7fTsKICAgICQuZWFjaChK
U09OLnBhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdqc29uJykudGV4dENvbnRlbnQpLCBm
dW5jdGlvbiAoaW5kZXgsIGVudHJ5KSB7CiAgICAgICAgdmFyIHJ1biA9IG5ldyBUZXN0UnVuKGVu
dHJ5KTsKICAgICAgICBydW5zLnB1c2gocnVuKTsKICAgICAgICAkLmVhY2goZW50cnkucmVzdWx0
cywgZnVuY3Rpb24gKHRlc3QsIHJlc3VsdCkgewogICAgICAgICAgICBpZiAoIXRlc3RzW3Rlc3Rd
KQogICAgICAgICAgICAgICAgdGVzdHNbdGVzdF0gPSBuZXcgUGVyZlRlc3QodGVzdCk7CiAgICAg
ICAgICAgIHRlc3RzW3Rlc3RdLmFkZFJlc3VsdChuZXcgVGVzdFJlc3VsdCh0ZXN0c1t0ZXN0XSwg
cmVzdWx0LCBydW4pKTsKICAgICAgICB9KTsKICAgIH0pOwoKICAgIHZhciBzaG91bGRJZ25vcmVN
ZW1vcnk9IHRydWU7CiAgICB2YXIgcmVmZXJlbmNlSW5kZXggPSAwOwogICAgY3JlYXRlVGFibGUo
dGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwoKICAgICQo
JyN0aW1lLW1lbW9yeScpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChldmVudCwgY2hlY2tlZEVs
ZW1lbnQpIHsKICAgICAgICBzaG91bGRJZ25vcmVNZW1vcnkgPSBjaGVja2VkRWxlbWVudC50ZXh0
Q29udGVudCA9PSAnVGltZSc7CiAgICAgICAgY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3Vs
ZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwogICAgfSk7CgogICAgcnVucy5tYXAoZnVu
Y3Rpb24gKHJ1biwgaW5kZXgpIHsKICAgICAgICAkKCcjcmVmZXJlbmNlJykuYXBwZW5kKCc8c3Bh
biB2YWx1ZT0iJyArIGluZGV4ICsgJyInICsgKGluZGV4ID09IHJlZmVyZW5jZUluZGV4ID8gJyBj
bGFzcz0iY2hlY2tlZCInIDogJycpICsgJz4nICsgcnVuLmxhYmVsKCkgKyAnPC9zcGFuPicpOwog
ICAgfSkKCiAgICAkKCcjcmVmZXJlbmNlJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50
LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHJlZmVyZW5jZUluZGV4ID0gcGFyc2VJbnQoY2hl
Y2tlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpKTsKICAgICAgICBjcmVhdGVUYWJsZSh0
ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsK
CiAgICAkKCcuY2hlY2tib3gnKS5lYWNoKGZ1bmN0aW9uIChpbmRleCwgY2hlY2tib3gpIHsKICAg
ICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLmNsaWNrKGZ1bmN0aW9uIChldmVudCkg
ewogICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnY2hlY2tlZCcpKQogICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLnJl
bW92ZUNsYXNzKCdjaGVja2VkJyk7CiAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2NoZWNr
ZWQnKTsKICAgICAgICAgICAgJChjaGVja2JveCkudHJpZ2dlcignY2hhbmdlJywgJCh0aGlzKSk7
CiAgICAgICAgfSk7CiAgICB9KTsKfQoKPC9zY3JpcHQ+CjxzY3JpcHQgaWQ9Impzb24iIHR5cGU9
ImFwcGxpY2F0aW9uL2pzb24iPlt7InRpbWVzdGFtcCI6IDEzNTUzODQ4MTEsICJyZXN1bHRzIjog
eyJEcm9tYWVvL2RvbS1tb2RpZnkiOiB7Im1pbiI6IDY5LjU4MjUwNDk3MDE3ODkzLCAibWF4Ijog
NzEuNTcwNTc2NTQwNzU1NDcsICJtZWRpYW4iOiA3MC4xNTgxMDI3NjY3OTg0MiwgInZhbHVlcyI6
IFs2OS41ODI1MDQ5NzAxNzg5MywgNjkuNzIxMTE1NTM3ODQ4NiwgNzAuMTU4MTAyNzY2Nzk4NDIs
IDcxLjA3NjAxMTg0NjAwMTk4LCA3MS41NzA1NzY1NDA3NTU0N10sICJzdGRldiI6IDAuODY3ODQw
OTUyOTc3MzI5OSwgImF2ZyI6IDcwLjQyMTY2MjMzMjMxNjY3LCAidW5pdCI6ICJydW5zL3MifX0s
ICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzc1NjUifSwg
eyJ0aW1lc3RhbXAiOiAxMzU1Mzg0OTU0LCAicmVzdWx0cyI6IHsiRHJvbWFlby9kb20tbW9kaWZ5
IjogeyJtaW4iOiA2OS43OTA2MjgxMTU2NTMwNCwgIm1heCI6IDcxLjcxMzE0NzQxMDM1ODU2LCAi
bWVkaWFuIjogNzAuNTA2NDU0ODE2Mjg2LCAidmFsdWVzIjogWzY5Ljc5MDYyODExNTY1MzA0LCA3
MC4yMjc0OTc1MjcyMDA4LCA3MC41MDY0NTQ4MTYyODYsIDcxLjA3NjAxMTg0NjAwMTk4LCA3MS43
MTMxNDc0MTAzNTg1Nl0sICJzdGRldiI6IDAuNzQ5NzY0ODg4NzY3NTg5MiwgImF2ZyI6IDcwLjY2
Mjc0Nzk0MzEwMDA3LCAidW5pdCI6ICJydW5zL3MifX0sICJicmFuY2giOiAid2Via2l0LXRydW5r
IiwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzc1NjUifSwgeyJ0aW1lc3RhbXAiOiAxMzU1Mzg0OTg0
LCAicmVzdWx0cyI6IHsiRHJvbWFlby9kb20tbW9kaWZ5IjogeyJtaW4iOiA2OS4xNjk5NjA0NzQz
MDgzLCAibWF4IjogNzAuOTI5MDcwOTI5MDcwOTMsICJtZWRpYW4iOiA2OS43OTA2MjgxMTU2NTMw
NCwgInZhbHVlcyI6IFs2OS4xNjk5NjA0NzQzMDgzLCA2OS41ODI1MDQ5NzAxNzg5MywgNjkuNzkw
NjI4MTE1NjUzMDQsIDcwLjQzNjUwNzkzNjUwNzk0LCA3MC45MjkwNzA5MjkwNzA5M10sICJzdGRl
diI6IDAuNjk5ODQ3ODYyODk2ODQzNSwgImF2ZyI6IDY5Ljk4MTczNDQ4NTE0MzgzLCAidW5pdCI6
ICJydW5zL3MifX0sICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndlYmtpdC1yZXZpc2lvbiI6
ICIxMzc1NjUifSwgeyJ0aW1lc3RhbXAiOiAxMzU1Mzg1MzMxLCAicmVzdWx0cyI6IHsiRHJvbWFl
by9kb20tbW9kaWZ5IjogeyJtaW4iOiA3MS40OTk1MDM0NzU2NzAzMSwgIm1heCI6IDczLjU1ODY0
ODExMTMzMiwgIm1lZGlhbiI6IDcyLjI3NzIyNzcyMjc3MjI4LCAidmFsdWVzIjogWzcxLjQ5OTUw
MzQ3NTY3MDMxLCA3Mi4wNjMxNzg2NzcxOTY0NSwgNzIuMjc3MjI3NzIyNzcyMjgsIDcyLjg1NDI5
MTQxNzE2NTY3LCA3My41NTg2NDgxMTEzMzJdLCAic3RkZXYiOiAwLjc4NjY4MjE0NjYyMTE0MzMs
ICJhdmciOiA3Mi40NTA1Njk4ODA4MjczNSwgInVuaXQiOiAicnVucy9zIn19LCAiYnJhbmNoIjog
IndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTM3NTY1In0sIHsidGltZXN0YW1w
IjogMTM1NTM4NTM0NiwgInJlc3VsdHMiOiB7IkRyb21hZW8vZG9tLW1vZGlmeSI6IHsibWluIjog
NzEuNjQxNzkxMDQ0Nzc2MTEsICJtYXgiOiA3My4zMzk5NDA1MzUxODMzNSwgIm1lZGlhbiI6IDcx
LjkyODA3MTkyODA3MTkzLCAidmFsdWVzIjogWzcxLjY0MTc5MTA0NDc3NjExLCA3MS44NTYyODc0
MjUxNDk3LCA3MS45MjgwNzE5MjgwNzE5MywgNzIuNjM2ODE1OTIwMzk4LCA3My4zMzk5NDA1MzUx
ODMzNV0sICJzdGRldiI6IDAuNzAwMjY1MzQ4NTcxNTExNywgImF2ZyI6IDcyLjI4MDU4MTM3MDcx
NTgyLCAidW5pdCI6ICJydW5zL3MifX0sICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndlYmtp
dC1yZXZpc2lvbiI6ICIxMzc1NjUifSwgeyJ0aW1lc3RhbXAiOiAxMzU1Mzg1MzYxLCAicmVzdWx0
cyI6IHsiRHJvbWFlby9kb20tbW9kaWZ5IjogeyJtaW4iOiA3MS4yODcxMjg3MTI4NzEzLCAibWF4
IjogNzIuOTI3MDcyOTI3MDcyOTMsICJtZWRpYW4iOiA3MS42NDE3OTEwNDQ3NzYxMSwgInZhbHVl
cyI6IFs3MS4yODcxMjg3MTI4NzEzLCA3MS41NzA1NzY1NDA3NTU0NywgNzEuNjQxNzkxMDQ0Nzc2
MTEsIDcyLjQyMDYzNDkyMDYzNDkyLCA3Mi45MjcwNzI5MjcwNzI5M10sICJzdGRldiI6IDAuNjgw
NTU3MTc0MTExODkwNywgImF2ZyI6IDcxLjk2OTQ0MDgyOTIyMjE0LCAidW5pdCI6ICJydW5zL3Mi
fX0sICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzc1NjUi
fV08L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179411</attachid>
            <date>2012-12-13 21:06:52 -0800</date>
            <delta_ts>2012-12-13 21:15:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-104332-20121214140411.patch</filename>
            <type>text/plain</type>
            <size>46394</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTU4YjVkMGZkMjAzMjRj
ZDlkMzVhNWI0YjFhN2Q5ZDg1Y2YzN2U0NC4uYTU5YWI3MjBhODRjOTY4YmY0ZmI5YTU4ZjFkOTI2
MzgzMWY5ZmM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0xMi0xMiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgTm9kZVJlbmRlcmlu
Z0NvbnRleHQgaXMgc2xvdyBkdWUgdG8gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb2RlUmVuZGVyaW5nQ29u
dGV4dCBoYXMgc29tZSBzbG93bmVzcyBkdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YKKyAgICAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHRoYXQgTlJDIHJlbGllcyBvbi4gVGhpcyBjaGFuZ2UK
KyAgICAgICAgY3JlYXRlcyBzb21lIGZhc3QgcGF0aHMgdG8gYWRkcmVzcyBzdWNoIHNsb3duZXNz
LgorCisgICAgICAgID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCBtb2R1bGU6CisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIG5hbWVzcGFjZSwg
YSBzaXN0ZXIKKyAgICAgICAgb2YgTm9kZVRyYXZlcnNhbC4gTlJUIGNvbnNpc3RzIG9mIGEgc2V0
IG9mIHRyZWUgdHJhdmVyc2FsCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGlzIHJlc3BvbnNpYmxl
IGZvciB0cmF2ZXJzYWwgaW4gTlJDLiAgQmVmb3JlIHRoaXMKKyAgICAgICAgY2hhbmdlLCBOUkMg
ZGlyZWN0bHkgdXNlZCBDU1RXLiBUaGlzIE5SVCBtb2R1bGUgaGlkZXMgYW5kIG5hcnJvd3MKKyAg
ICAgICAgdGhlIHVzYWdlIG9mIENTVFcuCisKKyAgICAgICAgLSBUcmF2ZXJzYWxzIHByb3ZpZGVk
IGJ5IE5SVCBoYXZlIGZhc3QgcGF0aHMuIEluIG1hbnkgY2FzZSwgc3VjaCB0cmF2ZXJzYWxzCisg
ICAgICAgICAgZG9uJ3QgbmVlZCB0byB1c2UgQ1NUVyBhbmQganVzdCBnb2VzIHRvIG5laWdoYm9y
aW5nIG5vZGVzIGluIGEgcGxhaW4gRE9NIHdheS4KKyAgICAgICAgLSBJdCBhbHNvIGhhbmRsZXMg
TlJDIHNwZWNpZmljIHRyYXZlcnNhbCBjb25jZXJucyBsaWtlIHBzZXVkbyBlbGVtZW50cy4KKyAg
ICAgICAgICBDU1RXOjpwc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCkgYW5kIENTVFc6OnBzZXVkb0F3
YXJlUHJldmlvdXNTaWJsaW5nKCkgYXJlCisgICAgICAgICAgbWVyZ2VkIGludG8gdGhpcyBtb2R1
bGUuCisgICAgICAgIC0gQ1NUVzo6UGFyZW50VHJhdmVyc2FsRGV0YWlscyBpcyBtb3ZlZCBhbmQg
cmVuYW1lZCB0bworICAgICAgICAgIE5SVDo6UGFyZW50RGV0YWlscyB3aXRoIHNtYWxsIG1vZGlm
aWNhdGlvbi4gVGhpcyBpcyBhIHB1cmUKKyAgICAgICAgICByZWZhY3RvcmluZzogQXMgdGhlIG5h
bWUgaW1wbGllcywgVGhpcyBjbGFzcyBpcyB1c2VkIG9ubHkgYnkgTlJDCisgICAgICAgICAgYW5k
IHVzZWQgZHVyaW5nIGEgdHJhdmVyc2FsIHRoZXJlLgorCisgICAgICAgIE5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWwgaXMgYW4gaXNvbGF0aW9uIGxheWVyIGJldHdlZW4gZ2VuZXJpYyBET00gYW5kIENT
VFcuIFRoaXMgaGlkZXMgQ1NUVworICAgICAgICBiZWhpbmQgdGhlIHdhbGwgYW5kIHdpbGwgaGVs
cCBmdXJ0aGVyIHJlZHVjdGlvbiBvZiBpdHMgdXNhZ2UuCisKKyAgICAgICAgPSBOb2RlOjpOZWVk
c1NoYWRvd1RyZWVXYWxrZXJGbGFnIGZsYWc6CisKKyAgICAgICAgTlJUIGZhc3QgcGF0aCBpcyBl
bmFibGVkIGJ5IG5ld2x5IGludHJvZHVjZWQgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAg
IG5vZGUgZmxhZy4gRWFjaCBET00gbm9kZSBpcyBub3cgbWFya2QgYXMgTmVlZHNTaGFkb3dUcmVl
V2Fsa2VyIGlmCisgICAgICAgIGl0IHJlcXVpcmVzIG5vbi10cml2aWFsIHRyYXZlcnNhbCBpbiBO
UlQgd2hpY2ggdXNlcyBDU1RXLiBUaGlzCisgICAgICAgIG1lYW5zIHRoYXQgZWFjaCBub2RlIGNh
biBnbyBmYXN0IHBhdGggdW5sZXNzIGl0IGlzIG1hcmtlZCB3aXRoIHRoaXMgZmxhZy4KKworICAg
ICAgICBBIG5vZGUgaXMgbWFya2VkIGFzIGl0IE5lZWRzU2hhZG93VHJlZVdhbGtlciBpZjoKKwor
ICAgICAgICAtIFRoZSBub2RlIGlzIGEgc2hhZG93IGJvdW5kYXJ5IGxpa2UgSW5zZXJ0aW9uUG9p
bnQgb3IgU2hhZG93Um9vdCwKKyAgICAgICAgLSBUaGUgbm9kZSBoYXMgcHNldWRvIGVsZW1lbnRz
IGxpa2UgZ2VuZXJhdGVkIGNvbnRlbnQgb3IKKyAgICAgICAgLSBUaGUgbm9kZSBpcyBhIHBzZXVk
byBlbGVtZW50LgorCisgICAgICAgIFRoaXMgY3JpdGVyaWEgaXMgZGVmaW5lZCBpbiBOb2RlOjpu
ZWVkc1NoYWRvd1RyZWVXYWxrZXJTbG93KCkuIFRoZSBub2RlIGFjdHVhbGx5IG5lZWRzCisgICAg
ICAgIHRoZSB3YWxrZXIgaWYgdGhlIG5vZGUgb3IgaXRzIHBhcmVudCBpcyBtYXJrZWQgd2l0aCB0
aGlzIGZsYWcuCisKKyAgICAgICAgVGhlIG9yaWdpbmFsIGlkZWEgb2YgdGhpcyBjaGFuZ2Ugd2Fz
IGRlbW9uc3RyYXRlZCBieSBBbnR0aSBLb2l2aXN0byBvbiBidWcgMTAzMjA4IGFuZCBidWcgMTA0
NTA3LgorICAgICAgICBUaGlzIGNoYWduZSBoYXMgMi0zJSBzcGVlZHVwIG9uIERyb21hZW8vZG9t
LW1vZGlmeS9pbm5lckhUTUwgb24gQXBwbGUgTWFjLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOgor
ICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcik6IE1vdmUgc29tZSBwYXJ0IHRvIE5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWwKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKTogQWRkZWQuIFRoaXMgaXMgbG9jYXRlZCBoZXJl
IHNpbmNlIGl0IHJlZmVycyBDb250YWluZXJOb2RlIGRlZmluaXRpb24uCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQp
OiBSZWZhY3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUHNldWRvRWxlbWVu
dHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnBzZXVkb0VsZW1lbnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFBzZXVkb0VsZW1lbnQpOiBSZWZh
Y3RvcmVkIGFuZCBhZGRlZCBhIGZsYWcgdXBkYXRlIGxvZ2ljLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6YmVmb3JlUHNldWRvRWxlbWVudCk6IFJlZmFjdG9yZWQuCisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjphZnRlclBzZXVkb0VsZW1lbnQpOiBSZWZhY3RvcmVkLgor
ICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6aGFzUHNldWRvRWxlbWVudHMpOiBGYWN0b3JlZCBvdXQuCisgICAgICAgICog
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
YWRkU2hhZG93Um9vdCk6IEFkZGVkIGEgZmxhZyB1cGRhdGUgbG9naWMuCisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bmVlZHNTaGFkb3dUcmVlV2Fsa2Vy
U2xvdyk6IEFkZGVkLgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjppc0luc2VydGlvblBvaW50Tm9kZSk6IEFkZGVkLgorICAgICAgICAoTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjppc0luc2VydGlvblBvaW50KTogQ2hhbmdlZCB0byB1c2UgTmVl
ZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldE5lZWRz
U2hhZG93VHJlZVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXNldE5lZWRzU2hh
ZG93VHJlZVdhbGtlcik6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDog
QWRvcHRlZCBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAg
ICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAoTm9kZVJlbmRl
cmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsOjpQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KTogTW92ZWQg
ZnJvbSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50U2xv
dyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4
dFNpYmxpbmdTbG93KTogRGl0dG8uIFRoZSBvcmlnaW5hbCB3YXMgcHNldWRvQXdhcmVOZXh0U2li
bGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3Vz
U2libGluZ1Nsb3cpOiBEaXR0by4gVGhlIG9yaWdpbmFsIHdhcyBwc2V1ZG9Bd2FyZVByZXZpb3Vz
U2libGluZy4KKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCk6Cisg
ICAgICAgIChQYXJlbnREZXRhaWxzKTogTW92ZWQgZnJvbSBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRh
aWxzOjpQYXJlbnREZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OlBhcmVudERldGFpbHM6Omluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6OnJlc2V0U3R5bGVJbmhlcml0
YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnRE
ZXRhaWxzOjpvdXRPZkNvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6OmNoaWxkV2FzT3V0T2ZDb21wb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2li
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91
c1NpYmxpbmcpOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBzZXVkb0VsZW1lbnQ6OlBzZXVkb0VsZW1lbnQpOiBBZGRlZCBhbiBhc3NlcnRpb24u
CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5jcHA6IEFkZGVkIGEgI2luY2x1ZGUgd2hpY2ggcmV2ZWFsZWQgYnkgYSBjaGFnbmUgb24g
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaAorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOiBEaXRv
LgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6IEFkZGVkIGFuIG92ZXJy
aWRlIG9mIGlzSW5zZXJ0aW9uUG9pbnROb2RlKCkuCisKIDIwMTItMTItMTMgIEt1bmloaWtvIFNh
a2Ftb3RvICA8a3Nha2Ftb3RvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTZWNvbmRzL01pbnV0
ZXMgZmllbGQgb2YgZGF0ZS90aW1lIGlucHV0IFVJIHNob3VsZCByZXNwZWN0IHN0ZXAgYXR0cmli
dXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGU4OWZmMmU3M2Q5NmRhZWEwYTM5NTQ5MDJiMDMx
ODQyYTAzMTUzODQuLmUxN2RjMDAzMjMxYWJhMGRhZGE2MmU0ZGY1M2U2NWJlMzYxYTEzYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTk1LDYgKzExOTUsNyBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAKICAgICBkb20vTm9kZVJhcmVEYXRhLmNwcAog
ICAgIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKyAgICBkb20vTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbC5jcHAKICAgICBkb20vTm9kZVRyYXZlcnNhbC5jcHAKICAgICBkb20vTm90YXRpb24u
Y3BwCiAgICAgZG9tL092ZXJmbG93RXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCA3YmJkNjM3NDdlMWEwMzc5OWM5OTZkM2I1MGI3MjgzYTQ4MzdhZjQyLi5kNzQ4MjM4
ZTM5Yjg0NjY0Mzk2ZDBmZjQwNDVhOWVmYTRlOWJlNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTI4ODAsNiArMjg4MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL05vZGVMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggXAor
CVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJTdHlsZS5oIFwKICAgICBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVRyYXZl
cnNhbC5jcHAgXAogICAgIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlVHJhdmVyc2FsLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggYWE5MDUxYzFjMGY5YzQ0OGJmNDAwNzFlMjc0OGE2ZTg0OWJmZDcwOS4uYzA5
NTFiNDE4ZjA3NGZlMTNjYmI3ZGY5OTA5ZjgxYmY4OThlYjRlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC00
MjAsNiArNDIwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL05vZGVJdGVyYXRvci5jcHAgXAog
ICAgIGRvbS9Ob2RlUmFyZURhdGEuY3BwIFwKICAgICBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwIFwKKyAgICBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9Ob2Rl
VHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL05vdGF0aW9uLmNwcCBcCiAgICAgZG9tL1N0YXRpY0hh
c2hTZXROb2RlTGlzdC5jcHAgXApAQCAtMTYwNCw2ICsxNjA1LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgZG9tL05vZGVJdGVyYXRvci5oIFwKICAgICBkb20vTm9kZVJhcmVEYXRhLmggXAogICAgIGRv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIFwKKyAgICBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNh
bC5oIFwKICAgICBkb20vTm9kZVRyYXZlcnNhbC5oIFwKICAgICBkb20vTm90YXRpb24uaCBcCiAg
ICAgZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2OTBk
MTg4MTY0YjQ1OWMzOWQ0YTEzZTFiM2YzNzYyZTk1ODcxMGUwLi4wMDczZmYyM2NhYTk0NTE5YjVm
MDA2M2NiYzczYzA0NWNlZjlkNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yODQ1LDYgKzI4NDUs
OCBAQAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmFyZURhdGEuaCcsCiAgICAgICAgICAgICAnZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmgnLAorICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNw
cCcsCisgICAgICAgICAgICAnZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCcsCiAgICAgICAg
ICAgICAnZG9tL05vZGVSZW5kZXJTdHlsZS5oJywKICAgICAgICAgICAgICdkb20vTm9kZVRyYXZl
cnNhbC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlVHJhdmVyc2FsLmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxYjUy
MTkzOTViY2I3MDcwNThjZGRlZjAwODM1NDhiOTM2NzgwYjIuLjc4OGJjNmFmN2VlNTI1Yjk1NjRj
MTM0N2QyY2VhMDA1NzI5MTgzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4ODgsNiArMzg4OCw4IEBACiAJCUE3NDBCNUE1
MTRDOTM1QUIwMEE3N0ZBNCAvKiBKU0ludGVybmFsU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjRFQTc5MTRDOTM0ODQwMEM4RjVCRiAv
KiBKU0ludGVybmFsU2V0dGluZ3MuaCAqLzsgfTsKIAkJQTc0MEI1QTcxNEM5MzVBRjAwQTc3RkE0
IC8qIEpTSW50ZXJuYWxTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0I0RUE3ODE0QzkzNDg0MDBDOEY1QkYgLyogSlNJbnRlcm5hbFNl
dHRpbmdzLmNwcCAqLzsgfTsKIAkJQTc0QkI3NkIxM0JEQTg2MzAwRkY3QkYwIC8qIEV4Y2VwdGlv
bkNvZGVQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc0QkI3NkExM0JEQTg2MzAwRkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhv
bGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUE3NEYzRUYzMTY3OEIyNEEwMEIwNUE2RSAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjExRjIzMTY3
OEE1NDIwMDk1NzQ0NCAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCAqLzsgfTsKKwkJQTc0
RjNFRjUxNjc4QjI0RjAwQjA1QTZFIC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjExRjI0MTY3OEE1NDIw
MDk1NzQ0NCAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggKi87IH07CiAJCUE3NUU0OTc2MTA3
NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU0OTc0MTA3NTJBQ0IwMEM5Qjg5NiAv
KiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBNzVFNDk3NzEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwICovOyB9OwogCQlBNzVFOEI4ODBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFOEI4MDBFMURF
MkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5jcHAgKi87IH07CkBAIC0xMTIxMSw2ICsxMTIxMyw4IEBA
CiAJCUE3MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEcmFnQWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQ29udHJvbGxl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxQTcwQzkxMUFGQjAyMDAw
OTg5RDZEIC8qIEhUTUxNZXRlckVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhU
TUxNZXRlckVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzIxMUYy
MzE2NzhBNTQyMDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyMTFGMjQxNjc4QTU0MjAwOTU3NDQ0IC8q
IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNzIzRjc3QTE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1FeHBvcnRNYWNyb3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyNzYzQkUxNjY4OUJGQjAwMkZDQUNCIC8qIFVz
ZXJBY3Rpb25FbGVtZW50U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVz
ZXJBY3Rpb25FbGVtZW50U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MkVB
M0JBMTU4NUNGNTUwMDRGQUEyNiAvKiBSZWZDb3VudGVkU3VwcGxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3VudGVkU3VwcGxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjIxMDAsNiArMjIxMDQsOCBAQAogCQkJCTYzMTg5QUUyMEU4
M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCAqLywKIAkJCQlBN0Y1RDk0RDEzODRGMDJE
MDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwICovLAogCQkJCUE3RjVEOTRFMTM4
NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4dC5oICovLAorCQkJCUE3MjExRjIz
MTY3OEE1NDIwMDk1NzQ0NCAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCAqLywKKwkJCQlB
NzIxMUYyNDE2NzhBNTQyMDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oICovLAog
CQkJCTYzRDdCMzJDMEU3OENEM0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCAqLywKIAkJ
CQlFNDMxMDVCNzE2NzUwRjBDMDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5jcHAgKi8sCiAJCQkJ
RTQzMTA1QkExNjc1MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCAqLywKQEAgLTI0ODA1
LDYgKzI0ODExLDcgQEAKIAkJCQlBODE4NzIxQjA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTYzMTg5QUUzMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFy
ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RjVEOTUwMTM4NEYwMkQwMEEyOUE4NyAvKiBO
b2RlUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc0RjNFRjUxNjc4QjI0
RjAwQjA1QTZFIC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTYzRDdCMzJEMEU3OENEM0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzODJBQUI0MEQ4QzM4NjEwMEYzNTdBNiAvKiBOb2RlV2l0aEluZGV4LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEVBN0VCRTBBMTk0NUQwMDBBOEVGNUYgLyogTm90YXRpb24uaCBp
biBIZWFkZXJzICovLApAQCAtMjgxMjUsNiArMjgxMzIsNyBAQAogCQkJCTg1NEZFNzMyMEEyMjk3
QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg1NEZFNzM0MEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTdGNUQ5NEYxMzg0RjAyRDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3NEYzRUYzMTY3OEIyNEEwMEIwNUE2RSAvKiBOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3RUJGMEExOTQ1
RDAwMEE4RUY1RiAvKiBOb3RhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzUwM0NDNzEw
MTdBMUIxMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMz
OTBDQTU1MEZGQzE1N0IwMDkyMTk2MiAvKiBOb3RpZmljYXRpb25DZW50ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
Y3BwCmluZGV4IGYwMGYyZWZiNDlhMWE0ZTM3MGMzYWZkOTkxOGVhYzBiMTdkOWI2OWEuLjFkMDNj
NTQ3ZTBiNDk4N2UyNjcyMmI5Mzk5ZDZmNWIwZDVmZDJiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0xLDMgKzEsNCBAQAorCiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgpAQCAtNzAsMjUgKzcxLDYgQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVDYW5CZURpc3Ry
aWJ1dGVkKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUg
dm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6OmRp
ZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQot
ewotICAgIGlmICghbV9pbnNlcnRpb25Qb2ludCkgewotICAgICAgICBtX2luc2VydGlvblBvaW50
ID0gaW5zZXJ0aW9uUG9pbnQ7Ci0gICAgICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1f
cmVzZXRTdHlsZUluaGVyaXRhbmNlIHx8IGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJp
dGFuY2UoKTsKLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6UGFyZW50VHJhdmVyc2FsRGV0YWlsczo6ZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0IFNo
YWRvd1Jvb3QqIHJvb3QpCi17Ci0gICAgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgID0gbV9yZXNl
dFN0eWxlSW5oZXJpdGFuY2UgfHwgcm9vdC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7Ci19Ci0K
LWlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0
YWlsczo6ZGlkRmluZE5vZGUoQ29udGFpbmVyTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW1fb3V0
T2ZDb21wb3NpdGlvbikKLSAgICAgICAgbV9ub2RlID0gbm9kZTsKLX0KLQogQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZnJvbUZpcnN0Q2hpbGQoY29u
c3QgTm9kZSogbm9kZSwgUG9saWN5IHBvbGljeSkKIHsKICAgICBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgd2Fsa2VyKG5vZGUsIHBvbGljeSk7CkBAIC05NiwxNCArNzgsNiBAQCBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGlsZChj
b25zdCBOb2RlKiBubwogICAgIHJldHVybiB3YWxrZXI7CiB9CiAKLXZvaWQgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOjpmaW5kUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNh
bERldGFpbHMqIGRldGFpbHMpCi17Ci0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtl
cihub2RlLCBDcm9zc1VwcGVyQm91bmRhcnksIENhblN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsK
LSAgICBDb250YWluZXJOb2RlKiBmb3VuZCA9IHRvQ29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVy
c2VQYXJlbnQod2Fsa2VyLmdldCgpLCBkZXRhaWxzKSk7Ci0gICAgaWYgKGZvdW5kKQotICAgICAg
ICBkZXRhaWxzLT5kaWRGaW5kTm9kZShmb3VuZCk7Ci19Ci0KIHZvaWQgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjpmaXJzdENoaWxkKCkKIHsKICAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKQEAg
LTE4Myw0NiArMTU3LDYgQEAgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3Vz
U2libGluZygpCiAgICAgYXNzZXJ0UG9zdGNvbmRpdGlvbigpOwogfQogCi12b2lkIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjo6cHNldWRvQXdhcmVOZXh0U2libGluZygpCi17Ci0gICAgYXNzZXJ0
UHJlY29uZGl0aW9uKCk7Ci0KLSAgICBjb25zdCBOb2RlKiBub2RlID0gbV9ub2RlOwotCi0gICAg
aWYgKG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKQotICAgICAgICBtX25vZGUgPSB0cmF2
ZXJzZUZpcnN0Q2hpbGQodHJhdmVyc2VQYXJlbnQobm9kZSkpOwotICAgIGVsc2UKLSAgICAgICAg
bV9ub2RlID0gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChub2RlLCBUcmF2
ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKLQotICAgIGlmICghbV9ub2RlICYmICFub2RlLT5pc0Fm
dGVyUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIE5vZGUqIHBhcmVudCA9IHRyYXZlcnNlUGFy
ZW50KG5vZGUpOwotICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgp
KQotICAgICAgICAgICAgbV9ub2RlID0gdG9FbGVtZW50KHBhcmVudCktPmFmdGVyUHNldWRvRWxl
bWVudCgpOwotICAgIH0KLQotICAgIGFzc2VydFBvc3Rjb25kaXRpb24oKTsKLX0KLQotdm9pZCBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJlUHJldmlvdXNTaWJsaW5nKCkKLXsK
LSAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKLQotICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBtX25v
ZGU7Ci0KLSAgICBpZiAobm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbV9u
b2RlID0gdHJhdmVyc2VMYXN0Q2hpbGQodHJhdmVyc2VQYXJlbnQobm9kZSkpOwotICAgIGVsc2UK
LSAgICAgICAgbV9ub2RlID0gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChu
b2RlLCBUcmF2ZXJzYWxEaXJlY3Rpb25CYWNrd2FyZCk7Ci0KLSAgICBpZiAoIW1fbm9kZSAmJiAh
bm9kZS0+aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkpIHsKLSAgICAgICAgTm9kZSogcGFyZW50ID0g
dHJhdmVyc2VQYXJlbnQobm9kZSk7Ci0gICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0Vs
ZW1lbnROb2RlKCkpCi0gICAgICAgICAgICBtX25vZGUgPSB0b0VsZW1lbnQocGFyZW50KS0+YmVm
b3JlUHNldWRvRWxlbWVudCgpOwotICAgIH0KLQotICAgIGFzc2VydFBvc3Rjb25kaXRpb24oKTsK
LX0KLQogTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZURpc3RyaWJ1dGVk
Tm9kZXMoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBv
aW50LCBUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGZvciAoY29uc3QgTm9k
ZSogbmV4dCA9IG5vZGU7IG5leHQ7IG5leHQgPSAoZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVj
dGlvbkZvcndhcmQgPyBpbnNlcnRpb25Qb2ludC0+bmV4dFRvKG5leHQpIDogaW5zZXJ0aW9uUG9p
bnQtPnByZXZpb3VzVG8obmV4dCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmgKaW5kZXggNGI2ZmY5NTZhNDUxOWI4ZDYwMjQ4MzFmMjc1ODhhNjRj
NGFhOWQwMi4uYjgwOWEyNmFjNDk5MmE4NTVhZTRlYjI5NDAzZjgxMzkyN2I1M2IxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2RlZmluZSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJfaAogCiAjaW5jbHVkZSAi
SW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw2ICs0
MCw4IEBAIGNsYXNzIFNoYWRvd1Jvb3Q7CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODI3MDIKIGNsYXNzIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB7CiBwdWJs
aWM6CisgICAgdHlwZWRlZiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzIFBh
cmVudFRyYXZlcnNhbERldGFpbHM7CisKICAgICBlbnVtIFBvbGljeSB7CiAgICAgICAgIENyb3Nz
VXBwZXJCb3VuZGFyeSwKICAgICAgICAgRG9Ob3RDcm9zc1VwcGVyQm91bmRhcnksCkBAIC00OSwz
OCArNTIsMTEgQEAgcHVibGljOgogICAgICAgICBDYW5ub3RTdGFydEZyb21TaGFkb3dCb3VuZGFy
eQogICAgIH07CiAKLSAgICBjbGFzcyBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIFBhcmVudFRyYXZlcnNhbERldGFpbHMoKQotICAgICAgICAgICAgOiBtX25v
ZGUoMCkKLSAgICAgICAgICAgICwgbV9pbnNlcnRpb25Qb2ludCgwKQotICAgICAgICAgICAgLCBt
X3Jlc2V0U3R5bGVJbmhlcml0YW5jZShmYWxzZSkKLSAgICAgICAgICAgICwgbV9vdXRPZkNvbXBv
c2l0aW9uKGZhbHNlKQotICAgICAgICB7IH0KLQotICAgICAgICBDb250YWluZXJOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgICAgIEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KLSAgICAgICAg
Ym9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc2V0U3R5bGVJ
bmhlcml0YW5jZTsgfQotICAgICAgICBib29sIG91dE9mQ29tcG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX291dE9mQ29tcG9zaXRpb247IH0KLQotICAgICAgICB2b2lkIGRpZEZpbmROb2RlKENv
bnRhaW5lck5vZGUqKTsKLSAgICAgICAgdm9pZCBkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KElu
c2VydGlvblBvaW50Kik7Ci0gICAgICAgIHZvaWQgZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0
IFNoYWRvd1Jvb3QqKTsKLSAgICAgICAgdm9pZCBjaGlsZFdhc091dE9mQ29tcG9zaXRpb24oKSB7
IG1fb3V0T2ZDb21wb3NpdGlvbiA9IHRydWU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENv
bnRhaW5lck5vZGUqIG1fbm9kZTsKLSAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIG1faW5zZXJ0aW9u
UG9pbnQ7Ci0gICAgICAgIGJvb2wgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2U7Ci0gICAgICAgIGJv
b2wgbV9vdXRPZkNvbXBvc2l0aW9uOwotICAgIH07Ci0KICAgICBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIoY29uc3QgTm9kZSosIFBvbGljeSA9IENyb3NzVXBwZXJCb3VuZGFyeSwgU3RhcnRQb2xp
Y3kgPSBDYW5ub3RTdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7CiAKICAgICAvLyBGb3IgYSBjb21t
b24gdXNlIGNhc2Ugc3VjaCBhczoKICAgICAvLyBmb3IgKENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZyb21GaXJzdENoaWxkKG5vZGUp
OyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5uZXh0U2libGluZygpKQogICAgIHN0YXRpYyBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgZnJvbUZpcnN0Q2hpbGQoY29uc3QgTm9kZSosIFBvbGljeSA9IENy
b3NzVXBwZXJCb3VuZGFyeSk7Ci0gICAgc3RhdGljIHZvaWQgZmluZFBhcmVudChjb25zdCBOb2Rl
KiwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyopOwogCiAgICAgTm9kZSogZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obV9ub2RlKTsgfQogCkBAIC05MCwxNCArNjYsMTMgQEAg
cHVibGljOgogICAgIHZvaWQgbmV4dFNpYmxpbmcoKTsKICAgICB2b2lkIHByZXZpb3VzU2libGlu
ZygpOwogCi0gICAgdm9pZCBwc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCk7Ci0gICAgdm9pZCBwc2V1
ZG9Bd2FyZVByZXZpb3VzU2libGluZygpOwotCiAgICAgdm9pZCBwYXJlbnQoKTsKIAogICAgIHZv
aWQgbmV4dCgpOwogICAgIHZvaWQgcHJldmlvdXMoKTsKIAorICAgIE5vZGUqIHRyYXZlcnNlUGFy
ZW50KGNvbnN0IE5vZGUqLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiA9IDApIGNvbnN0OworCiBw
cml2YXRlOgogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihjb25zdCBOb2RlKiwgUGFyZW50
VHJhdmVyc2FsRGV0YWlscyopOwogCkBAIC0xMzQsNyArMTA5LDYgQEAgcHJpdmF0ZToKICAgICBO
b2RlKiB0cmF2ZXJzZUZpcnN0Q2hpbGQoY29uc3QgTm9kZSopIGNvbnN0OwogICAgIE5vZGUqIHRy
YXZlcnNlTGFzdENoaWxkKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZUNo
aWxkKGNvbnN0IE5vZGUqLCBUcmF2ZXJzYWxEaXJlY3Rpb24pIGNvbnN0OwotICAgIE5vZGUqIHRy
YXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiA9IDApIGNv
bnN0OwogCiAgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSop
OwogICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA2OWI5MTg1MjYwN2VjZjNkYjc2ZWMx
M2FlNjRiNzhhZTIyNzZhNzk1Li44ZjE0M2I0MTU3ZTNiMzVmMTRkM2U4M2QwOGE1MzdmODQ1MzRh
ZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTI2NSw2ICsyNjUsMTQgQEAg
aW5saW5lIE5vZGUqIE5vZGU6OmhpZ2hlc3RBbmNlc3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIGhp
Z2hlc3Q7CiB9CiAKK2lubGluZSBib29sIE5vZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtlcigpIGNv
bnN0Cit7CisgICAgaWYgKGdldEZsYWcoTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZykpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBhcmVudE9ySG9z
dE5vZGUoKTsKKyAgICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC0+Z2V0RmxhZyhOZWVkc1NoYWRv
d1RyZWVXYWxrZXJGbGFnKTsKK30KKwogLy8gVGhpcyBjb25zdGFudCBjb250cm9scyBob3cgbXVj
aCBidWZmZXIgaXMgaW5pdGlhbGx5IGFsbG9jYXRlZAogLy8gZm9yIGEgTm9kZSBWZWN0b3IgdGhh
dCBpcyB1c2VkIHRvIHN0b3JlIGNoaWxkIE5vZGVzIG9mIGEgZ2l2ZW4gTm9kZS4KIC8vIEZJWE1F
OiBPcHRpbWl6ZSB0aGUgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
QWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCA5
Mjk2YTE5YTFjYjllNGE0ODA2ZjM0MzliNzgyYzI1NzRiMWNhNTY5Li41OWY1OWJlYmMxNzkwODkw
NTMxNWE0OTJmOGYwYTk2MjE5NzYwYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAK
QEAgLTEwNSw2ICsxMDUsNyBAQAogI2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIgog
I2luY2x1ZGUgIk5vZGVJdGVyYXRvci5jcHAiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIgogI2luY2x1ZGUg
Ik5vdGF0aW9uLmNwcCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmNwcCIKICNpbmNsdWRlICJQ
YWdlVHJhbnNpdGlvbkV2ZW50LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0NDk4ZDMy
OWE1Yjk5ZTg4ZmM5ZDE0N2I5NTE3ZDNiYjAyOTAwYmFmLi45MGI5YmU2NzNjMTM0NTQ0NGU5OWNh
ZmEwOTA3M2FhOGQ5NWIwNGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMDk4LDcgKzIw
OTgsNyBAQCB2b2lkIEVsZW1lbnQ6Om5vcm1hbGl6ZUF0dHJpYnV0ZXMoKQogCiB2b2lkIEVsZW1l
bnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoUHNldWRvSWQgcHNldWRvSWQsIFN0eWxlQ2hhbmdlIGNo
YW5nZSkKIHsKLSAgICBQc2V1ZG9FbGVtZW50KiBleGlzdGluZyA9IGhhc1JhcmVEYXRhKCkgPyBl
bGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChwc2V1ZG9JZCkgOiAwOworICAgIFBzZXVk
b0VsZW1lbnQqIGV4aXN0aW5nID0gcHNldWRvRWxlbWVudChwc2V1ZG9JZCk7CiAgICAgaWYgKGV4
aXN0aW5nKSB7CiAgICAgICAgIC8vIFBzZXVkb0VsZW1lbnQgc3R5bGVzIGhhbmcgb2ZmIHRoZWly
IHBhcmVudCBlbGVtZW50J3Mgc3R5bGUgc28gaWYgd2UgbmVlZGVkCiAgICAgICAgIC8vIGEgc3R5
bGUgcmVjYWxjIHdlIHNob3VsZCBGb3JjZSBvbmUgb24gdGhlIHBzZXVkby4KQEAgLTIxMDksMTAg
KzIxMDksMTAgQEAgdm9pZCBFbGVtZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkIHBz
ZXVkb0lkLCBTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgICAgIC8vIHdoZW4gUmVuZGVyT2JqZWN0
Ojppc0NoaWxkQWxsb3dlZCBvbiBvdXIgcGFyZW50IHJldHVybnMgZmFsc2UgZm9yIHRoZQogICAg
ICAgICAvLyBQc2V1ZG9FbGVtZW50J3MgcmVuZGVyZXIgZm9yIGVhY2ggc3R5bGUgcmVjYWxjLgog
ICAgICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVk
KHJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKSkpCi0gICAgICAgICAg
ICBlbGVtZW50UmFyZURhdGEoKS0+c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgMCk7CisgICAg
ICAgICAgICBzZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCAwKTsKICAgICB9IGVsc2UgaWYgKFJl
ZlB0cjxQc2V1ZG9FbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlUHNldWRvRWxlbWVudElmTmVlZGVk
KHBzZXVkb0lkKSkgewogICAgICAgICBlbGVtZW50LT5hdHRhY2goKTsKLSAgICAgICAgZW5zdXJl
RWxlbWVudFJhcmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1lbnQucmVs
ZWFzZSgpKTsKKyAgICAgICAgc2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxlbWVudC5yZWxl
YXNlKCkpOwogICAgIH0KIH0KIApAQCAtMjEzMywxNiArMjEzMywyMyBAQCBQYXNzUmVmUHRyPFBz
ZXVkb0VsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZVBzZXVkb0VsZW1lbnRJZk5lZWRlZChQc2V1ZG9J
ZCBwc2V1ZG9JZAogICAgIHJldHVybiBQc2V1ZG9FbGVtZW50OjpjcmVhdGUodGhpcywgcHNldWRv
SWQpOwogfQogCi1Qc2V1ZG9FbGVtZW50KiBFbGVtZW50OjpiZWZvcmVQc2V1ZG9FbGVtZW50KCkg
Y29uc3QKK2Jvb2wgRWxlbWVudDo6aGFzUHNldWRvRWxlbWVudHMoKSBjb25zdAogewotICAgIHJl
dHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQoQkVG
T1JFKSA6IDA7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCkt
Pmhhc1BzZXVkb0VsZW1lbnRzKCk7CiB9CiAKLVBzZXVkb0VsZW1lbnQqIEVsZW1lbnQ6OmFmdGVy
UHNldWRvRWxlbWVudCgpIGNvbnN0CitQc2V1ZG9FbGVtZW50KiBFbGVtZW50Ojpwc2V1ZG9FbGVt
ZW50KFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgp
ID8gZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQoQUZURVIpIDogMDsKKyAgICByZXR1
cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KHBzZXVk
b0lkKSA6IDA7CiB9CiAKK3ZvaWQgRWxlbWVudDo6c2V0UHNldWRvRWxlbWVudChQc2V1ZG9JZCBw
c2V1ZG9JZCwgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBlbGVtZW50KQoreworICAgIGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpLT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVtZW50KTsK
KyAgICByZXNldE5lZWRzU2hhZG93VHJlZVdhbGtlcigpOworfQorCisKIC8vIEVsZW1lbnRUcmF2
ZXJzYWwgQVBJCiBFbGVtZW50KiBFbGVtZW50OjpmaXJzdEVsZW1lbnRDaGlsZCgpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCA4NDM1MmMzZDIxNjRkNzRiNTNmMjRmNGIzNzdmYTBiZTYz
ZGFmNzNjLi42NmFhZDZlOWQwODJiOTM3ZGZmYTQ1YWJlOWQxM2QzMTgxYjE5ZmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTM2Niw4ICszNjYsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYXJzaW5n
Q2hpbGRyZW4oKTsKIAotICAgIFBzZXVkb0VsZW1lbnQqIGJlZm9yZVBzZXVkb0VsZW1lbnQoKSBj
b25zdDsKLSAgICBQc2V1ZG9FbGVtZW50KiBhZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdDsKKyAg
ICBib29sIGhhc1BzZXVkb0VsZW1lbnRzKCkgY29uc3Q7CisgICAgUHNldWRvRWxlbWVudCogcHNl
dWRvRWxlbWVudChQc2V1ZG9JZCkgY29uc3Q7CisgICAgUHNldWRvRWxlbWVudCogYmVmb3JlUHNl
dWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVkb0VsZW1lbnQoQkVGT1JFKTsgfQorICAg
IFBzZXVkb0VsZW1lbnQqIGFmdGVyUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHBzZXVk
b0VsZW1lbnQoQUZURVIpOyB9CisgICAgYm9vbCBjaGlsZE5lZWRzU2hhZG93V2Fsa2VyKCkgY29u
c3Q7CisgICAgdm9pZCBkaWRTaGFkb3dUcmVlQXdhcmVDaGlsZHJlbkNoYW5nZSgpOwogCiAgICAg
Ly8gRWxlbWVudFRyYXZlcnNhbCBBUEkKICAgICBFbGVtZW50KiBmaXJzdEVsZW1lbnRDaGlsZCgp
IGNvbnN0OwpAQCAtNTAwLDYgKzUwNCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkLCBTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsK
ICAgICBQYXNzUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IGNyZWF0ZVBzZXVkb0VsZW1lbnRJZk5lZWRl
ZChQc2V1ZG9JZCk7CisgICAgdm9pZCBzZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lkLCBQYXNzUmVm
UHRyPFBzZXVkb0VsZW1lbnQ+KTsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgZm9y
IEF0dHIgdG8gY2FsbCB3aWxsTW9kaWZ5QXR0cmlidXRlL2RpZE1vZGlmeUF0dHJpYnV0ZS4KICAg
ICBmcmllbmQgY2xhc3MgQXR0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRl
eCA3OTA1Y2I1NDhlNWZmYzQ5ZjIwNGEzOWRlYzUwMWM0MDllZDJmYTE1Li5jMmQ3YTlkNzA2Nzg2
NzZhN2JmYjVmZWNmNTA3ZDEwMzg0ZjYxZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UHNldWRvRWxl
bWVudChQc2V1ZG9JZCwgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50Pik7CiAgICAgUHNldWRvRWxl
bWVudCogcHNldWRvRWxlbWVudChQc2V1ZG9JZCkgY29uc3Q7CisgICAgYm9vbCBoYXNQc2V1ZG9F
bGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdGVkQmVmb3JlIHx8IG1fZ2VuZXJhdGVk
QWZ0ZXI7IH0KIAogICAgIHZvaWQgcmVzZXRDb21wdXRlZFN0eWxlKCk7CiAgICAgdm9pZCByZXNl
dER5bmFtaWNSZXN0eWxlT2JzZXJ2YXRpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRv
dy5jcHAKaW5kZXggM2NlYTY0ZTc1ZDNiZTQyY2I5OTllN2Y2NDEzYTZjOGZmMGI0OWNlYS4uNGM2
NWRlNDgyM2FmOTk5ODk1OWNmZjZmOWIyZDMyNjMzNjUyYTVkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50U2hhZG93LmNwcApAQCAtODcsNiArODcsOSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFk
ZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBz
aAogICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9zdCk7CiAgICAgQ2hpbGROb2Rl
SW5zZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkpOwog
CisgICAgLy8gRXhpc3RlbmNlIG9mIHNoYWRvdyByb290cyByZXF1aXJlcyB0aGUgaG9zdCBhbmQg
aXRzIGNoaWxkcmVuIHRvIGRvIHRyYXZlcnNhbCB1c2luZyBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuCisgICAgc2hhZG93SG9zdC0+c2V0TmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCk7CisKICAgICAv
LyBGSVhNRSg5NDkwNSk6IFNoYWRvd0hvc3Qgc2hvdWxkIGJlIHJlYXR0YWNoZWQgZHVyaW5nIHJl
Y2FsY1N0eWxlLgogICAgIC8vIFNldCBzb21lIGZsYWcgaGVyZSBhbmQgcmVjcmVhdGUgc2hhZG93
IGhvc3RzJyByZW5kZXJlciBpbgogICAgIC8vIEVsZW1lbnQ6OnJlY2FsY1N0eWxlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IGFlYWE1ZTE2YzkxZjZjZDkwNGQ1NzFmOWE2YTJhMjQzMzRkZTc0ZWEuLjgy
ZWMzYWY5OTcyMGIxM2QzOGVlYjQ2OGQxYjdlZjlhYWJmYzUwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTEyOTAsNiArMTI5MCwxMCBAQCBFbGVtZW50KiBOb2RlOjpwYXJlbnRPckhvc3RFbGVtZW50
KCkgY29uc3QKICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCk7CiB9CiAKK2Jvb2wgTm9kZTo6
bmVlZHNTaGFkb3dUcmVlV2Fsa2VyU2xvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIChpc1NoYWRv
d1Jvb3QoKSB8fCAoaXNFbGVtZW50Tm9kZSgpICYmIChpc0luc2VydGlvblBvaW50KCkgfHwgaXNQ
c2V1ZG9FbGVtZW50KCkgfHwgdG9FbGVtZW50KHRoaXMpLT5oYXNQc2V1ZG9FbGVtZW50cygpIHx8
IHRvRWxlbWVudCh0aGlzKS0+c2hhZG93KCkpKSk7Cit9CiAKIGJvb2wgTm9kZTo6aXNCbG9ja0Zs
b3coKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTA1MzliYjlkMGYzM2Y2ZjczNjFlZDgzM2Mw
YmNmYWY0NjJjNmU0My4uODNkZjFkZTU2ZmU5ZWQyOGE3OGVkZTczZGMyZWFkOTVjYmZlNGUyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCkBAIC0yNDcsMTAgKzI0NywxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzRnJhbWVPd25lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1BsdWdpbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBkb2N1bWVudEZyYWdtZW50SXNTaGFkb3dSb290KCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzSW5zZXJ0aW9uUG9pbnROb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKwogICAgIGJvb2wgaXNEb2N1bWVudE5vZGUoKSBjb25zdDsKICAgICBib29sIGlzRG9jdW1l
bnRGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNEb2N1bWVudEZyYWdtZW50Rmxh
Zyk7IH0KICAgICBib29sIGlzU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGlzRG9jdW1lbnRG
cmFnbWVudCgpICYmIGRvY3VtZW50RnJhZ21lbnRJc1NoYWRvd1Jvb3QoKTsgfQotICAgIGJvb2wg
aXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNJbnNlcnRpb25Qb2lu
dEZsYWcpOyB9CisgICAgYm9vbCBpc0luc2VydGlvblBvaW50KCkgY29uc3QgeyByZXR1cm4gZ2V0
RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKSAmJiBpc0luc2VydGlvblBvaW50Tm9kZSgp
OyB9CisKKyAgICBib29sIG5lZWRzU2hhZG93VHJlZVdhbGtlcigpIGNvbnN0OworICAgIGJvb2wg
bmVlZHNTaGFkb3dUcmVlV2Fsa2VyU2xvdygpIGNvbnN0OworICAgIHZvaWQgc2V0TmVlZHNTaGFk
b3dUcmVlV2Fsa2VyKCkgeyBzZXRGbGFnKE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcpOyB9Cisg
ICAgdm9pZCByZXNldE5lZWRzU2hhZG93VHJlZVdhbGtlcigpIHsgc2V0RmxhZyhuZWVkc1NoYWRv
d1RyZWVXYWxrZXJTbG93KCksIE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcpOyB9CisKICAgICBi
b29sIGluTmFtZWRGbG93KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJbk5hbWVkRmxvd0ZsYWcp
OyB9CiAgICAgYm9vbCBoYXNDdXN0b21DYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcpOyB9CiAKQEAgLTcwMyw3ICs3MTEsNyBAQCBwcml2YXRl
OgogICAgICAgICBIYXNTY29wZWRIVE1MU3R5bGVDaGlsZEZsYWcgPSAxIDw8IDIyLAogICAgICAg
ICBIYXNFdmVudFRhcmdldERhdGFGbGFnID0gMSA8PCAyMywKICAgICAgICAgVjhDb2xsZWN0YWJs
ZUR1cmluZ01pbm9yR0NGbGFnID0gMSA8PCAyNCwKLSAgICAgICAgSXNJbnNlcnRpb25Qb2ludEZs
YWcgPSAxIDw8IDI1LAorICAgICAgICBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnID0gMSA8PCAy
NSwKIAogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hl
ZEZsYWcKICAgICB9OwpAQCAtNzIxLDE1ICs3MjksMTUgQEAgcHJvdGVjdGVkOgogICAgICAgICBD
cmVhdGVUZXh0ID0gRGVmYXVsdE5vZGVGbGFncyB8IElzVGV4dEZsYWcsCiAgICAgICAgIENyZWF0
ZUNvbnRhaW5lciA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc0NvbnRhaW5lckZsYWcsIAogICAgICAg
ICBDcmVhdGVFbGVtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNFbGVtZW50RmxhZywgCi0gICAg
ICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3JlYXRlRWxlbWVudCB8IEluRG9jdW1lbnRGbGFn
LAotICAgICAgICBDcmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVu
dEZyYWdtZW50RmxhZywKKyAgICAgICAgQ3JlYXRlUHNldWRvRWxlbWVudCA9ICBDcmVhdGVFbGVt
ZW50IHwgSW5Eb2N1bWVudEZsYWcgfCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnLAorICAgICAg
ICBDcmVhdGVTaGFkb3dSb290ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50
RmxhZyB8IE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcsCiAgICAgICAgIENyZWF0ZURvY3VtZW50
RnJhZ21lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJc0RvY3VtZW50RnJhZ21lbnRGbGFnLAogICAg
ICAgICBDcmVhdGVTdHlsZWRFbGVtZW50ID0gQ3JlYXRlRWxlbWVudCB8IElzU3R5bGVkRWxlbWVu
dEZsYWcsIAogICAgICAgICBDcmVhdGVIVE1MRWxlbWVudCA9IENyZWF0ZVN0eWxlZEVsZW1lbnQg
fCBJc0hUTUxGbGFnLCAKICAgICAgICAgQ3JlYXRlRnJhbWVPd25lckVsZW1lbnQgPSBDcmVhdGVI
VE1MRWxlbWVudCB8IEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcsCiAgICAgICAgIENyZWF0ZVNWR0Vs
ZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNTVkdGbGFnLAogICAgICAgICBDcmVhdGVE
b2N1bWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IEluRG9jdW1lbnRGbGFnLAotICAgICAgICBDcmVh
dGVJbnNlcnRpb25Qb2ludCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgSXNJbnNlcnRpb25Qb2ludEZs
YWcsCisgICAgICAgIENyZWF0ZUluc2VydGlvblBvaW50ID0gQ3JlYXRlSFRNTEVsZW1lbnQgfCBO
ZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnLAogICAgICAgICBDcmVhdGVFZGl0aW5nVGV4dCA9IENy
ZWF0ZVRleHQgfCBIYXNOYW1lT3JJc0VkaXRpbmdUZXh0RmxhZywKICAgICB9OwogICAgIE5vZGUo
RG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDEzMTg3YjU2Y2FlYTg2MWNhNjY1YjdjYWQwOTE5ZWY5
M2NhZmQyN2YuLjY3MzA1Y2EyMGU1ZjdmNTM5NjMxMjg3MmQ5ZjQwNzgxMDExYjRiYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0
LmgiCiAKLSNpbmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKICNpbmNsdWRlICJD
b250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVk
ZSAiRWxlbWVudFNoYWRvdy5oIgpAQCAtNTksMTEgKzU4LDEyIEBAIE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgIDogbV9ub2RlKG5vZGUp
CiAgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQogewotICAgIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6ZmluZFBhcmVudChtX25vZGUsICZtX3BhcmVudERldGFpbHMpOworICAgIG1fcmVu
ZGVyaW5nUGFyZW50ID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50KG5vZGUsICZtX3Bh
cmVudERldGFpbHMpOwogfQogCiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0Nv
bnRleHQoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIDogbV9ub2RlKG5vZGUp
CisgICAgLCBtX3JlbmRlcmluZ1BhcmVudCgwKQogICAgICwgbV9zdHlsZShzdHlsZSkKICAgICAs
IG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCiB7CkBAIC04MywxMiArODMsMTEgQEAgUmVuZGVyT2Jq
ZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKIAogICAgIC8v
IEF2b2lkIGFuIE8oTl4yKSBwcm9ibGVtIHdpdGggdGhpcyBmdW5jdGlvbiBieSBub3QgY2hlY2tp
bmcgZm9yCiAgICAgLy8gbmV4dFJlbmRlcmVyKCkgd2hlbiB0aGUgcGFyZW50IGVsZW1lbnQgaGFz
bid0IGF0dGFjaGVkIHlldC4KLSAgICBpZiAobV9wYXJlbnREZXRhaWxzLm5vZGUoKSAmJiAhbV9w
YXJlbnREZXRhaWxzLm5vZGUoKS0+YXR0YWNoZWQoKSkKKyAgICBpZiAobV9yZW5kZXJpbmdQYXJl
bnQgJiYgIW1fcmVuZGVyaW5nUGFyZW50LT5hdHRhY2hlZCgpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobV9ub2RlKTsKLSAgICBmb3Ig
KHdhbGtlci5wc2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBz
ZXVkb0F3YXJlTmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHdhbGtlci5nZXQoKS0+cmVuZGVyZXIoKSkgeworICAgIGZvciAoTm9kZSogc2libGlu
ZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKG1fbm9kZSk7IHNpYmxpbmc7
IHNpYmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZyhzaWJsaW5nKSkg
eworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVudHMgYXR0YWNoZWQgdG8g
YSBmbG93IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgYXJlIHBhcmVudGVk
IGRpZmZlcmVudGx5LgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVu
dE5vZGUoKSAmJiByZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmZsb3dU
aHJlYWQoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMDksMTAg
KzEwOCw4IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVu
ZGVyZXIoKSBjb25zdAogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8o
Tl4yKSBhdm9pZGFuY2UgYXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVu
IEkgdHJpZWQgYWRkaW5nIGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KLQotICAgIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlciB3YWxrZXIobV9ub2RlKTsKLSAgICBmb3IgKHdhbGtlci5wc2V1ZG9B
d2FyZVByZXZpb3VzU2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wc2V1ZG9Bd2FyZVBy
ZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
d2Fsa2VyLmdldCgpLT5yZW5kZXJlcigpKSB7CisgICAgZm9yIChOb2RlKiBzaWJsaW5nID0gTm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKG1fbm9kZSk7IHNpYmxpbmc7IHNp
YmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoc2libGluZykp
IHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJl
cigpKSB7CiAgICAgICAgICAgICAvLyBSZW5kZXJlcnMgZm9yIGVsZW1lbnRzIGF0dGFjaGVkIHRv
IGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNraXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBwYXJlbnRl
ZCBkaWZmZXJlbnRseS4KICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1l
bnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxlKCkgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5mbG93
VGhyZWFkKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTMwLDIx
ICsxMjcsMjEgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVu
ZGVyZXIoKSBjb25zdAogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKICAgICAgICAgcmV0
dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwogCi0gICAgcmV0dXJuIG1fcGFyZW50RGV0YWlscy5u
b2RlKCkgPyBtX3BhcmVudERldGFpbHMubm9kZSgpLT5yZW5kZXJlcigpIDogMDsKKyAgICByZXR1
cm4gbV9yZW5kZXJpbmdQYXJlbnQgPyBtX3JlbmRlcmluZ1BhcmVudC0+cmVuZGVyZXIoKSA6IDA7
CiB9CiAKIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fbm9kZS0+ZG9jdW1lbnQoKS0+c2hvdWxkQ3JlYXRlUmVuZGVy
ZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fcGFyZW50RGV0YWlscy5u
b2RlKCkpCisgICAgaWYgKCFtX3JlbmRlcmluZ1BhcmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSB0aGlzLT5wYXJlbnRSZW5kZXJl
cigpOwogICAgIGlmICghcGFyZW50UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIXBhcmVudFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghbV9wYXJlbnREZXRhaWxzLm5vZGUoKS0+Y2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcigqdGhpcykpCisgICAgaWYgKCFtX3JlbmRlcmluZ1BhcmVudC0+Y2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcigqdGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKaW5k
ZXggN2RhNDhlMjlhNDI3ZDlhZTc0YzYzMjRlYzQyYThiZTAyNDFlYmI2My4uYzA3OTc3NmRjODIw
ODJkNGQ1ZGZmMTU5NTIxOTg1NTU1NmZiZDE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5kZWYgTm9kZVJlbmRlcmlu
Z0NvbnRleHRfaAogI2RlZmluZSBOb2RlUmVuZGVyaW5nQ29udGV4dF9oCiAKLSNpbmNsdWRlICJD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsLmgiCisKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC02OSw3ICs3MCw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtb3ZlVG9GbG93VGhyZWFkSWZOZWVkZWQoKTsKIAogICAg
IE5vZGUqIG1fbm9kZTsKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZl
cnNhbERldGFpbHMgbV9wYXJlbnREZXRhaWxzOworICAgIENvbnRhaW5lck5vZGUqIG1fcmVuZGVy
aW5nUGFyZW50OworICAgIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHMgbV9w
YXJlbnREZXRhaWxzOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKICAgICBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwogICAgIEF0b21pY1N0cmlu
ZyBtX2Zsb3dUaHJlYWQ7CkBAIC04Miw3ICs4NCw3IEBAIGlubGluZSBOb2RlKiBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6bm9kZSgpIGNvbnN0CiAKIGlubGluZSBDb250YWluZXJOb2RlKiBOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wYXJlbnREZXRhaWxzLm5vZGUoKTsKKyAgICByZXR1cm4gbV9yZW5kZXJp
bmdQYXJlbnQ7CiB9CiAKIGlubGluZSBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpyZXNldFN0
eWxlSW5oZXJpdGFuY2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjOWFmYWMxNjk2MjI1NjkxYmZhNzc1OTA2YzAw
ZDBjM2M4MDk2OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ1RyYXZlcnNhbC5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCisKKyNpbmNsdWRlICJDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwgewor
Cit2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9u
UG9pbnQqIGluc2VydGlvblBvaW50KQoreworICAgIGlmICghbV9pbnNlcnRpb25Qb2ludCkgewor
ICAgICAgICBtX2luc2VydGlvblBvaW50ID0gaW5zZXJ0aW9uUG9pbnQ7CisgICAgICAgIG1fcmVz
ZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlIHx8IGluc2VydGlv
blBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgUGFyZW50
RGV0YWlsczo6ZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0IFNoYWRvd1Jvb3QqIHJvb3QpCit7
CisgICAgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgID0gbV9yZXNldFN0eWxlSW5oZXJpdGFuY2Ug
fHwgcm9vdC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7Cit9CisKK0NvbnRhaW5lck5vZGUqIHBh
cmVudFNsb3coY29uc3QgTm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKK3sKKyAg
ICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6Q3Jvc3NVcHBlckJvdW5kYXJ5LCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNh
blN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsKKyAgICBDb250YWluZXJOb2RlKiBmb3VuZCA9IHRv
Q29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVyc2VQYXJlbnQod2Fsa2VyLmdldCgpLCBkZXRhaWxz
KSk7CisgICAgcmV0dXJuIGRldGFpbHMtPm91dE9mQ29tcG9zaXRpb24oKSA/IDAgOiBmb3VuZDsK
K30KKworTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKKyAgICBpZiAobm9kZS0+aXNCZWZv
cmVQc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgd2Fsa2VyLnBhcmVudCgpOworICAgICAgICB3
YWxrZXIuZmlyc3RDaGlsZCgpOworICAgIH0gZWxzZQorICAgICAgICB3YWxrZXIubmV4dFNpYmxp
bmcoKTsKKworICAgIGlmICh3YWxrZXIuZ2V0KCkgfHwgbm9kZS0+aXNBZnRlclBzZXVkb0VsZW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKworICAgIE5vZGUqIHBhcmVudCA9
IHdhbGtlci50cmF2ZXJzZVBhcmVudChub2RlKTsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+
aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCktPmFmdGVy
UHNldWRvRWxlbWVudCgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK05vZGUqIHByZXZpb3VzU2li
bGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIgd2Fsa2VyKG5vZGUpOworICAgIGlmIChub2RlLT5pc0FmdGVyUHNldWRvRWxlbWVudCgpKSB7
CisgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKKyAgICAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwor
ICAgIH0gZWxzZQorICAgICAgICB3YWxrZXIucHJldmlvdXNTaWJsaW5nKCk7CisKKyAgICBpZiAo
d2Fsa2VyLmdldCgpIHx8IG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKQorICAgICAgICBy
ZXR1cm4gd2Fsa2VyLmdldCgpOworCisgICAgTm9kZSogcGFyZW50ID0gd2Fsa2VyLnRyYXZlcnNl
UGFyZW50KG5vZGUpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkp
CisgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KS0+YmVmb3JlUHNldWRvRWxlbWVudCgp
OworCisgICAgcmV0dXJuIDA7Cit9CisKK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MDQzZGUyN2Yw
OTM0Y2VlNTk1ZDEyNGM1NGEzZGE0Yzg4MGI3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsX2gKKyNkZWZpbmUgTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbF9oCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CisKK25hbWVzcGFjZSBOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsIHsKKworY2xhc3MgUGFyZW50RGV0YWlscyB7CitwdWJsaWM6CisgICAgUGFyZW50RGV0YWls
cygpCisgICAgICAgIDogbV9pbnNlcnRpb25Qb2ludCgwKQorICAgICAgICAsIG1fcmVzZXRTdHls
ZUluaGVyaXRhbmNlKGZhbHNlKQorICAgICAgICAsIG1fb3V0T2ZDb21wb3NpdGlvbihmYWxzZSkK
KyAgICB7IH0KKworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOyB9CisgICAgYm9vbCBv
dXRPZkNvbXBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkNvbXBvc2l0aW9uOyB9CisK
KyAgICB2b2lkIGRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqKTsKKyAg
ICB2b2lkIGRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290Kik7CisgICAgdm9p
ZCBjaGlsZFdhc091dE9mQ29tcG9zaXRpb24oKSB7IG1fb3V0T2ZDb21wb3NpdGlvbiA9IHRydWU7
IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJlbnREZXRhaWxzJiBvdGhlcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2luc2VydGlvblBvaW50ID09IG90aGVyLm1faW5zZXJ0aW9u
UG9pbnQKKyAgICAgICAgICAgICYmIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlID09IG90aGVyLm1f
cmVzZXRTdHlsZUluaGVyaXRhbmNlCisgICAgICAgICAgICAmJiBtX291dE9mQ29tcG9zaXRpb24g
PT0gb3RoZXIubV9vdXRPZkNvbXBvc2l0aW9uOworICAgIH0KKworcHJpdmF0ZToKKyAgICBJbnNl
cnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludDsKKyAgICBib29sIG1fcmVzZXRTdHlsZUluaGVy
aXRhbmNlOworICAgIGJvb2wgbV9vdXRPZkNvbXBvc2l0aW9uOworfTsKKworQ29udGFpbmVyTm9k
ZSogcGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7CitDb250YWluZXJOb2RlKiBw
YXJlbnRTbG93KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7CitOb2RlKiBuZXh0U2libGlu
Zyhjb25zdCBOb2RlKik7CitOb2RlKiBuZXh0U2libGluZ1Nsb3coY29uc3QgTm9kZSopOworTm9k
ZSogcHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKK05vZGUqIHByZXZpb3VzU2libGluZ1Ns
b3coY29uc3QgTm9kZSopOworCisKK2lubGluZSBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3Qg
Tm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKK3sKKyAgICBpZiAoIW5vZGUtPm5l
ZWRzU2hhZG93VHJlZVdhbGtlcigpKSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBQYXJlbnRE
ZXRhaWxzIHNsb3dEZXRhaWxzOworICAgICAgICBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpID09
IHBhcmVudFNsb3cobm9kZSwgJnNsb3dEZXRhaWxzKSk7CisgICAgICAgIEFTU0VSVChzbG93RGV0
YWlscyA9PSAqZGV0YWlscyk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5v
ZGVHdWFyYW50ZWVkSG9zdEZyZWUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGFyZW50U2xvdyhu
b2RlLCBkZXRhaWxzKTsKK30KKworaW5saW5lIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUq
IG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSkgeworICAg
ICAgICBBU1NFUlQobmV4dFNpYmxpbmdTbG93KG5vZGUpID09IG5vZGUtPm5leHRTaWJsaW5nKCkp
OworICAgICAgICByZXR1cm4gbm9kZS0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gbmV4dFNpYmxpbmdTbG93KG5vZGUpOworfQorCitpbmxpbmUgTm9kZSogcHJldmlvdXNTaWJs
aW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVX
YWxrZXIoKSkgeworICAgICAgICBBU1NFUlQocHJldmlvdXNTaWJsaW5nU2xvdyhub2RlKSA9PSBu
b2RlLT5wcmV2aW91c1NpYmxpbmcoKSk7CisgICAgICAgIHJldHVybiBub2RlLT5wcmV2aW91c1Np
YmxpbmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJldmlvdXNTaWJsaW5nU2xvdyhub2RlKTsK
K30KKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IGM3N2EyOTU0NDA1MDljNDQ5Njc3ZTQwNjAzMjA4ZDNm
ZGEwYWJmZDkuLmE4ZTU4OTE3YWEzNmQwMTEyNzIwZjhmNWQ4YmYwOGNhYzI1ZTE3MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgUHNldWRvRWxl
bWVudDo6UHNldWRvRWxlbWVudChFbGVtZW50KiBwYXJlbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQog
ICAgIDogRWxlbWVudChwc2V1ZG9FbGVtZW50VGFnTmFtZSgpLCBwYXJlbnQtPmRvY3VtZW50KCks
IENyZWF0ZVBzZXVkb0VsZW1lbnQpCiAgICAgLCBtX3BzZXVkb0lkKHBzZXVkb0lkKQogeworICAg
IEFTU0VSVChwc2V1ZG9JZCAhPSBOT1BTRVVETyk7CiAgICAgQVNTRVJUKHBhcmVudC0+aW5Eb2N1
bWVudCgpKTsKICAgICBzZXRQYXJlbnRPckhvc3ROb2RlKHBhcmVudCk7CiAgICAgc2V0SGFzQ3Vz
dG9tQ2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggZTE3OGU1ZjY1YWJmZjkxZjliMGNk
ZDQwZTg1MGM3ZmRmNjE1OTJlZC4uYjViZGFiYjA5ZDdiZjdjMmIzZDk2MWMwZjc5YzI2MTUxOTAw
OGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIk5vZGVS
ZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKICNpbmNs
dWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiAjaWYgRU5BQkxF
KFNWRykKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAppbmRleCBkNzEwMjFiYjgxZDAzODI3YWJiNWRh
ZGRhODc1YTljODhkODY5ZDRjLi45Y2I0NmYyYTgzODM3ODhhZjAyODEyZGIxOGJkM2QxNWE2NzA0
ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MT3B0R3JvdXBFbGVtZW50LmgiCiAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlJl
bmRlck1lbnVMaXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
CmluZGV4IDM5ODg4ZDhkNjFkZTU3MjI1MGI4MjAzZmEwYWI4Mjk5N2MyNGJiNTkuLmY1MTA5Njg0
MDdlYmI5OTk0ZWQ5ODhjYWY1ZjFiZTA3YzU2ZmYwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBdHRy
aWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFByb2dyZXNzRWxlbWVudC5jcHAKaW5kZXggZWE1ZjQwNzdjMWFkZTQ3NDRhOGMyNzMxYTlhYjBk
ZTgyNDQ2YTJlYS4uMTM2NzU1YmU3YTc2ZmMyYzk3YjYxOTdkNDAyMWViMDFjNmI5N2JhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCkBAIC0yMywxMiAr
MjMsMTMgQEAKIAogI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQogI2luY2x1ZGUgIkF0dHJp
YnV0ZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJQcm9ncmVzcy5oIgogI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCAyMzJi
NTYzZTEyNjcwNDNhYjVhNTJiZTg2NWMzNjhkZTA3M2M1ZjFkLi5hZWRhYzFkMGY3ZDEwZjZkODRl
MTM2MGU4MTAwMzM4YTkwYzgxMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKLQorICAgIHZpcnR1YWwgYm9v
bCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
IHByaXZhdGU6CiAKICAgICBDb250ZW50RGlzdHJpYnV0aW9uIG1fZGlzdHJpYnV0aW9uOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179413</attachid>
            <date>2012-12-13 21:15:34 -0800</date>
            <delta_ts>2012-12-13 22:51:54 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-104332-20121214141253.patch</filename>
            <type>text/plain</type>
            <size>46395</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTU4YjVkMGZkMjAzMjRj
ZDlkMzVhNWI0YjFhN2Q5ZDg1Y2YzN2U0NC4uZjE0ZWQ1OTk4NDU2YmU1MWZkYmNlN2Q1ZmY2Yjlj
Y2FhNTAzY2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0xMi0xMiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgTm9kZVJlbmRlcmlu
Z0NvbnRleHQgaXMgc2xvdyBkdWUgdG8gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAgTm9kZVJlbmRlcmluZ0Nv
bnRleHQgaGFzIHNvbWUgc2xvd25lc3MgZHVlIHRvIHRoZSBjb21wbGV4aXR5IG9mCisgICAgICAg
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB0aGF0IE5SQyByZWxpZXMgb24uIFRoaXMgY2hhbmdl
CisgICAgICAgIGNyZWF0ZXMgc29tZSBmYXN0IHBhdGhzIHRvIGFkZHJlc3Mgc3VjaCBzbG93bmVz
cy4KKworICAgICAgICA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwgbW9kdWxlOgorCisgICAgICAg
IFRoaXMgY2hhbmdlIGludHJvZHVjZXMgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCBuYW1lc3BhY2Us
IGEgc2lzdGVyCisgICAgICAgIG9mIE5vZGVUcmF2ZXJzYWwuIE5SVCBjb25zaXN0cyBvZiBhIHNl
dCBvZiB0cmVlIHRyYXZlcnNhbAorICAgICAgICBmdW5jdGlvbnMgdGhhdCBpcyByZXNwb25zaWJs
ZSBmb3IgdHJhdmVyc2FsIGluIE5SQy4gIEJlZm9yZSB0aGlzCisgICAgICAgIGNoYW5nZSwgTlJD
IGRpcmVjdGx5IHVzZWQgQ1NUVy4gVGhpcyBOUlQgbW9kdWxlIGhpZGVzIGFuZCBuYXJyb3dzCisg
ICAgICAgIHRoZSB1c2FnZSBvZiBDU1RXLgorCisgICAgICAgIC0gVHJhdmVyc2FscyBwcm92aWRl
ZCBieSBOUlQgaGF2ZSBmYXN0IHBhdGhzLiBJbiBtYW55IGNhc2UsIHN1Y2ggdHJhdmVyc2Fscwor
ICAgICAgICAgIGRvbid0IG5lZWQgdG8gdXNlIENTVFcgYW5kIGp1c3QgZ29lcyB0byBuZWlnaGJv
cmluZyBub2RlcyBpbiBhIHBsYWluIERPTSB3YXkuCisgICAgICAgIC0gSXQgYWxzbyBoYW5kbGVz
IE5SQyBzcGVjaWZpYyB0cmF2ZXJzYWwgY29uY2VybnMgbGlrZSBwc2V1ZG8gZWxlbWVudHMuCisg
ICAgICAgICAgQ1NUVzo6cHNldWRvQXdhcmVOZXh0U2libGluZygpIGFuZCBDU1RXOjpwc2V1ZG9B
d2FyZVByZXZpb3VzU2libGluZygpIGFyZQorICAgICAgICAgIG1lcmdlZCBpbnRvIHRoaXMgbW9k
dWxlLgorICAgICAgICAtIENTVFc6OlBhcmVudFRyYXZlcnNhbERldGFpbHMgaXMgbW92ZWQgYW5k
IHJlbmFtZWQgdG8KKyAgICAgICAgICBOUlQ6OlBhcmVudERldGFpbHMgd2l0aCBzbWFsbCBtb2Rp
ZmljYXRpb24uIFRoaXMgaXMgYSBwdXJlCisgICAgICAgICAgcmVmYWN0b3Jpbmc6IEFzIHRoZSBu
YW1lIGltcGxpZXMsIFRoaXMgY2xhc3MgaXMgdXNlZCBvbmx5IGJ5IE5SQworICAgICAgICAgIGFu
ZCB1c2VkIGR1cmluZyBhIHRyYXZlcnNhbCB0aGVyZS4KKworICAgICAgICBOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsIGlzIGFuIGlzb2xhdGlvbiBsYXllciBiZXR3ZWVuIGdlbmVyaWMgRE9NIGFuZCBD
U1RXLiBUaGlzIGhpZGVzIENTVFcKKyAgICAgICAgYmVoaW5kIHRoZSB3YWxsIGFuZCB3aWxsIGhl
bHAgZnVydGhlciByZWR1Y3Rpb24gb2YgaXRzIHVzYWdlLgorCisgICAgICAgID0gTm9kZTo6TmVl
ZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyBmbGFnOgorCisgICAgICAgIE5SVCBmYXN0IHBhdGggaXMg
ZW5hYmxlZCBieSBuZXdseSBpbnRyb2R1Y2VkIE5lZWRzU2hhZG93VHJlZVdhbGtlcgorICAgICAg
ICBub2RlIGZsYWcuIEVhY2ggRE9NIG5vZGUgaXMgbm93IG1hcmtkIGFzIE5lZWRzU2hhZG93VHJl
ZVdhbGtlciBpZgorICAgICAgICBpdCByZXF1aXJlcyBub24tdHJpdmlhbCB0cmF2ZXJzYWwgaW4g
TlJUIHdoaWNoIHVzZXMgQ1NUVy4gVGhpcworICAgICAgICBtZWFucyB0aGF0IGVhY2ggbm9kZSBj
YW4gZ28gZmFzdCBwYXRoIHVubGVzcyBpdCBpcyBtYXJrZWQgd2l0aCB0aGlzIGZsYWcuCisKKyAg
ICAgICAgQSBub2RlIGlzIG1hcmtlZCBhcyBpdCBOZWVkc1NoYWRvd1RyZWVXYWxrZXIgaWY6CisK
KyAgICAgICAgLSBUaGUgbm9kZSBpcyBhIHNoYWRvdyBib3VuZGFyeSBsaWtlIEluc2VydGlvblBv
aW50IG9yIFNoYWRvd1Jvb3QsCisgICAgICAgIC0gVGhlIG5vZGUgaGFzIHBzZXVkbyBlbGVtZW50
cyBsaWtlIGdlbmVyYXRlZCBjb250ZW50IG9yCisgICAgICAgIC0gVGhlIG5vZGUgaXMgYSBwc2V1
ZG8gZWxlbWVudC4KKworICAgICAgICBUaGlzIGNyaXRlcmlhIGlzIGRlZmluZWQgaW4gTm9kZTo6
bmVlZHNTaGFkb3dUcmVlV2Fsa2VyU2xvdygpLiBUaGUgbm9kZSBhY3R1YWxseSBuZWVkcworICAg
ICAgICB0aGUgd2Fsa2VyIGlmIHRoZSBub2RlIG9yIGl0cyBwYXJlbnQgaXMgbWFya2VkIHdpdGgg
dGhpcyBmbGFnLgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBpZGVhIG9mIHRoaXMgY2hhbmdlIHdh
cyBkZW1vbnN0cmF0ZWQgYnkgQW50dGkgS29pdmlzdG8gb24gYnVnIDEwMzIwOCBhbmQgYnVnIDEw
NDUwNy4KKyAgICAgICAgVGhpcyBjaGFnbmUgaGFzIDItMyUgc3BlZWR1cCBvbiBEcm9tYWVvL2Rv
bS1tb2RpZnkvaW5uZXJIVE1MIG9uIEFwcGxlIE1hYy4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcDoK
KyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmg6CisgICAgICAgIChDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIpOiBNb3ZlIHNvbWUgcGFydCB0byBOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtlcik6IEFkZGVkLiBUaGlzIGlzIGxvY2F0ZWQgaGVy
ZSBzaW5jZSBpdCByZWZlcnMgQ29udGFpbmVyTm9kZSBkZWZpbml0aW9uLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogZG9tL0RPTUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50
KTogUmVmYWN0b3JlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc1BzZXVkb0VsZW1l
bnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpwc2V1ZG9FbGVtZW50KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRQc2V1ZG9FbGVtZW50KTogUmVm
YWN0b3JlZCBhbmQgYWRkZWQgYSBmbGFnIHVwZGF0ZSBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmJlZm9yZVBzZXVkb0VsZW1lbnQpOiBSZWZhY3RvcmVkLgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWZ0ZXJQc2V1ZG9FbGVtZW50KTogUmVmYWN0b3JlZC4K
KyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6Omhhc1BzZXVkb0VsZW1lbnRzKTogRmFjdG9yZWQgb3V0LgorICAgICAgICAq
IGRvbS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6
OmFkZFNoYWRvd1Jvb3QpOiBBZGRlZCBhIGZsYWcgdXBkYXRlIGxvZ2ljLgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5lZWRzU2hhZG93VHJlZVdhbGtl
clNsb3cpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6aXNJbnNlcnRpb25Qb2ludE5vZGUpOiBBZGRlZC4KKyAgICAgICAgKE5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNJbnNlcnRpb25Qb2ludCk6IENoYW5nZWQgdG8gdXNlIE5l
ZWRzU2hhZG93VHJlZVdhbGtlckZsYWcuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXROZWVk
c1NoYWRvd1RyZWVXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVzZXROZWVkc1No
YWRvd1RyZWVXYWxrZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6
IEFkb3B0ZWQgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAg
ICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oOiBEaXR0by4KKyAgICAgICAgKE5vZGVSZW5k
ZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojpw
YXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6UGFyZW50RGV0YWlsczo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludCk6IE1vdmVk
IGZyb20gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudFNs
b3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5l
eHRTaWJsaW5nU2xvdyk6IERpdHRvLiBUaGUgb3JpZ2luYWwgd2FzIHBzZXVkb0F3YXJlTmV4dFNp
YmxpbmcuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91
c1NpYmxpbmdTbG93KTogRGl0dG8uIFRoZSBvcmlnaW5hbCB3YXMgcHNldWRvQXdhcmVQcmV2aW91
c1NpYmxpbmcuCisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwpOgor
ICAgICAgICAoUGFyZW50RGV0YWlscyk6IE1vdmVkIGZyb20gQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0
YWlsczo6UGFyZW50RGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsOjpQYXJlbnREZXRhaWxzOjppbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpyZXNldFN0eWxlSW5oZXJp
dGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50
RGV0YWlsczo6b3V0T2ZDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpjaGlsZFdhc091dE9mQ29tcG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpw
YXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNp
YmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlv
dXNTaWJsaW5nKToKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpQc2V1ZG9FbGVtZW50KTogQWRkZWQgYW4gYXNzZXJ0aW9u
LgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVs
ZW1lbnQuY3BwOiBBZGRlZCBhICNpbmNsdWRlIHdoaWNoIHJldmVhbGVkIGJ5IGEgY2hhZ25lIG9u
IE5vZGVSZW5kZXJpbmdDb250ZXh0LmgKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcDogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDogRGl0
by4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOiBBZGRlZCBhbiBvdmVy
cmlkZSBvZiBpc0luc2VydGlvblBvaW50Tm9kZSgpLgorCiAyMDEyLTEyLTEzICBLdW5paGlrbyBT
YWthbW90byAgPGtzYWthbW90b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2Vjb25kcy9NaW51
dGVzIGZpZWxkIG9mIGRhdGUvdGltZSBpbnB1dCBVSSBzaG91bGQgcmVzcGVjdCBzdGVwIGF0dHJp
YnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlODlmZjJlNzNkOTZkYWVhMGEzOTU0OTAyYjAz
MTg0MmEwMzE1Mzg0Li5lMTdkYzAwMzIzMWFiYTBkYWRhNjJlNGRmNTNlNjViZTM2MWExM2ExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTE5NSw2ICsxMTk1LDcgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIGRvbS9Ob2RlSXRlcmF0b3IuY3BwCiAgICAgZG9tL05vZGVSYXJlRGF0YS5jcHAK
ICAgICBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisgICAgZG9tL05vZGVSZW5kZXJpbmdU
cmF2ZXJzYWwuY3BwCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuY3BwCiAgICAgZG9tL05vdGF0aW9u
LmNwcAogICAgIGRvbS9PdmVyZmxvd0V2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggN2JiZDYzNzQ3ZTFhMDM3OTljOTk2ZDNiNTBiNzI4M2E0ODM3YWY0Mi4uZDc0ODIz
OGUzOWI4NDY2NDM5NmQwZmY0MDQ1YTllZmE0ZTliZTUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0yODgwLDYgKzI4ODAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyU3R5bGUuaCBcCiAgICAgU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmF2
ZXJzYWwuY3BwIFwKICAgICBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVRyYXZlcnNhbC5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCmluZGV4IGFhOTA1MWMxYzBmOWM0NDhiZjQwMDcxZTI3NDhhNmU4NDliZmQ3MDkuLmMw
OTUxYjQxOGYwNzRmZTEzY2JiN2RmOTkwOWY4MWJmODk4ZWI0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAt
NDIwLDYgKzQyMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9Ob2RlSXRlcmF0b3IuY3BwIFwK
ICAgICBkb20vTm9kZVJhcmVEYXRhLmNwcCBcCiAgICAgZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcCBcCisgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIFwKICAgICBkb20vTm9k
ZVRyYXZlcnNhbC5jcHAgXAogICAgIGRvbS9Ob3RhdGlvbi5jcHAgXAogICAgIGRvbS9TdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuY3BwIFwKQEAgLTE2MDQsNiArMTYwNSw3IEBAIEhFQURFUlMgKz0gXAog
ICAgIGRvbS9Ob2RlSXRlcmF0b3IuaCBcCiAgICAgZG9tL05vZGVSYXJlRGF0YS5oIFwKICAgICBk
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBcCisgICAgZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuaCBcCiAgICAgZG9tL05vZGVUcmF2ZXJzYWwuaCBcCiAgICAgZG9tL05vdGF0aW9uLmggXAog
ICAgIGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjkw
ZDE4ODE2NGI0NTljMzlkNGExM2UxYjNmMzc2MmU5NTg3MTBlMC4uMDA3M2ZmMjNjYWE5NDUxOWI1
ZjAwNjNjYmM3M2MwNDVjZWY5ZDZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjg0NSw2ICsyODQ1
LDggQEAKICAgICAgICAgICAgICdkb20vTm9kZVJhcmVEYXRhLmgnLAogICAgICAgICAgICAgJ2Rv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVy
aW5nQ29udGV4dC5oJywKKyAgICAgICAgICAgICdkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5j
cHAnLAorICAgICAgICAgICAgJ2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgnLAogICAgICAg
ICAgICAgJ2RvbS9Ob2RlUmVuZGVyU3R5bGUuaCcsCiAgICAgICAgICAgICAnZG9tL05vZGVUcmF2
ZXJzYWwuY3BwJywKICAgICAgICAgICAgICdkb20vTm9kZVRyYXZlcnNhbC5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MWI1
MjE5Mzk1YmNiNzA3MDU4Y2RkZWYwMDgzNTQ4YjkzNjc4MGIyLi43ODhiYzZhZjdlZTUyNWI5NTY0
YzEzNDdkMmNlYTAwNTcyOTE4M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zODg4LDYgKzM4ODgsOCBAQAogCQlBNzQwQjVB
NTE0QzkzNUFCMDBBNzdGQTQgLyogSlNJbnRlcm5hbFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0RUE3OTE0QzkzNDg0MDBDOEY1QkYg
LyogSlNJbnRlcm5hbFNldHRpbmdzLmggKi87IH07CiAJCUE3NDBCNUE3MTRDOTM1QUYwMEE3N0ZB
NCAvKiBKU0ludGVybmFsU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdCNEVBNzgxNEM5MzQ4NDAwQzhGNUJGIC8qIEpTSW50ZXJuYWxT
ZXR0aW5ncy5jcHAgKi87IH07CiAJCUE3NEJCNzZCMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3NEJCNzZBMTNCREE4NjMwMEZGN0JGMCAvKiBFeGNlcHRpb25Db2RlUGxhY2Vo
b2xkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBNzRGM0VGMzE2NzhCMjRBMDBCMDVBNkUgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIxMUYyMzE2
NzhBNTQyMDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgKi87IH07CisJCUE3
NEYzRUY1MTY3OEIyNEYwMEIwNUE2RSAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIxMUYyNDE2NzhBNTQy
MDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oICovOyB9OwogCQlBNzVFNDk3NjEw
NzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYg
LyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1RTQ5NzcxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCAqLzsgfTsKIAkJQTc1RThCODgwRTFERTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODAwRTFE
RTJENjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwICovOyB9OwpAQCAtMTEyMTEsNiArMTEyMTMsOCBA
QAogCQlBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJhZ0FjdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhZ0FjdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRHJhZ0NvbnRyb2xs
ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MUE3MEM5MTFBRkIwMjAw
MDk4OUQ2RCAvKiBIVE1MTWV0ZXJFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBI
VE1MTWV0ZXJFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyMTFG
MjMxNjc4QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3MjExRjI0MTY3OEE1NDIwMDk1NzQ0NCAv
KiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtRXhwb3J0TWFjcm9zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Mjc2M0JFMTY2ODlCRkIwMDJGQ0FDQiAvKiBV
c2VyQWN0aW9uRWxlbWVudFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
c2VyQWN0aW9uRWxlbWVudFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzJF
QTNCQTE1ODVDRjU1MDA0RkFBMjYgLyogUmVmQ291bnRlZFN1cHBsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlZFN1cHBsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTAwLDYgKzIyMTA0LDggQEAKIAkJCQk2MzE4OUFFMjBF
ODNBMzMzMDAwMTJFNDEgLyogTm9kZVJhcmVEYXRhLmggKi8sCiAJCQkJQTdGNUQ5NEQxMzg0RjAy
RDAwQTI5QTg3IC8qIE5vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywKIAkJCQlBN0Y1RDk0RTEz
ODRGMDJEMDBBMjlBODcgLyogTm9kZVJlbmRlcmluZ0NvbnRleHQuaCAqLywKKwkJCQlBNzIxMUYy
MzE2NzhBNTQyMDA5NTc0NDQgLyogTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgKi8sCisJCQkJ
QTcyMTFGMjQxNjc4QTU0MjAwOTU3NDQ0IC8qIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCAqLywK
IAkJCQk2M0Q3QjMyQzBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggKi8sCiAJ
CQkJRTQzMTA1QjcxNjc1MEYwQzAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuY3BwICovLAogCQkJ
CUU0MzEwNUJBMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmggKi8sCkBAIC0yNDgw
NSw2ICsyNDgxMSw3IEBACiAJCQkJQTgxODcyMUIwOTc3RDNDMDAwNTgyNkQ5IC8qIE5vZGVMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzE4OUFFMzBFODNBMzMzMDAwMTJFNDEgLyogTm9kZVJh
cmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Y1RDk1MDEzODRGMDJEMDBBMjlBODcgLyog
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NEYzRUY1MTY3OEIy
NEYwMEIwNUE2RSAvKiBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2M0Q3QjMyRDBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzgyQUFCNDBEOEMzODYxMDBGMzU3QTYgLyogTm9kZVdpdGhJbmRleC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQkUwQTE5NDVEMDAwQThFRjVGIC8qIE5vdGF0aW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI4MTI1LDYgKzI4MTMyLDcgQEAKIAkJCQk4NTRGRTczMjBBMjI5
N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NTRGRTczNDBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3RjVEOTRGMTM4NEYwMkQwMEEyOUE4NyAvKiBOb2RlUmVuZGVyaW5nQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzRGM0VGMzE2NzhCMjRBMDBCMDVBNkUgLyogTm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEVBN0VCRjBBMTk0
NUQwMDBBOEVGNUYgLyogTm90YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzM1MDNDQzcx
MDE3QTFCMTAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MzkwQ0E1NTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
LmNwcAppbmRleCBmMDBmMmVmYjQ5YTFhNGUzNzBjM2FmZDk5MThlYWMwYjE3ZDliNjlhLi4xZDAz
YzU0N2UwYjQ5ODdlMjY3MjJiOTM5OWQ2ZjViMGQ1ZmQyYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMSwzICsxLDQgQEAKKwog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKQEAgLTcwLDI1ICs3MSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuQmVEaXN0
cmlidXRlZChjb25zdCBOb2RlKiBub2RlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5l
IHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzOjpk
aWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkK
LXsKLSAgICBpZiAoIW1faW5zZXJ0aW9uUG9pbnQpIHsKLSAgICAgICAgbV9pbnNlcnRpb25Qb2lu
dCA9IGluc2VydGlvblBvaW50OwotICAgICAgICBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSAgPSBt
X3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB8fCBpbnNlcnRpb25Qb2ludC0+cmVzZXRTdHlsZUluaGVy
aXRhbmNlKCk7Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OlBhcmVudFRyYXZlcnNhbERldGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBT
aGFkb3dSb290KiByb290KQotewotICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVz
ZXRTdHlsZUluaGVyaXRhbmNlIHx8IHJvb3QtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOwotfQot
Ci1pbmxpbmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBhcmVudFRyYXZlcnNhbERl
dGFpbHM6OmRpZEZpbmROb2RlKENvbnRhaW5lck5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFtX291
dE9mQ29tcG9zaXRpb24pCi0gICAgICAgIG1fbm9kZSA9IG5vZGU7Ci19Ci0KIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlciBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZyb21GaXJzdENoaWxkKGNv
bnN0IE5vZGUqIG5vZGUsIFBvbGljeSBwb2xpY3kpCiB7CiAgICAgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyIHdhbGtlcihub2RlLCBwb2xpY3kpOwpAQCAtOTYsMTQgKzc4LDYgQEAgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6ZnJvbUZpcnN0Q2hpbGQo
Y29uc3QgTm9kZSogbm8KICAgICByZXR1cm4gd2Fsa2VyOwogfQogCi12b2lkIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6ZmluZFBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJz
YWxEZXRhaWxzKiBkZXRhaWxzKQotewotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxr
ZXIobm9kZSwgQ3Jvc3NVcHBlckJvdW5kYXJ5LCBDYW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7
Ci0gICAgQ29udGFpbmVyTm9kZSogZm91bmQgPSB0b0NvbnRhaW5lck5vZGUod2Fsa2VyLnRyYXZl
cnNlUGFyZW50KHdhbGtlci5nZXQoKSwgZGV0YWlscykpOwotICAgIGlmIChmb3VuZCkKLSAgICAg
ICAgZGV0YWlscy0+ZGlkRmluZE5vZGUoZm91bmQpOwotfQotCiB2b2lkIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjo6Zmlyc3RDaGlsZCgpCiB7CiAgICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7CkBA
IC0xODMsNDYgKzE1Nyw2IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91
c1NpYmxpbmcoKQogICAgIGFzc2VydFBvc3Rjb25kaXRpb24oKTsKIH0KIAotdm9pZCBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXI6OnBzZXVkb0F3YXJlTmV4dFNpYmxpbmcoKQotewotICAgIGFzc2Vy
dFByZWNvbmRpdGlvbigpOwotCi0gICAgY29uc3QgTm9kZSogbm9kZSA9IG1fbm9kZTsKLQotICAg
IGlmIChub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgbV9ub2RlID0gdHJh
dmVyc2VGaXJzdENoaWxkKHRyYXZlcnNlUGFyZW50KG5vZGUpKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fbm9kZSA9IHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJh
dmVyc2FsRGlyZWN0aW9uRm9yd2FyZCk7Ci0KLSAgICBpZiAoIW1fbm9kZSAmJiAhbm9kZS0+aXNB
ZnRlclBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBh
cmVudChub2RlKTsKLSAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUo
KSkKLSAgICAgICAgICAgIG1fbm9kZSA9IHRvRWxlbWVudChwYXJlbnQpLT5hZnRlclBzZXVkb0Vs
ZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19Ci0KLXZvaWQg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwc2V1ZG9Bd2FyZVByZXZpb3VzU2libGluZygpCi17
Ci0gICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7Ci0KLSAgICBjb25zdCBOb2RlKiBub2RlID0gbV9u
b2RlOwotCi0gICAgaWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpCi0gICAgICAgIG1f
bm9kZSA9IHRyYXZlcnNlTGFzdENoaWxkKHRyYXZlcnNlUGFyZW50KG5vZGUpKTsKLSAgICBlbHNl
Ci0gICAgICAgIG1fbm9kZSA9IHRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQo
bm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOwotCi0gICAgaWYgKCFtX25vZGUgJiYg
IW5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIE5vZGUqIHBhcmVudCA9
IHRyYXZlcnNlUGFyZW50KG5vZGUpOwotICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNF
bGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgbV9ub2RlID0gdG9FbGVtZW50KHBhcmVudCktPmJl
Zm9yZVBzZXVkb0VsZW1lbnQoKTsKLSAgICB9Ci0KLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7
Ci19Ci0KIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VEaXN0cmlidXRl
ZE5vZGVzKGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCwgVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBmb3IgKGNvbnN0IE5v
ZGUqIG5leHQgPSBub2RlOyBuZXh0OyBuZXh0ID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJl
Y3Rpb25Gb3J3YXJkID8gaW5zZXJ0aW9uUG9pbnQtPm5leHRUbyhuZXh0KSA6IGluc2VydGlvblBv
aW50LT5wcmV2aW91c1RvKG5leHQpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlci5oCmluZGV4IDRiNmZmOTU2YTQ1MTliOGQ2MDI0ODMxZjI3NTg4YTY0
YzRhYTlkMDIuLmI4MDlhMjZhYzQ5OTJhODU1YWU0ZWIyOTQwM2Y4MTM5MjdiNTNiMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNkZWZpbmUgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyX2gKIAogI2luY2x1ZGUg
Ikluc2VydGlvblBvaW50LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNiAr
NDAsOCBAQCBjbGFzcyBTaGFkb3dSb290OwogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyNzAyCiBjbGFzcyBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgewogcHVi
bGljOgorICAgIHR5cGVkZWYgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlscyBQ
YXJlbnRUcmF2ZXJzYWxEZXRhaWxzOworCiAgICAgZW51bSBQb2xpY3kgewogICAgICAgICBDcm9z
c1VwcGVyQm91bmRhcnksCiAgICAgICAgIERvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5LApAQCAtNDks
MzggKzUyLDExIEBAIHB1YmxpYzoKICAgICAgICAgQ2Fubm90U3RhcnRGcm9tU2hhZG93Qm91bmRh
cnkKICAgICB9OwogCi0gICAgY2xhc3MgUGFyZW50VHJhdmVyc2FsRGV0YWlscyB7Ci0gICAgcHVi
bGljOgotICAgICAgICBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKCkKLSAgICAgICAgICAgIDogbV9u
b2RlKDApCi0gICAgICAgICAgICAsIG1faW5zZXJ0aW9uUG9pbnQoMCkKLSAgICAgICAgICAgICwg
bV9yZXNldFN0eWxlSW5oZXJpdGFuY2UoZmFsc2UpCi0gICAgICAgICAgICAsIG1fb3V0T2ZDb21w
b3NpdGlvbihmYWxzZSkKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgQ29udGFpbmVyTm9kZSogbm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2luc2VydGlvblBvaW50OyB9Ci0gICAgICAg
IGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNldFN0eWxl
SW5oZXJpdGFuY2U7IH0KLSAgICAgICAgYm9vbCBvdXRPZkNvbXBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9vdXRPZkNvbXBvc2l0aW9uOyB9Ci0KLSAgICAgICAgdm9pZCBkaWRGaW5kTm9kZShD
b250YWluZXJOb2RlKik7Ci0gICAgICAgIHZvaWQgZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJ
bnNlcnRpb25Qb2ludCopOwotICAgICAgICB2b2lkIGRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25z
dCBTaGFkb3dSb290Kik7Ci0gICAgICAgIHZvaWQgY2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKCkg
eyBtX291dE9mQ29tcG9zaXRpb24gPSB0cnVlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBD
b250YWluZXJOb2RlKiBtX25vZGU7Ci0gICAgICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlv
blBvaW50OwotICAgICAgICBib29sIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOwotICAgICAgICBi
b29sIG1fb3V0T2ZDb21wb3NpdGlvbjsKLSAgICB9OwotCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyKGNvbnN0IE5vZGUqLCBQb2xpY3kgPSBDcm9zc1VwcGVyQm91bmRhcnksIFN0YXJ0UG9s
aWN5ID0gQ2Fubm90U3RhcnRGcm9tU2hhZG93Qm91bmRhcnkpOwogCiAgICAgLy8gRm9yIGEgY29t
bW9uIHVzZSBjYXNlIHN1Y2ggYXM6CiAgICAgLy8gZm9yIChDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmcm9tRmlyc3RDaGlsZChub2Rl
KTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIubmV4dFNpYmxpbmcoKSkKICAgICBzdGF0aWMgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyIGZyb21GaXJzdENoaWxkKGNvbnN0IE5vZGUqLCBQb2xpY3kgPSBD
cm9zc1VwcGVyQm91bmRhcnkpOwotICAgIHN0YXRpYyB2b2lkIGZpbmRQYXJlbnQoY29uc3QgTm9k
ZSosIFBhcmVudFRyYXZlcnNhbERldGFpbHMqKTsKIAogICAgIE5vZGUqIGdldCgpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1fbm9kZSk7IH0KIApAQCAtOTAsMTQgKzY2LDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIG5leHRTaWJsaW5nKCk7CiAgICAgdm9pZCBwcmV2aW91c1NpYmxp
bmcoKTsKIAotICAgIHZvaWQgcHNldWRvQXdhcmVOZXh0U2libGluZygpOwotICAgIHZvaWQgcHNl
dWRvQXdhcmVQcmV2aW91c1NpYmxpbmcoKTsKLQogICAgIHZvaWQgcGFyZW50KCk7CiAKICAgICB2
b2lkIG5leHQoKTsKICAgICB2b2lkIHByZXZpb3VzKCk7CiAKKyAgICBOb2RlKiB0cmF2ZXJzZVBh
cmVudChjb25zdCBOb2RlKiwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogPSAwKSBjb25zdDsKKwog
cHJpdmF0ZToKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSosIFBhcmVu
dFRyYXZlcnNhbERldGFpbHMqKTsKIApAQCAtMTM0LDcgKzEwOSw2IEBAIHByaXZhdGU6CiAgICAg
Tm9kZSogdHJhdmVyc2VGaXJzdENoaWxkKGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBOb2RlKiB0
cmF2ZXJzZUxhc3RDaGlsZChjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VD
aGlsZChjb25zdCBOb2RlKiwgVHJhdmVyc2FsRGlyZWN0aW9uKSBjb25zdDsKLSAgICBOb2RlKiB0
cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogPSAwKSBj
b25zdDsKIAogICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUq
KTsKICAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggNjliOTE4NTI2MDdlY2YzZGI3NmVj
MTNhZTY0Yjc4YWUyMjc2YTc5NS4uOGYxNDNiNDE1N2UzYjM1ZjE0ZDNlODNkMDhhNTM3Zjg0NTM0
YWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0yNjUsNiArMjY1LDE0IEBA
IGlubGluZSBOb2RlKiBOb2RlOjpoaWdoZXN0QW5jZXN0b3IoKSBjb25zdAogICAgIHJldHVybiBo
aWdoZXN0OwogfQogCitpbmxpbmUgYm9vbCBOb2RlOjpuZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSBj
b25zdAoreworICAgIGlmIChnZXRGbGFnKE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBwYXJlbnRPckhv
c3ROb2RlKCk7CisgICAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQtPmdldEZsYWcoTmVlZHNTaGFk
b3dUcmVlV2Fsa2VyRmxhZyk7Cit9CisKIC8vIFRoaXMgY29uc3RhbnQgY29udHJvbHMgaG93IG11
Y2ggYnVmZmVyIGlzIGluaXRpYWxseSBhbGxvY2F0ZWQKIC8vIGZvciBhIE5vZGUgVmVjdG9yIHRo
YXQgaXMgdXNlZCB0byBzdG9yZSBjaGlsZCBOb2RlcyBvZiBhIGdpdmVuIE5vZGUuCiAvLyBGSVhN
RTogT3B0aW1pemUgdGhlIHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXgg
OTI5NmExOWExY2I5ZTRhNDgwNmYzNDM5Yjc4MmMyNTc0YjFjYTU2OS4uNTlmNTliZWJjMTc5MDg5
MDUzMTVhNDkyZjhmMGE5NjIxOTc2MGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3Bw
CkBAIC0xMDUsNiArMTA1LDcgQEAKICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCIK
ICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuY3BwIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250
ZXh0LmNwcCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCIKICNpbmNsdWRl
ICJOb3RhdGlvbi5jcHAiCiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAi
UGFnZVRyYW5zaXRpb25FdmVudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNDQ5OGQz
MjlhNWI5OWU4OGZjOWQxNDdiOTUxN2QzYmIwMjkwMGJhZi4uOTBiOWJlNjczYzEzNDU0NDRlOTlj
YWZhMDkwNzNhYThkOTViMDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjA5OCw3ICsy
MDk4LDcgQEAgdm9pZCBFbGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKIAogdm9pZCBFbGVt
ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KFBzZXVkb0lkIHBzZXVkb0lkLCBTdHlsZUNoYW5nZSBj
aGFuZ2UpCiB7Ci0gICAgUHNldWRvRWxlbWVudCogZXhpc3RpbmcgPSBoYXNSYXJlRGF0YSgpID8g
ZWxlbWVudFJhcmVEYXRhKCktPnBzZXVkb0VsZW1lbnQocHNldWRvSWQpIDogMDsKKyAgICBQc2V1
ZG9FbGVtZW50KiBleGlzdGluZyA9IHBzZXVkb0VsZW1lbnQocHNldWRvSWQpOwogICAgIGlmIChl
eGlzdGluZykgewogICAgICAgICAvLyBQc2V1ZG9FbGVtZW50IHN0eWxlcyBoYW5nIG9mZiB0aGVp
ciBwYXJlbnQgZWxlbWVudCdzIHN0eWxlIHNvIGlmIHdlIG5lZWRlZAogICAgICAgICAvLyBhIHN0
eWxlIHJlY2FsYyB3ZSBzaG91bGQgRm9yY2Ugb25lIG9uIHRoZSBwc2V1ZG8uCkBAIC0yMTA5LDEw
ICsyMTA5LDEwIEBAIHZvaWQgRWxlbWVudDo6dXBkYXRlUHNldWRvRWxlbWVudChQc2V1ZG9JZCBw
c2V1ZG9JZCwgU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgICAgICAvLyB3aGVuIFJlbmRlck9iamVj
dDo6aXNDaGlsZEFsbG93ZWQgb24gb3VyIHBhcmVudCByZXR1cm5zIGZhbHNlIGZvciB0aGUKICAg
ICAgICAgLy8gUHNldWRvRWxlbWVudCdzIHJlbmRlcmVyIGZvciBlYWNoIHN0eWxlIHJlY2FsYy4K
ICAgICAgICAgaWYgKCFyZW5kZXJlcigpIHx8ICFwc2V1ZG9FbGVtZW50UmVuZGVyZXJJc05lZWRl
ZChyZW5kZXJlcigpLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpKQotICAgICAgICAg
ICAgZWxlbWVudFJhcmVEYXRhKCktPnNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIDApOworICAg
ICAgICAgICAgc2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgMCk7CiAgICAgfSBlbHNlIGlmIChS
ZWZQdHI8UHNldWRvRWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZVBzZXVkb0VsZW1lbnRJZk5lZWRl
ZChwc2V1ZG9JZCkpIHsKICAgICAgICAgZWxlbWVudC0+YXR0YWNoKCk7Ci0gICAgICAgIGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpLT5zZXRQc2V1ZG9FbGVtZW50KHBzZXVkb0lkLCBlbGVtZW50LnJl
bGVhc2UoKSk7CisgICAgICAgIHNldFBzZXVkb0VsZW1lbnQocHNldWRvSWQsIGVsZW1lbnQucmVs
ZWFzZSgpKTsKICAgICB9CiB9CiAKQEAgLTIxMzMsMTYgKzIxMzMsMjMgQEAgUGFzc1JlZlB0cjxQ
c2V1ZG9FbGVtZW50PiBFbGVtZW50OjpjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVkZWQoUHNldWRv
SWQgcHNldWRvSWQKICAgICByZXR1cm4gUHNldWRvRWxlbWVudDo6Y3JlYXRlKHRoaXMsIHBzZXVk
b0lkKTsKIH0KIAotUHNldWRvRWxlbWVudCogRWxlbWVudDo6YmVmb3JlUHNldWRvRWxlbWVudCgp
IGNvbnN0Citib29sIEVsZW1lbnQ6Omhhc1BzZXVkb0VsZW1lbnRzKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KEJF
Rk9SRSkgOiAwOworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgp
LT5oYXNQc2V1ZG9FbGVtZW50cygpOwogfQogCi1Qc2V1ZG9FbGVtZW50KiBFbGVtZW50OjphZnRl
clBzZXVkb0VsZW1lbnQoKSBjb25zdAorUHNldWRvRWxlbWVudCogRWxlbWVudDo6cHNldWRvRWxl
bWVudChQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEo
KSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5wc2V1ZG9FbGVtZW50KEFGVEVSKSA6IDA7CisgICAgcmV0
dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cHNldWRvRWxlbWVudChwc2V1
ZG9JZCkgOiAwOwogfQogCit2b2lkIEVsZW1lbnQ6OnNldFBzZXVkb0VsZW1lbnQoUHNldWRvSWQg
cHNldWRvSWQsIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4gZWxlbWVudCkKK3sKKyAgICBlbnN1
cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0UHNldWRvRWxlbWVudChwc2V1ZG9JZCwgZWxlbWVudCk7
CisgICAgcmVzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKTsKK30KKworCiAvLyBFbGVtZW50VHJh
dmVyc2FsIEFQSQogRWxlbWVudCogRWxlbWVudDo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggODQzNTJjM2QyMTY0ZDc0YjUzZjI0ZjRiMzc3ZmEwYmU2
M2RhZjczYy4uNjZhYWQ2ZTlkMDgyYjkzN2RmZmE0NWFiZTlkMTNkMzE4MWIxOWZiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC0zNjYsOCArMzY2LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2lu
Z0NoaWxkcmVuKCk7CiAKLSAgICBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQc2V1ZG9FbGVtZW50KCkg
Y29uc3Q7Ci0gICAgUHNldWRvRWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkgY29uc3Q7Cisg
ICAgYm9vbCBoYXNQc2V1ZG9FbGVtZW50cygpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIHBz
ZXVkb0VsZW1lbnQoUHNldWRvSWQpIGNvbnN0OworICAgIFBzZXVkb0VsZW1lbnQqIGJlZm9yZVBz
ZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1ZG9FbGVtZW50KEJFRk9SRSk7IH0KKyAg
ICBQc2V1ZG9FbGVtZW50KiBhZnRlclBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBwc2V1
ZG9FbGVtZW50KEFGVEVSKTsgfQorICAgIGJvb2wgY2hpbGROZWVkc1NoYWRvd1dhbGtlcigpIGNv
bnN0OworICAgIHZvaWQgZGlkU2hhZG93VHJlZUF3YXJlQ2hpbGRyZW5DaGFuZ2UoKTsKIAogICAg
IC8vIEVsZW1lbnRUcmF2ZXJzYWwgQVBJCiAgICAgRWxlbWVudCogZmlyc3RFbGVtZW50Q2hpbGQo
KSBjb25zdDsKQEAgLTUwMCw2ICs1MDQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlUHNldWRvRWxlbWVudChQc2V1ZG9JZCwgU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7
CiAgICAgUGFzc1JlZlB0cjxQc2V1ZG9FbGVtZW50PiBjcmVhdGVQc2V1ZG9FbGVtZW50SWZOZWVk
ZWQoUHNldWRvSWQpOworICAgIHZvaWQgc2V0UHNldWRvRWxlbWVudChQc2V1ZG9JZCwgUGFzc1Jl
ZlB0cjxQc2V1ZG9FbGVtZW50Pik7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZv
ciBBdHRyIHRvIGNhbGwgd2lsbE1vZGlmeUF0dHJpYnV0ZS9kaWRNb2RpZnlBdHRyaWJ1dGUuCiAg
ICAgZnJpZW5kIGNsYXNzIEF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5k
ZXggNzkwNWNiNTQ4ZTVmZmM0OWYyMDRhMzlkZWM1MDFjNDA5ZWQyZmExNS4uYzJkN2E5ZDcwNjc4
Njc2YTdiZmI1ZmVjZjUwN2QxMDM4NGY2MWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFy
ZURhdGEuaApAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBzZXVkb0Vs
ZW1lbnQoUHNldWRvSWQsIFBhc3NSZWZQdHI8UHNldWRvRWxlbWVudD4pOwogICAgIFBzZXVkb0Vs
ZW1lbnQqIHBzZXVkb0VsZW1lbnQoUHNldWRvSWQpIGNvbnN0OworICAgIGJvb2wgaGFzUHNldWRv
RWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRlZEJlZm9yZSB8fCBtX2dlbmVyYXRl
ZEFmdGVyOyB9CiAKICAgICB2b2lkIHJlc2V0Q29tcHV0ZWRTdHlsZSgpOwogICAgIHZvaWQgcmVz
ZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuY3BwCmluZGV4IDNjZWE2NGU3NWQzYmU0MmNiOTk5ZTdmNjQxM2E2YzhmZjBiNDljZWEuLjRj
NjVkZTQ4MjNhZjk5OTg5NTljZmY2ZjliMmQzMjYzMzY1MmE1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFNoYWRvdy5jcHAKQEAgLTg3LDYgKzg3LDkgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojph
ZGRTaGFkb3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4g
c2gKICAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOwogICAgIENoaWxkTm9k
ZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290LmdldCgpKTsK
IAorICAgIC8vIEV4aXN0ZW5jZSBvZiBzaGFkb3cgcm9vdHMgcmVxdWlyZXMgdGhlIGhvc3QgYW5k
IGl0cyBjaGlsZHJlbiB0byBkbyB0cmF2ZXJzYWwgdXNpbmcgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyLgorICAgIHNoYWRvd0hvc3QtPnNldE5lZWRzU2hhZG93VHJlZVdhbGtlcigpOworCiAgICAg
Ly8gRklYTUUoOTQ5MDUpOiBTaGFkb3dIb3N0IHNob3VsZCBiZSByZWF0dGFjaGVkIGR1cmluZyBy
ZWNhbGNTdHlsZS4KICAgICAvLyBTZXQgc29tZSBmbGFnIGhlcmUgYW5kIHJlY3JlYXRlIHNoYWRv
dyBob3N0cycgcmVuZGVyZXIgaW4KICAgICAvLyBFbGVtZW50OjpyZWNhbGNTdHlsZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCBhZWFhNWUxNmM5MWY2Y2Q5MDRkNTcxZjlhNmEyYTI0MzM0ZGU3NGVhLi44
MmVjM2FmOTk3MjBiMTNkMzhlZWI0NjhkMWI3ZWY5YWFiZmM1MDRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0xMjkwLDYgKzEyOTAsMTAgQEAgRWxlbWVudCogTm9kZTo6cGFyZW50T3JIb3N0RWxlbWVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpOwogfQogCitib29sIE5vZGU6
Om5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKSBjb25zdAoreworICAgIHJldHVybiAoaXNTaGFk
b3dSb290KCkgfHwgKGlzRWxlbWVudE5vZGUoKSAmJiAoaXNJbnNlcnRpb25Qb2ludCgpIHx8IGlz
UHNldWRvRWxlbWVudCgpIHx8IHRvRWxlbWVudCh0aGlzKS0+aGFzUHNldWRvRWxlbWVudHMoKSB8
fCB0b0VsZW1lbnQodGhpcyktPnNoYWRvdygpKSkpOworfQogCiBib29sIE5vZGU6OmlzQmxvY2tG
bG93KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDUwNTM5YmI5ZDBmMzNmNmY3MzYxZWQ4MzNj
MGJjZmFmNDYyYzZlNDMuLjgzZGYxZGU1NmZlOWVkMjhhNzhlZGU3M2RjMmVhZDk1Y2JmZTRlMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaApAQCAtMjQ3LDEwICsyNDcsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc0ZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNQbHVnaW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgZG9jdW1lbnRGcmFnbWVudElzU2hhZG93Um9vdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisKICAgICBib29sIGlzRG9jdW1lbnROb2RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0RvY3Vt
ZW50RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzRG9jdW1lbnRGcmFnbWVudEZs
YWcpOyB9CiAgICAgYm9vbCBpc1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBpc0RvY3VtZW50
RnJhZ21lbnQoKSAmJiBkb2N1bWVudEZyYWdtZW50SXNTaGFkb3dSb290KCk7IH0KLSAgICBib29s
IGlzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzSW5zZXJ0aW9uUG9p
bnRGbGFnKTsgfQorICAgIGJvb2wgaXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIGdl
dEZsYWcoTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZykgJiYgaXNJbnNlcnRpb25Qb2ludE5vZGUo
KTsgfQorCisgICAgYm9vbCBuZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSBjb25zdDsKKyAgICBib29s
IG5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKSBjb25zdDsKKyAgICB2b2lkIHNldE5lZWRzU2hh
ZG93VHJlZVdhbGtlcigpIHsgc2V0RmxhZyhOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsgfQor
ICAgIHZvaWQgcmVzZXROZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSB7IHNldEZsYWcobmVlZHNTaGFk
b3dUcmVlV2Fsa2VyU2xvdygpLCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnKTsgfQorCiAgICAg
Ym9vbCBpbk5hbWVkRmxvdygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSW5OYW1lZEZsb3dGbGFn
KTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhIYXNDdXN0b21DYWxsYmFja3NGbGFnKTsgfQogCkBAIC03MDMsNyArNzExLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgSGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGRGbGFnID0gMSA8PCAyMiwKICAgICAg
ICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMjMsCiAgICAgICAgIFY4Q29sbGVjdGFi
bGVEdXJpbmdNaW5vckdDRmxhZyA9IDEgPDwgMjQsCi0gICAgICAgIElzSW5zZXJ0aW9uUG9pbnRG
bGFnID0gMSA8PCAyNSwKKyAgICAgICAgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyA9IDEgPDwg
MjUsCiAKICAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNo
ZWRGbGFnCiAgICAgfTsKQEAgLTcyMSwxNSArNzI5LDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAg
Q3JlYXRlVGV4dCA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc1RleHRGbGFnLAogICAgICAgICBDcmVh
dGVDb250YWluZXIgPSBEZWZhdWx0Tm9kZUZsYWdzIHwgSXNDb250YWluZXJGbGFnLCAKICAgICAg
ICAgQ3JlYXRlRWxlbWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRWxlbWVudEZsYWcsIAotICAg
ICAgICBDcmVhdGVQc2V1ZG9FbGVtZW50ID0gIENyZWF0ZUVsZW1lbnQgfCBJbkRvY3VtZW50Rmxh
ZywKLSAgICAgICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1l
bnRGcmFnbWVudEZsYWcsCisgICAgICAgIENyZWF0ZVBzZXVkb0VsZW1lbnQgPSAgQ3JlYXRlRWxl
bWVudCB8IEluRG9jdW1lbnRGbGFnIHwgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZywKKyAgICAg
ICAgQ3JlYXRlU2hhZG93Um9vdCA9IENyZWF0ZUNvbnRhaW5lciB8IElzRG9jdW1lbnRGcmFnbWVu
dEZsYWcgfCBOZWVkc1NoYWRvd1RyZWVXYWxrZXJGbGFnLAogICAgICAgICBDcmVhdGVEb2N1bWVu
dEZyYWdtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNEb2N1bWVudEZyYWdtZW50RmxhZywKICAg
ICAgICAgQ3JlYXRlU3R5bGVkRWxlbWVudCA9IENyZWF0ZUVsZW1lbnQgfCBJc1N0eWxlZEVsZW1l
bnRGbGFnLCAKICAgICAgICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50
IHwgSXNIVE1MRmxhZywgCiAgICAgICAgIENyZWF0ZUZyYW1lT3duZXJFbGVtZW50ID0gQ3JlYXRl
SFRNTEVsZW1lbnQgfCBIYXNDdXN0b21DYWxsYmFja3NGbGFnLAogICAgICAgICBDcmVhdGVTVkdF
bGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8IElzU1ZHRmxhZywKICAgICAgICAgQ3JlYXRl
RG9jdW1lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJbkRvY3VtZW50RmxhZywKLSAgICAgICAgQ3Jl
YXRlSW5zZXJ0aW9uUG9pbnQgPSBDcmVhdGVIVE1MRWxlbWVudCB8IElzSW5zZXJ0aW9uUG9pbnRG
bGFnLAorICAgICAgICBDcmVhdGVJbnNlcnRpb25Qb2ludCA9IENyZWF0ZUhUTUxFbGVtZW50IHwg
TmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZywKICAgICAgICAgQ3JlYXRlRWRpdGluZ1RleHQgPSBD
cmVhdGVUZXh0IHwgSGFzTmFtZU9ySXNFZGl0aW5nVGV4dEZsYWcsCiAgICAgfTsKICAgICBOb2Rl
KERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAxMzE4N2I1NmNhZWE4NjFjYTY2NWI3Y2FkMDkxOWVm
OTNjYWZkMjdmLi42NzMwNWNhMjBlNWY3ZjUzOTYzMTI4NzJkOWY0MDc4MTAxMWI0YmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI2LDcgKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4
dC5oIgogCi0jaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAjaW5jbHVkZSAi
Q29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1
ZGUgIkVsZW1lbnRTaGFkb3cuaCIKQEAgLTU5LDExICs1OCwxMiBAQCBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICA6IG1fbm9kZShub2Rl
KQogICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKIHsKLSAgICBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OmZpbmRQYXJlbnQobV9ub2RlLCAmbV9wYXJlbnREZXRhaWxzKTsKKyAgICBtX3Jl
bmRlcmluZ1BhcmVudCA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudChub2RlLCAmbV9w
YXJlbnREZXRhaWxzKTsKIH0KIAogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdD
b250ZXh0KE5vZGUqIG5vZGUsIFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICA6IG1fbm9kZShub2Rl
KQorICAgICwgbV9yZW5kZXJpbmdQYXJlbnQoMCkKICAgICAsIG1fc3R5bGUoc3R5bGUpCiAgICAg
LCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQogewpAQCAtODMsMTIgKzgzLDExIEBAIFJlbmRlck9i
amVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAKICAgICAv
LyBBdm9pZCBhbiBPKE5eMikgcHJvYmxlbSB3aXRoIHRoaXMgZnVuY3Rpb24gYnkgbm90IGNoZWNr
aW5nIGZvcgogICAgIC8vIG5leHRSZW5kZXJlcigpIHdoZW4gdGhlIHBhcmVudCBlbGVtZW50IGhh
c24ndCBhdHRhY2hlZCB5ZXQuCi0gICAgaWYgKG1fcGFyZW50RGV0YWlscy5ub2RlKCkgJiYgIW1f
cGFyZW50RGV0YWlscy5ub2RlKCktPmF0dGFjaGVkKCkpCisgICAgaWYgKG1fcmVuZGVyaW5nUGFy
ZW50ICYmICFtX3JlbmRlcmluZ1BhcmVudC0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG1fbm9kZSk7Ci0gICAgZm9y
ICh3YWxrZXIucHNldWRvQXdhcmVOZXh0U2libGluZygpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5w
c2V1ZG9Bd2FyZU5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSB3YWxrZXIuZ2V0KCktPnJlbmRlcmVyKCkpIHsKKyAgICBmb3IgKE5vZGUqIHNpYmxp
bmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZyhtX25vZGUpOyBzaWJsaW5n
OyBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNpYmxpbmcoc2libGluZykp
IHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJl
cigpKSB7CiAgICAgICAgICAgICAvLyBSZW5kZXJlcnMgZm9yIGVsZW1lbnRzIGF0dGFjaGVkIHRv
IGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNraXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBwYXJlbnRl
ZCBkaWZmZXJlbnRseS4KICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1l
bnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxlKCkgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5mbG93
VGhyZWFkKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA5LDEw
ICsxMDgsOCBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1Jl
bmRlcmVyKCkgY29uc3QKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSBP
KE5eMikgYXZvaWRhbmNlIGFzIG5leHRSZW5kZXJlciBkb2VzCiAgICAgLy8gaG93ZXZlciwgd2hl
biBJIHRyaWVkIGFkZGluZyBpdCwgc2V2ZXJhbCB0ZXN0cyBmYWlsZWQuCi0KLSAgICBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG1fbm9kZSk7Ci0gICAgZm9yICh3YWxrZXIucHNldWRv
QXdhcmVQcmV2aW91c1NpYmxpbmcoKTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucHNldWRvQXdhcmVQ
cmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHdhbGtlci5nZXQoKS0+cmVuZGVyZXIoKSkgeworICAgIGZvciAoTm9kZSogc2libGluZyA9IE5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhtX25vZGUpOyBzaWJsaW5nOyBz
aWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKHNpYmxpbmcp
KSB7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVy
ZXIoKSkgewogICAgICAgICAgICAgLy8gUmVuZGVyZXJzIGZvciBlbGVtZW50cyBhdHRhY2hlZCB0
byBhIGZsb3cgdGhyZWFkIHNob3VsZCBiZSBza2lwcGVkIGJlY2F1c2UgdGhleSBhcmUgcGFyZW50
ZWQgZGlmZmVyZW50bHkuCiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPm5vZGUoKS0+aXNFbGVt
ZW50Tm9kZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpICYmICFyZW5kZXJlci0+c3R5bGUoKS0+Zmxv
d1RocmVhZCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEzMCwy
MSArMTI3LDIxIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJl
bmRlcmVyKCkgY29uc3QKICAgICBpZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCiAgICAgICAgIHJl
dHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKIAotICAgIHJldHVybiBtX3BhcmVudERldGFpbHMu
bm9kZSgpID8gbV9wYXJlbnREZXRhaWxzLm5vZGUoKS0+cmVuZGVyZXIoKSA6IDA7CisgICAgcmV0
dXJuIG1fcmVuZGVyaW5nUGFyZW50ID8gbV9yZW5kZXJpbmdQYXJlbnQtPnJlbmRlcmVyKCkgOiAw
OwogfQogCiBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcigp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX25vZGUtPmRvY3VtZW50KCktPnNob3VsZENyZWF0ZVJlbmRl
cmVycygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtX3BhcmVudERldGFpbHMu
bm9kZSgpKQorICAgIGlmICghbV9yZW5kZXJpbmdQYXJlbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+cGFyZW50UmVuZGVy
ZXIoKTsKICAgICBpZiAoIXBhcmVudFJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxkcmVuKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAoIW1fcGFyZW50RGV0YWlscy5ub2RlKCktPmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoKnRoaXMpKQorICAgIGlmICghbV9yZW5kZXJpbmdQYXJlbnQtPmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoKnRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCmlu
ZGV4IDdkYTQ4ZTI5YTQyN2Q5YWU3NGM2MzI0ZWM0MmE4YmUwMjQxZWJiNjMuLmMwNzk3NzZkYzgy
MDgyZDRkNWRmZjE1OTUyMTk4NTU1NTZmYmQxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw4IEBACiAjaWZuZGVmIE5vZGVSZW5kZXJp
bmdDb250ZXh0X2gKICNkZWZpbmUgTm9kZVJlbmRlcmluZ0NvbnRleHRfaAogCi0jaW5jbHVkZSAi
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZl
cnNhbC5oIgorCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNjksNyArNzAs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgbW92ZVRvRmxvd1RocmVhZElmTmVlZGVkKCk7CiAKICAg
ICBOb2RlKiBtX25vZGU7Ci0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpQYXJlbnRUcmF2
ZXJzYWxEZXRhaWxzIG1fcGFyZW50RGV0YWlsczsKKyAgICBDb250YWluZXJOb2RlKiBtX3JlbmRl
cmluZ1BhcmVudDsKKyAgICBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzIG1f
cGFyZW50RGV0YWlsczsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CiAgICAgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkKiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKICAgICBBdG9taWNTdHJp
bmcgbV9mbG93VGhyZWFkOwpAQCAtODIsNyArODQsNyBAQCBpbmxpbmUgTm9kZSogTm9kZVJlbmRl
cmluZ0NvbnRleHQ6Om5vZGUoKSBjb25zdAogCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fcGFyZW50RGV0YWlscy5ub2RlKCk7CisgICAgcmV0dXJuIG1fcmVuZGVy
aW5nUGFyZW50OwogfQogCiBpbmxpbmUgYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cmVzZXRT
dHlsZUluaGVyaXRhbmNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzlhZmFjMTY5NjIyNTY5MWJmYTc3NTkwNmMw
MGQwYzNjODA5NjhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgorCisjaW5jbHVkZSAiQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIHsK
Kwordm9pZCBQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCkKK3sKKyAgICBpZiAoIW1faW5zZXJ0aW9uUG9pbnQpIHsK
KyAgICAgICAgbV9pbnNlcnRpb25Qb2ludCA9IGluc2VydGlvblBvaW50OworICAgICAgICBtX3Jl
c2V0U3R5bGVJbmhlcml0YW5jZSAgPSBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB8fCBpbnNlcnRp
b25Qb2ludC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7CisgICAgfQorfQorCit2b2lkIFBhcmVu
dERldGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiByb290KQor
eworICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNl
IHx8IHJvb3QtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOworfQorCitDb250YWluZXJOb2RlKiBw
YXJlbnRTbG93KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCit7Cisg
ICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OkNyb3NzVXBwZXJCb3VuZGFyeSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpD
YW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7CisgICAgQ29udGFpbmVyTm9kZSogZm91bmQgPSB0
b0NvbnRhaW5lck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFyZW50KHdhbGtlci5nZXQoKSwgZGV0YWls
cykpOworICAgIHJldHVybiBkZXRhaWxzLT5vdXRPZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7
Cit9CisKK05vZGUqIG5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisgICAgaWYgKG5vZGUtPmlzQmVm
b3JlUHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKKyAgICAgICAg
d2Fsa2VyLmZpcnN0Q2hpbGQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgd2Fsa2VyLm5leHRTaWJs
aW5nKCk7CisKKyAgICBpZiAod2Fsa2VyLmdldCgpIHx8IG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVt
ZW50KCkpCisgICAgICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisKKyAgICBOb2RlKiBwYXJlbnQg
PSB3YWxrZXIudHJhdmVyc2VQYXJlbnQobm9kZSk7CisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQt
PmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpLT5hZnRl
clBzZXVkb0VsZW1lbnQoKTsKKworICAgIHJldHVybiAwOworfQorCitOb2RlKiBwcmV2aW91c1Np
YmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIHdhbGtlcihub2RlKTsKKyAgICBpZiAobm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkg
eworICAgICAgICB3YWxrZXIucGFyZW50KCk7CisgICAgICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgd2Fsa2VyLnByZXZpb3VzU2libGluZygpOworCisgICAgaWYg
KHdhbGtlci5nZXQoKSB8fCBub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIHdhbGtlci5nZXQoKTsKKworICAgIE5vZGUqIHBhcmVudCA9IHdhbGtlci50cmF2ZXJz
ZVBhcmVudChub2RlKTsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgp
KQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCktPmJlZm9yZVBzZXVkb0VsZW1lbnQo
KTsKKworICAgIHJldHVybiAwOworfQorCit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDA0M2RlMjdm
MDkzNGNlZTU5NWQxMjRjNTRhM2RhNGM4ODBiNzllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApAQCAtMCwwICsxLDExMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbF9oCisjZGVmaW5lIE5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWxfaAorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEluc2VydGlvblBvaW50OworCituYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZl
cnNhbCB7CisKK2NsYXNzIFBhcmVudERldGFpbHMgeworcHVibGljOgorICAgIFBhcmVudERldGFp
bHMoKQorICAgICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoMCkKKyAgICAgICAgLCBtX3Jlc2V0U3R5
bGVJbmhlcml0YW5jZShmYWxzZSkKKyAgICAgICAgLCBtX291dE9mQ29tcG9zaXRpb24oZmFsc2Up
CisgICAgeyB9CisKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7
IHJldHVybiBtX2luc2VydGlvblBvaW50OyB9CisgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFu
Y2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZTsgfQorICAgIGJvb2wg
b3V0T2ZDb21wb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZDb21wb3NpdGlvbjsgfQor
CisgICAgdm9pZCBkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50Kik7Cisg
ICAgdm9pZCBkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCopOworICAgIHZv
aWQgY2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKCkgeyBtX291dE9mQ29tcG9zaXRpb24gPSB0cnVl
OyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFyZW50RGV0YWlscyYgb3RoZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25Qb2ludCA9PSBvdGhlci5tX2luc2VydGlv
blBvaW50CisgICAgICAgICAgICAmJiBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA9PSBvdGhlci5t
X3Jlc2V0U3R5bGVJbmhlcml0YW5jZQorICAgICAgICAgICAgJiYgbV9vdXRPZkNvbXBvc2l0aW9u
ID09IG90aGVyLm1fb3V0T2ZDb21wb3NpdGlvbjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW5z
ZXJ0aW9uUG9pbnQqIG1faW5zZXJ0aW9uUG9pbnQ7CisgICAgYm9vbCBtX3Jlc2V0U3R5bGVJbmhl
cml0YW5jZTsKKyAgICBib29sIG1fb3V0T2ZDb21wb3NpdGlvbjsKK307CisKK0NvbnRhaW5lck5v
ZGUqIHBhcmVudChjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyopOworQ29udGFpbmVyTm9kZSog
cGFyZW50U2xvdyhjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyopOworTm9kZSogbmV4dFNpYmxp
bmcoY29uc3QgTm9kZSopOworTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqKTsKK05v
ZGUqIHByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7CitOb2RlKiBwcmV2aW91c1NpYmxpbmdT
bG93KGNvbnN0IE5vZGUqKTsKKworCitpbmxpbmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0
IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCit7CisgICAgaWYgKCFub2RlLT5u
ZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSkgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgUGFyZW50
RGV0YWlscyBzbG93RGV0YWlsczsKKyAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSA9
PSBwYXJlbnRTbG93KG5vZGUsICZzbG93RGV0YWlscykpOworICAgICAgICBBU1NFUlQoc2xvd0Rl
dGFpbHMgPT0gKmRldGFpbHMpOworI2VuZGlmCisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnRO
b2RlR3VhcmFudGVlZEhvc3RGcmVlKCk7CisgICAgfQorCisgICAgcmV0dXJuIHBhcmVudFNsb3co
bm9kZSwgZGV0YWlscyk7Cit9CisKK2lubGluZSBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2Rl
KiBub2RlKQoreworICAgIGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkpIHsKKyAg
ICAgICAgQVNTRVJUKG5leHRTaWJsaW5nU2xvdyhub2RlKSA9PSBub2RlLT5uZXh0U2libGluZygp
KTsKKyAgICAgICAgcmV0dXJuIG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0
dXJuIG5leHRTaWJsaW5nU2xvdyhub2RlKTsKK30KKworaW5saW5lIE5vZGUqIHByZXZpb3VzU2li
bGluZyhjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVl
V2Fsa2VyKCkpIHsKKyAgICAgICAgQVNTRVJUKHByZXZpb3VzU2libGluZ1Nsb3cobm9kZSkgPT0g
bm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpOworICAgICAgICByZXR1cm4gbm9kZS0+cHJldmlvdXNT
aWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIHByZXZpb3VzU2libGluZ1Nsb3cobm9kZSk7
Cit9CisKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCBjNzdhMjk1NDQwNTA5YzQ0OTY3N2U0MDYwMzIwOGQz
ZmRhMGFiZmQ5Li5hOGU1ODkxN2FhMzZkMDExMjcyMGY4ZjVkOGJmMDhjYWMyNWUxNzM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBAIFBzZXVkb0Vs
ZW1lbnQ6OlBzZXVkb0VsZW1lbnQoRWxlbWVudCogcGFyZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkK
ICAgICA6IEVsZW1lbnQocHNldWRvRWxlbWVudFRhZ05hbWUoKSwgcGFyZW50LT5kb2N1bWVudCgp
LCBDcmVhdGVQc2V1ZG9FbGVtZW50KQogICAgICwgbV9wc2V1ZG9JZChwc2V1ZG9JZCkKIHsKKyAg
ICBBU1NFUlQocHNldWRvSWQgIT0gTk9QU0VVRE8pOwogICAgIEFTU0VSVChwYXJlbnQtPmluRG9j
dW1lbnQoKSk7CiAgICAgc2V0UGFyZW50T3JIb3N0Tm9kZShwYXJlbnQpOwogICAgIHNldEhhc0N1
c3RvbUNhbGxiYWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IGUxNzhlNWY2NWFiZmY5MWY5YjBj
ZGQ0MGU4NTBjN2ZkZjYxNTkyZWQuLmI1YmRhYmIwOWQ3YmY3YzJiM2Q5NjFjMGY3OWMyNjE1MTkw
MDhkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogI2lmIEVOQUJM
RShTVkcpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5kZXggZDcxMDIxYmI4MWQwMzgyN2FiYjVk
YWRkYTg3NWE5Yzg4ZDg2OWQ0Yy4uOWNiNDZmMmE4MzgzNzg4YWYwMjgxMmRiMThiZDNkMTVhNjcw
NGUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJS
ZW5kZXJNZW51TGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNw
cAppbmRleCAzOTg4OGQ4ZDYxZGU1NzIyNTBiODIwM2ZhMGFiODI5OTdjMjRiYjU5Li5mNTEwOTY4
NDA3ZWJiOTk5NGVkOTg4Y2FmNWYxYmUwN2M1NmZmMGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQcm9ncmVzc0VsZW1lbnQuY3BwCmluZGV4IGVhNWY0MDc3YzFhZGU0NzQ0YThjMjczMWE5YWIw
ZGU4MjQ0NmEyZWEuLjEzNjc1NWJlN2E3NmZjMmM5N2I2MTk3ZDQwMjFlYjAxYzZiOTdiYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAtMjMsMTIg
KzIzLDEzIEBACiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKICNpbmNsdWRlICJBdHRy
aWJ1dGUuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIk5vZGVSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmgiCiAjaW5j
bHVkZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNldC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggMjMy
YjU2M2UxMjY3MDQzYWI1YTUyYmU4NjVjMzY4ZGUwNzNjNWYxZC4uYWVkYWMxZDBmN2QxMGY2ZDg0
ZTEzNjBlODEwMDMzOGE5MGM4MTJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7Ci0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiBwcml2YXRlOgogCiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBtX2Rpc3RyaWJ1dGlvbjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>