<?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>99228</bug_id>
          
          <creation_ts>2012-10-12 18:18:23 -0700</creation_ts>
          <short_desc>The shadow element is not reprojected to a nested shadowRoot</short_desc>
          <delta_ts>2012-10-28 21:08:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100353</dependson>
          <blocked>96986</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Steve Orvell">sorvell</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>gustavo</cc>
    
    <cc>hayato</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>shinyak</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>741371</commentid>
    <comment_count>0</comment_count>
      <attachid>168525</attachid>
    <who name="Steve Orvell">sorvell</who>
    <bug_when>2012-10-12 18:18:23 -0700</bug_when>
    <thetext>Created attachment 168525
Reduction showing reprojection of shadow element with expected output.

If a host has 2 shadowRoots (A-old and A) and a nested shadowRoot (B) and B&apos;s light dom contains a shadow element that should display A-old, then A-old is not distributed to an insertion point in B that should accept its contents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743848</commentid>
    <comment_count>1</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-16 22:07:11 -0700</bug_when>
    <thetext>I found that we have to change the current algorithm to reproject &lt;shadow&gt;.

Currently, we resolve &lt;content&gt; from the youngest shadow root. However, when we reproject &lt;shadow&gt;, we have to resolve &lt;content&gt; and &lt;shadow&gt; from the oldest shadow root, since we have to know what elements are distributed to &lt;shadow&gt;.

This is an example.
host ------- SR -------------- SR (younger)
 |- div (A)   |-div (C)         |-div -------- SR
 |- div (B)   |-content[B]         |-shadow     |-content[div]#target
              |-shadow

When we resolve  content[div]#target, we have to resolve all the other shadow and content.
This might be a drastic spec change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744513</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-17 12:45:44 -0700</bug_when>
    <thetext>I think we can punt on this for now, possibly forever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744950</commentid>
    <comment_count>3</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-17 21:48:54 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I think we can punt on this for now, possibly forever.

When we adopt OOP model to understand reprojection, reprojecting shadow seems like seeing a private field of a base class. (reprojecting content is just passing arguments to super class.)

I think it would be better to postpone implementing this until we strongly require this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748335</commentid>
    <comment_count>4</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-23 00:39:20 -0700</bug_when>
    <thetext>I&apos;m now thinking implementing this is not so hard...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748415</commentid>
    <comment_count>5</comment_count>
      <attachid>170094</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-23 02:38:00 -0700</bug_when>
    <thetext>Created attachment 170094
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748416</commentid>
    <comment_count>6</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-23 02:39:02 -0700</bug_when>
    <thetext>This WIP includes code related to https://bugs.webkit.org/show_bug.cgi?id=99552 also.
I&apos;ve confirmed that distribution works, but we have to fix ComposedShadowTreeWalker also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748692</commentid>
    <comment_count>7</comment_count>
      <attachid>170094</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-23 09:04:06 -0700</bug_when>
    <thetext>Comment on attachment 170094
WIP

This looks promising!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749441</commentid>
    <comment_count>8</comment_count>
      <attachid>170338</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-24 00:51:37 -0700</bug_when>
    <thetext>Created attachment 170338
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749443</commentid>
    <comment_count>9</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-24 00:52:38 -0700</bug_when>
    <thetext>Now shadow-reprojection works in some case, though we have a lot of failing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749446</commentid>
    <comment_count>10</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-24 00:54:37 -0700</bug_when>
    <thetext>&lt;shadow&gt; in &lt;shadow&gt; does not work again :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749495</commentid>
    <comment_count>11</comment_count>
      <attachid>170352</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-24 03:09:32 -0700</bug_when>
    <thetext>Created attachment 170352
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749496</commentid>
    <comment_count>12</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-24 03:11:01 -0700</bug_when>
    <thetext>The last WIP patch passes all the existing fast/dom/shadow tests. I&apos;ll add more tests and refine the code tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750262</commentid>
    <comment_count>13</comment_count>
      <attachid>170527</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-24 18:01:22 -0700</bug_when>
    <thetext>Created attachment 170527
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750264</commentid>
    <comment_count>14</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-24 18:03:19 -0700</bug_when>
    <thetext>Now writing a composed shadow tree walker test, and it&apos;s discovering a lot of failures. I need more time to make it review-ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750414</commentid>
    <comment_count>15</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-24 23:25:36 -0700</bug_when>
    <thetext>We have to update the AncestorChainWalker also.

AncestorChainWalker::parent()

    if (!m_node-&gt;isShadowRoot()) {
        m_node = m_node-&gt;parentNode(); (*)
        m_distributedNode = m_node;
        m_isCrossingInsertionPoint = false;
        return;
    }

(*) Here, we should preserve m_node as a m_distributed node before assigning m_node-&gt;parentNode() to m_node if the following condition is met:

   m_node-&gt;parenetNode()-&gt;isShadowRoot() &amp;&amp; toShadowRoot(m_node-&gt;parentNode())-&gt;isAssignedTo()

since m_node might be re-projected. So we should keep it as a m_distributed_node.

Let me take a look at other places also. I am afraid that we have to update other places.



(In reply to comment #14)
&gt; Now writing a composed shadow tree walker test, and it&apos;s discovering a lot of failures. I need more time to make it review-ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750451</commentid>
    <comment_count>16</comment_count>
      <attachid>170566</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-24 23:55:47 -0700</bug_when>
    <thetext>Created attachment 170566
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750454</commentid>
    <comment_count>17</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-24 23:57:52 -0700</bug_when>
    <thetext>I&apos;ve taken a look at EventDispatcher::ensureEventAncestors.
I expect that we don&apos;t have to update EventDispatcher as long as we can calculate ancestors chain in AncestorChainWalker correctly.

(In reply to comment #15)
&gt; We have to update the AncestorChainWalker also.
&gt; 
&gt; AncestorChainWalker::parent()
&gt; 
&gt;     if (!m_node-&gt;isShadowRoot()) {
&gt;         m_node = m_node-&gt;parentNode(); (*)
&gt;         m_distributedNode = m_node;
&gt;         m_isCrossingInsertionPoint = false;
&gt;         return;
&gt;     }
&gt; 
&gt; (*) Here, we should preserve m_node as a m_distributed node before assigning m_node-&gt;parentNode() to m_node if the following condition is met:
&gt; 
&gt;    m_node-&gt;parenetNode()-&gt;isShadowRoot() &amp;&amp; toShadowRoot(m_node-&gt;parentNode())-&gt;isAssignedTo()
&gt; 
&gt; since m_node might be re-projected. So we should keep it as a m_distributed_node.
&gt; 
&gt; Let me take a look at other places also. I am afraid that we have to update other places.
&gt; 
&gt; 
&gt; 
&gt; (In reply to comment #14)
&gt; &gt; Now writing a composed shadow tree walker test, and it&apos;s discovering a lot of failures. I need more time to make it review-ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750455</commentid>
    <comment_count>18</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-24 23:58:32 -0700</bug_when>
    <thetext>&gt; We have to update the AncestorChainWalker also.
&gt; 
Done.

What we have to fix now is:
  - ComposedShadowTreeWalker::nextSibling(), previousSibling().

If you find other places where we have to fix, please tell me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750456</commentid>
    <comment_count>19</comment_count>
      <attachid>170566</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-24 23:59:53 -0700</bug_when>
    <thetext>Comment on attachment 170566
WIP

Attachment 170566 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14593126</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750458</commentid>
    <comment_count>20</comment_count>
      <attachid>170566</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-25 00:01:39 -0700</bug_when>
    <thetext>Comment on attachment 170566
WIP

Attachment 170566 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14555512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750478</commentid>
    <comment_count>21</comment_count>
      <attachid>170566</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-10-25 00:27:56 -0700</bug_when>
    <thetext>Comment on attachment 170566
WIP

Attachment 170566 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14551008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750488</commentid>
    <comment_count>22</comment_count>
      <attachid>170566</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 00:35:02 -0700</bug_when>
    <thetext>Comment on attachment 170566
WIP

Attachment 170566 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14566506</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750503</commentid>
    <comment_count>23</comment_count>
      <attachid>170566</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-25 00:45:10 -0700</bug_when>
    <thetext>Comment on attachment 170566
WIP

Attachment 170566 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14562497</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750505</commentid>
    <comment_count>24</comment_count>
      <attachid>170566</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-25 00:45:56 -0700</bug_when>
    <thetext>Comment on attachment 170566
WIP

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

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:67
&gt; +static inline InsertionPoint* resolveReprojection(const Node* projectedNode, const Node* baseNode)

Do we need two parameters? it seems one parameter, projectedNode, is enough.

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:86
&gt; +            return resolveShadowProjection(root-&gt;assignedTo());

I am afraid that this does not resolve reprojection for shadow.
If we resolve reprojection recursively, we need two nodes as state, one is an insertion point and the other is a re-projected node.

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:223
&gt; +    InsertionPoint* insertionPoint = resolveReprojection(node, node);

One parameter seems to be enough.

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:291
&gt; +        if (InsertionPoint* insertionPoint = resolveReprojection(node, node)) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750797</commentid>
    <comment_count>25</comment_count>
      <attachid>170566</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-25 07:25:28 -0700</bug_when>
    <thetext>Comment on attachment 170566
WIP

Attachment 170566 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14554656</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751342</commentid>
    <comment_count>26</comment_count>
      <attachid>170766</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 16:35:49 -0700</bug_when>
    <thetext>Created attachment 170766
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751344</commentid>
    <comment_count>27</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 16:37:23 -0700</bug_when>
    <thetext>It started to pass the tests again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751345</commentid>
    <comment_count>28</comment_count>
      <attachid>170766</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 16:39:25 -0700</bug_when>
    <thetext>Comment on attachment 170766
WIP

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

&gt; Source/WebCore/css/StyleResolver.cpp:1547
&gt; +        }

memo: This is necessary because the direct child of shadow root can be reprojected to somewhere now. In that case, parentElement() will return 0.

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:108
&gt; +

This should die.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751413</commentid>
    <comment_count>29</comment_count>
      <attachid>170782</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 18:36:11 -0700</bug_when>
    <thetext>Created attachment 170782
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751421</commentid>
    <comment_count>30</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 18:41:46 -0700</bug_when>
    <thetext>This version works correctly including ComposedShadowTreeWalker.
I&apos;ll refine the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751455</commentid>
    <comment_count>31</comment_count>
      <attachid>170788</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 19:36:43 -0700</bug_when>
    <thetext>Created attachment 170788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751465</commentid>
    <comment_count>32</comment_count>
      <attachid>170792</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 19:51:46 -0700</bug_when>
    <thetext>Created attachment 170792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751467</commentid>
    <comment_count>33</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 19:52:14 -0700</bug_when>
    <thetext>Fixed ChangeLog mojibake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751473</commentid>
    <comment_count>34</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-25 20:04:42 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Fixed ChangeLog mojibake

Sounds delicious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751503</commentid>
    <comment_count>35</comment_count>
      <attachid>170801</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 21:02:45 -0700</bug_when>
    <thetext>Created attachment 170801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751505</commentid>
    <comment_count>36</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 21:03:25 -0700</bug_when>
    <thetext>Minor updates: removed a debug code, and ChangeLog update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751524</commentid>
    <comment_count>37</comment_count>
      <attachid>170807</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 21:53:52 -0700</bug_when>
    <thetext>Created attachment 170807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751525</commentid>
    <comment_count>38</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-25 21:54:40 -0700</bug_when>
    <thetext>Added a testcase about inert InsertionPoint, and fixed a bug related to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753018</commentid>
    <comment_count>39</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-28 17:57:36 -0700</bug_when>
    <thetext>Hmm... No one did review? :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753021</commentid>
    <comment_count>40</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-28 18:24:58 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Added a testcase about inert InsertionPoint, and fixed a bug related to it.

I&apos;ll try to get this in a couple of hours. Sorry :-\</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753040</commentid>
    <comment_count>41</comment_count>
      <attachid>170807</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-28 20:57:40 -0700</bug_when>
    <thetext>Comment on attachment 170807
Patch

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

&gt; Source/WebCore/dom/ElementShadow.cpp:135
&gt;  InsertionPoint* ElementShadow::insertionPointFor(const Node* node) const

That method got whittled away to nothing! Can probably remove it.

&gt; Source/WebCore/html/shadow/InsertionPoint.h:135
&gt; +inline Element* parentElementForDistribution(const Node* node)

Is this guy still being used somewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753046</commentid>
    <comment_count>42</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-28 21:08:18 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 170807 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170807&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ElementShadow.cpp:135
&gt; &gt;  InsertionPoint* ElementShadow::insertionPointFor(const Node* node) const
&gt; 
&gt; That method got whittled away to nothing! Can probably remove it.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:135
&gt; &gt; +inline Element* parentElementForDistribution(const Node* node)
&gt; 
&gt; Is this guy still being used somewhere?

Thanks for reviewing!

I&apos;ll make follow-up patches after landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753047</commentid>
    <comment_count>43</comment_count>
      <attachid>170807</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-28 21:08:23 -0700</bug_when>
    <thetext>Comment on attachment 170807
Patch

Clearing flags on attachment: 170807

Committed r132760: &lt;http://trac.webkit.org/changeset/132760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753048</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-28 21:08:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>168525</attachid>
            <date>2012-10-12 18:18:23 -0700</date>
            <delta_ts>2012-10-12 18:18:23 -0700</delta_ts>
            <desc>Reduction showing reprojection of shadow element with expected output.</desc>
            <filename>redistribute-shadow.html</filename>
            <type>text/html</type>
            <size>750</size>
            <attacher name="Steve Orvell">sorvell</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CgpBdHRlbXB0IHRvIHJlcHJvamVjdCB0aGUgPCBzaGFkb3cgPiBlbGVt
ZW50Lgo8ZGl2IGlkPSJob3N0Ij48L2Rpdj4KCjxicj48aHI+PGJyPgpFeHBlY3RlZCBvdXRwdXQ6
Cgo8ZGl2PgogIDxkaXYgc3R5bGU9InBhZGRpbmc6IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJl
ZDsiPgogICAgPGRpdiBzdHlsZT0icGFkZGluZzogMTBweDsgYm9yZGVyOiAxcHggc29saWQgYmx1
ZTsiPgogICAgICAtLSBzaGFkb3cgLS0KICAgIDwvZGl2PgogICAgCiAgPC9kaXY+CjwvZGl2PgoK
PHNjcmlwdD4KICB2YXIgZWx0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Iik7CiAgdmFy
IHIxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZWx0KTsKICAKICByMS5pbm5lckhUTUwgPSAnIC0t
IHNoYWRvdyAtLSAnOwogIAogIHZhciByMV8xID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZWx0KTsK
ICAKICByMV8xLmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSJwYWRkaW5nOiAxMHB4OyBib3JkZXI6
IDFweCBzb2xpZCByZWQ7Ij48c2hhZG93Pjwvc2hhZG93PjwvZGl2Pic7CiAgLy8KICB2YXIgZWx0
MiA9IHIxXzEucXVlcnlTZWxlY3RvcignZGl2Jyk7CiAgdmFyIHIyID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoZWx0Mik7CiAgcjIuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9InBhZGRpbmc6IDEwcHg7
IGJvcmRlcjogMXB4IHNvbGlkIGJsdWU7Ij48Y29udGVudD48L2NvbnRlbnQ+PC9kaXY+JzsKICAK
PC9zY3JpcHQ+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170094</attachid>
            <date>2012-10-23 02:38:00 -0700</date>
            <delta_ts>2012-10-24 00:51:33 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-99228-20121023183637.patch</filename>
            <type>text/plain</type>
            <size>14754</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMzMGEwNTk4NDYzMzdk
ZWUyZjI3OTg3NDgzNWNhNmI0NTM4ZTAwYS4uYjkyZDQzZDliYTliM2RlMWVmYTk2NTgwNTRmMTFj
MmRhY2IyZDc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEwLTIzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIHNoYWRvdyByb290LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KE9PUFMhKS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9y
Ojpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAg
ICAgICAoQ29udGVudERpc3RyaWJ1dG9yKToKKworMjAxMi0xMC0yMiAgU2hpbnlhIEthd2FuYWth
ICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGhlIG9yZGVyIG9mIHJlc29sdmlu
ZyBkaXN0cmlidXRpb24gaW4gdHJlZSBjb21wb3NpdGlvbiBpcyB3cm9uZy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTUyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBjdXJy
ZW50IFNoYWRvd0RPTSBzcGVjLCB3ZSBoYXZlIHRvIHJlc29sdmUgPGNvbnRlbnQ+IGZpcnN0LCB0
aGVuIHJlc29sdmUgPHNoYWRvdz4uCisgICAgICAgIEhvd2V2ZXIsIHRoZSBvcmRlciBvZiByZXNv
bHV0aW9uIGlzIG5vdyB0aGUgbWl4ZWQgdHJlZSBvcmRlciBvZiA8Y29udGVudD4gYW5kIDxzaGFk
b3c+LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlv
bi1vcmRlci5odG1sCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKTog
V2Ugc2hvdWxkIHJlc29sdmUgPGNvbnRlbnQ+IGJlZm9yZSA8c2hhZG93Pi4KKyAgICAgICAgT25s
eSB0aGUgZmlyc3QgYWN0aXZlIHNoYWRvdyBpbnNlcnRpb24gcG9pbnQgY2FuIHNlbGVjdCB0aGUg
cmVzdCBvZiBjb250ZW50cy4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxDb250ZW50RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxTaGFk
b3dFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxTaGFkb3dFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9IVE1MU2hhZG93RWxlbWVudCk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKEluc2Vy
dGlvblBvaW50KTogV2UgZG9uJ3QgbmVlZCBkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbigpIGFu
eW1vcmUuCisKIDIwMTItMTAtMjIgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBJbmRleGVkREI6IFJlbW92ZSBjdXN0b20gYmluZGluZyBjb2RlIGZvciBJREJD
dXJzb3IudmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlODQ1NmY3MDQwYzcyMWFkZWY0
ZDI0MjE2NTM4YmJiNzI0Y2Y1MjcwLi4wNmQ5ZWEyZDA0NWUzNGRmNTUyYTNiMTkxMTg1MmQ4MDQw
OGUzZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMDAyLDYgKzEwMDIsOSBAQCB2b2lk
IEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogCiB2
b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCiB7CisgICAgaWYgKHRpdGxlKCkgPT0gImRlYnVnc3RvcCIp
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZGVidWdzdG9wXG4iKTsKKwogICAgIHN1c3BlbmRQ
b3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNp
b25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggNjkyOWZkYzUw
MmFkMDQ3YzRjOTU1ODI1ZTcwOTU1YTU3OWMyODJiMS4uN2Y0ZjA4MWQ4YTU4ZDA4NGY1YmQ2Mjll
MTU0MzM4NGZhYTA3MjAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0zMCwxMSArMzAsMjEgQEAKICNpbmNsdWRlICJDb250
ZW50U2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRl
ICJIVE1MQ29udGVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyBpbmxpbmUgYm9vbCBkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbihIVE1MU2hhZG93RWxlbWVu
dCogc2hhZG93KQoreworICAgIFRyZWVTY29wZSogc2NvcGUgPSBzaGFkb3ctPnRyZWVTY29wZSgp
OworICAgIGlmIChzY29wZS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkpCisgICAgICAgIHJl
dHVybiB0b1NoYWRvd1Jvb3Qoc2NvcGUtPnJvb3ROb2RlKCkpLT5pc09sZGVzdCgpOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBDb250ZW50RGlzdHJpYnV0b3I6OkNvbnRlbnREaXN0cmlidXRv
cigpCiAgICAgOiBtX3ZhbGlkaXR5KFVuZGV0ZXJtaW5lZCkKIHsKQEAgLTQ5LDMzICs1OSw1MiBA
QCBJbnNlcnRpb25Qb2ludCogQ29udGVudERpc3RyaWJ1dG9yOjpmaW5kSW5zZXJ0aW9uUG9pbnRG
b3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAogICAgIHJldHVybiBtX25vZGVUb0luc2VydGlvblBv
aW50LmdldChrZXkpOwogfQogCi12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShF
bGVtZW50KiBob3N0KQordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OnBvcHVsYXRlKE5vZGUqIG5v
ZGUsIENvbnRlbnREaXN0cmlidXRpb24mIHBvb2wpCiB7Ci0gICAgQVNTRVJUKG5lZWRzRGlzdHJp
YnV0aW9uKCkpOwotICAgIEFTU0VSVChtX25vZGVUb0luc2VydGlvblBvaW50LmlzRW1wdHkoKSk7
Ci0KLSAgICBtX3ZhbGlkaXR5ID0gVmFsaWQ7CisgICAgaWYgKCFpc0luc2VydGlvblBvaW50KG5v
ZGUpKSB7CisgICAgICAgIHBvb2wuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1cm47CisgICAg
fQogCi0gICAgQ29udGVudERpc3RyaWJ1dGlvbiBwb29sOwotICAgIGZvciAoTm9kZSogbm9kZSA9
IGhvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgaWYgKCFpc0hUTUxDb250ZW50RWxlbWVudChub2RlKSkgewotICAgICAgICAgICAg
cG9vbC5hcHBlbmQobm9kZSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBpZiAoaXNIVE1M
U2hhZG93RWxlbWVudChub2RlKSAmJiAhZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4odG9IVE1M
U2hhZG93RWxlbWVudChub2RlKSkpIHsKKyAgICAgICAgSFRNTFNoYWRvd0VsZW1lbnQqIHNoYWRv
dyA9IHRvSFRNTFNoYWRvd0VsZW1lbnQobm9kZSk7CisgICAgICAgIFNoYWRvd1Jvb3QqIG9sZGVy
ID0gc2hhZG93LT5zaGFkb3dSb290KCktPm9sZGVyU2hhZG93Um9vdCgpOworICAgICAgICBpZiAo
b2xkZXItPmFzc2lnbmVkVG8oKSA9PSBzaGFkb3cpIHsKKyAgICAgICAgICAgIGZvciAoTm9kZSog
Y2hpbGQgPSBvbGRlci0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkKKyAgICAgICAgICAgICAgICBwb3B1bGF0ZShjaGlsZCwgcG9vbCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9IHNoYWRvdy0+
Zmlyc3RDaGlsZCgpOyBmYWxsYmFja05vZGU7IGZhbGxiYWNrTm9kZSA9IGZhbGxiYWNrTm9kZS0+
bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBwb29sLmFwcGVuZChmYWxsYmFja05vZGUp
OwogICAgICAgICB9Ci0KKyAgICB9IGVsc2UgewogICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQgPSB0b0luc2VydGlvblBvaW50KG5vZGUpOwogICAgICAgICBpZiAoaW5zZXJ0
aW9uUG9pbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGluc2VydGlvblBvaW50LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBw
b29sLmFwcGVuZChpbnNlcnRpb25Qb2ludC0+YXQoaSkpOworICAgICAgICAgICAgICAgIHBvcHVs
YXRlKGluc2VydGlvblBvaW50LT5hdChpKSwgcG9vbCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9IGluc2VydGlvblBvaW50LT5maXJzdENo
aWxkKCk7IGZhbGxiYWNrTm9kZTsgZmFsbGJhY2tOb2RlID0gZmFsbGJhY2tOb2RlLT5uZXh0U2li
bGluZygpKQogICAgICAgICAgICAgICAgIHBvb2wuYXBwZW5kKGZhbGxiYWNrTm9kZSk7CiAgICAg
ICAgIH0KICAgICB9Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVs
ZW1lbnQqIGhvc3QpCit7CisgICAgZnByaW50ZihzdGRlcnIsICJDb250ZW50RGlzdHJpYnV0aW9u
OjpkaXN0cmlidXRlKClcbiIpOworICAgIAorICAgIEFTU0VSVChuZWVkc0Rpc3RyaWJ1dGlvbigp
KTsKKyAgICBBU1NFUlQobV9ub2RlVG9JbnNlcnRpb25Qb2ludC5pc0VtcHR5KCkpOworCisgICAg
bV92YWxpZGl0eSA9IFZhbGlkOworCisgICAgQ29udGVudERpc3RyaWJ1dGlvbiBwb29sOworICAg
IGZvciAoTm9kZSogbm9kZSA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
Pm5leHRTaWJsaW5nKCkpCisgICAgICAgIHBvcHVsYXRlKG5vZGUsIHBvb2wpOwogCiAgICAgVmVj
dG9yPGJvb2w+IGRpc3RyaWJ1dGVkKHBvb2wuc2l6ZSgpKTsKICAgICBkaXN0cmlidXRlZC5maWxs
KGZhbHNlKTsKIAorICAgIEhUTUxTaGFkb3dFbGVtZW50KiBmaXJzdEFjdGl2ZVNoYWRvd0luc2Vy
dGlvblBvaW50SW5PbGRlc3RTaGFkb3dSb290ID0gMDsKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJv
b3QgPSBob3N0LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVy
U2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5v
ZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7CiAgICAgICAgICAgICBpZiAoIWlz
SW5zZXJ0aW9uUG9pbnQobm9kZSkpCkBAIC04MywxOCArMTEyLDI4IEBAIHZvaWQgQ29udGVudERp
c3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCiAgICAgICAgICAgICBJbnNlcnRp
b25Qb2ludCogcG9pbnQgPSB0b0luc2VydGlvblBvaW50KG5vZGUpOwogICAgICAgICAgICAgaWYg
KCFwb2ludC0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIFNoYWRvd1Jvb3QqIG9sZGVyID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCk7Ci0gICAgICAg
ICAgICBpZiAocG9pbnQtPmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkpCisKKyAgICAgICAg
ICAgIGlmIChpc0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgaWYg
KHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcm9v
dC0+b2xkZXJTaGFkb3dSb290KCktPmFzc2lnbmVkVG8oKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGlzdHJpYnV0ZU5vZGVDaGlsZHJlblRvKHBvaW50LCByb290LT5vbGRlclNoYWRvd1Jv
b3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+
c2V0QXNzaWduZWRUbyhwb2ludCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCFmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRlc3RT
aGFkb3dSb290KQorICAgICAgICAgICAgICAgICAgICBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50SW5PbGRlc3RTaGFkb3dSb290ID0gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZGlzdHJpYnV0ZVNlbGVjdGlvbnNU
byhwb2ludCwgcG9vbCwgZGlzdHJpYnV0ZWQpOwotICAgICAgICAgICAgZWxzZSBpZiAob2xkZXIg
JiYgIW9sZGVyLT5hc3NpZ25lZFRvKCkpIHsKLSAgICAgICAgICAgICAgICBkaXN0cmlidXRlTm9k
ZUNoaWxkcmVuVG8ocG9pbnQsIG9sZGVyKTsKLSAgICAgICAgICAgICAgICBvbGRlci0+c2V0QXNz
aWduZWRUbyhwb2ludCk7CisgICAgICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRv
dyA9IG5vZGUtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KG5vZGUt
PnBhcmVudE5vZGUoKSktPnNoYWRvdygpIDogMCkKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93
LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBub2RlLT5wYXJlbnROb2RlKCktPmlzRWxlbWVu
dE5vZGUoKSA/IHRvRWxlbWVudChub2RlLT5wYXJlbnROb2RlKCkpLT5zaGFkb3coKSA6IDApCi0g
ICAgICAgICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CiAgICAgICAg
IH0KICAgICB9CisKKyAgICBpZiAoZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludEluT2xk
ZXN0U2hhZG93Um9vdCkgeworICAgICAgICBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKGZpcnN0QWN0
aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jvb3QsIHBvb2wsIGRpc3RyaWJ1
dGVkKTsKKyAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IGZpcnN0QWN0aXZlU2hh
ZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jvb3QtPnBhcmVudE5vZGUoKS0+aXNFbGVt
ZW50Tm9kZSgpID8gdG9FbGVtZW50KGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9s
ZGVzdFNoYWRvd1Jvb3QtPnBhcmVudE5vZGUoKSktPnNoYWRvdygpIDogMCkKKyAgICAgICAgICAg
IHNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOworICAgIH0KIH0KIAogYm9vbCBDb250
ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGUoRWxlbWVudCogaG9zdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXggYmVlOTJhNTZhYzE0
MGFmNjU1ZjA1ZTgzOWNiYTY2MDNjNTQyZDI2Yy4uMGQ4ZDAwODJlNmU5MjQxMGU0M2Y2MDYwY2Uz
NmYxNmU2OGUwNDZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxp
ZGF0ZURpc3RyaWJ1dGlvbkluKENvbnRlbnREaXN0cmlidXRpb24qKTsKIAogcHJpdmF0ZToKKyAg
ICB2b2lkIHBvcHVsYXRlKE5vZGUqLCBDb250ZW50RGlzdHJpYnV0aW9uJik7CisKICAgICBIYXNo
TWFwPGNvbnN0IE5vZGUqLCBJbnNlcnRpb25Qb2ludCo+IG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQ7
CiAgICAgdW5zaWduZWQgbV92YWxpZGl0eSA6IDI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAppbmRleCBlYTdmYjg5YTU2MGNlZjg2YTYz
MDVkOTllMzE1Y2RjOWE3OGJjM2EzLi43NTQ3OTkzMDYyNTczY2U3MzA1NmNlYzUzNzUwY2Q0MzNi
NDViZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVs
ZW1lbnQuaApAQCAtNDgsOCArNDgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZWxlY3QoY29u
c3QgQXRvbWljU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VmFsaWQoKSBjb25z
dDsKIAotICAgIGJvb2wgZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Ci0KIHByb3RlY3RlZDoKICAgICBIVE1MQ29udGVudEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCA1YzVkYmU5NGZmZTQ0NmU2ZmUwYjYzZjZk
MGU3ZWI2M2U2NDkzZTE0Li43ZDdlNDE1MjlmYmRmMTZmMTMwNDA4ZWUyMzJmMTk4YjgyODM1MjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQu
Y3BwCkBAIC02MCwxNSArNjAsNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxTaGFkb3dFbGVt
ZW50OjpzZWxlY3QoKSBjb25zdAogICAgICByZXR1cm4gbnVsbEF0b207CiB9CiAKLWJvb2wgSFRN
TFNoYWRvd0VsZW1lbnQ6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkgY29uc3QKLXsKLSAg
ICBUcmVlU2NvcGUqIHNjb3BlID0gdHJlZVNjb3BlKCk7Ci0KLSAgICBpZiAoc2NvcGUtPnJvb3RO
b2RlKCktPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gdG9TaGFkb3dSb290KHNjb3Bl
LT5yb290Tm9kZSgpKS0+aXNPbGRlc3QoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIE5vZGU6
Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTFNoYWRvd0VsZW1lbnQ6Omluc2VydGVk
SW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBJbnNlcnRpb25Qb2lu
dDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCmluZGV4IDExOWZhOWY5NWRlZjYyNzQxNjJjYjE4
ODk0OWZkNDcxYWFkYmZiODUuLjM2YmRkODk1YWMyZGVmYjNhNDA3ZjQwMWRkODkyM2U1YTdkOWY5
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQu
aApAQCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNl
bGVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNTZWxlY3RWYWxpZCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KLSAgICBib29sIGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkgY29u
c3Q7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKQEAgLTU2LDYgKzU1LDE4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdDsKIH07CiAK
K2lubGluZSBib29sIGlzSFRNTFNoYWRvd0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQobm9kZSk7CisgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpz
aGFkb3dUYWcpOworfQorCitpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIHRvSFRNTFNoYWRvd0Vs
ZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgaXNIVE1MU2hhZG93RWxl
bWVudChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxTaGFkb3dFbGVtZW50Kj4o
bm9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhUTUxTaGFk
b3dFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
CmluZGV4IGFlZjk4MTNmNTAwMWEzMTJmNTUzMDQzNzRjMDA1MTQ3M2U2NzNhNmEuLjQzMDQxNWY3
YjYyNmMyOTg5YmFhMzc2ZWMxMGY0NGZmNTdiOTk4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0KCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc1NlbGVjdFZhbGlkKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBk
b2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbigpIGNvbnN0ID0gMDsKIAogICAgIGJvb2wgcmVzZXRT
dHlsZUluaGVyaXRhbmNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRSZXNldFN0eWxlSW5oZXJpdGFu
Y2UoYm9vbCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZWRmZTA3ZDY0NDczMmQxMWQ0ODExNzRhY2FkMTIzZTExYWJiZTcx
Yy4uMjJkZTcxZmYxNjNlYmYzYjBkNDdkNTY3MjI3ZWZhZWZhZmQ0ZjFjZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDEyLTEwLTIyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBUaGUgb3JkZXIgb2YgcmVzb2x2aW5nIGRpc3RyaWJ1dGlvbiBpbiB0
cmVlIGNvbXBvc2l0aW9uIGlzIHdyb25nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTk1NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBhbHNvIGZpeCB0aGUgZXhpc3Rpbmcgd3JvbmcgdGVzdC4KKwor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1vcmRlci1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXBy
b2plY3Rpb24tb3JkZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbDoKKwogMjAxMi0xMC0yMiAgS2FuZ2ls
IEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gU2tpcCBmYXN0
L2V2ZW50cy90YWJpbmRleC1mb2N1cy1ibHVyLWFsbC5odG1sIGNhc2UuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tb3JkZXItZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVj
dGlvbi1vcmRlci1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1ZjhmYTNmOGFlMWMxMDU2YjYw
NDU2YjY2ZjI1OWMwYmYwNzU1MzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tb3JkZXItZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPGRpdiBp
ZD0iaG9zdCI+CisgICAgPGRpdj5DPC9kaXY+PGhyPgorICAgIDxkaXY+QjwvZGl2Pjxocj4KKyAg
ICA8ZGl2PjxkaXY+QTwvZGl2PjwvZGl2Pjxocj4KKyAgICA8ZGl2PkQ8L2Rpdj4KKzwvZGl2Pgor
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvY29udGVudC1yZXByb2plY3Rpb24tb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1vcmRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMzVj
ODkyNjhiMTMxMzYzMzIzNzg3ZDE3NDNlOWE1OTc1OGEwZmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tb3JkZXIuaHRt
bApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKwor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9
Imhvc3QiPgorICAgIDxkaXYgY2xhc3M9ImEgYWIiPkE8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJi
IGFiIj5CPC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYyI+QzwvZGl2PgorPC9kaXY+CisKKzxzY3Jp
cHQ+Cit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOworCitzaGFk
b3dSb290LmlubmVySFRNTCA9CisgICAgJzxzaGFkb3cgaWQ9ImlkMSI+PC9zaGFkb3c+PGhyPicg
KyAKKyAgICAnPGNvbnRlbnQgaWQ9ImlkMiIgc2VsZWN0PSIuYiI+PC9jb250ZW50Pjxocj4nICsg
CisgICAgJzxkaXY+PGNvbnRlbnQgaWQ9ImlkMyIgc2VsZWN0PSIuYWIiPjwvY29udGVudD48L2Rp
dj48aHI+JyArCisgICAgJzxzaGFkb3cgaWQ9ImlkNCI+PGRpdj5EPC9kaXY+PC9zaGFkb3c+Jwor
PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5o
dG1sCmluZGV4IGUyZGE3MGM2ZDBhNjgwOTYxN2Q5MGMwMTA4MDkxZTJlOGRmM2U5NTUuLjZiODhi
YmU1OTYzMmUzZDdhZjU3Mjk0ZWQ5NWZmZDMzNGQ1NTBmNDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmlu
Zy1zaW5nbGUuaHRtbApAQCAtOTIsNyArOTIsNyBAQCB0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiBy
ZW5kZXJpbmdNaXhlZE9mRmFsbGJhY2tBbmROb25GYWxsYmFjayhjYWxsSWZEb25lKSB7CiAKIHRl
c3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1NoYWRvd1Jvb3RCZWZvcmVDb250ZW50KGNh
bGxJZkRvbmUpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5l
cicpLmlubmVySFRNTCA9Ci0gICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5N
SUQ8L3NwYW4+PHNwYW4+TSAxPC9zcGFuPjxzcGFuPkNPTlRFTlQgRkFMTEJBQ0s8L3NwYW4+PHNw
YW4+TSAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisgICAgICAgICI8ZGl2Pjxz
cGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5TSEFET1cgRkFMTEJBQ0s8L3NwYW4+PHNwYW4+TSAxPC9z
cGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5NIDI8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9k
aXY+IjsKIAogICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAg
ICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170338</attachid>
            <date>2012-10-24 00:51:37 -0700</date>
            <delta_ts>2012-10-24 03:09:29 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-99228-20121024165012.patch</filename>
            <type>text/plain</type>
            <size>10137</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY4ZTEyMDg5Yzc0NjM2
NzQ2MDMwODIzNjQwNGUyNGUzNTMyNTE2MC4uNTM0OTRmZWI4NDVlMmJjNmJlMDc5NThmNTllNzFh
YjNmOTU3MDIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIHNoYWRvdyByb290LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KE9PUFMhKS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9y
Ojpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAg
ICAgICAoQ29udGVudERpc3RyaWJ1dG9yKToKKwogMjAxMi0xMC0yMyAgQW5kcmVhcyBLbGluZyAg
PGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2hyaW5rIGltbXV0YWJsZSBFbGVtZW50QXR0
cmlidXRlRGF0YSBhbmQgU3R5bGVQcm9wZXJ0eVNldCBieSBvbmUgcG9pbnRlciBlYWNoLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGFkOGRkY2IzY2QxODhkYTc3MGMzYzk2
NWJiNWY1NTIxOThiMDI5NWEuLmNmOWI2OGE3OTFjYzk3MjAzYmFjOGYwOTllNDEzYTkyNDViYWEy
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTk2Myw2ICs5NjMsNyBA
QCBpbmxpbmUgYm9vbCBzaG91bGRSZXNldFN0eWxlSW5oZXJpdGFuY2UoTm9kZVJlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleHQpCiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCisjaWYgMAogICAgIEFTU0VSVChwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9u
KGNvbnRleHQubm9kZSgpKSk7CiAgICAgRWxlbWVudFNoYWRvdyogc2hhZG93ID0gcGFyZW50RWxl
bWVudEZvckRpc3RyaWJ1dGlvbihjb250ZXh0Lm5vZGUoKSktPnNoYWRvdygpOwogICAgIEFTU0VS
VChzaGFkb3cpOwpAQCAtOTczLDYgKzk3NCw3IEBAIGlubGluZSBib29sIHNob3VsZFJlc2V0U3R5
bGVJbmhlcml0YW5jZShOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHlvdW5nZXJJbnNlcnRpb25Qb2ludDsK
ICAgICB9CisjZW5kaWYKICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQtPnJlc2V0U3R5bGVJbmhl
cml0YW5jZSgpOwogfQogCkBAIC0xNTM5LDkgKzE1NDEsMTAgQEAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJl
bmRlclMKICAgICAvLyBjb250ZW50ZWRpdGFibGUgYXR0cmlidXRlIChpbXBsZW1lbnRlZCBieSAt
d2Via2l0LXVzZXItbW9kaWZ5KSBzaG91bGQKICAgICAvLyBiZSBwcm9wYWdhdGVkIGZyb20gc2hh
ZG93IGhvc3QgdG8gZGlzdHJpYnV0ZWQgbm9kZS4KICAgICBpZiAobV9kaXN0cmlidXRlZFRvSW5z
ZXJ0aW9uUG9pbnQpIHsKLSAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSk7
Ci0gICAgICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGVPZlNoYWRvd0hvc3QgPSBlbGVtZW50LT5w
YXJlbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCkpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRV
c2VyTW9kaWZ5KHN0eWxlT2ZTaGFkb3dIb3N0LT51c2VyTW9kaWZ5KCkpOworICAgICAgICBpZiAo
RWxlbWVudCogcGFyZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAg
ICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlT2ZTaGFkb3dIb3N0ID0gcGFyZW50LT5yZW5kZXJTdHls
ZSgpKQorICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFVzZXJNb2RpZnkoc3R5bGVPZlNoYWRv
d0hvc3QtPnVzZXJNb2RpZnkoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZWxlbWVu
dC0+aXNMaW5rKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci5jcHAKaW5kZXggZTg4MjMwZTY0YWE3MGEyYzQ3NDBmN2Y5MWMzMTg0N2UwYzM5NWZl
MS4uYWY4NzA1ZmZmODgyMmFjOWJlNTExNWYyNzgyNzNiOWUzZTUyYjJmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTc4LDYgKzc4
LDIxIEBAIHN0YXRpYyBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24o
Y29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKK3N0YXRp
YyBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSog
bm9kZSwgY29uc3QgTm9kZSogYmFzZU5vZGUpCit7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50ID0gMDsKKyAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gYmFzZU5vZGU7CisgICAg
d2hpbGUgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0
aW9uKGN1cnJlbnQpKSB7CisgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Cisg
ICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+aW5zZXJ0aW9u
UG9pbnRGb3Iobm9kZSkpIHsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAg
ICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7Cit9CisK
IGlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0
YWlsczo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9u
UG9pbnQpCiB7CiAgICAgaWYgKCFtX2luc2VydGlvblBvaW50KQpAQCAtMjgxLDggKzI5NiwxMCBA
QCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50KGNvbnN0IE5v
ZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNhbAogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIG5v
ZGUgaXMgYSBub24tZGlzdHJpYnV0ZWQgbGlnaHQgY2hpbGQgb3Igb2xkZXIgc2hhZG93J3MgY2hp
bGQuCi0gICAgICAgIGlmIChkZXRhaWxzKQorICAgICAgICBpZiAoZGV0YWlscykgeworICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmNoaWxkV2Fz
T3V0T2ZDb21wb3NpdGlvbigpXG4iKTsKICAgICAgICAgICAgIGRldGFpbHMtPmNoaWxkV2FzT3V0
T2ZDb21wb3NpdGlvbigpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cmF2ZXJzZVBh
cmVudEluQ3VycmVudFRyZWUobm9kZSwgZGV0YWlscyk7CiB9CkBAIC0zMTAsNyArMzI3LDI1IEBA
IE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRCYWNrVG9Zb3Vu
Z2VyU2hhZG93Um9vdE9ySG9zdChjb25zCiAgICAgaWYgKEluc2VydGlvblBvaW50KiBhc3NpZ25l
ZEluc2VydGlvblBvaW50ID0gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpKSB7CiAgICAgICAgIGlm
IChkZXRhaWxzKQogICAgICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VTaGFkb3dSb290KHNo
YWRvd1Jvb3QpOwotICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoYXNzaWduZWRJbnNlcnRp
b25Qb2ludCwgZGV0YWlscyk7CisgICAgICAgIE5vZGUqIHBhcmVudCA9IHRyYXZlcnNlUGFyZW50
SW5DdXJyZW50VHJlZShhc3NpZ25lZEluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKKyAgICAgICAg
Ly8gTm9kZSogcGFyZW50ID0gdHJhdmVyc2VQYXJlbnQoYXNzaWduZWRJbnNlcnRpb25Qb2ludCwg
ZGV0YWlscyk7CisKKyAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHBhcmVudC0+
aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvdygpIDogMCkgeworICAg
ICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgICAgIGlmIChJ
bnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG1fbm9k
ZSwgYXNzaWduZWRJbnNlcnRpb25Qb2ludCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGV0YWls
cykKKyAgICAgICAgICAgICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2lu
dChpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50
KGluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIG5vZGUgaXMgYSBub24tZGlzdHJpYnV0ZWQgbGlnaHQgY2hpbGQgb3Igb2xkZXIgc2hh
ZG93J3MgY2hpbGQuCisgICAgICAgICAgICBpZiAoZGV0YWlscykgeworICAgICAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpjaGlsZFdhc091dE9m
Q29tcG9zaXRpb24oKVxuIik7CisgICAgICAgICAgICAgICAgZGV0YWlscy0+Y2hpbGRXYXNPdXRP
ZkNvbXBvc2l0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gcGFyZW50OwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IGU4NDU2ZjcwNDBjNzIxYWRlZjRkMjQyMTY1MzhiYmI3MjRjZjUyNzAuLjA2ZDllYTJkMDQ1
ZTM0ZGY1NTJhM2IxOTExODUyZDgwNDA4ZTNmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTEwMDIsNiArMTAwMiw5IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSogaW5zZXJ0aW9uUG9pbnQpCiAKIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKIHsKKyAgICBpZiAo
dGl0bGUoKSA9PSAiZGVidWdzdG9wIikKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJkZWJ1Z3N0
b3BcbiIpOworCiAgICAgc3VzcGVuZFBvc3RBdHRhY2hDYWxsYmFja3MoKTsKICAgICBXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRh
dGVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggYWViNWI1YjQ3NWIy
MTliYzU3ZGM4NWVmMmU3YjgzMmFlZTg4OTNmYy4uZjc2ZDA0NzEwYTZhOWQ5MGE5MGQ2OGEyNzQ5
YjA1YjQ0YmFhZjViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtMTM2
LDEyICsxMzYsMTQgQEAgSW5zZXJ0aW9uUG9pbnQqIEVsZW1lbnRTaGFkb3c6Omluc2VydGlvblBv
aW50Rm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9k
ZS0+cGFyZW50Tm9kZSgpKTsKIAorI2lmIDAKICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpLT5p
c1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBv
aW50ID0gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSktPmFzc2lnbmVkVG8oKSkKICAg
ICAgICAgICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIAogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CisjZW5kaWYKIAogICAgIHJldHVybiBkaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2lu
dEZvcihub2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
RGlzdHJpYnV0b3IuY3BwCmluZGV4IDgzZGY1ZTBjMDUxZTUzN2Q4ZWZkZjM4NzMyZDkxNzYzOTc2
ZjM1ZTEuLjdmNGYwODFkOGE1OGQwODRmNWJkNjI5ZTE1NDMzODRmYWEwNzIwMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAt
MzYsNiArMzYsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgaW5saW5lIGJv
b2wgZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4oSFRNTFNoYWRvd0VsZW1lbnQqIHNoYWRvdykK
K3sKKyAgICBUcmVlU2NvcGUqIHNjb3BlID0gc2hhZG93LT50cmVlU2NvcGUoKTsKKyAgICBpZiAo
c2NvcGUtPnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gdG9TaGFk
b3dSb290KHNjb3BlLT5yb290Tm9kZSgpKS0+aXNPbGRlc3QoKTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogQ29udGVudERpc3RyaWJ1dG9yOjpDb250ZW50RGlzdHJpYnV0b3IoKQogICAgIDog
bV92YWxpZGl0eShVbmRldGVybWluZWQpCiB7CkBAIC01MCwyOSArNTksNDcgQEAgSW5zZXJ0aW9u
UG9pbnQqIENvbnRlbnREaXN0cmlidXRvcjo6ZmluZEluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5v
ZGUqIGtleSkgY29uc3QKICAgICByZXR1cm4gbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5nZXQoa2V5
KTsKIH0KIAotdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCogaG9z
dCkKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpwb3B1bGF0ZShOb2RlKiBub2RlLCBDb250ZW50
RGlzdHJpYnV0aW9uJiBwb29sKQogewotICAgIEFTU0VSVChuZWVkc0Rpc3RyaWJ1dGlvbigpKTsK
LSAgICBBU1NFUlQobV9ub2RlVG9JbnNlcnRpb25Qb2ludC5pc0VtcHR5KCkpOwotCi0gICAgbV92
YWxpZGl0eSA9IFZhbGlkOworICAgIGlmICghaXNJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAg
ICAgICBwb29sLmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIENv
bnRlbnREaXN0cmlidXRpb24gcG9vbDsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBob3N0LT5maXJz
dENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlm
ICghaXNIVE1MQ29udGVudEVsZW1lbnQobm9kZSkpIHsKLSAgICAgICAgICAgIHBvb2wuYXBwZW5k
KG5vZGUpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgaWYgKGlzSFRNTFNoYWRvd0VsZW1l
bnQobm9kZSkgJiYgIWRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKHRvSFRNTFNoYWRvd0VsZW1l
bnQobm9kZSkpKSB7CisgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBzaGFkb3cgPSB0b0hUTUxT
aGFkb3dFbGVtZW50KG5vZGUpOworICAgICAgICBTaGFkb3dSb290KiBvbGRlciA9IHNoYWRvdy0+
c2hhZG93Um9vdCgpLT5vbGRlclNoYWRvd1Jvb3QoKTsKKyAgICAgICAgaWYgKG9sZGVyLT5hc3Np
Z25lZFRvKCkgPT0gc2hhZG93KSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gb2xk
ZXItPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisg
ICAgICAgICAgICAgICAgcG9wdWxhdGUoY2hpbGQsIHBvb2wpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgZm9yIChOb2RlKiBmYWxsYmFja05vZGUgPSBzaGFkb3ctPmZpcnN0Q2hpbGQo
KTsgZmFsbGJhY2tOb2RlOyBmYWxsYmFja05vZGUgPSBmYWxsYmFja05vZGUtPm5leHRTaWJsaW5n
KCkpCisgICAgICAgICAgICAgICAgcG9vbC5hcHBlbmQoZmFsbGJhY2tOb2RlKTsKICAgICAgICAg
fQotCisgICAgfSBlbHNlIHsKICAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKICAgICAgICAgaWYgKGluc2VydGlvblBvaW50LT5o
YXNEaXN0cmlidXRpb24oKSkgewogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
bnNlcnRpb25Qb2ludC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgcG9vbC5hcHBlbmQo
aW5zZXJ0aW9uUG9pbnQtPmF0KGkpKTsKKyAgICAgICAgICAgICAgICBwb3B1bGF0ZShpbnNlcnRp
b25Qb2ludC0+YXQoaSksIHBvb2wpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9y
IChOb2RlKiBmYWxsYmFja05vZGUgPSBpbnNlcnRpb25Qb2ludC0+Zmlyc3RDaGlsZCgpOyBmYWxs
YmFja05vZGU7IGZhbGxiYWNrTm9kZSA9IGZhbGxiYWNrTm9kZS0+bmV4dFNpYmxpbmcoKSkKICAg
ICAgICAgICAgICAgICBwb29sLmFwcGVuZChmYWxsYmFja05vZGUpOwogICAgICAgICB9CiAgICAg
fQorfQorCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0
KQoreworICAgIGZwcmludGYoc3RkZXJyLCAiQ29udGVudERpc3RyaWJ1dGlvbjo6ZGlzdHJpYnV0
ZSgpXG4iKTsKKyAgICAKKyAgICBBU1NFUlQobmVlZHNEaXN0cmlidXRpb24oKSk7CisgICAgQVNT
RVJUKG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuaXNFbXB0eSgpKTsKKworICAgIG1fdmFsaWRpdHkg
PSBWYWxpZDsKKworICAgIENvbnRlbnREaXN0cmlidXRpb24gcG9vbDsKKyAgICBmb3IgKE5vZGUq
IG5vZGUgPSBob3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGlu
ZygpKQorICAgICAgICBwb3B1bGF0ZShub2RlLCBwb29sKTsKIAogICAgIFZlY3Rvcjxib29sPiBk
aXN0cmlidXRlZChwb29sLnNpemUoKSk7CiAgICAgZGlzdHJpYnV0ZWQuZmlsbChmYWxzZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCmluZGV4
IGJlZTkyYTU2YWMxNDBhZjY1NWYwNWU4MzljYmE2NjAzYzU0MmQyNmMuLjBkOGQwMDgyZTZlOTI0
MTBlNDNmNjA2MGNlMzZmMTZlNjhlMDQ2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCkBAIC03NCw2ICs3NCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb25JbihDb250ZW50RGlzdHJpYnV0aW9uKik7CiAK
IHByaXZhdGU6CisgICAgdm9pZCBwb3B1bGF0ZShOb2RlKiwgQ29udGVudERpc3RyaWJ1dGlvbiYp
OworCiAgICAgSGFzaE1hcDxjb25zdCBOb2RlKiwgSW5zZXJ0aW9uUG9pbnQqPiBtX25vZGVUb0lu
c2VydGlvblBvaW50OwogICAgIHVuc2lnbmVkIG1fdmFsaWRpdHkgOiAyOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170352</attachid>
            <date>2012-10-24 03:09:32 -0700</date>
            <delta_ts>2012-10-24 18:01:17 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-99228-20121024190807.patch</filename>
            <type>text/plain</type>
            <size>16379</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY4ZTEyMDg5Yzc0NjM2
NzQ2MDMwODIzNjQwNGUyNGUzNTMyNTE2MC4uNTM0OTRmZWI4NDVlMmJjNmJlMDc5NThmNTllNzFh
YjNmOTU3MDIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIHNoYWRvdyByb290LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KE9PUFMhKS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9y
Ojpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAg
ICAgICAoQ29udGVudERpc3RyaWJ1dG9yKToKKwogMjAxMi0xMC0yMyAgQW5kcmVhcyBLbGluZyAg
PGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2hyaW5rIGltbXV0YWJsZSBFbGVtZW50QXR0
cmlidXRlRGF0YSBhbmQgU3R5bGVQcm9wZXJ0eVNldCBieSBvbmUgcG9pbnRlciBlYWNoLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGFkOGRkY2IzY2QxODhkYTc3MGMzYzk2
NWJiNWY1NTIxOThiMDI5NWEuLjQ0OTkyOWNkOTdjNDIzZWIwMzRjZmZkMzAxY2Y2YWEzYjM4NmRm
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTk1Niw2ICs5NTYsOSBA
QCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjppbml0RWxlbWVudChFbGVtZW50KiBlKQogCiBp
bmxpbmUgYm9vbCBzaG91bGRSZXNldFN0eWxlSW5oZXJpdGFuY2UoTm9kZVJlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpCiB7CisgICAgaWYgKGNvbnRleHQubm9kZSgpLT5pc0VsZW1lbnROb2RlKCkg
JiYgdG9FbGVtZW50KGNvbnRleHQubm9kZSgpKS0+dGl0bGUoKSA9PSAiZGVidWdzdG9wIikKKyAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJzaG91bGRSZXNldFN0eWxlSW5oZXJpdGFuY2VcbiIpOwor
CiAgICAgaWYgKGNvbnRleHQucmVzZXRTdHlsZUluaGVyaXRhbmNlKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCkBAIC05NjMsNiArOTY2LDcgQEAgaW5saW5lIGJvb2wgc2hvdWxkUmVzZXRTdHls
ZUluaGVyaXRhbmNlKE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogICAgIGlmICghaW5z
ZXJ0aW9uUG9pbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIDEKICAgICBBU1NFUlQo
cGFyZW50RWxlbWVudEZvckRpc3RyaWJ1dGlvbihjb250ZXh0Lm5vZGUoKSkpOwogICAgIEVsZW1l
bnRTaGFkb3cqIHNoYWRvdyA9IHBhcmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24oY29udGV4dC5u
b2RlKCkpLT5zaGFkb3coKTsKICAgICBBU1NFUlQoc2hhZG93KTsKQEAgLTk3Myw2ICs5NzcsNyBA
QCBpbmxpbmUgYm9vbCBzaG91bGRSZXNldFN0eWxlSW5oZXJpdGFuY2UoTm9kZVJlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaW5zZXJ0aW9uUG9p
bnQgPSB5b3VuZ2VySW5zZXJ0aW9uUG9pbnQ7CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIGlu
c2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKIH0KIApAQCAtMTUzOSw5ICsx
NTQ0LDEwIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9y
RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTCiAgICAgLy8gY29udGVudGVkaXRhYmxl
IGF0dHJpYnV0ZSAoaW1wbGVtZW50ZWQgYnkgLXdlYmtpdC11c2VyLW1vZGlmeSkgc2hvdWxkCiAg
ICAgLy8gYmUgcHJvcGFnYXRlZCBmcm9tIHNoYWRvdyBob3N0IHRvIGRpc3RyaWJ1dGVkIG5vZGUu
CiAgICAgaWYgKG1fZGlzdHJpYnV0ZWRUb0luc2VydGlvblBvaW50KSB7Ci0gICAgICAgIEFTU0VS
VChlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpOwotICAgICAgICBpZiAoUmVuZGVyU3R5bGUqIHN0
eWxlT2ZTaGFkb3dIb3N0ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgp
KQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VXNlck1vZGlmeShzdHlsZU9mU2hhZG93SG9zdC0+
dXNlck1vZGlmeSgpKTsKKyAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IGVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBzdHlsZU9mU2hh
ZG93SG9zdCA9IHBhcmVudC0+cmVuZGVyU3R5bGUoKSkKKyAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRVc2VyTW9kaWZ5KHN0eWxlT2ZTaGFkb3dIb3N0LT51c2VyTW9kaWZ5KCkpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYgKGVsZW1lbnQtPmlzTGluaygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCmluZGV4IGU4ODIzMGU2NGFh
NzBhMmM0NzQwZjdmOTFjMzE4NDdlMGMzOTVmZTEuLjc5YjRhMzBjNWVlYWY1NmJhNTFkMWNmNGVm
NjZmNzA2NDZjNjY2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBv
aW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDYgKzYxLDExIEBAIHN0YXRpYyBp
bmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29uc3Qg
Tm9kZSogbm9kZSkKICAgICBpZiAoRWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudEZvckRp
c3RyaWJ1dGlvbihub2RlKSkKICAgICAgICAgcmV0dXJuIHBhcmVudC0+c2hhZG93KCk7CiAKKyNp
ZiAwCisgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBub2RlLT5wYXJlbnROb2RlKCktPmlzU2hh
ZG93Um9vdCgpID8gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSkgOiAwKQorICAgICAg
ICByZXR1cm4gcm9vdC0+b3duZXIoKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7ICAgIAogfQog
CkBAIC03OCw2ICs4NCwzNCBAQCBzdGF0aWMgaW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZl
UmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50
OwogfQogCitzdGF0aWMgaW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9u
KGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0IE5vZGUqIGJhc2VOb2RlKQoreworICAgIEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSogY3VycmVudCA9IGJh
c2VOb2RlOworICAgIHdoaWxlIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVu
dEZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgeworICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3Ry
aWJ1dGlvbigpOworICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFk
b3ctPmluc2VydGlvblBvaW50Rm9yKG5vZGUpKSB7CisgICAgICAgICAgICBjdXJyZW50ID0gaW5z
ZXJ0ZWRUbzsKKyAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGluc2VydGlv
blBvaW50OworfQorCitzdGF0aWMgaW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50KiByZXNvbHZl
TXVsdGlwbGVTaGFkb3dSZXByb2plY3Rpb24oY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
U2hhZG93Um9vdCogcm9vdCA9IG5vZGUtPnBhcmVudE5vZGUoKSAmJiBub2RlLT5wYXJlbnROb2Rl
KCktPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSkgOiAw
KSB7CisgICAgICAgIGlmIChyb290LT5hc3NpZ25lZFRvKCkpCisgICAgICAgICAgICByZXR1cm4g
cmVzb2x2ZU11bHRpcGxlU2hhZG93UmVwcm9qZWN0aW9uKHJvb3QtPmFzc2lnbmVkVG8oKSk7Cisg
ICAgfQorCisgICAgaWYgKGlzSFRNTFNoYWRvd0VsZW1lbnQobm9kZSkpCisgICAgICAgIHJldHVy
biB0b0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpOworCisgICAgcmV0dXJuIDA7Cit9CisKIGlubGlu
ZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWlsczo6
ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQp
CiB7CiAgICAgaWYgKCFtX2luc2VydGlvblBvaW50KQpAQCAtMjgxLDkgKzMxNSwxNiBAQCBOb2Rl
KiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqIG5v
ZGUsIFBhcmVudFRyYXZlcnNhbAogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIG5vZGUgaXMg
YSBub24tZGlzdHJpYnV0ZWQgbGlnaHQgY2hpbGQgb3Igb2xkZXIgc2hhZG93J3MgY2hpbGQuCi0g
ICAgICAgIGlmIChkZXRhaWxzKQorICAgICAgICBpZiAoZGV0YWlscykgeworICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmNoaWxkV2FzT3V0T2ZD
b21wb3NpdGlvbigpIDFcbiIpOwogICAgICAgICAgICAgZGV0YWlscy0+Y2hpbGRXYXNPdXRPZkNv
bXBvc2l0aW9uKCk7CisgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBJbiBjYXNlIHNoYWRvdyBy
ZXByb2plY3Rpb24KKyAgICBpZiAoY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
ID0gcmVzb2x2ZU11bHRpcGxlU2hhZG93UmVwcm9qZWN0aW9uKG5vZGUpKQorICAgICAgICByZXR1
cm4gdHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRUcmVlKGluc2VydGlvblBvaW50LCBkZXRhaWxzKTsK
KwogICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUobm9kZSwgZGV0YWlscyk7
CiB9CiAKQEAgLTMxMCw3ICszNTEsMjUgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
Ojp0cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNvbnMKICAgICBp
ZiAoSW5zZXJ0aW9uUG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5h
c3NpZ25lZFRvKCkpIHsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAgICBkZXRhaWxz
LT5kaWRUcmF2ZXJzZVNoYWRvd1Jvb3Qoc2hhZG93Um9vdCk7Ci0gICAgICAgIHJldHVybiB0cmF2
ZXJzZVBhcmVudChhc3NpZ25lZEluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKKyAgICAgICAgTm9k
ZSogcGFyZW50ID0gdHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRUcmVlKGFzc2lnbmVkSW5zZXJ0aW9u
UG9pbnQsIGRldGFpbHMpOworICAgICAgICAvLyBOb2RlKiBwYXJlbnQgPSB0cmF2ZXJzZVBhcmVu
dChhc3NpZ25lZEluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKKworICAgICAgICBpZiAoRWxlbWVu
dFNoYWRvdyogc2hhZG93ID0gcGFyZW50LT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQocGFy
ZW50KS0+c2hhZG93KCkgOiAwKSB7CisgICAgICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1
dGlvbigpOworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9
IHJlc29sdmVSZXByb2plY3Rpb24obV9ub2RlLCBhc3NpZ25lZEluc2VydGlvblBvaW50KSkgewor
ICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzKQorICAgICAgICAgICAgICAgICAgICBkZXRhaWxz
LT5kaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KGluc2VydGlvblBvaW50KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoaW5zZXJ0aW9uUG9pbnQsIGRldGFpbHMpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgbm9kZSBpcyBhIG5vbi1kaXN0cmlidXRl
ZCBsaWdodCBjaGlsZCBvciBvbGRlciBzaGFkb3cncyBjaGlsZC4KKyAgICAgICAgICAgIGlmIChk
ZXRhaWxzKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OmNoaWxkV2FzT3V0T2ZDb21wb3NpdGlvbigpIDNcbiIpOworICAgICAgICAg
ICAgICAgIGRldGFpbHMtPmNoaWxkV2FzT3V0T2ZDb21wb3NpdGlvbigpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKICAgICB9CiAKICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlODQ1NmY3MDQwYzcyMWFkZWY0ZDI0MjE2
NTM4YmJiNzI0Y2Y1MjcwLi4wNmQ5ZWEyZDA0NWUzNGRmNTUyYTNiMTkxMTg1MmQ4MDQwOGUzZjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMDAyLDYgKzEwMDIsOSBAQCB2b2lkIEVsZW1l
bnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogCiB2b2lkIEVs
ZW1lbnQ6OmF0dGFjaCgpCiB7CisgICAgaWYgKHRpdGxlKCkgPT0gImRlYnVnc3RvcCIpCisgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiZGVidWdzdG9wXG4iKTsKKwogICAgIHN1c3BlbmRQb3N0QXR0
YWNoQ2FsbGJhY2tzKCk7CiAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29w
ZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRT
aGFkb3cuY3BwCmluZGV4IGFlYjViNWI0NzViMjE5YmM1N2RjODVlZjJlN2I4MzJhZWU4ODkzZmMu
LmY3NmQwNDcxMGE2YTlkOTBhOTBkNjhhMjc0OWIwNWI0NGJhYWY1YjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFNoYWRvdy5jcHAKQEAgLTEzNiwxMiArMTM2LDE0IEBAIEluc2VydGlvblBvaW50
KiBFbGVtZW50U2hhZG93OjppbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBub2RlKSBjb25z
dAogewogICAgIEFTU0VSVChub2RlICYmIG5vZGUtPnBhcmVudE5vZGUoKSk7CiAKKyNpZiAwCiAg
ICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYg
KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHRvU2hhZG93Um9vdChub2RlLT5wYXJl
bnROb2RlKCkpLT5hc3NpZ25lZFRvKCkpCiAgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9uUG9p
bnQ7CiAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gZGlz
dHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAppbmRleCA4M2RmNWUw
YzA1MWU1MzdkOGVmZGYzODczMmQ5MTc2Mzk3NmYzNWUxLi43ZjRmMDgxZDhhNThkMDg0ZjViZDYy
OWUxNTQzMzg0ZmFhMDcyMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTM2LDYgKzM2LDE1IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RhdGljIGlubGluZSBib29sIGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVu
KEhUTUxTaGFkb3dFbGVtZW50KiBzaGFkb3cpCit7CisgICAgVHJlZVNjb3BlKiBzY29wZSA9IHNo
YWRvdy0+dHJlZVNjb3BlKCk7CisgICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jv
b3QoKSkKKyAgICAgICAgcmV0dXJuIHRvU2hhZG93Um9vdChzY29wZS0+cm9vdE5vZGUoKSktPmlz
T2xkZXN0KCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIENvbnRlbnREaXN0cmlidXRvcjo6
Q29udGVudERpc3RyaWJ1dG9yKCkKICAgICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1pbmVkKQogewpA
QCAtNTAsMjkgKzU5LDQ3IEBAIEluc2VydGlvblBvaW50KiBDb250ZW50RGlzdHJpYnV0b3I6OmZp
bmRJbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0CiAgICAgcmV0dXJuIG1f
bm9kZVRvSW5zZXJ0aW9uUG9pbnQuZ2V0KGtleSk7CiB9CiAKLXZvaWQgQ29udGVudERpc3RyaWJ1
dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6
cG9wdWxhdGUoTm9kZSogbm9kZSwgQ29udGVudERpc3RyaWJ1dGlvbiYgcG9vbCkKIHsKLSAgICBB
U1NFUlQobmVlZHNEaXN0cmlidXRpb24oKSk7Ci0gICAgQVNTRVJUKG1fbm9kZVRvSW5zZXJ0aW9u
UG9pbnQuaXNFbXB0eSgpKTsKLQotICAgIG1fdmFsaWRpdHkgPSBWYWxpZDsKKyAgICBpZiAoIWlz
SW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgcG9vbC5hcHBlbmQobm9kZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBDb250ZW50RGlzdHJpYnV0aW9uIHBvb2w7Ci0gICAg
Zm9yIChOb2RlKiBub2RlID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+
bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoIWlzSFRNTENvbnRlbnRFbGVtZW50KG5vZGUp
KSB7Ci0gICAgICAgICAgICBwb29sLmFwcGVuZChub2RlKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OworICAgIGlmIChpc0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpICYmICFkb2VzU2VsZWN0RnJvbUhv
c3RDaGlsZHJlbih0b0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpKSkgeworICAgICAgICBIVE1MU2hh
ZG93RWxlbWVudCogc2hhZG93ID0gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKKyAgICAgICAg
U2hhZG93Um9vdCogb2xkZXIgPSBzaGFkb3ctPnNoYWRvd1Jvb3QoKS0+b2xkZXJTaGFkb3dSb290
KCk7CisgICAgICAgIGlmIChvbGRlci0+YXNzaWduZWRUbygpID09IHNoYWRvdykgeworICAgICAg
ICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG9sZGVyLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIHBvcHVsYXRlKGNoaWxk
LCBwb29sKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoTm9kZSogZmFsbGJh
Y2tOb2RlID0gc2hhZG93LT5maXJzdENoaWxkKCk7IGZhbGxiYWNrTm9kZTsgZmFsbGJhY2tOb2Rl
ID0gZmFsbGJhY2tOb2RlLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIHBvb2wuYXBw
ZW5kKGZhbGxiYWNrTm9kZSk7CiAgICAgICAgIH0KLQorICAgIH0gZWxzZSB7CiAgICAgICAgIElu
c2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSk7CiAg
ICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnQtPnNpemUoKTsgKytpKQot
ICAgICAgICAgICAgICAgIHBvb2wuYXBwZW5kKGluc2VydGlvblBvaW50LT5hdChpKSk7CisgICAg
ICAgICAgICAgICAgcG9wdWxhdGUoaW5zZXJ0aW9uUG9pbnQtPmF0KGkpLCBwb29sKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAoTm9kZSogZmFsbGJhY2tOb2RlID0gaW5zZXJ0
aW9uUG9pbnQtPmZpcnN0Q2hpbGQoKTsgZmFsbGJhY2tOb2RlOyBmYWxsYmFja05vZGUgPSBmYWxs
YmFja05vZGUtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgICAgICAgICAgcG9vbC5hcHBlbmQoZmFs
bGJhY2tOb2RlKTsKICAgICAgICAgfQogICAgIH0KK30KKwordm9pZCBDb250ZW50RGlzdHJpYnV0
b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkNv
bnRlbnREaXN0cmlidXRpb246OmRpc3RyaWJ1dGUoKVxuIik7CisgICAgCisgICAgQVNTRVJUKG5l
ZWRzRGlzdHJpYnV0aW9uKCkpOworICAgIEFTU0VSVChtX25vZGVUb0luc2VydGlvblBvaW50Lmlz
RW1wdHkoKSk7CisKKyAgICBtX3ZhbGlkaXR5ID0gVmFsaWQ7CisKKyAgICBDb250ZW50RGlzdHJp
YnV0aW9uIHBvb2w7CisgICAgZm9yIChOb2RlKiBub2RlID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBu
b2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgcG9wdWxhdGUobm9kZSwg
cG9vbCk7CiAKICAgICBWZWN0b3I8Ym9vbD4gZGlzdHJpYnV0ZWQocG9vbC5zaXplKCkpOwogICAg
IGRpc3RyaWJ1dGVkLmZpbGwoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuaAppbmRleCBiZWU5MmE1NmFjMTQwYWY2NTVmMDVlODM5Y2Jh
NjYwM2M1NDJkMjZjLi4wZDhkMDA4MmU2ZTkyNDEwZTQzZjYwNjBjZTM2ZjE2ZTY4ZTA0NmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApA
QCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9u
SW4oQ29udGVudERpc3RyaWJ1dGlvbiopOwogCiBwcml2YXRlOgorICAgIHZvaWQgcG9wdWxhdGUo
Tm9kZSosIENvbnRlbnREaXN0cmlidXRpb24mKTsKKwogICAgIEhhc2hNYXA8Y29uc3QgTm9kZSos
IEluc2VydGlvblBvaW50Kj4gbV9ub2RlVG9JbnNlcnRpb25Qb2ludDsKICAgICB1bnNpZ25lZCBt
X3ZhbGlkaXR5IDogMjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuaAppbmRleCAzNmJkZDg5NWFjMmRlZmIzYTQwN2Y0MDFkZDg5MjNlNWE3ZDlm
OTA0Li5iYWMyYjkyYjU3OTYxYjIzZGZjYzJlMzJlMWY1NWIyZDU3ZTMyNjQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKQEAgLTY3LDYgKzY3
LDEyIEBAIGlubGluZSBIVE1MU2hhZG93RWxlbWVudCogdG9IVE1MU2hhZG93RWxlbWVudChOb2Rl
KiBub2RlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2hhZG93RWxlbWVudCo+KG5vZGUp
OwogfQogCitpbmxpbmUgY29uc3QgSFRNTFNoYWRvd0VsZW1lbnQqIHRvSFRNTFNoYWRvd0VsZW1l
bnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgaXNIVE1MU2hhZG93
RWxlbWVudChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxTaGFkb3dF
bGVtZW50Kj4obm9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEhUTUxTaGFkb3dFbGVtZW50X2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tY29tcGxleC5odG1sCmluZGV4IGJlMjEw
OTkzNGViODI0NWNlYTBlMWQwZTY1NTljZjc0NDA4MWM1MjguLjViZTAzMjA5MTliMWEyYjIyYzAw
NjMyNThhN2E3NWQ1NGZiYmYxZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWNvbXBsZXguaHRtbApAQCAtMTQs
MTAgKzE0LDEwIEBACiAKIDxzY3JpcHQ+CiB2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChob3N0MSk7Ci1zaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIi
Pjxjb250ZW50IHNlbGVjdD0iLkEiPjwvY29udGVudD48c2hhZG93Pjwvc2hhZG93PjxkaXYgY2xh
c3M9Ii5BIj5BPC9kaXY+PC9kaXY+JzsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlk
PSJob3N0MiI+PGNvbnRlbnQgc2VsZWN0PSIuQSI+PC9jb250ZW50PjxzaGFkb3c+PC9zaGFkb3c+
PGRpdiBjbGFzcz0iQSI+QTwvZGl2PjwvZGl2Pic7CiAKIHZhciBzaGFkb3dSb290MiA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHNoYWRvd1Jvb3QxLmdldEVsZW1lbnRCeUlkKCdob3N0MicpKTsKLXNo
YWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2PjxoMj5BPC9oMj48Y29udGVudCBzZWxlY3Q9ImRp
diI+PC9jb250ZW50PjxoMj5CPC9oMj48c2hhZG93Pjwvc2hhZG93PjwvZGl2PicKK3NoYWRvd1Jv
b3QyLmlubmVySFRNTCA9ICc8ZGl2PjxoMj5BPC9oMj48Y29udGVudCBzZWxlY3Q9Ii5BIj48L2Nv
bnRlbnQ+PGgyPkI8L2gyPjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JwogPC9zY3JpcHQ+CiAKIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJl
cHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKaW5kZXgg
OTBkZDU2YTc1ODRkNjUzODI3ZTQ1OTQyMDVlMjJhMmZmNTNjZTcwNS4uNDhjNTJiMjBjZjA1ZTRj
YzEwOGQyY2EzZTNiNWE1ZTg4MDNjZTI1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxi
YWNrLWV4cGVjdGVkLmh0bWwKQEAgLTgsNiArOCw3IEBACiA8ZGl2IGlkPSJob3N0MSI+CiAgICAg
PGRpdiBpZD0iaG9zdDIiPgogICAgICAgICA8ZGl2PmNvbnRlbnQgZmFsbGJhY2sgZWxlbWVudDwv
ZGl2PgorICAgICAgICA8ZGl2PnNoYWRvdyBmYWxsYmFjayBlbGVtZW50PC9kaXY+CiAgICAgICAg
IDxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+CiAgICAgPC9kaXY+CiA8L2Rpdj4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVj
dGlvbi1mYWxsYmFjay1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2plY3Rpb24t
ZXhwZWN0ZWQuaHRtbAppbmRleCAxNjYxZjUwYThlMGMyNTUyNDNkMmI5YjAwN2I2Y2Y0YThjYmQy
YjNmLi4yMzg4MDA3ZmFhM2UzZmYxMWFhYWJjMjE2ZjI1OTEyMTE0NmIzYTg2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tZmFsbGJh
Y2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLXJlcHJvamVjdGlvbi1leHBlY3Rl
ZC5odG1sCkBAIC05LDYgKzksNyBAQAogICAgIDxkaXYgaWQ9Imhvc3QyIj4KICAgICAgICAgPGRp
diBpZD0iaG9zdDMiPgogICAgICAgICAgICAgPGRpdj5jb250ZW50IGZhbGxiYWNrIGVsZW1lbnQ8
L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+c2hhZG93IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KICAg
ICAgICAgICAgIDxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+CiAgICAgICAgICAg
ICA8ZGl2PmNvbnRlbnQgZmFsbGJhY2sgZWxlbWVudDwvZGl2PgogICAgICAgICAgICAgPGRpdj5U
aGlzIGFsc28gc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24t
cHJvaGliaXRlZC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
Yzg4ZDk5ZGI0ZTE0MWEwZWFiNDk3NGQ5MDgwMjNmODZkNzczMDg4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0KLTxwPlRoaXMg
dGVzdCBlbnN1cmVzIHRoYXQgZWxlbWVudHMgYXNzaWduZWQgdG8gYSBzaGFkb3cgZWxlbWVudCBh
cmUgbm90IGRpc3RyaWJ1dGVkLjwvcD4KLQotPGRpdiBpZD0iaG9zdDEiPgotICAgIDxkaXYgaWQ9
Imhvc3QyIj48ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PjwvZGl2PgotPC9kaXY+
Ci0KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYzQwMjcxYTRhYzVjNTE2OGEzMTkwYjQ0YTljMDEzYTYzNDhlNDNlZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotCi08
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KLQotPHA+VGhpcyB0
ZXN0IGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhc3NpZ25lZCB0byBhIHNoYWRvdyBlbGVtZW50IGFy
ZSBub3QgZGlzdHJpYnV0ZWQuPC9wPgotCi08ZGl2IGlkPSJob3N0MSI+Ci0gICAgPGRpdj5UaGVz
ZSBlbGVtZW50czwvZGl2PgotICAgIDxkaXY+c2hvdWxkIG5vdCBiZTwvZGl2PgotICAgIDxkaXY+
cmVwcm9qZWN0ZWQ8L2Rpdj4KLTwvZGl2PgotCi08c2NyaXB0PgotdmFyIHNoYWRvd1Jvb3QxID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwotc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxk
aXYgaWQ9Imhvc3QyIj48c2hhZG93Pjwvc2hhZG93PjwvZGl2Pic7Ci0KLXZhciBzaGFkb3dSb290
MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHNoYWRvd1Jvb3QxLmdldEVsZW1lbnRCeUlkKCdob3N0
MicpKTsKLXNoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2Pjxjb250ZW50IHNlbGVjdD0iZGl2
Ij48L2NvbnRlbnQ+PGRpdj5UaGlzIHNob3VsZCBiZSBzZWxlY3RlZC48L2Rpdj48L2Rpdj4nCi08
L3NjcmlwdD4KLQotPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170527</attachid>
            <date>2012-10-24 18:01:22 -0700</date>
            <delta_ts>2012-10-24 23:55:42 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-99228-20121025095956.patch</filename>
            <type>text/plain</type>
            <size>19980</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFkZDk2Yzg5YzkxNzY2
NmM4Y2FhYzU1Y2UzZTcwZmI3MDUyNjZmNC4uODQ0OTA4MmMzNWY4ZTIyZDg3ZDIyMGRjMDJmNTJj
Mzk5MWU5OTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIHNoYWRvdyByb290LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KE9PUFMhKS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9y
Ojpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAg
ICAgICAoQ29udGVudERpc3RyaWJ1dG9yKToKKwogMjAxMi0xMC0yNCAgTWF4IFZ1am92aWMgIDxt
dnVqb3ZpY0BhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFkZXJzXSBUaGUgbWVzaCBzaG91
bGQgYmUgc3BlY2lmaWVkIHVzaW5nIDxjb2x1bW4sIHJvdz4gb3JkZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAppbmRleCAzYjgwZjFhNWFjZDI3NTgwYmMxYTk0OTVjYzVmNjc4ZTk0
OTNkMDM3Li4wODMyNzhjYzVhM2VhNDk2MTk3YzM5YmViZTAzZTdiYjZhOTFlNmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC05NzMsNiArOTczLDcgQEAgaW5saW5lIGJv
b2wgc2hvdWxkUmVzZXRTdHlsZUluaGVyaXRhbmNlKE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250
ZXh0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGluc2VydGlvblBvaW50ID0geW91bmdl
ckluc2VydGlvblBvaW50OwogICAgIH0KKwogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludC0+cmVz
ZXRTdHlsZUluaGVyaXRhbmNlKCk7CiB9CiAKQEAgLTE1MzksOSArMTU0MCwxMCBAQCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCwgUmVuZGVyUwogICAgIC8vIGNvbnRlbnRlZGl0YWJsZSBhdHRyaWJ1dGUgKGltcGxl
bWVudGVkIGJ5IC13ZWJraXQtdXNlci1tb2RpZnkpIHNob3VsZAogICAgIC8vIGJlIHByb3BhZ2F0
ZWQgZnJvbSBzaGFkb3cgaG9zdCB0byBkaXN0cmlidXRlZCBub2RlLgogICAgIGlmIChtX2Rpc3Ry
aWJ1dGVkVG9JbnNlcnRpb25Qb2ludCkgewotICAgICAgICBBU1NFUlQoZWxlbWVudC0+cGFyZW50
RWxlbWVudCgpKTsKLSAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBzdHlsZU9mU2hhZG93SG9zdCA9
IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldFVzZXJNb2RpZnkoc3R5bGVPZlNoYWRvd0hvc3QtPnVzZXJNb2RpZnkoKSk7Cisg
ICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsK
KyAgICAgICAgICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGVPZlNoYWRvd0hvc3QgPSBwYXJlbnQt
PnJlbmRlclN0eWxlKCkpCisgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VXNlck1vZGlmeShz
dHlsZU9mU2hhZG93SG9zdC0+dXNlck1vZGlmeSgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChlbGVtZW50LT5pc0xpbmsoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBlODgyMzBlNjRhYTcwYTJjNDc0MGY3ZjkxYzMx
ODQ3ZTBjMzk1ZmUxLi4yZDRhYjVjNDAyZTE4YWE5YTIyMTBlZTY2ZDk1ZjAzNzBjY2YzNzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TFNoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC02MywxMyArNjQsMTMgQEAgc3RhdGljIGlubGluZSBFbGVtZW50U2hh
ZG93KiBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogICAg
IHJldHVybiAwOyAgICAKIH0KIAotc3RhdGljIGlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2
ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBub2RlKQorc3RhdGljIGlubGluZSBJbnNlcnRpb25Q
b2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlLCBjb25z
dCBOb2RlKiBiYXNlTm9kZSkKIHsKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQg
PSAwOwotICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBub2RlOworICAgIGNvbnN0IE5vZGUqIGN1
cnJlbnQgPSBiYXNlTm9kZTsKICAgICB3aGlsZSAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKICAgICAgICAgc2hhZG93LT5l
bnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRl
ZFRvID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihub2RlKSkgeworICAgICAgICBpZiAoSW5z
ZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmluc2VydGlvblBvaW50Rm9yKHByb2pl
Y3RlZE5vZGUpKSB7CiAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKICAgICAgICAg
ICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKICAgICAgICAgfSBlbHNlCkBAIC03OCw2
ICs3OSwxOSBAQCBzdGF0aWMgaW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0
aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCitz
dGF0aWMgaW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50KiByZXNvbHZlU2hhZG93UHJvamVjdGlv
bihjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChTaGFkb3dSb290KiByb290ID0gbm9kZS0+
cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkgPyB0b1No
YWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKSA6IDApIHsKKyAgICAgICAgaWYgKHJvb3QtPmFz
c2lnbmVkVG8oKSkKKyAgICAgICAgICAgIHJldHVybiByZXNvbHZlU2hhZG93UHJvamVjdGlvbihy
b290LT5hc3NpZ25lZFRvKCkpOworICAgIH0KKworICAgIGlmIChpc0hUTUxTaGFkb3dFbGVtZW50
KG5vZGUpKQorICAgICAgICByZXR1cm4gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKKworICAg
IHJldHVybiAwOworfQorCiBpbmxpbmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBh
cmVudFRyYXZlcnNhbERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9u
UG9pbnQqIGluc2VydGlvblBvaW50KQogewogICAgIGlmICghbV9pbnNlcnRpb25Qb2ludCkKQEAg
LTIwNiw3ICsyMjAsNyBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNl
U2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZQogICAgIEVsZW1lbnRTaGFk
b3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUpOwogICAgIGlmICghc2hhZG93KQogICAg
ICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24p
OwotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rp
b24obm9kZSk7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVzb2x2ZVJl
cHJvamVjdGlvbihub2RlLCBub2RlKTsKICAgICBpZiAoIWluc2VydGlvblBvaW50KQogICAgICAg
ICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwog
CkBAIC0yNzQsNyArMjg4LDcgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJzYWwKICAgICB9CiAgICAg
aWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9u
KG5vZGUpKSB7CiAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Ci0gICAgICAg
IGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSByZXNvbHZlUmVwcm9qZWN0aW9u
KG5vZGUpKSB7CisgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBy
ZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUsIG5vZGUpKSB7CiAgICAgICAgICAgICBpZiAoZGV0YWls
cykKICAgICAgICAgICAgICAgICBkZXRhaWxzLT5kaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KGlu
c2VydGlvblBvaW50KTsKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChpbnNlcnRp
b25Qb2ludCwgZGV0YWlscyk7CkBAIC0yODQsNiArMjk4LDEwIEBAIE5vZGUqIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50VHJh
dmVyc2FsCiAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgZGV0YWlscy0+Y2hpbGRX
YXNPdXRPZkNvbXBvc2l0aW9uKCk7CiAgICAgfQorCisgICAgaWYgKGNvbnN0IEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVTaGFkb3dQcm9qZWN0aW9uKG5vZGUpKQorICAg
ICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRUcmVlKGluc2VydGlvblBvaW50LCBk
ZXRhaWxzKTsKKwogICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUobm9kZSwg
ZGV0YWlscyk7CiB9CiAKQEAgLTMxMCw3ICszMjgsMjIgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNv
bnMKICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFk
b3dSb290LT5hc3NpZ25lZFRvKCkpIHsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAg
ICBkZXRhaWxzLT5kaWRUcmF2ZXJzZVNoYWRvd1Jvb3Qoc2hhZG93Um9vdCk7Ci0gICAgICAgIHJl
dHVybiB0cmF2ZXJzZVBhcmVudChhc3NpZ25lZEluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKKyAg
ICAgICAgTm9kZSogcGFyZW50ID0gdHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRUcmVlKGFzc2lnbmVk
SW5zZXJ0aW9uUG9pbnQsIGRldGFpbHMpOworCisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBz
aGFkb3cgPSBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChwYXJlbnQpLT5zaGFk
b3coKSA6IDApIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Cisg
ICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVzb2x2ZVJl
cHJvamVjdGlvbihtX25vZGUsIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICAgICAgICAgIGRldGFpbHMtPmRpZFRyYXZl
cnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIHJldHVy
biB0cmF2ZXJzZVBhcmVudChpbnNlcnRpb25Qb2ludCwgZGV0YWlscyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBub2RlIGlzIGEgbm9uLWRpc3RyaWJ1dGVkIGxpZ2h0IGNo
aWxkIG9yIG9sZGVyIHNoYWRvdydzIGNoaWxkLgorICAgICAgICAgICAgaWYgKGRldGFpbHMpCisg
ICAgICAgICAgICAgICAgZGV0YWlscy0+Y2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKCk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gcGFyZW50OwogICAgIH0KIAogICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmluZGV4IGFlYjViNWI0NzViMjE5YmM1N2Rj
ODVlZjJlN2I4MzJhZWU4ODkzZmMuLjA3YzMwYTg3NWNiMTM3MDY5NmUyZTc1ODdlYjA5N2Y1ZGE4
OGJhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKQEAgLTEzNiwxMyArMTM2
LDYgQEAgSW5zZXJ0aW9uUG9pbnQqIEVsZW1lbnRTaGFkb3c6Omluc2VydGlvblBvaW50Rm9yKGNv
bnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cGFyZW50
Tm9kZSgpKTsKIAotICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKSB7
Ci0gICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0b1NoYWRvd1Jv
b3Qobm9kZS0+cGFyZW50Tm9kZSgpKS0+YXNzaWduZWRUbygpKQotICAgICAgICAgICAgcmV0dXJu
IGluc2VydGlvblBvaW50OwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQogICAgIHJldHVy
biBkaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihub2RlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXgg
ODNkZjVlMGMwNTFlNTM3ZDhlZmRmMzg3MzJkOTE3NjM5NzZmMzVlMS4uMTRjYzYyOTllZDAzODli
NDk3ZmQ5MDcxNDRkZjZlZjE5NjBjZjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0zNiw2ICszNiwxNSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBkb2VzU2VsZWN0RnJvbUhvc3RD
aGlsZHJlbihIVE1MU2hhZG93RWxlbWVudCogc2hhZG93KQoreworICAgIFRyZWVTY29wZSogc2Nv
cGUgPSBzaGFkb3ctPnRyZWVTY29wZSgpOworICAgIGlmIChzY29wZS0+cm9vdE5vZGUoKS0+aXNT
aGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qoc2NvcGUtPnJvb3ROb2Rl
KCkpLT5pc09sZGVzdCgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBDb250ZW50RGlzdHJp
YnV0b3I6OkNvbnRlbnREaXN0cmlidXRvcigpCiAgICAgOiBtX3ZhbGlkaXR5KFVuZGV0ZXJtaW5l
ZCkKIHsKQEAgLTUwLDI5ICs1OSw0NSBAQCBJbnNlcnRpb25Qb2ludCogQ29udGVudERpc3RyaWJ1
dG9yOjpmaW5kSW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAogICAgIHJl
dHVybiBtX25vZGVUb0luc2VydGlvblBvaW50LmdldChrZXkpOwogfQogCi12b2lkIENvbnRlbnRE
aXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQordm9pZCBDb250ZW50RGlzdHJp
YnV0b3I6OnBvcHVsYXRlKE5vZGUqIG5vZGUsIENvbnRlbnREaXN0cmlidXRpb24mIHBvb2wpCiB7
Ci0gICAgQVNTRVJUKG5lZWRzRGlzdHJpYnV0aW9uKCkpOwotICAgIEFTU0VSVChtX25vZGVUb0lu
c2VydGlvblBvaW50LmlzRW1wdHkoKSk7Ci0KLSAgICBtX3ZhbGlkaXR5ID0gVmFsaWQ7CisgICAg
aWYgKCFpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgIHBvb2wuYXBwZW5kKG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgQ29udGVudERpc3RyaWJ1dGlvbiBwb29s
OwotICAgIGZvciAoTm9kZSogbm9kZSA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9
IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFpc0hUTUxDb250ZW50RWxlbWVu
dChub2RlKSkgewotICAgICAgICAgICAgcG9vbC5hcHBlbmQobm9kZSk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKKyAgICBpZiAoaXNIVE1MU2hhZG93RWxlbWVudChub2RlKSAmJiAhZG9lc1NlbGVj
dEZyb21Ib3N0Q2hpbGRyZW4odG9IVE1MU2hhZG93RWxlbWVudChub2RlKSkpIHsKKyAgICAgICAg
SFRNTFNoYWRvd0VsZW1lbnQqIHNoYWRvdyA9IHRvSFRNTFNoYWRvd0VsZW1lbnQobm9kZSk7Cisg
ICAgICAgIFNoYWRvd1Jvb3QqIG9sZGVyID0gc2hhZG93LT5zaGFkb3dSb290KCktPm9sZGVyU2hh
ZG93Um9vdCgpOworICAgICAgICBpZiAob2xkZXItPmFzc2lnbmVkVG8oKSA9PSBzaGFkb3cpIHsK
KyAgICAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBvbGRlci0+Zmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBwb3B1bGF0
ZShjaGlsZCwgcG9vbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKE5vZGUq
IGZhbGxiYWNrTm9kZSA9IHNoYWRvdy0+Zmlyc3RDaGlsZCgpOyBmYWxsYmFja05vZGU7IGZhbGxi
YWNrTm9kZSA9IGZhbGxiYWNrTm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBw
b29sLmFwcGVuZChmYWxsYmFja05vZGUpOwogICAgICAgICB9Ci0KKyAgICB9IGVsc2UgewogICAg
ICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0b0luc2VydGlvblBvaW50KG5v
ZGUpOwogICAgICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7CiAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50LT5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgICAgICBwb29sLmFwcGVuZChpbnNlcnRpb25Qb2ludC0+YXQoaSkp
OworICAgICAgICAgICAgICAgIHBvcHVsYXRlKGluc2VydGlvblBvaW50LT5hdChpKSwgcG9vbCk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9
IGluc2VydGlvblBvaW50LT5maXJzdENoaWxkKCk7IGZhbGxiYWNrTm9kZTsgZmFsbGJhY2tOb2Rl
ID0gZmFsbGJhY2tOb2RlLT5uZXh0U2libGluZygpKQogICAgICAgICAgICAgICAgIHBvb2wuYXBw
ZW5kKGZhbGxiYWNrTm9kZSk7CiAgICAgICAgIH0KICAgICB9Cit9CisKK3ZvaWQgQ29udGVudERp
c3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCit7CisgICAgQVNTRVJUKG5lZWRz
RGlzdHJpYnV0aW9uKCkpOworICAgIEFTU0VSVChtX25vZGVUb0luc2VydGlvblBvaW50LmlzRW1w
dHkoKSk7CisKKyAgICBtX3ZhbGlkaXR5ID0gVmFsaWQ7CisKKyAgICBDb250ZW50RGlzdHJpYnV0
aW9uIHBvb2w7CisgICAgZm9yIChOb2RlKiBub2RlID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBub2Rl
OyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgcG9wdWxhdGUobm9kZSwgcG9v
bCk7CiAKICAgICBWZWN0b3I8Ym9vbD4gZGlzdHJpYnV0ZWQocG9vbC5zaXplKCkpOwogICAgIGRp
c3RyaWJ1dGVkLmZpbGwoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuaAppbmRleCBiZWU5MmE1NmFjMTQwYWY2NTVmMDVlODM5Y2JhNjYw
M2M1NDJkMjZjLi4wZDhkMDA4MmU2ZTkyNDEwZTQzZjYwNjBjZTM2ZjE2ZTY4ZTA0NmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAt
NzQsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uSW4o
Q29udGVudERpc3RyaWJ1dGlvbiopOwogCiBwcml2YXRlOgorICAgIHZvaWQgcG9wdWxhdGUoTm9k
ZSosIENvbnRlbnREaXN0cmlidXRpb24mKTsKKwogICAgIEhhc2hNYXA8Y29uc3QgTm9kZSosIElu
c2VydGlvblBvaW50Kj4gbV9ub2RlVG9JbnNlcnRpb25Qb2ludDsKICAgICB1bnNpZ25lZCBtX3Zh
bGlkaXR5IDogMjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRv
d0VsZW1lbnQuaAppbmRleCAzNmJkZDg5NWFjMmRlZmIzYTQwN2Y0MDFkZDg5MjNlNWE3ZDlmOTA0
Li5iYWMyYjkyYjU3OTYxYjIzZGZjYzJlMzJlMWY1NWIyZDU3ZTMyNjQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKQEAgLTY3LDYgKzY3LDEy
IEBAIGlubGluZSBIVE1MU2hhZG93RWxlbWVudCogdG9IVE1MU2hhZG93RWxlbWVudChOb2RlKiBu
b2RlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2hhZG93RWxlbWVudCo+KG5vZGUpOwog
fQogCitpbmxpbmUgY29uc3QgSFRNTFNoYWRvd0VsZW1lbnQqIHRvSFRNTFNoYWRvd0VsZW1lbnQo
Y29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgaXNIVE1MU2hhZG93RWxl
bWVudChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxTaGFkb3dFbGVt
ZW50Kj4obm9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhU
TUxTaGFkb3dFbGVtZW50X2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbAppbmRleCAwNmY3YTcxZjJh
NGVkNDMwZjZhNDg0MDJhMGI1MmQ1ZGE0ZjA0OTE5Li5jODhlMDY4ZTRkZTEwZGNkZGE3MmNhYTcx
NzYzMDVlMzA0Y2ZlYmY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
Y29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sCkBAIC0yODcsMTggKzI4
Nyw2IEBAIHRlc3RDb21wb3NlZFNoYWRvd1RyZWUoCiAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdjaGlsZC0xJywgJ2NsYXNzJzogJ2Zvbyd9KSwKICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ25vdC1zZWxlY3RlZCcsICdjbGFzcyc6ICdmb28nfSks
CiAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjaGlsZC0yJywgJ2NsYXNz
JzogJ2Zvbyd9KSkpOwotCi0vKgotZGVidWcoJ1Rlc3QgZm9yIG11bHRpcGxlIHNoYWRvdyByb290
cyB3aXRoIHJlcHJvamVjdGlvbnMuJyk7Ci10ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAotICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCi0gICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoY3JlYXRlRE9NKCdjb250ZW50JykpLAotICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdjb250ZW50Jywgeydz
ZWxlY3QnOiAnI2NoaWxkJ30pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnKSkpLAotICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnY2hpbGQnfSkpKTsKLSovCi0KIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9u
LWNvbXBsZXguaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJv
amVjdGlvbi1jb21wbGV4Lmh0bWwKaW5kZXggYmUyMTA5OTM0ZWI4MjQ1Y2VhMGUxZDBlNjU1OWNm
NzQ0MDgxYzUyOC4uNWJlMDMyMDkxOWIxYTJiMjJjMDA2MzI1OGE3YTc1ZDU0ZmJiZjFmNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9u
LWNvbXBsZXguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1y
ZXByb2plY3Rpb24tY29tcGxleC5odG1sCkBAIC0xNCwxMCArMTQsMTAgQEAKIAogPHNjcmlwdD4K
IHZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKLXNoYWRvd1Jv
b3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+PGNvbnRlbnQgc2VsZWN0PSIuQSI+PC9j
b250ZW50PjxzaGFkb3c+PC9zaGFkb3c+PGRpdiBjbGFzcz0iLkEiPkE8L2Rpdj48L2Rpdj4nOwor
c2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj48Y29udGVudCBzZWxlY3Q9
Ii5BIj48L2NvbnRlbnQ+PHNoYWRvdz48L3NoYWRvdz48ZGl2IGNsYXNzPSJBIj5BPC9kaXY+PC9k
aXY+JzsKIAogdmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qoc2hhZG93Um9v
dDEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QyJykpOwotc2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxk
aXY+PGgyPkE8L2gyPjxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+PGgyPkI8L2gyPjxz
aGFkb3c+PC9zaGFkb3c+PC9kaXY+Jworc2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXY+PGgy
PkE8L2gyPjxjb250ZW50IHNlbGVjdD0iLkEiPjwvY29udGVudD48aDI+QjwvaDI+PHNoYWRvdz48
L3NoYWRvdz48L2Rpdj4nCiA8L3NjcmlwdD4KIAogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rp
b24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbAppbmRleCA5MGRkNTZhNzU4NGQ2NTM4MjdlNDU5NDIw
NWUyMmEyZmY1M2NlNzA1Li40OGM1MmIyMGNmMDVlNGNjMTA4ZDJjYTNlM2I1YTVlODgwM2NlMjVm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2pl
Y3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbApAQCAtOCw2
ICs4LDcgQEAKIDxkaXYgaWQ9Imhvc3QxIj4KICAgICA8ZGl2IGlkPSJob3N0MiI+CiAgICAgICAg
IDxkaXY+Y29udGVudCBmYWxsYmFjayBlbGVtZW50PC9kaXY+CisgICAgICAgIDxkaXY+c2hhZG93
IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KICAgICAgICAgPGRpdj5UaGlzIHNob3VsZCBiZSBzZWxl
Y3RlZC48L2Rpdj4KICAgICA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLXJlcHJvamVjdGlv
bi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVw
cm9qZWN0aW9uLWZhbGxiYWNrLXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCmluZGV4IDE2NjFm
NTBhOGUwYzI1NTI0M2QyYjliMDA3YjZjZjRhOGNiZDJiM2YuLjIzODgwMDdmYWEzZTNmZjExYWFh
YmMyMTZmMjU5MTIxMTQ2YjNhODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2plY3Rpb24tZXhwZWN0ZWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rp
b24tZmFsbGJhY2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTksNiArOSw3IEBACiAg
ICAgPGRpdiBpZD0iaG9zdDIiPgogICAgICAgICA8ZGl2IGlkPSJob3N0MyI+CiAgICAgICAgICAg
ICA8ZGl2PmNvbnRlbnQgZmFsbGJhY2sgZWxlbWVudDwvZGl2PgorICAgICAgICAgICAgPGRpdj5z
aGFkb3cgZmFsbGJhY2sgZWxlbWVudDwvZGl2PgogICAgICAgICAgICAgPGRpdj5UaGlzIHNob3Vs
ZCBiZSBzZWxlY3RlZC48L2Rpdj4KICAgICAgICAgICAgIDxkaXY+Y29udGVudCBmYWxsYmFjayBl
bGVtZW50PC9kaXY+CiAgICAgICAgICAgICA8ZGl2PlRoaXMgYWxzbyBzaG91bGQgYmUgc2VsZWN0
ZWQuPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDU0YjA0YTU2
YjJmYjIwZDFmYTc3YzdiYjBlMjRhMWExMmZmZDdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorCis8ZGl2IGlkPSJob3N0
MSI+CisgICAgPGRpdiBpZD0iaG9zdDMiPgorICAgICAgICA8ZGl2Pk9sZGVzdCBTaGFkb3dSb290
IENoaWxkPC9kaXY+CisgICAgICAgIDxkaXY+SG9zdCBDaGlsZDwvZGl2PgorICAgICAgICA8ZGl2
PllvdW5nZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJl
cHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NTdkNTAwZjJlZTgzNDhmNDc4ODQyYzRiMjY4NTRjNzVjZjc2Mjk1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24t
ZmFsbGJhY2stZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorCis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdiBpZD0iaG9zdDQiPgorICAgICAg
IDxkaXY+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICA8ZGl2Pkhvc3QgQ2hp
bGQ8L2Rpdj4KKyAgICAgICA8ZGl2PlNoYWRvdyBGYWxsYmFjayBFbGVtZW50ICgxKTwvZGl2Pgor
ICAgICAgIDxkaXY+U2hhZG93IEZhbGxiYWNrIEVsZW1lbnQgKDIpPC9kaXY+CisgICAgPC9kaXY+
Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZmFsbGJhY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWE0NjU1NjI3N2IzZjljZmRkYTcwMWU0ZTUzMzFjNTNjYjA0Yjc1ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxi
YWNrLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0
MSI+PGRpdj5Ib3N0IENoaWxkPC9kaXY+PC9kaXY+CisKKzxzY3JpcHQ+Cit2YXIgc2hhZG93Um9v
dDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290MS5pbm5lckhUTUwg
PSAnPGRpdiBpZD0iaG9zdDIiPk9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+JzsKKwordmFy
IHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDIu
aW5uZXJIVE1MID0gJzxzaGFkb3c+PC9zaGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxzaGFkb3c+
PGRpdj5TaGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMSk8L2Rpdj48L3NoYWRvdz4nOworCit2YXIg
c2hhZG93Um9vdDMgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290My5p
bm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDQiPjxzaGFkb3c+PC9zaGFkb3c+PHNoYWRvdz48ZGl2
PlNoYWRvdyBGYWxsYmFjayBFbGVtZW50ICgyKTwvZGl2Pjwvc2hhZG93PjxzcGFuPk5vdCByZW5k
ZXJlZCAoMSk8L3NwYW4+PHNoYWRvdz48c3Bhbj5Ob3QgcmVuZGVyZWQgKDIpPC9zcGFuPjwvc2hh
ZG93PjwvZGl2Pic7CisKK3ZhciBob3N0NCA9IHNoYWRvd1Jvb3QzLmdldEVsZW1lbnRCeUlkKCdo
b3N0NCcpOwordmFyIHNoYWRvd1Jvb3Q0ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDQpOwor
CitzaGFkb3dSb290NC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSJkaXYiPjwvY29udGVu
dD4nOworPC9zY3JpcHQ+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQtZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0
ZWQtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM4OGQ5OWRi
NGUxNDFhMGVhYjQ5NzRkOTA4MDIzZjg2ZDc3MzA4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotCi08cD5UaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2hhZG93IGVsZW1lbnQgYXJlIG5vdCBk
aXN0cmlidXRlZC48L3A+Ci0KLTxkaXYgaWQ9Imhvc3QxIj4KLSAgICA8ZGl2IGlkPSJob3N0MiI+
PGRpdj5UaGlzIHNob3VsZCBiZSBzZWxlY3RlZC48L2Rpdj48L2Rpdj4KLTwvZGl2PgotCi08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJv
amVjdGlvbi1wcm9oaWJpdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM0MDI3MWE0YWM1YzUxNjhhMzE5MGI0NGE5YzAxM2E2MzQ4ZTQzZWQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLQotPHNjcmlwdCBz
cmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+Ci0KLTxwPlRoaXMgdGVzdCBlbnN1
cmVzIHRoYXQgZWxlbWVudHMgYXNzaWduZWQgdG8gYSBzaGFkb3cgZWxlbWVudCBhcmUgbm90IGRp
c3RyaWJ1dGVkLjwvcD4KLQotPGRpdiBpZD0iaG9zdDEiPgotICAgIDxkaXY+VGhlc2UgZWxlbWVu
dHM8L2Rpdj4KLSAgICA8ZGl2PnNob3VsZCBub3QgYmU8L2Rpdj4KLSAgICA8ZGl2PnJlcHJvamVj
dGVkPC9kaXY+Ci08L2Rpdj4KLQotPHNjcmlwdD4KLXZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGhvc3QxKTsKLXNoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJo
b3N0MiI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nOwotCi12YXIgc2hhZG93Um9vdDIgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKSk7Ci1z
aGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRpdj48Y29udGVudCBzZWxlY3Q9ImRpdiI+PC9jb250
ZW50PjxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+PC9kaXY+JwotPC9zY3JpcHQ+
Ci0KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcmVwcm9qZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJlcHJvamVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0NDUwODJlYTgyYzdiOTNlYTAwMGNiNmI2
NWFhZDE1N2MyMDRmMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3Nj
cmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2PgorCis8
c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwor
c2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj5PbGRlc3QgU2hhZG93Um9v
dCBDaGlsZDwvZGl2Pic7CisKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KGhvc3QxKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MyI+PHNoYWRv
dz48L3NoYWRvdz48Y29udGVudD48L2NvbnRlbnQ+PGRpdj5Zb3VuZ2VzdCBTaGFkb3dSb290IENo
aWxkPC9kaXY+PC9kaXY+JzsKKwordmFyIGhvc3QzID0gc2hhZG93Um9vdDIuZ2V0RWxlbWVudEJ5
SWQoJ2hvc3QzJyk7Cit2YXIgc2hhZG93Um9vdDMgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0
Myk7CitzaGFkb3dSb290My5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSJkaXYiPjwvY29u
dGVudD4nOworPC9zY3JpcHQ+CisKKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170566</attachid>
            <date>2012-10-24 23:55:47 -0700</date>
            <delta_ts>2012-10-25 16:35:45 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-99228-20121025155421.patch</filename>
            <type>text/plain</type>
            <size>29341</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFkZDk2Yzg5YzkxNzY2
NmM4Y2FhYzU1Y2UzZTcwZmI3MDUyNjZmNC4uODQ0OTA4MmMzNWY4ZTIyZDg3ZDIyMGRjMDJmNTJj
Mzk5MWU5OTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIHNoYWRvdyByb290LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KE9PUFMhKS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9y
Ojpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAg
ICAgICAoQ29udGVudERpc3RyaWJ1dG9yKToKKwogMjAxMi0xMC0yNCAgTWF4IFZ1am92aWMgIDxt
dnVqb3ZpY0BhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFkZXJzXSBUaGUgbWVzaCBzaG91
bGQgYmUgc3BlY2lmaWVkIHVzaW5nIDxjb2x1bW4sIHJvdz4gb3JkZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAppbmRleCAzYjgwZjFhNWFjZDI3NTgwYmMxYTk0OTVjYzVmNjc4ZTk0
OTNkMDM3Li4wODMyNzhjYzVhM2VhNDk2MTk3YzM5YmViZTAzZTdiYjZhOTFlNmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC05NzMsNiArOTczLDcgQEAgaW5saW5lIGJv
b2wgc2hvdWxkUmVzZXRTdHlsZUluaGVyaXRhbmNlKE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250
ZXh0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGluc2VydGlvblBvaW50ID0geW91bmdl
ckluc2VydGlvblBvaW50OwogICAgIH0KKwogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludC0+cmVz
ZXRTdHlsZUluaGVyaXRhbmNlKCk7CiB9CiAKQEAgLTE1MzksOSArMTU0MCwxMCBAQCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCwgUmVuZGVyUwogICAgIC8vIGNvbnRlbnRlZGl0YWJsZSBhdHRyaWJ1dGUgKGltcGxl
bWVudGVkIGJ5IC13ZWJraXQtdXNlci1tb2RpZnkpIHNob3VsZAogICAgIC8vIGJlIHByb3BhZ2F0
ZWQgZnJvbSBzaGFkb3cgaG9zdCB0byBkaXN0cmlidXRlZCBub2RlLgogICAgIGlmIChtX2Rpc3Ry
aWJ1dGVkVG9JbnNlcnRpb25Qb2ludCkgewotICAgICAgICBBU1NFUlQoZWxlbWVudC0+cGFyZW50
RWxlbWVudCgpKTsKLSAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBzdHlsZU9mU2hhZG93SG9zdCA9
IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldFVzZXJNb2RpZnkoc3R5bGVPZlNoYWRvd0hvc3QtPnVzZXJNb2RpZnkoKSk7Cisg
ICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsK
KyAgICAgICAgICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGVPZlNoYWRvd0hvc3QgPSBwYXJlbnQt
PnJlbmRlclN0eWxlKCkpCisgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VXNlck1vZGlmeShz
dHlsZU9mU2hhZG93SG9zdC0+dXNlck1vZGlmeSgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChlbGVtZW50LT5pc0xpbmsoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBlODgyMzBlNjRhYTcwYTJjNDc0MGY3ZjkxYzMx
ODQ3ZTBjMzk1ZmUxLi5jYzM4ZWI2Y2JlMGEzZTVkNjRkYTU0MzRiZTZiMjNiM2MxZWIyNDk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TFNoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC02MywxMyArNjQsMTMgQEAgc3RhdGljIGlubGluZSBFbGVtZW50U2hh
ZG93KiBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogICAg
IHJldHVybiAwOyAgICAKIH0KIAotc3RhdGljIGlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2
ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBub2RlKQorc3RhdGljIGlubGluZSBJbnNlcnRpb25Q
b2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlLCBjb25z
dCBOb2RlKiBiYXNlTm9kZSkKIHsKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQg
PSAwOwotICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBub2RlOworICAgIGNvbnN0IE5vZGUqIGN1
cnJlbnQgPSBiYXNlTm9kZTsKICAgICB3aGlsZSAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKICAgICAgICAgc2hhZG93LT5l
bnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRl
ZFRvID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihub2RlKSkgeworICAgICAgICBpZiAoSW5z
ZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmluc2VydGlvblBvaW50Rm9yKHByb2pl
Y3RlZE5vZGUpKSB7CiAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKICAgICAgICAg
ICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKICAgICAgICAgfSBlbHNlCkBAIC03OCw2
ICs3OSwxOSBAQCBzdGF0aWMgaW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0
aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCitz
dGF0aWMgaW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50KiByZXNvbHZlU2hhZG93UHJvamVjdGlv
bihjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChTaGFkb3dSb290KiByb290ID0gbm9kZS0+
cGFyZW50Tm9kZSgpICYmIG5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkgPyB0b1No
YWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKSA6IDApIHsKKyAgICAgICAgaWYgKHJvb3QtPmFz
c2lnbmVkVG8oKSkKKyAgICAgICAgICAgIHJldHVybiByZXNvbHZlU2hhZG93UHJvamVjdGlvbihy
b290LT5hc3NpZ25lZFRvKCkpOworICAgIH0KKworICAgIGlmIChpc0hUTUxTaGFkb3dFbGVtZW50
KG5vZGUpKQorICAgICAgICByZXR1cm4gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKKworICAg
IHJldHVybiAwOworfQorCiBpbmxpbmUgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OlBh
cmVudFRyYXZlcnNhbERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9u
UG9pbnQqIGluc2VydGlvblBvaW50KQogewogICAgIGlmICghbV9pbnNlcnRpb25Qb2ludCkKQEAg
LTIwNiw3ICsyMjAsNyBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNl
U2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZQogICAgIEVsZW1lbnRTaGFk
b3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUpOwogICAgIGlmICghc2hhZG93KQogICAg
ICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24p
OwotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rp
b24obm9kZSk7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVzb2x2ZVJl
cHJvamVjdGlvbihub2RlLCBub2RlKTsKICAgICBpZiAoIWluc2VydGlvblBvaW50KQogICAgICAg
ICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwog
CkBAIC0yNzQsNyArMjg4LDcgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJzYWwKICAgICB9CiAgICAg
aWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9u
KG5vZGUpKSB7CiAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Ci0gICAgICAg
IGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSByZXNvbHZlUmVwcm9qZWN0aW9u
KG5vZGUpKSB7CisgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBy
ZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUsIG5vZGUpKSB7CiAgICAgICAgICAgICBpZiAoZGV0YWls
cykKICAgICAgICAgICAgICAgICBkZXRhaWxzLT5kaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KGlu
c2VydGlvblBvaW50KTsKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChpbnNlcnRp
b25Qb2ludCwgZGV0YWlscyk7CkBAIC0yODQsNiArMjk4LDEwIEBAIE5vZGUqIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50VHJh
dmVyc2FsCiAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgZGV0YWlscy0+Y2hpbGRX
YXNPdXRPZkNvbXBvc2l0aW9uKCk7CiAgICAgfQorCisgICAgaWYgKGNvbnN0IEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVTaGFkb3dQcm9qZWN0aW9uKG5vZGUpKQorICAg
ICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRUcmVlKGluc2VydGlvblBvaW50LCBk
ZXRhaWxzKTsKKwogICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUobm9kZSwg
ZGV0YWlscyk7CiB9CiAKQEAgLTMxMCw3ICszMjgsMjIgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJTaGFkb3dSb290T3JIb3N0KGNv
bnMKICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFk
b3dSb290LT5hc3NpZ25lZFRvKCkpIHsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAg
ICBkZXRhaWxzLT5kaWRUcmF2ZXJzZVNoYWRvd1Jvb3Qoc2hhZG93Um9vdCk7Ci0gICAgICAgIHJl
dHVybiB0cmF2ZXJzZVBhcmVudChhc3NpZ25lZEluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKKyAg
ICAgICAgTm9kZSogcGFyZW50ID0gdHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRUcmVlKGFzc2lnbmVk
SW5zZXJ0aW9uUG9pbnQsIGRldGFpbHMpOworCisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBz
aGFkb3cgPSBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChwYXJlbnQpLT5zaGFk
b3coKSA6IDApIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Cisg
ICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVzb2x2ZVJl
cHJvamVjdGlvbihtX25vZGUsIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICAgICAgICAgIGRldGFpbHMtPmRpZFRyYXZl
cnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIHJldHVy
biB0cmF2ZXJzZVBhcmVudChpbnNlcnRpb25Qb2ludCwgZGV0YWlscyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBub2RlIGlzIGEgbm9uLWRpc3RyaWJ1dGVkIGxpZ2h0IGNo
aWxkIG9yIG9sZGVyIHNoYWRvdydzIGNoaWxkLgorICAgICAgICAgICAgaWYgKGRldGFpbHMpCisg
ICAgICAgICAgICAgICAgZGV0YWlscy0+Y2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKCk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gcGFyZW50OwogICAgIH0KIAogICAgIHJldHVybiAwOwpA
QCAtMzY4LDYgKzQwMSwxOCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgpCiB7
CiAgICAgQVNTRVJUKG1fbm9kZSk7CiAgICAgQVNTRVJUKG1fZGlzdHJpYnV0ZWROb2RlKTsKKwor
I2lmIDAKKyAgICBpZiAobV9ub2RlLT5wYXJlbnROb2RlKCkgJiYgbV9ub2RlLT5wYXJlbnROb2Rl
KCktPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jv
b3QgPSB0b1NoYWRvd1Jvb3QobV9ub2RlLT5wYXJlbnROb2RlKCkpOworICAgICAgICBpZiAoSW5z
ZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpKSB7
CisgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKKyAgICAgICAgICAgIG1faXND
cm9zc2luZ0luc2VydGlvblBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNo
YWRvd09mUGFyZW50KG1fbm9kZSkpIHsKICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3IobV9kaXN0cmlidXRlZE5vZGUp
KSB7CiAgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKQEAgLTM3Nyw3ICs0MjIs
OCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgpCiAgICAgfQogICAgIGlmICgh
bV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBhcmVu
dE5vZGUoKTsKLSAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CisgICAgICAgIGlm
ICghKG1fbm9kZSAmJiBtX25vZGUtPmlzU2hhZG93Um9vdCgpICYmIHRvU2hhZG93Um9vdChtX25v
ZGUpLT5hc3NpZ25lZFRvKCkpKQorICAgICAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25v
ZGU7CiAgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gZmFsc2U7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggYWVi
NWI1YjQ3NWIyMTliYzU3ZGM4NWVmMmU3YjgzMmFlZTg4OTNmYy4uNjU3YzZlNDljYzhlYWRlMmE4
MWI5NzAyMjQ5ODc3N2U1NmE0MDdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNw
cApAQCAtMTM0LDE0ICsxMzQsMTkgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpkZXRhY2goKQogCiBJ
bnNlcnRpb25Qb2ludCogRWxlbWVudFNoYWRvdzo6aW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9k
ZSogbm9kZSkgY29uc3QKIHsKKyAgICBpZiAobm9kZSAmJiAhbm9kZS0+cGFyZW50Tm9kZSgpKQor
ICAgICAgICBzaG93Tm9kZVBhdGgobm9kZSk7CisKICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5w
YXJlbnROb2RlKCkpOwogCisjaWYgMAogICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCktPmlzU2hh
ZG93Um9vdCgpKSB7CiAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQg
PSB0b1NoYWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKS0+YXNzaWduZWRUbygpKQogICAgICAg
ICAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
KyNlbmRpZgogCiAgICAgcmV0dXJuIGRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9y
KG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0
cmlidXRvci5jcHAKaW5kZXggODNkZjVlMGMwNTFlNTM3ZDhlZmRmMzg3MzJkOTE3NjM5NzZmMzVl
MS4uMTRjYzYyOTllZDAzODliNDk3ZmQ5MDcxNDRkZjZlZjE5NjBjZjJhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0zNiw2
ICszNiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBk
b2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbihIVE1MU2hhZG93RWxlbWVudCogc2hhZG93KQorewor
ICAgIFRyZWVTY29wZSogc2NvcGUgPSBzaGFkb3ctPnRyZWVTY29wZSgpOworICAgIGlmIChzY29w
ZS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiB0b1NoYWRvd1Jv
b3Qoc2NvcGUtPnJvb3ROb2RlKCkpLT5pc09sZGVzdCgpOworCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBDb250ZW50RGlzdHJpYnV0b3I6OkNvbnRlbnREaXN0cmlidXRvcigpCiAgICAgOiBtX3Zh
bGlkaXR5KFVuZGV0ZXJtaW5lZCkKIHsKQEAgLTUwLDI5ICs1OSw0NSBAQCBJbnNlcnRpb25Qb2lu
dCogQ29udGVudERpc3RyaWJ1dG9yOjpmaW5kSW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSog
a2V5KSBjb25zdAogICAgIHJldHVybiBtX25vZGVUb0luc2VydGlvblBvaW50LmdldChrZXkpOwog
fQogCi12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQor
dm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OnBvcHVsYXRlKE5vZGUqIG5vZGUsIENvbnRlbnREaXN0
cmlidXRpb24mIHBvb2wpCiB7Ci0gICAgQVNTRVJUKG5lZWRzRGlzdHJpYnV0aW9uKCkpOwotICAg
IEFTU0VSVChtX25vZGVUb0luc2VydGlvblBvaW50LmlzRW1wdHkoKSk7Ci0KLSAgICBtX3ZhbGlk
aXR5ID0gVmFsaWQ7CisgICAgaWYgKCFpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAg
IHBvb2wuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgQ29udGVu
dERpc3RyaWJ1dGlvbiBwb29sOwotICAgIGZvciAoTm9kZSogbm9kZSA9IGhvc3QtPmZpcnN0Q2hp
bGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFp
c0hUTUxDb250ZW50RWxlbWVudChub2RlKSkgewotICAgICAgICAgICAgcG9vbC5hcHBlbmQobm9k
ZSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBpZiAoaXNIVE1MU2hhZG93RWxlbWVudChu
b2RlKSAmJiAhZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4odG9IVE1MU2hhZG93RWxlbWVudChu
b2RlKSkpIHsKKyAgICAgICAgSFRNTFNoYWRvd0VsZW1lbnQqIHNoYWRvdyA9IHRvSFRNTFNoYWRv
d0VsZW1lbnQobm9kZSk7CisgICAgICAgIFNoYWRvd1Jvb3QqIG9sZGVyID0gc2hhZG93LT5zaGFk
b3dSb290KCktPm9sZGVyU2hhZG93Um9vdCgpOworICAgICAgICBpZiAob2xkZXItPmFzc2lnbmVk
VG8oKSA9PSBzaGFkb3cpIHsKKyAgICAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBvbGRlci0+
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAg
ICAgICAgICAgICBwb3B1bGF0ZShjaGlsZCwgcG9vbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9IHNoYWRvdy0+Zmlyc3RDaGlsZCgpOyBm
YWxsYmFja05vZGU7IGZhbGxiYWNrTm9kZSA9IGZhbGxiYWNrTm9kZS0+bmV4dFNpYmxpbmcoKSkK
KyAgICAgICAgICAgICAgICBwb29sLmFwcGVuZChmYWxsYmFja05vZGUpOwogICAgICAgICB9Ci0K
KyAgICB9IGVsc2UgewogICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0
b0luc2VydGlvblBvaW50KG5vZGUpOwogICAgICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmhhc0Rp
c3RyaWJ1dGlvbigpKSB7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2Vy
dGlvblBvaW50LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBwb29sLmFwcGVuZChpbnNl
cnRpb25Qb2ludC0+YXQoaSkpOworICAgICAgICAgICAgICAgIHBvcHVsYXRlKGluc2VydGlvblBv
aW50LT5hdChpKSwgcG9vbCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmb3IgKE5v
ZGUqIGZhbGxiYWNrTm9kZSA9IGluc2VydGlvblBvaW50LT5maXJzdENoaWxkKCk7IGZhbGxiYWNr
Tm9kZTsgZmFsbGJhY2tOb2RlID0gZmFsbGJhY2tOb2RlLT5uZXh0U2libGluZygpKQogICAgICAg
ICAgICAgICAgIHBvb2wuYXBwZW5kKGZhbGxiYWNrTm9kZSk7CiAgICAgICAgIH0KICAgICB9Cit9
CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCit7
CisgICAgQVNTRVJUKG5lZWRzRGlzdHJpYnV0aW9uKCkpOworICAgIEFTU0VSVChtX25vZGVUb0lu
c2VydGlvblBvaW50LmlzRW1wdHkoKSk7CisKKyAgICBtX3ZhbGlkaXR5ID0gVmFsaWQ7CisKKyAg
ICBDb250ZW50RGlzdHJpYnV0aW9uIHBvb2w7CisgICAgZm9yIChOb2RlKiBub2RlID0gaG9zdC0+
Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAg
cG9wdWxhdGUobm9kZSwgcG9vbCk7CiAKICAgICBWZWN0b3I8Ym9vbD4gZGlzdHJpYnV0ZWQocG9v
bC5zaXplKCkpOwogICAgIGRpc3RyaWJ1dGVkLmZpbGwoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAppbmRleCBiZWU5MmE1NmFjMTQw
YWY2NTVmMDVlODM5Y2JhNjYwM2M1NDJkMjZjLi4wZDhkMDA4MmU2ZTkyNDEwZTQzZjYwNjBjZTM2
ZjE2ZTY4ZTA0NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250
ZW50RGlzdHJpYnV0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
RGlzdHJpYnV0b3IuaApAQCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlk
YXRlRGlzdHJpYnV0aW9uSW4oQ29udGVudERpc3RyaWJ1dGlvbiopOwogCiBwcml2YXRlOgorICAg
IHZvaWQgcG9wdWxhdGUoTm9kZSosIENvbnRlbnREaXN0cmlidXRpb24mKTsKKwogICAgIEhhc2hN
YXA8Y29uc3QgTm9kZSosIEluc2VydGlvblBvaW50Kj4gbV9ub2RlVG9JbnNlcnRpb25Qb2ludDsK
ICAgICB1bnNpZ25lZCBtX3ZhbGlkaXR5IDogMjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaAppbmRleCAzNmJkZDg5NWFjMmRlZmIzYTQwN2Y0
MDFkZDg5MjNlNWE3ZDlmOTA0Li5iYWMyYjkyYjU3OTYxYjIzZGZjYzJlMzJlMWY1NWIyZDU3ZTMy
NjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmgKQEAgLTY3LDYgKzY3LDEyIEBAIGlubGluZSBIVE1MU2hhZG93RWxlbWVudCogdG9IVE1MU2hh
ZG93RWxlbWVudChOb2RlKiBub2RlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2hhZG93
RWxlbWVudCo+KG5vZGUpOwogfQogCitpbmxpbmUgY29uc3QgSFRNTFNoYWRvd0VsZW1lbnQqIHRv
SFRNTFNoYWRvd0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUg
fHwgaXNIVE1MU2hhZG93RWxlbWVudChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEhUTUxTaGFkb3dFbGVtZW50Kj4obm9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEhUTUxTaGFkb3dFbGVtZW50X2gKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93LXJl
cHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNo
YWRvdy10cmVlLXdhbGtlci1zaGFkb3ctcmVwcm9qZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcz
OGM2NGZiYTdmNjZmMGIwMTgwYWY2MWE3OWVhNDY5ZjlhMmRjOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIt
c2hhZG93LXJlcHJvamVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTQ5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZG93LWRvbS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIGZv
ciBDb21wb3NlZCBTaGFkb3cgRE9NIFRyZWUgVHJhdmVyc2FsIEFQSXMuIENhbiBvbmx5IHJ1biB3
aXRoaW4gRFJUIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKworZnVuY3Rpb24gZHVtcE5vZGUobm9kZSkKK3sKKyAgICBpZiAoIW5vZGUp
CisgICAgICAgIHJldHVybiAnKG51bGwpJworICAgIHZhciBvdXRwdXQgPSBub2RlLm5vZGVOYW1l
ICsgIlx0IjsKKyAgICBpZiAobm9kZS5pZCkKKyAgICAgICAgb3V0cHV0ICs9ICcgaWQ9JyArIG5v
ZGUuaWQ7CisgICAgaWYgKG5vZGUuY2xhc3NOYW1lKQorICAgICAgICBvdXRwdXQgKz0gJyBjbGFz
cz0nICsgbm9kZS5jbGFzc05hbWU7CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworZnVuY3Rpb24g
ZHVtcENvbXBvc2VkU2hhZG93VHJlZShub2RlLCBpbmRlbnQpCit7CisgICAgaW5kZW50ID0gaW5k
ZW50IHx8ICIiOworICAgIHZhciBvdXRwdXQgPSBpbmRlbnQgKyBkdW1wTm9kZShub2RlKSArICJc
biI7CisgICAgdmFyIGNoaWxkOworICAgIGZvciAoY2hpbGQgPSBpbnRlcm5hbHMuZmlyc3RDaGls
ZEJ5V2Fsa2VyKG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBpbnRlcm5hbHMubmV4dFNpYmxpbmdCeVdh
bGtlcihjaGlsZCkpCisgICAgICAgICBvdXRwdXQgKz0gZHVtcENvbXBvc2VkU2hhZG93VHJlZShj
aGlsZCwgaW5kZW50ICsgIlx0Iik7CisgICAgcmV0dXJuIG91dHB1dDsKK30KKworZnVuY3Rpb24g
bGFzdE5vZGVCeVdhbGtlcihyb290KQoreworICAgIHZhciBsYXN0Tm9kZSA9IHJvb3Q7CisgICAg
d2hpbGUgKGludGVybmFscy5sYXN0Q2hpbGRCeVdhbGtlcihsYXN0Tm9kZSkpCisgICAgICAgIGxh
c3ROb2RlID0gaW50ZXJuYWxzLmxhc3RDaGlsZEJ5V2Fsa2VyKGxhc3ROb2RlKTsKKyAgICByZXR1
cm4gbGFzdE5vZGU7Cit9CisKK2Z1bmN0aW9uIHNob3dDb21wb3NlZFNoYWRvd1RyZWVCeVRyYXZl
cnNpbmdJbkZvcndhcmQocm9vdCkKK3sKKyAgICB2YXIgbm9kZSA9IHJvb3Q7CisgICAgdmFyIGxh
c3QgPSBsYXN0Tm9kZUJ5V2Fsa2VyKHJvb3QpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAg
IGRlYnVnKGR1bXBOb2RlKG5vZGUpKTsKKyAgICAgICAgaWYgKG5vZGUgPT0gbGFzdCkKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBub2RlID0gaW50ZXJuYWxzLm5leHROb2RlQnlXYWxrZXIo
bm9kZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93Q29tcG9zZWRTaGFkb3dUcmVlQnlUcmF2
ZXJzaW5nSW5CYWNrd2FyZChyb290KQoreworICAgIHZhciBub2RlID0gbGFzdE5vZGVCeVdhbGtl
cihyb290KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBkZWJ1ZyhkdW1wTm9kZShub2Rl
KSk7CisgICAgICAgIGlmIChub2RlID09IHJvb3QpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgbm9kZSA9IGludGVybmFscy5wcmV2aW91c05vZGVCeVdhbGtlcihub2RlKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHNob3dDb21wb3NlZFNoYWRvd1RyZWUobm9kZSkKK3sKKyAgICBkZWJ1Zygn
Q29tcG9zZWQgU2hhZG93IFRyZWU6Jyk7CisgICAgZGVidWcoZHVtcENvbXBvc2VkU2hhZG93VHJl
ZShub2RlKSk7CisKKyAgICBkZWJ1ZygnVHJhdmVyc2UgaW4gZm9yd2FyZC4nKTsKKyAgICBzaG93
Q29tcG9zZWRTaGFkb3dUcmVlQnlUcmF2ZXJzaW5nSW5Gb3J3YXJkKG5vZGUpOworCisgICAgZGVi
dWcoJ1RyYXZlcnNlIGluIGJhY2t3YXJkLicpOworICAgIHNob3dDb21wb3NlZFNoYWRvd1RyZWVC
eVRyYXZlcnNpbmdJbkJhY2t3YXJkKG5vZGUpOworCisgICAgZGVidWcoJycpOworfQorCitmdW5j
dGlvbiBzaG93TmV4dE5vZGUobm9kZSkgeworICAgIHZhciBuZXh0ID0gaW50ZXJuYWxzLm5leHRO
b2RlQnlXYWxrZXIobm9kZSk7CisgICAgZGVidWcoJ05leHQgbm9kZSBvZiBbJyArIGR1bXBOb2Rl
KG5vZGUpICsgJ10gaXMgWycgKyBkdW1wTm9kZShuZXh0KSArICddJyk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RDb21wb3NlZFNoYWRvd1RyZWUobm9kZSkKK3sKKyAgICB2YXIgc2FuZGJveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CisgICAgc2FuZGJveC5pbm5lckhUTUwgPSAn
JzsKKyAgICBzYW5kYm94LmFwcGVuZENoaWxkKG5vZGUpOworICAgIGRvY3VtZW50LmJvZHkub2Zm
c2V0TGVmdDsKKyAgICBzaG93Q29tcG9zZWRTaGFkb3dUcmVlKG5vZGUpOworfQorCitkZWJ1Zygn
TXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aG91dCBzaGFkb3cgZWxlbWVudCcpOwordGVzdENvbXBv
c2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAg
ICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pKSwK
KyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
Yyd9KSkpKTsKKworZGVidWcoJ011bHRpcGxlIHNoYWRvdyByb290IHdpdGggc2hhZG93IGVsZW1l
bnQnKTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpKSk7CisgICAgICAgICAgICAgICAg
ICAKK2RlYnVnKCdNdWx0aXBsZSBzaGFkb3cgcm9vdCB3aXRoIHNoYWRvdyBlbGVtZW50LCBjYXNl
IDInKTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpLAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdnJ30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdoJ30p
KSkpOworCitkZWJ1Zygnc2hhZG93IHJlcHJvamVjdGlvbicpOwordGVzdENvbXBvc2VkU2hhZG93
VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYS1jaGlsZCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAnYyd9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQn
LCB7J2lkJzogJ2UnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YnfSkpKSkpKTsKKwor
aW50ZXJuYWxzLmFkZHJlc3MoZG9jdW1lbnQpOworCisvLyBmYWlsaW5nCitkZWJ1Zygnc2hhZG93
IHJlcHJvamVjdGlvbiwgdGFrZSAyJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdhLWNoaWxkJ30pLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNy
ZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdzaGFkb3cnfSkpLAorICAgICAgICAgICAgICBjcmVh
dGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdj
J30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdkJ30pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcsIHsnaWQnOiAnZSd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZid9KSkpKSkpOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbApp
bmRleCAwNmY3YTcxZjJhNGVkNDMwZjZhNDg0MDJhMGI1MmQ1ZGE0ZjA0OTE5Li5jODhlMDY4ZTRk
ZTEwZGNkZGE3MmNhYTcxNzYzMDVlMzA0Y2ZlYmY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1s
CkBAIC0yODcsMTggKzI4Nyw2IEBAIHRlc3RDb21wb3NlZFNoYWRvd1RyZWUoCiAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjaGlsZC0xJywgJ2NsYXNzJzogJ2Zvbyd9KSwK
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ25vdC1zZWxlY3RlZCcsICdj
bGFzcyc6ICdmb28nfSksCiAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdj
aGlsZC0yJywgJ2NsYXNzJzogJ2Zvbyd9KSkpOwotCi0vKgotZGVidWcoJ1Rlc3QgZm9yIG11bHRp
cGxlIHNoYWRvdyByb290cyB3aXRoIHJlcHJvamVjdGlvbnMuJyk7Ci10ZXN0Q29tcG9zZWRTaGFk
b3dUcmVlKAotICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCi0gICAgICAgICAgICAg
IGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdjb250ZW50JykpLAotICAgICAgICAgICAgICBj
cmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9N
KCdjb250ZW50JywgeydzZWxlY3QnOiAnI2NoaWxkJ30pKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnKSkpLAotICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnY2hpbGQnfSkpKTsKLSovCi0KIDwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRl
bnQtcmVwcm9qZWN0aW9uLWNvbXBsZXguaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0bWwKaW5kZXggYmUyMTA5OTM0ZWI4MjQ1
Y2VhMGUxZDBlNjU1OWNmNzQ0MDgxYzUyOC4uNWJlMDMyMDkxOWIxYTJiMjJjMDA2MzI1OGE3YTc1
ZDU0ZmJiZjFmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRl
bnQtcmVwcm9qZWN0aW9uLWNvbXBsZXguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tY29tcGxleC5odG1sCkBAIC0xNCwxMCArMTQsMTAg
QEAKIAogPHNjcmlwdD4KIHZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhv
c3QxKTsKLXNoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+PGNvbnRlbnQg
c2VsZWN0PSIuQSI+PC9jb250ZW50PjxzaGFkb3c+PC9zaGFkb3c+PGRpdiBjbGFzcz0iLkEiPkE8
L2Rpdj48L2Rpdj4nOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj48
Y29udGVudCBzZWxlY3Q9Ii5BIj48L2NvbnRlbnQ+PHNoYWRvdz48L3NoYWRvdz48ZGl2IGNsYXNz
PSJBIj5BPC9kaXY+PC9kaXY+JzsKIAogdmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qoc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QyJykpOwotc2hhZG93Um9vdDIu
aW5uZXJIVE1MID0gJzxkaXY+PGgyPkE8L2gyPjxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRl
bnQ+PGgyPkI8L2gyPjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+Jworc2hhZG93Um9vdDIuaW5uZXJI
VE1MID0gJzxkaXY+PGgyPkE8L2gyPjxjb250ZW50IHNlbGVjdD0iLkEiPjwvY29udGVudD48aDI+
QjwvaDI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nCiA8L3NjcmlwdD4KIAogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9u
LWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29u
dGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbAppbmRleCA5MGRkNTZhNzU4
NGQ2NTM4MjdlNDU5NDIwNWUyMmEyZmY1M2NlNzA1Li40OGM1MmIyMGNmMDVlNGNjMTA4ZDJjYTNl
M2I1YTVlODgwM2NlMjVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
Y29udGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0
ZWQuaHRtbApAQCAtOCw2ICs4LDcgQEAKIDxkaXYgaWQ9Imhvc3QxIj4KICAgICA8ZGl2IGlkPSJo
b3N0MiI+CiAgICAgICAgIDxkaXY+Y29udGVudCBmYWxsYmFjayBlbGVtZW50PC9kaXY+CisgICAg
ICAgIDxkaXY+c2hhZG93IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KICAgICAgICAgPGRpdj5UaGlz
IHNob3VsZCBiZSBzZWxlY3RlZC48L2Rpdj4KICAgICA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxi
YWNrLXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLXJlcHJvamVjdGlvbi1leHBlY3RlZC5o
dG1sCmluZGV4IDE2NjFmNTBhOGUwYzI1NTI0M2QyYjliMDA3YjZjZjRhOGNiZDJiM2YuLjIzODgw
MDdmYWEzZTNmZjExYWFhYmMyMTZmMjU5MTIxMTQ2YjNhODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2pl
Y3Rpb24tZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29u
dGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKQEAg
LTksNiArOSw3IEBACiAgICAgPGRpdiBpZD0iaG9zdDIiPgogICAgICAgICA8ZGl2IGlkPSJob3N0
MyI+CiAgICAgICAgICAgICA8ZGl2PmNvbnRlbnQgZmFsbGJhY2sgZWxlbWVudDwvZGl2PgorICAg
ICAgICAgICAgPGRpdj5zaGFkb3cgZmFsbGJhY2sgZWxlbWVudDwvZGl2PgogICAgICAgICAgICAg
PGRpdj5UaGlzIHNob3VsZCBiZSBzZWxlY3RlZC48L2Rpdj4KICAgICAgICAgICAgIDxkaXY+Y29u
dGVudCBmYWxsYmFjayBlbGVtZW50PC9kaXY+CiAgICAgICAgICAgICA8ZGl2PlRoaXMgYWxzbyBz
aG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tY2xpY2suaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NjkxODYxMjg3YzdiZWNlMDNmZTVmMTJkNjZmMzFhYjNmNWU4MjNmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tY2xpY2su
aHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxwPlRoaXMgdGVzdCBjb25m
aXJtcyB0aGF0IGNsaWNraW5nIGEgc2hhZG93IHJlcHJvamVjdGVkIGVsZW1lbnQgZG9lcyBub3Qg
Y2F1c2UgYSBjcmFzaC48L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0i
aG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK3Zh
ciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3Qx
LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPk9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9k
aXY+JzsKKwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwor
c2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93Pjwvc2hhZG93
Pjxjb250ZW50PjwvY29udGVudD48ZGl2PllvdW5nZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj48
L2Rpdj4nOworCit2YXIgaG9zdDMgPSBzaGFkb3dSb290Mi5nZXRFbGVtZW50QnlJZCgnaG9zdDMn
KTsKK3ZhciBzaGFkb3dSb290MyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QzKTsKK3NoYWRv
d1Jvb3QzLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9ImRpdiI+PC9jb250ZW50Pic7CisK
K2NvbnRhaW5lci5vZmZzZXRMZWZ0OworCit2YXIgdGFyZ2V0ID0gc2hhZG93Um9vdDEuZ2V0RWxl
bWVudEJ5SWQoJ3RhcmdldCcpOworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldC5vZmZzZXRMZWZ0ICsgMTAsIHRhcmdldC5vZmZzZXRU
b3AgKyAyKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7Cit9CisKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAiUEFTUyI7Cis8L3NjcmlwdD4K
KworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ1NGIwNGE1
NmIyZmIyMGQxZmE3N2M3YmIwZTI0YTFhMTJmZmQ3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKworPGRpdiBpZD0iaG9z
dDEiPgorICAgIDxkaXYgaWQ9Imhvc3QzIj4KKyAgICAgICAgPGRpdj5PbGRlc3QgU2hhZG93Um9v
dCBDaGlsZDwvZGl2PgorICAgICAgICA8ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRp
dj5Zb3VuZ2VzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKwor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
ZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzU3ZDUwMGYyZWU4MzQ4ZjQ3ODg0MmM0YjI2ODU0Yzc1Y2Y3NjI5NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9u
LWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgaWQ9Imhvc3Q0Ij4KKyAgICAg
ICA8ZGl2Pk9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgICAgPGRpdj5Ib3N0IENo
aWxkPC9kaXY+CisgICAgICAgPGRpdj5TaGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMSk8L2Rpdj4K
KyAgICAgICA8ZGl2PlNoYWRvdyBGYWxsYmFjayBFbGVtZW50ICgyKTwvZGl2PgorICAgIDwvZGl2
PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFhNDY1NTYyNzdiM2Y5Y2ZkZGE3MDFlNGU1MzMxYzUzY2IwNGI3NWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxs
YmFjay5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9z
dDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2PgorCis8c2NyaXB0PgordmFyIHNoYWRvd1Jv
b3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1M
ID0gJzxkaXYgaWQ9Imhvc3QyIj5PbGRlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2Pic7CisKK3Zh
ciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3Qy
LmlubmVySFRNTCA9ICc8c2hhZG93Pjwvc2hhZG93Pjxjb250ZW50PjwvY29udGVudD48c2hhZG93
PjxkaXY+U2hhZG93IEZhbGxiYWNrIEVsZW1lbnQgKDEpPC9kaXY+PC9zaGFkb3c+JzsKKwordmFy
IHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDMu
aW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3Q0Ij48c2hhZG93Pjwvc2hhZG93PjxzaGFkb3c+PGRp
dj5TaGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMik8L2Rpdj48L3NoYWRvdz48c3Bhbj5Ob3QgcmVu
ZGVyZWQgKDEpPC9zcGFuPjxzaGFkb3c+PHNwYW4+Tm90IHJlbmRlcmVkICgyKTwvc3Bhbj48L3No
YWRvdz48L2Rpdj4nOworCit2YXIgaG9zdDQgPSBzaGFkb3dSb290My5nZXRFbGVtZW50QnlJZCgn
aG9zdDQnKTsKK3ZhciBzaGFkb3dSb290NCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3Q0KTsK
Kworc2hhZG93Um9vdDQuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRl
bnQ+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJp
dGVkLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjODhkOTlk
YjRlMTQxYTBlYWI0OTc0ZDkwODAyM2Y4NmQ3NzMwODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLQotPHA+VGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCBlbGVtZW50cyBhc3NpZ25lZCB0byBhIHNoYWRvdyBlbGVtZW50IGFyZSBub3Qg
ZGlzdHJpYnV0ZWQuPC9wPgotCi08ZGl2IGlkPSJob3N0MSI+Ci0gICAgPGRpdiBpZD0iaG9zdDIi
PjxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXBy
b2plY3Rpb24tcHJvaGliaXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjNDAyNzFhNGFjNWM1MTY4YTMxOTBiNDRhOWMwMTNhNjM0OGU0M2VkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgotCi08cD5UaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2hhZG93IGVsZW1lbnQgYXJlIG5vdCBk
aXN0cmlidXRlZC48L3A+Ci0KLTxkaXYgaWQ9Imhvc3QxIj4KLSAgICA8ZGl2PlRoZXNlIGVsZW1l
bnRzPC9kaXY+Ci0gICAgPGRpdj5zaG91bGQgbm90IGJlPC9kaXY+Ci0gICAgPGRpdj5yZXByb2pl
Y3RlZDwvZGl2PgotPC9kaXY+Ci0KLTxzY3JpcHQ+Ci12YXIgc2hhZG93Um9vdDEgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChob3N0MSk7Ci1zaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0i
aG9zdDIiPjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKLQotdmFyIHNoYWRvd1Jvb3QyID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QyJykpOwot
c2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXY+PGNvbnRlbnQgc2VsZWN0PSJkaXYiPjwvY29u
dGVudD48ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PjwvZGl2PicKLTwvc2NyaXB0
PgotCi08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJlcHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yZXByb2plY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDQ1MDgyZWE4MmM3YjkzZWEwMDBjYjZi
NjVhYWQxNTdjMjA0ZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9z
Y3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QxIj48ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj48L2Rpdj4KKwor
PHNjcmlwdD4KK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsK
K3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+T2xkZXN0IFNoYWRvd1Jv
b3QgQ2hpbGQ8L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChob3N0MSk7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDMiPjxzaGFk
b3c+PC9zaGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxkaXY+WW91bmdlc3QgU2hhZG93Um9vdCBD
aGlsZDwvZGl2PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRC
eUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9z
dDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2Nv
bnRlbnQ+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMxOWU0OWY5YjQ4NGU5ODlmMDAyNDM4Y2MzYjc2ZmI5NmJkNTU3OTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJv
amVjdGlvbjItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorCis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdiBpZD0iaG9zdDMiPgorICAgICAg
ICA8ZGl2PkE8L2Rpdj4KKyAgICAgICAgPGRpdj5CPC9kaXY+CisgICAgICAgIDxkaXY+QzwvZGl2
PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24yLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY3
ZDc3NjIzMzQ3ZmYzNmQ1ODViNmMzMjM5NDVlNjU4ODI1ZDU1NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sCkBA
IC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPjxkaXY+Qjwv
ZGl2PjwvZGl2PgorCis8c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxzaGFkb3c+PC9zaGFkb3c+
JzsKKwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hh
ZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93Pjwvc2hhZG93Pjwv
ZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0Mycp
OwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93
Um9vdDMuaW5uZXJIVE1MID0gJzxkaXY+QTwvZGl2Pjxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2Nv
bnRlbnQ+PGRpdj5DPC9kaXY+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170766</attachid>
            <date>2012-10-25 16:35:49 -0700</date>
            <delta_ts>2012-10-25 18:36:05 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-99228-20121026083422.patch</filename>
            <type>text/plain</type>
            <size>37903</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIwNzlmOWZjYjBlMzdi
MGMyZGQzODY0MTNkNzI0MGY0NWRiNDAwOC4uNTE1Y2E1MDUzZDU5ZGVlOGFkOWM3NjE5ZDlhM2Rj
MjZlYWIyZmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIHNoYWRvdyByb290LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KE9PUFMhKS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9y
Ojpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAg
ICAgICAoQ29udGVudERpc3RyaWJ1dG9yKToKKwogMjAxMi0xMC0yNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUaWxlZCBsYXllcnMgYXJlIG1pc3Np
bmcgY29udGVudCBvbiB6b29taW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggZTA4MjUyNTU3ZGE4ZDFkZDU5NWY3YzMxNTRkYzYxYTE2NmUyOTUxNy4uNDdkMGIyZTk4Mjc4
M2ZmOTZlNDBjZWM0MDU3YTJmNjg0YmIzYTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtOTc0LDYgKzk3NCw3IEBAIGlubGluZSBib29sIHNob3VsZFJlc2V0U3R5bGVJ
bmhlcml0YW5jZShOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHlvdW5nZXJJbnNlcnRpb25Qb2ludDsKICAg
ICB9CisKICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgp
OwogfQogCkBAIC0xNTQwLDkgKzE1NDEsMTAgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5
bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlclMKICAg
ICAvLyBjb250ZW50ZWRpdGFibGUgYXR0cmlidXRlIChpbXBsZW1lbnRlZCBieSAtd2Via2l0LXVz
ZXItbW9kaWZ5KSBzaG91bGQKICAgICAvLyBiZSBwcm9wYWdhdGVkIGZyb20gc2hhZG93IGhvc3Qg
dG8gZGlzdHJpYnV0ZWQgbm9kZS4KICAgICBpZiAobV9kaXN0cmlidXRlZFRvSW5zZXJ0aW9uUG9p
bnQpIHsKLSAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSk7Ci0gICAgICAg
IGlmIChSZW5kZXJTdHlsZSogc3R5bGVPZlNoYWRvd0hvc3QgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCktPnJlbmRlclN0eWxlKCkpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRVc2VyTW9kaWZ5
KHN0eWxlT2ZTaGFkb3dIb3N0LT51c2VyTW9kaWZ5KCkpOworICAgICAgICBpZiAoRWxlbWVudCog
cGFyZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAoUmVu
ZGVyU3R5bGUqIHN0eWxlT2ZTaGFkb3dIb3N0ID0gcGFyZW50LT5yZW5kZXJTdHlsZSgpKQorICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldFVzZXJNb2RpZnkoc3R5bGVPZlNoYWRvd0hvc3QtPnVz
ZXJNb2RpZnkoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZWxlbWVudC0+aXNMaW5r
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHAKaW5kZXggZTg4MjMwZTY0YWE3MGEyYzQ3NDBmN2Y5MWMzMTg0N2UwYzM5NWZlMS4uZjBjOTU4
ZTExZGRkMDBkZTdlOGMwYWQxMTlmNDQ5YjYwZmVmOGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUg
IkhUTUxDb250ZW50RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjMs
MjEgKzY0LDQ4IEBAIHN0YXRpYyBpbmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRG
b3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gMDsgICAgCiB9CiAK
LXN0YXRpYyBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3Qg
Tm9kZSogbm9kZSkKK3N0YXRpYyBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2pl
Y3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSwgY29uc3QgTm9kZSogYmFzZU5vZGUpCiB7
CiAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsKLSAgICBjb25zdCBOb2Rl
KiBjdXJyZW50ID0gbm9kZTsKLSAgICB3aGlsZSAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAgICAgICAgc2hhZG93LT5l
bnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRl
ZFRvID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihub2RlKSkgewotICAgICAgICAgICAgY3Vy
cmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVk
VG87Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnJlYWs7CisgICAgY29uc3QgTm9kZSog
Y3VycmVudCA9IGJhc2VOb2RlOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKEVs
ZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGN1cnJl
bnQpKSB7CisgICAgICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAgICAg
ICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5pbnNlcnRpb25Q
b2ludEZvcihwcm9qZWN0ZWROb2RlKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNl
cnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGN1cnJlbnQp
KSB7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBwYXJlbnQt
PmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCktPmFzc2lnbmVkVG8oKSA6IDAp
IHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAg
ICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBicmVhazsKICAgICB9CisKICAg
ICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgY29uc3QgSW5zZXJ0
aW9uUG9pbnQqIHJlc29sdmVTaGFkb3dQcm9qZWN0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBub2RlLT5wYXJlbnROb2RlKCkgJiYgbm9kZS0+cGFy
ZW50Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9vdChub2RlLT5wYXJlbnROb2Rl
KCkpIDogMCkgeworICAgICAgICBpZiAocm9vdC0+YXNzaWduZWRUbygpKQorICAgICAgICAgICAg
cmV0dXJuIHJlc29sdmVTaGFkb3dQcm9qZWN0aW9uKHJvb3QtPmFzc2lnbmVkVG8oKSk7CisgICAg
fQorCisgICAgaWYgKGlzSFRNTFNoYWRvd0VsZW1lbnQobm9kZSkpCisgICAgICAgIHJldHVybiB0
b0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpOworCisgICAgcmV0dXJuIDA7Cit9CisKIGlubGluZSB2
b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWlsczo6ZGlk
VHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpCiB7
CiAgICAgaWYgKCFtX2luc2VydGlvblBvaW50KQpAQCAtMjA2LDcgKzIzNCw3IEBAIE5vZGUqIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Q
b2ludChjb25zdCBOb2RlCiAgICAgRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJl
bnQobm9kZSk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxp
bmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7Ci0gICAgSW5zZXJ0aW9uUG9pbnQqIGlu
c2VydGlvblBvaW50ID0gcmVzb2x2ZVJlcHJvamVjdGlvbihub2RlKTsKKyAgICBJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUsIG5vZGUpOwog
ICAgIGlmICghaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJ
bkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7CiAKQEAgLTI3NCw3ICszMDIsNyBAQCBOb2Rl
KiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqIG5v
ZGUsIFBhcmVudFRyYXZlcnNhbAogICAgIH0KICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93
ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24obm9kZSkpIHsKICAgICAgICAgc2hhZG93
LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rpb24obm9kZSkpIHsKKyAgICAgICAgaWYgKElu
c2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rpb24obm9kZSwg
bm9kZSkpIHsKICAgICAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgICAgIGRldGFp
bHMtPmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOwogICAgICAgICAg
ICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KGluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKQEAgLTI4
NCw2ICszMTIsMTAgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBh
cmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJzYWwKICAgICAgICAgaWYgKGRldGFp
bHMpCiAgICAgICAgICAgICBkZXRhaWxzLT5jaGlsZFdhc091dE9mQ29tcG9zaXRpb24oKTsKICAg
ICB9CisKKyAgICBpZiAoY29uc3QgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVz
b2x2ZVNoYWRvd1Byb2plY3Rpb24obm9kZSkpCisgICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVu
dEluQ3VycmVudFRyZWUoaW5zZXJ0aW9uUG9pbnQsIGRldGFpbHMpOworCiAgICAgcmV0dXJuIHRy
YXZlcnNlUGFyZW50SW5DdXJyZW50VHJlZShub2RlLCBkZXRhaWxzKTsKIH0KIApAQCAtMzEwLDcg
KzM0MiwyMiBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50
QmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QoY29ucwogICAgIGlmIChJbnNlcnRpb25Qb2lu
dCogYXNzaWduZWRJbnNlcnRpb25Qb2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKSkgewog
ICAgICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGRldGFpbHMtPmRpZFRyYXZlcnNlU2hh
ZG93Um9vdChzaGFkb3dSb290KTsKLSAgICAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KGFzc2ln
bmVkSW5zZXJ0aW9uUG9pbnQsIGRldGFpbHMpOworICAgICAgICBOb2RlKiBwYXJlbnQgPSB0cmF2
ZXJzZVBhcmVudEluQ3VycmVudFRyZWUoYXNzaWduZWRJbnNlcnRpb25Qb2ludCwgZGV0YWlscyk7
CisKKyAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHBhcmVudC0+aXNFbGVtZW50
Tm9kZSgpID8gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvdygpIDogMCkgeworICAgICAgICAgICAg
c2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG1fbm9kZSwgYXNzaWdu
ZWRJbnNlcnRpb25Qb2ludCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGV0YWlscykKKyAgICAg
ICAgICAgICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChpbnNlcnRp
b25Qb2ludCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KGluc2VydGlv
blBvaW50LCBkZXRhaWxzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIG5v
ZGUgaXMgYSBub24tZGlzdHJpYnV0ZWQgbGlnaHQgY2hpbGQgb3Igb2xkZXIgc2hhZG93J3MgY2hp
bGQuCisgICAgICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgICAgICBkZXRhaWxzLT5j
aGlsZFdhc091dE9mQ29tcG9zaXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBw
YXJlbnQ7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0zNjgsNiArNDE1LDE4IEBAIHZvaWQg
QW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkKIHsKICAgICBBU1NFUlQobV9ub2RlKTsKICAg
ICBBU1NFUlQobV9kaXN0cmlidXRlZE5vZGUpOworCisjaWYgMAorICAgIGlmIChtX25vZGUtPnBh
cmVudE5vZGUoKSAmJiBtX25vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKKyAg
ICAgICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChtX25vZGUt
PnBhcmVudE5vZGUoKSk7CisgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQgPSBzaGFkb3dSb290LT5hc3NpZ25lZFRvKCkpIHsKKyAgICAgICAgICAgIG1fbm9kZSA9IGlu
c2VydGlvblBvaW50OworICAgICAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSB0
cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAg
ICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobV9ub2RlKSkgewog
ICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93LT5pbnNl
cnRpb25Qb2ludEZvcihtX2Rpc3RyaWJ1dGVkTm9kZSkpIHsKICAgICAgICAgICAgIG1fbm9kZSA9
IGluc2VydGlvblBvaW50OwpAQCAtMzc3LDcgKzQzNiw4IEBAIHZvaWQgQW5jZXN0b3JDaGFpbldh
bGtlcjo6cGFyZW50KCkKICAgICB9CiAgICAgaWYgKCFtX25vZGUtPmlzU2hhZG93Um9vdCgpKSB7
CiAgICAgICAgIG1fbm9kZSA9IG1fbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICBtX2Rpc3Ry
aWJ1dGVkTm9kZSA9IG1fbm9kZTsKKyAgICAgICAgaWYgKCEobV9ub2RlICYmIG1fbm9kZS0+aXNT
aGFkb3dSb290KCkgJiYgdG9TaGFkb3dSb290KG1fbm9kZSktPmFzc2lnbmVkVG8oKSkpCisgICAg
ICAgICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9kZTsKICAgICAgICAgbV9pc0Nyb3NzaW5n
SW5zZXJ0aW9uUG9pbnQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCBhZWI1YjViNDc1YjIxOWJjNTdkYzg1ZWYyZTdi
ODMyYWVlODg5M2ZjLi5iYmUxYWFlMDlhYmUxZDkzM2I3NDlmYzc0ZDc0OWE0OGVkNzIzMDgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC0xMzQsMTQgKzEzNCwxNSBAQCB2
b2lkIEVsZW1lbnRTaGFkb3c6OmRldGFjaCgpCiAKIEluc2VydGlvblBvaW50KiBFbGVtZW50U2hh
ZG93OjppbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogeworI2lmIDAK
ICAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5wYXJlbnROb2RlKCkpOwotCiAgICAgaWYgKG5vZGUt
PnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCA9IHRvU2hhZG93Um9vdChub2RlLT5wYXJlbnROb2RlKCkpLT5h
c3NpZ25lZFRvKCkpCiAgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiAKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gZGlzdHJpYnV0b3IoKS5m
aW5kSW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAppbmRleCA4M2RmNWUwYzA1MWU1MzdkOGVm
ZGYzODczMmQ5MTc2Mzk3NmYzNWUxLi5kMmM0MjI3MTdkZGRkMDAyNWM4ODE0ODE2ODRiN2VlMGRj
NDBmYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0
cmlidXRvci5jcHAKQEAgLTM2LDYgKzM2LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RhdGljIGlubGluZSBib29sIGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKEhUTUxTaGFkb3dF
bGVtZW50KiBzaGFkb3cpCit7CisgICAgVHJlZVNjb3BlKiBzY29wZSA9IHNoYWRvdy0+dHJlZVNj
b3BlKCk7CisgICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAg
ICAgcmV0dXJuIHRvU2hhZG93Um9vdChzY29wZS0+cm9vdE5vZGUoKSktPmlzT2xkZXN0KCk7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIENvbnRlbnREaXN0cmlidXRvcjo6Q29udGVudERpc3Ry
aWJ1dG9yKCkKICAgICA6IG1fdmFsaWRpdHkoVW5kZXRlcm1pbmVkKQogewpAQCAtNTAsMzUgKzU5
LDUzIEBAIEluc2VydGlvblBvaW50KiBDb250ZW50RGlzdHJpYnV0b3I6OmZpbmRJbnNlcnRpb25Q
b2ludEZvcihjb25zdCBOb2RlKiBrZXkpIGNvbnN0CiAgICAgcmV0dXJuIG1fbm9kZVRvSW5zZXJ0
aW9uUG9pbnQuZ2V0KGtleSk7CiB9CiAKLXZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmli
dXRlKEVsZW1lbnQqIGhvc3QpCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6cG9wdWxhdGUoTm9k
ZSogbm9kZSwgQ29udGVudERpc3RyaWJ1dGlvbiYgcG9vbCkKIHsKLSAgICBBU1NFUlQobmVlZHNE
aXN0cmlidXRpb24oKSk7Ci0gICAgQVNTRVJUKG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuaXNFbXB0
eSgpKTsKLQotICAgIG1fdmFsaWRpdHkgPSBWYWxpZDsKKyAgICBpZiAoIWlzSW5zZXJ0aW9uUG9p
bnQobm9kZSkpIHsKKyAgICAgICAgcG9vbC5hcHBlbmQobm9kZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAKLSAgICBDb250ZW50RGlzdHJpYnV0aW9uIHBvb2w7Ci0gICAgZm9yIChOb2RlKiBu
b2RlID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmco
KSkgewotICAgICAgICBpZiAoIWlzSFRNTENvbnRlbnRFbGVtZW50KG5vZGUpKSB7Ci0gICAgICAg
ICAgICBwb29sLmFwcGVuZChub2RlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGlmIChp
c0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpICYmICFkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbih0
b0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpKSkgeworICAgICAgICBIVE1MU2hhZG93RWxlbWVudCog
c2hhZG93ID0gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKKyAgICAgICAgU2hhZG93Um9vdCog
b2xkZXIgPSBzaGFkb3ctPnNoYWRvd1Jvb3QoKS0+b2xkZXJTaGFkb3dSb290KCk7CisgICAgICAg
IGlmIChvbGRlci0+YXNzaWduZWRUbygpID09IHNoYWRvdykgeworICAgICAgICAgICAgZm9yIChO
b2RlKiBjaGlsZCA9IG9sZGVyLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIHBvcHVsYXRlKGNoaWxkLCBwb29sKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoTm9kZSogZmFsbGJhY2tOb2RlID0gc2hh
ZG93LT5maXJzdENoaWxkKCk7IGZhbGxiYWNrTm9kZTsgZmFsbGJhY2tOb2RlID0gZmFsbGJhY2tO
b2RlLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIHBvb2wuYXBwZW5kKGZhbGxiYWNr
Tm9kZSk7CiAgICAgICAgIH0KLQorICAgIH0gZWxzZSB7CiAgICAgICAgIEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSk7CiAgICAgICAgIGlmIChp
bnNlcnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnQtPnNpemUoKTsgKytpKQotICAgICAgICAgICAg
ICAgIHBvb2wuYXBwZW5kKGluc2VydGlvblBvaW50LT5hdChpKSk7CisgICAgICAgICAgICAgICAg
cG9wdWxhdGUoaW5zZXJ0aW9uUG9pbnQtPmF0KGkpLCBwb29sKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGZvciAoTm9kZSogZmFsbGJhY2tOb2RlID0gaW5zZXJ0aW9uUG9pbnQtPmZp
cnN0Q2hpbGQoKTsgZmFsbGJhY2tOb2RlOyBmYWxsYmFja05vZGUgPSBmYWxsYmFja05vZGUtPm5l
eHRTaWJsaW5nKCkpCiAgICAgICAgICAgICAgICAgcG9vbC5hcHBlbmQoZmFsbGJhY2tOb2RlKTsK
ICAgICAgICAgfQogICAgIH0KK30KKwordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1
dGUoRWxlbWVudCogaG9zdCkKK3sKKyAgICBBU1NFUlQobmVlZHNEaXN0cmlidXRpb24oKSk7Cisg
ICAgQVNTRVJUKG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuaXNFbXB0eSgpKTsKKworICAgIG1fdmFs
aWRpdHkgPSBWYWxpZDsKKworICAgIENvbnRlbnREaXN0cmlidXRpb24gcG9vbDsKKyAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBob3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0
U2libGluZygpKQorICAgICAgICBwb3B1bGF0ZShub2RlLCBwb29sKTsKIAogICAgIFZlY3Rvcjxi
b29sPiBkaXN0cmlidXRlZChwb29sLnNpemUoKSk7CiAgICAgZGlzdHJpYnV0ZWQuZmlsbChmYWxz
ZSk7CiAKLSAgICBIVE1MU2hhZG93RWxlbWVudCogZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Q
b2ludEluT2xkZXN0U2hhZG93Um9vdCA9IDA7CisgICAgVmVjdG9yPEhUTUxTaGFkb3dFbGVtZW50
KiwgOD4gYWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRzOwogICAgIGZvciAoU2hhZG93Um9vdCog
cm9vdCA9IGhvc3QtPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xk
ZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAgSFRNTFNoYWRvd0VsZW1lbnQqIGZpcnN0QWN0aXZl
U2hhZG93SW5zZXJ0aW9uUG9pbnQgPSAwOworCiAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHJv
b3Q7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7CiAgICAgICAg
ICAgICBpZiAoIWlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CkBAIC04NywyNSArMTE0LDMxIEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmli
dXRlKEVsZW1lbnQqIGhvc3QpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgIGlmIChpc0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcm9v
dC0+b2xkZXJTaGFkb3dSb290KCktPmFzc2lnbmVkVG8oKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZGlzdHJpYnV0ZU5vZGVDaGlsZHJlblRvKHBvaW50LCByb290LT5vbGRlclNoYWRvd1Jv
b3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+
c2V0QXNzaWduZWRUbyhwb2ludCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCFmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRlc3RT
aGFkb3dSb290KQotICAgICAgICAgICAgICAgICAgICBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50SW5PbGRlc3RTaGFkb3dSb290ID0gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQpCisgICAg
ICAgICAgICAgICAgICAgIGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQgPSB0b0hUTUxT
aGFkb3dFbGVtZW50KG5vZGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKHBvaW50LCBwb29sLCBkaXN0cmlidXRlZCk7CiAgICAg
ICAgICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IG5vZGUtPnBhcmVudE5vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KG5vZGUtPnBhcmVudE5vZGUoKSktPnNoYWRv
dygpIDogMCkKICAgICAgICAgICAgICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0
aW9uKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBpZiAoZmlyc3RBY3Rp
dmVTaGFkb3dJbnNlcnRpb25Qb2ludCkKKyAgICAgICAgICAgIGFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50cy5hcHBlbmQoZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCk7CiAgICAgfQog
Ci0gICAgaWYgKGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jv
b3QpIHsKLSAgICAgICAgZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhmaXJzdEFjdGl2ZVNoYWRvd0lu
c2VydGlvblBvaW50SW5PbGRlc3RTaGFkb3dSb290LCBwb29sLCBkaXN0cmlidXRlZCk7Ci0gICAg
ICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlv
blBvaW50SW5PbGRlc3RTaGFkb3dSb290LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/
IHRvRWxlbWVudChmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRlc3RTaGFkb3dS
b290LT5wYXJlbnROb2RlKCkpLT5zaGFkb3coKSA6IDApCi0gICAgICAgICAgICBzaGFkb3ctPmlu
dmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyAgICBmb3IgKHNpemVfdCBpID0gYWN0aXZlU2hhZG93
SW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgaSA+IDA7IC0taSkgeworICAgICAgICBIVE1MU2hhZG93
RWxlbWVudCogc2hhZG93RWxlbWVudCA9IGFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50c1tpIC0g
MV07CisgICAgICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dFbGVtZW50LT5zaGFkb3dSb290
KCk7CisgICAgICAgIEFTU0VSVChyb290KTsKKyAgICAgICAgaWYgKHJvb3QtPm9sZGVyU2hhZG93
Um9vdCgpKSB7CisgICAgICAgICAgICBkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8oc2hhZG93RWxl
bWVudCwgcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpOworICAgICAgICAgICAgcm9vdC0+b2xkZXJT
aGFkb3dSb290KCktPnNldEFzc2lnbmVkVG8oc2hhZG93RWxlbWVudCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKHNoYWRvd0VsZW1lbnQsIHBv
b2wsIGRpc3RyaWJ1dGVkKTsKKyAgICAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cg
PSBzaGFkb3dFbGVtZW50LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVu
dChzaGFkb3dFbGVtZW50LT5wYXJlbnROb2RlKCkpLT5zaGFkb3coKSA6IDApCisgICAgICAgICAg
ICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgIH0KICAgICB9
CiB9CiAKQEAgLTE2Miw4ICsxOTUsMzEgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGVOb2RlQ2hpbGRyZW5UbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQKIHsKICAg
ICBDb250ZW50RGlzdHJpYnV0aW9uIGRpc3RyaWJ1dGlvbjsKICAgICBmb3IgKE5vZGUqIG5vZGUg
PSBjb250YWluZXJOb2RlLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpKSB7CisjaWYgMQorICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSAmJiB0
b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICBJbnNlcnRp
b25Qb2ludCogaW5uZXJJbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSk7Cisg
ICAgICAgICAgICBpZiAoaW5uZXJJbnNlcnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsK
KyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlubmVySW5zZXJ0aW9uUG9p
bnQtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi5hcHBl
bmQoaW5uZXJJbnNlcnRpb25Qb2ludC0+YXQoaSkpOworICAgICAgICAgICAgICAgICAgICBpZiAo
IW1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuY29udGFpbnMoaW5uZXJJbnNlcnRpb25Qb2ludC0+YXQo
aSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5hZGQo
aW5uZXJJbnNlcnRpb25Qb2ludC0+YXQoaSksIGluc2VydGlvblBvaW50KTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZvciAoTm9kZSog
Y2hpbGQgPSBpbm5lckluc2VydGlvblBvaW50LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlv
bi5hcHBlbmQoY2hpbGQpOworICAgICAgICAgICAgICAgICAgICBtX25vZGVUb0luc2VydGlvblBv
aW50LmFkZChjaGlsZCwgaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGlzdHJpYnV0aW9uLmFw
cGVuZChub2RlKTsKKyAgICAgICAgICAgIGlmICghbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5jb250
YWlucyhub2RlKSkKKyAgICAgICAgICAgICAgICBtX25vZGVUb0luc2VydGlvblBvaW50LmFkZChu
b2RlLCBpbnNlcnRpb25Qb2ludCk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIGRpc3RyaWJ1
dGlvbi5hcHBlbmQobm9kZSk7CiAgICAgICAgIG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuYWRkKG5v
ZGUsIGluc2VydGlvblBvaW50KTsKKyNlbmRpZgogICAgIH0KIAogICAgIGluc2VydGlvblBvaW50
LT5zZXREaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXggYmVlOTJhNTZhYzE0MGFmNjU1ZjA1
ZTgzOWNiYTY2MDNjNTQyZDI2Yy4uMGQ4ZDAwODJlNmU5MjQxMGU0M2Y2MDYwY2UzNmYxNmU2OGUw
NDZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3Ry
aWJ1dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZURpc3Ry
aWJ1dGlvbkluKENvbnRlbnREaXN0cmlidXRpb24qKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHBv
cHVsYXRlKE5vZGUqLCBDb250ZW50RGlzdHJpYnV0aW9uJik7CisKICAgICBIYXNoTWFwPGNvbnN0
IE5vZGUqLCBJbnNlcnRpb25Qb2ludCo+IG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQ7CiAgICAgdW5z
aWduZWQgbV92YWxpZGl0eSA6IDI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50LmgKaW5kZXggMzZiZGQ4OTVhYzJkZWZiM2E0MDdmNDAxZGQ4OTIz
ZTVhN2Q5ZjkwNC4uYmFjMmI5MmI1Nzk2MWIyM2RmY2MyZTMyZTFmNTViMmQ1N2UzMjY0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCkBAIC02
Nyw2ICs2NywxMiBAQCBpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIHRvSFRNTFNoYWRvd0VsZW1l
bnQoTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFNoYWRvd0VsZW1lbnQq
Pihub2RlKTsKIH0KIAoraW5saW5lIGNvbnN0IEhUTUxTaGFkb3dFbGVtZW50KiB0b0hUTUxTaGFk
b3dFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IGlzSFRN
TFNoYWRvd0VsZW1lbnQobm9kZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBIVE1M
U2hhZG93RWxlbWVudCo+KG5vZGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBIVE1MU2hhZG93RWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaAppbmRleCA0MzA0MTVmN2I2MjZjMjk4OWJhYTM3NmVjMTBmNDRmZjU3
Yjk5OGFmLi4yMzNkZWNiN2FlZDUzNDMwMTI0OTFhOTFhMzU5MDhkYzQyZDM3NGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTExOSwxNSArMTE5
LDI1IEBAIGlubGluZSBib29sIGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9k
ZSkKICAgICByZXR1cm4gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNTaGFkb3dCb3VuZGFyeSgp
OwogfQogCi1pbmxpbmUgRWxlbWVudCogcGFyZW50RWxlbWVudEZvckRpc3RyaWJ1dGlvbihjb25z
dCBOb2RlKiBub2RlKQoraW5saW5lIE5vZGUqIHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24oY29u
c3QgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7Ci0gICAgaWYgKEVsZW1lbnQqIHBh
cmVudCA9IG5vZGUtPnBhcmVudEVsZW1lbnQoKSkgeworICAgIGlmIChOb2RlKiBwYXJlbnQgPSBu
b2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQocGFyZW50
KSAmJiB0b0luc2VydGlvblBvaW50KHBhcmVudCktPnNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMo
KSkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPnBhcmVudEVsZW1lbnQoKTsKLQorICAgICAg
ICAgICAgcmV0dXJuIHBhcmVudC0+cGFyZW50Tm9kZSgpOworICAgICAgICAKICAgICAgICAgcmV0
dXJuIHBhcmVudDsKICAgICB9CisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBFbGVt
ZW50KiBwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24obm9kZSkpIHsK
KyAgICAgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJu
IHRvRWxlbWVudChwYXJlbnQpOworICAgIH0KIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtl
ci1zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjczZmYyYTE3YTc3MjEwMjY5M2MyYTQ0MWMxYjU1MTFm
NDg4OWM4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9j
b21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMDUgQEAKK1Rlc3RzIGZvciBDb21wb3NlZCBTaGFkb3cgRE9NIFRyZWUg
VHJhdmVyc2FsIEFQSXMuIENhbiBvbmx5IHJ1biB3aXRoaW4gRFJUCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitNdWx0aXBsZSBzaGFkb3cgcm9vdCB3aXRob3V0IHNoYWRvdyBlbGVt
ZW50CitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YworCitUcmF2
ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWMKK1RyYXZlcnNlIGluIGJhY2t3
YXJkLgorRElWCSBpZD1jCitESVYJIGlkPWEKKworTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aCBz
aGFkb3cgZWxlbWVudAorQ29tcG9zZWQgU2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlk
PWMKKwlESVYJIGlkPWIKKwlESVYJIGlkPWUKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkg
aWQ9YQorRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9ZQorVHJhdmVyc2UgaW4gYmFja3dh
cmQuCitESVYJIGlkPWUKK0RJVgkgaWQ9YgorRElWCSBpZD1jCitESVYJIGlkPWEKKworTXVsdGlw
bGUgc2hhZG93IHJvb3Qgd2l0aCBzaGFkb3cgZWxlbWVudCwgY2FzZSAyCitDb21wb3NlZCBTaGFk
b3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9ZgorCURJVgkgaWQ9YworCURJVgkgaWQ9Ygor
CURJVgkgaWQ9ZQorCURJVgkgaWQ9aAorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1h
CitESVYJIGlkPWYKK0RJVgkgaWQ9YworRElWCSBpZD1iCitESVYJIGlkPWUKK0RJVgkgaWQ9aAor
VHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWgKK0RJVgkgaWQ9ZQorRElWCSBpZD1iCitE
SVYJIGlkPWMKK0RJVgkgaWQ9ZgorRElWCSBpZD1hCisKK3NoYWRvdyByZXByb2plY3Rpb24KK0Nv
bXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1iCisJCURJVgkgaWQ9ZAor
CQlESVYJIGlkPWEtY2hpbGQKKwkJRElWCSBpZD1mCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitE
SVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1kCitESVYJIGlkPWEtY2hpbGQKK0RJVgkgaWQ9
ZgorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWYKK0RJVgkgaWQ9YS1jaGlsZAorRElW
CSBpZD1kCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitzaGFkb3cgcmVwcm9qZWN0aW9uLCB0YWtl
IDIKK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1kCisJCURJVgkg
aWQ9ZgorCQlESVYJIGlkPWIKKwkJRElWCSBpZD1oCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitE
SVYJIGlkPWEKK0RJVgkgaWQ9ZAorRElWCSBpZD1mCitESVYJIGlkPWIKK0RJVgkgaWQ9aAorVHJh
dmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWgKK0RJVgkgaWQ9YgorRElWCSBpZD1mCitESVYJ
IGlkPWQKK0RJVgkgaWQ9YQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Nv
bXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFkb3ctcmVwcm9qZWN0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRv
dy1yZXByb2plY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGJjMWJhYTdiMWM0ZTUwNDJjZGM3MGI4
MDBlNzcxMjdlNjk5YjdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFkb3ctcmVwcm9qZWN0aW9uLmh0
bWwKQEAgLTAsMCArMSwxNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rp
dj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgZm9yIENvbXBvc2VkIFNoYWRvdyBET00g
VHJlZSBUcmF2ZXJzYWwgQVBJcy4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQiKTsKKworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlv
biBkdW1wTm9kZShub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuICcobnVs
bCknCisgICAgdmFyIG91dHB1dCA9IG5vZGUubm9kZU5hbWUgKyAiXHQiOworICAgIGlmIChub2Rl
LmlkKQorICAgICAgICBvdXRwdXQgKz0gJyBpZD0nICsgbm9kZS5pZDsKKyAgICBpZiAobm9kZS5j
bGFzc05hbWUpCisgICAgICAgIG91dHB1dCArPSAnIGNsYXNzPScgKyBub2RlLmNsYXNzTmFtZTsK
KyAgICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBkdW1wQ29tcG9zZWRTaGFkb3dUcmVl
KG5vZGUsIGluZGVudCkKK3sKKyAgICBpbmRlbnQgPSBpbmRlbnQgfHwgIiI7CisgICAgdmFyIG91
dHB1dCA9IGluZGVudCArIGR1bXBOb2RlKG5vZGUpICsgIlxuIjsKKyAgICB2YXIgY2hpbGQ7Cisg
ICAgZm9yIChjaGlsZCA9IGludGVybmFscy5maXJzdENoaWxkQnlXYWxrZXIobm9kZSk7IGNoaWxk
OyBjaGlsZCA9IGludGVybmFscy5uZXh0U2libGluZ0J5V2Fsa2VyKGNoaWxkKSkKKyAgICAgICAg
IG91dHB1dCArPSBkdW1wQ29tcG9zZWRTaGFkb3dUcmVlKGNoaWxkLCBpbmRlbnQgKyAiXHQiKTsK
KyAgICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBsYXN0Tm9kZUJ5V2Fsa2VyKHJvb3Qp
Cit7CisgICAgdmFyIGxhc3ROb2RlID0gcm9vdDsKKyAgICB3aGlsZSAoaW50ZXJuYWxzLmxhc3RD
aGlsZEJ5V2Fsa2VyKGxhc3ROb2RlKSkKKyAgICAgICAgbGFzdE5vZGUgPSBpbnRlcm5hbHMubGFz
dENoaWxkQnlXYWxrZXIobGFzdE5vZGUpOworICAgIHJldHVybiBsYXN0Tm9kZTsKK30KKworZnVu
Y3Rpb24gc2hvd0NvbXBvc2VkU2hhZG93VHJlZUJ5VHJhdmVyc2luZ0luRm9yd2FyZChyb290KQor
eworICAgIHZhciBub2RlID0gcm9vdDsKKyAgICB2YXIgbGFzdCA9IGxhc3ROb2RlQnlXYWxrZXIo
cm9vdCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgZGVidWcoZHVtcE5vZGUobm9kZSkp
OworICAgICAgICBpZiAobm9kZSA9PSBsYXN0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IG5vZGUgPSBpbnRlcm5hbHMubmV4dE5vZGVCeVdhbGtlcihub2RlKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHNob3dDb21wb3NlZFNoYWRvd1RyZWVCeVRyYXZlcnNpbmdJbkJhY2t3YXJkKHJvb3Qp
Cit7CisgICAgdmFyIG5vZGUgPSBsYXN0Tm9kZUJ5V2Fsa2VyKHJvb3QpOworICAgIHdoaWxlIChu
b2RlKSB7CisgICAgICAgIGRlYnVnKGR1bXBOb2RlKG5vZGUpKTsKKyAgICAgICAgaWYgKG5vZGUg
PT0gcm9vdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBub2RlID0gaW50ZXJuYWxzLnBy
ZXZpb3VzTm9kZUJ5V2Fsa2VyKG5vZGUpOworICAgIH0KK30KKworZnVuY3Rpb24gc2hvd0NvbXBv
c2VkU2hhZG93VHJlZShub2RlKQoreworICAgIGRlYnVnKCdDb21wb3NlZCBTaGFkb3cgVHJlZTon
KTsKKyAgICBkZWJ1ZyhkdW1wQ29tcG9zZWRTaGFkb3dUcmVlKG5vZGUpKTsKKworICAgIGRlYnVn
KCdUcmF2ZXJzZSBpbiBmb3J3YXJkLicpOworICAgIHNob3dDb21wb3NlZFNoYWRvd1RyZWVCeVRy
YXZlcnNpbmdJbkZvcndhcmQobm9kZSk7CisKKyAgICBkZWJ1ZygnVHJhdmVyc2UgaW4gYmFja3dh
cmQuJyk7CisgICAgc2hvd0NvbXBvc2VkU2hhZG93VHJlZUJ5VHJhdmVyc2luZ0luQmFja3dhcmQo
bm9kZSk7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKK2Z1bmN0aW9uIHNob3dOZXh0Tm9kZShub2Rl
KSB7CisgICAgdmFyIG5leHQgPSBpbnRlcm5hbHMubmV4dE5vZGVCeVdhbGtlcihub2RlKTsKKyAg
ICBkZWJ1ZygnTmV4dCBub2RlIG9mIFsnICsgZHVtcE5vZGUobm9kZSkgKyAnXSBpcyBbJyArIGR1
bXBOb2RlKG5leHQpICsgJ10nKTsKK30KKworZnVuY3Rpb24gdGVzdENvbXBvc2VkU2hhZG93VHJl
ZShub2RlKQoreworICAgIHZhciBzYW5kYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nh
bmRib3gnKTsKKyAgICBzYW5kYm94LmlubmVySFRNTCA9ICcnOworICAgIHNhbmRib3guYXBwZW5k
Q2hpbGQobm9kZSk7CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIHNob3dDb21w
b3NlZFNoYWRvd1RyZWUobm9kZSk7Cit9CisKK2RlYnVnKCdNdWx0aXBsZSBzaGFkb3cgcm9vdCB3
aXRob3V0IHNoYWRvdyBlbGVtZW50Jyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSkpLAorICAgICAgICAgICAgICBjcmVhdGVT
aGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pKSkpOworCitkZWJ1ZygnTXVs
dGlwbGUgc2hhZG93IHJvb3Qgd2l0aCBzaGFkb3cgZWxlbWVudCcpOwordGVzdENvbXBvc2VkU2hh
ZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQn
OiAnZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnZSd9KSkpKTsKKyAgICAgICAgICAgICAgICAgIAorZGVidWcoJ011bHRpcGxlIHNo
YWRvdyByb290IHdpdGggc2hhZG93IGVsZW1lbnQsIGNhc2UgMicpOwordGVzdENvbXBvc2VkU2hh
ZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQn
OiAnZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnZSd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2YnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2cnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2gnfSkpKSk7CisKK2RlYnVnKCdzaGFkb3cg
cmVwcm9qZWN0aW9uJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdhLWNoaWxkJ30pLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdiJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdkJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnZSd9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnZid9KSkpKSkpOworCitpbnRlcm5hbHMuYWRkcmVzcyhkb2N1
bWVudCk7CisKKy8vIGZhaWxpbmcKK2RlYnVnKCdzaGFkb3cgcmVwcm9qZWN0aW9uLCB0YWtlIDIn
KTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2Mn
fSkpLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdkJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnc2hhZG93JywgeydpZCc6ICdlJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdm
J30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnZyd9KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnaCd9KSkpKSkpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ct
dHJlZS13YWxrZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1z
aGFkb3ctdHJlZS13YWxrZXIuaHRtbAppbmRleCAwNmY3YTcxZjJhNGVkNDMwZjZhNDg0MDJhMGI1
MmQ1ZGE0ZjA0OTE5Li4yYmRiYWI2NzNmMGIwYzkxOGYzMmFhMTIwNTVjNGFmNTcyOGJlMTA4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRy
ZWUtd2Fsa2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2Vk
LXNoYWRvdy10cmVlLXdhbGtlci5odG1sCkBAIC0xNjUsNiArMTY1LDcgQEAgdGVzdENvbXBvc2Vk
U2hhZG93VHJlZSgKICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2gnfSks
CiAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdpJ30pKSk7CiAKK2ludGVy
bmFscy5hZGRyZXNzKGRvY3VtZW50KTsKIGRlYnVnKCdUZXN0IGZvciBNdWx0aXBsZSBTaGFkb3dS
b290cy4nKTsKIHRlc3RDb21wb3NlZFNoYWRvd1RyZWUoCiAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2EnfSwKQEAgLTI4NywxOCArMjg4LDYgQEAgdGVzdENvbXBvc2VkU2hhZG93VHJlZSgK
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2NoaWxkLTEnLCAnY2xhc3Mn
OiAnZm9vJ30pLAogICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnbm90LXNl
bGVjdGVkJywgJ2NsYXNzJzogJ2Zvbyd9KSwKICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2NoaWxkLTInLCAnY2xhc3MnOiAnZm9vJ30pKSk7Ci0KLS8qCi1kZWJ1ZygnVGVz
dCBmb3IgbXVsdGlwbGUgc2hhZG93IHJvb3RzIHdpdGggcmVwcm9qZWN0aW9ucy4nKTsKLXRlc3RD
b21wb3NlZFNoYWRvd1RyZWUoCi0gICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKLSAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2NvbnRlbnQnKSksCi0gICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9v
dChjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjY2hpbGQnfSkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycpKSksCi0g
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjaGlsZCd9KSkpOwotKi8KLQog
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tY29tcGxleC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWNvbXBsZXguaHRtbAppbmRleCBiZTIx
MDk5MzRlYjgyNDVjZWEwZTFkMGU2NTU5Y2Y3NDQwODFjNTI4Li41YmUwMzIwOTE5YjFhMmIyMmMw
MDYzMjU4YTdhNzVkNTRmYmJmMWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tY29tcGxleC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0bWwKQEAgLTE0
LDEwICsxNCwxMCBAQAogCiA8c2NyaXB0PgogdmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3QoaG9zdDEpOwotc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3Qy
Ij48Y29udGVudCBzZWxlY3Q9Ii5BIj48L2NvbnRlbnQ+PHNoYWRvdz48L3NoYWRvdz48ZGl2IGNs
YXNzPSIuQSI+QTwvZGl2PjwvZGl2Pic7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBp
ZD0iaG9zdDIiPjxjb250ZW50IHNlbGVjdD0iLkEiPjwvY29udGVudD48c2hhZG93Pjwvc2hhZG93
PjxkaXYgY2xhc3M9IkEiPkE8L2Rpdj48L2Rpdj4nOwogCiB2YXIgc2hhZG93Um9vdDIgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKSk7Ci1z
aGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRpdj48aDI+QTwvaDI+PGNvbnRlbnQgc2VsZWN0PSJk
aXYiPjwvY29udGVudD48aDI+QjwvaDI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nCitzaGFkb3dS
b290Mi5pbm5lckhUTUwgPSAnPGRpdj48aDI+QTwvaDI+PGNvbnRlbnQgc2VsZWN0PSIuQSI+PC9j
b250ZW50PjxoMj5CPC9oMj48c2hhZG93Pjwvc2hhZG93PjwvZGl2PicKIDwvc2NyaXB0PgogCiA8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1y
ZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sCmluZGV4
IDkwZGQ1NmE3NTg0ZDY1MzgyN2U0NTk0MjA1ZTIyYTJmZjUzY2U3MDUuLjQ4YzUyYjIwY2YwNWU0
Y2MxMDhkMmNhM2UzYjVhNWU4ODAzY2UyNWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxs
YmFjay1leHBlY3RlZC5odG1sCkBAIC04LDYgKzgsNyBAQAogPGRpdiBpZD0iaG9zdDEiPgogICAg
IDxkaXYgaWQ9Imhvc3QyIj4KICAgICAgICAgPGRpdj5jb250ZW50IGZhbGxiYWNrIGVsZW1lbnQ8
L2Rpdj4KKyAgICAgICAgPGRpdj5zaGFkb3cgZmFsbGJhY2sgZWxlbWVudDwvZGl2PgogICAgICAg
ICA8ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PgogICAgIDwvZGl2PgogPC9kaXY+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2pl
Y3Rpb24tZmFsbGJhY2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stcmVwcm9qZWN0aW9u
LWV4cGVjdGVkLmh0bWwKaW5kZXggMTY2MWY1MGE4ZTBjMjU1MjQzZDJiOWIwMDdiNmNmNGE4Y2Jk
MmIzZi4uMjM4ODAwN2ZhYTNlM2ZmMTFhYWFiYzIxNmYyNTkxMjExNDZiM2E4NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxi
YWNrLXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2plY3Rpb24tZXhwZWN0
ZWQuaHRtbApAQCAtOSw2ICs5LDcgQEAKICAgICA8ZGl2IGlkPSJob3N0MiI+CiAgICAgICAgIDxk
aXYgaWQ9Imhvc3QzIj4KICAgICAgICAgICAgIDxkaXY+Y29udGVudCBmYWxsYmFjayBlbGVtZW50
PC9kaXY+CisgICAgICAgICAgICA8ZGl2PnNoYWRvdyBmYWxsYmFjayBlbGVtZW50PC9kaXY+CiAg
ICAgICAgICAgICA8ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PgogICAgICAgICAg
ICAgPGRpdj5jb250ZW50IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KICAgICAgICAgICAgIDxkaXY+
VGhpcyBhbHNvIHNob3VsZCBiZSBzZWxlY3RlZC48L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWNsaWNrLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWNsaWNr
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjJhNjI2ZjFjMTkxYWJiODNjYzdjNTU4ZGYzYzFm
MWEzNjczMjVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1yZXByb2plY3Rpb24tY2xpY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
VGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgY2xpY2tpbmcgYSBzaGFkb3cgcmVwcm9qZWN0ZWQgZWxl
bWVudCBkb2VzIG5vdCBjYXVzZSBhIGNyYXNoLgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tY2xpY2suaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNjkxODYxMjg3YzdiZWNlMDNmZTVmMTJkNjZmMzFhYjNmNWU4MjNmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2pl
Y3Rpb24tY2xpY2suaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxwPlRo
aXMgdGVzdCBjb25maXJtcyB0aGF0IGNsaWNraW5nIGEgc2hhZG93IHJlcHJvamVjdGVkIGVsZW1l
bnQgZG9lcyBub3QgY2F1c2UgYSBjcmFzaC48L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+Cisg
ICAgPGRpdiBpZD0iaG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsK
K3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPk9sZGVzdCBTaGFkb3dS
b290IENoaWxkPC9kaXY+JzsKKwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoaG9zdDEpOworc2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hh
ZG93Pjwvc2hhZG93Pjxjb250ZW50PjwvY29udGVudD48ZGl2PllvdW5nZXN0IFNoYWRvd1Jvb3Qg
Q2hpbGQ8L2Rpdj48L2Rpdj4nOworCit2YXIgaG9zdDMgPSBzaGFkb3dSb290Mi5nZXRFbGVtZW50
QnlJZCgnaG9zdDMnKTsKK3ZhciBzaGFkb3dSb290MyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhv
c3QzKTsKK3NoYWRvd1Jvb3QzLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9ImRpdiI+PC9j
b250ZW50Pic7CisKK2NvbnRhaW5lci5vZmZzZXRMZWZ0OworCit2YXIgdGFyZ2V0ID0gc2hhZG93
Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldC5vZmZzZXRMZWZ0ICsgMTAsIHRh
cmdldC5vZmZzZXRUb3AgKyAyKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAiUEFTUyI7
Cis8L3NjcmlwdD4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzQ1NGIwNGE1NmIyZmIyMGQxZmE3N2M3YmIwZTI0YTFhMTJmZmQ3YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKwor
PGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgaWQ9Imhvc3QzIj4KKyAgICAgICAgPGRpdj5PbGRl
c3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PgorICAgICAgICA8ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj4K
KyAgICAgICAgPGRpdj5Zb3VuZ2VzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgPC9kaXY+
Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzU3ZDUwMGYyZWU4MzQ4ZjQ3ODg0MmM0YjI2ODU0Yzc1Y2Y3NjI5
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgaWQ9Imhv
c3Q0Ij4KKyAgICAgICA8ZGl2Pk9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgICAg
PGRpdj5Ib3N0IENoaWxkPC9kaXY+CisgICAgICAgPGRpdj5TaGFkb3cgRmFsbGJhY2sgRWxlbWVu
dCAoMSk8L2Rpdj4KKyAgICAgICA8ZGl2PlNoYWRvdyBGYWxsYmFjayBFbGVtZW50ICgyKTwvZGl2
PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFhNDY1NTYyNzdiM2Y5Y2ZkZGE3MDFlNGU1MzMxYzUzY2IwNGI3NWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJv
amVjdGlvbi1mYWxsYmFjay5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKwor
PGRpdiBpZD0iaG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2PgorCis8c2NyaXB0Pgor
dmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9v
dDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj5PbGRlc3QgU2hhZG93Um9vdCBDaGlsZDwv
ZGl2Pic7CisKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsK
K3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8c2hhZG93Pjwvc2hhZG93Pjxjb250ZW50PjwvY29u
dGVudD48c2hhZG93PjxkaXY+U2hhZG93IEZhbGxiYWNrIEVsZW1lbnQgKDEpPC9kaXY+PC9zaGFk
b3c+JzsKKwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwor
c2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3Q0Ij48c2hhZG93Pjwvc2hhZG93
PjxzaGFkb3c+PGRpdj5TaGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMik8L2Rpdj48L3NoYWRvdz48
c3Bhbj5Ob3QgcmVuZGVyZWQgKDEpPC9zcGFuPjxzaGFkb3c+PHNwYW4+Tm90IHJlbmRlcmVkICgy
KTwvc3Bhbj48L3NoYWRvdz48L2Rpdj4nOworCit2YXIgaG9zdDQgPSBzaGFkb3dSb290My5nZXRF
bGVtZW50QnlJZCgnaG9zdDQnKTsKK3ZhciBzaGFkb3dSb290NCA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGhvc3Q0KTsKKworc2hhZG93Um9vdDQuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0i
ZGl2Ij48L2NvbnRlbnQ+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVj
dGlvbi1wcm9oaWJpdGVkLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDVjODhkOTlkYjRlMTQxYTBlYWI0OTc0ZDkwODAyM2Y4NmQ3NzMwODguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC1leHBlY3RlZC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLQotPHA+
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhc3NpZ25lZCB0byBhIHNoYWRvdyBlbGVt
ZW50IGFyZSBub3QgZGlzdHJpYnV0ZWQuPC9wPgotCi08ZGl2IGlkPSJob3N0MSI+Ci0gICAgPGRp
diBpZD0iaG9zdDIiPjxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+PC9kaXY+Ci08
L2Rpdj4KLQotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjNDAyNzFhNGFjNWM1MTY4YTMxOTBiNDRhOWMwMTNhNjM0OGU0
M2VkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci0KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgotCi08cD5U
aGlzIHRlc3QgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2hhZG93IGVsZW1l
bnQgYXJlIG5vdCBkaXN0cmlidXRlZC48L3A+Ci0KLTxkaXYgaWQ9Imhvc3QxIj4KLSAgICA8ZGl2
PlRoZXNlIGVsZW1lbnRzPC9kaXY+Ci0gICAgPGRpdj5zaG91bGQgbm90IGJlPC9kaXY+Ci0gICAg
PGRpdj5yZXByb2plY3RlZDwvZGl2PgotPC9kaXY+Ci0KLTxzY3JpcHQ+Ci12YXIgc2hhZG93Um9v
dDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7Ci1zaGFkb3dSb290MS5pbm5lckhUTUwg
PSAnPGRpdiBpZD0iaG9zdDIiPjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKLQotdmFyIHNoYWRv
d1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQo
J2hvc3QyJykpOwotc2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXY+PGNvbnRlbnQgc2VsZWN0
PSJkaXYiPjwvY29udGVudD48ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PjwvZGl2
PicKLTwvc2NyaXB0PgotCi08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDQ1MDgyZWE4MmM3
YjkzZWEwMDBjYjZiNjVhYWQxNTdjMjA0ZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDE5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5
ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QxIj48ZGl2Pkhvc3QgQ2hpbGQ8L2Rp
dj48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+T2xk
ZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0i
aG9zdDMiPjxzaGFkb3c+PC9zaGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxkaXY+WW91bmdlc3Qg
U2hhZG93Um9vdCBDaGlsZDwvZGl2PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3Qy
LmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVj
dD0iZGl2Ij48L2NvbnRlbnQ+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxOWU0OWY5YjQ4NGU5ODlmMDAyNDM4Y2MzYjc2ZmI5
NmJkNTU3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorCis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdiBpZD0iaG9z
dDMiPgorICAgICAgICA8ZGl2PkE8L2Rpdj4KKyAgICAgICAgPGRpdj5CPC9kaXY+CisgICAgICAg
IDxkaXY+QzwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24yLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWY3ZDc3NjIzMzQ3ZmYzNmQ1ODViNmMzMjM5NDVlNjU4ODI1ZDU1NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0
aW9uMi5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9z
dDEiPjxkaXY+QjwvZGl2PjwvZGl2PgorCis8c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxzaGFk
b3c+PC9zaGFkb3c+JzsKKwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
aG9zdDEpOworc2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93
Pjwvc2hhZG93PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRC
eUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9z
dDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxkaXY+QTwvZGl2Pjxjb250ZW50IHNlbGVj
dD0iZGl2Ij48L2NvbnRlbnQ+PGRpdj5DPC9kaXY+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170782</attachid>
            <date>2012-10-25 18:36:11 -0700</date>
            <delta_ts>2012-10-25 19:36:38 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-99228-20121026103444.patch</filename>
            <type>text/plain</type>
            <size>40723</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIwNzlmOWZjYjBlMzdi
MGMyZGQzODY0MTNkNzI0MGY0NWRiNDAwOC4uNTE1Y2E1MDUzZDU5ZGVlOGFkOWM3NjE5ZDlhM2Rj
MjZlYWIyZmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTIzICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIHNoYWRvdyByb290LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
KE9PUFMhKS4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9y
Ojpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAg
ICAgICAoQ29udGVudERpc3RyaWJ1dG9yKToKKwogMjAxMi0xMC0yNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUaWxlZCBsYXllcnMgYXJlIG1pc3Np
bmcgY29udGVudCBvbiB6b29taW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggZTA4MjUyNTU3ZGE4ZDFkZDU5NWY3YzMxNTRkYzYxYTE2NmUyOTUxNy4uN2JjZWY0ODA4MDVh
YjZhYjBmYjdkMGVlMDIwZmY4OWNlM2U2ZDM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtOTY0LDYgKzk2NCw3IEBAIGlubGluZSBib29sIHNob3VsZFJlc2V0U3R5bGVJ
bmhlcml0YW5jZShOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKICAgICBpZiAoIWluc2Vy
dGlvblBvaW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiAwCiAgICAgQVNTRVJUKHBh
cmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24oY29udGV4dC5ub2RlKCkpKTsKICAgICBFbGVtZW50
U2hhZG93KiBzaGFkb3cgPSBwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnRleHQubm9k
ZSgpKS0+c2hhZG93KCk7CiAgICAgQVNTRVJUKHNoYWRvdyk7CkBAIC05NzQsNiArOTc1LDggQEAg
aW5saW5lIGJvb2wgc2hvdWxkUmVzZXRTdHlsZUluaGVyaXRhbmNlKE5vZGVSZW5kZXJpbmdDb250
ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGluc2VydGlvblBvaW50
ID0geW91bmdlckluc2VydGlvblBvaW50OwogICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIGlu
c2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKIH0KIApAQCAtMTU0MCw5ICsx
NTQzLDEwIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9y
RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTCiAgICAgLy8gY29udGVudGVkaXRhYmxl
IGF0dHJpYnV0ZSAoaW1wbGVtZW50ZWQgYnkgLXdlYmtpdC11c2VyLW1vZGlmeSkgc2hvdWxkCiAg
ICAgLy8gYmUgcHJvcGFnYXRlZCBmcm9tIHNoYWRvdyBob3N0IHRvIGRpc3RyaWJ1dGVkIG5vZGUu
CiAgICAgaWYgKG1fZGlzdHJpYnV0ZWRUb0luc2VydGlvblBvaW50KSB7Ci0gICAgICAgIEFTU0VS
VChlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpOwotICAgICAgICBpZiAoUmVuZGVyU3R5bGUqIHN0
eWxlT2ZTaGFkb3dIb3N0ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgp
KQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VXNlck1vZGlmeShzdHlsZU9mU2hhZG93SG9zdC0+
dXNlck1vZGlmeSgpKTsKKyAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IGVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBzdHlsZU9mU2hh
ZG93SG9zdCA9IHBhcmVudC0+cmVuZGVyU3R5bGUoKSkKKyAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRVc2VyTW9kaWZ5KHN0eWxlT2ZTaGFkb3dIb3N0LT51c2VyTW9kaWZ5KCkpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYgKGVsZW1lbnQtPmlzTGluaygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCmluZGV4IGU4ODIzMGU2NGFh
NzBhMmM0NzQwZjdmOTFjMzE4NDdlMGMzOTVmZTEuLmQyNTUxNGZiMDgwNmFkY2Y1ZGJiMmYxYmE2
YWFkZGEyMDlmMzliYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBv
aW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYzLDIxICs2NCw2NiBAQCBzdGF0aWMg
aW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0
IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIDA7ICAgIAogfQogCi1zdGF0aWMgaW5saW5lIEluc2Vy
dGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCitzdGF0aWMg
aW5saW5lIGJvb2wgbm9kZUNhbkJlRGlzdHJpYnV0ZWQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQobm9kZSk7CisgICAgTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1
dGlvbihub2RlKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBwYXJlbnQtPmlzU2hhZG93Um9vdCgpID8g
dG9TaGFkb3dSb290KHBhcmVudCkgOiAwKQorICAgICAgICByZXR1cm4gc2hhZG93Um9vdC0+YXNz
aWduZWRUbygpOworCisgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVu
dChwYXJlbnQpLT5zaGFkb3coKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2pl
Y3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSwgY29uc3QgTm9kZSogYmFzZU5vZGUpCiB7
CiAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsKLSAgICBjb25zdCBOb2Rl
KiBjdXJyZW50ID0gbm9kZTsKLSAgICB3aGlsZSAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAgICAgICAgc2hhZG93LT5l
bnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRl
ZFRvID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihub2RlKSkgewotICAgICAgICAgICAgY3Vy
cmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVk
VG87Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnJlYWs7CisgICAgY29uc3QgTm9kZSog
Y3VycmVudCA9IGJhc2VOb2RlOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKEVs
ZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGN1cnJl
bnQpKSB7CisgICAgICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1dGlvbigpOworICAgICAg
ICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5pbnNlcnRpb25Q
b2ludEZvcihwcm9qZWN0ZWROb2RlKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNl
cnRlZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGN1cnJlbnQp
KSB7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBwYXJlbnQt
PmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCktPmFzc2lnbmVkVG8oKSA6IDAp
IHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAg
ICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBicmVhazsKICAgICB9CisKICAg
ICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKKyNpZiAwCitzdGF0aWMgaW5saW5lIGNvbnN0
IEluc2VydGlvblBvaW50KiByZXNvbHZlU2hhZG93UHJvamVjdGlvbihjb25zdCBOb2RlKiBub2Rl
KQoreworICAgIGlmIChTaGFkb3dSb290KiByb290ID0gbm9kZS0+cGFyZW50Tm9kZSgpICYmIG5v
ZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3Qobm9kZS0+cGFy
ZW50Tm9kZSgpKSA6IDApIHsKKyAgICAgICAgaWYgKHJvb3QtPmFzc2lnbmVkVG8oKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXNvbHZlU2hhZG93UHJvamVjdGlvbihyb290LT5hc3NpZ25lZFRvKCkp
OworICAgIH0KKworICAgIGlmIChpc0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpKQorICAgICAgICBy
ZXR1cm4gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKKworICAgIHJldHVybiAwOworfQorI2Vu
ZGlmCisKIGlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVy
c2FsRGV0YWlsczo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQpCiB7CiAgICAgaWYgKCFtX2luc2VydGlvblBvaW50KQpAQCAtMjAzLDEwICsy
NDksMTcgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZURpc3RyaWJ1
dGVkTm9kZXMoY29uc3QgTm9kZSogbm9kZSwgY29uc3QKIE5vZGUqIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2Rl
KiBub2RlLCBUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChub2Rl
KTsKKworI2lmIDEKKyAgICBpZiAoIW5vZGVDYW5CZURpc3RyaWJ1dGVkKG5vZGUpKQorICAgICAg
ICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwor
I2Vsc2UKICAgICBFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudChub2RlKTsK
ICAgICBpZiAoIXNoYWRvdykKICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVu
dFRyZWUobm9kZSwgZGlyZWN0aW9uKTsKLSAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUpOworI2VuZGlmCisKKyAgICBJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUsIG5vZGUpOwog
ICAgIGlmICghaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJ
bkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7CiAKQEAgLTI3Miw5ICszMjUsMTQgQEAgTm9k
ZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBu
b2RlLCBQYXJlbnRUcmF2ZXJzYWwKICAgICAgICAgQVNTRVJUKHRvU2hhZG93Um9vdChub2RlKS0+
aXNZb3VuZ2VzdCgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisjaWYgMAogICAgIGlm
IChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihu
b2RlKSkgewogICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1dGlvbigpOwotICAgICAgICBp
ZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVzb2x2ZVJlcHJvamVjdGlvbihu
b2RlKSkgeworI2Vsc2UKKyAgICBpZiAobm9kZUNhbkJlRGlzdHJpYnV0ZWQobm9kZSkpIHsKKyNl
bmRpZgorICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVzb2x2
ZVJlcHJvamVjdGlvbihub2RlLCBub2RlKSkgewogICAgICAgICAgICAgaWYgKGRldGFpbHMpCiAg
ICAgICAgICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChpbnNlcnRp
b25Qb2ludCk7CiAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoaW5zZXJ0aW9uUG9p
bnQsIGRldGFpbHMpOwpAQCAtMjg0LDYgKzM0MiwxMiBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNh
bAogICAgICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGRldGFpbHMtPmNoaWxkV2FzT3V0
T2ZDb21wb3NpdGlvbigpOwogICAgIH0KKworI2lmIDAKKyAgICBpZiAoY29uc3QgSW5zZXJ0aW9u
UG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVzb2x2ZVNoYWRvd1Byb2plY3Rpb24obm9kZSkpCisg
ICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUoaW5zZXJ0aW9uUG9pbnQs
IGRldGFpbHMpOworI2VuZGlmCisKICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRU
cmVlKG5vZGUsIGRldGFpbHMpOwogfQogCkBAIC0yOTcsNiArMzYxLDggQEAgaW5saW5lIE5vZGUq
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRUcmVlKGNv
bnN0IE5vZGUqIG4KIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJl
bnRCYWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dS
b290LCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKSBjb25zdAogewogICAgIEFTU0VS
VChzaGFkb3dSb290KTsKKyAgICBBU1NFUlQoIXNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKSk7CisK
ICAgICBpZiAoc2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CiAgICAgICAgIGlmIChjYW5Dcm9z
c1VwcGVyQm91bmRhcnkoKSkgewogICAgICAgICAgICAgaWYgKGRldGFpbHMpCkBAIC0zMDcsMTIg
KzM3Myw2IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRC
YWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zCiAgICAgICAgIHJldHVybiBjb25zdF9j
YXN0PFNoYWRvd1Jvb3QqPihzaGFkb3dSb290KTsKICAgICB9CiAKLSAgICBpZiAoSW5zZXJ0aW9u
UG9pbnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25lZFRvKCkp
IHsKLSAgICAgICAgaWYgKGRldGFpbHMpCi0gICAgICAgICAgICBkZXRhaWxzLT5kaWRUcmF2ZXJz
ZVNoYWRvd1Jvb3Qoc2hhZG93Um9vdCk7Ci0gICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChh
c3NpZ25lZEluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKLSAgICB9Ci0KICAgICByZXR1cm4gMDsK
IH0KIApAQCAtMzY4LDYgKzQyOCwxOCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVu
dCgpCiB7CiAgICAgQVNTRVJUKG1fbm9kZSk7CiAgICAgQVNTRVJUKG1fZGlzdHJpYnV0ZWROb2Rl
KTsKKworI2lmIDAKKyAgICBpZiAobV9ub2RlLT5wYXJlbnROb2RlKCkgJiYgbV9ub2RlLT5wYXJl
bnROb2RlKCktPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGNvbnN0IFNoYWRvd1Jvb3QqIHNo
YWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3QobV9ub2RlLT5wYXJlbnROb2RlKCkpOworICAgICAgICBp
ZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93Um9vdC0+YXNzaWduZWRU
bygpKSB7CisgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKKyAgICAgICAgICAg
IG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRv
dyA9IHNoYWRvd09mUGFyZW50KG1fbm9kZSkpIHsKICAgICAgICAgaWYgKEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3IobV9kaXN0cmlidXRl
ZE5vZGUpKSB7CiAgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKQEAgLTM3Nyw3
ICs0NDksOCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgpCiAgICAgfQogICAg
IGlmICghbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBtX25vZGUgPSBtX25vZGUt
PnBhcmVudE5vZGUoKTsKLSAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CisgICAg
ICAgIGlmICghKG1fbm9kZSAmJiBtX25vZGUtPmlzU2hhZG93Um9vdCgpICYmIHRvU2hhZG93Um9v
dChtX25vZGUpLT5hc3NpZ25lZFRvKCkpKQorICAgICAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUg
PSBtX25vZGU7CiAgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gZmFsc2U7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTFhOTZjN2Vl
NzIyNmUzY2I4MjhmNDc0ODU0YTRiMjkzOTVkYTE4MS4uMDQ5Y2YzOThhNjQwZmNhZTMwZDNjMGE3
MDI0M2UyYTc0Y2Y3MmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtOTg1LDYgKzk4NSw5
IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCiAKIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKIHsKKyAgICBpZiAodGl0bGUoKSA9PSAiZGVi
dWdzdG9wIikKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJkZWJ1Z3N0b3BcbiIpOworCiAgICAg
c3VzcGVuZFBvc3RBdHRhY2hDYWxsYmFja3MoKTsKICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
U3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggYWViNWI1YjQ3NWIyMTliYzU3ZGM4NWVmMmU3
YjgzMmFlZTg4OTNmYy4uYmJlMWFhZTA5YWJlMWQ5MzNiNzQ5ZmM3NGQ3NDlhNDhlZDcyMzA4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtMTM0LDE0ICsxMzQsMTUgQEAg
dm9pZCBFbGVtZW50U2hhZG93OjpkZXRhY2goKQogCiBJbnNlcnRpb25Qb2ludCogRWxlbWVudFNo
YWRvdzo6aW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKIHsKKyNpZiAw
CiAgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cGFyZW50Tm9kZSgpKTsKLQogICAgIGlmIChub2Rl
LT5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlmIChJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0b1NoYWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKS0+
YXNzaWduZWRUbygpKQogICAgICAgICAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KKyNlbmRpZgogCiAgICAgcmV0dXJuIGRpc3RyaWJ1dG9yKCku
ZmluZEluc2VydGlvblBvaW50Rm9yKG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggODNkZjVlMGMwNTFlNTM3ZDhl
ZmRmMzg3MzJkOTE3NjM5NzZmMzVlMS4uZDJjNDIyNzE3ZGRkZDAwMjVjODgxNDgxNjg0YjdlZTBk
YzQwZmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERp
c3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuY3BwCkBAIC0zNiw2ICszNiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0YXRpYyBpbmxpbmUgYm9vbCBkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbihIVE1MU2hhZG93
RWxlbWVudCogc2hhZG93KQoreworICAgIFRyZWVTY29wZSogc2NvcGUgPSBzaGFkb3ctPnRyZWVT
Y29wZSgpOworICAgIGlmIChzY29wZS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkpCisgICAg
ICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qoc2NvcGUtPnJvb3ROb2RlKCkpLT5pc09sZGVzdCgpOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBDb250ZW50RGlzdHJpYnV0b3I6OkNvbnRlbnREaXN0
cmlidXRvcigpCiAgICAgOiBtX3ZhbGlkaXR5KFVuZGV0ZXJtaW5lZCkKIHsKQEAgLTUwLDM1ICs1
OSw1MyBAQCBJbnNlcnRpb25Qb2ludCogQ29udGVudERpc3RyaWJ1dG9yOjpmaW5kSW5zZXJ0aW9u
UG9pbnRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAogICAgIHJldHVybiBtX25vZGVUb0luc2Vy
dGlvblBvaW50LmdldChrZXkpOwogfQogCi12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJp
YnV0ZShFbGVtZW50KiBob3N0KQordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OnBvcHVsYXRlKE5v
ZGUqIG5vZGUsIENvbnRlbnREaXN0cmlidXRpb24mIHBvb2wpCiB7Ci0gICAgQVNTRVJUKG5lZWRz
RGlzdHJpYnV0aW9uKCkpOwotICAgIEFTU0VSVChtX25vZGVUb0luc2VydGlvblBvaW50LmlzRW1w
dHkoKSk7Ci0KLSAgICBtX3ZhbGlkaXR5ID0gVmFsaWQ7CisgICAgaWYgKCFpc0luc2VydGlvblBv
aW50KG5vZGUpKSB7CisgICAgICAgIHBvb2wuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1cm47
CisgICAgfQogCi0gICAgQ29udGVudERpc3RyaWJ1dGlvbiBwb29sOwotICAgIGZvciAoTm9kZSog
bm9kZSA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCkpIHsKLSAgICAgICAgaWYgKCFpc0hUTUxDb250ZW50RWxlbWVudChub2RlKSkgewotICAgICAg
ICAgICAgcG9vbC5hcHBlbmQobm9kZSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBpZiAo
aXNIVE1MU2hhZG93RWxlbWVudChub2RlKSAmJiAhZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4o
dG9IVE1MU2hhZG93RWxlbWVudChub2RlKSkpIHsKKyAgICAgICAgSFRNTFNoYWRvd0VsZW1lbnQq
IHNoYWRvdyA9IHRvSFRNTFNoYWRvd0VsZW1lbnQobm9kZSk7CisgICAgICAgIFNoYWRvd1Jvb3Qq
IG9sZGVyID0gc2hhZG93LT5zaGFkb3dSb290KCktPm9sZGVyU2hhZG93Um9vdCgpOworICAgICAg
ICBpZiAob2xkZXItPmFzc2lnbmVkVG8oKSA9PSBzaGFkb3cpIHsKKyAgICAgICAgICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBvbGRlci0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBwb3B1bGF0ZShjaGlsZCwgcG9vbCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9IHNo
YWRvdy0+Zmlyc3RDaGlsZCgpOyBmYWxsYmFja05vZGU7IGZhbGxiYWNrTm9kZSA9IGZhbGxiYWNr
Tm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBwb29sLmFwcGVuZChmYWxsYmFj
a05vZGUpOwogICAgICAgICB9Ci0KKyAgICB9IGVsc2UgewogICAgICAgICBJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0aW9uUG9pbnQgPSB0b0luc2VydGlvblBvaW50KG5vZGUpOwogICAgICAgICBpZiAo
aW5zZXJ0aW9uUG9pbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7CiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
ICAgICBwb29sLmFwcGVuZChpbnNlcnRpb25Qb2ludC0+YXQoaSkpOworICAgICAgICAgICAgICAg
IHBvcHVsYXRlKGluc2VydGlvblBvaW50LT5hdChpKSwgcG9vbCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9IGluc2VydGlvblBvaW50LT5m
aXJzdENoaWxkKCk7IGZhbGxiYWNrTm9kZTsgZmFsbGJhY2tOb2RlID0gZmFsbGJhY2tOb2RlLT5u
ZXh0U2libGluZygpKQogICAgICAgICAgICAgICAgIHBvb2wuYXBwZW5kKGZhbGxiYWNrTm9kZSk7
CiAgICAgICAgIH0KICAgICB9Cit9CisKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmli
dXRlKEVsZW1lbnQqIGhvc3QpCit7CisgICAgQVNTRVJUKG5lZWRzRGlzdHJpYnV0aW9uKCkpOwor
ICAgIEFTU0VSVChtX25vZGVUb0luc2VydGlvblBvaW50LmlzRW1wdHkoKSk7CisKKyAgICBtX3Zh
bGlkaXR5ID0gVmFsaWQ7CisKKyAgICBDb250ZW50RGlzdHJpYnV0aW9uIHBvb2w7CisgICAgZm9y
IChOb2RlKiBub2RlID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4
dFNpYmxpbmcoKSkKKyAgICAgICAgcG9wdWxhdGUobm9kZSwgcG9vbCk7CiAKICAgICBWZWN0b3I8
Ym9vbD4gZGlzdHJpYnV0ZWQocG9vbC5zaXplKCkpOwogICAgIGRpc3RyaWJ1dGVkLmZpbGwoZmFs
c2UpOwogCi0gICAgSFRNTFNoYWRvd0VsZW1lbnQqIGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9u
UG9pbnRJbk9sZGVzdFNoYWRvd1Jvb3QgPSAwOworICAgIFZlY3RvcjxIVE1MU2hhZG93RWxlbWVu
dCosIDg+IGFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50czsKICAgICBmb3IgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSBob3N0LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9s
ZGVyU2hhZG93Um9vdCgpKSB7CisgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBmaXJzdEFjdGl2
ZVNoYWRvd0luc2VydGlvblBvaW50ID0gMDsKKwogICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBy
b290OyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290KSkgewogICAgICAg
ICAgICAgaWYgKCFpc0luc2VydGlvblBvaW50KG5vZGUpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtODcsMjUgKzExNCwzMSBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJp
YnV0ZShFbGVtZW50KiBob3N0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
ICAgICBpZiAoaXNIVE1MU2hhZG93RWxlbWVudChub2RlKSkgewotICAgICAgICAgICAgICAgIGlm
IChyb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXJv
b3QtPm9sZGVyU2hhZG93Um9vdCgpLT5hc3NpZ25lZFRvKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRpc3RyaWJ1dGVOb2RlQ2hpbGRyZW5Ubyhwb2ludCwgcm9vdC0+b2xkZXJTaGFkb3dS
b290KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+b2xkZXJTaGFkb3dSb290KCkt
PnNldEFzc2lnbmVkVG8ocG9pbnQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICghZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludEluT2xkZXN0
U2hhZG93Um9vdCkKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRp
b25Qb2ludEluT2xkZXN0U2hhZG93Um9vdCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQobm9kZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50KQorICAg
ICAgICAgICAgICAgICAgICBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50ID0gdG9IVE1M
U2hhZG93RWxlbWVudChub2RlKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhwb2ludCwgcG9vbCwgZGlzdHJpYnV0ZWQpOwogICAg
ICAgICAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBub2RlLT5wYXJlbnROb2Rl
KCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChub2RlLT5wYXJlbnROb2RlKCkpLT5zaGFk
b3coKSA6IDApCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1
dGlvbigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpcnN0QWN0
aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQpCisgICAgICAgICAgICBhY3RpdmVTaGFkb3dJbnNlcnRp
b25Qb2ludHMuYXBwZW5kKGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQpOwogICAgIH0K
IAotICAgIGlmIChmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRlc3RTaGFkb3dS
b290KSB7Ci0gICAgICAgIGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8oZmlyc3RBY3RpdmVTaGFkb3dJ
bnNlcnRpb25Qb2ludEluT2xkZXN0U2hhZG93Um9vdCwgcG9vbCwgZGlzdHJpYnV0ZWQpOwotICAg
ICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRp
b25Qb2ludEluT2xkZXN0U2hhZG93Um9vdC0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkg
PyB0b0VsZW1lbnQoZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludEluT2xkZXN0U2hhZG93
Um9vdC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93KCkgOiAwKQotICAgICAgICAgICAgc2hhZG93LT5p
bnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgZm9yIChzaXplX3QgaSA9IGFjdGl2ZVNoYWRv
d0luc2VydGlvblBvaW50cy5zaXplKCk7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgSFRNTFNoYWRv
d0VsZW1lbnQqIHNoYWRvd0VsZW1lbnQgPSBhY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludHNbaSAt
IDFdOworICAgICAgICBTaGFkb3dSb290KiByb290ID0gc2hhZG93RWxlbWVudC0+c2hhZG93Um9v
dCgpOworICAgICAgICBBU1NFUlQocm9vdCk7CisgICAgICAgIGlmIChyb290LT5vbGRlclNoYWRv
d1Jvb3QoKSkgeworICAgICAgICAgICAgZGlzdHJpYnV0ZU5vZGVDaGlsZHJlblRvKHNoYWRvd0Vs
ZW1lbnQsIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKTsKKyAgICAgICAgICAgIHJvb3QtPm9sZGVy
U2hhZG93Um9vdCgpLT5zZXRBc3NpZ25lZFRvKHNoYWRvd0VsZW1lbnQpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhzaGFkb3dFbGVtZW50LCBw
b29sLCBkaXN0cmlidXRlZCk7CisgICAgICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93
ID0gc2hhZG93RWxlbWVudC0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1l
bnQoc2hhZG93RWxlbWVudC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93KCkgOiAwKQorICAgICAgICAg
ICAgICAgIHNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOworICAgICAgICB9CiAgICAg
fQogfQogCkBAIC0xNjIsOCArMTk1LDMxIEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0
cmlidXRlTm9kZUNoaWxkcmVuVG8oSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50CiB7CiAg
ICAgQ29udGVudERpc3RyaWJ1dGlvbiBkaXN0cmlidXRpb247CiAgICAgZm9yIChOb2RlKiBub2Rl
ID0gY29udGFpbmVyTm9kZS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNp
YmxpbmcoKSkgeworI2lmIDEKKyAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkgJiYg
dG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSkgeworICAgICAgICAgICAgSW5zZXJ0
aW9uUG9pbnQqIGlubmVySW5zZXJ0aW9uUG9pbnQgPSB0b0luc2VydGlvblBvaW50KG5vZGUpOwor
ICAgICAgICAgICAgaWYgKGlubmVySW5zZXJ0aW9uUG9pbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7
CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbm5lckluc2VydGlvblBv
aW50LT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24uYXBw
ZW5kKGlubmVySW5zZXJ0aW9uUG9pbnQtPmF0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX25vZGVUb0luc2VydGlvblBvaW50LmNvbnRhaW5zKGlubmVySW5zZXJ0aW9uUG9pbnQtPmF0
KGkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuYWRk
KGlubmVySW5zZXJ0aW9uUG9pbnQtPmF0KGkpLCBpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmb3IgKE5vZGUq
IGNoaWxkID0gaW5uZXJJbnNlcnRpb25Qb2ludC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRp
b24uYXBwZW5kKGNoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Q
b2ludC5hZGQoY2hpbGQsIGluc2VydGlvblBvaW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi5h
cHBlbmQobm9kZSk7CisgICAgICAgICAgICBpZiAoIW1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuY29u
dGFpbnMobm9kZSkpCisgICAgICAgICAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5hZGQo
bm9kZSwgaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICB9CisjZWxzZQogICAgICAgICBkaXN0cmli
dXRpb24uYXBwZW5kKG5vZGUpOwogICAgICAgICBtX25vZGVUb0luc2VydGlvblBvaW50LmFkZChu
b2RlLCBpbnNlcnRpb25Qb2ludCk7CisjZW5kaWYKICAgICB9CiAKICAgICBpbnNlcnRpb25Qb2lu
dC0+c2V0RGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCmluZGV4IGJlZTkyYTU2YWMxNDBhZjY1NWYw
NWU4MzljYmE2NjAzYzU0MmQyNmMuLjBkOGQwMDgyZTZlOTI0MTBlNDNmNjA2MGNlMzZmMTZlNjhl
MDQ2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0
cmlidXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmli
dXRvci5oCkBAIC03NCw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVEaXN0
cmlidXRpb25JbihDb250ZW50RGlzdHJpYnV0aW9uKik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBw
b3B1bGF0ZShOb2RlKiwgQ29udGVudERpc3RyaWJ1dGlvbiYpOworCiAgICAgSGFzaE1hcDxjb25z
dCBOb2RlKiwgSW5zZXJ0aW9uUG9pbnQqPiBtX25vZGVUb0luc2VydGlvblBvaW50OwogICAgIHVu
c2lnbmVkIG1fdmFsaWRpdHkgOiAyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MU2hhZG93RWxlbWVudC5oCmluZGV4IDM2YmRkODk1YWMyZGVmYjNhNDA3ZjQwMWRkODky
M2U1YTdkOWY5MDQuLmJhYzJiOTJiNTc5NjFiMjNkZmNjMmUzMmUxZjU1YjJkNTdlMzI2NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaApAQCAt
NjcsNiArNjcsMTIgQEAgaW5saW5lIEhUTUxTaGFkb3dFbGVtZW50KiB0b0hUTUxTaGFkb3dFbGVt
ZW50KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxTaGFkb3dFbGVtZW50
Kj4obm9kZSk7CiB9CiAKK2lubGluZSBjb25zdCBIVE1MU2hhZG93RWxlbWVudCogdG9IVE1MU2hh
ZG93RWxlbWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCghbm9kZSB8fCBpc0hU
TUxTaGFkb3dFbGVtZW50KG5vZGUpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRN
TFNoYWRvd0VsZW1lbnQqPihub2RlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gSFRNTFNoYWRvd0VsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmgKaW5kZXggNDMwNDE1ZjdiNjI2YzI5ODliYWEzNzZlYzEwZjQ0ZmY1
N2I5OThhZi4uMjMzZGVjYjdhZWQ1MzQzMDEyNDkxYTkxYTM1OTA4ZGM0MmQzNzRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xMTksMTUgKzEx
OSwyNSBAQCBpbmxpbmUgYm9vbCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KE5vZGUqIG5v
ZGUpCiAgICAgcmV0dXJuIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzU2hhZG93Qm91bmRhcnko
KTsKIH0KIAotaW5saW5lIEVsZW1lbnQqIHBhcmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24oY29u
c3QgTm9kZSogbm9kZSkKK2lubGluZSBOb2RlKiBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGNv
bnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwotICAgIGlmIChFbGVtZW50KiBw
YXJlbnQgPSBub2RlLT5wYXJlbnRFbGVtZW50KCkpIHsKKyAgICBpZiAoTm9kZSogcGFyZW50ID0g
bm9kZS0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KHBhcmVu
dCkgJiYgdG9JbnNlcnRpb25Qb2ludChwYXJlbnQpLT5zaG91bGRVc2VGYWxsYmFja0VsZW1lbnRz
KCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0KKyAgICAg
ICAgICAgIHJldHVybiBwYXJlbnQtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgCiAgICAgICAgIHJl
dHVybiBwYXJlbnQ7CiAgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorCitpbmxpbmUgRWxl
bWVudCogcGFyZW50RWxlbWVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQorewor
ICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKG5vZGUpKSB7
CisgICAgICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHJldHVy
biB0b0VsZW1lbnQocGFyZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxr
ZXItc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZWY2ZWIzNTAzZjExMjdhMGFlYWYyOTY4ODc2NDA5
NzM0NjNmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
Y29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTM1IEBACitUZXN0cyBmb3IgQ29tcG9zZWQgU2hhZG93IERPTSBUcmVl
IFRyYXZlcnNhbCBBUElzLiBDYW4gb25seSBydW4gd2l0aGluIERSVAorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aG91dCBzaGFkb3cgZWxl
bWVudAorQ29tcG9zZWQgU2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWMKKworVHJh
dmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1jCitUcmF2ZXJzZSBpbiBiYWNr
d2FyZC4KK0RJVgkgaWQ9YworRElWCSBpZD1hCisKK011bHRpcGxlIHNoYWRvdyByb290IHdpdGgg
c2hhZG93IGVsZW1lbnQKK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBpZD1hCisJRElWCSBp
ZD1jCisJRElWCSBpZD1iCisJRElWCSBpZD1lCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJ
IGlkPWEKK0RJVgkgaWQ9YworRElWCSBpZD1iCitESVYJIGlkPWUKK1RyYXZlcnNlIGluIGJhY2t3
YXJkLgorRElWCSBpZD1lCitESVYJIGlkPWIKK0RJVgkgaWQ9YworRElWCSBpZD1hCisKK011bHRp
cGxlIHNoYWRvdyByb290IHdpdGggc2hhZG93IGVsZW1lbnQsIGNhc2UgMgorQ29tcG9zZWQgU2hh
ZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWYKKwlESVYJIGlkPWMKKwlESVYJIGlkPWIK
KwlESVYJIGlkPWUKKwlESVYJIGlkPWgKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9
YQorRElWCSBpZD1mCitESVYJIGlkPWMKK0RJVgkgaWQ9YgorRElWCSBpZD1lCitESVYJIGlkPWgK
K1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1oCitESVYJIGlkPWUKK0RJVgkgaWQ9Ygor
RElWCSBpZD1jCitESVYJIGlkPWYKK0RJVgkgaWQ9YQorCitzaGFkb3cgcmVwcm9qZWN0aW9uCitD
b21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCQlESVYJIGlkPWQK
KwkJRElWCSBpZD1hLWNoaWxkCisJCURJVgkgaWQ9ZgorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgor
RElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9ZAorRElWCSBpZD1hLWNoaWxkCitESVYJIGlk
PWYKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1mCitESVYJIGlkPWEtY2hpbGQKK0RJ
VgkgaWQ9ZAorRElWCSBpZD1iCitESVYJIGlkPWEKKworc2hhZG93IHJlcHJvamVjdGlvbiwgdGFr
ZSAyCitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9ZAorCQlESVYJ
IGlkPWYKKwkJRElWCSBpZD1iCisJCURJVgkgaWQ9aAorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgor
RElWCSBpZD1hCitESVYJIGlkPWQKK0RJVgkgaWQ9ZgorRElWCSBpZD1iCitESVYJIGlkPWgKK1Ry
YXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1oCitESVYJIGlkPWIKK0RJVgkgaWQ9ZgorRElW
CSBpZD1kCitESVYJIGlkPWEKKworc2hhZG93IGZhbGxiYWNrIGVsZW1lbnQgcmVwcm9qZWN0aW9u
CitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9aQorCQlESVYJIGlk
PWsKKwkJRElWCSBpZD1jCisJCURJVgkgaWQ9YgorCQlESVYJIGlkPWcKKwkJRElWCSBpZD1oCisJ
CURJVgkgaWQ9bQorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWkK
K0RJVgkgaWQ9aworRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9ZworRElWCSBpZD1oCitE
SVYJIGlkPW0KK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1tCitESVYJIGlkPWgKK0RJ
VgkgaWQ9ZworRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9aworRElWCSBpZD1pCitESVYJ
IGlkPWEKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFk
b3ctdHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFkb3ctcmVwcm9qZWN0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZhYjIwZTAyNDU1NDVlOWEzYmQ2YTc2ODkwNTQ5MzJlYzU3
MDJiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21w
b3NlZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi5odG1sCkBAIC0wLDAg
KzEsMTYxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIlRlc3RzIGZvciBDb21wb3NlZCBTaGFkb3cgRE9NIFRyZWUgVHJhdmVy
c2FsIEFQSXMuIENhbiBvbmx5IHJ1biB3aXRoaW4gRFJUIik7CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gZHVtcE5vZGUo
bm9kZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAnKG51bGwpJworICAgIHZh
ciBvdXRwdXQgPSBub2RlLm5vZGVOYW1lICsgIlx0IjsKKyAgICBpZiAobm9kZS5pZCkKKyAgICAg
ICAgb3V0cHV0ICs9ICcgaWQ9JyArIG5vZGUuaWQ7CisgICAgaWYgKG5vZGUuY2xhc3NOYW1lKQor
ICAgICAgICBvdXRwdXQgKz0gJyBjbGFzcz0nICsgbm9kZS5jbGFzc05hbWU7CisgICAgcmV0dXJu
IG91dHB1dDsKK30KKworZnVuY3Rpb24gZHVtcENvbXBvc2VkU2hhZG93VHJlZShub2RlLCBpbmRl
bnQpCit7CisgICAgaW5kZW50ID0gaW5kZW50IHx8ICIiOworICAgIHZhciBvdXRwdXQgPSBpbmRl
bnQgKyBkdW1wTm9kZShub2RlKSArICJcbiI7CisgICAgdmFyIGNoaWxkOworICAgIGZvciAoY2hp
bGQgPSBpbnRlcm5hbHMuZmlyc3RDaGlsZEJ5V2Fsa2VyKG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBp
bnRlcm5hbHMubmV4dFNpYmxpbmdCeVdhbGtlcihjaGlsZCkpCisgICAgICAgICBvdXRwdXQgKz0g
ZHVtcENvbXBvc2VkU2hhZG93VHJlZShjaGlsZCwgaW5kZW50ICsgIlx0Iik7CisgICAgcmV0dXJu
IG91dHB1dDsKK30KKworZnVuY3Rpb24gbGFzdE5vZGVCeVdhbGtlcihyb290KQoreworICAgIHZh
ciBsYXN0Tm9kZSA9IHJvb3Q7CisgICAgd2hpbGUgKGludGVybmFscy5sYXN0Q2hpbGRCeVdhbGtl
cihsYXN0Tm9kZSkpCisgICAgICAgIGxhc3ROb2RlID0gaW50ZXJuYWxzLmxhc3RDaGlsZEJ5V2Fs
a2VyKGxhc3ROb2RlKTsKKyAgICByZXR1cm4gbGFzdE5vZGU7Cit9CisKK2Z1bmN0aW9uIHNob3dD
b21wb3NlZFNoYWRvd1RyZWVCeVRyYXZlcnNpbmdJbkZvcndhcmQocm9vdCkKK3sKKyAgICB2YXIg
bm9kZSA9IHJvb3Q7CisgICAgdmFyIGxhc3QgPSBsYXN0Tm9kZUJ5V2Fsa2VyKHJvb3QpOworICAg
IHdoaWxlIChub2RlKSB7CisgICAgICAgIGRlYnVnKGR1bXBOb2RlKG5vZGUpKTsKKyAgICAgICAg
aWYgKG5vZGUgPT0gbGFzdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBub2RlID0gaW50
ZXJuYWxzLm5leHROb2RlQnlXYWxrZXIobm9kZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93
Q29tcG9zZWRTaGFkb3dUcmVlQnlUcmF2ZXJzaW5nSW5CYWNrd2FyZChyb290KQoreworICAgIHZh
ciBub2RlID0gbGFzdE5vZGVCeVdhbGtlcihyb290KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAg
ICAgICBkZWJ1ZyhkdW1wTm9kZShub2RlKSk7CisgICAgICAgIGlmIChub2RlID09IHJvb3QpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgbm9kZSA9IGludGVybmFscy5wcmV2aW91c05vZGVC
eVdhbGtlcihub2RlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3dDb21wb3NlZFNoYWRvd1Ry
ZWUobm9kZSkKK3sKKyAgICBkZWJ1ZygnQ29tcG9zZWQgU2hhZG93IFRyZWU6Jyk7CisgICAgZGVi
dWcoZHVtcENvbXBvc2VkU2hhZG93VHJlZShub2RlKSk7CisKKyAgICBkZWJ1ZygnVHJhdmVyc2Ug
aW4gZm9yd2FyZC4nKTsKKyAgICBzaG93Q29tcG9zZWRTaGFkb3dUcmVlQnlUcmF2ZXJzaW5nSW5G
b3J3YXJkKG5vZGUpOworCisgICAgZGVidWcoJ1RyYXZlcnNlIGluIGJhY2t3YXJkLicpOworICAg
IHNob3dDb21wb3NlZFNoYWRvd1RyZWVCeVRyYXZlcnNpbmdJbkJhY2t3YXJkKG5vZGUpOworCisg
ICAgZGVidWcoJycpOworfQorCitmdW5jdGlvbiBzaG93TmV4dE5vZGUobm9kZSkgeworICAgIHZh
ciBuZXh0ID0gaW50ZXJuYWxzLm5leHROb2RlQnlXYWxrZXIobm9kZSk7CisgICAgZGVidWcoJ05l
eHQgbm9kZSBvZiBbJyArIGR1bXBOb2RlKG5vZGUpICsgJ10gaXMgWycgKyBkdW1wTm9kZShuZXh0
KSArICddJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDb21wb3NlZFNoYWRvd1RyZWUobm9kZSkKK3sK
KyAgICB2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7Cisg
ICAgc2FuZGJveC5pbm5lckhUTUwgPSAnJzsKKyAgICBzYW5kYm94LmFwcGVuZENoaWxkKG5vZGUp
OworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBzaG93Q29tcG9zZWRTaGFkb3dU
cmVlKG5vZGUpOworfQorCitkZWJ1ZygnTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aG91dCBzaGFk
b3cgZWxlbWVudCcpOwordGVzdENvbXBvc2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdiJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSkpKTsKKworZGVidWcoJ011bHRpcGxlIHNoYWRv
dyByb290IHdpdGggc2hhZG93IGVsZW1lbnQnKTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2QnfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2Un
fSkpKSk7CisgICAgICAgICAgICAgICAgICAKK2RlYnVnKCdNdWx0aXBsZSBzaGFkb3cgcm9vdCB3
aXRoIHNoYWRvdyBlbGVtZW50LCBjYXNlIDInKTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2QnfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2Un
fSkpLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdmJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hh
ZG93JywgeydpZCc6ICdnJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdoJ30pKSkpOworCitkZWJ1Zygnc2hhZG93IHJlcHJvamVjdGlv
bicpOwordGVzdENvbXBvc2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYS1jaGlsZCd9
KSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ3NoYWRvdycsIHsnaWQnOiAnYyd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ2UnfSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2YnfSkpKSkpKTsKKworZGVidWcoJ3NoYWRvdyByZXByb2plY3Rpb24sIHRha2Ug
MicpOwordGVzdENvbXBvc2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAn
Yyd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2UnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2YnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdnJ30pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdoJ30pKSkpKSk7CisKK2RlYnVnKCdzaGFkb3cgZmFsbGJhY2sgZWxlbWVu
dCByZXByb2plY3Rpb24nKTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2InfSksCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2MnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdzaGFkb3cnLCB7J2lkJzogJ2QnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdmJ30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdnJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnaCd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2knfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2onfSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2snfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdsJ30pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdtJ30pKSkpKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3Nl
ZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9j
b21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbAppbmRleCAwNmY3YTcxZjJhNGVkNDMwZjZh
NDg0MDJhMGI1MmQ1ZGE0ZjA0OTE5Li4yYmRiYWI2NzNmMGIwYzkxOGYzMmFhMTIwNTVjNGFmNTcy
OGJlMTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQt
c2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sCkBAIC0xNjUsNiArMTY1LDcgQEAgdGVz
dENvbXBvc2VkU2hhZG93VHJlZSgKICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2gnfSksCiAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdpJ30pKSk7
CiAKK2ludGVybmFscy5hZGRyZXNzKGRvY3VtZW50KTsKIGRlYnVnKCdUZXN0IGZvciBNdWx0aXBs
ZSBTaGFkb3dSb290cy4nKTsKIHRlc3RDb21wb3NlZFNoYWRvd1RyZWUoCiAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2EnfSwKQEAgLTI4NywxOCArMjg4LDYgQEAgdGVzdENvbXBvc2VkU2hh
ZG93VHJlZSgKICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2NoaWxkLTEn
LCAnY2xhc3MnOiAnZm9vJ30pLAogICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnbm90LXNlbGVjdGVkJywgJ2NsYXNzJzogJ2Zvbyd9KSwKICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2NoaWxkLTInLCAnY2xhc3MnOiAnZm9vJ30pKSk7Ci0KLS8qCi1k
ZWJ1ZygnVGVzdCBmb3IgbXVsdGlwbGUgc2hhZG93IHJvb3RzIHdpdGggcmVwcm9qZWN0aW9ucy4n
KTsKLXRlc3RDb21wb3NlZFNoYWRvd1RyZWUoCi0gICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2EnfSwKLSAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2NvbnRlbnQn
KSksCi0gICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2InfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93Um9vdChjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjY2hpbGQnfSkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRv
dycpKSksCi0gICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjaGlsZCd9KSkp
OwotKi8KLQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tY29tcGxleC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWNvbXBsZXguaHRtbApp
bmRleCBiZTIxMDk5MzRlYjgyNDVjZWEwZTFkMGU2NTU5Y2Y3NDQwODFjNTI4Li41YmUwMzIwOTE5
YjFhMmIyMmMwMDYzMjU4YTdhNzVkNTRmYmJmMWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tY29tcGxleC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0
bWwKQEAgLTE0LDEwICsxNCwxMCBAQAogCiA8c2NyaXB0PgogdmFyIHNoYWRvd1Jvb3QxID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwotc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYg
aWQ9Imhvc3QyIj48Y29udGVudCBzZWxlY3Q9Ii5BIj48L2NvbnRlbnQ+PHNoYWRvdz48L3NoYWRv
dz48ZGl2IGNsYXNzPSIuQSI+QTwvZGl2PjwvZGl2Pic7CitzaGFkb3dSb290MS5pbm5lckhUTUwg
PSAnPGRpdiBpZD0iaG9zdDIiPjxjb250ZW50IHNlbGVjdD0iLkEiPjwvY29udGVudD48c2hhZG93
Pjwvc2hhZG93PjxkaXYgY2xhc3M9IkEiPkE8L2Rpdj48L2Rpdj4nOwogCiB2YXIgc2hhZG93Um9v
dDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgnaG9z
dDInKSk7Ci1zaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRpdj48aDI+QTwvaDI+PGNvbnRlbnQg
c2VsZWN0PSJkaXYiPjwvY29udGVudD48aDI+QjwvaDI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4n
CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRpdj48aDI+QTwvaDI+PGNvbnRlbnQgc2VsZWN0
PSIuQSI+PC9jb250ZW50PjxoMj5CPC9oMj48c2hhZG93Pjwvc2hhZG93PjwvZGl2PicKIDwvc2Ny
aXB0PgogCiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
Y29udGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5o
dG1sCmluZGV4IDkwZGQ1NmE3NTg0ZDY1MzgyN2U0NTk0MjA1ZTIyYTJmZjUzY2U3MDUuLjQ4YzUy
YjIwY2YwNWU0Y2MxMDhkMmNhM2UzYjVhNWU4ODAzY2UyNWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3Rl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVj
dGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sCkBAIC04LDYgKzgsNyBAQAogPGRpdiBpZD0iaG9z
dDEiPgogICAgIDxkaXYgaWQ9Imhvc3QyIj4KICAgICAgICAgPGRpdj5jb250ZW50IGZhbGxiYWNr
IGVsZW1lbnQ8L2Rpdj4KKyAgICAgICAgPGRpdj5zaGFkb3cgZmFsbGJhY2sgZWxlbWVudDwvZGl2
PgogICAgICAgICA8ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PgogICAgIDwvZGl2
PgogPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1yZXByb2plY3Rpb24tZmFsbGJhY2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stcmVw
cm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKaW5kZXggMTY2MWY1MGE4ZTBjMjU1MjQzZDJiOWIwMDdi
NmNmNGE4Y2JkMmIzZi4uMjM4ODAwN2ZhYTNlM2ZmMTFhYWFiYzIxNmYyNTkxMjExNDZiM2E4NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0
aW9uLWZhbGxiYWNrLXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2plY3Rp
b24tZXhwZWN0ZWQuaHRtbApAQCAtOSw2ICs5LDcgQEAKICAgICA8ZGl2IGlkPSJob3N0MiI+CiAg
ICAgICAgIDxkaXYgaWQ9Imhvc3QzIj4KICAgICAgICAgICAgIDxkaXY+Y29udGVudCBmYWxsYmFj
ayBlbGVtZW50PC9kaXY+CisgICAgICAgICAgICA8ZGl2PnNoYWRvdyBmYWxsYmFjayBlbGVtZW50
PC9kaXY+CiAgICAgICAgICAgICA8ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2Pgog
ICAgICAgICAgICAgPGRpdj5jb250ZW50IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KICAgICAgICAg
ICAgIDxkaXY+VGhpcyBhbHNvIHNob3VsZCBiZSBzZWxlY3RlZC48L2Rpdj4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWNsaWNrLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0
aW9uLWNsaWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjJhNjI2ZjFjMTkxYWJiODNjYzdj
NTU4ZGYzYzFmMWEzNjczMjVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tY2xpY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorVGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgY2xpY2tpbmcgYSBzaGFkb3cgcmVwcm9q
ZWN0ZWQgZWxlbWVudCBkb2VzIG5vdCBjYXVzZSBhIGNyYXNoLgorCitQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tY2xp
Y2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNjkxODYxMjg3YzdiZWNlMDNmZTVmMTJkNjZmMzFhYjNmNWU4
MjNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yZXByb2plY3Rpb24tY2xpY2suaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+
CisKKzxwPlRoaXMgdGVzdCBjb25maXJtcyB0aGF0IGNsaWNraW5nIGEgc2hhZG93IHJlcHJvamVj
dGVkIGVsZW1lbnQgZG9lcyBub3QgY2F1c2UgYSBjcmFzaC48L3A+CisKKzxkaXYgaWQ9ImNvbnRh
aW5lciI+CisgICAgPGRpdiBpZD0iaG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2Pgor
PC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPk9sZGVz
dCBTaGFkb3dSb290IENoaWxkPC9kaXY+JzsKKwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhv
c3QzIj48c2hhZG93Pjwvc2hhZG93Pjxjb250ZW50PjwvY29udGVudD48ZGl2PllvdW5nZXN0IFNo
YWRvd1Jvb3QgQ2hpbGQ8L2Rpdj48L2Rpdj4nOworCit2YXIgaG9zdDMgPSBzaGFkb3dSb290Mi5n
ZXRFbGVtZW50QnlJZCgnaG9zdDMnKTsKK3ZhciBzaGFkb3dSb290MyA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KGhvc3QzKTsKK3NoYWRvd1Jvb3QzLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9
ImRpdiI+PC9jb250ZW50Pic7CisKK2NvbnRhaW5lci5vZmZzZXRMZWZ0OworCit2YXIgdGFyZ2V0
ID0gc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldC5vZmZzZXRMZWZ0
ICsgMTAsIHRhcmdldC5vZmZzZXRUb3AgKyAyKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2NvbnRhaW5lci5pbm5lckhUTUwg
PSAiUEFTUyI7Cis8L3NjcmlwdD4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQ1NGIwNGE1NmIyZmIyMGQxZmE3N2M3YmIwZTI0YTFhMTJmZmQ3YgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9q
ZWN0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgaWQ9Imhvc3QzIj4KKyAgICAgICAg
PGRpdj5PbGRlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PgorICAgICAgICA8ZGl2Pkhvc3QgQ2hp
bGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5Zb3VuZ2VzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+Cisg
ICAgPC9kaXY+Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNr
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU3ZDUwMGYyZWU4MzQ4ZjQ3ODg0MmM0YjI2ODU0
Yzc1Y2Y3NjI5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwx
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxk
aXYgaWQ9Imhvc3Q0Ij4KKyAgICAgICA8ZGl2Pk9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+
CisgICAgICAgPGRpdj5Ib3N0IENoaWxkPC9kaXY+CisgICAgICAgPGRpdj5TaGFkb3cgRmFsbGJh
Y2sgRWxlbWVudCAoMSk8L2Rpdj4KKyAgICAgICA8ZGl2PlNoYWRvdyBGYWxsYmFjayBFbGVtZW50
ICgyKTwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxs
YmFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YzQzZjIwZjFiZGE1NDU4ZDZlNGU1OTAwMDIwYTVlNjhi
MWE0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3Nj
cmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2PgorCis8
c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwor
c2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj5PbGRlc3QgU2hhZG93Um9v
dCBDaGlsZDwvZGl2Pic7CisKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KGhvc3QxKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8c2hhZG93Pjwvc2hhZG93Pjxjb250
ZW50PjwvY29udGVudD48c2hhZG93PjxkaXYgdGl0bGU9ImRlYnVnc3RvcCI+U2hhZG93IEZhbGxi
YWNrIEVsZW1lbnQgKDEpPC9kaXY+PC9zaGFkb3c+JzsKKwordmFyIHNoYWRvd1Jvb3QzID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxkaXYg
aWQ9Imhvc3Q0Ij48c2hhZG93Pjwvc2hhZG93PjxzaGFkb3c+PGRpdj5TaGFkb3cgRmFsbGJhY2sg
RWxlbWVudCAoMik8L2Rpdj48L3NoYWRvdz48c3Bhbj5Ob3QgcmVuZGVyZWQgKDEpPC9zcGFuPjxz
aGFkb3c+PHNwYW4+Tm90IHJlbmRlcmVkICgyKTwvc3Bhbj48L3NoYWRvdz48L2Rpdj4nOworCit2
YXIgaG9zdDQgPSBzaGFkb3dSb290My5nZXRFbGVtZW50QnlJZCgnaG9zdDQnKTsKK3ZhciBzaGFk
b3dSb290NCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3Q0KTsKKworc2hhZG93Um9vdDQuaW5u
ZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+JzsKKzwvc2NyaXB0Pgor
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4cGVjdGVkLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjODhkOTlkYjRlMTQxYTBlYWI0OTc0ZDkw
ODAyM2Y4NmQ3NzMwODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJv
aGliaXRlZC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFE
T0NUWVBFIGh0bWw+Ci08aHRtbD4KLQotPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBlbGVtZW50
cyBhc3NpZ25lZCB0byBhIHNoYWRvdyBlbGVtZW50IGFyZSBub3QgZGlzdHJpYnV0ZWQuPC9wPgot
Ci08ZGl2IGlkPSJob3N0MSI+Ci0gICAgPGRpdiBpZD0iaG9zdDIiPjxkaXY+VGhpcyBzaG91bGQg
YmUgc2VsZWN0ZWQuPC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24t
cHJvaGliaXRlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDAyNzFhNGFj
NWM1MTY4YTMxOTBiNDRhOWMwMTNhNjM0OGU0M2VkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9s
eWZpbGwuanMiPjwvc2NyaXB0PgotCi08cD5UaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGVsZW1lbnRz
IGFzc2lnbmVkIHRvIGEgc2hhZG93IGVsZW1lbnQgYXJlIG5vdCBkaXN0cmlidXRlZC48L3A+Ci0K
LTxkaXYgaWQ9Imhvc3QxIj4KLSAgICA8ZGl2PlRoZXNlIGVsZW1lbnRzPC9kaXY+Ci0gICAgPGRp
dj5zaG91bGQgbm90IGJlPC9kaXY+Ci0gICAgPGRpdj5yZXByb2plY3RlZDwvZGl2PgotPC9kaXY+
Ci0KLTxzY3JpcHQ+Ci12YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0
MSk7Ci1zaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIiPjxzaGFkb3c+PC9z
aGFkb3c+PC9kaXY+JzsKLQotdmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
c2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QyJykpOwotc2hhZG93Um9vdDIuaW5uZXJI
VE1MID0gJzxkaXY+PGNvbnRlbnQgc2VsZWN0PSJkaXYiPjwvY29udGVudD48ZGl2PlRoaXMgc2hv
dWxkIGJlIHNlbGVjdGVkLjwvZGl2PjwvZGl2PicKLTwvc2NyaXB0PgotCi08L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NDQ1MDgyZWE4MmM3YjkzZWEwMDBjYjZiNjVhYWQxNTdjMjA0ZjE3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXBy
b2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9
Imhvc3QxIj48ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBzaGFk
b3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVy
SFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOwor
Cit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dS
b290Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDMiPjxzaGFkb3c+PC9zaGFkb3c+PGNvbnRl
bnQ+PC9jb250ZW50PjxkaXY+WW91bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PjwvZGl2Pic7
CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFy
IHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMu
aW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+JzsKKzwvc2NyaXB0
PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxOWU0
OWY5YjQ4NGU5ODlmMDAyNDM4Y2MzYjc2ZmI5NmJkNTU3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorCis8ZGl2IGlk
PSJob3N0MSI+CisgICAgPGRpdiBpZD0iaG9zdDMiPgorICAgICAgICA8ZGl2PkE8L2Rpdj4KKyAg
ICAgICAgPGRpdj5CPC9kaXY+CisgICAgICAgIDxkaXY+QzwvZGl2PgorICAgIDwvZGl2PgorPC9k
aXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yZXByb2plY3Rpb24yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY3ZDc3NjIzMzQ3ZmYzNmQ1ODVi
NmMzMjM5NDVlNjU4ODI1ZDU1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpz
Ij48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPjxkaXY+QjwvZGl2PjwvZGl2PgorCis8c2Ny
aXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hh
ZG93Um9vdDEuaW5uZXJIVE1MID0gJzxzaGFkb3c+PC9zaGFkb3c+JzsKKwordmFyIHNoYWRvd1Jv
b3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDIuaW5uZXJIVE1M
ID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93Pjwvc2hhZG93PjwvZGl2Pic7CisKK3ZhciBob3N0
MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3Qz
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0g
JzxkaXY+QTwvZGl2Pjxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+PGRpdj5DPC9kaXY+
JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170788</attachid>
            <date>2012-10-25 19:36:43 -0700</date>
            <delta_ts>2012-10-25 19:51:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99228-20121026113516.patch</filename>
            <type>text/plain</type>
            <size>64703</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ0ZmEzNDZjYjRjMTY2
Y2VhNjk2MGFjMTNlNTJjNDkzMzhiZTk5OC4uNWNhMjRmZWE5ODRjNGNmZWY1NWI2NTk5MWE3MzNi
ZGViZDM3ZjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTEwLTI1ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIFNoYWRvd1Jvb3QuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTIyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN1cHBvcnQgU2hh
ZG93IHJlcHJvamVjdGlvbiwgd2hpY2ggZWxlbWVudHMgZGlzdHJpYnV0ZWQgdG8gPHNoYWRvdz4g
ZWxlbWVudCBjYW4gYmUgcmVwcm9qZWN0ZWQuCisKKyAgICAgICAgRmlyc3QsIHdlIGhhdmUgYSBk
aXN0cmlidXRpb24gVmVjdG9yIGZvciBlYWNoIEluc2VydGlvblBvaW50LCBldmVuIGlmIEluc2Vy
dGlvblBvaW50IGlzIGEgc2hhZG93IGluc2VydGlvbiBwb2ludC4KKyAgICAgICAgQW5kIHdlIHVw
ZGF0ZSBhIG5vZGUtZGlzdHJpYnV0aW9uIG1hcC4gQmFzaWNhbGx5IFdlJ3JlIGNyZWF0aW5nIGEg
bWFwIGZyb20gbm9kZSB0byBJbnNlcnRpb25Qb2ludCBpbiBFbGVtZW50U2hhZG93LgorICAgICAg
ICBJZiBhIG5vZGUgY2FuIGJlIGRpc3RyaWJ1dGVkIHRvIHNldmVyYWwgSW5zZXJ0aW9uUG9pbnQg
KGUuZy4gaW4gY2FzZSByZXByb2plY3Rpb24gaGFwcGVucyksCisgICAgICAgIHRoZSBJbnNlcnRp
b25Qb2ludCBpbiBvbGRlciBTaGFkb3dET00gaXMgY2hvc2VuLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2pl
Y3Rpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2pl
Y3Rpb24tY2xpY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
ZXByb2plY3Rpb24tZHluYW1pYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbjIuaHRtbAorCisgICAgICAgICogY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkUmVzZXRTdHlsZUluaGVyaXRh
bmNlKTogTm93IGNvbnRleHQuaW5zZXJ0aW9uUG9pbnQoKSByZXR1cm5zIHRoZSBmaW5hbCBpbnNl
cnRpb24gcG9pbnQgd2hlcmUKKyAgICAgICAgYSBub2RlIGlzIGRpc3RyaWJ1dGVkLiBTbyB3ZSBk
b24ndCBoYXZlIHRvIHRyYWNlIHNoYWRvdyBpbnNlcnRpb24gcG9pbnQgYW55bW9yZSBoZXJlLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KTogU2luY2Ug
YSBkaXJlY3QgY2hpbGQgb2YgU2hhZG93Um9vdCBjYW4gYmUgZGlzdHJpYnV0ZWQgbm93LiBJbiB0
aGF0IGNhc2UsCisgICAgICAgIHdlIGRvbid0IGhhdmUgYW55IHBhcmVudEVsZW1lbnQuIFRoZSBw
YXJlbnQgbm9kZSBpcyBhIFNoYWRvd1Jvb3QgaW4gdGhhdCBjYXNlLgorICAgICAgICAqIGRvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZUNhbkJl
RGlzdHJpYnV0ZWQpOiBJZiBhIG5vZGUgY2FuIGJlIGRpc3RyaWJ1dGVkLCByZXR1cm5zIHRydWUu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVSZXByb2plY3Rp
b24pOiBSZXNvbHZlcyBjb250ZW50LXJlcHJvamVjdGlvbiBhbmQgc2hhZG93LXJlcHJvamVjdGlv
biBib3RoLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJT
aGFkb3dSb290T3JIb3N0KTogQSBjYXNlIFNoYWRvd1Jvb3QgaXMgYXNzaWduZWQKKyAgICAgICAg
dG8gc29tZSBJbnNlcnRpb25Qb2ludCBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIGluIHRyYXZlcnNl
U2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQuIFNvIHdlIHJlbW92ZSBpdC4KKyAgICAgICAg
KFdlYkNvcmU6OkFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCk6IE5vdyB3ZSBoYXZlIGEgY2Fz
ZSB0aGF0IGEgZGlyZWN0IGNoaWxkIG9mIFNoYWRvd1Jvb3QgY2FuIGJlIGRpc3RyaWJ1dGVkLgor
ICAgICAgICBJbiB0aGF0IGNhc2UsIHdlIHNob3VsZCBub3QgdXBkYXRlIG1fZGlzdHJpYnV0ZWRO
b2RlLgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRTaGFkb3c6Omluc2VydGlvblBvaW50Rm9yKTogU2luY2Ugd2UgaGF2ZSBhIGRpc3Ry
aWJ1dGlvbiBWZWN0b3IgZm9yIGVhY2ggSW5zZXJ0aW9uUG9pbnQsCisgICAgICAgIHdlIGRvbid0
IGhhdmUgYSBzcGVjaWFsIGNhc2UgdGhhdCBhIFNoYWRvd1Jvb3QgaXMgYXNzaWduZWQgdG8gc29t
ZSBJbnNlcnRpb25Qb2ludC4gQWN0dWFsbHkgdGhlIGV4aXN0aW5nIGNvZGUKKyAgICAgICAgaXMg
bm90IGNvcnJlY3Qgbm93IGR1ZSB0byBzaGFkb3cgcmVwcm9qZWN0aW9uLgorICAgICAgICAqIGh0
bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RGlzdHJpYnV0b3I6OnBvcHVsYXRlKTogUG9wdWxhdGUgYSBQT09MLiBJZiBhIG5vZGUgaXMg
SW5zZXJ0aW9uUG9pbnQsIHdlIGZpbGwgaXQgd2l0aCB0aGUgCisgICAgICAgIGRpc3RyaWJ1dGVk
IG5vZGVzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlz
dHJpYnV0b3I6OmRpc3RyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1
dG9yOjpkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8pOgorICAgICAgICAqIGh0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5oOgorICAgICAgICAoQ29udGVudERpc3RyaWJ1dG9yKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
dG9IVE1MU2hhZG93RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50Tm9kZUZv
ckRpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRFbGVtZW50Rm9yRGlzdHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTEwLTI1ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNTQ0NjI2PiBb
Y2ddIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBzKCkgaXMgZXh0cmVtZWx5IHNsb3cgd2hlbiB0
aGVyZSBhcmUgbWFueSBmbG9hdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRl
eCBlMDgyNTI1NTdkYThkMWRkNTk1ZjdjMzE1NGRjNjFhMTY2ZTI5NTE3Li44YWQ2N2U4ZGE4YTQw
YjZiMWQ5NzUxOTAzZjMwNTcyOWI3YmNlMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCkBAIC05NjAsMjEgKzk2MCwxMCBAQCBpbmxpbmUgYm9vbCBzaG91bGRSZXNldFN0eWxl
SW5oZXJpdGFuY2UoTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiAgICAgaWYgKGNvbnRl
eHQucmVzZXRTdHlsZUluaGVyaXRhbmNlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gY29udGV4dC5pbnNlcnRpb25Qb2ludCgp
OwotICAgIGlmICghaW5zZXJ0aW9uUG9pbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IEFTU0VSVChwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnRleHQubm9kZSgpKSk7Ci0g
ICAgRWxlbWVudFNoYWRvdyogc2hhZG93ID0gcGFyZW50RWxlbWVudEZvckRpc3RyaWJ1dGlvbihj
b250ZXh0Lm5vZGUoKSktPnNoYWRvdygpOwotICAgIEFTU0VSVChzaGFkb3cpOworICAgIGlmIChJ
bnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBjb250ZXh0Lmluc2VydGlvblBvaW50KCkp
CisgICAgICAgIHJldHVybiBpbnNlcnRpb25Qb2ludC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7
CiAKLSAgICBmb3IgKCA7IGluc2VydGlvblBvaW50OyApIHsKLSAgICAgICAgSW5zZXJ0aW9uUG9p
bnQqIHlvdW5nZXJJbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3IoaW5z
ZXJ0aW9uUG9pbnQpOwotICAgICAgICBpZiAoIXlvdW5nZXJJbnNlcnRpb25Qb2ludCkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHlvdW5nZXJJbnNlcnRpb25Q
b2ludDsKLSAgICB9Ci0gICAgcmV0dXJuIGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJp
dGFuY2UoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBQc2V1ZG9JZCBwc2V1ZG9JRCkKQEAgLTE1NDAsOSArMTUyOSwxMCBAQCBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCwgUmVuZGVyUwogICAgIC8vIGNvbnRlbnRlZGl0YWJsZSBhdHRyaWJ1dGUgKGltcGxlbWVu
dGVkIGJ5IC13ZWJraXQtdXNlci1tb2RpZnkpIHNob3VsZAogICAgIC8vIGJlIHByb3BhZ2F0ZWQg
ZnJvbSBzaGFkb3cgaG9zdCB0byBkaXN0cmlidXRlZCBub2RlLgogICAgIGlmIChtX2Rpc3RyaWJ1
dGVkVG9JbnNlcnRpb25Qb2ludCkgewotICAgICAgICBBU1NFUlQoZWxlbWVudC0+cGFyZW50RWxl
bWVudCgpKTsKLSAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBzdHlsZU9mU2hhZG93SG9zdCA9IGVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldFVzZXJNb2RpZnkoc3R5bGVPZlNoYWRvd0hvc3QtPnVzZXJNb2RpZnkoKSk7CisgICAg
ICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAg
ICAgICAgICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGVPZlNoYWRvd0hvc3QgPSBwYXJlbnQtPnJl
bmRlclN0eWxlKCkpCisgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VXNlck1vZGlmeShzdHls
ZU9mU2hhZG93SG9zdC0+dXNlck1vZGlmeSgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChlbGVtZW50LT5pc0xpbmsoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBlODgyMzBlNjRhYTcwYTJjNDc0MGY3ZjkxYzMxODQ3
ZTBjMzk1ZmUxLi4yNmI4M2YzMWUwNWYxYWI5M2MwMWRiODlhZGFjYWZiNjQyYTljYzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50U2hh
ZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNo
YWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC02MywxOCArNjQsNDggQEAgc3RhdGljIGlubGluZSBFbGVtZW50U2hhZG93
KiBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogICAgIHJl
dHVybiAwOyAgICAKIH0KIAotc3RhdGljIGlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJl
cHJvamVjdGlvbihjb25zdCBOb2RlKiBub2RlKQorc3RhdGljIGlubGluZSBib29sIG5vZGVDYW5C
ZURpc3RyaWJ1dGVkKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAg
IE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24obm9kZSk7CisgICAgaWYg
KCFwYXJlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChTaGFkb3dSb290KiBz
aGFkb3dSb290ID0gcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9vdChwYXJlbnQp
IDogMCkKKyAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsKKworICAgIGlm
IChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93KCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMg
aW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHBy
b2plY3RlZE5vZGUpCiB7CiAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsK
LSAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gbm9kZTsKLSAgICB3aGlsZSAoRWxlbWVudFNoYWRv
dyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAg
ICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihub2RlKSkgewot
ICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAgICBpbnNlcnRpb25Q
b2ludCA9IGluc2VydGVkVG87Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRG
b3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlz
dHJpYnV0aW9uKCk7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8g
PSBzaGFkb3ctPmluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAgICAg
ICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9p
bnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JE
aXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCog
aW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50
KS0+YXNzaWduZWRUbygpIDogMCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRl
ZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGJyZWFrOwogICAgIH0KKwogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIApAQCAtMjAz
LDkgKzIzNCwxMCBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlRGlz
dHJpYnV0ZWROb2Rlcyhjb25zdCBOb2RlKiBub2RlLCBjb25zdAogTm9kZSogQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KGNvbnN0
IE5vZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgQVNTRVJU
KG5vZGUpOwotICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUp
OwotICAgIGlmICghc2hhZG93KQorCisgICAgaWYgKCFub2RlQ2FuQmVEaXN0cmlidXRlZChub2Rl
KSkKICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGly
ZWN0aW9uKTsKKwogICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVS
ZXByb2plY3Rpb24obm9kZSk7CiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludCkKICAgICAgICAgcmV0
dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0aW9uKTsKQEAgLTI3
Miw4ICszMDQsOCBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFy
ZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNhbAogICAgICAgICBBU1NFUlQodG9T
aGFkb3dSb290KG5vZGUpLT5pc1lvdW5nZXN0KCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
Ci0gICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJp
YnV0aW9uKG5vZGUpKSB7Ci0gICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisK
KyAgICBpZiAobm9kZUNhbkJlRGlzdHJpYnV0ZWQobm9kZSkpIHsKICAgICAgICAgaWYgKEluc2Vy
dGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rpb24obm9kZSkpIHsK
ICAgICAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgICAgIGRldGFpbHMtPmRpZFRy
YXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOwpAQCAtMjk3LDYgKzMyOSw4IEBA
IGlubGluZSBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50SW5D
dXJyZW50VHJlZShjb25zdCBOb2RlKiBuCiBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6
OnRyYXZlcnNlUGFyZW50QmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QoY29uc3QgU2hhZG93
Um9vdCogc2hhZG93Um9vdCwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogZGV0YWlscykgY29uc3QK
IHsKICAgICBBU1NFUlQoc2hhZG93Um9vdCk7CisgICAgQVNTRVJUKCFzaGFkb3dSb290LT5hc3Np
Z25lZFRvKCkpOworCiAgICAgaWYgKHNoYWRvd1Jvb3QtPmlzWW91bmdlc3QoKSkgewogICAgICAg
ICBpZiAoY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkpIHsKICAgICAgICAgICAgIGlmIChkZXRhaWxz
KQpAQCAtMzA3LDEyICszNDEsNiBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRy
YXZlcnNlUGFyZW50QmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QoY29ucwogICAgICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxTaGFkb3dSb290Kj4oc2hhZG93Um9vdCk7CiAgICAgfQogCi0gICAg
aWYgKEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlvblBvaW50ID0gc2hhZG93Um9vdC0+
YXNzaWduZWRUbygpKSB7Ci0gICAgICAgIGlmIChkZXRhaWxzKQotICAgICAgICAgICAgZGV0YWls
cy0+ZGlkVHJhdmVyc2VTaGFkb3dSb290KHNoYWRvd1Jvb3QpOwotICAgICAgICByZXR1cm4gdHJh
dmVyc2VQYXJlbnQoYXNzaWduZWRJbnNlcnRpb25Qb2ludCwgZGV0YWlscyk7Ci0gICAgfQotCiAg
ICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM3Nyw3ICs0MDUsOCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5X
YWxrZXI6OnBhcmVudCgpCiAgICAgfQogICAgIGlmICghbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkg
ewogICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgbV9kaXN0
cmlidXRlZE5vZGUgPSBtX25vZGU7CisgICAgICAgIGlmICghKG1fbm9kZSAmJiBtX25vZGUtPmlz
U2hhZG93Um9vdCgpICYmIHRvU2hhZG93Um9vdChtX25vZGUpLT5hc3NpZ25lZFRvKCkpKQorICAg
ICAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CiAgICAgICAgIG1faXNDcm9zc2lu
Z0luc2VydGlvblBvaW50ID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggYWViNWI1YjQ3NWIyMTliYzU3ZGM4NWVmMmU3
YjgzMmFlZTg4OTNmYy4uMDNhMDYyMjVhYjlmNzkyNDJmZDA4OTkwY2YyMzAyZjUzYTU4YzVmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtMTM0LDE1ICsxMzQsNiBAQCB2
b2lkIEVsZW1lbnRTaGFkb3c6OmRldGFjaCgpCiAKIEluc2VydGlvblBvaW50KiBFbGVtZW50U2hh
ZG93OjppbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewotICAgIEFT
U0VSVChub2RlICYmIG5vZGUtPnBhcmVudE5vZGUoKSk7Ci0KLSAgICBpZiAobm9kZS0+cGFyZW50
Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGlu
c2VydGlvblBvaW50ID0gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSktPmFzc2lnbmVk
VG8oKSkKLSAgICAgICAgICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKLQotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KICAgICByZXR1cm4gZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9p
bnRGb3Iobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250
ZW50RGlzdHJpYnV0b3IuY3BwCmluZGV4IDgzZGY1ZTBjMDUxZTUzN2Q4ZWZkZjM4NzMyZDkxNzYz
OTc2ZjM1ZTEuLjJhNmRmYzlhMjYwMTU3YjhjODY0OTcwYWU5MDViNzE0NzIwMzViYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApA
QCAtNTAsNiArNTAsMjMgQEAgSW5zZXJ0aW9uUG9pbnQqIENvbnRlbnREaXN0cmlidXRvcjo6Zmlu
ZEluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKICAgICByZXR1cm4gbV9u
b2RlVG9JbnNlcnRpb25Qb2ludC5nZXQoa2V5KTsKIH0KIAordm9pZCBDb250ZW50RGlzdHJpYnV0
b3I6OnBvcHVsYXRlKE5vZGUqIG5vZGUsIENvbnRlbnREaXN0cmlidXRpb24mIHBvb2wpCit7Cisg
ICAgaWYgKCFpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgIHBvb2wuYXBwZW5kKG5v
ZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKKyAgICBpZiAoaW5zZXJ0aW9uUG9p
bnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5zZXJ0aW9uUG9pbnQtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgcG9wdWxhdGUoaW5zZXJ0
aW9uUG9pbnQtPmF0KGkpLCBwb29sKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKE5vZGUq
IGZhbGxiYWNrTm9kZSA9IGluc2VydGlvblBvaW50LT5maXJzdENoaWxkKCk7IGZhbGxiYWNrTm9k
ZTsgZmFsbGJhY2tOb2RlID0gZmFsbGJhY2tOb2RlLT5uZXh0U2libGluZygpKQorICAgICAgICAg
ICAgcG9vbC5hcHBlbmQoZmFsbGJhY2tOb2RlKTsKKyAgICB9Cit9CisKIHZvaWQgQ29udGVudERp
c3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCiB7CiAgICAgQVNTRVJUKG5lZWRz
RGlzdHJpYnV0aW9uKCkpOwpAQCAtNTgsMjcgKzc1LDE2IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1
dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCiAgICAgbV92YWxpZGl0eSA9IFZhbGlkOwog
CiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBwb29sOwotICAgIGZvciAoTm9kZSogbm9kZSA9IGhv
c3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgaWYgKCFpc0hUTUxDb250ZW50RWxlbWVudChub2RlKSkgewotICAgICAgICAgICAgcG9v
bC5hcHBlbmQobm9kZSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9k
ZSk7Ci0gICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnQtPnNpemUoKTsg
KytpKQotICAgICAgICAgICAgICAgIHBvb2wuYXBwZW5kKGluc2VydGlvblBvaW50LT5hdChpKSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9
IGluc2VydGlvblBvaW50LT5maXJzdENoaWxkKCk7IGZhbGxiYWNrTm9kZTsgZmFsbGJhY2tOb2Rl
ID0gZmFsbGJhY2tOb2RlLT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgICAgIHBvb2wuYXBw
ZW5kKGZhbGxiYWNrTm9kZSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgZm9yIChOb2RlKiBub2Rl
ID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkK
KyAgICAgICAgcG9wdWxhdGUobm9kZSwgcG9vbCk7CiAKICAgICBWZWN0b3I8Ym9vbD4gZGlzdHJp
YnV0ZWQocG9vbC5zaXplKCkpOwogICAgIGRpc3RyaWJ1dGVkLmZpbGwoZmFsc2UpOwogCi0gICAg
SFRNTFNoYWRvd0VsZW1lbnQqIGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVz
dFNoYWRvd1Jvb3QgPSAwOworICAgIFZlY3RvcjxIVE1MU2hhZG93RWxlbWVudCosIDg+IGFjdGl2
ZVNoYWRvd0luc2VydGlvblBvaW50czsKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0
LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9v
dCgpKSB7CisgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBmaXJzdEFjdGl2ZVNoYWRvd0luc2Vy
dGlvblBvaW50ID0gMDsKKwogICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSByb290OyBub2RlOyBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290KSkgewogICAgICAgICAgICAgaWYgKCFp
c0luc2VydGlvblBvaW50KG5vZGUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtODcs
MjUgKzkzLDMxIEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQq
IGhvc3QpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChpc0hU
TUxTaGFkb3dFbGVtZW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJvb3QtPm9sZGVy
U2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcm9vdC0+b2xkZXJTaGFk
b3dSb290KCktPmFzc2lnbmVkVG8oKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJp
YnV0ZU5vZGVDaGlsZHJlblRvKHBvaW50LCByb290LT5vbGRlclNoYWRvd1Jvb3QoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+c2V0QXNzaWduZWRU
byhwb2ludCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRlc3RTaGFkb3dSb290KQot
ICAgICAgICAgICAgICAgICAgICBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRl
c3RTaGFkb3dSb290ID0gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQpCisgICAgICAgICAgICAgICAg
ICAgIGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQgPSB0b0hUTUxTaGFkb3dFbGVtZW50
KG5vZGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBkaXN0cmlidXRl
U2VsZWN0aW9uc1RvKHBvaW50LCBwb29sLCBkaXN0cmlidXRlZCk7CiAgICAgICAgICAgICAgICAg
aWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IG5vZGUtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50
Tm9kZSgpID8gdG9FbGVtZW50KG5vZGUtPnBhcmVudE5vZGUoKSktPnNoYWRvdygpIDogMCkKICAg
ICAgICAgICAgICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBpZiAoZmlyc3RBY3RpdmVTaGFkb3dJbnNl
cnRpb25Qb2ludCkKKyAgICAgICAgICAgIGFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50cy5hcHBl
bmQoZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCk7CiAgICAgfQogCi0gICAgaWYgKGZp
cnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jvb3QpIHsKLSAgICAg
ICAgZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50
SW5PbGRlc3RTaGFkb3dSb290LCBwb29sLCBkaXN0cmlidXRlZCk7Ci0gICAgICAgIGlmIChFbGVt
ZW50U2hhZG93KiBzaGFkb3cgPSBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRl
c3RTaGFkb3dSb290LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChm
aXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRlc3RTaGFkb3dSb290LT5wYXJlbnRO
b2RlKCkpLT5zaGFkb3coKSA6IDApCi0gICAgICAgICAgICBzaGFkb3ctPmludmFsaWRhdGVEaXN0
cmlidXRpb24oKTsKKyAgICBmb3IgKHNpemVfdCBpID0gYWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9p
bnRzLnNpemUoKTsgaSA+IDA7IC0taSkgeworICAgICAgICBIVE1MU2hhZG93RWxlbWVudCogc2hh
ZG93RWxlbWVudCA9IGFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50c1tpIC0gMV07CisgICAgICAg
IFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dFbGVtZW50LT5zaGFkb3dSb290KCk7CisgICAgICAg
IEFTU0VSVChyb290KTsKKyAgICAgICAgaWYgKHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7Cisg
ICAgICAgICAgICBkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8oc2hhZG93RWxlbWVudCwgcm9vdC0+
b2xkZXJTaGFkb3dSb290KCkpOworICAgICAgICAgICAgcm9vdC0+b2xkZXJTaGFkb3dSb290KCkt
PnNldEFzc2lnbmVkVG8oc2hhZG93RWxlbWVudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKHNoYWRvd0VsZW1lbnQsIHBvb2wsIGRpc3RyaWJ1
dGVkKTsKKyAgICAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dFbGVt
ZW50LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChzaGFkb3dFbGVt
ZW50LT5wYXJlbnROb2RlKCkpLT5zaGFkb3coKSA6IDApCisgICAgICAgICAgICAgICAgc2hhZG93
LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE2
Miw4ICsxNzQsMjUgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGVOb2RlQ2hp
bGRyZW5UbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQKIHsKICAgICBDb250ZW50RGlz
dHJpYnV0aW9uIGRpc3RyaWJ1dGlvbjsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjb250YWluZXJO
b2RlLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0g
ICAgICAgIGRpc3RyaWJ1dGlvbi5hcHBlbmQobm9kZSk7Ci0gICAgICAgIG1fbm9kZVRvSW5zZXJ0
aW9uUG9pbnQuYWRkKG5vZGUsIGluc2VydGlvblBvaW50KTsKKyAgICAgICAgaWYgKGlzSW5zZXJ0
aW9uUG9pbnQobm9kZSkgJiYgdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSkgewor
ICAgICAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIGlubmVySW5zZXJ0aW9uUG9pbnQgPSB0b0luc2Vy
dGlvblBvaW50KG5vZGUpOworICAgICAgICAgICAgaWYgKGlubmVySW5zZXJ0aW9uUG9pbnQtPmhh
c0Rpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBpbm5lckluc2VydGlvblBvaW50LT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAg
ICBkaXN0cmlidXRpb24uYXBwZW5kKGlubmVySW5zZXJ0aW9uUG9pbnQtPmF0KGkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX25vZGVUb0luc2VydGlvblBvaW50LmNvbnRhaW5zKGlubmVy
SW5zZXJ0aW9uUG9pbnQtPmF0KGkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZVRv
SW5zZXJ0aW9uUG9pbnQuYWRkKGlubmVySW5zZXJ0aW9uUG9pbnQtPmF0KGkpLCBpbnNlcnRpb25Q
b2ludCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJJbnNlcnRpb25Qb2ludC0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAg
ICAgICAgICBkaXN0cmlidXRpb24uYXBwZW5kKGNoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9ub2RlVG9JbnNlcnRpb25Qb2ludC5hZGQoY2hpbGQsIGluc2VydGlvblBvaW50KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBkaXN0cmlidXRpb24uYXBwZW5kKG5vZGUpOworICAgICAgICAgICAgaWYgKCFtX25vZGVUb0lu
c2VydGlvblBvaW50LmNvbnRhaW5zKG5vZGUpKQorICAgICAgICAgICAgICAgIG1fbm9kZVRvSW5z
ZXJ0aW9uUG9pbnQuYWRkKG5vZGUsIGluc2VydGlvblBvaW50KTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIGluc2VydGlvblBvaW50LT5zZXREaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXgg
YmVlOTJhNTZhYzE0MGFmNjU1ZjA1ZTgzOWNiYTY2MDNjNTQyZDI2Yy4uMGQ4ZDAwODJlNmU5MjQx
MGU0M2Y2MDYwY2UzNmYxNmU2OGUwNDZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAg
IHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbkluKENvbnRlbnREaXN0cmlidXRpb24qKTsKIAog
cHJpdmF0ZToKKyAgICB2b2lkIHBvcHVsYXRlKE5vZGUqLCBDb250ZW50RGlzdHJpYnV0aW9uJik7
CisKICAgICBIYXNoTWFwPGNvbnN0IE5vZGUqLCBJbnNlcnRpb25Qb2ludCo+IG1fbm9kZVRvSW5z
ZXJ0aW9uUG9pbnQ7CiAgICAgdW5zaWduZWQgbV92YWxpZGl0eSA6IDI7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKaW5kZXggMzZiZGQ4OTVh
YzJkZWZiM2E0MDdmNDAxZGQ4OTIzZTVhN2Q5ZjkwNC4uYmFjMmI5MmI1Nzk2MWIyM2RmY2MyZTMy
ZTFmNTViMmQ1N2UzMjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5oCkBAIC02Nyw2ICs2NywxMiBAQCBpbmxpbmUgSFRNTFNoYWRvd0VsZW1l
bnQqIHRvSFRNTFNoYWRvd0VsZW1lbnQoTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTFNoYWRvd0VsZW1lbnQqPihub2RlKTsKIH0KIAoraW5saW5lIGNvbnN0IEhUTUxTaGFk
b3dFbGVtZW50KiB0b0hUTUxTaGFkb3dFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
QVNTRVJUKCFub2RlIHx8IGlzSFRNTFNoYWRvd0VsZW1lbnQobm9kZSkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBIVE1MU2hhZG93RWxlbWVudCo+KG5vZGUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBIVE1MU2hhZG93RWxlbWVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCA0MzA0MTVmN2I2MjZj
Mjk4OWJhYTM3NmVjMTBmNDRmZjU3Yjk5OGFmLi5mOWUwODRmYjBjODg2NTJkZWU2MDlhMWI0ZjBm
NDhmMGE2MWM2Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmgKQEAgLTExOSwxOSArMTE5LDI5IEBAIGlubGluZSBib29sIGlzTG93ZXJFbmNhcHN1bGF0
aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKICAgICByZXR1cm4gdG9JbnNlcnRpb25Qb2ludChub2Rl
KS0+aXNTaGFkb3dCb3VuZGFyeSgpOwogfQogCi1pbmxpbmUgRWxlbWVudCogcGFyZW50RWxlbWVu
dEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQoraW5saW5lIE5vZGUqIHBhcmVudE5v
ZGVGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7
Ci0gICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IG5vZGUtPnBhcmVudEVsZW1lbnQoKSkgewotICAg
ICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChwYXJlbnQpICYmIHRvSW5zZXJ0aW9uUG9pbnQocGFy
ZW50KS0+c2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpKQotICAgICAgICAgICAgcmV0dXJuIHBh
cmVudC0+cGFyZW50RWxlbWVudCgpOwogCisgICAgaWYgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBh
cmVudE5vZGUoKSkgeworICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChwYXJlbnQpICYmIHRv
SW5zZXJ0aW9uUG9pbnQocGFyZW50KS0+c2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpKQorICAg
ICAgICAgICAgcmV0dXJuIHBhcmVudC0+cGFyZW50Tm9kZSgpOwogICAgICAgICByZXR1cm4gcGFy
ZW50OwogICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCitpbmxpbmUgRWxlbWVudCogcGFyZW50
RWxlbWVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2Rl
KiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKG5vZGUpKSB7CisgICAgICAgIGlm
IChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQo
cGFyZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM3ZTM5YWRhNDgyNjUy
YmU0ZmNlNjI2OGZlZmJkMDRiMzMwNTA2NWUuLmI2MWUzMGFhMmNkYWJlODg0ZjEwMjA3OWM0OTE2
YTk4MmEzZDI5ZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0yNSAgU2hpbnlhIEth
d2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGhlIHNoYWRvdyBlbGVt
ZW50IGlzIG5vdCByZXByb2plY3RlZCB0byBhIG5lc3RlZCBTaGFkb3dSb290LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9j
b21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJl
ZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi5odG1sOiBBZGRlZC4gQSB3YWxrZXIgdGVzdCBj
YXNlIGZvciBlbGVtZW50cyBkaXN0cmlidXRlZAorICAgICAgICB0byBzaGFkb3cgZWxlbWVudCBh
cmUgcmVwcm9qZWN0ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRv
dy10cmVlLXdhbGtlci5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJl
cHJvamVjdGlvbi1jb21wbGV4Lmh0bWw6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2NvbnRl
bnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLXJlcHJvamVjdGlvbi1leHBl
Y3RlZC5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9u
LWNsaWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yZXByb2plY3Rpb24tY2xpY2suaHRtbDogQWRkZWQuIERvZXMgc29tZSBpbnRlcmFjdGl2
ZSB3aXRoIGEgc2hhZG93LXJlcHJvamVjdGVkIG5vZGUuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZHluYW1pYy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1keW5hbWljLmh0bWw6
IEFkZGVkLiBBZGRzIGR5bmFtaWNhbGx5IGVsZW1lbnRzIHNoYWRvdy1yZXByb2plY3RlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1m
YWxsYmFjay1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sOiBBZGRlZC4gQSB0ZXN0IGNhc2UgZm9y
IGZhbGxiYWNrIGVsZW1lbnRzIG9mIGEgc2hhZG93IGVsZW1lbnQKKyAgICAgICAgYXJlIHJlcHJv
amVjdGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXBy
b2hpYml0ZWQtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbDogQWRkZWQuIEEgYmFz
aWMgdGVzdCBjYXNlLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0
aW9uMi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJlcHJvamVjdGlvbjIuaHRtbDogQWRkZWQuIEFub3RoZXIgYmFzaWMgdGVzdCBjYXNlLgor
CiAyMDEyLTEwLTI1ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCByZWJhc2VsaW5lIG9mIHRlc3RzIGZhaWxpbmcgYWZ0ZXIgMTMyNTI5
IHJvbGxlZCBvdXQgMTMyMjY5LgpAQCAtMTA1NCw3ICsxMDgyLDcgQEAKICAgICAgICAgKiB0b3Vj
aGFkanVzdG1lbnQvcGx1Z2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAgICAgICAgICogdG91Y2hh
ZGp1c3RtZW50L3BsdWdpbi5odG1sOiBBZGRlZC4KIAotMjAxMi0xMC0yNSAgQ3NhYmEgT3N6dHJv
Z29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorMjAxMi0xMC0yNSAgQ3NhYmEgT3N6dHJvZ29uj6uh
YyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5n
LCBza2lwIGZhaWxpbmcgdGVzdHMgdG8gc3BlZWR1cCB0ZXN0aW5nLgogCkBAIC0xMDk5LDcgKzEx
MjcsNyBAQAogICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9lZGl0YWJsZS1jb250ZW50LWV4cGVj
dGVkLnR4dDogQWRkZWQuCiAgICAgICAgICogdG91Y2hhZGp1c3RtZW50L2VkaXRhYmxlLWNvbnRl
bnQuaHRtbDogQWRkZWQuCiAKLTIwMTItMTAtMjUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lA
d2Via2l0Lm9yZz4KKzIwMTItMTAtMjUgIENzYWJhIE9zenRyb2dvbo+roWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZywgc2tpcCB0ZXN0cyBi
ZWNhdXNlIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSgpCiAgICAgICAgIGRvZXMgbm90
IHN1cHBvcnQgdGhlICdXZWJLaXRTdXBwb3J0c011bHRpcGxlV2luZG93cycgcHJlZmVyZW5jZSBv
biBRdCBXSzEuCkBAIC0xMjU5LDcgKzEyODcsNyBAQAogCiAgICAgICAgICogcGxhdGZvcm0vcXQt
NS4wLXdrMi9UZXN0RXhwZWN0YXRpb25zOgogCi0yMDEyLTEwLTI0ICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CisyMDEyLTEwLTI0ICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcsIHNr
aXAgYSBuZXcgZmFpbGluZyB0ZXN0LgogCkBAIC0xNjk2LDcgKzE3MjQsNyBAQAogICAgICAgICAq
IHBsYXRmb3JtL21hYy9mYXN0L21lZGlhL3czYy90ZXN0X21lZGlhX3F1ZXJpZXMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KICAgICAgICAgKiBwbGF0Zm9ybS93aW4vZmFzdC9tZWRpYS93M2MvdGVzdF9t
ZWRpYV9xdWVyaWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAKLTIwMTItMTAtMjQgIERvbWluaWsg
UsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKzIwMTItMTAtMjQgIERv
bWluaWsgUo+r03R0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKICAgICAg
ICAgW0VGTF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCiAKQEAgLTIwODIsNyArMjExMCw3IEBACiAg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZm9ybXMvd2Vlay1tdWx0aXBsZS1m
aWVsZHMvd2Vlay1tdWx0aXBsZS1maWVsZHMtYXBwZWFyYW5jZS1wc2V1ZG8tY2xhc3Nlcy1leHBl
Y3RlZC5wbmc6CiAgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZm9ybXMvd2Vl
ay1tdWx0aXBsZS1maWVsZHMvd2Vlay1tdWx0aXBsZS1maWVsZHMtYXBwZWFyYW5jZS1zdHlsZS1l
eHBlY3RlZC5wbmc6CiAKLTIwMTItMTAtMjMgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Vi
a2l0Lm9yZz4KKzIwMTItMTAtMjMgIENzYWJhIE9zenRyb2dvbo+roWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIG5pZ2h0bHkgZ2FyZGVuaW5nLCBza2lwIG5l
dyBmYWlsaW5nIHRlc3RzLgogCkBAIC0yMTQ0LDcgKzIxNzIsNyBAQAogICAgICAgICAqIGZhc3Qv
aW1hZ2VzL2V4aWYtb3JpZW50YXRpb24tY3NzLmh0bWw6IFVzZSBkdW1wQXNUZXh0KHRydWUpLgog
ICAgICAgICAqIGZhc3QvaW1hZ2VzL2V4aWYtb3JpZW50YXRpb24uaHRtbDogZGl0dG8uCiAKLTIw
MTItMTAtMjMgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNv
bT4KKzIwMTItMTAtMjMgIE1pY2hhj6nIIFBha3WPqchhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgRUZMIGdhcmRlbmluZy4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDEyNQpAQCAt
MjUwMyw3ICsyNTMxLDcgQEAKICAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2lubmVySFRNTC8w
MDMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgogICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvaW5u
ZXJIVE1MLzAwNi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCiAKLTIwMTItMTAtMjMgIERvbWluaWsg
UsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKzIwMTItMTAtMjMgIERv
bWluaWsgUo+r03R0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKICAgICAg
ICAgQWRkIHRpbWVvdXQgc3VwcG9ydCB0byBYTUxIdHRwUmVxdWVzdAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4MDIKQEAgLTI2OTQsMTMgKzI3MjIs
MTMgQEAKIAogICAgICAgICAgICAgU2tpcCB0aGUgdGVzdCBhcyB0aGUgcG9ydHMgZG8gbm90IGVu
YWJsZSBDU1MgSW1hZ2UgUmVzb2x1dGlvbi4KIAotMjAxMi0xMC0yMyAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgorMjAxMi0xMC0yMyAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gVW5yZXZpZXdlZCBnYXJkZW5p
bmcuCiAKICAgICAgICAgKiBwbGF0Zm9ybS9xdC01LjAtd2syL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0OgogCi0yMDEyLTEwLTIzICBDc2FiYSBP
c3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisyMDEyLTEwLTIzICBDc2FiYSBPc3p0cm9n
b26Pq6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBob2xp
ZGF5IGdhcmRlbmluZyB0byBwYWludCB0aGUgYm90cyBncmVlbi4KIApAQCAtMjc5MSw3ICsyODE5
LDcgQEAKICAgICAgICAgKiBmYXN0L3RhYmxlL2NvbC1zcGFuLWNoYW5nZS1yZWxheW91dC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCiAgICAgICAgICogZmFzdC90YWJsZS9jb2wtc3Bhbi1jaGFuZ2Ut
cmVsYXlvdXQuaHRtbDogUmVtb3ZlZC4KIAotMjAxMi0xMC0yMyAgQ3NhYmEgT3N6dHJvZ29uw6Fj
ICA8b3NzeUB3ZWJraXQub3JnPgorMjAxMi0xMC0yMyAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9z
c3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgaG9saWRheSBnYXJkZW5p
bmcuCiAKQEAgLTY1MTQsNyArNjU0Miw3IEBACiAgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0t
bWFjLXNub3dsZW9wYXJkL3BsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZGVmZXJyZWQvZmFzdC9p
bWFnZXMvanBlZy13aXRoLWNvbG9yLXByb2ZpbGUtZXhwZWN0ZWQucG5nOiBBZGRlZC4KICAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvcGxhdGZvcm0vY2hyb21pdW0v
dmlydHVhbC9kZWZlcnJlZC9mYXN0L2ltYWdlcy9wbmctd2l0aC1jb2xvci1wcm9maWxlLWV4cGVj
dGVkLnBuZzogQWRkZWQuCiAKLTIwMTItMTAtMTkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lA
d2Via2l0Lm9yZz4KKzIwMTItMTAtMTkgIENzYWJhIE9zenRyb2dvbo+roWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMTkxNS4KICAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTMxOTE1CkBAIC04NzA1LDcgKzg3
MzMsNyBAQAogICAgICAgICBxdWlyay1vcnBoYW5lZC11bml0cy5odG1sIHNob3VsZCBiZSByZW1v
dmVkIGZyb20gVGVzdEV4cGVjdGF0aW9ucy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk5ODA3CiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6
dHJvZ29uw6FjLgorICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb26Pq6FjLgogCiAg
ICAgICAgIHF1aXJrLW9ycGhhbmVkLXVuaXRzLmh0bWwgaXMgbm8gbW9yZSBleGlzdGVkLCBzbyBp
dCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIFRlc3RFeHBlY3RhdGlvbnMuCiAKQEAgLTEwMjkyLDcg
KzEwMzIwLDcgQEAKIAogICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgog
Ci0yMDEyLTEwLTE3ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRl
bC5jb20+CisyMDEyLTEwLTE3ICBEb21pbmlrIFKPq9N0dHNjaGVzICA8ZG9taW5pay5yb3R0c2No
ZXNAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgogCkBA
IC0xMDM4MCw3ICsxMDQwOCw3IEBACiAgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtYWN0aW9uLWF0
dHJpYnV0ZS1leHBlY3RlZC50eHQ6CiAgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtYWN0aW9uLWF0
dHJpYnV0ZS5odG1sOiBSZW1vdmVkIHVudXNlZCBkb25lQWN0aW9uMiB2YXJpYWJsZS4KIAotMjAx
Mi0xMC0xNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorMjAxMi0xMC0x
NiAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTMxNTE2IGFuZCByMTMxNTUwLgogICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzE1MTYKQEAgLTEwODQzLDcgKzEwODcxLDcgQEAK
ICAgICAgICAgKiBjc3MzL2ZsZXhib3gvc3RyZXRjaC1pbnB1dC1pbi1jb2x1bW4tZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCiAgICAgICAgICogY3NzMy9mbGV4Ym94L3N0cmV0Y2gtaW5wdXQtaW4tY29s
dW1uLmh0bWw6IEFkZGVkLgogCi0yMDEyLTEwLTE2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CisyMDEyLTEwLTE2ICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcsIHVuc2tpcCBhIG5v
dyBwYXNzaW5nIHRlc3QuCiAKQEAgLTExNzM2LDcgKzExNzY0LDcgQEAKIAogICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CiAKLTIwMTItMTAtMTUgIERvbWluaWsg
UsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KKzIwMTItMTAtMTUgIERv
bWluaWsgUo+r03R0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLgogCkBAIC0xMTc2Myw3ICsxMTc5MSw3IEBACiAg
ICAgICAgIFtRdF0gVW5za2lwIGFuZCByZWJhc2Ugbm93IHBhc3NpbmcgdGVzdHMuCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODgyNAogCi0gICAgICAg
IFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKyAgICAgICAgUmV2aWV3ZWQgYnkgQ3Nh
YmEgT3N6dHJvZ29uj6uhYy4KIAogICAgICAgICBVcGRhdGluZyB0ZXN0cyByZXN1bHRzLgogCkBA
IC0xMzAwMSw3ICsxMzAyOSw3IEBACiAKICAgICAgICAgKiBwbGF0Zm9ybS9lZmwvVGVzdEV4cGVj
dGF0aW9uczoKIAotMjAxMi0xMC0xMiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgorMjAxMi0xMC0xMiAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgogCkBAIC0xMzE3OCw3ICsxMzIw
Niw3IEBACiAKICAgICAgICAgKiBwbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9uczoKIAotMjAx
Mi0xMC0xMiAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1bmcuY29t
PgorMjAxMi0xMC0xMiAgTWljaGGPqcggUGFrdY+pyGEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5nLgogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkxNjEKQEAgLTEzMTk4LDcg
KzEzMjI2LDcgQEAKICAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLWJpbmQtZmFr
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgogICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlL2NvbnNv
bGUtYmluZC1mYWtlLmh0bWw6IEFkZGVkLgogCi0yMDEyLTEwLTEyICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CisyMDEyLTEwLTEyICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcsIHVw
ZGF0ZSBleHBlY3RlZCBmaWxlcywgc2tpcCBuZXcgZmFpbGluZyB0ZXN0cy4KIApAQCAtMTM2MDYs
MTMgKzEzNjM0LDEzIEBACiAKICAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zOgogCi0yMDEyLTEwLTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CisyMDEyLTEwLTExICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8b3NzeUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcsIHNraXAgbmV3IGZhaWxpbmcgdGVz
dHMuCiAKICAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zOgogCi0yMDEyLTEw
LTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisyMDEyLTEwLTExICBD
c2FiYSBPc3p0cm9nb26Pq6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5y
ZXZpZXdlZCBnYXJkZW5pbmcsIHVuc2tpcCBhbmQgcmViYXNlIG5vdyBwYXNzaW5nIHRlc3RzLgog
CkBAIC0xMzg4Niw3ICsxMzkxNCw3IEBACiAKICAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9uczoKIAotMjAxMi0xMC0xMSAgw4Fkw6FtIEthbGxhaSAgPGthZGFtQGluZi51LXN6
ZWdlZC5odT4KKzIwMTItMTAtMTEgII+qoWSPq6FtIEthbGxhaSAgPGthZGFtQGluZi51LXN6ZWdl
ZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nIGFmdGVyIDEzMTA1MCwg
MTMxMDUxLgogCkBAIC0xMzk0Niw3ICsxMzk3NCw3IEBACiAgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9mb3Jtcy90aW1lL3RpbWUtc3VnZ2VzdGlvbi1waWNrZXIta2V5LW9wZXJhdGlv
bnMtZXhwZWN0ZWQudHh0OgogICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMv
dGltZS90aW1lLXN1Z2dlc3Rpb24tcGlja2VyLWtleS1vcGVyYXRpb25zLmh0bWw6CiAKLTIwMTIt
MTAtMTEgIMOBZMOhbSBLYWxsYWkgIDxrYWRhbUBpbmYudS1zemVnZWQuaHU+CisyMDEyLTEwLTEx
ICCPqqFkj6uhbSBLYWxsYWkgIDxrYWRhbUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0
XSBSZXZpZXdpbmcgUXQgVGVzdEV4cGVjdGF0aW9ucy4gVW5za2lwIG5vdyBwYXNzaW5nIHRlc3Rz
LgogCkBAIC0xMzk2OSw3ICsxMzk5Nyw3IEBACiAgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
Y3NzLWdlbmVyYXRlZC1jb250ZW50L3RhYmxlLXJvdy1ncm91cC10by1pbmxpbmUtZXhwZWN0ZWQu
cG5nOgogICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC90
YWJsZS1yb3ctZ3JvdXAtdG8taW5saW5lLWV4cGVjdGVkLnR4dDoKIAotMjAxMi0xMC0xMSAgS3Jp
c3TDs2YgS29zenR5w7MgIDxra3Jpc3RvZkBpbmYudS1zemVnZWQuaHU+CisyMDEyLTEwLTExICBL
cmlzdI+r0WYgS29zenR5j6vRICA8a2tyaXN0b2ZAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAg
IFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcgYWZ0ZXIgcjEzMTA0NC4KIApAQCAtMTQwNDIsNyAr
MTQwNzAsNyBAQAogCiAgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CiAK
LTIwMTItMTAtMTEgIE1pY2hhxYIgUGFrdcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5n
LmNvbT4KKzIwMTItMTAtMTEgIE1pY2hhj6nIIFBha3WPqchhIHZlbCBSdXRrYSAgPG0ucGFrdWxh
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBiYXNlbGluZXMgZm9yIGVkaXRpbmcv
cGFzdGVib2FyZC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk5MDE4CkBAIC0xNDEwOCw3ICsxNDEzNiw3IEBACiAKICAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgogCi0yMDEyLTEwLTExICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CisyMDEyLTEwLTExICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBtb3JuaW5nIGdhcmRl
bmluZywgc2tpcCBuZXcgZmFpbGluZyB0ZXN0cy4KIApAQCAtMTQxNzgsNyArMTQyMDYsNyBAQAog
CiAyMDEyLTEwLTEwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKLSAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEyNDcyNDYwPiB0ZXh0LWNvbWJpbmUgZG9lc27igJl0IHVzZSB0aGly
ZC0gYW5kIHF1YXJ0ZXItd2lkdGggdmFyaWFudHMgd2hlbiB1c2VkIHdpdGggQGZvbnQtZmFjZQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI0NzI0NjA+IHRleHQtY29tYmluZSBkb2VzbqHHdCB1
c2UgdGhpcmQtIGFuZCBxdWFydGVyLXdpZHRoIHZhcmlhbnRzIHdoZW4gdXNlZCB3aXRoIEBmb250
LWZhY2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
OTYxCiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KQEAgLTE1NDcxLDcgKzE1NDk5
LDcgQEAKICAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2NhbGVuZGFyLXBp
Y2tlci9jYWxlbmRhci1waWNrZXItYXBwZWFyYW5jZS1zdGVwLWV4cGVjdGVkLnR4dDogQWRkZWQu
CiAgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRhci1waWNrZXIv
Y2FsZW5kYXItcGlja2VyLWFwcGVhcmFuY2Utc3RlcC5odG1sOiBBZGRlZC4KIAotMjAxMi0xMC0w
OSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorMjAxMi0xMC0wOSAgQ3Nh
YmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2
aWV3ZWQgZ2FyZGVuaW5nLCBza2lwIHRlc3RzIHRvIHBhaW50IHRoZSBib3QgZ3JlZW4uCiAKQEAg
LTE1NTE3LDcgKzE1NTQ1LDcgQEAKIAogICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VzL2xv
YWQtYW5kLXN0YWxsLnBocDoKIAotMjAxMi0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgorMjAxMi0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgogCkBAIC0xNTU0
MCw3ICsxNTU2OCw3IEBACiAgICAgICAgIFtRdF1SRUdSRVNTSU9OKHIxMjAxMDcpOiBJdCBtYWRl
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLWV4YWN0LW1hdGNoaW5nLmh0bWwgZmFp
bHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4OTEz
CiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgorICAgICAgICBSZXZp
ZXdlZCBieSBDc2FiYSBPc3p0cm9nb26Pq6FjLgogCiAgICAgICAgIEJsaW5kIGZpeCB0byB0cnkg
dG8gZml4IHRoZSB0ZXN0LgogCkBAIC0xNTU3Miw3ICsxNTYwMCw3IEBACiAgICAgICAgIFtRdF0g
bmV3IHRlc3QgaHR0cC90ZXN0cy9jb29raWVzL3NpbmdsZS1xdW90ZWQtdmFsdWUuaHRtbCBpcyBm
YWlsaW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NjA2NgogCi0gICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uj6uhYy4KIAogICAgICAgICBVbnNraXBwaW5nIHRl
c3QuCiAKQEAgLTE1NjcxLDcgKzE1Njk5LDcgQEAKICAgICAgICAgW1F0XVJFR1JFU1NJT04ocjEy
ODY5OSk6IEl0IG1hZGUgMiBmYXN0L2pzL2RmZyB0ZXN0cyBhc3NlcnQKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2OTA3CiAKLSAgICAgICAgUmV2aWV3
ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgorICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0
cm9nb26Pq6FjLgogCiAgICAgICAgIFVuc2tpcHBpbmcgdGVzdHMuCiAKQEAgLTE1OTk3LDcgKzE2
MDI1LDcgQEAKICAgICAgICAgW1F0XSBtb2RpZnktdXAtb24tcnRsLXdyYXBwaW5nLXRleHQuaHRt
bCBmYWlscyBvbiBEUlQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwMjkxCiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgor
ICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb26Pq6FjLgogCiAgICAgICAgIFVuc2tp
cHBpbmcgZWRpdGluZy9zZWxlY3Rpb24vbW9kaWZ5LXVwLW9uLXJ0bC13cmFwcGluZy10ZXh0Lmh0
bWwKIApAQCAtMTYyMDQsNyArMTYyMzIsNyBAQAogCiAgICAgICAgICogcGxhdGZvcm0vcXQvVGVz
dEV4cGVjdGF0aW9uczoKIAotMjAxMi0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgorMjAxMi0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbUXRdIFVuc2tpcCBhbmQgcmViYXNlIG5vdyBwYXNzaW5nIHRlc3Rz
LgogCkBAIC0xNjM3MCw3ICsxNjM5OCw3IEBACiAKICAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9uczoKIAotMjAxMi0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgorMjAxMi0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbUXRdIFVuc2tpcCBub3cgcGFzc2luZyB0ZXN0cy4KIApAQCAtMTYz
OTksNyArMTY0MjcsNyBAQAogCiAgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9u
czoKIAotMjAxMi0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgor
MjAxMi0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBbUXRdIFVuc2tpcCBhbmQgcmViYXNlIGEgbm93IHBhc3NpbmcgdGVzdC4KIApAQCAtMTY0
MDcsMTQgKzE2NDM1LDE0IEBACiAgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9yZXBhaW50L2xp
bmUtZmxvdy13aXRoLWZsb2F0cy1pbi1yZWdpb25zLWV4cGVjdGVkLnBuZzoKICAgICAgICAgKiBw
bGF0Zm9ybS9xdC9mYXN0L3JlcGFpbnQvbGluZS1mbG93LXdpdGgtZmxvYXRzLWluLXJlZ2lvbnMt
ZXhwZWN0ZWQudHh0OgogCi0yMDEyLTEwLTA5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CisyMDEyLTEwLTA5ICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8b3NzeUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtRdF0gVW5za2lwIGZhc3QvdHJhbnNmb3Jtcy9zY3JvbGxJbnRvVmll
dy10cmFuc2Zvcm1lZC5odG1sLgogCiAgICAgICAgICogcGxhdGZvcm0vcXQtNS4wLXdrMi9UZXN0
RXhwZWN0YXRpb25zOgogICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CiAK
LTIwMTItMTAtMDkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKzIwMTIt
MTAtMDkgIENzYWJhIE9zenRyb2dvbo+roWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W1F0XSBVbnNraXAgYW5kIHJlYmFzZSBub3cgcGFzc2luZyB0ZXN0cy4KIApAQCAtMTY0MzQsNyAr
MTY0NjIsNyBAQAogCiAgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CiAK
LTIwMTItMTAtMDkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKzIwMTIt
MTAtMDkgIENzYWJhIE9zenRyb2dvbo+roWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W1F0XSBVbnNraXAgYW5kIHJlYmFzaW5nIG5vdyBwYXNzaW5nIHRlc3RzLgogCkBAIC0xNjQ2MCwx
OSArMTY0ODgsMTkgQEAKICAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL3Bh
Z2UtcG9wdXAvcGFnZS1wb3B1cC1hZGp1c3QtcmVjdC5odG1sOiBBZGRlZC4KICAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS1hbmRyb2lkL1Rlc3RFeHBlY3RhdGlvbnM6IEFkZGVkIHBsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZm9ybXMvcGFnZS1wb3B1cC4KIAotMjAxMi0xMC0wOSAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorMjAxMi0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29u
j6uhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVuc2tpcCBub3cgcGFzc2lu
ZyB0ZXN0cy4KIAogICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CiAKLTIw
MTItMTAtMDkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKzIwMTItMTAt
MDkgIENzYWJhIE9zenRyb2dvbo+roWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0
XSBVbnNraXAgbm93IHBhc3NpbmcgdGVzdHMuCiAKICAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZXN0
RXhwZWN0YXRpb25zOgogCi0yMDEyLTEwLTA5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CisyMDEyLTEwLTA5ICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8b3NzeUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtRdF0gVW5za2lwIG5vdyBwYXNzaW5nIHRlc3RzLgogCkBAIC0xNjQ4
MCwxMyArMTY1MDgsMTMgQEAKICAgICAgICAgKiBwbGF0Zm9ybS9xdC01LjAtd2syL1Rlc3RFeHBl
Y3RhdGlvbnM6CiAgICAgICAgICogcGxhdGZvcm0vcXQtNS4wL1Rlc3RFeHBlY3RhdGlvbnM6CiAK
LTIwMTItMTAtMDkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKzIwMTIt
MTAtMDkgIENzYWJhIE9zenRyb2dvbo+roWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBnYWRlbmluZyBhZnRlciByMTMwNzA5LgogCiAgICAgICAgICogZmFzdC9oYXJu
ZXNzL3Jlc3VsdHMtZXhwZWN0ZWQudHh0OgogCi0yMDEyLTEwLTA5ICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CisyMDEyLTEwLTA5ICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBVbnNraXAgbm93IHBhc3Npbmcg
dGVzdHMuCiAKQEAgLTE2NDk3LDcgKzE2NTI1LDcgQEAKICAgICAgICAgW1F0XVJFR1JFU1NJT04o
cjEyODY5OSk6IEl0IG1hZGUgMiBmYXN0L2pzL2RmZyB0ZXN0cyBhc3NlcnQKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2OTA3CiAKLSAgICAgICAgUmV2
aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgorICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBP
c3p0cm9nb26Pq6FjLgogCiAgICAgICAgIFVuc2tpcHBpbmcgdGVzdHMuCiAKQEAgLTE3MDAwLDcg
KzE3MDI4LDcgQEAKICAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCiAgICAgICAg
ICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHln
b24tMDA0Lmh0bWw6IEFkZGVkLgogCi0yMDEyLTEwLTA4ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CisyMDEyLTEwLTA4ICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8b3NzeUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuIEFkZCBQTkdz
IGFmdGVyIHIxMzA2NTMsCiAgICAgICAgIGFuZCBza2lwIHRlc3RzIG9uIFF0LVdLMiwgYmVjYXVz
ZSB0aGV5IGZhaWwgb24gaXQuCkBAIC0xODEwMSw3ICsxODEyOSw3IEBACiAgICAgICAgICogcGxh
dGZvcm0vZWZsL3N2Zy9XM0MtU1ZHLTEuMS90eXBlcy1iYXNpY0RPTS0wMS1iLWV4cGVjdGVkLnBu
ZzogQWRkZWQuCiAgICAgICAgICogcGxhdGZvcm0vZWZsL3N2Zy9XM0MtU1ZHLTEuMS90eXBlcy1i
YXNpY0RPTS0wMS1iLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAKLTIwMTItMTAtMDggIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKzIwMTItMTAtMDggIENzYWJhIE9zenRyb2dv
bo+roWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFJFR1JFU1NJT04o
cjEzMDYyOSk6IEl0IG1hZGUgdG91Y2hhZGp1c3RtZW50L2ZvY3Vzb3V0LW9uLXRvdWNoLmh0bWwg
ZmFpbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg2
NDIKQEAgLTE4MTEwLDcgKzE4MTM4LDcgQEAKIAogICAgICAgICAqIHBsYXRmb3JtL3F0LTUuMC13
azIvVGVzdEV4cGVjdGF0aW9uczoKIAotMjAxMi0xMC0wOCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8
b3NzeUB3ZWJraXQub3JnPgorMjAxMi0xMC0wOCAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIHBsdWdpbnMvcmVmY291bnQtbGVha3MuaHRtbCBm
YWlscwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg2
NDAKQEAgLTE4MTQ1LDcgKzE4MTczLDcgQEAKICAgICAgICAgW1F0XSBSZWVuYWJsZSBwbHVnaW4g
dGVzdHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
NTI4CiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgorICAgICAgICBS
ZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb26Pq6FjLgogCiAgICAgICAgIFJlZW5hYmxlIHBsdWdp
biB0ZXN0cy4gU2tpcCBuZXcgZmFpbHVyZXMuCiAKQEAgLTE5MTEzLDcgKzE5MTQxLDcgQEAKIAog
ICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgogCi0yMDEyLTEwLTA1ICBD
c2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisyMDEyLTEwLTA1ICBDc2FiYSBP
c3p0cm9nb26Pq6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVXBkYXRlcyBl
eHBlY3RlZCB0ZXN0IHJlc3VsdHMgZm9yIHRoZSBleHBhbmRlZCBjb3ZlcmFnZSBpbiB0ZXN0Zm9u
dHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDI1
CkBAIC0xOTE0Niw3ICsxOTE3NCw3IEBACiAgICAgICAgIFtRdF0gVXBkYXRlcyBleHBlY3RlZCB0
ZXN0IHJlc3VsdHMgZm9yIHRoZSBleHBhbmRlZCBjb3ZlcmFnZSBpbiB0ZXN0Zm9udHMKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDI1CiAKLSAgICAg
ICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgorICAgICAgICBSZXZpZXdlZCBieSBD
c2FiYSBPc3p0cm9nb26Pq6FjLgogCiAgICAgICAgIFRoZSBRdCB0ZXN0Zm9udHMgcmVwb3NpdG9y
eSB3YXMgZXhwYW5kZWQgd2l0aCB0aGUgY3Jvc2NvcmUgc2V0IG9mCiAgICAgICAgIGZvbnRzLCB3
aGljaCBwcm92aWRlcyBhIGdyZWF0IG51bWJlciBvZiBuZXcgZ2x5cGhzIChlLmcuIGhlYnJldwpA
QCAtMTkxODcsNyArMTkyMTUsNyBAQAogCiAgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVj
dGF0aW9uczoKIAotMjAxMi0xMC0wNSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgorMjAxMi0xMC0wNSAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCB1cGRhdGUgYW4gZXhwZWN0ZWQg
ZmlsZSBmb3IgbmV3ZXIgUXQ1LgogCkBAIC0xOTIzMiw3ICsxOTI2MCw3IEBACiAgICAgICAgICog
cGxhdGZvcm0vZ3RrL2VkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDctZXhwZWN0ZWQu
dHh0OgogICAgICAgICAqIHBsYXRmb3JtL2d0ay9lZGl0aW5nL3Bhc3RlYm9hcmQvdW5yZW5kZXJl
ZC1ici1leHBlY3RlZC50eHQ6CiAKLTIwMTItMTAtMDUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9z
c3lAd2Via2l0Lm9yZz4KKzIwMTItMTAtMDUgIENzYWJhIE9zenRyb2dvbo+roWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUgQ1NTIGNvbXBvc2l0aW5nIGJ5IGRlZmF1
bHQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDkw
CkBAIC0xOTMxNCw3ICsxOTM0Miw3IEBACiAKICAgICAgICAgW1F0XSBHYXJkZW5pbmcsIHNraXAg
c29tZSBmYWlsaW5nIHRlc3QuCiAKLSAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29u
w6FjLgorICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb26Pq6FjLgogCiAgICAgICAg
ICogcGxhdGZvcm0vcXQtNS4wLXdrMi9UZXN0RXhwZWN0YXRpb25zOgogICAgICAgICAqIHBsYXRm
b3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CkBAIC0xOTk5OCw3ICsyMDAyNiw3IEBACiAgICAgICAg
ICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tYWJzb2x1dGUtZGVz
Y2VuZGFudC1leHBlY3RlZC50eHQ6IEFkZGVkLgogICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVy
LWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLWFic29sdXRlLWRlc2NlbmRhbnQuaHRtbDogQWRkZWQu
CiAKLTIwMTItMTAtMDQgIMOBZMOhbSBLYWxsYWkgIDxrYWRhbUBpbmYudS1zemVnZWQuaHU+Cisy
MDEyLTEwLTA0ICCPqqFkj6uhbSBLYWxsYWkgIDxrYWRhbUBpbmYudS1zemVnZWQuaHU+CiAKICAg
ICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZyBhZnRlciByMTMwMzg1LiBTa2lwIHNvbWUg
ZmFpbGluZyB0ZXN0LgogCkBAIC0yMDAxNSw3ICsyMDA0Myw3IEBACiAgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0LXRhZy1leHBlY3RlZC50eHQ6CiAgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlLXNjcmlwdC1tYXBwaW5nLWV4cGVjdGVkLnR4dDoK
IAotMjAxMi0xMC0wNCAgw4Fkw6FtIEthbGxhaSAgPGthZGFtQGluZi51LXN6ZWdlZC5odT4KKzIw
MTItMTAtMDQgII+qoWSPq6FtIEthbGxhaSAgPGthZGFtQGluZi51LXN6ZWdlZC5odT4KIAogICAg
ICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nIGFmdGVyIHIxMzAzODUuIFNraXAgYSBmYWls
aW5nIHRlc3QuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Mjc0MQpAQCAtMjAwODAsNyArMjAxMDgsNyBAQAogICAgICAgICAqIHBsYXRmb3JtL2VmbC9z
dmcvZmlsdGVycy9zaGFkb3ctb24tcmVjdC13aXRoLWZpbHRlci1leHBlY3RlZC5wbmc6CiAgICAg
ICAgICogcGxhdGZvcm0vZWZsL3N2Zy9yZXBhaW50L2lubmVyLXN2Zy1jaGFuZ2Utdmlld0JveC1j
b250cmFjdC1leHBlY3RlZC5wbmc6IEFkZGVkLgogCi0yMDEyLTEwLTA0ICDDgWTDoW0gS2FsbGFp
ICA8a2FkYW1AaW5mLnUtc3plZ2VkLmh1PgorMjAxMi0xMC0wNCAgj6qhZI+roW0gS2FsbGFpICA8
a2FkYW1AaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gUmV2aWV3aW5nIG9sZCBidWdz
IGluIFF0IFRlc3RFeHBlY3RhdGlvbnMuIFVuc2tpcCBub3cgcGFzc2luZyB0ZXN0LgogCkBAIC0y
MDE5Nyw3ICsyMDIyNSw3IEBACiAKICAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zOgogCi0yMDEyLTEwLTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CisyMDEyLTEwLTA0ICBDc2FiYSBPc3p0cm9nb26Pq6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtRdF1bV0syXSBVbnJldmlld2VkIGdhcmRlbmluZywgc2tpcCBuZXcgY3Jh
c2hpbmcgdGVzdHMgdG8gcGFpbnQgdGhlIGJvdCBncmVlbi4KIApAQCAtMjA5MTUsNyArMjA5NDMs
NyBAQAogCiAgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKIAot
MjAxMi0xMC0wMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorMjAxMi0x
MC0wMyAgQ3NhYmEgT3N6dHJvZ29uj6uhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBb
UXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCBhZGQgZXhwZWN0ZWQgZmlsZXMgZm9yIG5ldyBwYXNz
aW5nIHRlc3RzLgogCkBAIC0yMDk3NSw3ICsyMTAwMyw3IEBACiAgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9mb3Jtcy90aW1lL3RpbWUtc3VnZ2VzdGlvbi1waWNrZXItbW91c2Utb3Bl
cmF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgogICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZm9ybXMvdGltZS90aW1lLXN1Z2dlc3Rpb24tcGlja2VyLW1vdXNlLW9wZXJhdGlvbnMu
aHRtbDogQWRkZWQuCiAKLTIwMTItMTAtMDMgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Vi
a2l0Lm9yZz4KKzIwMTItMTAtMDMgIENzYWJhIE9zenRyb2dvbo+roWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUgbW9jayBzY3JvbGxiYXJzCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAxMQpAQCAtMjExNDgsNyArMjEx
NzYsNyBAQAogICAgICAgICAoc3ludGF4RXJyb3IpOgogICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnM6IHJlLWVuYWJsZWQgdGhlIHRlc3QuCiAKLTIwMTItMTAtMDMg
IENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKzIwMTItMTAtMDMgIENzYWJh
IE9zenRyb2dvbo+roWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUg
bW9jayBzY3JvbGxiYXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODAxMQpAQCAtMjI0MzksNyArMjI0NjcsNyBAQAogICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtLW1hYy9mYXN0L2Nzcy90ZXh0LW92ZXJmbG93LWlucHV0LWV4cGVjdGVkLnBuZzoK
ICAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9mb3Jtcy9ib3gtc2hhZG93LW92
ZXJyaWRlLWV4cGVjdGVkLnBuZzoKIAotMjAxMi0xMC0wMyAgRG9taW5payBSw7Z0dHNjaGVzICA8
ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tPgorMjAxMi0xMC0wMyAgRG9taW5payBSj6vTdHRz
Y2hlcyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBHYXJk
ZW5pbmcgYWZ0ZXIgcjEzMDE4NiBhbmQgcjEzMDIzMQogCkBAIC0yMjQ2MSw3ICsyMjQ4OSw3IEBA
CiAgICAgICAgIFtRdF1bRFJUXSBBZGQgc3VwcG9ydCBmb3Igb3ZlcnJpZGluZyB0aGUgIldlYktp
dERpc3BsYXlJbWFnZXNLZXkiIHByZWZlcmVuY2UuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODIwMAogCi0gICAgICAgIFJldmlld2VkIGJ5IENzYWJh
IE9zenRyb2dvbsOhYy4KKyAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uj6uhYy4K
IAogICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6IFVuc2tpcCBhIGZldyB0
ZXN0cyB0aGF0IGRlcGVuZGVkCiAgICAgICAgIG9uIHRoaXMgZmVhdHVyZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIt
c2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZWY2ZWIzNTAzZjExMjdhMGFlYWYyOTY4ODc2NDA5NzM0
NjNmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29t
cG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTM1IEBACitUZXN0cyBmb3IgQ29tcG9zZWQgU2hhZG93IERPTSBUcmVlIFRy
YXZlcnNhbCBBUElzLiBDYW4gb25seSBydW4gd2l0aGluIERSVAorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aG91dCBzaGFkb3cgZWxlbWVu
dAorQ29tcG9zZWQgU2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWMKKworVHJhdmVy
c2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1jCitUcmF2ZXJzZSBpbiBiYWNrd2Fy
ZC4KK0RJVgkgaWQ9YworRElWCSBpZD1hCisKK011bHRpcGxlIHNoYWRvdyByb290IHdpdGggc2hh
ZG93IGVsZW1lbnQKK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1j
CisJRElWCSBpZD1iCisJRElWCSBpZD1lCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlk
PWEKK0RJVgkgaWQ9YworRElWCSBpZD1iCitESVYJIGlkPWUKK1RyYXZlcnNlIGluIGJhY2t3YXJk
LgorRElWCSBpZD1lCitESVYJIGlkPWIKK0RJVgkgaWQ9YworRElWCSBpZD1hCisKK011bHRpcGxl
IHNoYWRvdyByb290IHdpdGggc2hhZG93IGVsZW1lbnQsIGNhc2UgMgorQ29tcG9zZWQgU2hhZG93
IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWYKKwlESVYJIGlkPWMKKwlESVYJIGlkPWIKKwlE
SVYJIGlkPWUKKwlESVYJIGlkPWgKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQor
RElWCSBpZD1mCitESVYJIGlkPWMKK0RJVgkgaWQ9YgorRElWCSBpZD1lCitESVYJIGlkPWgKK1Ry
YXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1oCitESVYJIGlkPWUKK0RJVgkgaWQ9YgorRElW
CSBpZD1jCitESVYJIGlkPWYKK0RJVgkgaWQ9YQorCitzaGFkb3cgcmVwcm9qZWN0aW9uCitDb21w
b3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCQlESVYJIGlkPWQKKwkJ
RElWCSBpZD1hLWNoaWxkCisJCURJVgkgaWQ9ZgorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElW
CSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9ZAorRElWCSBpZD1hLWNoaWxkCitESVYJIGlkPWYK
K1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1mCitESVYJIGlkPWEtY2hpbGQKK0RJVgkg
aWQ9ZAorRElWCSBpZD1iCitESVYJIGlkPWEKKworc2hhZG93IHJlcHJvamVjdGlvbiwgdGFrZSAy
CitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9ZAorCQlESVYJIGlk
PWYKKwkJRElWCSBpZD1iCisJCURJVgkgaWQ9aAorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElW
CSBpZD1hCitESVYJIGlkPWQKK0RJVgkgaWQ9ZgorRElWCSBpZD1iCitESVYJIGlkPWgKK1RyYXZl
cnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1oCitESVYJIGlkPWIKK0RJVgkgaWQ9ZgorRElWCSBp
ZD1kCitESVYJIGlkPWEKKworc2hhZG93IGZhbGxiYWNrIGVsZW1lbnQgcmVwcm9qZWN0aW9uCitD
b21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9aQorCQlESVYJIGlkPWsK
KwkJRElWCSBpZD1jCisJCURJVgkgaWQ9YgorCQlESVYJIGlkPWcKKwkJRElWCSBpZD1oCisJCURJ
VgkgaWQ9bQorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWkKK0RJ
VgkgaWQ9aworRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9ZworRElWCSBpZD1oCitESVYJ
IGlkPW0KK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1tCitESVYJIGlkPWgKK0RJVgkg
aWQ9ZworRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9aworRElWCSBpZD1pCitESVYJIGlk
PWEKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ct
dHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFkb3ctcmVwcm9qZWN0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWNmODg1ZmJjMDM4ZjRlZmJiMmQyZjc3MDMzZWMyMjI0YjllMDQw
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3Nl
ZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi5odG1sCkBAIC0wLDAgKzEs
MTYxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0ic2FuZGJveCI+PC9kaXY+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRlc3RzIGZvciBDb21wb3NlZCBTaGFkb3cgRE9NIFRyZWUgVHJhdmVyc2Fs
IEFQSXMuIENhbiBvbmx5IHJ1biB3aXRoaW4gRFJUIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gZHVtcE5vZGUobm9k
ZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAnKG51bGwpJworICAgIHZhciBv
dXRwdXQgPSBub2RlLm5vZGVOYW1lICsgIlx0IjsKKyAgICBpZiAobm9kZS5pZCkKKyAgICAgICAg
b3V0cHV0ICs9ICcgaWQ9JyArIG5vZGUuaWQ7CisgICAgaWYgKG5vZGUuY2xhc3NOYW1lKQorICAg
ICAgICBvdXRwdXQgKz0gJyBjbGFzcz0nICsgbm9kZS5jbGFzc05hbWU7CisgICAgcmV0dXJuIG91
dHB1dDsKK30KKworZnVuY3Rpb24gZHVtcENvbXBvc2VkU2hhZG93VHJlZShub2RlLCBpbmRlbnQp
Cit7CisgICAgaW5kZW50ID0gaW5kZW50IHx8ICIiOworICAgIHZhciBvdXRwdXQgPSBpbmRlbnQg
KyBkdW1wTm9kZShub2RlKSArICJcbiI7CisgICAgdmFyIGNoaWxkOworICAgIGZvciAoY2hpbGQg
PSBpbnRlcm5hbHMuZmlyc3RDaGlsZEJ5V2Fsa2VyKG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBpbnRl
cm5hbHMubmV4dFNpYmxpbmdCeVdhbGtlcihjaGlsZCkpCisgICAgICAgICBvdXRwdXQgKz0gZHVt
cENvbXBvc2VkU2hhZG93VHJlZShjaGlsZCwgaW5kZW50ICsgIlx0Iik7CisgICAgcmV0dXJuIG91
dHB1dDsKK30KKworZnVuY3Rpb24gbGFzdE5vZGVCeVdhbGtlcihyb290KQoreworICAgIHZhciBs
YXN0Tm9kZSA9IHJvb3Q7CisgICAgd2hpbGUgKGludGVybmFscy5sYXN0Q2hpbGRCeVdhbGtlcihs
YXN0Tm9kZSkpCisgICAgICAgIGxhc3ROb2RlID0gaW50ZXJuYWxzLmxhc3RDaGlsZEJ5V2Fsa2Vy
KGxhc3ROb2RlKTsKKyAgICByZXR1cm4gbGFzdE5vZGU7Cit9CisKK2Z1bmN0aW9uIHNob3dDb21w
b3NlZFNoYWRvd1RyZWVCeVRyYXZlcnNpbmdJbkZvcndhcmQocm9vdCkKK3sKKyAgICB2YXIgbm9k
ZSA9IHJvb3Q7CisgICAgdmFyIGxhc3QgPSBsYXN0Tm9kZUJ5V2Fsa2VyKHJvb3QpOworICAgIHdo
aWxlIChub2RlKSB7CisgICAgICAgIGRlYnVnKGR1bXBOb2RlKG5vZGUpKTsKKyAgICAgICAgaWYg
KG5vZGUgPT0gbGFzdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBub2RlID0gaW50ZXJu
YWxzLm5leHROb2RlQnlXYWxrZXIobm9kZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93Q29t
cG9zZWRTaGFkb3dUcmVlQnlUcmF2ZXJzaW5nSW5CYWNrd2FyZChyb290KQoreworICAgIHZhciBu
b2RlID0gbGFzdE5vZGVCeVdhbGtlcihyb290KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAg
ICBkZWJ1ZyhkdW1wTm9kZShub2RlKSk7CisgICAgICAgIGlmIChub2RlID09IHJvb3QpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgbm9kZSA9IGludGVybmFscy5wcmV2aW91c05vZGVCeVdh
bGtlcihub2RlKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3dDb21wb3NlZFNoYWRvd1RyZWUo
bm9kZSkKK3sKKyAgICBkZWJ1ZygnQ29tcG9zZWQgU2hhZG93IFRyZWU6Jyk7CisgICAgZGVidWco
ZHVtcENvbXBvc2VkU2hhZG93VHJlZShub2RlKSk7CisKKyAgICBkZWJ1ZygnVHJhdmVyc2UgaW4g
Zm9yd2FyZC4nKTsKKyAgICBzaG93Q29tcG9zZWRTaGFkb3dUcmVlQnlUcmF2ZXJzaW5nSW5Gb3J3
YXJkKG5vZGUpOworCisgICAgZGVidWcoJ1RyYXZlcnNlIGluIGJhY2t3YXJkLicpOworICAgIHNo
b3dDb21wb3NlZFNoYWRvd1RyZWVCeVRyYXZlcnNpbmdJbkJhY2t3YXJkKG5vZGUpOworCisgICAg
ZGVidWcoJycpOworfQorCitmdW5jdGlvbiBzaG93TmV4dE5vZGUobm9kZSkgeworICAgIHZhciBu
ZXh0ID0gaW50ZXJuYWxzLm5leHROb2RlQnlXYWxrZXIobm9kZSk7CisgICAgZGVidWcoJ05leHQg
bm9kZSBvZiBbJyArIGR1bXBOb2RlKG5vZGUpICsgJ10gaXMgWycgKyBkdW1wTm9kZShuZXh0KSAr
ICddJyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDb21wb3NlZFNoYWRvd1RyZWUobm9kZSkKK3sKKyAg
ICB2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CisgICAg
c2FuZGJveC5pbm5lckhUTUwgPSAnJzsKKyAgICBzYW5kYm94LmFwcGVuZENoaWxkKG5vZGUpOwor
ICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBzaG93Q29tcG9zZWRTaGFkb3dUcmVl
KG5vZGUpOworfQorCitkZWJ1ZygnTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aG91dCBzaGFkb3cg
ZWxlbWVudCcpOwordGVzdENvbXBvc2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdiJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSkpKTsKKworZGVidWcoJ011bHRpcGxlIHNoYWRvdyBy
b290IHdpdGggc2hhZG93IGVsZW1lbnQnKTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2QnfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkp
KSk7CisKK2RlYnVnKCdNdWx0aXBsZSBzaGFkb3cgcm9vdCB3aXRoIHNoYWRvdyBlbGVtZW50LCBj
YXNlIDInKTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2QnfSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnfSkpLAorICAgICAgICAgICAgICBj
cmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdnJ30pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdo
J30pKSkpOworCitkZWJ1Zygnc2hhZG93IHJlcHJvamVjdGlvbicpOwordGVzdENvbXBvc2VkU2hh
ZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYS1jaGlsZCd9KSwKKyAgICAgICAgICAgICAgY3Jl
YXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAn
Yyd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRl
bnQnLCB7J2lkJzogJ2UnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YnfSkpKSkpKTsK
KworZGVidWcoJ3NoYWRvdyByZXByb2plY3Rpb24sIHRha2UgMicpOwordGVzdENvbXBvc2VkU2hh
ZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hh
ZG93Um9vdChjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAnYyd9KSksCisgICAgICAgICAgICAg
IGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lk
JzogJ2UnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YnfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdj
b250ZW50JywgeydpZCc6ICdnJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdoJ30pKSkp
KSk7CisKK2RlYnVnKCdzaGFkb3cgZmFsbGJhY2sgZWxlbWVudCByZXByb2plY3Rpb24nKTsKK3Rl
c3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2Qn
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2UnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnc2hhZG93JywgeydpZCc6ICdmJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdnJ30pKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaCd9KSksCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2knfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFk
b3cnLCB7J2lkJzogJ2onfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2snfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdsJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdtJ30pKSkpKSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13
YWxrZXIuaHRtbAppbmRleCAwNmY3YTcxZjJhNGVkNDMwZjZhNDg0MDJhMGI1MmQ1ZGE0ZjA0OTE5
Li4yYmRiYWI2NzNmMGIwYzkxOGYzMmFhMTIwNTVjNGFmNTcyOGJlMTA4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVl
LXdhbGtlci5odG1sCkBAIC0xNjUsNiArMTY1LDcgQEAgdGVzdENvbXBvc2VkU2hhZG93VHJlZSgK
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2gnfSksCiAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdpJ30pKSk7CiAKK2ludGVybmFscy5hZGRyZXNz
KGRvY3VtZW50KTsKIGRlYnVnKCdUZXN0IGZvciBNdWx0aXBsZSBTaGFkb3dSb290cy4nKTsKIHRl
c3RDb21wb3NlZFNoYWRvd1RyZWUoCiAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwK
QEAgLTI4NywxOCArMjg4LDYgQEAgdGVzdENvbXBvc2VkU2hhZG93VHJlZSgKICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2NoaWxkLTEnLCAnY2xhc3MnOiAnZm9vJ30pLAog
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnbm90LXNlbGVjdGVkJywgJ2Ns
YXNzJzogJ2Zvbyd9KSwKICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2No
aWxkLTInLCAnY2xhc3MnOiAnZm9vJ30pKSk7Ci0KLS8qCi1kZWJ1ZygnVGVzdCBmb3IgbXVsdGlw
bGUgc2hhZG93IHJvb3RzIHdpdGggcmVwcm9qZWN0aW9ucy4nKTsKLXRlc3RDb21wb3NlZFNoYWRv
d1RyZWUoCi0gICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKLSAgICAgICAgICAgICAg
Y3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2NvbnRlbnQnKSksCi0gICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00o
J2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjY2hpbGQnfSkpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycpKSksCi0gICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjaGlsZCd9KSkpOwotKi8KLQogPC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1yZXByb2plY3Rpb24tY29tcGxleC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWNvbXBsZXguaHRtbAppbmRleCBiZTIxMDk5MzRlYjgyNDVj
ZWEwZTFkMGU2NTU5Y2Y3NDQwODFjNTI4Li41YmUwMzIwOTE5YjFhMmIyMmMwMDYzMjU4YTdhNzVk
NTRmYmJmMWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1yZXByb2plY3Rpb24tY29tcGxleC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0bWwKQEAgLTE0LDEwICsxNCwxMCBA
QAogCiA8c2NyaXB0PgogdmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9z
dDEpOwotc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj48Y29udGVudCBz
ZWxlY3Q9Ii5BIj48L2NvbnRlbnQ+PHNoYWRvdz48L3NoYWRvdz48ZGl2IGNsYXNzPSIuQSI+QTwv
ZGl2PjwvZGl2Pic7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIiPjxj
b250ZW50IHNlbGVjdD0iLkEiPjwvY29udGVudD48c2hhZG93Pjwvc2hhZG93PjxkaXYgY2xhc3M9
IkEiPkE8L2Rpdj48L2Rpdj4nOwogCiB2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKSk7Ci1zaGFkb3dSb290Mi5p
bm5lckhUTUwgPSAnPGRpdj48aDI+QTwvaDI+PGNvbnRlbnQgc2VsZWN0PSJkaXYiPjwvY29udGVu
dD48aDI+QjwvaDI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nCitzaGFkb3dSb290Mi5pbm5lckhU
TUwgPSAnPGRpdj48aDI+QTwvaDI+PGNvbnRlbnQgc2VsZWN0PSIuQSI+PC9jb250ZW50PjxoMj5C
PC9oMj48c2hhZG93Pjwvc2hhZG93PjwvZGl2PicKIDwvc2NyaXB0PgogCiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24t
ZmFsbGJhY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250
ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sCmluZGV4IDkwZGQ1NmE3NTg0
ZDY1MzgyN2U0NTk0MjA1ZTIyYTJmZjUzY2U3MDUuLjQ4YzUyYjIwY2YwNWU0Y2MxMDhkMmNhM2Uz
YjVhNWU4ODAzY2UyNWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9j
b250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3Rl
ZC5odG1sCkBAIC04LDYgKzgsNyBAQAogPGRpdiBpZD0iaG9zdDEiPgogICAgIDxkaXYgaWQ9Imhv
c3QyIj4KICAgICAgICAgPGRpdj5jb250ZW50IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KKyAgICAg
ICAgPGRpdj5zaGFkb3cgZmFsbGJhY2sgZWxlbWVudDwvZGl2PgogICAgICAgICA8ZGl2PlRoaXMg
c2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PgogICAgIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tZmFsbGJh
Y2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvY29udGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0
bWwKaW5kZXggMTY2MWY1MGE4ZTBjMjU1MjQzZDJiOWIwMDdiNmNmNGE4Y2JkMmIzZi4uMjM4ODAw
N2ZhYTNlM2ZmMTFhYWFiYzIxNmYyNTkxMjExNDZiM2E4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLXJlcHJvamVj
dGlvbi1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250
ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbApAQCAt
OSw2ICs5LDcgQEAKICAgICA8ZGl2IGlkPSJob3N0MiI+CiAgICAgICAgIDxkaXYgaWQ9Imhvc3Qz
Ij4KICAgICAgICAgICAgIDxkaXY+Y29udGVudCBmYWxsYmFjayBlbGVtZW50PC9kaXY+CisgICAg
ICAgICAgICA8ZGl2PnNoYWRvdyBmYWxsYmFjayBlbGVtZW50PC9kaXY+CiAgICAgICAgICAgICA8
ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PgogICAgICAgICAgICAgPGRpdj5jb250
ZW50IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KICAgICAgICAgICAgIDxkaXY+VGhpcyBhbHNvIHNo
b3VsZCBiZSBzZWxlY3RlZC48L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWNsaWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWNsaWNrLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZjJhNjI2ZjFjMTkxYWJiODNjYzdjNTU4ZGYzYzFmMWEzNjczMjVlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXBy
b2plY3Rpb24tY2xpY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0IGNv
bmZpcm1zIHRoYXQgY2xpY2tpbmcgYSBzaGFkb3cgcmVwcm9qZWN0ZWQgZWxlbWVudCBkb2VzIG5v
dCBjYXVzZSBhIGNyYXNoLgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tY2xpY2suaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NjkxODYxMjg3YzdiZWNlMDNmZTVmMTJkNjZmMzFhYjNmNWU4MjNmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tY2xpY2su
aHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxwPlRoaXMgdGVzdCBjb25m
aXJtcyB0aGF0IGNsaWNraW5nIGEgc2hhZG93IHJlcHJvamVjdGVkIGVsZW1lbnQgZG9lcyBub3Qg
Y2F1c2UgYSBjcmFzaC48L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0i
aG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK3Zh
ciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3Qx
LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPk9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9k
aXY+JzsKKwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwor
c2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93Pjwvc2hhZG93
Pjxjb250ZW50PjwvY29udGVudD48ZGl2PllvdW5nZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj48
L2Rpdj4nOworCit2YXIgaG9zdDMgPSBzaGFkb3dSb290Mi5nZXRFbGVtZW50QnlJZCgnaG9zdDMn
KTsKK3ZhciBzaGFkb3dSb290MyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QzKTsKK3NoYWRv
d1Jvb3QzLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9ImRpdiI+PC9jb250ZW50Pic7CisK
K2NvbnRhaW5lci5vZmZzZXRMZWZ0OworCit2YXIgdGFyZ2V0ID0gc2hhZG93Um9vdDEuZ2V0RWxl
bWVudEJ5SWQoJ3RhcmdldCcpOworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldC5vZmZzZXRMZWZ0ICsgMTAsIHRhcmdldC5vZmZzZXRU
b3AgKyAyKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7Cit9CisKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAiUEFTUyI7Cis8L3NjcmlwdD4K
KworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yZXByb2plY3Rpb24tZHluYW1pYy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZHluYW1pYy1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjODgzNDU0ZDY0Y2JlYTQwMmU1ZTU5YmZhYzVhZWM4MWM1MDI4NTMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlv
bi1keW5hbWljLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgaWQ9Imhvc3QzIj4KKyAgICAg
ICAgPGRpdj5VcGRhdGVkIE9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgICAgIDxk
aXY+QWRkZWQgT2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5Ib3N0
IENoaWxkPC9kaXY+CisgICAgICAgIDxkaXY+WW91bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2
PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWR5bmFtaWMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWR5bmFtaWMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YjM0NTIxNWI4MmFmYmZjYzM1YjEzMzZkNDllY2JhYzM0ZjIzYTIyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2pl
Y3Rpb24tZHluYW1pYy5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRp
diBpZD0iaG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2PgorCis8c2NyaXB0PgoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2
YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290
MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIiPk9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9k
aXY+JzsKKwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwor
c2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93Pjwvc2hhZG93
Pjxjb250ZW50PjwvY29udGVudD48ZGl2PllvdW5nZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj48
L2Rpdj4nOworCit2YXIgaG9zdDMgPSBzaGFkb3dSb290Mi5nZXRFbGVtZW50QnlJZCgnaG9zdDMn
KTsKK3ZhciBzaGFkb3dSb290MyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QzKTsKK3NoYWRv
d1Jvb3QzLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9ImRpdiI+PC9jb250ZW50Pic7CisK
K3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxk
aXYgaWQ9Imhvc3QyIj5VcGRhdGVkIE9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+PGRpdj5B
ZGRlZCBPbGRlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2Pic7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIDApOworPC9zY3Jp
cHQ+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0NTRi
MDRhNTZiMmZiMjBkMWZhNzdjN2JiMGUyNGExYTEyZmZkN2IKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisKKzxkaXYgaWQ9
Imhvc3QxIj4KKyAgICA8ZGl2IGlkPSJob3N0MyI+CisgICAgICAgIDxkaXY+T2xkZXN0IFNoYWRv
d1Jvb3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5Ib3N0IENoaWxkPC9kaXY+CisgICAgICAg
IDxkaXY+WW91bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+
CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc1N2Q1MDBmMmVlODM0OGY0Nzg4NDJjNGIyNjg1NGM3NWNmNzYyOTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVj
dGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisKKzxkaXYgaWQ9Imhvc3QxIj4KKyAgICA8ZGl2IGlkPSJob3N0NCI+Cisg
ICAgICAgPGRpdj5PbGRlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PgorICAgICAgIDxkaXY+SG9z
dCBDaGlsZDwvZGl2PgorICAgICAgIDxkaXY+U2hhZG93IEZhbGxiYWNrIEVsZW1lbnQgKDEpPC9k
aXY+CisgICAgICAgPGRpdj5TaGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMik8L2Rpdj4KKyAgICA8
L2Rpdj4KKzwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZmFsbGJhY2suaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lOGM0M2YyMGYxYmRhNTQ1OGQ2ZTRlNTkwMDAyMGE1ZTY4YjFhNDU0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24t
ZmFsbGJhY2suaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9
Imhvc3QxIj48ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBzaGFk
b3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVy
SFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOwor
Cit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dS
b290Mi5pbm5lckhUTUwgPSAnPHNoYWRvdz48L3NoYWRvdz48Y29udGVudD48L2NvbnRlbnQ+PHNo
YWRvdz48ZGl2IHRpdGxlPSJkZWJ1Z3N0b3AiPlNoYWRvdyBGYWxsYmFjayBFbGVtZW50ICgxKTwv
ZGl2Pjwvc2hhZG93Pic7CisKK3ZhciBzaGFkb3dSb290MyA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KGhvc3QxKTsKK3NoYWRvd1Jvb3QzLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0NCI+PHNoYWRv
dz48L3NoYWRvdz48c2hhZG93PjxkaXY+U2hhZG93IEZhbGxiYWNrIEVsZW1lbnQgKDIpPC9kaXY+
PC9zaGFkb3c+PHNwYW4+Tm90IHJlbmRlcmVkICgxKTwvc3Bhbj48c2hhZG93PjxzcGFuPk5vdCBy
ZW5kZXJlZCAoMik8L3NwYW4+PC9zaGFkb3c+PC9kaXY+JzsKKwordmFyIGhvc3Q0ID0gc2hhZG93
Um9vdDMuZ2V0RWxlbWVudEJ5SWQoJ2hvc3Q0Jyk7Cit2YXIgc2hhZG93Um9vdDQgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChob3N0NCk7CisKK3NoYWRvd1Jvb3Q0LmlubmVySFRNTCA9ICc8Y29udGVu
dCBzZWxlY3Q9ImRpdiI+PC9jb250ZW50Pic7Cis8L3NjcmlwdD4KKworPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJv
aGliaXRlZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1Yzg4ZDk5ZGI0ZTE0MWEwZWFiNDk3NGQ5MDgwMjNmODZkNzczMDg4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQtZXhwZWN0ZWQu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci0KLTxwPlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgZWxlbWVudHMgYXNzaWduZWQgdG8gYSBz
aGFkb3cgZWxlbWVudCBhcmUgbm90IGRpc3RyaWJ1dGVkLjwvcD4KLQotPGRpdiBpZD0iaG9zdDEi
PgotICAgIDxkaXYgaWQ9Imhvc3QyIj48ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2
PjwvZGl2PgotPC9kaXY+Ci0KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQwMjcxYTRhYzVjNTE2OGEzMTkwYjQ0YTlj
MDEzYTYzNDhlNDNlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9o
aWJpdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08IURPQ1RZUEUgaHRt
bD4KLTxodG1sPgotCi08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3Njcmlw
dD4KLQotPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhc3NpZ25lZCB0byBhIHNo
YWRvdyBlbGVtZW50IGFyZSBub3QgZGlzdHJpYnV0ZWQuPC9wPgotCi08ZGl2IGlkPSJob3N0MSI+
Ci0gICAgPGRpdj5UaGVzZSBlbGVtZW50czwvZGl2PgotICAgIDxkaXY+c2hvdWxkIG5vdCBiZTwv
ZGl2PgotICAgIDxkaXY+cmVwcm9qZWN0ZWQ8L2Rpdj4KLTwvZGl2PgotCi08c2NyaXB0PgotdmFy
IHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwotc2hhZG93Um9vdDEu
aW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj48c2hhZG93Pjwvc2hhZG93PjwvZGl2Pic7Ci0K
LXZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHNoYWRvd1Jvb3QxLmdldEVs
ZW1lbnRCeUlkKCdob3N0MicpKTsKLXNoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2Pjxjb250
ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+PGRpdj5UaGlzIHNob3VsZCBiZSBzZWxlY3RlZC48
L2Rpdj48L2Rpdj4nCi08L3NjcmlwdD4KLQotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ0
NTA4MmVhODJjN2I5M2VhMDAwY2I2YjY1YWFkMTU3YzIwNGYxNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLmh0bWwKQEAg
LTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0MSI+PGRpdj5Ib3N0
IENoaWxkPC9kaXY+PC9kaXY+CisKKzxzY3JpcHQ+Cit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0i
aG9zdDIiPk9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+JzsKKwordmFyIHNoYWRvd1Jvb3Qy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDIuaW5uZXJIVE1MID0g
JzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93Pjwvc2hhZG93Pjxjb250ZW50PjwvY29udGVudD48ZGl2
PllvdW5nZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj48L2Rpdj4nOworCit2YXIgaG9zdDMgPSBz
aGFkb3dSb290Mi5nZXRFbGVtZW50QnlJZCgnaG9zdDMnKTsKK3ZhciBzaGFkb3dSb290MyA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KGhvc3QzKTsKK3NoYWRvd1Jvb3QzLmlubmVySFRNTCA9ICc8Y29u
dGVudCBzZWxlY3Q9ImRpdiI+PC9jb250ZW50Pic7Cis8L3NjcmlwdD4KKworPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24y
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJv
amVjdGlvbjItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTllNDlmOWI0ODRlOTg5ZjAwMjQz
OGNjM2I3NmZiOTZiZDU1Nzk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24yLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwx
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxk
aXYgaWQ9Imhvc3QzIj4KKyAgICAgICAgPGRpdj5BPC9kaXY+CisgICAgICAgIDxkaXY+QjwvZGl2
PgorICAgICAgICA8ZGl2PkM8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlv
bjIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9u
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjlmN2Q3NzYyMzM0N2ZmMzZkNTg1YjZjMzIzOTQ1ZTY1ODgyNWQ1
NTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJlcHJvamVjdGlvbjIuaHRtbApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxk
aXYgaWQ9Imhvc3QxIj48ZGl2PkI8L2Rpdj48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBzaGFkb3dS
b290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRN
TCA9ICc8c2hhZG93Pjwvc2hhZG93Pic7CisKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0
MyI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nOworCit2YXIgaG9zdDMgPSBzaGFkb3dSb290Mi5n
ZXRFbGVtZW50QnlJZCgnaG9zdDMnKTsKK3ZhciBzaGFkb3dSb290MyA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KGhvc3QzKTsKK3NoYWRvd1Jvb3QzLmlubmVySFRNTCA9ICc8ZGl2PkE8L2Rpdj48Y29u
dGVudCBzZWxlY3Q9ImRpdiI+PC9jb250ZW50PjxkaXY+QzwvZGl2Pic7Cis8L3NjcmlwdD4KKwor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170792</attachid>
            <date>2012-10-25 19:51:46 -0700</date>
            <delta_ts>2012-10-25 21:02:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99228-20121026115018.patch</filename>
            <type>text/plain</type>
            <size>44842</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ0ZmEzNDZjYjRjMTY2
Y2VhNjk2MGFjMTNlNTJjNDkzMzhiZTk5OC4uNWNhMjRmZWE5ODRjNGNmZWY1NWI2NTk5MWE3MzNi
ZGViZDM3ZjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTEwLTI1ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIFNoYWRvd1Jvb3QuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTIyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN1cHBvcnQgU2hh
ZG93IHJlcHJvamVjdGlvbiwgd2hpY2ggZWxlbWVudHMgZGlzdHJpYnV0ZWQgdG8gPHNoYWRvdz4g
ZWxlbWVudCBjYW4gYmUgcmVwcm9qZWN0ZWQuCisKKyAgICAgICAgRmlyc3QsIHdlIGhhdmUgYSBk
aXN0cmlidXRpb24gVmVjdG9yIGZvciBlYWNoIEluc2VydGlvblBvaW50LCBldmVuIGlmIEluc2Vy
dGlvblBvaW50IGlzIGEgc2hhZG93IGluc2VydGlvbiBwb2ludC4KKyAgICAgICAgQW5kIHdlIHVw
ZGF0ZSBhIG5vZGUtZGlzdHJpYnV0aW9uIG1hcC4gQmFzaWNhbGx5IFdlJ3JlIGNyZWF0aW5nIGEg
bWFwIGZyb20gbm9kZSB0byBJbnNlcnRpb25Qb2ludCBpbiBFbGVtZW50U2hhZG93LgorICAgICAg
ICBJZiBhIG5vZGUgY2FuIGJlIGRpc3RyaWJ1dGVkIHRvIHNldmVyYWwgSW5zZXJ0aW9uUG9pbnQg
KGUuZy4gaW4gY2FzZSByZXByb2plY3Rpb24gaGFwcGVucyksCisgICAgICAgIHRoZSBJbnNlcnRp
b25Qb2ludCBpbiBvbGRlciBTaGFkb3dET00gaXMgY2hvc2VuLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2pl
Y3Rpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2pl
Y3Rpb24tY2xpY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
ZXByb2plY3Rpb24tZHluYW1pYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbjIuaHRtbAorCisgICAgICAgICogY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkUmVzZXRTdHlsZUluaGVyaXRh
bmNlKTogTm93IGNvbnRleHQuaW5zZXJ0aW9uUG9pbnQoKSByZXR1cm5zIHRoZSBmaW5hbCBpbnNl
cnRpb24gcG9pbnQgd2hlcmUKKyAgICAgICAgYSBub2RlIGlzIGRpc3RyaWJ1dGVkLiBTbyB3ZSBk
b24ndCBoYXZlIHRvIHRyYWNlIHNoYWRvdyBpbnNlcnRpb24gcG9pbnQgYW55bW9yZSBoZXJlLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KTogU2luY2Ug
YSBkaXJlY3QgY2hpbGQgb2YgU2hhZG93Um9vdCBjYW4gYmUgZGlzdHJpYnV0ZWQgbm93LiBJbiB0
aGF0IGNhc2UsCisgICAgICAgIHdlIGRvbid0IGhhdmUgYW55IHBhcmVudEVsZW1lbnQuIFRoZSBw
YXJlbnQgbm9kZSBpcyBhIFNoYWRvd1Jvb3QgaW4gdGhhdCBjYXNlLgorICAgICAgICAqIGRvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZUNhbkJl
RGlzdHJpYnV0ZWQpOiBJZiBhIG5vZGUgY2FuIGJlIGRpc3RyaWJ1dGVkLCByZXR1cm5zIHRydWUu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVSZXByb2plY3Rp
b24pOiBSZXNvbHZlcyBjb250ZW50LXJlcHJvamVjdGlvbiBhbmQgc2hhZG93LXJlcHJvamVjdGlv
biBib3RoLgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEJhY2tUb1lvdW5nZXJT
aGFkb3dSb290T3JIb3N0KTogQSBjYXNlIFNoYWRvd1Jvb3QgaXMgYXNzaWduZWQKKyAgICAgICAg
dG8gc29tZSBJbnNlcnRpb25Qb2ludCBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIGluIHRyYXZlcnNl
U2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQuIFNvIHdlIHJlbW92ZSBpdC4KKyAgICAgICAg
KFdlYkNvcmU6OkFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCk6IE5vdyB3ZSBoYXZlIGEgY2Fz
ZSB0aGF0IGEgZGlyZWN0IGNoaWxkIG9mIFNoYWRvd1Jvb3QgY2FuIGJlIGRpc3RyaWJ1dGVkLgor
ICAgICAgICBJbiB0aGF0IGNhc2UsIHdlIHNob3VsZCBub3QgdXBkYXRlIG1fZGlzdHJpYnV0ZWRO
b2RlLgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRTaGFkb3c6Omluc2VydGlvblBvaW50Rm9yKTogU2luY2Ugd2UgaGF2ZSBhIGRpc3Ry
aWJ1dGlvbiBWZWN0b3IgZm9yIGVhY2ggSW5zZXJ0aW9uUG9pbnQsCisgICAgICAgIHdlIGRvbid0
IGhhdmUgYSBzcGVjaWFsIGNhc2UgdGhhdCBhIFNoYWRvd1Jvb3QgaXMgYXNzaWduZWQgdG8gc29t
ZSBJbnNlcnRpb25Qb2ludC4gQWN0dWFsbHkgdGhlIGV4aXN0aW5nIGNvZGUKKyAgICAgICAgaXMg
bm90IGNvcnJlY3Qgbm93IGR1ZSB0byBzaGFkb3cgcmVwcm9qZWN0aW9uLgorICAgICAgICAqIGh0
bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RGlzdHJpYnV0b3I6OnBvcHVsYXRlKTogUG9wdWxhdGUgYSBQT09MLiBJZiBhIG5vZGUgaXMg
SW5zZXJ0aW9uUG9pbnQsIHdlIGZpbGwgaXQgd2l0aCB0aGUgCisgICAgICAgIGRpc3RyaWJ1dGVk
IG5vZGVzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlz
dHJpYnV0b3I6OmRpc3RyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1
dG9yOjpkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8pOgorICAgICAgICAqIGh0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5oOgorICAgICAgICAoQ29udGVudERpc3RyaWJ1dG9yKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
dG9IVE1MU2hhZG93RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50Tm9kZUZv
ckRpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRFbGVtZW50Rm9yRGlzdHJp
YnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTEwLTI1ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNTQ0NjI2PiBb
Y2ddIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBzKCkgaXMgZXh0cmVtZWx5IHNsb3cgd2hlbiB0
aGVyZSBhcmUgbWFueSBmbG9hdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRl
eCBlMDgyNTI1NTdkYThkMWRkNTk1ZjdjMzE1NGRjNjFhMTY2ZTI5NTE3Li44YWQ2N2U4ZGE4YTQw
YjZiMWQ5NzUxOTAzZjMwNTcyOWI3YmNlMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCkBAIC05NjAsMjEgKzk2MCwxMCBAQCBpbmxpbmUgYm9vbCBzaG91bGRSZXNldFN0eWxl
SW5oZXJpdGFuY2UoTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiAgICAgaWYgKGNvbnRl
eHQucmVzZXRTdHlsZUluaGVyaXRhbmNlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gY29udGV4dC5pbnNlcnRpb25Qb2ludCgp
OwotICAgIGlmICghaW5zZXJ0aW9uUG9pbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IEFTU0VSVChwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnRleHQubm9kZSgpKSk7Ci0g
ICAgRWxlbWVudFNoYWRvdyogc2hhZG93ID0gcGFyZW50RWxlbWVudEZvckRpc3RyaWJ1dGlvbihj
b250ZXh0Lm5vZGUoKSktPnNoYWRvdygpOwotICAgIEFTU0VSVChzaGFkb3cpOworICAgIGlmIChJ
bnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBjb250ZXh0Lmluc2VydGlvblBvaW50KCkp
CisgICAgICAgIHJldHVybiBpbnNlcnRpb25Qb2ludC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7
CiAKLSAgICBmb3IgKCA7IGluc2VydGlvblBvaW50OyApIHsKLSAgICAgICAgSW5zZXJ0aW9uUG9p
bnQqIHlvdW5nZXJJbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3IoaW5z
ZXJ0aW9uUG9pbnQpOwotICAgICAgICBpZiAoIXlvdW5nZXJJbnNlcnRpb25Qb2ludCkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBpbnNlcnRpb25Qb2ludCA9IHlvdW5nZXJJbnNlcnRpb25Q
b2ludDsKLSAgICB9Ci0gICAgcmV0dXJuIGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJp
dGFuY2UoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBQc2V1ZG9JZCBwc2V1ZG9JRCkKQEAgLTE1NDAsOSArMTUyOSwxMCBAQCBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCwgUmVuZGVyUwogICAgIC8vIGNvbnRlbnRlZGl0YWJsZSBhdHRyaWJ1dGUgKGltcGxlbWVu
dGVkIGJ5IC13ZWJraXQtdXNlci1tb2RpZnkpIHNob3VsZAogICAgIC8vIGJlIHByb3BhZ2F0ZWQg
ZnJvbSBzaGFkb3cgaG9zdCB0byBkaXN0cmlidXRlZCBub2RlLgogICAgIGlmIChtX2Rpc3RyaWJ1
dGVkVG9JbnNlcnRpb25Qb2ludCkgewotICAgICAgICBBU1NFUlQoZWxlbWVudC0+cGFyZW50RWxl
bWVudCgpKTsKLSAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBzdHlsZU9mU2hhZG93SG9zdCA9IGVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKSkKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldFVzZXJNb2RpZnkoc3R5bGVPZlNoYWRvd0hvc3QtPnVzZXJNb2RpZnkoKSk7CisgICAg
ICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKKyAg
ICAgICAgICAgIGlmIChSZW5kZXJTdHlsZSogc3R5bGVPZlNoYWRvd0hvc3QgPSBwYXJlbnQtPnJl
bmRlclN0eWxlKCkpCisgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VXNlck1vZGlmeShzdHls
ZU9mU2hhZG93SG9zdC0+dXNlck1vZGlmeSgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChlbGVtZW50LT5pc0xpbmsoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBlODgyMzBlNjRhYTcwYTJjNDc0MGY3ZjkxYzMxODQ3
ZTBjMzk1ZmUxLi4yNmI4M2YzMWUwNWYxYWI5M2MwMWRiODlhZGFjYWZiNjQyYTljYzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50U2hh
ZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNo
YWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC02MywxOCArNjQsNDggQEAgc3RhdGljIGlubGluZSBFbGVtZW50U2hhZG93
KiBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogICAgIHJl
dHVybiAwOyAgICAKIH0KIAotc3RhdGljIGlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJl
cHJvamVjdGlvbihjb25zdCBOb2RlKiBub2RlKQorc3RhdGljIGlubGluZSBib29sIG5vZGVDYW5C
ZURpc3RyaWJ1dGVkKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAg
IE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JEaXN0cmlidXRpb24obm9kZSk7CisgICAgaWYg
KCFwYXJlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChTaGFkb3dSb290KiBz
aGFkb3dSb290ID0gcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9vdChwYXJlbnQp
IDogMCkKKyAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKTsKKworICAgIGlm
IChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93KCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMg
aW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHBy
b2plY3RlZE5vZGUpCiB7CiAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsK
LSAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gbm9kZTsKLSAgICB3aGlsZSAoRWxlbWVudFNoYWRv
dyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKLSAg
ICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihub2RlKSkgewot
ICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87Ci0gICAgICAgICAgICBpbnNlcnRpb25Q
b2ludCA9IGluc2VydGVkVG87Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgY29uc3QgTm9kZSogY3VycmVudCA9IHByb2plY3RlZE5vZGU7CisKKyAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRG
b3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlz
dHJpYnV0aW9uKCk7CisgICAgICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8g
PSBzaGFkb3ctPmluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CisgICAgICAgICAg
ICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9p
bnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGVGb3JE
aXN0cmlidXRpb24oY3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCog
aW5zZXJ0ZWRUbyA9IHBhcmVudC0+aXNTaGFkb3dSb290KCkgPyB0b1NoYWRvd1Jvb3QocGFyZW50
KS0+YXNzaWduZWRUbygpIDogMCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRl
ZFRvOworICAgICAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGJyZWFrOwogICAgIH0KKwogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIApAQCAtMjAz
LDkgKzIzNCwxMCBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlRGlz
dHJpYnV0ZWROb2Rlcyhjb25zdCBOb2RlKiBub2RlLCBjb25zdAogTm9kZSogQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KGNvbnN0
IE5vZGUqIG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgQVNTRVJU
KG5vZGUpOwotICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUp
OwotICAgIGlmICghc2hhZG93KQorCisgICAgaWYgKCFub2RlQ2FuQmVEaXN0cmlidXRlZChub2Rl
KSkKICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGly
ZWN0aW9uKTsKKwogICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVS
ZXByb2plY3Rpb24obm9kZSk7CiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludCkKICAgICAgICAgcmV0
dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwgZGlyZWN0aW9uKTsKQEAgLTI3
Miw4ICszMDQsOCBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFy
ZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNhbAogICAgICAgICBBU1NFUlQodG9T
aGFkb3dSb290KG5vZGUpLT5pc1lvdW5nZXN0KCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
Ci0gICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJp
YnV0aW9uKG5vZGUpKSB7Ci0gICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisK
KyAgICBpZiAobm9kZUNhbkJlRGlzdHJpYnV0ZWQobm9kZSkpIHsKICAgICAgICAgaWYgKEluc2Vy
dGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rpb24obm9kZSkpIHsK
ICAgICAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgICAgIGRldGFpbHMtPmRpZFRy
YXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOwpAQCAtMjk3LDYgKzMyOSw4IEBA
IGlubGluZSBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50SW5D
dXJyZW50VHJlZShjb25zdCBOb2RlKiBuCiBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6
OnRyYXZlcnNlUGFyZW50QmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QoY29uc3QgU2hhZG93
Um9vdCogc2hhZG93Um9vdCwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogZGV0YWlscykgY29uc3QK
IHsKICAgICBBU1NFUlQoc2hhZG93Um9vdCk7CisgICAgQVNTRVJUKCFzaGFkb3dSb290LT5hc3Np
Z25lZFRvKCkpOworCiAgICAgaWYgKHNoYWRvd1Jvb3QtPmlzWW91bmdlc3QoKSkgewogICAgICAg
ICBpZiAoY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkpIHsKICAgICAgICAgICAgIGlmIChkZXRhaWxz
KQpAQCAtMzA3LDEyICszNDEsNiBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRy
YXZlcnNlUGFyZW50QmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QoY29ucwogICAgICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxTaGFkb3dSb290Kj4oc2hhZG93Um9vdCk7CiAgICAgfQogCi0gICAg
aWYgKEluc2VydGlvblBvaW50KiBhc3NpZ25lZEluc2VydGlvblBvaW50ID0gc2hhZG93Um9vdC0+
YXNzaWduZWRUbygpKSB7Ci0gICAgICAgIGlmIChkZXRhaWxzKQotICAgICAgICAgICAgZGV0YWls
cy0+ZGlkVHJhdmVyc2VTaGFkb3dSb290KHNoYWRvd1Jvb3QpOwotICAgICAgICByZXR1cm4gdHJh
dmVyc2VQYXJlbnQoYXNzaWduZWRJbnNlcnRpb25Qb2ludCwgZGV0YWlscyk7Ci0gICAgfQotCiAg
ICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM3Nyw3ICs0MDUsOCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5X
YWxrZXI6OnBhcmVudCgpCiAgICAgfQogICAgIGlmICghbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkg
ewogICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgbV9kaXN0
cmlidXRlZE5vZGUgPSBtX25vZGU7CisgICAgICAgIGlmICghKG1fbm9kZSAmJiBtX25vZGUtPmlz
U2hhZG93Um9vdCgpICYmIHRvU2hhZG93Um9vdChtX25vZGUpLT5hc3NpZ25lZFRvKCkpKQorICAg
ICAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CiAgICAgICAgIG1faXNDcm9zc2lu
Z0luc2VydGlvblBvaW50ID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggYWViNWI1YjQ3NWIyMTliYzU3ZGM4NWVmMmU3
YjgzMmFlZTg4OTNmYy4uMDNhMDYyMjVhYjlmNzkyNDJmZDA4OTkwY2YyMzAyZjUzYTU4YzVmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtMTM0LDE1ICsxMzQsNiBAQCB2
b2lkIEVsZW1lbnRTaGFkb3c6OmRldGFjaCgpCiAKIEluc2VydGlvblBvaW50KiBFbGVtZW50U2hh
ZG93OjppbnNlcnRpb25Qb2ludEZvcihjb25zdCBOb2RlKiBub2RlKSBjb25zdAogewotICAgIEFT
U0VSVChub2RlICYmIG5vZGUtPnBhcmVudE5vZGUoKSk7Ci0KLSAgICBpZiAobm9kZS0+cGFyZW50
Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGlu
c2VydGlvblBvaW50ID0gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSktPmFzc2lnbmVk
VG8oKSkKLSAgICAgICAgICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKLQotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KICAgICByZXR1cm4gZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9p
bnRGb3Iobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250
ZW50RGlzdHJpYnV0b3IuY3BwCmluZGV4IDgzZGY1ZTBjMDUxZTUzN2Q4ZWZkZjM4NzMyZDkxNzYz
OTc2ZjM1ZTEuLjJhNmRmYzlhMjYwMTU3YjhjODY0OTcwYWU5MDViNzE0NzIwMzViYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApA
QCAtNTAsNiArNTAsMjMgQEAgSW5zZXJ0aW9uUG9pbnQqIENvbnRlbnREaXN0cmlidXRvcjo6Zmlu
ZEluc2VydGlvblBvaW50Rm9yKGNvbnN0IE5vZGUqIGtleSkgY29uc3QKICAgICByZXR1cm4gbV9u
b2RlVG9JbnNlcnRpb25Qb2ludC5nZXQoa2V5KTsKIH0KIAordm9pZCBDb250ZW50RGlzdHJpYnV0
b3I6OnBvcHVsYXRlKE5vZGUqIG5vZGUsIENvbnRlbnREaXN0cmlidXRpb24mIHBvb2wpCit7Cisg
ICAgaWYgKCFpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgIHBvb2wuYXBwZW5kKG5v
ZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKKyAgICBpZiAoaW5zZXJ0aW9uUG9p
bnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5zZXJ0aW9uUG9pbnQtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgcG9wdWxhdGUoaW5zZXJ0
aW9uUG9pbnQtPmF0KGkpLCBwb29sKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKE5vZGUq
IGZhbGxiYWNrTm9kZSA9IGluc2VydGlvblBvaW50LT5maXJzdENoaWxkKCk7IGZhbGxiYWNrTm9k
ZTsgZmFsbGJhY2tOb2RlID0gZmFsbGJhY2tOb2RlLT5uZXh0U2libGluZygpKQorICAgICAgICAg
ICAgcG9vbC5hcHBlbmQoZmFsbGJhY2tOb2RlKTsKKyAgICB9Cit9CisKIHZvaWQgQ29udGVudERp
c3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCiB7CiAgICAgQVNTRVJUKG5lZWRz
RGlzdHJpYnV0aW9uKCkpOwpAQCAtNTgsMjcgKzc1LDE2IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1
dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCiAgICAgbV92YWxpZGl0eSA9IFZhbGlkOwog
CiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBwb29sOwotICAgIGZvciAoTm9kZSogbm9kZSA9IGhv
c3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgaWYgKCFpc0hUTUxDb250ZW50RWxlbWVudChub2RlKSkgewotICAgICAgICAgICAgcG9v
bC5hcHBlbmQobm9kZSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9k
ZSk7Ci0gICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnQtPnNpemUoKTsg
KytpKQotICAgICAgICAgICAgICAgIHBvb2wuYXBwZW5kKGluc2VydGlvblBvaW50LT5hdChpKSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9
IGluc2VydGlvblBvaW50LT5maXJzdENoaWxkKCk7IGZhbGxiYWNrTm9kZTsgZmFsbGJhY2tOb2Rl
ID0gZmFsbGJhY2tOb2RlLT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgICAgIHBvb2wuYXBw
ZW5kKGZhbGxiYWNrTm9kZSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgZm9yIChOb2RlKiBub2Rl
ID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkK
KyAgICAgICAgcG9wdWxhdGUobm9kZSwgcG9vbCk7CiAKICAgICBWZWN0b3I8Ym9vbD4gZGlzdHJp
YnV0ZWQocG9vbC5zaXplKCkpOwogICAgIGRpc3RyaWJ1dGVkLmZpbGwoZmFsc2UpOwogCi0gICAg
SFRNTFNoYWRvd0VsZW1lbnQqIGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVz
dFNoYWRvd1Jvb3QgPSAwOworICAgIFZlY3RvcjxIVE1MU2hhZG93RWxlbWVudCosIDg+IGFjdGl2
ZVNoYWRvd0luc2VydGlvblBvaW50czsKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0
LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9v
dCgpKSB7CisgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBmaXJzdEFjdGl2ZVNoYWRvd0luc2Vy
dGlvblBvaW50ID0gMDsKKwogICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSByb290OyBub2RlOyBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290KSkgewogICAgICAgICAgICAgaWYgKCFp
c0luc2VydGlvblBvaW50KG5vZGUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtODcs
MjUgKzkzLDMxIEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQq
IGhvc3QpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChpc0hU
TUxTaGFkb3dFbGVtZW50KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJvb3QtPm9sZGVy
U2hhZG93Um9vdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcm9vdC0+b2xkZXJTaGFk
b3dSb290KCktPmFzc2lnbmVkVG8oKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJp
YnV0ZU5vZGVDaGlsZHJlblRvKHBvaW50LCByb290LT5vbGRlclNoYWRvd1Jvb3QoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+c2V0QXNzaWduZWRU
byhwb2ludCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRlc3RTaGFkb3dSb290KQot
ICAgICAgICAgICAgICAgICAgICBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRl
c3RTaGFkb3dSb290ID0gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQpCisgICAgICAgICAgICAgICAg
ICAgIGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQgPSB0b0hUTUxTaGFkb3dFbGVtZW50
KG5vZGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBkaXN0cmlidXRl
U2VsZWN0aW9uc1RvKHBvaW50LCBwb29sLCBkaXN0cmlidXRlZCk7CiAgICAgICAgICAgICAgICAg
aWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IG5vZGUtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50
Tm9kZSgpID8gdG9FbGVtZW50KG5vZGUtPnBhcmVudE5vZGUoKSktPnNoYWRvdygpIDogMCkKICAg
ICAgICAgICAgICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBpZiAoZmlyc3RBY3RpdmVTaGFkb3dJbnNl
cnRpb25Qb2ludCkKKyAgICAgICAgICAgIGFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50cy5hcHBl
bmQoZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCk7CiAgICAgfQogCi0gICAgaWYgKGZp
cnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jvb3QpIHsKLSAgICAg
ICAgZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50
SW5PbGRlc3RTaGFkb3dSb290LCBwb29sLCBkaXN0cmlidXRlZCk7Ci0gICAgICAgIGlmIChFbGVt
ZW50U2hhZG93KiBzaGFkb3cgPSBmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRl
c3RTaGFkb3dSb290LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChm
aXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRlc3RTaGFkb3dSb290LT5wYXJlbnRO
b2RlKCkpLT5zaGFkb3coKSA6IDApCi0gICAgICAgICAgICBzaGFkb3ctPmludmFsaWRhdGVEaXN0
cmlidXRpb24oKTsKKyAgICBmb3IgKHNpemVfdCBpID0gYWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9p
bnRzLnNpemUoKTsgaSA+IDA7IC0taSkgeworICAgICAgICBIVE1MU2hhZG93RWxlbWVudCogc2hh
ZG93RWxlbWVudCA9IGFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50c1tpIC0gMV07CisgICAgICAg
IFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dFbGVtZW50LT5zaGFkb3dSb290KCk7CisgICAgICAg
IEFTU0VSVChyb290KTsKKyAgICAgICAgaWYgKHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7Cisg
ICAgICAgICAgICBkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8oc2hhZG93RWxlbWVudCwgcm9vdC0+
b2xkZXJTaGFkb3dSb290KCkpOworICAgICAgICAgICAgcm9vdC0+b2xkZXJTaGFkb3dSb290KCkt
PnNldEFzc2lnbmVkVG8oc2hhZG93RWxlbWVudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBkaXN0cmlidXRlU2VsZWN0aW9uc1RvKHNoYWRvd0VsZW1lbnQsIHBvb2wsIGRpc3RyaWJ1
dGVkKTsKKyAgICAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dFbGVt
ZW50LT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChzaGFkb3dFbGVt
ZW50LT5wYXJlbnROb2RlKCkpLT5zaGFkb3coKSA6IDApCisgICAgICAgICAgICAgICAgc2hhZG93
LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE2
Miw4ICsxNzQsMjUgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGVOb2RlQ2hp
bGRyZW5UbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQKIHsKICAgICBDb250ZW50RGlz
dHJpYnV0aW9uIGRpc3RyaWJ1dGlvbjsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBjb250YWluZXJO
b2RlLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0g
ICAgICAgIGRpc3RyaWJ1dGlvbi5hcHBlbmQobm9kZSk7Ci0gICAgICAgIG1fbm9kZVRvSW5zZXJ0
aW9uUG9pbnQuYWRkKG5vZGUsIGluc2VydGlvblBvaW50KTsKKyAgICAgICAgaWYgKGlzSW5zZXJ0
aW9uUG9pbnQobm9kZSkgJiYgdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNBY3RpdmUoKSkgewor
ICAgICAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIGlubmVySW5zZXJ0aW9uUG9pbnQgPSB0b0luc2Vy
dGlvblBvaW50KG5vZGUpOworICAgICAgICAgICAgaWYgKGlubmVySW5zZXJ0aW9uUG9pbnQtPmhh
c0Rpc3RyaWJ1dGlvbigpKSB7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBpbm5lckluc2VydGlvblBvaW50LT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAg
ICBkaXN0cmlidXRpb24uYXBwZW5kKGlubmVySW5zZXJ0aW9uUG9pbnQtPmF0KGkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX25vZGVUb0luc2VydGlvblBvaW50LmNvbnRhaW5zKGlubmVy
SW5zZXJ0aW9uUG9pbnQtPmF0KGkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbm9kZVRv
SW5zZXJ0aW9uUG9pbnQuYWRkKGlubmVySW5zZXJ0aW9uUG9pbnQtPmF0KGkpLCBpbnNlcnRpb25Q
b2ludCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gaW5uZXJJbnNlcnRpb25Qb2ludC0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAg
ICAgICAgICBkaXN0cmlidXRpb24uYXBwZW5kKGNoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9ub2RlVG9JbnNlcnRpb25Qb2ludC5hZGQoY2hpbGQsIGluc2VydGlvblBvaW50KTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBkaXN0cmlidXRpb24uYXBwZW5kKG5vZGUpOworICAgICAgICAgICAgaWYgKCFtX25vZGVUb0lu
c2VydGlvblBvaW50LmNvbnRhaW5zKG5vZGUpKQorICAgICAgICAgICAgICAgIG1fbm9kZVRvSW5z
ZXJ0aW9uUG9pbnQuYWRkKG5vZGUsIGluc2VydGlvblBvaW50KTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIGluc2VydGlvblBvaW50LT5zZXREaXN0cmlidXRpb24oZGlzdHJpYnV0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXgg
YmVlOTJhNTZhYzE0MGFmNjU1ZjA1ZTgzOWNiYTY2MDNjNTQyZDI2Yy4uMGQ4ZDAwODJlNmU5MjQx
MGU0M2Y2MDYwY2UzNmYxNmU2OGUwNDZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAg
IHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbkluKENvbnRlbnREaXN0cmlidXRpb24qKTsKIAog
cHJpdmF0ZToKKyAgICB2b2lkIHBvcHVsYXRlKE5vZGUqLCBDb250ZW50RGlzdHJpYnV0aW9uJik7
CisKICAgICBIYXNoTWFwPGNvbnN0IE5vZGUqLCBJbnNlcnRpb25Qb2ludCo+IG1fbm9kZVRvSW5z
ZXJ0aW9uUG9pbnQ7CiAgICAgdW5zaWduZWQgbV92YWxpZGl0eSA6IDI7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKaW5kZXggMzZiZGQ4OTVh
YzJkZWZiM2E0MDdmNDAxZGQ4OTIzZTVhN2Q5ZjkwNC4uYmFjMmI5MmI1Nzk2MWIyM2RmY2MyZTMy
ZTFmNTViMmQ1N2UzMjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5oCkBAIC02Nyw2ICs2NywxMiBAQCBpbmxpbmUgSFRNTFNoYWRvd0VsZW1l
bnQqIHRvSFRNTFNoYWRvd0VsZW1lbnQoTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTFNoYWRvd0VsZW1lbnQqPihub2RlKTsKIH0KIAoraW5saW5lIGNvbnN0IEhUTUxTaGFk
b3dFbGVtZW50KiB0b0hUTUxTaGFkb3dFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
QVNTRVJUKCFub2RlIHx8IGlzSFRNTFNoYWRvd0VsZW1lbnQobm9kZSkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBIVE1MU2hhZG93RWxlbWVudCo+KG5vZGUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBIVE1MU2hhZG93RWxlbWVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCA0MzA0MTVmN2I2MjZj
Mjk4OWJhYTM3NmVjMTBmNDRmZjU3Yjk5OGFmLi5mOWUwODRmYjBjODg2NTJkZWU2MDlhMWI0ZjBm
NDhmMGE2MWM2Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmgKQEAgLTExOSwxOSArMTE5LDI5IEBAIGlubGluZSBib29sIGlzTG93ZXJFbmNhcHN1bGF0
aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKICAgICByZXR1cm4gdG9JbnNlcnRpb25Qb2ludChub2Rl
KS0+aXNTaGFkb3dCb3VuZGFyeSgpOwogfQogCi1pbmxpbmUgRWxlbWVudCogcGFyZW50RWxlbWVu
dEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQoraW5saW5lIE5vZGUqIHBhcmVudE5v
ZGVGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7
Ci0gICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IG5vZGUtPnBhcmVudEVsZW1lbnQoKSkgewotICAg
ICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChwYXJlbnQpICYmIHRvSW5zZXJ0aW9uUG9pbnQocGFy
ZW50KS0+c2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpKQotICAgICAgICAgICAgcmV0dXJuIHBh
cmVudC0+cGFyZW50RWxlbWVudCgpOwogCisgICAgaWYgKE5vZGUqIHBhcmVudCA9IG5vZGUtPnBh
cmVudE5vZGUoKSkgeworICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChwYXJlbnQpICYmIHRv
SW5zZXJ0aW9uUG9pbnQocGFyZW50KS0+c2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpKQorICAg
ICAgICAgICAgcmV0dXJuIHBhcmVudC0+cGFyZW50Tm9kZSgpOwogICAgICAgICByZXR1cm4gcGFy
ZW50OwogICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCitpbmxpbmUgRWxlbWVudCogcGFyZW50
RWxlbWVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2Rl
KiBwYXJlbnQgPSBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKG5vZGUpKSB7CisgICAgICAgIGlm
IChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQo
cGFyZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM3ZTM5YWRhNDgyNjUy
YmU0ZmNlNjI2OGZlZmJkMDRiMzMwNTA2NWUuLmQwMTY1NGNmOTUxYTZiODY0OWRmMTJlMzA2OWYx
OGJlMzVmZDM3YzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0yNSAgU2hpbnlhIEth
d2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGhlIHNoYWRvdyBlbGVt
ZW50IGlzIG5vdCByZXByb2plY3RlZCB0byBhIG5lc3RlZCBTaGFkb3dSb290LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9j
b21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJl
ZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi5odG1sOiBBZGRlZC4gQSB3YWxrZXIgdGVzdCBj
YXNlIGZvciBlbGVtZW50cyBkaXN0cmlidXRlZAorICAgICAgICB0byBzaGFkb3cgZWxlbWVudCBh
cmUgcmVwcm9qZWN0ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRv
dy10cmVlLXdhbGtlci5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJl
cHJvamVjdGlvbi1jb21wbGV4Lmh0bWw6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2NvbnRl
bnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLXJlcHJvamVjdGlvbi1leHBl
Y3RlZC5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9u
LWNsaWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yZXByb2plY3Rpb24tY2xpY2suaHRtbDogQWRkZWQuIERvZXMgc29tZSBpbnRlcmFjdGl2
ZSB3aXRoIGEgc2hhZG93LXJlcHJvamVjdGVkIG5vZGUuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZHluYW1pYy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1keW5hbWljLmh0bWw6
IEFkZGVkLiBBZGRzIGR5bmFtaWNhbGx5IGVsZW1lbnRzIHNoYWRvdy1yZXByb2plY3RlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1m
YWxsYmFjay1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sOiBBZGRlZC4gQSB0ZXN0IGNhc2UgZm9y
IGZhbGxiYWNrIGVsZW1lbnRzIG9mIGEgc2hhZG93IGVsZW1lbnQKKyAgICAgICAgYXJlIHJlcHJv
amVjdGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXBy
b2hpYml0ZWQtZXhwZWN0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLmh0bWw6IFJlbW92ZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbDogQWRkZWQuIEEgYmFz
aWMgdGVzdCBjYXNlLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0
aW9uMi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJlcHJvamVjdGlvbjIuaHRtbDogQWRkZWQuIEFub3RoZXIgYmFzaWMgdGVzdCBjYXNlLgor
CiAyMDEyLTEwLTI1ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCByZWJhc2VsaW5lIG9mIHRlc3RzIGZhaWxpbmcgYWZ0ZXIgMTMyNTI5
IHJvbGxlZCBvdXQgMTMyMjY5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJl
ZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBl
ZjZlYjM1MDNmMTEyN2EwYWVhZjI5Njg4NzY0MDk3MzQ2M2YzMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIt
c2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMzUgQEAKK1Rlc3Rz
IGZvciBDb21wb3NlZCBTaGFkb3cgRE9NIFRyZWUgVHJhdmVyc2FsIEFQSXMuIENhbiBvbmx5IHJ1
biB3aXRoaW4gRFJUCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitNdWx0aXBsZSBz
aGFkb3cgcm9vdCB3aXRob3V0IHNoYWRvdyBlbGVtZW50CitDb21wb3NlZCBTaGFkb3cgVHJlZToK
K0RJVgkgaWQ9YQorCURJVgkgaWQ9YworCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1h
CitESVYJIGlkPWMKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1jCitESVYJIGlkPWEK
KworTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aCBzaGFkb3cgZWxlbWVudAorQ29tcG9zZWQgU2hh
ZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWMKKwlESVYJIGlkPWIKKwlESVYJIGlkPWUK
KworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1jCitESVYJIGlkPWIK
K0RJVgkgaWQ9ZQorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWUKK0RJVgkgaWQ9Ygor
RElWCSBpZD1jCitESVYJIGlkPWEKKworTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aCBzaGFkb3cg
ZWxlbWVudCwgY2FzZSAyCitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkg
aWQ9ZgorCURJVgkgaWQ9YworCURJVgkgaWQ9YgorCURJVgkgaWQ9ZQorCURJVgkgaWQ9aAorCitU
cmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWYKK0RJVgkgaWQ9YworRElW
CSBpZD1iCitESVYJIGlkPWUKK0RJVgkgaWQ9aAorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJ
IGlkPWgKK0RJVgkgaWQ9ZQorRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9ZgorRElWCSBp
ZD1hCisKK3NoYWRvdyByZXByb2plY3Rpb24KK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBp
ZD1hCisJRElWCSBpZD1iCisJCURJVgkgaWQ9ZAorCQlESVYJIGlkPWEtY2hpbGQKKwkJRElWCSBp
ZD1mCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBp
ZD1kCitESVYJIGlkPWEtY2hpbGQKK0RJVgkgaWQ9ZgorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitE
SVYJIGlkPWYKK0RJVgkgaWQ9YS1jaGlsZAorRElWCSBpZD1kCitESVYJIGlkPWIKK0RJVgkgaWQ9
YQorCitzaGFkb3cgcmVwcm9qZWN0aW9uLCB0YWtlIDIKK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgor
RElWCSBpZD1hCisJRElWCSBpZD1kCisJCURJVgkgaWQ9ZgorCQlESVYJIGlkPWIKKwkJRElWCSBp
ZD1oCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9ZAorRElWCSBp
ZD1mCitESVYJIGlkPWIKK0RJVgkgaWQ9aAorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlk
PWgKK0RJVgkgaWQ9YgorRElWCSBpZD1mCitESVYJIGlkPWQKK0RJVgkgaWQ9YQorCitzaGFkb3cg
ZmFsbGJhY2sgZWxlbWVudCByZXByb2plY3Rpb24KK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElW
CSBpZD1hCisJRElWCSBpZD1pCisJCURJVgkgaWQ9aworCQlESVYJIGlkPWMKKwkJRElWCSBpZD1i
CisJCURJVgkgaWQ9ZworCQlESVYJIGlkPWgKKwkJRElWCSBpZD1tCisKK1RyYXZlcnNlIGluIGZv
cndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9aQorRElWCSBpZD1rCitESVYJIGlkPWMKK0RJVgkg
aWQ9YgorRElWCSBpZD1nCitESVYJIGlkPWgKK0RJVgkgaWQ9bQorVHJhdmVyc2UgaW4gYmFja3dh
cmQuCitESVYJIGlkPW0KK0RJVgkgaWQ9aAorRElWCSBpZD1nCitESVYJIGlkPWIKK0RJVgkgaWQ9
YworRElWCSBpZD1rCitESVYJIGlkPWkKK0RJVgkgaWQ9YQorCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFkb3ctcmVwcm9q
ZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93
LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2Y4ODVm
YmMwMzhmNGVmYmIyZDJmNzcwMzNlYzIyMjRiOWUwNDAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFk
b3ctcmVwcm9qZWN0aW9uLmh0bWwKQEAgLTAsMCArMSwxNjEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkb3ctZG9tLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2
IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgZm9yIENv
bXBvc2VkIFNoYWRvdyBET00gVHJlZSBUcmF2ZXJzYWwgQVBJcy4gQ2FuIG9ubHkgcnVuIHdpdGhp
biBEUlQiKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworCitmdW5jdGlvbiBkdW1wTm9kZShub2RlKQoreworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuICcobnVsbCknCisgICAgdmFyIG91dHB1dCA9IG5vZGUubm9kZU5hbWUgKyAi
XHQiOworICAgIGlmIChub2RlLmlkKQorICAgICAgICBvdXRwdXQgKz0gJyBpZD0nICsgbm9kZS5p
ZDsKKyAgICBpZiAobm9kZS5jbGFzc05hbWUpCisgICAgICAgIG91dHB1dCArPSAnIGNsYXNzPScg
KyBub2RlLmNsYXNzTmFtZTsKKyAgICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBkdW1w
Q29tcG9zZWRTaGFkb3dUcmVlKG5vZGUsIGluZGVudCkKK3sKKyAgICBpbmRlbnQgPSBpbmRlbnQg
fHwgIiI7CisgICAgdmFyIG91dHB1dCA9IGluZGVudCArIGR1bXBOb2RlKG5vZGUpICsgIlxuIjsK
KyAgICB2YXIgY2hpbGQ7CisgICAgZm9yIChjaGlsZCA9IGludGVybmFscy5maXJzdENoaWxkQnlX
YWxrZXIobm9kZSk7IGNoaWxkOyBjaGlsZCA9IGludGVybmFscy5uZXh0U2libGluZ0J5V2Fsa2Vy
KGNoaWxkKSkKKyAgICAgICAgIG91dHB1dCArPSBkdW1wQ29tcG9zZWRTaGFkb3dUcmVlKGNoaWxk
LCBpbmRlbnQgKyAiXHQiKTsKKyAgICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBsYXN0
Tm9kZUJ5V2Fsa2VyKHJvb3QpCit7CisgICAgdmFyIGxhc3ROb2RlID0gcm9vdDsKKyAgICB3aGls
ZSAoaW50ZXJuYWxzLmxhc3RDaGlsZEJ5V2Fsa2VyKGxhc3ROb2RlKSkKKyAgICAgICAgbGFzdE5v
ZGUgPSBpbnRlcm5hbHMubGFzdENoaWxkQnlXYWxrZXIobGFzdE5vZGUpOworICAgIHJldHVybiBs
YXN0Tm9kZTsKK30KKworZnVuY3Rpb24gc2hvd0NvbXBvc2VkU2hhZG93VHJlZUJ5VHJhdmVyc2lu
Z0luRm9yd2FyZChyb290KQoreworICAgIHZhciBub2RlID0gcm9vdDsKKyAgICB2YXIgbGFzdCA9
IGxhc3ROb2RlQnlXYWxrZXIocm9vdCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgZGVi
dWcoZHVtcE5vZGUobm9kZSkpOworICAgICAgICBpZiAobm9kZSA9PSBsYXN0KQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIG5vZGUgPSBpbnRlcm5hbHMubmV4dE5vZGVCeVdhbGtlcihub2Rl
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNob3dDb21wb3NlZFNoYWRvd1RyZWVCeVRyYXZlcnNp
bmdJbkJhY2t3YXJkKHJvb3QpCit7CisgICAgdmFyIG5vZGUgPSBsYXN0Tm9kZUJ5V2Fsa2VyKHJv
b3QpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGRlYnVnKGR1bXBOb2RlKG5vZGUpKTsK
KyAgICAgICAgaWYgKG5vZGUgPT0gcm9vdCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBu
b2RlID0gaW50ZXJuYWxzLnByZXZpb3VzTm9kZUJ5V2Fsa2VyKG5vZGUpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gc2hvd0NvbXBvc2VkU2hhZG93VHJlZShub2RlKQoreworICAgIGRlYnVnKCdDb21w
b3NlZCBTaGFkb3cgVHJlZTonKTsKKyAgICBkZWJ1ZyhkdW1wQ29tcG9zZWRTaGFkb3dUcmVlKG5v
ZGUpKTsKKworICAgIGRlYnVnKCdUcmF2ZXJzZSBpbiBmb3J3YXJkLicpOworICAgIHNob3dDb21w
b3NlZFNoYWRvd1RyZWVCeVRyYXZlcnNpbmdJbkZvcndhcmQobm9kZSk7CisKKyAgICBkZWJ1Zygn
VHJhdmVyc2UgaW4gYmFja3dhcmQuJyk7CisgICAgc2hvd0NvbXBvc2VkU2hhZG93VHJlZUJ5VHJh
dmVyc2luZ0luQmFja3dhcmQobm9kZSk7CisKKyAgICBkZWJ1ZygnJyk7Cit9CisKK2Z1bmN0aW9u
IHNob3dOZXh0Tm9kZShub2RlKSB7CisgICAgdmFyIG5leHQgPSBpbnRlcm5hbHMubmV4dE5vZGVC
eVdhbGtlcihub2RlKTsKKyAgICBkZWJ1ZygnTmV4dCBub2RlIG9mIFsnICsgZHVtcE5vZGUobm9k
ZSkgKyAnXSBpcyBbJyArIGR1bXBOb2RlKG5leHQpICsgJ10nKTsKK30KKworZnVuY3Rpb24gdGVz
dENvbXBvc2VkU2hhZG93VHJlZShub2RlKQoreworICAgIHZhciBzYW5kYm94ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKTsKKyAgICBzYW5kYm94LmlubmVySFRNTCA9ICcnOwor
ICAgIHNhbmRib3guYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRM
ZWZ0OworICAgIHNob3dDb21wb3NlZFNoYWRvd1RyZWUobm9kZSk7Cit9CisKK2RlYnVnKCdNdWx0
aXBsZSBzaGFkb3cgcm9vdCB3aXRob3V0IHNoYWRvdyBlbGVtZW50Jyk7Cit0ZXN0Q29tcG9zZWRT
aGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSkpLAorICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30p
KSkpOworCitkZWJ1ZygnTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aCBzaGFkb3cgZWxlbWVudCcp
OwordGVzdENvbXBvc2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
YSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdiJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYyd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ3NoYWRvdycsIHsnaWQnOiAnZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZSd9KSkpKTsKKworZGVidWcoJ011bHRpcGxlIHNo
YWRvdyByb290IHdpdGggc2hhZG93IGVsZW1lbnQsIGNhc2UgMicpOwordGVzdENvbXBvc2VkU2hh
ZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30pKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQn
OiAnZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnZSd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2YnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2cnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2gnfSkpKSk7CisKK2RlYnVnKCdzaGFkb3cg
cmVwcm9qZWN0aW9uJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdhLWNoaWxkJ30pLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdiJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdkJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnZSd9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnZid9KSkpKSkpOworCitkZWJ1Zygnc2hhZG93IHJlcHJvamVj
dGlvbiwgdGFrZSAyJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdiJ30pLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnc2hhZG93
JywgeydpZCc6ICdjJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnZCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAnZSd9KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnZid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ2cnfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2gnfSkpKSkpKTsKKworZGVidWcoJ3NoYWRvdyBmYWxs
YmFjayBlbGVtZW50IHJlcHJvamVjdGlvbicpOwordGVzdENvbXBvc2VkU2hhZG93VHJlZSgKKyAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnYid9KSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAnZCd9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZSd9KSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2Yn
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ2cnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdoJ30pKSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9v
dChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaSd9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAnaid9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnayd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzog
J2wnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ20nfSkpKSkpKTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sCmluZGV4IDA2ZjdhNzFm
MmE0ZWQ0MzBmNmE0ODQwMmEwYjUyZDVkYTRmMDQ5MTkuLjJiZGJhYjY3M2YwYjBjOTE4ZjMyYWEx
MjA1NWM0YWY1NzI4YmUxMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKQEAgLTE2NSw2ICsx
NjUsNyBAQCB0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAogICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnaCd9KSwKICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2knfSkpKTsKIAoraW50ZXJuYWxzLmFkZHJlc3MoZG9jdW1lbnQpOwogZGVidWcoJ1Rlc3Qg
Zm9yIE11bHRpcGxlIFNoYWRvd1Jvb3RzLicpOwogdGVzdENvbXBvc2VkU2hhZG93VHJlZSgKICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LApAQCAtMjg3LDE4ICsyODgsNiBAQCB0ZXN0
Q29tcG9zZWRTaGFkb3dUcmVlKAogICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnY2hpbGQtMScsICdjbGFzcyc6ICdmb28nfSksCiAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdub3Qtc2VsZWN0ZWQnLCAnY2xhc3MnOiAnZm9vJ30pLAogICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnY2hpbGQtMicsICdjbGFzcyc6ICdmb28nfSkp
KTsKLQotLyoKLWRlYnVnKCdUZXN0IGZvciBtdWx0aXBsZSBzaGFkb3cgcm9vdHMgd2l0aCByZXBy
b2plY3Rpb25zLicpOwotdGVzdENvbXBvc2VkU2hhZG93VHJlZSgKLSAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYSd9LAotICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURP
TSgnY29udGVudCcpKSwKLSAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnYid9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNj
aGlsZCd9KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnc2hhZG93JykpKSwKLSAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2NoaWxkJ30pKSk7Ci0qLwotCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tY29t
cGxleC5odG1sCmluZGV4IGJlMjEwOTkzNGViODI0NWNlYTBlMWQwZTY1NTljZjc0NDA4MWM1Mjgu
LjViZTAzMjA5MTliMWEyYjIyYzAwNjMyNThhN2E3NWQ1NGZiYmYxZjQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9u
LWNvbXBsZXguaHRtbApAQCAtMTQsMTAgKzE0LDEwIEBACiAKIDxzY3JpcHQ+CiB2YXIgc2hhZG93
Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7Ci1zaGFkb3dSb290MS5pbm5lckhU
TUwgPSAnPGRpdiBpZD0iaG9zdDIiPjxjb250ZW50IHNlbGVjdD0iLkEiPjwvY29udGVudD48c2hh
ZG93Pjwvc2hhZG93PjxkaXYgY2xhc3M9Ii5BIj5BPC9kaXY+PC9kaXY+JzsKK3NoYWRvd1Jvb3Qx
LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+PGNvbnRlbnQgc2VsZWN0PSIuQSI+PC9jb250
ZW50PjxzaGFkb3c+PC9zaGFkb3c+PGRpdiBjbGFzcz0iQSI+QTwvZGl2PjwvZGl2Pic7CiAKIHZh
ciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHNoYWRvd1Jvb3QxLmdldEVsZW1l
bnRCeUlkKCdob3N0MicpKTsKLXNoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2PjxoMj5BPC9o
Mj48Y29udGVudCBzZWxlY3Q9ImRpdiI+PC9jb250ZW50PjxoMj5CPC9oMj48c2hhZG93Pjwvc2hh
ZG93PjwvZGl2PicKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2PjxoMj5BPC9oMj48Y29u
dGVudCBzZWxlY3Q9Ii5BIj48L2NvbnRlbnQ+PGgyPkI8L2gyPjxzaGFkb3c+PC9zaGFkb3c+PC9k
aXY+JwogPC9zY3JpcHQ+CiAKIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNr
LWV4cGVjdGVkLmh0bWwKaW5kZXggOTBkZDU2YTc1ODRkNjUzODI3ZTQ1OTQyMDVlMjJhMmZmNTNj
ZTcwNS4uNDhjNTJiMjBjZjA1ZTRjYzEwOGQyY2EzZTNiNWE1ZTg4MDNjZTI1ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxi
YWNrLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRl
bnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKQEAgLTgsNiArOCw3IEBACiA8
ZGl2IGlkPSJob3N0MSI+CiAgICAgPGRpdiBpZD0iaG9zdDIiPgogICAgICAgICA8ZGl2PmNvbnRl
bnQgZmFsbGJhY2sgZWxlbWVudDwvZGl2PgorICAgICAgICA8ZGl2PnNoYWRvdyBmYWxsYmFjayBl
bGVtZW50PC9kaXY+CiAgICAgICAgIDxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+
CiAgICAgPC9kaXY+CiA8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2plY3Rpb24tZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1m
YWxsYmFjay1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbAppbmRleCAxNjYxZjUwYThlMGMyNTUy
NDNkMmI5YjAwN2I2Y2Y0YThjYmQyYjNmLi4yMzg4MDA3ZmFhM2UzZmYxMWFhYWJjMjE2ZjI1OTEy
MTE0NmIzYTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1yZXByb2plY3Rpb24tZmFsbGJhY2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNr
LXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCkBAIC05LDYgKzksNyBAQAogICAgIDxkaXYgaWQ9
Imhvc3QyIj4KICAgICAgICAgPGRpdiBpZD0iaG9zdDMiPgogICAgICAgICAgICAgPGRpdj5jb250
ZW50IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+c2hhZG93IGZhbGxi
YWNrIGVsZW1lbnQ8L2Rpdj4KICAgICAgICAgICAgIDxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0
ZWQuPC9kaXY+CiAgICAgICAgICAgICA8ZGl2PmNvbnRlbnQgZmFsbGJhY2sgZWxlbWVudDwvZGl2
PgogICAgICAgICAgICAgPGRpdj5UaGlzIGFsc28gc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rp
b24tY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yZXByb2plY3Rpb24tY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMmE2MjZmMWMx
OTFhYmI4M2NjN2M1NThkZjNjMWYxYTM2NzMyNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3QgY29uZmlybXMgdGhhdCBjbGlja2luZyBhIHNo
YWRvdyByZXByb2plY3RlZCBlbGVtZW50IGRvZXMgbm90IGNhdXNlIGEgY3Jhc2guCisKK1BBU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0
aW9uLWNsaWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJv
amVjdGlvbi1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2OTE4NjEyODdjN2JlY2UwM2ZlNWYxMmQ2
NmYzMWFiM2Y1ZTgyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpz
Ij48L3NjcmlwdD4KKworPHA+VGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgY2xpY2tpbmcgYSBzaGFk
b3cgcmVwcm9qZWN0ZWQgZWxlbWVudCBkb2VzIG5vdCBjYXVzZSBhIGNyYXNoLjwvcD4KKworPGRp
diBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJob3N0MSI+PGRpdj5Ib3N0IENoaWxkPC9k
aXY+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRh
cmdldCI+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdDIg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAn
PGRpdiBpZD0iaG9zdDMiPjxzaGFkb3c+PC9zaGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxkaXY+
WW91bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNo
YWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxjb250
ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+JzsKKworY29udGFpbmVyLm9mZnNldExlZnQ7CisK
K3ZhciB0YXJnZXQgPSBzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7CitpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odGFyZ2V0
Lm9mZnNldExlZnQgKyAxMCwgdGFyZ2V0Lm9mZnNldFRvcCArIDIpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworY29udGFpbmVy
LmlubmVySFRNTCA9ICJQQVNTIjsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1keW5hbWljLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVj
dGlvbi1keW5hbWljLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM4ODM0NTRkNjRjYmVhNDAy
ZTVlNTliZmFjNWFlYzgxYzUwMjg1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorCis8ZGl2IGlkPSJob3N0
MSI+CisgICAgPGRpdiBpZD0iaG9zdDMiPgorICAgICAgICA8ZGl2PlVwZGF0ZWQgT2xkZXN0IFNo
YWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5BZGRlZCBPbGRlc3QgU2hhZG93Um9v
dCBDaGlsZDwvZGl2PgorICAgICAgICA8ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRp
dj5Zb3VuZ2VzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKwor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
ZXByb2plY3Rpb24tZHluYW1pYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yZXByb2plY3Rpb24tZHluYW1pYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMzQ1MjE1YjgyYWZi
ZmNjMzViMTMzNmQ0OWVjYmFjMzRmMjNhMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1keW5hbWljLmh0bWwKQEAgLTAs
MCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0MSI+PGRpdj5Ib3N0IENo
aWxkPC9kaXY+PC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJo
b3N0MiI+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdDIg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAn
PGRpdiBpZD0iaG9zdDMiPjxzaGFkb3c+PC9zaGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxkaXY+
WW91bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNo
YWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxjb250
ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICBzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIiPlVwZGF0ZWQgT2xk
ZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj48ZGl2PkFkZGVkIE9sZGVzdCBTaGFkb3dSb290IENo
aWxkPC9kaXY+JzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKworPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9u
LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ1NGIwNGE1NmIyZmIyMGQxZmE3N2M3YmIwZTI0
YTFhMTJmZmQ3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgaWQ9Imhv
c3QzIj4KKyAgICAgICAgPGRpdj5PbGRlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PgorICAgICAg
ICA8ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5Zb3VuZ2VzdCBTaGFkb3dSb290
IENoaWxkPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZmFsbGJhY2st
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9q
ZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU3ZDUwMGYyZWU4MzQ4
ZjQ3ODg0MmM0YjI2ODU0Yzc1Y2Y3NjI5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKworPGRpdiBpZD0i
aG9zdDEiPgorICAgIDxkaXYgaWQ9Imhvc3Q0Ij4KKyAgICAgICA8ZGl2Pk9sZGVzdCBTaGFkb3dS
b290IENoaWxkPC9kaXY+CisgICAgICAgPGRpdj5Ib3N0IENoaWxkPC9kaXY+CisgICAgICAgPGRp
dj5TaGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMSk8L2Rpdj4KKyAgICAgICA8ZGl2PlNoYWRvdyBG
YWxsYmFjayBFbGVtZW50ICgyKTwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0
aW9uLWZhbGxiYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJl
cHJvamVjdGlvbi1mYWxsYmFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YzQzZjIwZjFiZGE1NDU4ZDZl
NGU1OTAwMDIwYTVlNjhiMWE0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sCkBAIC0wLDAgKzEs
MjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Bv
bHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwv
ZGl2PjwvZGl2PgorCis8c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj5P
bGRlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2Pic7CisKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8c2hhZG93
Pjwvc2hhZG93Pjxjb250ZW50PjwvY29udGVudD48c2hhZG93PjxkaXYgdGl0bGU9ImRlYnVnc3Rv
cCI+U2hhZG93IEZhbGxiYWNrIEVsZW1lbnQgKDEpPC9kaXY+PC9zaGFkb3c+JzsKKwordmFyIHNo
YWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDMuaW5u
ZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3Q0Ij48c2hhZG93Pjwvc2hhZG93PjxzaGFkb3c+PGRpdj5T
aGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMik8L2Rpdj48L3NoYWRvdz48c3Bhbj5Ob3QgcmVuZGVy
ZWQgKDEpPC9zcGFuPjxzaGFkb3c+PHNwYW4+Tm90IHJlbmRlcmVkICgyKTwvc3Bhbj48L3NoYWRv
dz48L2Rpdj4nOworCit2YXIgaG9zdDQgPSBzaGFkb3dSb290My5nZXRFbGVtZW50QnlJZCgnaG9z
dDQnKTsKK3ZhciBzaGFkb3dSb290NCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3Q0KTsKKwor
c2hhZG93Um9vdDQuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+
JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVk
LWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjODhkOTlkYjRl
MTQxYTBlYWI0OTc0ZDkwODAyM2Y4NmQ3NzMwODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
ZXByb2plY3Rpb24tcHJvaGliaXRlZC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
MTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLQotPHA+VGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCBlbGVtZW50cyBhc3NpZ25lZCB0byBhIHNoYWRvdyBlbGVtZW50IGFyZSBub3QgZGlz
dHJpYnV0ZWQuPC9wPgotCi08ZGl2IGlkPSJob3N0MSI+Ci0gICAgPGRpdiBpZD0iaG9zdDIiPjxk
aXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2pl
Y3Rpb24tcHJvaGliaXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjNDAyNzFhNGFjNWM1MTY4YTMxOTBiNDRhOWMwMTNhNjM0OGU0M2VkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0KLTxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgotCi08cD5UaGlzIHRlc3QgZW5zdXJl
cyB0aGF0IGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2hhZG93IGVsZW1lbnQgYXJlIG5vdCBkaXN0
cmlidXRlZC48L3A+Ci0KLTxkaXYgaWQ9Imhvc3QxIj4KLSAgICA8ZGl2PlRoZXNlIGVsZW1lbnRz
PC9kaXY+Ci0gICAgPGRpdj5zaG91bGQgbm90IGJlPC9kaXY+Ci0gICAgPGRpdj5yZXByb2plY3Rl
ZDwvZGl2PgotPC9kaXY+Ci0KLTxzY3JpcHQ+Ci12YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChob3N0MSk7Ci1zaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9z
dDIiPjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKLQotdmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QyJykpOwotc2hh
ZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXY+PGNvbnRlbnQgc2VsZWN0PSJkaXYiPjwvY29udGVu
dD48ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PjwvZGl2PicKLTwvc2NyaXB0Pgot
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJlcHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
ZXByb2plY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDQ1MDgyZWE4MmM3YjkzZWEwMDBjYjZiNjVh
YWQxNTdjMjA0ZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3Jp
cHQ+CisKKzxkaXYgaWQ9Imhvc3QxIj48ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj48L2Rpdj4KKworPHNj
cmlwdD4KK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3No
YWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+T2xkZXN0IFNoYWRvd1Jvb3Qg
Q2hpbGQ8L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdCho
b3N0MSk7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDMiPjxzaGFkb3c+
PC9zaGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxkaXY+WW91bmdlc3QgU2hhZG93Um9vdCBDaGls
ZDwvZGl2PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlk
KCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMp
Oworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRl
bnQ+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMxOWU0OWY5YjQ4NGU5ODlmMDAyNDM4Y2MzYjc2ZmI5NmJkNTU3OTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVj
dGlvbjItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorCis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdiBpZD0iaG9zdDMiPgorICAgICAgICA8
ZGl2PkE8L2Rpdj4KKyAgICAgICAgPGRpdj5CPC9kaXY+CisgICAgICAgIDxkaXY+QzwvZGl2Pgor
ICAgIDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY3ZDc3
NjIzMzQ3ZmYzNmQ1ODViNmMzMjM5NDVlNjU4ODI1ZDU1NQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sCkBAIC0w
LDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPjxkaXY+QjwvZGl2
PjwvZGl2PgorCis8c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxzaGFkb3c+PC9zaGFkb3c+JzsK
KwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93
Um9vdDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93Pjwvc2hhZG93PjwvZGl2
Pic7CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwor
dmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9v
dDMuaW5uZXJIVE1MID0gJzxkaXY+QTwvZGl2Pjxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRl
bnQ+PGRpdj5DPC9kaXY+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170801</attachid>
            <date>2012-10-25 21:02:45 -0700</date>
            <delta_ts>2012-10-25 21:53:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99228-20121026130117.patch</filename>
            <type>text/plain</type>
            <size>44782</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ0ZmEzNDZjYjRjMTY2
Y2VhNjk2MGFjMTNlNTJjNDkzMzhiZTk5OC4uZmYzMTBiODEyYWMzNDM2NGZhMGRhN2M1NTRkYjMx
OGFhMDIxYjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTEwLTI1ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIFNoYWRvd1Jvb3QuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTIyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN1cHBvcnQgc2hh
ZG93IHJlcHJvamVjdGlvbjsgZWxlbWVudHMgZGlzdHJpYnV0ZWQgdG8gPHNoYWRvdz4gZWxlbWVu
dCBjYW4gYmUgcmVwcm9qZWN0ZWQgdG8gPGNvbnRlbnQ+IG5vdy4KKworICAgICAgICBGaXJzdCwg
d2UgaGF2ZSBhIGRpc3RyaWJ1dGlvbiB2ZWN0b3IgZm9yIGVhY2ggSW5zZXJ0aW9uUG9pbnQsIGV2
ZW4gaWYgSW5zZXJ0aW9uUG9pbnQgaXMgYSBzaGFkb3cgaW5zZXJ0aW9uIHBvaW50LgorICAgICAg
ICBBbmQgd2UgdXBkYXRlIGEgbm9kZS1kaXN0cmlidXRpb24gbWFwLiBCYXNpY2FsbHkgV2UncmUg
Y3JlYXRpbmcgYSBtYXAgZnJvbSBub2RlIHRvIEluc2VydGlvblBvaW50IGluIEVsZW1lbnRTaGFk
b3cuCisgICAgICAgIElmIGEgbm9kZSBjYW4gYmUgZGlzdHJpYnV0ZWQgdG8gc2V2ZXJhbCBJbnNl
cnRpb25Qb2ludCAoZS5nLiBpbiBjYXNlIHJlcHJvamVjdGlvbiBoYXBwZW5zKSwKKyAgICAgICAg
dGhlIEluc2VydGlvblBvaW50IGluIG9sZGVyIFNoYWRvd0RPTSBpcyBjaG9zZW4uCisKKyAgICAg
ICAgV2UgYWxzbyBmaXggQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHRvIGNvbnNpZGVyIHNoYWRv
dyByZXByb2plY3Rpb24uCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9jb21wb3Nl
ZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1keW5hbWljLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZh
bGxiYWNrLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9q
ZWN0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9q
ZWN0aW9uMi5odG1sCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzaG91bGRSZXNldFN0eWxlSW5oZXJpdGFuY2UpOiBOb3cgY29udGV4dC5pbnNl
cnRpb25Qb2ludCgpIHJldHVybnMgdGhlIGZpbmFsIGluc2VydGlvbiBwb2ludCB3aGVyZQorICAg
ICAgICBhIG5vZGUgaXMgZGlzdHJpYnV0ZWQuIFNvIHdlIGRvbid0IGhhdmUgdG8gdHJhY2Ugc2hh
ZG93IGluc2VydGlvbiBwb2ludCBhbnltb3JlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOiBTaW5jZSBhIGRpcmVjdCBjaGlsZCBvZiBTaGFk
b3dSb290IGNhbiBiZSBkaXN0cmlidXRlZCBub3cuIEluIHRoYXQgY2FzZSwKKyAgICAgICAgd2Ug
ZG9uJ3QgaGF2ZSBhbnkgcGFyZW50RWxlbWVudC4gVGhlIHBhcmVudCBub2RlIGlzIGEgU2hhZG93
Um9vdCBpbiB0aGF0IGNhc2UuCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlQ2FuQmVEaXN0cmlidXRlZCk6IElmIGEgbm9k
ZSBjYW4gYmUgZGlzdHJpYnV0ZWQsIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVJlcHJvamVjdGlvbik6IFJlc29sdmVzIGNvbnRlbnQt
cmVwcm9qZWN0aW9uIGFuZCBzaGFkb3ctcmVwcm9qZWN0aW9uIGJvdGguCisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5z
ZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
Ojp0cmF2ZXJzZVBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXI6OnRyYXZlcnNlUGFyZW50QmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QpOiBBIGNh
c2UgU2hhZG93Um9vdCBpcyBhc3NpZ25lZAorICAgICAgICB0byBzb21lIEluc2VydGlvblBvaW50
IHNob3VsZCBiZSBoYW5kbGVkIHdpdGggaW4gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRp
b25Qb2ludC4gU28gd2UgcmVtb3ZlIGl0LgorICAgICAgICAoV2ViQ29yZTo6QW5jZXN0b3JDaGFp
bldhbGtlcjo6cGFyZW50KTogTm93IHdlIGhhdmUgYSBjYXNlIHRoYXQgYSBkaXJlY3QgY2hpbGQg
b2YgU2hhZG93Um9vdCBjYW4gYmUgZGlzdHJpYnV0ZWQuCisgICAgICAgIEluIHRoYXQgY2FzZSwg
d2Ugc2hvdWxkIG5vdCB1cGRhdGUgbV9kaXN0cmlidXRlZE5vZGUuCisgICAgICAgICogZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6aW5zZXJ0
aW9uUG9pbnRGb3IpOiBTaW5jZSB3ZSBoYXZlIGEgZGlzdHJpYnV0aW9uIHZlY3RvciBmb3IgZWFj
aCBJbnNlcnRpb25Qb2ludCwKKyAgICAgICAgd2UgZG9uJ3QgaGF2ZSBhIHNwZWNpYWwgY2FzZSB0
aGF0IGEgU2hhZG93Um9vdCBpcyBhc3NpZ25lZCB0byBzb21lIEluc2VydGlvblBvaW50LiBBY3R1
YWxseSB0aGUgZXhpc3RpbmcgY29kZQorICAgICAgICBpcyBub3QgY29ycmVjdCBub3cgZHVlIHRv
IHNoYWRvdyByZXByb2plY3Rpb24uCisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3Ry
aWJ1dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6cG9wdWxh
dGUpOiBQb3B1bGF0ZSBhIFBPT0wuIElmIGEgbm9kZSBpcyBJbnNlcnRpb25Qb2ludCwgd2UgZmls
bCBpdCB3aXRoIHRoZQorICAgICAgICBkaXN0cmlidXRlZCBub2Rlcy4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKTog
U2luY2Ugd2Ugd2FudCB0byBtYWtlIGEgZGlzdHJpYnV0aW9uIHZlY3RvciBmb3IgZWFjaCBJbnNl
cnRpb25Qb2ludCwKKyAgICAgICAgd2UgaGF2ZSB0byByZXNvbHZlIGEgc2hhZG93IEluc2VydGlv
blBvaW50CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGVO
b2RlQ2hpbGRyZW5Ubyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
Lmg6CisgICAgICAgIChDb250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxTaGFkb3dFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlv
blBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24pOgorICAgICAg
ICAoV2ViQ29yZSk6CisKIDIwMTItMTAtMjUgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI1NDQ2MjY+IFtjZ10gUmVuZGVyQmxvY2s6
OnNlbGVjdGlvbkdhcHMoKSBpcyBleHRyZW1lbHkgc2xvdyB3aGVuIHRoZXJlIGFyZSBtYW55IGZs
b2F0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGUwODI1MjU1N2RhOGQx
ZGQ1OTVmN2MzMTU0ZGM2MWExNjZlMjk1MTcuLjhhZDY3ZThkYThhNDBiNmIxZDk3NTE5MDNmMzA1
NzI5YjdiY2UxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTk2MCwy
MSArOTYwLDEwIEBAIGlubGluZSBib29sIHNob3VsZFJlc2V0U3R5bGVJbmhlcml0YW5jZShOb2Rl
UmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKICAgICBpZiAoY29udGV4dC5yZXNldFN0eWxlSW5o
ZXJpdGFuY2UoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBJbnNlcnRpb25Qb2ludCog
aW5zZXJ0aW9uUG9pbnQgPSBjb250ZXh0Lmluc2VydGlvblBvaW50KCk7Ci0gICAgaWYgKCFpbnNl
cnRpb25Qb2ludCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKHBhcmVudEVs
ZW1lbnRGb3JEaXN0cmlidXRpb24oY29udGV4dC5ub2RlKCkpKTsKLSAgICBFbGVtZW50U2hhZG93
KiBzaGFkb3cgPSBwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnRleHQubm9kZSgpKS0+
c2hhZG93KCk7Ci0gICAgQVNTRVJUKHNoYWRvdyk7CisgICAgaWYgKEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCA9IGNvbnRleHQuaW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgcmV0dXJu
IGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKIAotICAgIGZvciAoIDsg
aW5zZXJ0aW9uUG9pbnQ7ICkgewotICAgICAgICBJbnNlcnRpb25Qb2ludCogeW91bmdlckluc2Vy
dGlvblBvaW50ID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihpbnNlcnRpb25Qb2ludCk7Ci0g
ICAgICAgIGlmICgheW91bmdlckluc2VydGlvblBvaW50KQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGluc2VydGlvblBvaW50ID0geW91bmdlckluc2VydGlvblBvaW50OwotICAgIH0KLSAg
ICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOworICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6aW5pdEZvclN0eWxl
UmVzb2x2ZShFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFBzZXVkb0lkIHBz
ZXVkb0lEKQpAQCAtMTU0MCw5ICsxNTI5LDEwIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTCiAg
ICAgLy8gY29udGVudGVkaXRhYmxlIGF0dHJpYnV0ZSAoaW1wbGVtZW50ZWQgYnkgLXdlYmtpdC11
c2VyLW1vZGlmeSkgc2hvdWxkCiAgICAgLy8gYmUgcHJvcGFnYXRlZCBmcm9tIHNoYWRvdyBob3N0
IHRvIGRpc3RyaWJ1dGVkIG5vZGUuCiAgICAgaWYgKG1fZGlzdHJpYnV0ZWRUb0luc2VydGlvblBv
aW50KSB7Ci0gICAgICAgIEFTU0VSVChlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpOwotICAgICAg
ICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlT2ZTaGFkb3dIb3N0ID0gZWxlbWVudC0+cGFyZW50RWxl
bWVudCgpLT5yZW5kZXJTdHlsZSgpKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VXNlck1vZGlm
eShzdHlsZU9mU2hhZG93SG9zdC0+dXNlck1vZGlmeSgpKTsKKyAgICAgICAgaWYgKEVsZW1lbnQq
IHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKFJl
bmRlclN0eWxlKiBzdHlsZU9mU2hhZG93SG9zdCA9IHBhcmVudC0+cmVuZGVyU3R5bGUoKSkKKyAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRVc2VyTW9kaWZ5KHN0eWxlT2ZTaGFkb3dIb3N0LT51
c2VyTW9kaWZ5KCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGVsZW1lbnQtPmlzTGlu
aygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
Y3BwCmluZGV4IGU4ODIzMGU2NGFhNzBhMmM0NzQwZjdmOTFjMzE4NDdlMGMzOTVmZTEuLjI2Yjgz
ZjMxZTA1ZjFhYjkzYzAxZGI4OWFkYWNhZmI2NDJhOWNjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRl
ICJIVE1MQ29udGVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgog
I2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYz
LDE4ICs2NCw0OCBAQCBzdGF0aWMgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50
Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIDA7ICAgIAogfQog
Ci1zdGF0aWMgaW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0
IE5vZGUqIG5vZGUpCitzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhbkJlRGlzdHJpYnV0ZWQoY29u
c3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgTm9kZSogcGFyZW50ID0g
cGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihub2RlKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBwYXJl
bnQtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCkgOiAwKQorICAgICAgICBy
ZXR1cm4gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworCisgICAgaWYgKHBhcmVudC0+aXNFbGVt
ZW50Tm9kZSgpICYmIHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3coKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgSW5zZXJ0aW9u
UG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSkKIHsK
ICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSAwOwotICAgIGNvbnN0IE5vZGUq
IGN1cnJlbnQgPSBub2RlOwotICAgIHdoaWxlIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFk
b3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgewotICAgICAgICBzaGFkb3ctPmVu
c3VyZURpc3RyaWJ1dGlvbigpOwotICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVk
VG8gPSBzaGFkb3ctPmluc2VydGlvblBvaW50Rm9yKG5vZGUpKSB7Ci0gICAgICAgICAgICBjdXJy
ZW50ID0gaW5zZXJ0ZWRUbzsKLSAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRU
bzsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBicmVhazsKKyAgICBjb25zdCBOb2RlKiBj
dXJyZW50ID0gcHJvamVjdGVkTm9kZTsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlm
IChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihj
dXJyZW50KSkgeworICAgICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAg
ICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+aW5zZXJ0
aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0g
aW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJy
ZW50KSkgeworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFy
ZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9vdChwYXJlbnQpLT5hc3NpZ25lZFRvKCkg
OiAwKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYnJlYWs7CiAgICAgfQor
CiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCkBAIC0yMDMsOSArMjM0LDEwIEBAIE5v
ZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VEaXN0cmlidXRlZE5vZGVzKGNv
bnN0IE5vZGUqIG5vZGUsIGNvbnN0CiBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRy
YXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgVHJh
dmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBBU1NFUlQobm9kZSk7Ci0gICAgRWxl
bWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobm9kZSk7Ci0gICAgaWYgKCFzaGFk
b3cpCisKKyAgICBpZiAoIW5vZGVDYW5CZURpc3RyaWJ1dGVkKG5vZGUpKQogICAgICAgICByZXR1
cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOworCiAgICAg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVzb2x2ZVJlcHJvamVjdGlvbihub2Rl
KTsKICAgICBpZiAoIWluc2VydGlvblBvaW50KQogICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJs
aW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwpAQCAtMjcyLDggKzMwNCw4IEBAIE5v
ZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSog
bm9kZSwgUGFyZW50VHJhdmVyc2FsCiAgICAgICAgIEFTU0VSVCh0b1NoYWRvd1Jvb3Qobm9kZSkt
PmlzWW91bmdlc3QoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoRWxlbWVu
dFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24obm9kZSkpIHsK
LSAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKworICAgIGlmIChub2RlQ2Fu
QmVEaXN0cmlidXRlZChub2RlKSkgewogICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50ID0gcmVzb2x2ZVJlcHJvamVjdGlvbihub2RlKSkgewogICAgICAgICAgICAgaWYg
KGRldGFpbHMpCiAgICAgICAgICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Q
b2ludChpbnNlcnRpb25Qb2ludCk7CkBAIC0yOTcsNiArMzI5LDggQEAgaW5saW5lIE5vZGUqIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRUcmVlKGNvbnN0
IE5vZGUqIG4KIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRC
YWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290
LCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKSBjb25zdAogewogICAgIEFTU0VSVChz
aGFkb3dSb290KTsKKyAgICBBU1NFUlQoIXNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKSk7CisKICAg
ICBpZiAoc2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CiAgICAgICAgIGlmIChjYW5Dcm9zc1Vw
cGVyQm91bmRhcnkoKSkgewogICAgICAgICAgICAgaWYgKGRldGFpbHMpCkBAIC0zMDcsMTIgKzM0
MSw2IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRCYWNr
VG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zCiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0
PFNoYWRvd1Jvb3QqPihzaGFkb3dSb290KTsKICAgICB9CiAKLSAgICBpZiAoSW5zZXJ0aW9uUG9p
bnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25lZFRvKCkpIHsK
LSAgICAgICAgaWYgKGRldGFpbHMpCi0gICAgICAgICAgICBkZXRhaWxzLT5kaWRUcmF2ZXJzZVNo
YWRvd1Jvb3Qoc2hhZG93Um9vdCk7Ci0gICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChhc3Np
Z25lZEluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKLSAgICB9Ci0KICAgICByZXR1cm4gMDsKIH0K
IApAQCAtMzc3LDcgKzQwNSw4IEBAIHZvaWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkK
ICAgICB9CiAgICAgaWYgKCFtX25vZGUtPmlzU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIG1fbm9k
ZSA9IG1fbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1f
bm9kZTsKKyAgICAgICAgaWYgKCEobV9ub2RlICYmIG1fbm9kZS0+aXNTaGFkb3dSb290KCkgJiYg
dG9TaGFkb3dSb290KG1fbm9kZSktPmFzc2lnbmVkVG8oKSkpCisgICAgICAgICAgICBtX2Rpc3Ry
aWJ1dGVkTm9kZSA9IG1fbm9kZTsKICAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQg
PSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hh
ZG93LmNwcAppbmRleCBhZWI1YjViNDc1YjIxOWJjNTdkYzg1ZWYyZTdiODMyYWVlODg5M2ZjLi4w
M2EwNjIyNWFiOWY3OTI0MmZkMDg5OTBjZjIzMDJmNTNhNThjNWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuY3BwCkBAIC0xMzQsMTUgKzEzNCw2IEBAIHZvaWQgRWxlbWVudFNoYWRv
dzo6ZGV0YWNoKCkKIAogSW5zZXJ0aW9uUG9pbnQqIEVsZW1lbnRTaGFkb3c6Omluc2VydGlvblBv
aW50Rm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG5vZGUgJiYgbm9k
ZS0+cGFyZW50Tm9kZSgpKTsKLQotICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCktPmlzU2hhZG93
Um9vdCgpKSB7Ci0gICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0
b1NoYWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKS0+YXNzaWduZWRUbygpKQotICAgICAgICAg
ICAgcmV0dXJuIGluc2VydGlvblBvaW50OwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQog
ICAgIHJldHVybiBkaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihub2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5j
cHAKaW5kZXggODNkZjVlMGMwNTFlNTM3ZDhlZmRmMzg3MzJkOTE3NjM5NzZmMzVlMS4uMmE2ZGZj
OWEyNjAxNTdiOGM4NjQ5NzBhZTkwNWI3MTQ3MjAzNWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC01MCw2ICs1MCwyMyBA
QCBJbnNlcnRpb25Qb2ludCogQ29udGVudERpc3RyaWJ1dG9yOjpmaW5kSW5zZXJ0aW9uUG9pbnRG
b3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAogICAgIHJldHVybiBtX25vZGVUb0luc2VydGlvblBv
aW50LmdldChrZXkpOwogfQogCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6cG9wdWxhdGUoTm9k
ZSogbm9kZSwgQ29udGVudERpc3RyaWJ1dGlvbiYgcG9vbCkKK3sKKyAgICBpZiAoIWlzSW5zZXJ0
aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgcG9vbC5hcHBlbmQobm9kZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0b0lu
c2VydGlvblBvaW50KG5vZGUpOworICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0
aW9uKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludC0+
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBwb3B1bGF0ZShpbnNlcnRpb25Qb2ludC0+YXQoaSks
IHBvb2wpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoTm9kZSogZmFsbGJhY2tOb2RlID0g
aW5zZXJ0aW9uUG9pbnQtPmZpcnN0Q2hpbGQoKTsgZmFsbGJhY2tOb2RlOyBmYWxsYmFja05vZGUg
PSBmYWxsYmFja05vZGUtPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICBwb29sLmFwcGVuZChm
YWxsYmFja05vZGUpOworICAgIH0KK30KKwogdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3Ry
aWJ1dGUoRWxlbWVudCogaG9zdCkKIHsKICAgICBBU1NFUlQobmVlZHNEaXN0cmlidXRpb24oKSk7
CkBAIC01OCwyNyArNzUsMTYgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUo
RWxlbWVudCogaG9zdCkKICAgICBtX3ZhbGlkaXR5ID0gVmFsaWQ7CiAKICAgICBDb250ZW50RGlz
dHJpYnV0aW9uIHBvb2w7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gaG9zdC0+Zmlyc3RDaGlsZCgp
OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoIWlzSFRN
TENvbnRlbnRFbGVtZW50KG5vZGUpKSB7Ci0gICAgICAgICAgICBwb29sLmFwcGVuZChub2RlKTsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgSW5zZXJ0aW9uUG9p
bnQqIGluc2VydGlvblBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKLSAgICAgICAgaWYg
KGluc2VydGlvblBvaW50LT5oYXNEaXN0cmlidXRpb24oKSkgewotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICAgICAgcG9vbC5hcHBlbmQoaW5zZXJ0aW9uUG9pbnQtPmF0KGkpKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGZvciAoTm9kZSogZmFsbGJhY2tOb2RlID0gaW5zZXJ0aW9uUG9pbnQt
PmZpcnN0Q2hpbGQoKTsgZmFsbGJhY2tOb2RlOyBmYWxsYmFja05vZGUgPSBmYWxsYmFja05vZGUt
Pm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgcG9vbC5hcHBlbmQoZmFsbGJhY2tOb2Rl
KTsKLSAgICAgICAgfQotICAgIH0KKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBob3N0LT5maXJzdENo
aWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQorICAgICAgICBwb3B1bGF0
ZShub2RlLCBwb29sKTsKIAogICAgIFZlY3Rvcjxib29sPiBkaXN0cmlidXRlZChwb29sLnNpemUo
KSk7CiAgICAgZGlzdHJpYnV0ZWQuZmlsbChmYWxzZSk7CiAKLSAgICBIVE1MU2hhZG93RWxlbWVu
dCogZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludEluT2xkZXN0U2hhZG93Um9vdCA9IDA7
CisgICAgVmVjdG9yPEhUTUxTaGFkb3dFbGVtZW50KiwgOD4gYWN0aXZlU2hhZG93SW5zZXJ0aW9u
UG9pbnRzOwogICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IGhvc3QtPnlvdW5nZXN0U2hhZG93
Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAg
SFRNTFNoYWRvd0VsZW1lbnQqIGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQgPSAwOwor
CiAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2
ZXJzZU5leHROb2RlKHJvb3QpKSB7CiAgICAgICAgICAgICBpZiAoIWlzSW5zZXJ0aW9uUG9pbnQo
bm9kZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC04NywyNSArOTMsMzEgQEAgdm9p
ZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKGlzSFRNTFNoYWRvd0VsZW1lbnQo
bm9kZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAocm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFyb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXNzaWdu
ZWRUbygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRlTm9kZUNoaWxkcmVu
VG8ocG9pbnQsIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5zZXRBc3NpZ25lZFRvKHBvaW50KTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWZpcnN0QWN0aXZl
U2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jvb3QpCi0gICAgICAgICAgICAgICAg
ICAgIGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jvb3QgPSB0
b0hUTUxTaGFkb3dFbGVtZW50KG5vZGUpOworICAgICAgICAgICAgICAgIGlmICghZmlyc3RBY3Rp
dmVTaGFkb3dJbnNlcnRpb25Qb2ludCkKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RBY3RpdmVT
aGFkb3dJbnNlcnRpb25Qb2ludCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQobm9kZSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8ocG9p
bnQsIHBvb2wsIGRpc3RyaWJ1dGVkKTsKICAgICAgICAgICAgICAgICBpZiAoRWxlbWVudFNoYWRv
dyogc2hhZG93ID0gbm9kZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1l
bnQobm9kZS0+cGFyZW50Tm9kZSgpKS0+c2hhZG93KCkgOiAwKQogICAgICAgICAgICAgICAgICAg
ICBzaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQorCisgICAgICAgIGlmIChmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50KQorICAg
ICAgICAgICAgYWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRzLmFwcGVuZChmaXJzdEFjdGl2ZVNo
YWRvd0luc2VydGlvblBvaW50KTsKICAgICB9CiAKLSAgICBpZiAoZmlyc3RBY3RpdmVTaGFkb3dJ
bnNlcnRpb25Qb2ludEluT2xkZXN0U2hhZG93Um9vdCkgewotICAgICAgICBkaXN0cmlidXRlU2Vs
ZWN0aW9uc1RvKGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jv
b3QsIHBvb2wsIGRpc3RyaWJ1dGVkKTsKLSAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRv
dyA9IGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jvb3QtPnBh
cmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KGZpcnN0QWN0aXZlU2hhZG93
SW5zZXJ0aW9uUG9pbnRJbk9sZGVzdFNoYWRvd1Jvb3QtPnBhcmVudE5vZGUoKSktPnNoYWRvdygp
IDogMCkKLSAgICAgICAgICAgIHNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOworICAg
IGZvciAoc2l6ZV90IGkgPSBhY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludHMuc2l6ZSgpOyBpID4g
MDsgLS1pKSB7CisgICAgICAgIEhUTUxTaGFkb3dFbGVtZW50KiBzaGFkb3dFbGVtZW50ID0gYWN0
aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnRzW2kgLSAxXTsKKyAgICAgICAgU2hhZG93Um9vdCogcm9v
dCA9IHNoYWRvd0VsZW1lbnQtPnNoYWRvd1Jvb3QoKTsKKyAgICAgICAgQVNTRVJUKHJvb3QpOwor
ICAgICAgICBpZiAocm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGRpc3Ry
aWJ1dGVOb2RlQ2hpbGRyZW5UbyhzaGFkb3dFbGVtZW50LCByb290LT5vbGRlclNoYWRvd1Jvb3Qo
KSk7CisgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+c2V0QXNzaWduZWRUbyhz
aGFkb3dFbGVtZW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRpc3RyaWJ1dGVT
ZWxlY3Rpb25zVG8oc2hhZG93RWxlbWVudCwgcG9vbCwgZGlzdHJpYnV0ZWQpOworICAgICAgICAg
ICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd0VsZW1lbnQtPnBhcmVudE5vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KHNoYWRvd0VsZW1lbnQtPnBhcmVudE5vZGUo
KSktPnNoYWRvdygpIDogMCkKKyAgICAgICAgICAgICAgICBzaGFkb3ctPmludmFsaWRhdGVEaXN0
cmlidXRpb24oKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTYyLDggKzE3NCwyNSBAQCB2
b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZU5vZGVDaGlsZHJlblRvKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludAogewogICAgIENvbnRlbnREaXN0cmlidXRpb24gZGlzdHJp
YnV0aW9uOwogICAgIGZvciAoTm9kZSogbm9kZSA9IGNvbnRhaW5lck5vZGUtPmZpcnN0Q2hpbGQo
KTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgZGlzdHJpYnV0
aW9uLmFwcGVuZChub2RlKTsKLSAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5hZGQobm9k
ZSwgaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSAm
JiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICBJbnNl
cnRpb25Qb2ludCogaW5uZXJJbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSk7
CisgICAgICAgICAgICBpZiAoaW5uZXJJbnNlcnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0aW9uKCkp
IHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlubmVySW5zZXJ0aW9u
UG9pbnQtPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi5h
cHBlbmQoaW5uZXJJbnNlcnRpb25Qb2ludC0+YXQoaSkpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIW1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuY29udGFpbnMoaW5uZXJJbnNlcnRpb25Qb2ludC0+
YXQoaSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5h
ZGQoaW5uZXJJbnNlcnRpb25Qb2ludC0+YXQoaSksIGluc2VydGlvblBvaW50KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZvciAoTm9k
ZSogY2hpbGQgPSBpbm5lckluc2VydGlvblBvaW50LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1
dGlvbi5hcHBlbmQoY2hpbGQpOworICAgICAgICAgICAgICAgICAgICBtX25vZGVUb0luc2VydGlv
blBvaW50LmFkZChjaGlsZCwgaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi5h
cHBlbmQobm9kZSk7CisgICAgICAgICAgICBpZiAoIW1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuY29u
dGFpbnMobm9kZSkpCisgICAgICAgICAgICAgICAgbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5hZGQo
bm9kZSwgaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaW5zZXJ0aW9u
UG9pbnQtPnNldERpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAppbmRleCBiZWU5MmE1NmFjMTQwYWY2
NTVmMDVlODM5Y2JhNjYwM2M1NDJkMjZjLi4wZDhkMDA4MmU2ZTkyNDEwZTQzZjYwNjBjZTM2ZjE2
ZTY4ZTA0NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
RGlzdHJpYnV0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuaApAQCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRl
RGlzdHJpYnV0aW9uSW4oQ29udGVudERpc3RyaWJ1dGlvbiopOwogCiBwcml2YXRlOgorICAgIHZv
aWQgcG9wdWxhdGUoTm9kZSosIENvbnRlbnREaXN0cmlidXRpb24mKTsKKwogICAgIEhhc2hNYXA8
Y29uc3QgTm9kZSosIEluc2VydGlvblBvaW50Kj4gbV9ub2RlVG9JbnNlcnRpb25Qb2ludDsKICAg
ICB1bnNpZ25lZCBtX3ZhbGlkaXR5IDogMjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaAppbmRleCAzNmJkZDg5NWFjMmRlZmIzYTQwN2Y0MDFk
ZDg5MjNlNWE3ZDlmOTA0Li5iYWMyYjkyYjU3OTYxYjIzZGZjYzJlMzJlMWY1NWIyZDU3ZTMyNjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgK
QEAgLTY3LDYgKzY3LDEyIEBAIGlubGluZSBIVE1MU2hhZG93RWxlbWVudCogdG9IVE1MU2hhZG93
RWxlbWVudChOb2RlKiBub2RlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2hhZG93RWxl
bWVudCo+KG5vZGUpOwogfQogCitpbmxpbmUgY29uc3QgSFRNTFNoYWRvd0VsZW1lbnQqIHRvSFRN
TFNoYWRvd0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwg
aXNIVE1MU2hhZG93RWxlbWVudChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEhUTUxTaGFkb3dFbGVtZW50Kj4obm9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEhUTUxTaGFkb3dFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDQzMDQxNWY3YjYyNmMyOTg5YmFhMzc2ZWMxMGY0
NGZmNTdiOTk4YWYuLmY5ZTA4NGZiMGM4ODY1MmRlZTYwOWExYjRmMGY0OGYwYTYxYzY2NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMTE5LDE5
ICsxMTksMjkgQEAgaW5saW5lIGJvb2wgaXNMb3dlckVuY2Fwc3VsYXRpb25Cb3VuZGFyeShOb2Rl
KiBub2RlKQogICAgIHJldHVybiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRvd0JvdW5k
YXJ5KCk7CiB9CiAKLWlubGluZSBFbGVtZW50KiBwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9u
KGNvbnN0IE5vZGUqIG5vZGUpCitpbmxpbmUgTm9kZSogcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlv
bihjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAoRWxlbWVu
dCogcGFyZW50ID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpc0luc2Vy
dGlvblBvaW50KHBhcmVudCkgJiYgdG9JbnNlcnRpb25Qb2ludChwYXJlbnQpLT5zaG91bGRVc2VG
YWxsYmFja0VsZW1lbnRzKCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50LT5wYXJlbnRFbGVt
ZW50KCk7CiAKKyAgICBpZiAoTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Cisg
ICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KHBhcmVudCkgJiYgdG9JbnNlcnRpb25Qb2ludChw
YXJlbnQpLT5zaG91bGRVc2VGYWxsYmFja0VsZW1lbnRzKCkpCisgICAgICAgICAgICByZXR1cm4g
cGFyZW50LT5wYXJlbnROb2RlKCk7CiAgICAgICAgIHJldHVybiBwYXJlbnQ7CiAgICAgfQogCiAg
ICAgcmV0dXJuIDA7CiB9CiAKK2lubGluZSBFbGVtZW50KiBwYXJlbnRFbGVtZW50Rm9yRGlzdHJp
YnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgaWYgKE5vZGUqIHBhcmVudCA9IHBhcmVu
dE5vZGVGb3JEaXN0cmlidXRpb24obm9kZSkpIHsKKyAgICAgICAgaWYgKHBhcmVudC0+aXNFbGVt
ZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpOworICAgIH0K
KworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBJbnNlcnRpb25Qb2ludF9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzdlMzlhZGE0ODI2NTJiZTRmY2U2MjY4ZmVmYmQw
NGIzMzA1MDY1ZS4uZDAxNjU0Y2Y5NTFhNmI4NjQ5ZGYxMmUzMDY5ZjE4YmUzNWZkMzdjNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEwLTI1ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93IGVsZW1lbnQgaXMgbm90IHJlcHJv
amVjdGVkIHRvIGEgbmVzdGVkIFNoYWRvd1Jvb3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10
cmVlLXdhbGtlci1zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFkb3ct
cmVwcm9qZWN0aW9uLmh0bWw6IEFkZGVkLiBBIHdhbGtlciB0ZXN0IGNhc2UgZm9yIGVsZW1lbnRz
IGRpc3RyaWJ1dGVkCisgICAgICAgIHRvIHNoYWRvdyBlbGVtZW50IGFyZSByZXByb2plY3RlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0
bWw6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWNvbXBs
ZXguaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24t
ZmFsbGJhY2stZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1yZXByb2plY3Rpb24tZmFsbGJhY2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWw6CisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tY2xpY2stZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlv
bi1jbGljay5odG1sOiBBZGRlZC4gRG9lcyBzb21lIGludGVyYWN0aXZlIHdpdGggYSBzaGFkb3ct
cmVwcm9qZWN0ZWQgbm9kZS4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJv
amVjdGlvbi1keW5hbWljLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWR5bmFtaWMuaHRtbDogQWRkZWQuIEFkZHMgZHlu
YW1pY2FsbHkgZWxlbWVudHMgc2hhZG93LXJlcHJvamVjdGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0
aW9uLWZhbGxiYWNrLmh0bWw6IEFkZGVkLiBBIHRlc3QgY2FzZSBmb3IgZmFsbGJhY2sgZWxlbWVu
dHMgb2YgYSBzaGFkb3cgZWxlbWVudAorICAgICAgICBhcmUgcmVwcm9qZWN0ZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC1leHBlY3Rl
ZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9q
ZWN0aW9uLXByb2hpYml0ZWQuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJlcHJvamVjdGlvbi5odG1sOiBBZGRlZC4gQSBiYXNpYyB0ZXN0IGNhc2UuCisg
ICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24yLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9u
Mi5odG1sOiBBZGRlZC4gQW5vdGhlciBiYXNpYyB0ZXN0IGNhc2UuCisKIDIwMTItMTAtMjUgIFZp
bmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IHJlYmFzZWxpbmUgb2YgdGVzdHMgZmFpbGluZyBhZnRlciAxMzI1Mjkgcm9sbGVkIG91dCAxMzIy
NjkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hh
ZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFkb3ct
cmVwcm9qZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGVmNmViMzUwM2YxMTI3YTBh
ZWFmMjk2ODg3NjQwOTczNDYzZjMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1zaGFkb3ctcmVwcm9qZWN0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzNSBAQAorVGVzdHMgZm9yIENvbXBvc2VkIFNo
YWRvdyBET00gVHJlZSBUcmF2ZXJzYWwgQVBJcy4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK011bHRpcGxlIHNoYWRvdyByb290IHdpdGhv
dXQgc2hhZG93IGVsZW1lbnQKK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBpZD1hCisJRElW
CSBpZD1jCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YworVHJh
dmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWMKK0RJVgkgaWQ9YQorCitNdWx0aXBsZSBzaGFk
b3cgcm9vdCB3aXRoIHNoYWRvdyBlbGVtZW50CitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkg
aWQ9YQorCURJVgkgaWQ9YworCURJVgkgaWQ9YgorCURJVgkgaWQ9ZQorCitUcmF2ZXJzZSBpbiBm
b3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWMKK0RJVgkgaWQ9YgorRElWCSBpZD1lCitUcmF2
ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZQorRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkg
aWQ9YQorCitNdWx0aXBsZSBzaGFkb3cgcm9vdCB3aXRoIHNoYWRvdyBlbGVtZW50LCBjYXNlIDIK
K0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1mCisJRElWCSBpZD1j
CisJRElWCSBpZD1iCisJRElWCSBpZD1lCisJRElWCSBpZD1oCisKK1RyYXZlcnNlIGluIGZvcndh
cmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9ZgorRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9
ZQorRElWCSBpZD1oCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9aAorRElWCSBpZD1l
CitESVYJIGlkPWIKK0RJVgkgaWQ9YworRElWCSBpZD1mCitESVYJIGlkPWEKKworc2hhZG93IHJl
cHJvamVjdGlvbgorQ29tcG9zZWQgU2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIK
KwkJRElWCSBpZD1kCisJCURJVgkgaWQ9YS1jaGlsZAorCQlESVYJIGlkPWYKKworVHJhdmVyc2Ug
aW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1iCitESVYJIGlkPWQKK0RJVgkgaWQ9YS1j
aGlsZAorRElWCSBpZD1mCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9ZgorRElWCSBp
ZD1hLWNoaWxkCitESVYJIGlkPWQKK0RJVgkgaWQ9YgorRElWCSBpZD1hCisKK3NoYWRvdyByZXBy
b2plY3Rpb24sIHRha2UgMgorQ29tcG9zZWQgU2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJ
IGlkPWQKKwkJRElWCSBpZD1mCisJCURJVgkgaWQ9YgorCQlESVYJIGlkPWgKKworVHJhdmVyc2Ug
aW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1kCitESVYJIGlkPWYKK0RJVgkgaWQ9Ygor
RElWCSBpZD1oCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9aAorRElWCSBpZD1iCitE
SVYJIGlkPWYKK0RJVgkgaWQ9ZAorRElWCSBpZD1hCisKK3NoYWRvdyBmYWxsYmFjayBlbGVtZW50
IHJlcHJvamVjdGlvbgorQ29tcG9zZWQgU2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlk
PWkKKwkJRElWCSBpZD1rCisJCURJVgkgaWQ9YworCQlESVYJIGlkPWIKKwkJRElWCSBpZD1nCisJ
CURJVgkgaWQ9aAorCQlESVYJIGlkPW0KKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9
YQorRElWCSBpZD1pCitESVYJIGlkPWsKK0RJVgkgaWQ9YworRElWCSBpZD1iCitESVYJIGlkPWcK
K0RJVgkgaWQ9aAorRElWCSBpZD1tCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9bQor
RElWCSBpZD1oCitESVYJIGlkPWcKK0RJVgkgaWQ9YgorRElWCSBpZD1jCitESVYJIGlkPWsKK0RJ
VgkgaWQ9aQorRElWCSBpZD1hCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
Y29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItc2hh
ZG93LXJlcHJvamVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZjg4NWZiYzAzOGY0ZWZiYjJkMmY3
NzAzM2VjMjIyNGI5ZTA0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24u
aHRtbApAQCAtMCwwICsxLDE2MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InNhbmRib3giPjwv
ZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBmb3IgQ29tcG9zZWQgU2hhZG93IERP
TSBUcmVlIFRyYXZlcnNhbCBBUElzLiBDYW4gb25seSBydW4gd2l0aGluIERSVCIpOworCitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0
aW9uIGR1bXBOb2RlKG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gJyhu
dWxsKScKKyAgICB2YXIgb3V0cHV0ID0gbm9kZS5ub2RlTmFtZSArICJcdCI7CisgICAgaWYgKG5v
ZGUuaWQpCisgICAgICAgIG91dHB1dCArPSAnIGlkPScgKyBub2RlLmlkOworICAgIGlmIChub2Rl
LmNsYXNzTmFtZSkKKyAgICAgICAgb3V0cHV0ICs9ICcgY2xhc3M9JyArIG5vZGUuY2xhc3NOYW1l
OworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGR1bXBDb21wb3NlZFNoYWRvd1Ry
ZWUobm9kZSwgaW5kZW50KQoreworICAgIGluZGVudCA9IGluZGVudCB8fCAiIjsKKyAgICB2YXIg
b3V0cHV0ID0gaW5kZW50ICsgZHVtcE5vZGUobm9kZSkgKyAiXG4iOworICAgIHZhciBjaGlsZDsK
KyAgICBmb3IgKGNoaWxkID0gaW50ZXJuYWxzLmZpcnN0Q2hpbGRCeVdhbGtlcihub2RlKTsgY2hp
bGQ7IGNoaWxkID0gaW50ZXJuYWxzLm5leHRTaWJsaW5nQnlXYWxrZXIoY2hpbGQpKQorICAgICAg
ICAgb3V0cHV0ICs9IGR1bXBDb21wb3NlZFNoYWRvd1RyZWUoY2hpbGQsIGluZGVudCArICJcdCIp
OworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGxhc3ROb2RlQnlXYWxrZXIocm9v
dCkKK3sKKyAgICB2YXIgbGFzdE5vZGUgPSByb290OworICAgIHdoaWxlIChpbnRlcm5hbHMubGFz
dENoaWxkQnlXYWxrZXIobGFzdE5vZGUpKQorICAgICAgICBsYXN0Tm9kZSA9IGludGVybmFscy5s
YXN0Q2hpbGRCeVdhbGtlcihsYXN0Tm9kZSk7CisgICAgcmV0dXJuIGxhc3ROb2RlOworfQorCitm
dW5jdGlvbiBzaG93Q29tcG9zZWRTaGFkb3dUcmVlQnlUcmF2ZXJzaW5nSW5Gb3J3YXJkKHJvb3Qp
Cit7CisgICAgdmFyIG5vZGUgPSByb290OworICAgIHZhciBsYXN0ID0gbGFzdE5vZGVCeVdhbGtl
cihyb290KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBkZWJ1ZyhkdW1wTm9kZShub2Rl
KSk7CisgICAgICAgIGlmIChub2RlID09IGxhc3QpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgbm9kZSA9IGludGVybmFscy5uZXh0Tm9kZUJ5V2Fsa2VyKG5vZGUpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gc2hvd0NvbXBvc2VkU2hhZG93VHJlZUJ5VHJhdmVyc2luZ0luQmFja3dhcmQocm9v
dCkKK3sKKyAgICB2YXIgbm9kZSA9IGxhc3ROb2RlQnlXYWxrZXIocm9vdCk7CisgICAgd2hpbGUg
KG5vZGUpIHsKKyAgICAgICAgZGVidWcoZHVtcE5vZGUobm9kZSkpOworICAgICAgICBpZiAobm9k
ZSA9PSByb290KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5vZGUgPSBpbnRlcm5hbHMu
cHJldmlvdXNOb2RlQnlXYWxrZXIobm9kZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93Q29t
cG9zZWRTaGFkb3dUcmVlKG5vZGUpCit7CisgICAgZGVidWcoJ0NvbXBvc2VkIFNoYWRvdyBUcmVl
OicpOworICAgIGRlYnVnKGR1bXBDb21wb3NlZFNoYWRvd1RyZWUobm9kZSkpOworCisgICAgZGVi
dWcoJ1RyYXZlcnNlIGluIGZvcndhcmQuJyk7CisgICAgc2hvd0NvbXBvc2VkU2hhZG93VHJlZUJ5
VHJhdmVyc2luZ0luRm9yd2FyZChub2RlKTsKKworICAgIGRlYnVnKCdUcmF2ZXJzZSBpbiBiYWNr
d2FyZC4nKTsKKyAgICBzaG93Q29tcG9zZWRTaGFkb3dUcmVlQnlUcmF2ZXJzaW5nSW5CYWNrd2Fy
ZChub2RlKTsKKworICAgIGRlYnVnKCcnKTsKK30KKworZnVuY3Rpb24gc2hvd05leHROb2RlKG5v
ZGUpIHsKKyAgICB2YXIgbmV4dCA9IGludGVybmFscy5uZXh0Tm9kZUJ5V2Fsa2VyKG5vZGUpOwor
ICAgIGRlYnVnKCdOZXh0IG5vZGUgb2YgWycgKyBkdW1wTm9kZShub2RlKSArICddIGlzIFsnICsg
ZHVtcE5vZGUobmV4dCkgKyAnXScpOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcG9zZWRTaGFkb3dU
cmVlKG5vZGUpCit7CisgICAgdmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
c2FuZGJveCcpOworICAgIHNhbmRib3guaW5uZXJIVE1MID0gJyc7CisgICAgc2FuZGJveC5hcHBl
bmRDaGlsZChub2RlKTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgc2hvd0Nv
bXBvc2VkU2hhZG93VHJlZShub2RlKTsKK30KKworZGVidWcoJ011bHRpcGxlIHNoYWRvdyByb290
IHdpdGhvdXQgc2hhZG93IGVsZW1lbnQnKTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKSk7CisKK2RlYnVnKCdN
dWx0aXBsZSBzaGFkb3cgcm9vdCB3aXRoIHNoYWRvdyBlbGVtZW50Jyk7Cit0ZXN0Q29tcG9zZWRT
aGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSkpLAorICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93Jywgeydp
ZCc6ICdkJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdlJ30pKSkpOworCitkZWJ1ZygnTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aCBz
aGFkb3cgZWxlbWVudCwgY2FzZSAyJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSkpLAorICAgICAgICAgICAgICBjcmVhdGVT
aGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdkJ30pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJ30pKSwK
KyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
Zid9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycs
IHsnaWQnOiAnZyd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnaCd9KSkpKTsKKworZGVidWcoJ3NoYWRvdyByZXByb2plY3Rpb24nKTsK
K3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2En
fSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EtY2hpbGQnfSksCisg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2In
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdz
aGFkb3cnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdlJ30pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdmJ30pKSkpKSk7CisKK2RlYnVnKCdzaGFkb3cgcmVwcm9qZWN0aW9uLCB0YWtlIDInKTsK
K3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2En
fSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2MnfSkp
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdkJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnc2hhZG93JywgeydpZCc6ICdlJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnZyd9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnaCd9KSkpKSkpOworCitkZWJ1Zygnc2hhZG93IGZhbGxiYWNrIGVsZW1lbnQgcmVw
cm9qZWN0aW9uJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdi
J30pLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdjJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hh
ZG93JywgeydpZCc6ICdkJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJ30pKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAnZid9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZyd9
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2gnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdpJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdqJ30pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdrJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnbCd9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnbSd9KSkpKSkpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hh
ZG93LXRyZWUtd2Fsa2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9z
ZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKaW5kZXggMDZmN2E3MWYyYTRlZDQzMGY2YTQ4NDAy
YTBiNTJkNWRhNGYwNDkxOS4uYzg4ZTA2OGU0ZGUxMGRjZGRhNzJjYWE3MTc2MzA1ZTMwNGNmZWJm
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRv
dy10cmVlLXdhbGtlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21w
b3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbApAQCAtMjg3LDE4ICsyODcsNiBAQCB0ZXN0Q29t
cG9zZWRTaGFkb3dUcmVlKAogICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
Y2hpbGQtMScsICdjbGFzcyc6ICdmb28nfSksCiAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdub3Qtc2VsZWN0ZWQnLCAnY2xhc3MnOiAnZm9vJ30pLAogICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnY2hpbGQtMicsICdjbGFzcyc6ICdmb28nfSkpKTsK
LQotLyoKLWRlYnVnKCdUZXN0IGZvciBtdWx0aXBsZSBzaGFkb3cgcm9vdHMgd2l0aCByZXByb2pl
Y3Rpb25zLicpOwotdGVzdENvbXBvc2VkU2hhZG93VHJlZSgKLSAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnYSd9LAotICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgn
Y29udGVudCcpKSwKLSAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnYid9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNjaGls
ZCd9KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnc2hhZG93JykpKSwKLSAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2No
aWxkJ30pKSk7Ci0qLwotCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tY29tcGxl
eC5odG1sCmluZGV4IGJlMjEwOTkzNGViODI0NWNlYTBlMWQwZTY1NTljZjc0NDA4MWM1MjguLjVi
ZTAzMjA5MTliMWEyYjIyYzAwNjMyNThhN2E3NWQ1NGZiYmYxZjQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1jb21wbGV4Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWNv
bXBsZXguaHRtbApAQCAtMTQsMTAgKzE0LDEwIEBACiAKIDxzY3JpcHQ+CiB2YXIgc2hhZG93Um9v
dDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7Ci1zaGFkb3dSb290MS5pbm5lckhUTUwg
PSAnPGRpdiBpZD0iaG9zdDIiPjxjb250ZW50IHNlbGVjdD0iLkEiPjwvY29udGVudD48c2hhZG93
Pjwvc2hhZG93PjxkaXYgY2xhc3M9Ii5BIj5BPC9kaXY+PC9kaXY+JzsKK3NoYWRvd1Jvb3QxLmlu
bmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+PGNvbnRlbnQgc2VsZWN0PSIuQSI+PC9jb250ZW50
PjxzaGFkb3c+PC9zaGFkb3c+PGRpdiBjbGFzcz0iQSI+QTwvZGl2PjwvZGl2Pic7CiAKIHZhciBz
aGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHNoYWRvd1Jvb3QxLmdldEVsZW1lbnRC
eUlkKCdob3N0MicpKTsKLXNoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2PjxoMj5BPC9oMj48
Y29udGVudCBzZWxlY3Q9ImRpdiI+PC9jb250ZW50PjxoMj5CPC9oMj48c2hhZG93Pjwvc2hhZG93
PjwvZGl2PicKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2PjxoMj5BPC9oMj48Y29udGVu
dCBzZWxlY3Q9Ii5BIj48L2NvbnRlbnQ+PGgyPkI8L2gyPjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+
JwogPC9zY3JpcHQ+CiAKIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4
cGVjdGVkLmh0bWwKaW5kZXggOTBkZDU2YTc1ODRkNjUzODI3ZTQ1OTQyMDVlMjJhMmZmNTNjZTcw
NS4uNDhjNTJiMjBjZjA1ZTRjYzEwOGQyY2EzZTNiNWE1ZTg4MDNjZTI1ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNr
LWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQt
cmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKQEAgLTgsNiArOCw3IEBACiA8ZGl2
IGlkPSJob3N0MSI+CiAgICAgPGRpdiBpZD0iaG9zdDIiPgogICAgICAgICA8ZGl2PmNvbnRlbnQg
ZmFsbGJhY2sgZWxlbWVudDwvZGl2PgorICAgICAgICA8ZGl2PnNoYWRvdyBmYWxsYmFjayBlbGVt
ZW50PC9kaXY+CiAgICAgICAgIDxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+CiAg
ICAgPC9kaXY+CiA8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxs
YmFjay1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbAppbmRleCAxNjYxZjUwYThlMGMyNTUyNDNk
MmI5YjAwN2I2Y2Y0YThjYmQyYjNmLi4yMzg4MDA3ZmFhM2UzZmYxMWFhYWJjMjE2ZjI1OTEyMTE0
NmIzYTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1y
ZXByb2plY3Rpb24tZmFsbGJhY2stcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLXJl
cHJvamVjdGlvbi1leHBlY3RlZC5odG1sCkBAIC05LDYgKzksNyBAQAogICAgIDxkaXYgaWQ9Imhv
c3QyIj4KICAgICAgICAgPGRpdiBpZD0iaG9zdDMiPgogICAgICAgICAgICAgPGRpdj5jb250ZW50
IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+c2hhZG93IGZhbGxiYWNr
IGVsZW1lbnQ8L2Rpdj4KICAgICAgICAgICAgIDxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQu
PC9kaXY+CiAgICAgICAgICAgICA8ZGl2PmNvbnRlbnQgZmFsbGJhY2sgZWxlbWVudDwvZGl2Pgog
ICAgICAgICAgICAgPGRpdj5UaGlzIGFsc28gc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24t
Y2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
ZXByb2plY3Rpb24tY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMmE2MjZmMWMxOTFh
YmI4M2NjN2M1NThkZjNjMWYxYTM2NzMyNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3QgY29uZmlybXMgdGhhdCBjbGlja2luZyBhIHNoYWRv
dyByZXByb2plY3RlZCBlbGVtZW50IGRvZXMgbm90IGNhdXNlIGEgY3Jhc2guCisKK1BBU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9u
LWNsaWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVj
dGlvbi1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2OTE4NjEyODdjN2JlY2UwM2ZlNWYxMmQ2NmYz
MWFiM2Y1ZTgyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48
L3NjcmlwdD4KKworPHA+VGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgY2xpY2tpbmcgYSBzaGFkb3cg
cmVwcm9qZWN0ZWQgZWxlbWVudCBkb2VzIG5vdCBjYXVzZSBhIGNyYXNoLjwvcD4KKworPGRpdiBp
ZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJob3N0MSI+PGRpdj5Ib3N0IENoaWxkPC9kaXY+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdl
dCI+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdDIgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRp
diBpZD0iaG9zdDMiPjxzaGFkb3c+PC9zaGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxkaXY+WW91
bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRv
d1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxjb250ZW50
IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+JzsKKworY29udGFpbmVyLm9mZnNldExlZnQ7CisKK3Zh
ciB0YXJnZXQgPSBzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7CitpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odGFyZ2V0Lm9m
ZnNldExlZnQgKyAxMCwgdGFyZ2V0Lm9mZnNldFRvcCArIDIpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworY29udGFpbmVyLmlu
bmVySFRNTCA9ICJQQVNTIjsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1keW5hbWljLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlv
bi1keW5hbWljLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM4ODM0NTRkNjRjYmVhNDAyZTVl
NTliZmFjNWFlYzgxYzUwMjg1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorCis8ZGl2IGlkPSJob3N0MSI+
CisgICAgPGRpdiBpZD0iaG9zdDMiPgorICAgICAgICA8ZGl2PlVwZGF0ZWQgT2xkZXN0IFNoYWRv
d1Jvb3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5BZGRlZCBPbGRlc3QgU2hhZG93Um9vdCBD
aGlsZDwvZGl2PgorICAgICAgICA8ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5Z
b3VuZ2VzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXBy
b2plY3Rpb24tZHluYW1pYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yZXByb2plY3Rpb24tZHluYW1pYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMzQ1MjE1YjgyYWZiZmNj
MzViMTMzNmQ0OWVjYmFjMzRmMjNhMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1keW5hbWljLmh0bWwKQEAgLTAsMCAr
MSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
cG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0MSI+PGRpdj5Ib3N0IENoaWxk
PC9kaXY+PC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0
MiI+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdDIgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRp
diBpZD0iaG9zdDMiPjxzaGFkb3c+PC9zaGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxkaXY+WW91
bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRv
d1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxjb250ZW50
IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICBzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIiPlVwZGF0ZWQgT2xkZXN0
IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj48ZGl2PkFkZGVkIE9sZGVzdCBTaGFkb3dSb290IENoaWxk
PC9kaXY+JzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ1NGIwNGE1NmIyZmIyMGQxZmE3N2M3YmIwZTI0YTFh
MTJmZmQ3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgaWQ9Imhvc3Qz
Ij4KKyAgICAgICAgPGRpdj5PbGRlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PgorICAgICAgICA8
ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5Zb3VuZ2VzdCBTaGFkb3dSb290IENo
aWxkPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0
aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU3ZDUwMGYyZWU4MzQ4ZjQ3
ODg0MmM0YjI2ODU0Yzc1Y2Y3NjI5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKworPGRpdiBpZD0iaG9z
dDEiPgorICAgIDxkaXYgaWQ9Imhvc3Q0Ij4KKyAgICAgICA8ZGl2Pk9sZGVzdCBTaGFkb3dSb290
IENoaWxkPC9kaXY+CisgICAgICAgPGRpdj5Ib3N0IENoaWxkPC9kaXY+CisgICAgICAgPGRpdj5T
aGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMSk8L2Rpdj4KKyAgICAgICA8ZGl2PlNoYWRvdyBGYWxs
YmFjayBFbGVtZW50ICgyKTwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9u
LWZhbGxiYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJv
amVjdGlvbi1mYWxsYmFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YzQzZjIwZjFiZGE1NDU4ZDZlNGU1
OTAwMDIwYTVlNjhiMWE0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sCkBAIC0wLDAgKzEsMjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlm
aWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPjxkaXY+SG9zdCBDaGlsZDwvZGl2
PjwvZGl2PgorCis8c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj5PbGRl
c3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2Pic7CisKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8c2hhZG93Pjwv
c2hhZG93Pjxjb250ZW50PjwvY29udGVudD48c2hhZG93PjxkaXYgdGl0bGU9ImRlYnVnc3RvcCI+
U2hhZG93IEZhbGxiYWNrIEVsZW1lbnQgKDEpPC9kaXY+PC9zaGFkb3c+JzsKKwordmFyIHNoYWRv
d1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDMuaW5uZXJI
VE1MID0gJzxkaXYgaWQ9Imhvc3Q0Ij48c2hhZG93Pjwvc2hhZG93PjxzaGFkb3c+PGRpdj5TaGFk
b3cgRmFsbGJhY2sgRWxlbWVudCAoMik8L2Rpdj48L3NoYWRvdz48c3Bhbj5Ob3QgcmVuZGVyZWQg
KDEpPC9zcGFuPjxzaGFkb3c+PHNwYW4+Tm90IHJlbmRlcmVkICgyKTwvc3Bhbj48L3NoYWRvdz48
L2Rpdj4nOworCit2YXIgaG9zdDQgPSBzaGFkb3dSb290My5nZXRFbGVtZW50QnlJZCgnaG9zdDQn
KTsKK3ZhciBzaGFkb3dSb290NCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3Q0KTsKKworc2hh
ZG93Um9vdDQuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+JzsK
Kzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4
cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjODhkOTlkYjRlMTQx
YTBlYWI0OTc0ZDkwODAyM2Y4NmQ3NzMwODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXBy
b2plY3Rpb24tcHJvaGliaXRlZC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLQotPHA+VGhpcyB0ZXN0IGVuc3VyZXMg
dGhhdCBlbGVtZW50cyBhc3NpZ25lZCB0byBhIHNoYWRvdyBlbGVtZW50IGFyZSBub3QgZGlzdHJp
YnV0ZWQuPC9wPgotCi08ZGl2IGlkPSJob3N0MSI+Ci0gICAgPGRpdiBpZD0iaG9zdDIiPjxkaXY+
VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+PC9kaXY+Ci08L2Rpdj4KLQotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rp
b24tcHJvaGliaXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
ZXByb2plY3Rpb24tcHJvaGliaXRlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjNDAyNzFhNGFjNWM1MTY4YTMxOTBiNDRhOWMwMTNhNjM0OGU0M2VkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0KLTxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgotCi08cD5UaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2hhZG93IGVsZW1lbnQgYXJlIG5vdCBkaXN0cmli
dXRlZC48L3A+Ci0KLTxkaXYgaWQ9Imhvc3QxIj4KLSAgICA8ZGl2PlRoZXNlIGVsZW1lbnRzPC9k
aXY+Ci0gICAgPGRpdj5zaG91bGQgbm90IGJlPC9kaXY+Ci0gICAgPGRpdj5yZXByb2plY3RlZDwv
ZGl2PgotPC9kaXY+Ci0KLTxzY3JpcHQ+Ci12YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChob3N0MSk7Ci1zaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIi
PjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKLQotdmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QyJykpOwotc2hhZG93
Um9vdDIuaW5uZXJIVE1MID0gJzxkaXY+PGNvbnRlbnQgc2VsZWN0PSJkaXYiPjwvY29udGVudD48
ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PjwvZGl2PicKLTwvc2NyaXB0PgotCi08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJl
cHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXBy
b2plY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDQ1MDgyZWE4MmM3YjkzZWEwMDBjYjZiNjVhYWQx
NTdjMjA0ZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+
CisKKzxkaXYgaWQ9Imhvc3QxIj48ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj48L2Rpdj4KKworPHNjcmlw
dD4KK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRv
d1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hp
bGQ8L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0
MSk7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDMiPjxzaGFkb3c+PC9z
aGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxkaXY+WW91bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwv
ZGl2PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdo
b3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOwor
c2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+
JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxOWU0OWY5YjQ4NGU5ODlmMDAyNDM4Y2MzYjc2ZmI5NmJkNTU3OTQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlv
bjItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorCis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdiBpZD0iaG9zdDMiPgorICAgICAgICA8ZGl2
PkE8L2Rpdj4KKyAgICAgICAgPGRpdj5CPC9kaXY+CisgICAgICAgIDxkaXY+QzwvZGl2PgorICAg
IDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY3ZDc3NjIz
MzQ3ZmYzNmQ1ODViNmMzMjM5NDVlNjU4ODI1ZDU1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sCkBAIC0wLDAg
KzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPjxkaXY+QjwvZGl2Pjwv
ZGl2PgorCis8c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
aG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxzaGFkb3c+PC9zaGFkb3c+JzsKKwor
dmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9v
dDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93Pjwvc2hhZG93PjwvZGl2Pic7
CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFy
IHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMu
aW5uZXJIVE1MID0gJzxkaXY+QTwvZGl2Pjxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+
PGRpdj5DPC9kaXY+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170807</attachid>
            <date>2012-10-25 21:53:52 -0700</date>
            <delta_ts>2012-10-28 21:08:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99228-20121026135225.patch</filename>
            <type>text/plain</type>
            <size>47308</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ0ZmEzNDZjYjRjMTY2
Y2VhNjk2MGFjMTNlNTJjNDkzMzhiZTk5OC4uZmYzMTBiODEyYWMzNDM2NGZhMGRhN2M1NTRkYjMx
OGFhMDIxYjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTEwLTI1ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgc2hhZG93
IGVsZW1lbnQgaXMgbm90IHJlcHJvamVjdGVkIHRvIGEgbmVzdGVkIFNoYWRvd1Jvb3QuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTIyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN1cHBvcnQgc2hh
ZG93IHJlcHJvamVjdGlvbjsgZWxlbWVudHMgZGlzdHJpYnV0ZWQgdG8gPHNoYWRvdz4gZWxlbWVu
dCBjYW4gYmUgcmVwcm9qZWN0ZWQgdG8gPGNvbnRlbnQ+IG5vdy4KKworICAgICAgICBGaXJzdCwg
d2UgaGF2ZSBhIGRpc3RyaWJ1dGlvbiB2ZWN0b3IgZm9yIGVhY2ggSW5zZXJ0aW9uUG9pbnQsIGV2
ZW4gaWYgSW5zZXJ0aW9uUG9pbnQgaXMgYSBzaGFkb3cgaW5zZXJ0aW9uIHBvaW50LgorICAgICAg
ICBBbmQgd2UgdXBkYXRlIGEgbm9kZS1kaXN0cmlidXRpb24gbWFwLiBCYXNpY2FsbHkgV2UncmUg
Y3JlYXRpbmcgYSBtYXAgZnJvbSBub2RlIHRvIEluc2VydGlvblBvaW50IGluIEVsZW1lbnRTaGFk
b3cuCisgICAgICAgIElmIGEgbm9kZSBjYW4gYmUgZGlzdHJpYnV0ZWQgdG8gc2V2ZXJhbCBJbnNl
cnRpb25Qb2ludCAoZS5nLiBpbiBjYXNlIHJlcHJvamVjdGlvbiBoYXBwZW5zKSwKKyAgICAgICAg
dGhlIEluc2VydGlvblBvaW50IGluIG9sZGVyIFNoYWRvd0RPTSBpcyBjaG9zZW4uCisKKyAgICAg
ICAgV2UgYWxzbyBmaXggQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHRvIGNvbnNpZGVyIHNoYWRv
dyByZXByb2plY3Rpb24uCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9jb21wb3Nl
ZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1keW5hbWljLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZh
bGxiYWNrLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9q
ZWN0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9q
ZWN0aW9uMi5odG1sCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzaG91bGRSZXNldFN0eWxlSW5oZXJpdGFuY2UpOiBOb3cgY29udGV4dC5pbnNl
cnRpb25Qb2ludCgpIHJldHVybnMgdGhlIGZpbmFsIGluc2VydGlvbiBwb2ludCB3aGVyZQorICAg
ICAgICBhIG5vZGUgaXMgZGlzdHJpYnV0ZWQuIFNvIHdlIGRvbid0IGhhdmUgdG8gdHJhY2Ugc2hh
ZG93IGluc2VydGlvbiBwb2ludCBhbnltb3JlIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQpOiBTaW5jZSBhIGRpcmVjdCBjaGlsZCBvZiBTaGFk
b3dSb290IGNhbiBiZSBkaXN0cmlidXRlZCBub3cuIEluIHRoYXQgY2FzZSwKKyAgICAgICAgd2Ug
ZG9uJ3QgaGF2ZSBhbnkgcGFyZW50RWxlbWVudC4gVGhlIHBhcmVudCBub2RlIGlzIGEgU2hhZG93
Um9vdCBpbiB0aGF0IGNhc2UuCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlQ2FuQmVEaXN0cmlidXRlZCk6IElmIGEgbm9k
ZSBjYW4gYmUgZGlzdHJpYnV0ZWQsIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVJlcHJvamVjdGlvbik6IFJlc29sdmVzIGNvbnRlbnQt
cmVwcm9qZWN0aW9uIGFuZCBzaGFkb3ctcmVwcm9qZWN0aW9uIGJvdGguCisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5z
ZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
Ojp0cmF2ZXJzZVBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXI6OnRyYXZlcnNlUGFyZW50QmFja1RvWW91bmdlclNoYWRvd1Jvb3RPckhvc3QpOiBBIGNh
c2UgU2hhZG93Um9vdCBpcyBhc3NpZ25lZAorICAgICAgICB0byBzb21lIEluc2VydGlvblBvaW50
IHNob3VsZCBiZSBoYW5kbGVkIHdpdGggaW4gdHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRp
b25Qb2ludC4gU28gd2UgcmVtb3ZlIGl0LgorICAgICAgICAoV2ViQ29yZTo6QW5jZXN0b3JDaGFp
bldhbGtlcjo6cGFyZW50KTogTm93IHdlIGhhdmUgYSBjYXNlIHRoYXQgYSBkaXJlY3QgY2hpbGQg
b2YgU2hhZG93Um9vdCBjYW4gYmUgZGlzdHJpYnV0ZWQuCisgICAgICAgIEluIHRoYXQgY2FzZSwg
d2Ugc2hvdWxkIG5vdCB1cGRhdGUgbV9kaXN0cmlidXRlZE5vZGUuCisgICAgICAgICogZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6aW5zZXJ0
aW9uUG9pbnRGb3IpOiBTaW5jZSB3ZSBoYXZlIGEgZGlzdHJpYnV0aW9uIHZlY3RvciBmb3IgZWFj
aCBJbnNlcnRpb25Qb2ludCwKKyAgICAgICAgd2UgZG9uJ3QgaGF2ZSBhIHNwZWNpYWwgY2FzZSB0
aGF0IGEgU2hhZG93Um9vdCBpcyBhc3NpZ25lZCB0byBzb21lIEluc2VydGlvblBvaW50LiBBY3R1
YWxseSB0aGUgZXhpc3RpbmcgY29kZQorICAgICAgICBpcyBub3QgY29ycmVjdCBub3cgZHVlIHRv
IHNoYWRvdyByZXByb2plY3Rpb24uCisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3Ry
aWJ1dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6cG9wdWxh
dGUpOiBQb3B1bGF0ZSBhIFBPT0wuIElmIGEgbm9kZSBpcyBJbnNlcnRpb25Qb2ludCwgd2UgZmls
bCBpdCB3aXRoIHRoZQorICAgICAgICBkaXN0cmlidXRlZCBub2Rlcy4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKTog
U2luY2Ugd2Ugd2FudCB0byBtYWtlIGEgZGlzdHJpYnV0aW9uIHZlY3RvciBmb3IgZWFjaCBJbnNl
cnRpb25Qb2ludCwKKyAgICAgICAgd2UgaGF2ZSB0byByZXNvbHZlIGEgc2hhZG93IEluc2VydGlv
blBvaW50CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGVO
b2RlQ2hpbGRyZW5Ubyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
Lmg6CisgICAgICAgIChDb250ZW50RGlzdHJpYnV0b3IpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0hUTUxTaGFkb3dFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlv
blBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24pOgorICAgICAg
ICAoV2ViQ29yZSk6CisKIDIwMTItMTAtMjUgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI1NDQ2MjY+IFtjZ10gUmVuZGVyQmxvY2s6
OnNlbGVjdGlvbkdhcHMoKSBpcyBleHRyZW1lbHkgc2xvdyB3aGVuIHRoZXJlIGFyZSBtYW55IGZs
b2F0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGUwODI1MjU1N2RhOGQx
ZGQ1OTVmN2MzMTU0ZGM2MWExNjZlMjk1MTcuLjhhZDY3ZThkYThhNDBiNmIxZDk3NTE5MDNmMzA1
NzI5YjdiY2UxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTk2MCwy
MSArOTYwLDEwIEBAIGlubGluZSBib29sIHNob3VsZFJlc2V0U3R5bGVJbmhlcml0YW5jZShOb2Rl
UmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKICAgICBpZiAoY29udGV4dC5yZXNldFN0eWxlSW5o
ZXJpdGFuY2UoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBJbnNlcnRpb25Qb2ludCog
aW5zZXJ0aW9uUG9pbnQgPSBjb250ZXh0Lmluc2VydGlvblBvaW50KCk7Ci0gICAgaWYgKCFpbnNl
cnRpb25Qb2ludCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKHBhcmVudEVs
ZW1lbnRGb3JEaXN0cmlidXRpb24oY29udGV4dC5ub2RlKCkpKTsKLSAgICBFbGVtZW50U2hhZG93
KiBzaGFkb3cgPSBwYXJlbnRFbGVtZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnRleHQubm9kZSgpKS0+
c2hhZG93KCk7Ci0gICAgQVNTRVJUKHNoYWRvdyk7CisgICAgaWYgKEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCA9IGNvbnRleHQuaW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgcmV0dXJu
IGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKIAotICAgIGZvciAoIDsg
aW5zZXJ0aW9uUG9pbnQ7ICkgewotICAgICAgICBJbnNlcnRpb25Qb2ludCogeW91bmdlckluc2Vy
dGlvblBvaW50ID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihpbnNlcnRpb25Qb2ludCk7Ci0g
ICAgICAgIGlmICgheW91bmdlckluc2VydGlvblBvaW50KQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGluc2VydGlvblBvaW50ID0geW91bmdlckluc2VydGlvblBvaW50OwotICAgIH0KLSAg
ICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQtPnJlc2V0U3R5bGVJbmhlcml0YW5jZSgpOworICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6aW5pdEZvclN0eWxl
UmVzb2x2ZShFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFBzZXVkb0lkIHBz
ZXVkb0lEKQpAQCAtMTU0MCw5ICsxNTI5LDEwIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTCiAg
ICAgLy8gY29udGVudGVkaXRhYmxlIGF0dHJpYnV0ZSAoaW1wbGVtZW50ZWQgYnkgLXdlYmtpdC11
c2VyLW1vZGlmeSkgc2hvdWxkCiAgICAgLy8gYmUgcHJvcGFnYXRlZCBmcm9tIHNoYWRvdyBob3N0
IHRvIGRpc3RyaWJ1dGVkIG5vZGUuCiAgICAgaWYgKG1fZGlzdHJpYnV0ZWRUb0luc2VydGlvblBv
aW50KSB7Ci0gICAgICAgIEFTU0VSVChlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpOwotICAgICAg
ICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxlT2ZTaGFkb3dIb3N0ID0gZWxlbWVudC0+cGFyZW50RWxl
bWVudCgpLT5yZW5kZXJTdHlsZSgpKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VXNlck1vZGlm
eShzdHlsZU9mU2hhZG93SG9zdC0+dXNlck1vZGlmeSgpKTsKKyAgICAgICAgaWYgKEVsZW1lbnQq
IHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKFJl
bmRlclN0eWxlKiBzdHlsZU9mU2hhZG93SG9zdCA9IHBhcmVudC0+cmVuZGVyU3R5bGUoKSkKKyAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRVc2VyTW9kaWZ5KHN0eWxlT2ZTaGFkb3dIb3N0LT51
c2VyTW9kaWZ5KCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGVsZW1lbnQtPmlzTGlu
aygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
Y3BwCmluZGV4IGU4ODIzMGU2NGFhNzBhMmM0NzQwZjdmOTFjMzE4NDdlMGMzOTVmZTEuLjI2Yjgz
ZjMxZTA1ZjFhYjkzYzAxZGI4OWFkYWNhZmI2NDJhOWNjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRl
ICJIVE1MQ29udGVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgog
I2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYz
LDE4ICs2NCw0OCBAQCBzdGF0aWMgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50
Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIDA7ICAgIAogfQog
Ci1zdGF0aWMgaW5saW5lIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0
IE5vZGUqIG5vZGUpCitzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhbkJlRGlzdHJpYnV0ZWQoY29u
c3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgTm9kZSogcGFyZW50ID0g
cGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihub2RlKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBwYXJl
bnQtPmlzU2hhZG93Um9vdCgpID8gdG9TaGFkb3dSb290KHBhcmVudCkgOiAwKQorICAgICAgICBy
ZXR1cm4gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpOworCisgICAgaWYgKHBhcmVudC0+aXNFbGVt
ZW50Tm9kZSgpICYmIHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3coKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgSW5zZXJ0aW9u
UG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSkKIHsK
ICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSAwOwotICAgIGNvbnN0IE5vZGUq
IGN1cnJlbnQgPSBub2RlOwotICAgIHdoaWxlIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFk
b3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjdXJyZW50KSkgewotICAgICAgICBzaGFkb3ctPmVu
c3VyZURpc3RyaWJ1dGlvbigpOwotICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVk
VG8gPSBzaGFkb3ctPmluc2VydGlvblBvaW50Rm9yKG5vZGUpKSB7Ci0gICAgICAgICAgICBjdXJy
ZW50ID0gaW5zZXJ0ZWRUbzsKLSAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRU
bzsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBicmVhazsKKyAgICBjb25zdCBOb2RlKiBj
dXJyZW50ID0gcHJvamVjdGVkTm9kZTsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlm
IChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbihj
dXJyZW50KSkgeworICAgICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAg
ICAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+aW5zZXJ0
aW9uUG9pbnRGb3IocHJvamVjdGVkTm9kZSkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0g
aW5zZXJ0ZWRUbzsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjdXJy
ZW50KSkgeworICAgICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gcGFy
ZW50LT5pc1NoYWRvd1Jvb3QoKSA/IHRvU2hhZG93Um9vdChwYXJlbnQpLT5hc3NpZ25lZFRvKCkg
OiAwKSB7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYnJlYWs7CiAgICAgfQor
CiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCkBAIC0yMDMsOSArMjM0LDEwIEBAIE5v
ZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VEaXN0cmlidXRlZE5vZGVzKGNv
bnN0IE5vZGUqIG5vZGUsIGNvbnN0CiBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRy
YXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgVHJh
dmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBBU1NFUlQobm9kZSk7Ci0gICAgRWxl
bWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobm9kZSk7Ci0gICAgaWYgKCFzaGFk
b3cpCisKKyAgICBpZiAoIW5vZGVDYW5CZURpc3RyaWJ1dGVkKG5vZGUpKQogICAgICAgICByZXR1
cm4gdHJhdmVyc2VTaWJsaW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOworCiAgICAg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gcmVzb2x2ZVJlcHJvamVjdGlvbihub2Rl
KTsKICAgICBpZiAoIWluc2VydGlvblBvaW50KQogICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJs
aW5nSW5DdXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwpAQCAtMjcyLDggKzMwNCw4IEBAIE5v
ZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSog
bm9kZSwgUGFyZW50VHJhdmVyc2FsCiAgICAgICAgIEFTU0VSVCh0b1NoYWRvd1Jvb3Qobm9kZSkt
PmlzWW91bmdlc3QoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoRWxlbWVu
dFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24obm9kZSkpIHsK
LSAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKworICAgIGlmIChub2RlQ2Fu
QmVEaXN0cmlidXRlZChub2RlKSkgewogICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50ID0gcmVzb2x2ZVJlcHJvamVjdGlvbihub2RlKSkgewogICAgICAgICAgICAgaWYg
KGRldGFpbHMpCiAgICAgICAgICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Q
b2ludChpbnNlcnRpb25Qb2ludCk7CkBAIC0yOTcsNiArMzI5LDggQEAgaW5saW5lIE5vZGUqIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRJbkN1cnJlbnRUcmVlKGNvbnN0
IE5vZGUqIG4KIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRC
YWNrVG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290
LCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKSBjb25zdAogewogICAgIEFTU0VSVChz
aGFkb3dSb290KTsKKyAgICBBU1NFUlQoIXNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKSk7CisKICAg
ICBpZiAoc2hhZG93Um9vdC0+aXNZb3VuZ2VzdCgpKSB7CiAgICAgICAgIGlmIChjYW5Dcm9zc1Vw
cGVyQm91bmRhcnkoKSkgewogICAgICAgICAgICAgaWYgKGRldGFpbHMpCkBAIC0zMDcsMTIgKzM0
MSw2IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnRCYWNr
VG9Zb3VuZ2VyU2hhZG93Um9vdE9ySG9zdChjb25zCiAgICAgICAgIHJldHVybiBjb25zdF9jYXN0
PFNoYWRvd1Jvb3QqPihzaGFkb3dSb290KTsKICAgICB9CiAKLSAgICBpZiAoSW5zZXJ0aW9uUG9p
bnQqIGFzc2lnbmVkSW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25lZFRvKCkpIHsK
LSAgICAgICAgaWYgKGRldGFpbHMpCi0gICAgICAgICAgICBkZXRhaWxzLT5kaWRUcmF2ZXJzZVNo
YWRvd1Jvb3Qoc2hhZG93Um9vdCk7Ci0gICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChhc3Np
Z25lZEluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKLSAgICB9Ci0KICAgICByZXR1cm4gMDsKIH0K
IApAQCAtMzc3LDcgKzQwNSw4IEBAIHZvaWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkK
ICAgICB9CiAgICAgaWYgKCFtX25vZGUtPmlzU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIG1fbm9k
ZSA9IG1fbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1f
bm9kZTsKKyAgICAgICAgaWYgKCEobV9ub2RlICYmIG1fbm9kZS0+aXNTaGFkb3dSb290KCkgJiYg
dG9TaGFkb3dSb290KG1fbm9kZSktPmFzc2lnbmVkVG8oKSkpCisgICAgICAgICAgICBtX2Rpc3Ry
aWJ1dGVkTm9kZSA9IG1fbm9kZTsKICAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQg
PSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hh
ZG93LmNwcAppbmRleCBhZWI1YjViNDc1YjIxOWJjNTdkYzg1ZWYyZTdiODMyYWVlODg5M2ZjLi4w
M2EwNjIyNWFiOWY3OTI0MmZkMDg5OTBjZjIzMDJmNTNhNThjNWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuY3BwCkBAIC0xMzQsMTUgKzEzNCw2IEBAIHZvaWQgRWxlbWVudFNoYWRv
dzo6ZGV0YWNoKCkKIAogSW5zZXJ0aW9uUG9pbnQqIEVsZW1lbnRTaGFkb3c6Omluc2VydGlvblBv
aW50Rm9yKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG5vZGUgJiYgbm9k
ZS0+cGFyZW50Tm9kZSgpKTsKLQotICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCktPmlzU2hhZG93
Um9vdCgpKSB7Ci0gICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0
b1NoYWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKS0+YXNzaWduZWRUbygpKQotICAgICAgICAg
ICAgcmV0dXJuIGluc2VydGlvblBvaW50OwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQog
ICAgIHJldHVybiBkaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihub2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5j
cHAKaW5kZXggODNkZjVlMGMwNTFlNTM3ZDhlZmRmMzg3MzJkOTE3NjM5NzZmMzVlMS4uOWY0NGE1
MDBkZDBiNjA2MTQ2MTMyOTUwNGJkNWZmNWQ4NTg1ZTNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC01MCw2ICs1MCwyOCBA
QCBJbnNlcnRpb25Qb2ludCogQ29udGVudERpc3RyaWJ1dG9yOjpmaW5kSW5zZXJ0aW9uUG9pbnRG
b3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAogICAgIHJldHVybiBtX25vZGVUb0luc2VydGlvblBv
aW50LmdldChrZXkpOwogfQogCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6cG9wdWxhdGUoTm9k
ZSogbm9kZSwgQ29udGVudERpc3RyaWJ1dGlvbiYgcG9vbCkKK3sKKyAgICBpZiAoIWlzSW5zZXJ0
aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgcG9vbC5hcHBlbmQobm9kZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0b0lu
c2VydGlvblBvaW50KG5vZGUpOworICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmlzQWN0aXZlKCkp
IHsKKyAgICAgICAgcG9vbC5hcHBlbmQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGluc2VydGlvblBvaW50LT5oYXNEaXN0cmlidXRpb24oKSkgewor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50LT5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIHBvcHVsYXRlKGluc2VydGlvblBvaW50LT5hdChpKSwgcG9vbCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChOb2RlKiBmYWxsYmFja05vZGUgPSBpbnNlcnRpb25Q
b2ludC0+Zmlyc3RDaGlsZCgpOyBmYWxsYmFja05vZGU7IGZhbGxiYWNrTm9kZSA9IGZhbGxiYWNr
Tm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIHBvb2wuYXBwZW5kKGZhbGxiYWNrTm9k
ZSk7CisgICAgfQorfQorCiB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVt
ZW50KiBob3N0KQogewogICAgIEFTU0VSVChuZWVkc0Rpc3RyaWJ1dGlvbigpKTsKQEAgLTU4LDI3
ICs4MCwxNiBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBo
b3N0KQogICAgIG1fdmFsaWRpdHkgPSBWYWxpZDsKIAogICAgIENvbnRlbnREaXN0cmlidXRpb24g
cG9vbDsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBob3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5v
ZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmICghaXNIVE1MQ29udGVudEVs
ZW1lbnQobm9kZSkpIHsKLSAgICAgICAgICAgIHBvb2wuYXBwZW5kKG5vZGUpOwotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnQgPSB0b0luc2VydGlvblBvaW50KG5vZGUpOwotICAgICAgICBpZiAoaW5zZXJ0aW9u
UG9pbnQtPmhhc0Rpc3RyaWJ1dGlvbigpKSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGluc2VydGlvblBvaW50LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBwb29s
LmFwcGVuZChpbnNlcnRpb25Qb2ludC0+YXQoaSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgZm9yIChOb2RlKiBmYWxsYmFja05vZGUgPSBpbnNlcnRpb25Qb2ludC0+Zmlyc3RDaGls
ZCgpOyBmYWxsYmFja05vZGU7IGZhbGxiYWNrTm9kZSA9IGZhbGxiYWNrTm9kZS0+bmV4dFNpYmxp
bmcoKSkKLSAgICAgICAgICAgICAgICBwb29sLmFwcGVuZChmYWxsYmFja05vZGUpOwotICAgICAg
ICB9Ci0gICAgfQorICAgIGZvciAoTm9kZSogbm9kZSA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsgbm9k
ZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIHBvcHVsYXRlKG5vZGUsIHBv
b2wpOwogCiAgICAgVmVjdG9yPGJvb2w+IGRpc3RyaWJ1dGVkKHBvb2wuc2l6ZSgpKTsKICAgICBk
aXN0cmlidXRlZC5maWxsKGZhbHNlKTsKIAotICAgIEhUTUxTaGFkb3dFbGVtZW50KiBmaXJzdEFj
dGl2ZVNoYWRvd0luc2VydGlvblBvaW50SW5PbGRlc3RTaGFkb3dSb290ID0gMDsKKyAgICBWZWN0
b3I8SFRNTFNoYWRvd0VsZW1lbnQqLCA4PiBhY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludHM7CiAg
ICAgZm9yIChTaGFkb3dSb290KiByb290ID0gaG9zdC0+eW91bmdlc3RTaGFkb3dSb290KCk7IHJv
b3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgeworICAgICAgICBIVE1MU2hhZG93
RWxlbWVudCogZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludCA9IDA7CisKICAgICAgICAg
Zm9yIChOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5v
ZGUocm9vdCkpIHsKICAgICAgICAgICAgIGlmICghaXNJbnNlcnRpb25Qb2ludChub2RlKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTg3LDI1ICs5OCwzMSBAQCB2b2lkIENvbnRlbnRE
aXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoaXNIVE1MU2hhZG93RWxlbWVudChub2RlKSkgewot
ICAgICAgICAgICAgICAgIGlmIChyb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewotICAgICAgICAg
ICAgICAgICAgICBpZiAoIXJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5hc3NpZ25lZFRvKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVOb2RlQ2hpbGRyZW5Ubyhwb2ludCwg
cm9vdC0+b2xkZXJTaGFkb3dSb290KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+
b2xkZXJTaGFkb3dSb290KCktPnNldEFzc2lnbmVkVG8ocG9pbnQpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZmlyc3RBY3RpdmVTaGFkb3dJbnNl
cnRpb25Qb2ludEluT2xkZXN0U2hhZG93Um9vdCkKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RB
Y3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludEluT2xkZXN0U2hhZG93Um9vdCA9IHRvSFRNTFNoYWRv
d0VsZW1lbnQobm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKCFmaXJzdEFjdGl2ZVNoYWRvd0lu
c2VydGlvblBvaW50KQorICAgICAgICAgICAgICAgICAgICBmaXJzdEFjdGl2ZVNoYWRvd0luc2Vy
dGlvblBvaW50ID0gdG9IVE1MU2hhZG93RWxlbWVudChub2RlKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhwb2ludCwgcG9vbCwg
ZGlzdHJpYnV0ZWQpOwogICAgICAgICAgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cg
PSBub2RlLT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChub2RlLT5w
YXJlbnROb2RlKCkpLT5zaGFkb3coKSA6IDApCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0aW9uUG9pbnQpCisgICAgICAgICAgICBh
Y3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludHMuYXBwZW5kKGZpcnN0QWN0aXZlU2hhZG93SW5zZXJ0
aW9uUG9pbnQpOwogICAgIH0KIAotICAgIGlmIChmaXJzdEFjdGl2ZVNoYWRvd0luc2VydGlvblBv
aW50SW5PbGRlc3RTaGFkb3dSb290KSB7Ci0gICAgICAgIGRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8o
Zmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludEluT2xkZXN0U2hhZG93Um9vdCwgcG9vbCwg
ZGlzdHJpYnV0ZWQpOwotICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gZmlyc3RB
Y3RpdmVTaGFkb3dJbnNlcnRpb25Qb2ludEluT2xkZXN0U2hhZG93Um9vdC0+cGFyZW50Tm9kZSgp
LT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQoZmlyc3RBY3RpdmVTaGFkb3dJbnNlcnRpb25Q
b2ludEluT2xkZXN0U2hhZG93Um9vdC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93KCkgOiAwKQotICAg
ICAgICAgICAgc2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IGFjdGl2ZVNoYWRvd0luc2VydGlvblBvaW50cy5zaXplKCk7IGkgPiAwOyAtLWkpIHsK
KyAgICAgICAgSFRNTFNoYWRvd0VsZW1lbnQqIHNoYWRvd0VsZW1lbnQgPSBhY3RpdmVTaGFkb3dJ
bnNlcnRpb25Qb2ludHNbaSAtIDFdOworICAgICAgICBTaGFkb3dSb290KiByb290ID0gc2hhZG93
RWxlbWVudC0+c2hhZG93Um9vdCgpOworICAgICAgICBBU1NFUlQocm9vdCk7CisgICAgICAgIGlm
IChyb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgZGlzdHJpYnV0ZU5vZGVD
aGlsZHJlblRvKHNoYWRvd0VsZW1lbnQsIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKTsKKyAgICAg
ICAgICAgIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5zZXRBc3NpZ25lZFRvKHNoYWRvd0VsZW1l
bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGlzdHJpYnV0ZVNlbGVjdGlvbnNU
byhzaGFkb3dFbGVtZW50LCBwb29sLCBkaXN0cmlidXRlZCk7CisgICAgICAgICAgICBpZiAoRWxl
bWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93RWxlbWVudC0+cGFyZW50Tm9kZSgpLT5pc0VsZW1l
bnROb2RlKCkgPyB0b0VsZW1lbnQoc2hhZG93RWxlbWVudC0+cGFyZW50Tm9kZSgpKS0+c2hhZG93
KCkgOiAwKQorICAgICAgICAgICAgICAgIHNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigp
OworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xNjIsOCArMTc5LDI1IEBAIHZvaWQgQ29udGVu
dERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlTm9kZUNoaWxkcmVuVG8oSW5zZXJ0aW9uUG9pbnQqIGlu
c2VydGlvblBvaW50CiB7CiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBkaXN0cmlidXRpb247CiAg
ICAgZm9yIChOb2RlKiBub2RlID0gY29udGFpbmVyTm9kZS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBu
b2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBkaXN0cmlidXRpb24uYXBwZW5k
KG5vZGUpOwotICAgICAgICBtX25vZGVUb0luc2VydGlvblBvaW50LmFkZChub2RlLCBpbnNlcnRp
b25Qb2ludCk7CisgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpICYmIHRvSW5zZXJ0
aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIEluc2VydGlvblBvaW50
KiBpbm5lckluc2VydGlvblBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKKyAgICAgICAg
ICAgIGlmIChpbm5lckluc2VydGlvblBvaW50LT5oYXNEaXN0cmlidXRpb24oKSkgeworICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5uZXJJbnNlcnRpb25Qb2ludC0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uLmFwcGVuZChpbm5l
ckluc2VydGlvblBvaW50LT5hdChpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ub2Rl
VG9JbnNlcnRpb25Qb2ludC5jb250YWlucyhpbm5lckluc2VydGlvblBvaW50LT5hdChpKSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVUb0luc2VydGlvblBvaW50LmFkZChpbm5lcklu
c2VydGlvblBvaW50LT5hdChpKSwgaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9
IGlubmVySW5zZXJ0aW9uUG9pbnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uLmFwcGVu
ZChjaGlsZCk7CisgICAgICAgICAgICAgICAgICAgIG1fbm9kZVRvSW5zZXJ0aW9uUG9pbnQuYWRk
KGNoaWxkLCBpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGlzdHJpYnV0aW9uLmFwcGVuZChub2Rl
KTsKKyAgICAgICAgICAgIGlmICghbV9ub2RlVG9JbnNlcnRpb25Qb2ludC5jb250YWlucyhub2Rl
KSkKKyAgICAgICAgICAgICAgICBtX25vZGVUb0luc2VydGlvblBvaW50LmFkZChub2RlLCBpbnNl
cnRpb25Qb2ludCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpbnNlcnRpb25Qb2ludC0+c2V0
RGlzdHJpYnV0aW9uKGRpc3RyaWJ1dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5oCmluZGV4IGJlZTkyYTU2YWMxNDBhZjY1NWYwNWU4Mzlj
YmE2NjAzYzU0MmQyNmMuLjBkOGQwMDgyZTZlOTI0MTBlNDNmNjA2MGNlMzZmMTZlNjhlMDQ2YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5o
CkBAIC03NCw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRp
b25JbihDb250ZW50RGlzdHJpYnV0aW9uKik7CiAKIHByaXZhdGU6CisgICAgdm9pZCBwb3B1bGF0
ZShOb2RlKiwgQ29udGVudERpc3RyaWJ1dGlvbiYpOworCiAgICAgSGFzaE1hcDxjb25zdCBOb2Rl
KiwgSW5zZXJ0aW9uUG9pbnQqPiBtX25vZGVUb0luc2VydGlvblBvaW50OwogICAgIHVuc2lnbmVk
IG1fdmFsaWRpdHkgOiAyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5oCmluZGV4IDM2YmRkODk1YWMyZGVmYjNhNDA3ZjQwMWRkODkyM2U1YTdk
OWY5MDQuLmJhYzJiOTJiNTc5NjFiMjNkZmNjMmUzMmUxZjU1YjJkNTdlMzI2NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaApAQCAtNjcsNiAr
NjcsMTIgQEAgaW5saW5lIEhUTUxTaGFkb3dFbGVtZW50KiB0b0hUTUxTaGFkb3dFbGVtZW50KE5v
ZGUqIG5vZGUpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxTaGFkb3dFbGVtZW50Kj4obm9k
ZSk7CiB9CiAKK2lubGluZSBjb25zdCBIVE1MU2hhZG93RWxlbWVudCogdG9IVE1MU2hhZG93RWxl
bWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCghbm9kZSB8fCBpc0hUTUxTaGFk
b3dFbGVtZW50KG5vZGUpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTFNoYWRv
d0VsZW1lbnQqPihub2RlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gSFRNTFNoYWRvd0VsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmgKaW5kZXggNDMwNDE1ZjdiNjI2YzI5ODliYWEzNzZlYzEwZjQ0ZmY1N2I5OThh
Zi4uZjllMDg0ZmIwYzg4NjUyZGVlNjA5YTFiNGYwZjQ4ZjBhNjFjNjY3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0xMTksMTkgKzExOSwyOSBA
QCBpbmxpbmUgYm9vbCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KE5vZGUqIG5vZGUpCiAg
ICAgcmV0dXJuIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzU2hhZG93Qm91bmRhcnkoKTsKIH0K
IAotaW5saW5lIEVsZW1lbnQqIHBhcmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9k
ZSogbm9kZSkKK2lubGluZSBOb2RlKiBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5v
ZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwotICAgIGlmIChFbGVtZW50KiBwYXJlbnQg
PSBub2RlLT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQo
cGFyZW50KSAmJiB0b0luc2VydGlvblBvaW50KHBhcmVudCktPnNob3VsZFVzZUZhbGxiYWNrRWxl
bWVudHMoKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPnBhcmVudEVsZW1lbnQoKTsKIAor
ICAgIGlmIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYg
KGlzSW5zZXJ0aW9uUG9pbnQocGFyZW50KSAmJiB0b0luc2VydGlvblBvaW50KHBhcmVudCktPnNo
b3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPnBh
cmVudE5vZGUoKTsKICAgICAgICAgcmV0dXJuIHBhcmVudDsKICAgICB9CiAKICAgICByZXR1cm4g
MDsKIH0KIAoraW5saW5lIEVsZW1lbnQqIHBhcmVudEVsZW1lbnRGb3JEaXN0cmlidXRpb24oY29u
c3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZUZvckRp
c3RyaWJ1dGlvbihub2RlKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkp
CisgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KHBhcmVudCk7CisgICAgfQorCisgICAgcmV0
dXJuIDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlv
blBvaW50X2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBjN2UzOWFkYTQ4MjY1MmJlNGZjZTYyNjhmZWZiZDA0YjMzMDUwNjVl
Li5kMDE2NTRjZjk1MWE2Yjg2NDlkZjEyZTMwNjlmMThiZTM1ZmQzN2M2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMTItMTAtMjUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFRoZSBzaGFkb3cgZWxlbWVudCBpcyBub3QgcmVwcm9qZWN0ZWQgdG8g
YSBuZXN0ZWQgU2hhZG93Um9vdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk5MjI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2Vy
LXNoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rp
b24uaHRtbDogQWRkZWQuIEEgd2Fsa2VyIHRlc3QgY2FzZSBmb3IgZWxlbWVudHMgZGlzdHJpYnV0
ZWQKKyAgICAgICAgdG8gc2hhZG93IGVsZW1lbnQgYXJlIHJlcHJvamVjdGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tY29tcGxleC5odG1sOgor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1l
eHBlY3RlZC5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVj
dGlvbi1mYWxsYmFjay1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWNsaWNrLmh0
bWw6IEFkZGVkLiBEb2VzIHNvbWUgaW50ZXJhY3RpdmUgd2l0aCBhIHNoYWRvdy1yZXByb2plY3Rl
ZCBub2RlLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWR5
bmFtaWMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yZXByb2plY3Rpb24tZHluYW1pYy5odG1sOiBBZGRlZC4gQWRkcyBkeW5hbWljYWxseSBl
bGVtZW50cyBzaGFkb3ctcmVwcm9qZWN0ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZmFsbGJh
Y2suaHRtbDogQWRkZWQuIEEgdGVzdCBjYXNlIGZvciBmYWxsYmFjayBlbGVtZW50cyBvZiBhIHNo
YWRvdyBlbGVtZW50CisgICAgICAgIGFyZSByZXByb2plY3RlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4cGVjdGVkLmh0bWw6IFJl
bW92ZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJv
aGliaXRlZC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cmVwcm9qZWN0aW9uLmh0bWw6IEFkZGVkLiBBIGJhc2ljIHRlc3QgY2FzZS4KKyAgICAgICAgKiBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24yLmh0bWw6IEFk
ZGVkLiBBbm90aGVyIGJhc2ljIHRlc3QgY2FzZS4KKwogMjAxMi0xMC0yNSAgVmluY2VudCBTY2hl
aWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcmViYXNlbGlu
ZSBvZiB0ZXN0cyBmYWlsaW5nIGFmdGVyIDEzMjUyOSByb2xsZWQgb3V0IDEzMjI2OS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13
YWxrZXItc2hhZG93LXJlcHJvamVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1NDA3OWIzZjUyNWYzZDMzYWUyYzVhNzA1NzVk
ZTkzMDAyNjIxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTg2IEBACitUZXN0cyBmb3IgQ29tcG9zZWQgU2hhZG93IERPTSBU
cmVlIFRyYXZlcnNhbCBBUElzLiBDYW4gb25seSBydW4gd2l0aGluIERSVAorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aG91dCBzaGFkb3cg
ZWxlbWVudAorQ29tcG9zZWQgU2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWMKKwor
VHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1jCitUcmF2ZXJzZSBpbiBi
YWNrd2FyZC4KK0RJVgkgaWQ9YworRElWCSBpZD1hCisKK011bHRpcGxlIHNoYWRvdyByb290IHdp
dGggc2hhZG93IGVsZW1lbnQKK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBpZD1hCisJRElW
CSBpZD1jCisJRElWCSBpZD1iCisJRElWCSBpZD1lCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitE
SVYJIGlkPWEKK0RJVgkgaWQ9YworRElWCSBpZD1iCitESVYJIGlkPWUKK1RyYXZlcnNlIGluIGJh
Y2t3YXJkLgorRElWCSBpZD1lCitESVYJIGlkPWIKK0RJVgkgaWQ9YworRElWCSBpZD1hCisKK011
bHRpcGxlIHNoYWRvdyByb290IHdpdGggc2hhZG93IGVsZW1lbnQsIGNhc2UgMgorQ29tcG9zZWQg
U2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWYKKwlESVYJIGlkPWMKKwlESVYJIGlk
PWIKKwlESVYJIGlkPWUKKwlESVYJIGlkPWgKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkg
aWQ9YQorRElWCSBpZD1mCitESVYJIGlkPWMKK0RJVgkgaWQ9YgorRElWCSBpZD1lCitESVYJIGlk
PWgKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1oCitESVYJIGlkPWUKK0RJVgkgaWQ9
YgorRElWCSBpZD1jCitESVYJIGlkPWYKK0RJVgkgaWQ9YQorCitzaGFkb3cgcmVwcm9qZWN0aW9u
CitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCQlESVYJIGlk
PWQKKwkJRElWCSBpZD1hLWNoaWxkCisJCURJVgkgaWQ9ZgorCitUcmF2ZXJzZSBpbiBmb3J3YXJk
LgorRElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9ZAorRElWCSBpZD1hLWNoaWxkCitESVYJ
IGlkPWYKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1mCitESVYJIGlkPWEtY2hpbGQK
K0RJVgkgaWQ9ZAorRElWCSBpZD1iCitESVYJIGlkPWEKKworc2hhZG93IHJlcHJvamVjdGlvbiwg
dGFrZSAyCitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9ZAorCQlE
SVYJIGlkPWYKKwkJRElWCSBpZD1iCisJCURJVgkgaWQ9aAorCitUcmF2ZXJzZSBpbiBmb3J3YXJk
LgorRElWCSBpZD1hCitESVYJIGlkPWQKK0RJVgkgaWQ9ZgorRElWCSBpZD1iCitESVYJIGlkPWgK
K1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1oCitESVYJIGlkPWIKK0RJVgkgaWQ9Zgor
RElWCSBpZD1kCitESVYJIGlkPWEKKworc2hhZG93IGZhbGxiYWNrIGVsZW1lbnQgcmVwcm9qZWN0
aW9uCitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9aQorCQlESVYJ
IGlkPWsKKwkJRElWCSBpZD1jCisJCURJVgkgaWQ9YgorCQlESVYJIGlkPWcKKwkJRElWCSBpZD1o
CisJCURJVgkgaWQ9bQorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlk
PWkKK0RJVgkgaWQ9aworRElWCSBpZD1jCitESVYJIGlkPWIKK0RJVgkgaWQ9ZworRElWCSBpZD1o
CitESVYJIGlkPW0KK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1tCitESVYJIGlkPWgK
K0RJVgkgaWQ9ZworRElWCSBpZD1iCitESVYJIGlkPWMKK0RJVgkgaWQ9aworRElWCSBpZD1pCitE
SVYJIGlkPWEKKword2l0aCBpbmFjdGl2ZSBpbnNlcnRpb24gcG9pbnRzCitDb21wb3NlZCBTaGFk
b3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9cworCQlESVYJIGlkPXUKKwkJRElWCSBpZD1m
CisJCUNPTlRFTlQJIGlkPWIKKwkJCURJVgkgaWQ9YworCQlTSEFET1cJIGlkPWQKKwkJCURJVgkg
aWQ9ZQorCQlDT05URU5UCSBpZD1sCisJCVNIQURPVwkgaWQ9bQorCQlESVYJIGlkPW4KKwkJQ09O
VEVOVAkgaWQ9cAorCQlTSEFET1cJIGlkPXEKKwkJRElWCSBpZD1yCisJCURJVgkgaWQ9dworCitU
cmF2ZXJzZSBpbiBmb3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPXMKK0RJVgkgaWQ9dQorRElW
CSBpZD1mCitDT05URU5UCSBpZD1iCitESVYJIGlkPWMKK1NIQURPVwkgaWQ9ZAorRElWCSBpZD1l
CitDT05URU5UCSBpZD1sCitTSEFET1cJIGlkPW0KK0RJVgkgaWQ9bgorQ09OVEVOVAkgaWQ9cAor
U0hBRE9XCSBpZD1xCitESVYJIGlkPXIKK0RJVgkgaWQ9dworVHJhdmVyc2UgaW4gYmFja3dhcmQu
CitESVYJIGlkPXcKK0RJVgkgaWQ9cgorU0hBRE9XCSBpZD1xCitDT05URU5UCSBpZD1wCitESVYJ
IGlkPW4KK1NIQURPVwkgaWQ9bQorQ09OVEVOVAkgaWQ9bAorRElWCSBpZD1lCitTSEFET1cJIGlk
PWQKK0RJVgkgaWQ9YworQ09OVEVOVAkgaWQ9YgorRElWCSBpZD1mCitESVYJIGlkPXUKK0RJVgkg
aWQ9cworRElWCSBpZD1hCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29t
cG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24uaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItc2hhZG93
LXJlcHJvamVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NDBkNjRiMjY1ODIzMzIyNGYyN2M0MTQ1
OGRjNGY4YzYyZDRlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLXNoYWRvdy1yZXByb2plY3Rpb24uaHRt
bApAQCAtMCwwICsxLDE5MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9InNhbmRib3giPjwvZGl2
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBmb3IgQ29tcG9zZWQgU2hhZG93IERPTSBU
cmVlIFRyYXZlcnNhbCBBUElzLiBDYW4gb25seSBydW4gd2l0aGluIERSVCIpOworCitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9u
IGR1bXBOb2RlKG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gJyhudWxs
KScKKyAgICB2YXIgb3V0cHV0ID0gbm9kZS5ub2RlTmFtZSArICJcdCI7CisgICAgaWYgKG5vZGUu
aWQpCisgICAgICAgIG91dHB1dCArPSAnIGlkPScgKyBub2RlLmlkOworICAgIGlmIChub2RlLmNs
YXNzTmFtZSkKKyAgICAgICAgb3V0cHV0ICs9ICcgY2xhc3M9JyArIG5vZGUuY2xhc3NOYW1lOwor
ICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGR1bXBDb21wb3NlZFNoYWRvd1RyZWUo
bm9kZSwgaW5kZW50KQoreworICAgIGluZGVudCA9IGluZGVudCB8fCAiIjsKKyAgICB2YXIgb3V0
cHV0ID0gaW5kZW50ICsgZHVtcE5vZGUobm9kZSkgKyAiXG4iOworICAgIHZhciBjaGlsZDsKKyAg
ICBmb3IgKGNoaWxkID0gaW50ZXJuYWxzLmZpcnN0Q2hpbGRCeVdhbGtlcihub2RlKTsgY2hpbGQ7
IGNoaWxkID0gaW50ZXJuYWxzLm5leHRTaWJsaW5nQnlXYWxrZXIoY2hpbGQpKQorICAgICAgICAg
b3V0cHV0ICs9IGR1bXBDb21wb3NlZFNoYWRvd1RyZWUoY2hpbGQsIGluZGVudCArICJcdCIpOwor
ICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGxhc3ROb2RlQnlXYWxrZXIocm9vdCkK
K3sKKyAgICB2YXIgbGFzdE5vZGUgPSByb290OworICAgIHdoaWxlIChpbnRlcm5hbHMubGFzdENo
aWxkQnlXYWxrZXIobGFzdE5vZGUpKQorICAgICAgICBsYXN0Tm9kZSA9IGludGVybmFscy5sYXN0
Q2hpbGRCeVdhbGtlcihsYXN0Tm9kZSk7CisgICAgcmV0dXJuIGxhc3ROb2RlOworfQorCitmdW5j
dGlvbiBzaG93Q29tcG9zZWRTaGFkb3dUcmVlQnlUcmF2ZXJzaW5nSW5Gb3J3YXJkKHJvb3QpCit7
CisgICAgdmFyIG5vZGUgPSByb290OworICAgIHZhciBsYXN0ID0gbGFzdE5vZGVCeVdhbGtlcihy
b290KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBkZWJ1ZyhkdW1wTm9kZShub2RlKSk7
CisgICAgICAgIGlmIChub2RlID09IGxhc3QpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
bm9kZSA9IGludGVybmFscy5uZXh0Tm9kZUJ5V2Fsa2VyKG5vZGUpOworICAgIH0KK30KKworZnVu
Y3Rpb24gc2hvd0NvbXBvc2VkU2hhZG93VHJlZUJ5VHJhdmVyc2luZ0luQmFja3dhcmQocm9vdCkK
K3sKKyAgICB2YXIgbm9kZSA9IGxhc3ROb2RlQnlXYWxrZXIocm9vdCk7CisgICAgd2hpbGUgKG5v
ZGUpIHsKKyAgICAgICAgZGVidWcoZHVtcE5vZGUobm9kZSkpOworICAgICAgICBpZiAobm9kZSA9
PSByb290KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5vZGUgPSBpbnRlcm5hbHMucHJl
dmlvdXNOb2RlQnlXYWxrZXIobm9kZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBzaG93Q29tcG9z
ZWRTaGFkb3dUcmVlKG5vZGUpCit7CisgICAgZGVidWcoJ0NvbXBvc2VkIFNoYWRvdyBUcmVlOicp
OworICAgIGRlYnVnKGR1bXBDb21wb3NlZFNoYWRvd1RyZWUobm9kZSkpOworCisgICAgZGVidWco
J1RyYXZlcnNlIGluIGZvcndhcmQuJyk7CisgICAgc2hvd0NvbXBvc2VkU2hhZG93VHJlZUJ5VHJh
dmVyc2luZ0luRm9yd2FyZChub2RlKTsKKworICAgIGRlYnVnKCdUcmF2ZXJzZSBpbiBiYWNrd2Fy
ZC4nKTsKKyAgICBzaG93Q29tcG9zZWRTaGFkb3dUcmVlQnlUcmF2ZXJzaW5nSW5CYWNrd2FyZChu
b2RlKTsKKworICAgIGRlYnVnKCcnKTsKK30KKworZnVuY3Rpb24gc2hvd05leHROb2RlKG5vZGUp
IHsKKyAgICB2YXIgbmV4dCA9IGludGVybmFscy5uZXh0Tm9kZUJ5V2Fsa2VyKG5vZGUpOworICAg
IGRlYnVnKCdOZXh0IG5vZGUgb2YgWycgKyBkdW1wTm9kZShub2RlKSArICddIGlzIFsnICsgZHVt
cE5vZGUobmV4dCkgKyAnXScpOworfQorCitmdW5jdGlvbiB0ZXN0Q29tcG9zZWRTaGFkb3dUcmVl
KG5vZGUpCit7CisgICAgdmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Fu
ZGJveCcpOworICAgIHNhbmRib3guaW5uZXJIVE1MID0gJyc7CisgICAgc2FuZGJveC5hcHBlbmRD
aGlsZChub2RlKTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgc2hvd0NvbXBv
c2VkU2hhZG93VHJlZShub2RlKTsKK30KKworZGVidWcoJ011bHRpcGxlIHNoYWRvdyByb290IHdp
dGhvdXQgc2hhZG93IGVsZW1lbnQnKTsKK3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9v
dChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9KSksCisgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MnfSkpKSk7CisKK2RlYnVnKCdNdWx0
aXBsZSBzaGFkb3cgcm9vdCB3aXRoIHNoYWRvdyBlbGVtZW50Jyk7Cit0ZXN0Q29tcG9zZWRTaGFk
b3dUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAg
IGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSkpLAorICAgICAg
ICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6
ICdkJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdlJ30pKSkpOworCitkZWJ1ZygnTXVsdGlwbGUgc2hhZG93IHJvb3Qgd2l0aCBzaGFk
b3cgZWxlbWVudCwgY2FzZSAyJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNyZWF0
ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3Qo
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSkpLAorICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdjJ30pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdkJ30pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJ30pKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZid9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsn
aWQnOiAnZyd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rp
dicsIHsnaWQnOiAnaCd9KSkpKTsKKworZGVidWcoJ3NoYWRvdyByZXByb2plY3Rpb24nKTsKK3Rl
c3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EtY2hpbGQnfSksCisgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdzaGFk
b3cnLCB7J2lkJzogJ2MnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdlJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdmJ30pKSkpKSk7CisKK2RlYnVnKCdzaGFkb3cgcmVwcm9qZWN0aW9uLCB0YWtlIDInKTsKK3Rl
c3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSksCisgICAgICAgICAg
ICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ2MnfSkpLAor
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdk
J30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
c2hhZG93JywgeydpZCc6ICdlJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJ30pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnZyd9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsn
aWQnOiAnaCd9KSkpKSkpOworCitkZWJ1Zygnc2hhZG93IGZhbGxiYWNrIGVsZW1lbnQgcmVwcm9q
ZWN0aW9uJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30p
LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdjJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93
JywgeydpZCc6ICdkJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAnZid9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZyd9KSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J2gnfSkpLAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdpJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdqJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdrJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnbCd9KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHsnaWQnOiAnbSd9KSkpKSkpOworCitpbnRlcm5hbHMuYWRkcmVzcyhkb2N1bWVudCk7
CitkZWJ1Zygnd2l0aCBpbmFjdGl2ZSBpbnNlcnRpb24gcG9pbnRzJykKK3Rlc3RDb21wb3NlZFNo
YWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2EnfSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdiJ30sCisgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSksCisgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnc2hhZG93JywgeydpZCc6ICdkJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnZSd9KSksCisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jv
b3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2YnfSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdnJ30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAn
aCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdzaGFkb3cnLCB7J2lkJzogJ2knfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdqJ30pKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ2snfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywg
eydpZCc6ICdsJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ3NoYWRvdycsIHsnaWQnOiAnbSd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ24nfSkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JywgeydpZCc6ICdvJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29u
dGVudCcsIHsnaWQnOiAncCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdzaGFkb3cnLCB7J2lkJzogJ3EnfSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdyJ30pKSks
CisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J3MnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdzaGFkb3cnLCB7J2lkJzogJ3QnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ3UnfSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICd2J30pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICd3J30pKSkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKaW5kZXggMDZmN2E3
MWYyYTRlZDQzMGY2YTQ4NDAyYTBiNTJkNWRhNGYwNDkxOS4uYzg4ZTA2OGU0ZGUxMGRjZGRhNzJj
YWE3MTc2MzA1ZTMwNGNmZWJmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbApAQCAtMjg3LDE4
ICsyODcsNiBAQCB0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAogICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnY2hpbGQtMScsICdjbGFzcyc6ICdmb28nfSksCiAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdub3Qtc2VsZWN0ZWQnLCAnY2xhc3MnOiAnZm9v
J30pLAogICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnY2hpbGQtMicsICdj
bGFzcyc6ICdmb28nfSkpKTsKLQotLyoKLWRlYnVnKCdUZXN0IGZvciBtdWx0aXBsZSBzaGFkb3cg
cm9vdHMgd2l0aCByZXByb2plY3Rpb25zLicpOwotdGVzdENvbXBvc2VkU2hhZG93VHJlZSgKLSAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAotICAgICAgICAgICAgICBjcmVhdGVTaGFk
b3dSb290KGNyZWF0ZURPTSgnY29udGVudCcpKSwKLSAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnY29udGVudCcs
IHsnc2VsZWN0JzogJyNjaGlsZCd9KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JykpKSwKLSAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2NoaWxkJ30pKSk7Ci0qLwotCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVj
dGlvbi1jb21wbGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29udGVudC1y
ZXByb2plY3Rpb24tY29tcGxleC5odG1sCmluZGV4IGJlMjEwOTkzNGViODI0NWNlYTBlMWQwZTY1
NTljZjc0NDA4MWM1MjguLjViZTAzMjA5MTliMWEyYjIyYzAwNjMyNThhN2E3NWQ1NGZiYmYxZjQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVj
dGlvbi1jb21wbGV4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRl
bnQtcmVwcm9qZWN0aW9uLWNvbXBsZXguaHRtbApAQCAtMTQsMTAgKzE0LDEwIEBACiAKIDxzY3Jp
cHQ+CiB2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7Ci1zaGFk
b3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIiPjxjb250ZW50IHNlbGVjdD0iLkEi
PjwvY29udGVudD48c2hhZG93Pjwvc2hhZG93PjxkaXYgY2xhc3M9Ii5BIj5BPC9kaXY+PC9kaXY+
JzsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+PGNvbnRlbnQgc2Vs
ZWN0PSIuQSI+PC9jb250ZW50PjxzaGFkb3c+PC9zaGFkb3c+PGRpdiBjbGFzcz0iQSI+QTwvZGl2
PjwvZGl2Pic7CiAKIHZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHNoYWRv
d1Jvb3QxLmdldEVsZW1lbnRCeUlkKCdob3N0MicpKTsKLXNoYWRvd1Jvb3QyLmlubmVySFRNTCA9
ICc8ZGl2PjxoMj5BPC9oMj48Y29udGVudCBzZWxlY3Q9ImRpdiI+PC9jb250ZW50PjxoMj5CPC9o
Mj48c2hhZG93Pjwvc2hhZG93PjwvZGl2PicKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8ZGl2
PjxoMj5BPC9oMj48Y29udGVudCBzZWxlY3Q9Ii5BIj48L2NvbnRlbnQ+PGgyPkI8L2gyPjxzaGFk
b3c+PC9zaGFkb3c+PC9kaXY+JwogPC9zY3JpcHQ+CiAKIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9q
ZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKaW5kZXggOTBkZDU2YTc1ODRkNjUzODI3ZTQ1
OTQyMDVlMjJhMmZmNTNjZTcwNS4uNDhjNTJiMjBjZjA1ZTRjYzEwOGQyY2EzZTNiNWE1ZTg4MDNj
ZTI1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVw
cm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2NvbnRlbnQtcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKQEAg
LTgsNiArOCw3IEBACiA8ZGl2IGlkPSJob3N0MSI+CiAgICAgPGRpdiBpZD0iaG9zdDIiPgogICAg
ICAgICA8ZGl2PmNvbnRlbnQgZmFsbGJhY2sgZWxlbWVudDwvZGl2PgorICAgICAgICA8ZGl2PnNo
YWRvdyBmYWxsYmFjayBlbGVtZW50PC9kaXY+CiAgICAgICAgIDxkaXY+VGhpcyBzaG91bGQgYmUg
c2VsZWN0ZWQuPC9kaXY+CiAgICAgPC9kaXY+CiA8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2pl
Y3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50
LXJlcHJvamVjdGlvbi1mYWxsYmFjay1yZXByb2plY3Rpb24tZXhwZWN0ZWQuaHRtbAppbmRleCAx
NjYxZjUwYThlMGMyNTUyNDNkMmI5YjAwN2I2Y2Y0YThjYmQyYjNmLi4yMzg4MDA3ZmFhM2UzZmYx
MWFhYWJjMjE2ZjI1OTEyMTE0NmIzYTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvY29udGVudC1yZXByb2plY3Rpb24tZmFsbGJhY2stcmVwcm9qZWN0aW9uLWV4cGVj
dGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtcmVwcm9q
ZWN0aW9uLWZhbGxiYWNrLXJlcHJvamVjdGlvbi1leHBlY3RlZC5odG1sCkBAIC05LDYgKzksNyBA
QAogICAgIDxkaXYgaWQ9Imhvc3QyIj4KICAgICAgICAgPGRpdiBpZD0iaG9zdDMiPgogICAgICAg
ICAgICAgPGRpdj5jb250ZW50IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KKyAgICAgICAgICAgIDxk
aXY+c2hhZG93IGZhbGxiYWNrIGVsZW1lbnQ8L2Rpdj4KICAgICAgICAgICAgIDxkaXY+VGhpcyBz
aG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+CiAgICAgICAgICAgICA8ZGl2PmNvbnRlbnQgZmFsbGJh
Y2sgZWxlbWVudDwvZGl2PgogICAgICAgICAgICAgPGRpdj5UaGlzIGFsc28gc2hvdWxkIGJlIHNl
bGVjdGVkLjwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yZXByb2plY3Rpb24tY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRmMmE2MjZmMWMxOTFhYmI4M2NjN2M1NThkZjNjMWYxYTM2NzMyNWUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1j
bGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3QgY29uZmlybXMgdGhh
dCBjbGlja2luZyBhIHNoYWRvdyByZXByb2plY3RlZCBlbGVtZW50IGRvZXMgbm90IGNhdXNlIGEg
Y3Jhc2guCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcmVwcm9qZWN0aW9uLWNsaWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2OTE4NjEyODdj
N2JlY2UwM2ZlNWYxMmQ2NmYzMWFiM2Y1ZTgyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1jbGljay5odG1sCkBAIC0w
LDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPHA+VGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQg
Y2xpY2tpbmcgYSBzaGFkb3cgcmVwcm9qZWN0ZWQgZWxlbWVudCBkb2VzIG5vdCBjYXVzZSBhIGNy
YXNoLjwvcD4KKworPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJob3N0MSI+PGRp
dj5Ib3N0IENoaWxkPC9kaXY+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwordmFyIHNoYWRvd1Jv
b3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1M
ID0gJzxkaXYgaWQ9InRhcmdldCI+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOworCit2
YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290
Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDMiPjxzaGFkb3c+PC9zaGFkb3c+PGNvbnRlbnQ+
PC9jb250ZW50PjxkaXY+WW91bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PjwvZGl2Pic7CisK
K3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFyIHNo
YWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMuaW5u
ZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+JzsKKworY29udGFpbmVy
Lm9mZnNldExlZnQ7CisKK3ZhciB0YXJnZXQgPSBzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgn
dGFyZ2V0Jyk7CitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8odGFyZ2V0Lm9mZnNldExlZnQgKyAxMCwgdGFyZ2V0Lm9mZnNldFRvcCArIDIpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
K30KKworY29udGFpbmVyLmlubmVySFRNTCA9ICJQQVNTIjsKKzwvc2NyaXB0PgorCis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVj
dGlvbi1keW5hbWljLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJlcHJvamVjdGlvbi1keW5hbWljLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM4
ODM0NTRkNjRjYmVhNDAyZTVlNTliZmFjNWFlYzgxYzUwMjg1MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWR5bmFtaWMt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
Cis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdiBpZD0iaG9zdDMiPgorICAgICAgICA8ZGl2PlVw
ZGF0ZWQgT2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5BZGRlZCBP
bGRlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PgorICAgICAgICA8ZGl2Pkhvc3QgQ2hpbGQ8L2Rp
dj4KKyAgICAgICAgPGRpdj5Zb3VuZ2VzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgPC9k
aXY+Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZHluYW1pYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tZHluYW1pYy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdiMzQ1MjE1YjgyYWZiZmNjMzViMTMzNmQ0OWVjYmFjMzRmMjNhMjIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1keW5h
bWljLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0
MSI+PGRpdj5Ib3N0IENoaWxkPC9kaXY+PC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dS
b290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRN
TCA9ICc8ZGl2IGlkPSJob3N0MiI+T2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOworCit2
YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290
Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDMiPjxzaGFkb3c+PC9zaGFkb3c+PGNvbnRlbnQ+
PC9jb250ZW50PjxkaXY+WW91bmdlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2PjwvZGl2Pic7CisK
K3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFyIHNo
YWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMuaW5u
ZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2Ij48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICBzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9z
dDIiPlVwZGF0ZWQgT2xkZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj48ZGl2PkFkZGVkIE9sZGVz
dCBTaGFkb3dSb290IENoaWxkPC9kaXY+JzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKworPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXBy
b2plY3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ1NGIwNGE1NmIyZmIy
MGQxZmE3N2M3YmIwZTI0YTFhMTJmZmQ3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAs
MCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKworPGRpdiBpZD0iaG9zdDEiPgor
ICAgIDxkaXYgaWQ9Imhvc3QzIj4KKyAgICAgICAgPGRpdj5PbGRlc3QgU2hhZG93Um9vdCBDaGls
ZDwvZGl2PgorICAgICAgICA8ZGl2Pkhvc3QgQ2hpbGQ8L2Rpdj4KKyAgICAgICAgPGRpdj5Zb3Vu
Z2VzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2pl
Y3Rpb24tZmFsbGJhY2stZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzU3ZDUwMGYyZWU4MzQ4ZjQ3ODg0MmM0YjI2ODU0Yzc1Y2Y3NjI5NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxi
YWNrLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgaWQ9Imhvc3Q0Ij4KKyAgICAgICA8ZGl2
Pk9sZGVzdCBTaGFkb3dSb290IENoaWxkPC9kaXY+CisgICAgICAgPGRpdj5Ib3N0IENoaWxkPC9k
aXY+CisgICAgICAgPGRpdj5TaGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMSk8L2Rpdj4KKyAgICAg
ICA8ZGl2PlNoYWRvdyBGYWxsYmFjayBFbGVtZW50ICgyKTwvZGl2PgorICAgIDwvZGl2PgorPC9k
aXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcmVwcm9qZWN0aW9uLWZhbGxiYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YzQz
ZjIwZjFiZGE1NDU4ZDZlNGU1OTAwMDIwYTVlNjhiMWE0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1mYWxsYmFjay5o
dG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPjxk
aXY+SG9zdCBDaGlsZDwvZGl2PjwvZGl2PgorCis8c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxk
aXYgaWQ9Imhvc3QyIj5PbGRlc3QgU2hhZG93Um9vdCBDaGlsZDwvZGl2Pic7CisKK3ZhciBzaGFk
b3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QyLmlubmVy
SFRNTCA9ICc8c2hhZG93Pjwvc2hhZG93Pjxjb250ZW50PjwvY29udGVudD48c2hhZG93PjxkaXYg
dGl0bGU9ImRlYnVnc3RvcCI+U2hhZG93IEZhbGxiYWNrIEVsZW1lbnQgKDEpPC9kaXY+PC9zaGFk
b3c+JzsKKwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOwor
c2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3Q0Ij48c2hhZG93Pjwvc2hhZG93
PjxzaGFkb3c+PGRpdj5TaGFkb3cgRmFsbGJhY2sgRWxlbWVudCAoMik8L2Rpdj48L3NoYWRvdz48
c3Bhbj5Ob3QgcmVuZGVyZWQgKDEpPC9zcGFuPjxzaGFkb3c+PHNwYW4+Tm90IHJlbmRlcmVkICgy
KTwvc3Bhbj48L3NoYWRvdz48L2Rpdj4nOworCit2YXIgaG9zdDQgPSBzaGFkb3dSb290My5nZXRF
bGVtZW50QnlJZCgnaG9zdDQnKTsKK3ZhciBzaGFkb3dSb290NCA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGhvc3Q0KTsKKworc2hhZG93Um9vdDQuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0i
ZGl2Ij48L2NvbnRlbnQ+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi1wcm9oaWJpdGVkLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVj
dGlvbi1wcm9oaWJpdGVkLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDVjODhkOTlkYjRlMTQxYTBlYWI0OTc0ZDkwODAyM2Y4NmQ3NzMwODguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC1leHBlY3RlZC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLQotPHA+
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBlbGVtZW50cyBhc3NpZ25lZCB0byBhIHNoYWRvdyBlbGVt
ZW50IGFyZSBub3QgZGlzdHJpYnV0ZWQuPC9wPgotCi08ZGl2IGlkPSJob3N0MSI+Ci0gICAgPGRp
diBpZD0iaG9zdDIiPjxkaXY+VGhpcyBzaG91bGQgYmUgc2VsZWN0ZWQuPC9kaXY+PC9kaXY+Ci08
L2Rpdj4KLQotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24tcHJvaGliaXRlZC5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjNDAyNzFhNGFjNWM1MTY4YTMxOTBiNDRhOWMwMTNhNjM0OGU0
M2VkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uLXByb2hpYml0ZWQuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci0KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgotCi08cD5U
aGlzIHRlc3QgZW5zdXJlcyB0aGF0IGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2hhZG93IGVsZW1l
bnQgYXJlIG5vdCBkaXN0cmlidXRlZC48L3A+Ci0KLTxkaXYgaWQ9Imhvc3QxIj4KLSAgICA8ZGl2
PlRoZXNlIGVsZW1lbnRzPC9kaXY+Ci0gICAgPGRpdj5zaG91bGQgbm90IGJlPC9kaXY+Ci0gICAg
PGRpdj5yZXByb2plY3RlZDwvZGl2PgotPC9kaXY+Ci0KLTxzY3JpcHQ+Ci12YXIgc2hhZG93Um9v
dDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7Ci1zaGFkb3dSb290MS5pbm5lckhUTUwg
PSAnPGRpdiBpZD0iaG9zdDIiPjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKLQotdmFyIHNoYWRv
d1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQo
J2hvc3QyJykpOwotc2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXY+PGNvbnRlbnQgc2VsZWN0
PSJkaXYiPjwvY29udGVudD48ZGl2PlRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkLjwvZGl2PjwvZGl2
PicKLTwvc2NyaXB0PgotCi08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDQ1MDgyZWE4MmM3
YjkzZWEwMDBjYjZiNjVhYWQxNTdjMjA0ZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24uaHRtbApAQCAtMCwwICsxLDE5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5
ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QxIj48ZGl2Pkhvc3QgQ2hpbGQ8L2Rp
dj48L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+T2xk
ZXN0IFNoYWRvd1Jvb3QgQ2hpbGQ8L2Rpdj4nOworCit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0i
aG9zdDMiPjxzaGFkb3c+PC9zaGFkb3c+PGNvbnRlbnQ+PC9jb250ZW50PjxkaXY+WW91bmdlc3Qg
U2hhZG93Um9vdCBDaGlsZDwvZGl2PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3Qy
LmdldEVsZW1lbnRCeUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3QoaG9zdDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVj
dD0iZGl2Ij48L2NvbnRlbnQ+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxOWU0OWY5YjQ4NGU5ODlmMDAyNDM4Y2MzYjc2ZmI5
NmJkNTU3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJlcHJvamVjdGlvbjItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorCis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdiBpZD0iaG9z
dDMiPgorICAgICAgICA8ZGl2PkE8L2Rpdj4KKyAgICAgICAgPGRpdj5CPC9kaXY+CisgICAgICAg
IDxkaXY+QzwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0aW9uMi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yZXByb2plY3Rpb24yLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWY3ZDc3NjIzMzQ3ZmYzNmQ1ODViNmMzMjM5NDVlNjU4ODI1ZDU1NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcmVwcm9qZWN0
aW9uMi5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9z
dDEiPjxkaXY+QjwvZGl2PjwvZGl2PgorCis8c2NyaXB0PgordmFyIHNoYWRvd1Jvb3QxID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxzaGFk
b3c+PC9zaGFkb3c+JzsKKwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
aG9zdDEpOworc2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QzIj48c2hhZG93
Pjwvc2hhZG93PjwvZGl2Pic7CisKK3ZhciBob3N0MyA9IHNoYWRvd1Jvb3QyLmdldEVsZW1lbnRC
eUlkKCdob3N0MycpOwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9z
dDMpOworc2hhZG93Um9vdDMuaW5uZXJIVE1MID0gJzxkaXY+QTwvZGl2Pjxjb250ZW50IHNlbGVj
dD0iZGl2Ij48L2NvbnRlbnQ+PGRpdj5DPC9kaXY+JzsKKzwvc2NyaXB0PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>