<?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>89568</bug_id>
          
          <creation_ts>2012-06-20 06:49:32 -0700</creation_ts>
          <short_desc>Web Inspector: partially instrument DOM Tree native memory</short_desc>
          <delta_ts>2012-06-22 07:08:22 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87262</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>aandrey</cc>
    
    <cc>abarth</cc>
    
    <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>koivisto</cc>
    
    <cc>loislo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vitalyr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>653423</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-20 06:49:32 -0700</bug_when>
    <thetext>This patch is a part of native memory instrumentation.

It is not possible to do this in a single patch because DOM structure has too many different classes.
The idea is to count the size of each reported object and call reportMemoryUsage if such method was defined in the object&apos;s class.
All the instrumented classes will report their type DOM or CSS, not instrumented classes will be counted as Unknown.

the sample test output:

RESULT native-memory-snapshot: DOM= 400 kB
RESULT native-memory-snapshot: DOMTreeUnknown= 46 kB
RESULT native-memory-snapshot: DOMTreeDOM= 337 kB
RESULT native-memory-snapshot: DOMTreeCSS= 15 kB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653433</commentid>
    <comment_count>1</comment_count>
      <attachid>148556</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-20 07:05:22 -0700</bug_when>
    <thetext>Created attachment 148556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653445</commentid>
    <comment_count>2</comment_count>
      <attachid>148561</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-20 07:25:12 -0700</bug_when>
    <thetext>Created attachment 148561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653447</commentid>
    <comment_count>3</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-20 07:26:48 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=148561) [details]
&gt; Patch

Unknown -&gt; Other
GTK &amp; Qt &amp; MSVS build systems were ajusted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653453</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-20 07:34:51 -0700</bug_when>
    <thetext>*** Bug 55587 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653459</commentid>
    <comment_count>5</comment_count>
      <attachid>148561</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-20 07:41:54 -0700</bug_when>
    <thetext>Comment on attachment 148561
Patch

Attachment 148561 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12996235</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653464</commentid>
    <comment_count>6</comment_count>
      <attachid>148561</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-20 07:52:52 -0700</bug_when>
    <thetext>Comment on attachment 148561
Patch

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

&gt; Source/WebCore/dom/ElementAttributeData.h:30
&gt; +#include &quot;InspectorMemoryInstrumentation.h&quot;

We can avoid this include in the headers of instrumented classes by moving ObjectMemoryAggregator out of InspectorMemoryInstrumentation.

&gt; Source/WebCore/dom/Node.h:30
&gt; +#include &quot;InspectorMemoryInstrumentation.h&quot;

You can avoid this include in the headers of instrumented classes by moving ObjectMemoryAggregator out of InspectorMemoryInstrumentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653467</commentid>
    <comment_count>7</comment_count>
      <attachid>148561</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-06-20 07:56:16 -0700</bug_when>
    <thetext>Comment on attachment 148561
Patch

Attachment 148561 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12999204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653476</commentid>
    <comment_count>8</comment_count>
      <attachid>148561</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-20 08:08:09 -0700</bug_when>
    <thetext>Comment on attachment 148561
Patch

Attachment 148561 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13005197</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653489</commentid>
    <comment_count>9</comment_count>
      <attachid>148573</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-20 08:20:23 -0700</bug_when>
    <thetext>Created attachment 148573
build errors fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653511</commentid>
    <comment_count>10</comment_count>
      <attachid>148573</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-20 08:46:01 -0700</bug_when>
    <thetext>Comment on attachment 148573
build errors fix

Attachment 148573 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12997244</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653523</commentid>
    <comment_count>11</comment_count>
      <attachid>148579</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-20 08:59:26 -0700</bug_when>
    <thetext>Created attachment 148579
build errors fix 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653544</commentid>
    <comment_count>12</comment_count>
      <attachid>148579</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-20 09:25:11 -0700</bug_when>
    <thetext>Comment on attachment 148579
build errors fix 2

Attachment 148579 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12999219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653579</commentid>
    <comment_count>13</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-20 10:07:14 -0700</bug_when>
    <thetext>You need to update WebCore.xcodeproj/project.pbxproj</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653598</commentid>
    <comment_count>14</comment_count>
      <attachid>148579</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-20 10:20:41 -0700</bug_when>
    <thetext>Comment on attachment 148579
build errors fix 2

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

&gt; Source/WebCore/css/StylePropertySet.h:119
&gt; +    typedef InspectorMemoryInstrumentation::ObjectMemoryAggregator ObjectMemoryAggregator;

FYI InspectorMemoryInstrumentation only exists #if ENABLE(INSPECTOR). This might fail to compile w/o inspector.

&gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

2012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653718</commentid>
    <comment_count>15</comment_count>
      <attachid>148579</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-20 11:45:13 -0700</bug_when>
    <thetext>Comment on attachment 148579
build errors fix 2

clear r? because I&apos;m not going to land the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654324</commentid>
    <comment_count>16</comment_count>
      <attachid>148747</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 01:39:16 -0700</bug_when>
    <thetext>Created attachment 148747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654328</commentid>
    <comment_count>17</comment_count>
      <attachid>148749</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 01:52:51 -0700</bug_when>
    <thetext>Created attachment 148749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654330</commentid>
    <comment_count>18</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 02:04:35 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 148561 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148561&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Node.h:30
&gt; &gt; +#include &quot;InspectorMemoryInstrumentation.h&quot;
&gt; 
&gt; You can avoid this include in the headers of instrumented classes by moving ObjectMemoryAggregator out of InspectorMemoryInstrumentation.

forward declaration is not enough because TreeShared is a header only template class with instrumentation.



in this version I removed typedef from the instrumented classes.
ObjectMemoryAggregator was renamed to InspectorMemoryAggregator.

#if ENABLED(INSPECTOR) was removed because instrumentation code doesn&apos;t affect performance and can be reused by a third party component even without other Inspector&apos;s code. Also this change will solve the problem with Qt minimal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654336</commentid>
    <comment_count>19</comment_count>
      <attachid>148749</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-21 02:38:34 -0700</bug_when>
    <thetext>Comment on attachment 148749
Patch

Attachment 148749 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13035038</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654342</commentid>
    <comment_count>20</comment_count>
      <attachid>148749</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-21 02:56:51 -0700</bug_when>
    <thetext>Comment on attachment 148749
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:94
&gt; +        void reportType(ObjectType type) { m_type = m_type == Other ? type : m_type; }

setType

&gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:138
&gt; +typedef InspectorMemoryInstrumentation::InspectorMemoryAggregator InspectorMemoryAggregator;

What is the reason for not moving InspectorMemoryAggregator to the top level?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654345</commentid>
    <comment_count>21</comment_count>
      <attachid>148749</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-21 03:08:43 -0700</bug_when>
    <thetext>Comment on attachment 148749
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:433
&gt; +        if (node-&gt;document()-&gt;frame() &amp;&amp; m_page != node-&gt;document()-&gt;frame()-&gt;page())

Can node-&gt;document() be 0?

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:437
&gt; +        while (rootNode-&gt;parentNode())

Please merge this code with its copy above. Also it seems that it&apos;s enough here to just store a hash set of visited nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654347</commentid>
    <comment_count>22</comment_count>
      <attachid>148749</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-21 03:14:52 -0700</bug_when>
    <thetext>Comment on attachment 148749
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:70
&gt; +            return sizeof(P);

The returned size doesn&apos;t seem to be used, the report* methods should be void.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654372</commentid>
    <comment_count>23</comment_count>
      <attachid>148749</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-21 04:23:21 -0700</bug_when>
    <thetext>Comment on attachment 148749
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:48
&gt; +        InspectorMemoryAggregator aggreagtor(this);

nit: typo

&gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:77
&gt; +            return sizeof(OwnPtr&lt;P&gt;);

Won&apos;t sizeof of OwnPtr get in account in the caller method &quot;return sizeof(*this)&quot; ?

&gt;&gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:94
&gt;&gt; +        void reportType(ObjectType type) { m_type = m_type == Other ? type : m_type; }
&gt; 
&gt; setType

Won&apos;t this work:
ASSERT(m_type == Other);
m_type = type;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654374</commentid>
    <comment_count>24</comment_count>
      <attachid>148763</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 04:25:57 -0700</bug_when>
    <thetext>Created attachment 148763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654379</commentid>
    <comment_count>25</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 04:38:52 -0700</bug_when>
    <thetext>(In reply to comments)
&gt; (From update of attachment 148749 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148749&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:94
&gt; &gt; +        void reportType(ObjectType type) { m_type = m_type == Other ? type : m_type; }
&gt; 
&gt; setType

done: was renamed to setObjectType



&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:138
&gt; &gt; +typedef InspectorMemoryInstrumentation::InspectorMemoryAggregator InspectorMemoryAggregator;
&gt; 
&gt; What is the reason for not moving InspectorMemoryAggregator to the top level?

done



&gt; &gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:433
&gt; &gt; +        if (node-&gt;document()-&gt;frame() &amp;&amp; m_page != node-&gt;document()-&gt;frame()-&gt;page())
&gt; 
&gt; Can node-&gt;document() be 0?

no idea at the moment



&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:437
&gt; &gt; +        while (rootNode-&gt;parentNode())
&gt; 
&gt; Please merge this code with its copy above.

the current implementation has almost nothing in common with the copy above.

&gt;  Also it seems that it&apos;s enough here to just store a hash set of visited nodes.

this is done automatically by the MemoryInstrumentationImpl::visited method.




&gt; &gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:48
&gt; &gt; +        InspectorMemoryAggregator aggreagtor(this);
&gt; 
&gt; nit: typo
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:77
&gt; &gt; +            return sizeof(OwnPtr&lt;P&gt;);
&gt; 
&gt; Won&apos;t sizeof of OwnPtr get in account in the caller method &quot;return sizeof(*this)&quot; ?

done



&gt; 
&gt; &gt;&gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:94
&gt; &gt;&gt; +        void reportType(ObjectType type) { m_type = m_type == Other ? type : m_type; }
&gt; &gt; 
&gt; &gt; setType
&gt; 
&gt; Won&apos;t this work:
&gt; ASSERT(m_type == Other);
&gt; m_type = type;

I&apos;d like to save only the first value assigned by the topmost class.



(In reply to comment #22)
&gt; (From update of attachment 148749 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148749&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryInstrumentation.h:70
&gt; &gt; +            return sizeof(P);
&gt; 
&gt; The returned size doesn&apos;t seem to be used, the report* methods should be void.

done


Also InspectorMemoryInstrumentation was renamed to MemoryInstrumentation
InspectorMemoryAggregator was renamed to MemoryAggregator
The whole file also was renamed and moved to WebCore/dom folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654388</commentid>
    <comment_count>26</comment_count>
      <attachid>148763</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-21 04:53:59 -0700</bug_when>
    <thetext>Comment on attachment 148763
Patch

Attachment 148763 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13027078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654395</commentid>
    <comment_count>27</comment_count>
      <attachid>148763</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-21 05:09:02 -0700</bug_when>
    <thetext>Comment on attachment 148763
Patch

Attachment 148763 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13033069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654475</commentid>
    <comment_count>28</comment_count>
      <attachid>148792</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 07:05:38 -0700</bug_when>
    <thetext>Created attachment 148792
build fix for win and mac bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654478</commentid>
    <comment_count>29</comment_count>
      <attachid>148793</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 07:09:45 -0700</bug_when>
    <thetext>Created attachment 148793
build fix for win and mac bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654508</commentid>
    <comment_count>30</comment_count>
      <attachid>148793</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-21 07:48:13 -0700</bug_when>
    <thetext>Comment on attachment 148793
build fix for win and mac bots

Attachment 148793 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13035096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654512</commentid>
    <comment_count>31</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-21 07:52:08 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comments)
&gt; &gt; (From update of attachment 148749 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148749&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:433
&gt; &gt; &gt; +        if (node-&gt;document()-&gt;frame() &amp;&amp; m_page != node-&gt;document()-&gt;frame()-&gt;page())
&gt; &gt; 
&gt; &gt; Can node-&gt;document() be 0?
&gt; 
&gt; no idea at the moment
&gt; 
Then we probably need to check it here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654518</commentid>
    <comment_count>32</comment_count>
      <attachid>148803</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 07:59:36 -0700</bug_when>
    <thetext>Created attachment 148803
build fix for win</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654583</commentid>
    <comment_count>33</comment_count>
      <attachid>148803</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-21 09:11:17 -0700</bug_when>
    <thetext>Comment on attachment 148803
build fix for win

Attachment 148803 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13034163</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654719</commentid>
    <comment_count>34</comment_count>
      <attachid>148803</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-21 11:15:40 -0700</bug_when>
    <thetext>Comment on attachment 148803
build fix for win

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

&gt; Source/WebCore/dom/MemoryInstrumentation.h:41
&gt; +class MemoryInstrumentation {

What is MemoryInstrumentation? What is its relationship with the MemoryAggregator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654725</commentid>
    <comment_count>35</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 11:21:27 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 148803 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148803&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:41
&gt; &gt; +class MemoryInstrumentation {
&gt; 
&gt; What is MemoryInstrumentation? What is its relationship with the MemoryAggregator.

It is a class that aggregates information about an object instance.
It is very simple at this moment but it allows us to have single instrumentation function in the each instrumented class. Otherwise we have to have separate functions for reporting size + type of an object and pointers from the object to other objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654737</commentid>
    <comment_count>36</comment_count>
      <attachid>148847</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-21 11:30:10 -0700</bug_when>
    <thetext>Created attachment 148847
heavy template code was removed because MSVS2005 can&apos;t compile it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655352</commentid>
    <comment_count>37</comment_count>
      <attachid>148847</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-22 04:09:53 -0700</bug_when>
    <thetext>Comment on attachment 148847
heavy template code was removed because MSVS2005 can&apos;t compile it

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

&gt; Source/WebCore/bindings/js/ScriptWrappable.h:61
&gt; +        return sizeof(*this);

How about adding reportSelfSize to the aggregator and removing return value? It seems to be more uniform to me.

&gt; Source/WebCore/dom/MemoryInstrumentation.h:46
&gt; +        Other = 0,

Why do you need to specify values here?

&gt; Source/WebCore/dom/MemoryInstrumentation.h:65
&gt; +    virtual void countObjectSize(ObjectType, size_t) = 0;

Is there a real need to split the class into two (MemInstr and MemInstrImpl)? A single class would allow us to avoid having virtual calls.

&gt; Source/WebCore/dom/MemoryInstrumentation.h:83
&gt; +    void reportPointer(const P* pointer, MemoryInstrumentation::ObjectType objectType)

Do you really need to pass objectType here? For all the cases I see in this patch it is equal to m_objectType.

&gt; Source/WebCore/dom/MemoryInstrumentation.h:116
&gt; +void MemoryInstrumentation::reportInstrumentedObject(const T&amp; object)

May the object be pointed from somewhere else as well? So does it need to check visited?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655381</commentid>
    <comment_count>38</comment_count>
      <attachid>149004</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-22 05:39:57 -0700</bug_when>
    <thetext>Created attachment 149004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655397</commentid>
    <comment_count>39</comment_count>
      <attachid>149010</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-22 06:04:36 -0700</bug_when>
    <thetext>Created attachment 149010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655398</commentid>
    <comment_count>40</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-22 06:05:00 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 148847 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148847&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptWrappable.h:61
&gt; &gt; +        return sizeof(*this);
&gt; 
&gt; How about adding reportSelfSize to the aggregator and removing return value? It seems to be more uniform to me.

done: reportType was replaced with reportObjectInfo(type, size)



&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:46
&gt; &gt; +        Other = 0,
&gt; 
&gt; Why do you need to specify values here?

done


&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:65
&gt; &gt; +    virtual void countObjectSize(ObjectType, size_t) = 0;
&gt; 
&gt; Is there a real need to split the class into two (MemInstr and MemInstrImpl)? A single class would allow us to avoid having virtual calls.

I see no performance problems here. Grabbing all Native memory info data takes 1ms for now.
From the other side it allows us to have  self contained header and to hide implementation details from the DOM/CSS etc classes.

&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:83
&gt; &gt; +    void reportPointer(const P* pointer, MemoryInstrumentation::ObjectType objectType)
&gt; 
&gt; Do you really need to pass objectType here? For all the cases I see in this patch it is equal to m_objectType.

It wouldn&apos;t be always true.

&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:116
&gt; &gt; +void MemoryInstrumentation::reportInstrumentedObject(const T&amp; object)
&gt; 
&gt; May the object be pointed from somewhere else as well? So does it need to check visited?

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655403</commentid>
    <comment_count>41</comment_count>
      <attachid>149004</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-22 06:10:58 -0700</bug_when>
    <thetext>Comment on attachment 149004
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:390
&gt; +        for (int i = 0; i &lt; LastTypeEntry; ++i)

nit: 0 -&gt; Other

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:414
&gt; +        ASSERT(objectType &gt;= 0 &amp;&amp; objectType &lt; LastTypeEntry);

nit: 0 -&gt; Other</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655415</commentid>
    <comment_count>42</comment_count>
      <attachid>149010</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-22 06:43:17 -0700</bug_when>
    <thetext>Comment on attachment 149010
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        This patch adds MemoryInstrumentation class that counts all visited

Please update the description.

&gt; Source/WebCore/dom/MemoryInstrumentation.h:98
&gt; +    void reportObjectInfo(MemoryInstrumentation::ObjectType objectType, size_t objectSize)

You can make this method a template: 
template&lt;typename T&gt;
void reportObjectInfo(MemoryInstrumentation::ObjectType objectType, T* object)
{
...
    m_objectSize = sizeof(*object);

this way you wouldn&apos;t need to call sizeof() everywhere

&gt; Source/WebCore/dom/MemoryInstrumentation.h:120
&gt; +    MemoryObjectInfo aggregator(this);

aggregator -&gt; info

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:429
&gt; +    DOMTreesIterator(Page* page) : m_page(page) { }

missing explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655421</commentid>
    <comment_count>43</comment_count>
      <attachid>149018</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-22 06:56:15 -0700</bug_when>
    <thetext>Created attachment 149018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655429</commentid>
    <comment_count>44</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-22 07:06:48 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; (From update of attachment 149010 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149010&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:6
&gt; &gt; +        This patch adds MemoryInstrumentation class that counts all visited
&gt; 
&gt; Please update the description.

done

&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:98
&gt; &gt; +    void reportObjectInfo(MemoryInstrumentation::ObjectType objectType, size_t objectSize)
&gt; 
&gt; You can make this method a template: 
&gt; template&lt;typename T&gt;
&gt; void reportObjectInfo(MemoryInstrumentation::ObjectType objectType, T* object)
&gt; {
&gt; ...
&gt;     m_objectSize = sizeof(*object);
&gt; 
&gt; this way you wouldn&apos;t need to call sizeof() everywhere

done


&gt; 
&gt; &gt; Source/WebCore/dom/MemoryInstrumentation.h:120
&gt; &gt; +    MemoryObjectInfo aggregator(this);
&gt; 
&gt; aggregator -&gt; info

done


&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:429
&gt; &gt; +    DOMTreesIterator(Page* page) : m_page(page) { }
&gt; 
&gt; missing explicit

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655432</commentid>
    <comment_count>45</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-22 07:08:22 -0700</bug_when>
    <thetext>Committed r121022: &lt;http://trac.webkit.org/changeset/121022&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148556</attachid>
            <date>2012-06-20 07:05:22 -0700</date>
            <delta_ts>2012-06-20 07:25:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89568-20120620180521.patch</filename>
            <type>text/plain</type>
            <size>27205</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiMWNkZDBjMWMyMjk3
YWM1ZDFjMWFlMDc5NDYyMjU1YjkzNGIxZS4uNTRkMmZhZGEzOWIxMWYwN2VmZDE1ZWQyNTY2M2Uz
YjQzMjcwOTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA2LTIwICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRo
YXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1l
bW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisgICAgICAg
IEFjdHVhbGx5IHN1Y2ggZGV0ZWN0aW9uIGhhcHBlbnMgd2l0aCBoZWxwIG9mIE9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3IgdHlwZWRlZi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3Jp
cHRXcmFwcGFibGUuaDoKKyAgICAgICAgKFNjcmlwdFdyYXBwYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlV
c2FnZSk6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJpYnV0
ZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2Up
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5v
ZGUpOgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChRdWFsaWZpZWRO
YW1lSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1l
SW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoUXVhbGlmaWVkTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKE1lbW9yeUJs
b2NrTmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1lbW9y
eUJsb2NrRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbVRyZWVJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6Om1lbW9yeUNhY2hlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1v
cnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0U2l6ZSk6
CisgICAgICAgIChPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdncmVnYXRvcjo6T2Jq
ZWN0TWVtb3J5QWdncmVnYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJ
bnN0cnVtZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I6OnJlcG9ydE1lbWJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdE1l
bW9yeUFnZ3JlZ2F0b3I6OnJlcG9ydE1lbWJlclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I6
OnJlcG9ydFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0U2l6ZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTdHJ1Y3R1
cmVJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChUcmVl
U2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJlcG9ydE1lbW9yeVVzYWdl
KToKKwogMjAxMi0wNi0yMCAgWmVldiBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSByZWR1bmRhbnQgI2luY2x1ZGVzIGluIGNvbXBvc2l0
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjODk3NGQyZDY1MmRiZWE2NjgyNzBkYTNkZjhmNDNiZjg0
YTIyMmM0Li5iMWY3YWUwYzEzMWM0OGI1Zjk1YjhlMGZhZjkxMjQwMzdkNDUxMGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0yODE1LDYgKzI4MTUsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKaW5kZXggODUwOTk0YWJi
NzFmMmNlOGE0NmQ1ZGY3YjM1NmFlOGY3ODJjZmFhNi4uODUxZmQwYjZiYjQwMjQ1OWVkOWJmOGY1
NWI0NzYyNWNlZWMxN2Y1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0V3JhcHBhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
V3JhcHBhYmxlLmgKQEAgLTUyLDYgKzUyLDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJX
cmFwcGVyKCkgeyBtX3dyYXBwZXIgPSAwOyB9CiAKKyAgICB0eXBlZGVmIEluc3BlY3Rvck1lbW9y
eUluc3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdncmVnYXRvciBPYmplY3RNZW1vcnlBZ2dy
ZWdhdG9yOworICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dyZWdh
dG9yKiBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgb2JqZWN0
TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRp
b246OkRPTSk7CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlciht
X3dyYXBwZXIpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZh
dGU6CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4qIG1fd3JhcHBlcjsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA3NGNlMDc5YTQ3MzMxZjVlNDI3YjUx
ZmVlOWNmMGJjMzk0OTk3NTM4Li4zYTExMmFhYmM2NmYzMjE5ZTA5Nzk5NDQzZDVmMTJiOGFiYjhm
M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTI1LDYgKzI1LDcg
QEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvck1l
bW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTExNSw2ICsxMTYsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1N0eWxlKCk7CiAjZW5kaWYK
ICAgICAKKyAgICB0eXBlZGVmIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0
TWVtb3J5QWdncmVnYXRvciBPYmplY3RNZW1vcnlBZ2dyZWdhdG9yOworICAgIHNpemVfdCByZXBv
cnRNZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RNZW1vcnlBZ2dyZWdh
dG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0
VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgICAgIGlmICht
X2lzTXV0YWJsZSkKKyAgICAgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1l
bWJlcihtX211dGFibGVQcm9wZXJ0eVZlY3Rvcik7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRo
aXMpOworICAgIH0KIHByaXZhdGU6CiAgICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2Rl
KTsKICAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1
bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2VyTW9kZSwgYm9vbCBtYWtlTXV0YWJsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCBiZThjNzhlNGQ1ZjEwNTY3ZDRlNTU5YmFiZmJmZTYw
ZjkxNmZmZTNjLi5kM2Y0OTY5Zjg0NTliOTI1YTkzOGFkZTBhYzg3MjJkNzMwMjNiM2IwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTk5LDYgKzk5LDE2IEBAIHB1YmxpYzoKICAg
ICBOb2RlKiB0cmF2ZXJzZU5leHROb2RlKCkgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VOZXh0
Tm9kZShjb25zdCBOb2RlKiBzdGF5V2l0aGluKSBjb25zdDsKIAorICAgIHR5cGVkZWYgSW5zcGVj
dG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1l
bW9yeUFnZ3JlZ2F0b3I7CisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoT2Jq
ZWN0TWVtb3J5QWdncmVnYXRvciogb2JqZWN0TWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7
CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFR5cGUoSW5zcGVjdG9yTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBOb2RlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRv
ci0+cmVwb3J0TWVtYmVyKG1fZmlyc3RDaGlsZCk7CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3Jl
Z2F0b3ItPnJlcG9ydE1lbWJlcihtX2xhc3RDaGlsZCk7CisgICAgICAgIHJldHVybiBzaXplb2Yo
KnRoaXMpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIENvbnRhaW5lck5vZGUoRG9jdW1lbnQq
LCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggZGUzZjBjNWFmMTRlMDUwNmU2MTE1YzlmZGQ2OTg4NjVhOWIzMDgzYi4uNDU2MzBmY2Zi
OGUxNWNhY2Q4YzkzOGNhZTE1ODFlYTVkZmM5NjZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00
MjEsNiArNDIxLDE2IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNhdmVkTGF5ZXJTY3JvbGxPZmZz
ZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoY29uc3QgSW50
U2l6ZSYpOwogCisgICAgdHlwZWRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9i
amVjdE1lbW9yeUFnZ3JlZ2F0b3IgT2JqZWN0TWVtb3J5QWdncmVnYXRvcjsKKyAgICB2aXJ0dWFs
IHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RN
ZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVn
YXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Cisg
ICAgICAgIENvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG9iamVjdE1lbW9yeUFnZ3Jl
Z2F0b3IpOworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1
Y3R1cmUobV90YWdOYW1lKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0
TWVtYmVyKG1fYXR0cmlidXRlRGF0YSk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOwor
ICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgICAg
IDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXggOGIxYjMxOGZlOTlkZTRiMjFlOGZkZjYxNmJlYTBlNTli
ZDJlZmYzNS4uOGQxMTM4MTM5ODQ0YTM2YzJiZmYzMDM0OTU2ZmIzOTU3Mjk3MGY0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgRWxlbWVudEF0dHJpYnV0ZURhdGFfaAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
U3BhY2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKICNpbmNs
dWRlIDx3dGYvTm90Rm91bmQuaD4KQEAgLTk5LDYgKzEwMCwxOCBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxBdHRyPiBhdHRySWZFeGlzdHMoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICBQYXNzUmVmUHRyPEF0dHI+IGVuc3VyZUF0dHIoRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKIAorICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgc2l6
ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9y
LT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAg
ICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1faW5saW5lU3R5bGVEZWNs
KTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fYXR0cmli
dXRlU3R5bGUpOworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJT
dHJ1Y3R1cmUobV9jbGFzc05hbWVzKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+
cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1faWRGb3JTdHlsZVJlc29sdXRpb24pOworICAgICAgICBv
YmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9hdHRyaWJ1dGVz
KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBFbGVtZW50OwogICAgIGZyaWVuZCBjbGFzcyBIVE1MQ29uc3RydWN0aW9u
U2l0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmMzVkYzViOTkwMzhiYTAzNDQ4YmM0NmE4YTgwMDQ1
YmViYzZjYzE2Li5hOGNlYmFiMjhlOTIxOTU3NzUwMWNhMzNiMjk3YTY5NWYwNTNiOTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCkBAIC0yOTMyLDYgKzI5MzIsMTcgQEAgdm9pZCBOb2RlOjpyZW1vdmVkTGFz
dFJlZigpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK3NpemVfdCBOb2RlOjpyZXBvcnRNZW1vcnlV
c2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKSBjb25z
dAoreworICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFR5cGUoSW5zcGVjdG9yTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVy
Tm9kZT46OnJlcG9ydE1lbW9yeVVzYWdlKG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IpOworICAgIFNj
cmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2Uob2JqZWN0TWVtb3J5QWdncmVnYXRvcik7
CisgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fZG9jdW1lbnQpOwor
ICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlcihtX25leHQpOworICAgIG9i
amVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlcihtX3ByZXZpb3VzKTsKKyAgICByZXR1
cm4gc2l6ZW9mKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVm
IE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMjY1OTEyZDAxODdhNzBlODQxZjU0ZTcwNmM1MDcwNWRj
MGY2NzQ4NS4uYmZiNTVlY2EwM2U2M2QxNzY3MzAxNmVhYmM4ZDdkZjBiNDg5MzYxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJFZGl0aW5nQm91bmRhcnkuaCIK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlw
ZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgpAQCAtNjU2LDYgKzY1Nyw5
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKCkgY29uc3Q7CiAg
ICAgc2l6ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oKSBjb25zdDsKIAorICAg
IHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dy
ZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0
TWVtb3J5VXNhZ2UoT2JqZWN0TWVtb3J5QWdncmVnYXRvciopIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIGVudW0gTm9kZUZsYWdzIHsKICAgICAgICAgSXNUZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1F1YWxpZmllZE5hbWUuaAppbmRleCA2MzZiMmE1MTUwYzllOTg3YzAyN2U3NTY5NzkyZDliYWMz
NGE4OWU5Li43YWQyOGU5NWVhYTAwOTI2ODEwY2QwYmE2M2Q4MWNhZjM5NzBmZTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTIxLDYgKzIxLDggQEAKICNpZm5kZWYgUXVhbGlm
aWVkTmFtZV9oCiAjZGVmaW5lIFF1YWxpZmllZE5hbWVfaAogCisjaW5jbHVkZSAiSW5zcGVjdG9y
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CkBAIC00OCw2ICs1MCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyBtX25hbWVzcGFjZTsKICAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJpbmcgbV9sb2NhbE5h
bWVVcHBlcjsKIAorICAgICAgICB0eXBlZGVmIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlv
bjo6T2JqZWN0TWVtb3J5QWdncmVnYXRvciBPYmplY3RNZW1vcnlBZ2dyZWdhdG9yOworICAgICAg
ICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoT2JqZWN0TWVtb3J5QWdncmVnYXRvciogb2JqZWN0
TWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgb2JqZWN0TWVt
b3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246
OkRPTSk7CisgICAgICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJT
dHJ1Y3R1cmUobV9wcmVmaXgpOworICAgICAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+
cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIG9iamVjdE1l
bW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX25hbWVzcGFjZSk7CisgICAg
ICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9s
b2NhbE5hbWVVcHBlcik7CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICAg
ICAgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCiAgICAgICAgICAgICA6IG1fcHJlZml4KHByZWZpeCkK
QEAgLTkyLDYgKzEwNCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gSW5pdCByb3V0aW5lIGZvciBnbG9i
YWxzCiAgICAgc3RhdGljIHZvaWQgaW5pdCgpOwogICAgIAorICAgIHR5cGVkZWYgSW5zcGVjdG9y
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3I7CisgICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFn
Z3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBv
YmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1l
bnRhdGlvbjo6RE9NKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVt
YmVyKG1faW1wbCk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KIHByaXZh
dGU6CiAgICAgdm9pZCBpbml0KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwog
ICAgIHZvaWQgcmVmKCkgY29uc3QgeyBtX2ltcGwtPnJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA3NTJmNzI4NTdk
YjljMTA2NmQ0MWU0MTE5MTkxYTBlMWNlYjY5ZWM4Li4zNTA0YTcxN2FlOTQ4NzFhYWQ1YTQ4YTY0
ZTNlNTZlYTdjMGRjMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJFdmVudExp
c3RlbmVyTWFwLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgpAQCAtNzcsNiArNzgsMTEgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgY2FjaGVkWHNsU3R5bGVTaGVldHNbXSA9ICJDYWNoZWRYc2xTdHlsZVNoZWV0
cyI7CiBzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRGb250c1tdID0gIkNhY2hlZEZvbnRzIjsKIHN0
YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVVc2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3Rh
dGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZUFsbG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0
ZWQiOworCitzdGF0aWMgY29uc3QgY2hhciBkb21bXSA9ICJET00iOworc3RhdGljIGNvbnN0IGNo
YXIgZG9tVHJlZVVua25vd25bXSA9ICJET01UcmVlVW5rbm93biI7CitzdGF0aWMgY29uc3QgY2hh
ciBkb21UcmVlRE9NW10gPSAiRE9NVHJlZURPTSI7CitzdGF0aWMgY29uc3QgY2hhciBkb21UcmVl
Q1NTW10gPSAiRE9NVHJlZUNTUyI7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC0xNzcsMTAgKzE4Myw2
IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbGxlY3RMaXN0ZW5lcnNJbmZvKG5vZGUpOwogICAgIH0K
IAotICAgIHZvaWQgY29sbGVjdENoYXJhY3RlckRhdGEoTm9kZSopCi0gICAgewotICAgIH0KLQog
ICAgIHZvaWQgY29sbGVjdE5vZGVOYW1lSW5mbyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAg
U3RyaW5nIG5hbWUgPSBub2RlTmFtZShub2RlKTsKQEAgLTM3MiwxMyArMzc0LDEwMSBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVuZGVyVHJlZUluZm8oUGFnZSog
cGFnZSkKICAgICByZXR1cm4gcmVuZGVyVHJlZUFsbG9jYXRlZC5yZWxlYXNlKCk7CiB9CiAKLXN0
YXRpYyB2b2lkIGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz4qIGFycmF5LCBjb25zdCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYyYgc3Rh
dGlzdGljLCBjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIHZvaWQgYWRkTWVtb3J5QmxvY2tGb3Io
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXksIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gcmVzdWx0ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUobmFtZSk7
Ci0gICAgcmVzdWx0LT5zZXRTaXplKHN0YXRpc3RpYy5zaXplKTsKKyAgICByZXN1bHQtPnNldFNp
emUoc2l6ZSk7CiAgICAgYXJyYXktPmFkZEl0ZW0ocmVzdWx0KTsKIH0KIAorbmFtZXNwYWNlIHsK
KworY2xhc3MgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCA6IHB1YmxpYyBJbnNw
ZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24geworcHVibGljOgorICAgIEluc3BlY3Rvck1lbW9y
eUluc3RydW1lbnRhdGlvbkltcGwoKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBMYXN0VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAgICBtX3RvdGFsU2l6ZXNbaV0gPSAwOwor
ICAgIH0KKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBTdGF0aXN0
aWNzKCkKKyAgICB7CisgICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOworICAgICAgICBmb3Ig
KGludCBpID0gVW5rbm93bjsgaSA8IExhc3RUeXBlRW50cnk7ICsraSkKKyAgICAgICAgICAgIHRv
dGFsU2l6ZSArPSBtX3RvdGFsU2l6ZXNbaV07CisKKyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBkb21DaGlsZHJlbiA9IFR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOworICAgICAgICBhZGRNZW1v
cnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW1Vua25vd25dLCBNZW1v
cnlCbG9ja05hbWU6OmRvbVRyZWVVbmtub3duKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3Io
ZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tET01dLCBNZW1vcnlCbG9ja05hbWU6OmRv
bVRyZWVET00pOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwg
bV90b3RhbFNpemVzW0NTU10sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUNTUyk7CisKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb20gPSBJbnNwZWN0b3JNZW1vcnlCbG9j
azo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05hbWU6OmRvbSk7CisgICAgICAgIGRvbS0+
c2V0U2l6ZSh0b3RhbFNpemUpOworICAgICAgICBkb20tPnNldENoaWxkcmVuKGRvbUNoaWxkcmVu
LnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiBkb20ucmVsZWFzZSgpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKE9iamVjdFR5cGUgb2JqZWN0
VHlwZSwgc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBBU1NFUlQob2JqZWN0VHlwZSA+PSAw
ICYmIG9iamVjdFR5cGUgPCBMYXN0VHlwZUVudHJ5KTsKKyAgICAgICAgbV90b3RhbFNpemVzW29i
amVjdFR5cGVdICs9IHNpemU7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29u
c3Qgdm9pZCogb2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3Zpc2l0ZWRPYmplY3Rz
LmFkZChvYmplY3QpLmlzTmV3RW50cnk7CisgICAgfQorICAgIHNpemVfdCBtX3RvdGFsU2l6ZXNb
TGFzdFR5cGVFbnRyeV07CisgICAgdHlwZWRlZiBIYXNoU2V0PGNvbnN0IHZvaWQqPiBWaXNpdGVk
T2JqZWN0czsKKyAgICBWaXNpdGVkT2JqZWN0cyBtX3Zpc2l0ZWRPYmplY3RzOworfTsKKworY2xh
c3MgRE9NVHJlZXNJdGVyYXRvciA6IHB1YmxpYyBET01XcmFwcGVyVmlzaXRvciB7CitwdWJsaWM6
CisgICAgRE9NVHJlZXNJdGVyYXRvcihQYWdlKiBwYWdlKSA6IG1fcGFnZShwYWdlKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdE5vZGUoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlm
IChub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIG1fcGFnZSAhPSBub2RlLT5kb2N1bWVudCgp
LT5mcmFtZSgpLT5wYWdlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTm9kZSog
cm9vdE5vZGUgPSBub2RlOworICAgICAgICB3aGlsZSAocm9vdE5vZGUtPnBhcmVudE5vZGUoKSkK
KyAgICAgICAgICAgIHJvb3ROb2RlID0gcm9vdE5vZGUtPnBhcmVudE5vZGUoKTsKKworICAgICAg
ICBpZiAobV9yb290cy5jb250YWlucyhyb290Tm9kZSkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fcm9vdHMuYWRkKHJvb3ROb2RlKTsKKyAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5y
ZXBvcnRTaXplKHJvb3ROb2RlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0V4
dGVybmFsU3RyaW5nKFN0cmluZ0ltcGwqIHN0cmluZykgeyB9CisKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2NrPiBkdW1wU3RhdGlzdGljcygpIHsgcmV0dXJuIG1fZG9tTWVtb3J5
VXNhZ2UuZHVtcFN0YXRpc3RpY3MoKTsgfQorCitwcml2YXRlOgorICAgIEhhc2hTZXQ8Tm9kZSo+
IG1fcm9vdHM7CisgICAgUGFnZSogbV9wYWdlOworICAgIEluc3BlY3Rvck1lbW9yeUluc3RydW1l
bnRhdGlvbkltcGwgbV9kb21NZW1vcnlVc2FnZTsKK307CisKK30KKworc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UpCit7CisgICAg
RE9NVHJlZXNJdGVyYXRvciBkb21UcmVlc0l0ZXJhdG9yKHBhZ2UpOworICAgIFNjcmlwdFByb2Zp
bGVyOjp2aXNpdEpTRE9NV3JhcHBlcnMoJmRvbVRyZWVzSXRlcmF0b3IpOworCisgICAgLy8gTWFr
ZSBzdXJlIGFsbCBkb2N1bWVudHMgcmVhY2hhYmxlIGZyb20gdGhlIG1haW4gZnJhbWUgYXJlIGFj
Y291bnRlZC4KKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAo
RG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZG9tVHJlZXNJ
dGVyYXRvci52aXNpdE5vZGUoZG9jKTsKKyAgICB9CisKKyAgICByZXR1cm4gZG9tVHJlZXNJdGVy
YXRvci5kdW1wU3RhdGlzdGljcygpOworfQorCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz4gbWVtb3J5Q2FjaGVJbmZvKCkKIHsKICAgICBNZW1vcnlDYWNoZTo6U3RhdGlz
dGljcyBzdGF0cyA9IG1lbW9yeUNhY2hlKCktPmdldFN0YXRpc3RpY3MoKTsKQEAgLTM5MSwxMiAr
NDgxLDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBtZW1vcnlD
YWNoZUluZm8oKQogICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldFNpemUodG90YWxTaXplKTsKIAog
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hp
bGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUo
KTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuaW1hZ2VzLCBN
ZW1vcnlCbG9ja05hbWU6OmNhY2hlZEltYWdlcyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hp
bGRyZW4uZ2V0KCksIHN0YXRzLmNzc1N0eWxlU2hlZXRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hl
ZENzc1N0eWxlU2hlZXRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwg
c3RhdHMuc2NyaXB0cywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRTY3JpcHRzKTsKLSAgICBhZGRN
ZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMueHNsU3R5bGVTaGVldHMsIE1lbW9y
eUJsb2NrTmFtZTo6Y2FjaGVkWHNsU3R5bGVTaGVldHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9y
KGNoaWxkcmVuLmdldCgpLCBzdGF0cy5mb250cywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRGb250
cyk7Ci0gICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAgIGFk
ZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFnZXMuc2l6ZSwgTWVtb3J5
QmxvY2tOYW1lOjpjYWNoZWRJbWFnZXMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVu
LmdldCgpLCBzdGF0cy5jc3NTdHlsZVNoZWV0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hl
ZENzc1N0eWxlU2hlZXRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwg
c3RhdHMuc2NyaXB0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFNjcmlwdHMpOworICAg
IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy54c2xTdHlsZVNoZWV0cy5z
aXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRzKTsKKyAgICBhZGRNZW1v
cnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMuc2l6ZSwgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRGb250cyk7CisgICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0Q2hpbGRyZW4oY2hp
bGRyZW4uZ2V0KCkpOwogICAgIHJldHVybiBtZW1vcnlDYWNoZVN0YXRzLnJlbGVhc2UoKTsKIH0K
IApAQCAtNDEzLDYgKzUwMyw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nl
c3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zCiAgICAgY2hpbGRy
ZW4tPmFkZEl0ZW0oaW5zcGVjdG9yRGF0YSgpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShtZW1v
cnlDYWNoZUluZm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8obV9w
YWdlKSk7IC8vIFRPRE86IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KKyAgICBjaGlsZHJlbi0+YWRk
SXRlbShkb21UcmVlSW5mbyhtX3BhZ2UpKTsgLy8gVE9ETzogY29sbGVjdCBmb3IgYWxsIHBhZ2Vz
PwogICAgIHByb2Nlc3NNZW1vcnktPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1l
bnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYWEwYjMxMTUwNDcwZjNkNGI0MGJhNDU5NGQwNDBjMzhl
ZTQzZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbl9oCisjZGVmaW5lIEluc3BlY3Rvck1lbW9yeUluc3Ry
dW1lbnRhdGlvbl9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24geworcHVibGljOgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0U2l6ZShjb25zdCBUKiBjb25zdCBv
YmplY3QpCisgICAgeworICAgICAgICBpZiAoIW9iamVjdCB8fCB2aXNpdGVkKG9iamVjdCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IgYWdncmVh
Z3Rvcih0aGlzKTsKKyAgICAgICAgcmVwb3J0U2l6ZUltcGwob2JqZWN0LCAgJmFnZ3JlYWd0b3Ip
OworICAgIH0KKworICAgIGVudW0gT2JqZWN0VHlwZSB7CisgICAgICAgIFVua25vd24gPSAwLAor
ICAgICAgICBET00gPSAxLAorICAgICAgICBDU1MgPSAyLAorICAgICAgICBMYXN0VHlwZUVudHJ5
ID0gMworICAgIH07CisKKyAgICBjbGFzcyBPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IoSW5zcGVjdG9yTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiBpbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgICAgICAg
ICA6IG1faW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uKGluc3BlY3Rvck1lbW9yeUluc3Ry
dW1lbnRhdGlvbikKKyAgICAgICAgICAgICwgbV90eXBlKFVua25vd24pCisgICAgICAgIHsgfQor
CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgICAgICBzaXplX3QgcmVwb3J0TWVt
YmVyKGNvbnN0IFAqIGNvbnN0IG1lbWJlclBvaW50ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1faW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRTaXplKG1lbWJlclBvaW50
ZXIpOworICAgICAgICAgICAgcmV0dXJuIHNpemVvZihQKTsKKyAgICAgICAgfQorCisgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgICAgICBzaXplX3QgcmVwb3J0TWVtYmVyKGNvbnN0
IE93blB0cjxQPiYgbWVtYmVyUG9pbnRlcikKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbnNw
ZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydFNpemUobWVtYmVyUG9pbnRlci5nZXQo
KSk7CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKE93blB0cjxQPik7CisgICAgICAgIH0KKwor
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgICAgICAgc2l6ZV90IHJlcG9ydE1lbWJl
cihjb25zdCBSZWZQdHI8UD4mIG1lbWJlclBvaW50ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1faW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRTaXplKG1lbWJlclBvaW50
ZXIuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIHNpemVvZihSZWZQdHI8UD4pOworICAgICAg
ICB9CisKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE8+CisgICAgICAgIHNpemVfdCByZXBv
cnRNZW1iZXJTdHJ1Y3R1cmUoY29uc3QgTyYgbWVtYmVyT2JqZWN0KQorICAgICAgICB7CisgICAg
ICAgICAgICBtX2luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U3RydWN0dXJl
SW1wbChtZW1iZXJPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIHJlcG9ydFR5cGUoT2JqZWN0VHlwZSB0eXBlKSB7IG1fdHlwZSA9IG1fdHlw
ZSA9PSBVbmtub3duID8gdHlwZSA6IG1fdHlwZTsgfQorICAgICAgICBPYmplY3RUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9pbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRp
b247CisgICAgICAgIE9iamVjdFR5cGUgbV90eXBlOworICAgIH07CisKK3ByaXZhdGU6CisgICAg
Ly8gSW1wbGVtZW50YXRpb24gZm9yIGluc3RydW1lbnRlZCBjbGFzc2VzLgorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0U2l6ZUltcGwoY29uc3QgVCogY29uc3Qgb2Jq
ZWN0LCB0eXBlbmFtZSBUOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBhZ2dyZWdhdG9yKQorICAg
IHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBvYmplY3QtPnJlcG9ydE1lbW9yeVVzYWdlKGFnZ3Jl
Z2F0b3IpOworICAgICAgICBjb3VudE9iamVjdFNpemUoYWdncmVnYXRvci0+dHlwZSgpLCBzaXpl
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlcG9ydFN0
cnVjdHVyZUltcGwoY29uc3QgVCYgb2JqZWN0LCB0eXBlbmFtZSBUOjpPYmplY3RNZW1vcnlBZ2dy
ZWdhdG9yKiBhZ2dyZWdhdG9yKQorICAgIHsKKyAgICAgICAgb2JqZWN0LnJlcG9ydE1lbW9yeVVz
YWdlKGFnZ3JlZ2F0b3IpOworICAgIH0KKworICAgIC8vIEltcGxlbWVudGF0aW9uIGZvciBfTk9U
XyBpbnN0cnVtZW50ZWQgY2xhc3Nlcy4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2
b2lkIHJlcG9ydFNpemVJbXBsKGNvbnN0IFQqIGNvbnN0IG9iamVjdCwgLi4uKQorICAgIHsKKyAg
ICAgICAgY291bnRPYmplY3RTaXplKFVua25vd24sIHNpemVvZihUKSk7CisgICAgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZXBvcnRTdHJ1Y3R1cmVJbXBsKGNvbnN0
IFQmIG9iamVjdCwgLi4uKQorICAgIHsKKyAgICAgICAgLy8gV2UgY2FuJ3QgY2FsbCByZXBvcnRN
ZW1vcnlVc2FnZSBiZWNhdXNlIG9iamVjdCdzIGNsYXNzIGlzbid0IGluc3RydW1lbnRlZCB5ZXQu
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShPYmplY3RUeXBlLCBz
aXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgPSAwOwor
fTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhRU5BQkxFKElOU1BF
Q1RPUikKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25f
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRleCAyZWJkYjFkMWM1OTc4ZDFm
MGM3ZWYzMmZkY2I0ZGMzNjBmZmM1MmY0Li5lOTQ4ZDU3YTljMjllM2ZkMDg3YjA5MjJjYjlkZTRh
YzU5ZDE0Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCkBAIC0xMTEsNiAr
MTExLDE0IEBAIHB1YmxpYzoKICAgICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uOwog
I2VuZGlmCiAKKyAgICB0eXBlZGVmIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2Jq
ZWN0TWVtb3J5QWdncmVnYXRvciBPYmplY3RNZW1vcnlBZ2dyZWdhdG9yOworICAgIHNpemVfdCBy
ZXBvcnRNZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RNZW1vcnlBZ2dy
ZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVw
b3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIG9i
amVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlcihtX3BhcmVudCk7CisgICAgICAgIHJl
dHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KKwogcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAg
ICAgZnJpZW5kIHZvaWQgYWRvcHRlZDw+KFRyZWVTaGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVU
eXBlPiopOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCBlZmI1ODdiYWEzMWM2MWFjNzBhMmRjZTgxZmQ4ODdh
NDhlMGVkZGI5Li5iYzBmYjhlYWY2NDI5NTQyZmIxM2UxOTIxNThmODA4ZTA1YjJkOTBlIDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA2LTIwICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXJ0aWFs
bHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAgICBUaGlzIHBhdGNo
IGFkZHMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRzIGFs
bCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdlIGlm
IHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisgICAgICAgIEFjdHVhbGx5IHN1
Y2ggZGV0ZWN0aW9uIGhhcHBlbnMgd2l0aCBoZWxwIG9mIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3Ig
dHlwZWRlZi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWw6CisKIDIwMTItMDYtMTgg
IElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IG5hdGl2ZSBtZW1vcnkgc25hcHNob3QgcGVyZm9ybWFuY2UgYW5kIGNvdmVyYWdl
IHRlc3QgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3Bl
Y3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3Bl
Y3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwKaW5kZXggMmFlMDViYTU3Zjc1YjRlZjNh
ODg2N2I4N2UzM2Q0NTBhMTA0ZDI1OS4uMzg2NTNhNzQyMjQ5NzJlNDA5YmVjYzFlM2ZiMDQ0N2U3
OWFhNTJjMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmF0aXZlLW1l
bW9yeS1zbmFwc2hvdC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2
ZS1tZW1vcnktc25hcHNob3QuaHRtbApAQCAtMSw1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgor
ICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIHNwYW4geworICAgICAgY29sb3I6cmVkOwor
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAyMHB4OworICAgIH0KKyAgICBkaXYg
eworICAgICAgY29sb3I6Ymx1ZTsKKyAgICAgIHdpZHRoOiA1MHB4OworICAgICAgaGVpZ2h0OiAx
MHB4OworICAgIH0KKyAgPC9zdHlsZT4KICAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KICAgPHNj
cmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KQEAgLTM5
LDggKzUxLDEyIEBAIGZ1bmN0aW9uIGNyZWF0ZURPTVRyZWUoZWxlbWVudHNDb3VudCkKIHsKICAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJlZVJvb3QiKTsKIAot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHNDb3VudDsgKytpKQotICAgICAgICByb290
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyArK2kpIHsKKyAgICAgICAgdmFyIHNwYW4gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHNwYW4uaWQgPSAic3Bhbl8i
ICsgaTsKKyAgICAgICAgc3Bhbi5zdHlsZS53aWR0aCA9ICIxMHB4IjsKKyAgICAgICAgcm9vdC5h
cHBlbmRDaGlsZChzcGFuKTsKKyAgICB9CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1l
bnRzQ291bnQ7ICsraSkKICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148561</attachid>
            <date>2012-06-20 07:25:12 -0700</date>
            <delta_ts>2012-06-20 08:20:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89568-20120620182511.patch</filename>
            <type>text/plain</type>
            <size>29065</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiMWNkZDBjMWMyMjk3
YWM1ZDFjMWFlMDc5NDYyMjU1YjkzNGIxZS4uNWQxMTYzNTU5NDY3OWNiYjMxNzhlZWFmNTAzNWRi
NDVlOGM5ZjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA2LTIwICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRo
YXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1l
bW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisgICAgICAg
IEFjdHVhbGx5IHN1Y2ggZGV0ZWN0aW9uIGhhcHBlbnMgd2l0aCBoZWxwIG9mIE9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3IgdHlwZWRlZi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnBy
aToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmg6Cisg
ICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBh
YmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQu
aDoKKyAgICAgICAgKFN0eWxlUHJvcGVydHlTZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0eVNldDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Db250YWluZXJO
b2RlLmg6CisgICAgICAgIChDb250YWluZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
RWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAg
IChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmli
dXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBk
b20vUXVhbGlmaWVkTmFtZS5oOgorICAgICAgICAoUXVhbGlmaWVkTmFtZUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw6OnJlcG9ydE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFF1YWxpZmllZE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UXVh
bGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9ja0Zvcik6CisgICAg
ICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjptZW1vcnlDYWNo
ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nl
c3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlJbnN0cnVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFNpemUpOgorICAgICAgICAoT2JqZWN0
TWVtb3J5QWdncmVnYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I6Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
YmplY3RNZW1vcnlBZ2dyZWdhdG9yOjpyZXBvcnRNZW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yOjpy
ZXBvcnRNZW1iZXJTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yOjpyZXBvcnRUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0TWVt
b3J5QWdncmVnYXRvcjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJ
bnN0cnVtZW50YXRpb246OnJlcG9ydFNpemVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0U3RydWN0dXJlSW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vVHJlZVNoYXJlZC5oOgorICAgICAgICAoVHJlZVNoYXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2hhcmVkOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisKIDIwMTItMDYtMjAg
IFplZXYgTGllYmVyICA8emxpZWJlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVt
XSBSZW1vdmUgcmVkdW5kYW50ICNpbmNsdWRlcyBpbiBjb21wb3NpdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCAyMDJmNWVhMzc4YTcwZTFiZjA4MDEzMjIyYWI2MjZhNDcxNmQy
ZmNhLi42MDI3OTc4Y2NjZGYyZmQ1YWM4OTE3YzI4NWFlZDQ2NWM5MmY1NTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI3MDksNiArMjcwOSw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBcCisJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
aW5kZXggZGQ5ZmRjMGIxNDI5M2VlYWQ3ZGExOGUyOGRkNjRlYmRkZjY3YWI5ZC4uYjgyMmU4Nzdj
YmE5MjQ5YjQwYzQ2MDQwMGU0OTMyZDljZjY1MWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMDY1LDYg
KzIwNjUsNyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5o
IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBcCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzg5NzRk
MmQ2NTJkYmVhNjY4MjcwZGEzZGY4ZjQzYmY4NGEyMjJjNC4uYjFmN2FlMGMxMzFjNDhiNWY5NWI4
ZTBmYWY5MTI0MDM3ZDQ1MTBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjgxNSw2ICsyODE1LDcg
QEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oJywKKyAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDYxOWU4MjlmNzk1NjE4OTVlZWNkZGYyNDMzODY2OTE0NGUyNDJk
NTMuLjI0NDExMTBlMWQxNGUxZmNhNzlhYzRlZGM2ODI5Y2JmMmZjYjc1ZTUgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mzk5MSw2ICs3Mzk5
MSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JQYWdlQWdlbnQuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKaW5kZXggODUwOTk0YWJiNzFm
MmNlOGE0NmQ1ZGY3YjM1NmFlOGY3ODJjZmFhNi4uODUxZmQwYjZiYjQwMjQ1OWVkOWJmOGY1NWI0
NzYyNWNlZWMxN2Y1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0V3JhcHBhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3Jh
cHBhYmxlLmgKQEAgLTUyLDYgKzUyLDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJXcmFw
cGVyKCkgeyBtX3dyYXBwZXIgPSAwOyB9CiAKKyAgICB0eXBlZGVmIEluc3BlY3Rvck1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdncmVnYXRvciBPYmplY3RNZW1vcnlBZ2dyZWdh
dG9yOworICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9y
KiBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgb2JqZWN0TWVt
b3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246
OkRPTSk7CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlcihtX3dy
YXBwZXIpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4qIG1fd3JhcHBlcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA3NGNlMDc5YTQ3MzMxZjVlNDI3YjUxZmVl
OWNmMGJjMzk0OTk3NTM4Li4zYTExMmFhYmM2NmYzMjE5ZTA5Nzk5NDQzZDVmMTJiOGFiYjhmM2Qx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTI1LDYgKzI1LDcgQEAK
ICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5Lmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEx
NSw2ICsxMTYsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1N0eWxlKCk7CiAjZW5kaWYKICAg
ICAKKyAgICB0eXBlZGVmIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0TWVt
b3J5QWdncmVnYXRvciBPYmplY3RNZW1vcnlBZ2dyZWdhdG9yOworICAgIHNpemVfdCByZXBvcnRN
ZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RNZW1vcnlBZ2dyZWdhdG9y
KSBjb25zdAorICAgIHsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlw
ZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgICAgIGlmIChtX2lz
TXV0YWJsZSkKKyAgICAgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJl
cihtX211dGFibGVQcm9wZXJ0eVZlY3Rvcik7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMp
OworICAgIH0KIHByaXZhdGU6CiAgICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2RlKTsK
ICAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNp
Z25lZCBjb3VudCwgQ1NTUGFyc2VyTW9kZSwgYm9vbCBtYWtlTXV0YWJsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuaAppbmRleCBiZThjNzhlNGQ1ZjEwNTY3ZDRlNTU5YmFiZmJmZTYwZjkx
NmZmZTNjLi5kM2Y0OTY5Zjg0NTliOTI1YTkzOGFkZTBhYzg3MjJkNzMwMjNiM2IwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTk5LDYgKzk5LDE2IEBAIHB1YmxpYzoKICAgICBO
b2RlKiB0cmF2ZXJzZU5leHROb2RlKCkgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9k
ZShjb25zdCBOb2RlKiBzdGF5V2l0aGluKSBjb25zdDsKIAorICAgIHR5cGVkZWYgSW5zcGVjdG9y
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3I7CisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoT2JqZWN0
TWVtb3J5QWdncmVnYXRvciogb2JqZWN0TWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFR5cGUoSW5zcGVjdG9yTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShv
YmplY3RNZW1vcnlBZ2dyZWdhdG9yKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+
cmVwb3J0TWVtYmVyKG1fZmlyc3RDaGlsZCk7CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0
b3ItPnJlcG9ydE1lbWJlcihtX2xhc3RDaGlsZCk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRo
aXMpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIENvbnRhaW5lck5vZGUoRG9jdW1lbnQqLCBD
b25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5k
ZXggZGUzZjBjNWFmMTRlMDUwNmU2MTE1YzlmZGQ2OTg4NjVhOWIzMDgzYi4uNDU2MzBmY2ZiOGUx
NWNhY2Q4YzkzOGNhZTE1ODFlYTVkZmM5NjZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00MjEs
NiArNDIxLDE2IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQo
KSBjb25zdDsKICAgICB2b2lkIHNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6
ZSYpOwogCisgICAgdHlwZWRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVj
dE1lbW9yeUFnZ3JlZ2F0b3IgT2JqZWN0TWVtb3J5QWdncmVnYXRvcjsKKyAgICB2aXJ0dWFsIHNp
emVfdCByZXBvcnRNZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RNZW1v
cnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRv
ci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAg
ICAgIENvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG9iamVjdE1lbW9yeUFnZ3JlZ2F0
b3IpOworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1
cmUobV90YWdOYW1lKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVt
YmVyKG1fYXR0cmlidXRlRGF0YSk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAg
IH0KKwogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDog
Q29udGFpbmVyTm9kZShkb2N1bWVudCwgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
dHRyaWJ1dGVEYXRhLmgKaW5kZXggOGIxYjMxOGZlOTlkZTRiMjFlOGZkZjYxNmJlYTBlNTliZDJl
ZmYzNS4uOGQxMTM4MTM5ODQ0YTM2YzJiZmYzMDM0OTU2ZmIzOTU3Mjk3MGY0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgRWxlbWVudEF0dHJpYnV0ZURhdGFfaAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU3Bh
Y2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKICNpbmNsdWRl
IDx3dGYvTm90Rm91bmQuaD4KQEAgLTk5LDYgKzEwMCwxOCBAQCBwdWJsaWM6CiAgICAgUGFzc1Jl
ZlB0cjxBdHRyPiBhdHRySWZFeGlzdHMoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICBQYXNzUmVmUHRyPEF0dHI+IGVuc3VyZUF0dHIoRWxlbWVudCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKIAorICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
YmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgc2l6ZV90
IHJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFn
Z3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5y
ZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAg
b2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1faW5saW5lU3R5bGVEZWNsKTsK
KyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fYXR0cmlidXRl
U3R5bGUpOworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1
Y3R1cmUobV9jbGFzc05hbWVzKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVw
b3J0TWVtYmVyU3RydWN0dXJlKG1faWRGb3JTdHlsZVJlc29sdXRpb24pOworICAgICAgICBvYmpl
Y3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9hdHRyaWJ1dGVzKTsK
KyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBFbGVtZW50OwogICAgIGZyaWVuZCBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmMzVkYzViOTkwMzhiYTAzNDQ4YmM0NmE4YTgwMDQ1YmVi
YzZjYzE2Li5hOGNlYmFiMjhlOTIxOTU3NzUwMWNhMzNiMjk3YTY5NWYwNTNiOTI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCkBAIC0yOTMyLDYgKzI5MzIsMTcgQEAgdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJl
ZigpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK3NpemVfdCBOb2RlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAor
eworICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFR5cGUoSW5zcGVjdG9yTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9k
ZT46OnJlcG9ydE1lbW9yeVVzYWdlKG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IpOworICAgIFNjcmlw
dFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2Uob2JqZWN0TWVtb3J5QWdncmVnYXRvcik7Cisg
ICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fZG9jdW1lbnQpOworICAg
IG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlcihtX25leHQpOworICAgIG9iamVj
dE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlcihtX3ByZXZpb3VzKTsKKyAgICByZXR1cm4g
c2l6ZW9mKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5E
RUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggMjY1OTEyZDAxODdhNzBlODQxZjU0ZTcwNmM1MDcwNWRjMGY2
NzQ4NS4uYmZiNTVlY2EwM2U2M2QxNzY3MzAxNmVhYmM4ZDdkZjBiNDg5MzYxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJFZGl0aW5nQm91bmRhcnkuaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgpAQCAtNjU2LDYgKzY1Nyw5IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKCkgY29uc3Q7CiAgICAg
c2l6ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oKSBjb25zdDsKIAorICAgIHR5
cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdh
dG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0TWVt
b3J5VXNhZ2UoT2JqZWN0TWVtb3J5QWdncmVnYXRvciopIGNvbnN0OworCiBwcml2YXRlOgogICAg
IGVudW0gTm9kZUZsYWdzIHsKICAgICAgICAgSXNUZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1
YWxpZmllZE5hbWUuaAppbmRleCA2MzZiMmE1MTUwYzllOTg3YzAyN2U3NTY5NzkyZDliYWMzNGE4
OWU5Li43YWQyOGU5NWVhYTAwOTI2ODEwY2QwYmE2M2Q4MWNhZjM5NzBmZTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTIxLDYgKzIxLDggQEAKICNpZm5kZWYgUXVhbGlmaWVk
TmFtZV9oCiAjZGVmaW5lIFF1YWxpZmllZE5hbWVfaAogCisjaW5jbHVkZSAiSW5zcGVjdG9yTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmgiCisKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CkBAIC00OCw2ICs1MCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyBtX25hbWVzcGFjZTsKICAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWVV
cHBlcjsKIAorICAgICAgICB0eXBlZGVmIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6
T2JqZWN0TWVtb3J5QWdncmVnYXRvciBPYmplY3RNZW1vcnlBZ2dyZWdhdG9yOworICAgICAgICBz
aXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoT2JqZWN0TWVtb3J5QWdncmVnYXRvciogb2JqZWN0TWVt
b3J5QWdncmVnYXRvcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgb2JqZWN0TWVtb3J5
QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkRP
TSk7CisgICAgICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1
Y3R1cmUobV9wcmVmaXgpOworICAgICAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVw
b3J0TWVtYmVyU3RydWN0dXJlKG1fbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIG9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX25hbWVzcGFjZSk7CisgICAgICAg
ICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9sb2Nh
bE5hbWVVcHBlcik7CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICAgICAg
fQogICAgIHByaXZhdGU6CiAgICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0
cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VVUkkpCiAgICAgICAgICAgICA6IG1fcHJlZml4KHByZWZpeCkKQEAg
LTkyLDYgKzEwNCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gSW5pdCByb3V0aW5lIGZvciBnbG9iYWxz
CiAgICAgc3RhdGljIHZvaWQgaW5pdCgpOwogICAgIAorICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFn
Z3JlZ2F0b3I7CisgICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3Jl
Z2F0b3IqIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmpl
Y3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRh
dGlvbjo6RE9NKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVy
KG1faW1wbCk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KIHByaXZhdGU6
CiAgICAgdm9pZCBpbml0KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAg
IHZvaWQgcmVmKCkgY29uc3QgeyBtX2ltcGwtPnJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA3NTJmNzI4NTdkYjlj
MTA2NmQ0MWU0MTE5MTkxYTBlMWNlYjY5ZWM4Li4yNzU5NjYwMTNkNTg2MDJhMmNjMWNiNDJmMGJl
NDdhNGUxMTE1YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJFdmVudExpc3Rl
bmVyTWFwLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5j
bHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgpAQCAtNzcsNiArNzgsMTEgQEAgc3RhdGljIGNv
bnN0IGNoYXIgY2FjaGVkWHNsU3R5bGVTaGVldHNbXSA9ICJDYWNoZWRYc2xTdHlsZVNoZWV0cyI7
CiBzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRGb250c1tdID0gIkNhY2hlZEZvbnRzIjsKIHN0YXRp
YyBjb25zdCBjaGFyIHJlbmRlclRyZWVVc2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3RhdGlj
IGNvbnN0IGNoYXIgcmVuZGVyVHJlZUFsbG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0ZWQi
OworCitzdGF0aWMgY29uc3QgY2hhciBkb21bXSA9ICJET00iOworc3RhdGljIGNvbnN0IGNoYXIg
ZG9tVHJlZU90aGVyW10gPSAiRE9NVHJlZU90aGVyIjsKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVRy
ZWVET01bXSA9ICJET01UcmVlRE9NIjsKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVDU1NbXSA9
ICJET01UcmVlQ1NTIjsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTE3NywxMCArMTgzLDYgQEAgcHJp
dmF0ZToKICAgICAgICAgY29sbGVjdExpc3RlbmVyc0luZm8obm9kZSk7CiAgICAgfQogCi0gICAg
dm9pZCBjb2xsZWN0Q2hhcmFjdGVyRGF0YShOb2RlKikKLSAgICB7Ci0gICAgfQotCiAgICAgdm9p
ZCBjb2xsZWN0Tm9kZU5hbWVJbmZvKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBTdHJpbmcg
bmFtZSA9IG5vZGVOYW1lKG5vZGUpOwpAQCAtMzcyLDEzICszNzQsMTAxIEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZW5kZXJUcmVlSW5mbyhQYWdlKiBwYWdlKQog
ICAgIHJldHVybiByZW5kZXJUcmVlQWxsb2NhdGVkLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIHZv
aWQgYWRkTWVtb3J5QmxvY2tGb3IoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJs
b2NrPiogYXJyYXksIGNvbnN0IE1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljJiBzdGF0aXN0aWMs
IGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgdm9pZCBhZGRNZW1vcnlCbG9ja0ZvcihUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBhcnJheSwgc2l6ZV90IHNpemUsIGNv
bnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZXN1
bHQgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShuYW1lKTsKLSAgICBy
ZXN1bHQtPnNldFNpemUoc3RhdGlzdGljLnNpemUpOworICAgIHJlc3VsdC0+c2V0U2l6ZShzaXpl
KTsKICAgICBhcnJheS0+YWRkSXRlbShyZXN1bHQpOwogfQogCituYW1lc3BhY2UgeworCitjbGFz
cyBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIDogcHVibGljIEluc3BlY3Rvck1l
bW9yeUluc3RydW1lbnRhdGlvbiB7CitwdWJsaWM6CisgICAgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbCgpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IExhc3RU
eXBlRW50cnk7ICsraSkKKyAgICAgICAgICAgIG1fdG90YWxTaXplc1tpXSA9IDA7CisgICAgfQor
CisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0YXRpc3RpY3MoKQor
ICAgIHsKKyAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CisgICAgICAgIGZvciAoaW50IGkg
PSBPdGhlcjsgaSA8IExhc3RUeXBlRW50cnk7ICsraSkKKyAgICAgICAgICAgIHRvdGFsU2l6ZSAr
PSBtX3RvdGFsU2l6ZXNbaV07CisKKyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBkb21DaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zv
cihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW090aGVyXSwgTWVtb3J5QmxvY2tOYW1l
Ojpkb21UcmVlT3RoZXIpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5n
ZXQoKSwgbV90b3RhbFNpemVzW0RPTV0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZURPTSk7Cisg
ICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNb
Q1NTXSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlQ1NTKTsKKworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yTWVtb3J5QmxvY2s+IGRvbSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5z
ZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6ZG9tKTsKKyAgICAgICAgZG9tLT5zZXRTaXplKHRvdGFs
U2l6ZSk7CisgICAgICAgIGRvbS0+c2V0Q2hpbGRyZW4oZG9tQ2hpbGRyZW4ucmVsZWFzZSgpKTsK
KyAgICAgICAgcmV0dXJuIGRvbS5yZWxlYXNlKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXplX3Qg
c2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChvYmplY3RUeXBlID49IDAgJiYgb2JqZWN0VHlw
ZSA8IExhc3RUeXBlRW50cnkpOworICAgICAgICBtX3RvdGFsU2l6ZXNbb2JqZWN0VHlwZV0gKz0g
c2l6ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKiBvYmpl
Y3QpCisgICAgeworICAgICAgICByZXR1cm4gIW1fdmlzaXRlZE9iamVjdHMuYWRkKG9iamVjdCku
aXNOZXdFbnRyeTsKKyAgICB9CisgICAgc2l6ZV90IG1fdG90YWxTaXplc1tMYXN0VHlwZUVudHJ5
XTsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8Y29uc3Qgdm9pZCo+IFZpc2l0ZWRPYmplY3RzOworICAg
IFZpc2l0ZWRPYmplY3RzIG1fdmlzaXRlZE9iamVjdHM7Cit9OworCitjbGFzcyBET01UcmVlc0l0
ZXJhdG9yIDogcHVibGljIERPTVdyYXBwZXJWaXNpdG9yIHsKK3B1YmxpYzoKKyAgICBET01UcmVl
c0l0ZXJhdG9yKFBhZ2UqIHBhZ2UpIDogbV9wYWdlKHBhZ2UpIHsgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0Tm9kZShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUtPmRvY3Vt
ZW50KCktPmZyYW1lKCkgJiYgbV9wYWdlICE9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPnBh
Z2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBOb2RlKiByb290Tm9kZSA9IG5v
ZGU7CisgICAgICAgIHdoaWxlIChyb290Tm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAg
cm9vdE5vZGUgPSByb290Tm9kZS0+cGFyZW50Tm9kZSgpOworCisgICAgICAgIGlmIChtX3Jvb3Rz
LmNvbnRhaW5zKHJvb3ROb2RlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9yb290
cy5hZGQocm9vdE5vZGUpOworICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLnJlcG9ydFNpemUocm9v
dE5vZGUpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmco
U3RyaW5nSW1wbCogc3RyaW5nKSB7IH0KKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+IGR1bXBTdGF0aXN0aWNzKCkgeyByZXR1cm4gbV9kb21NZW1vcnlVc2FnZS5kdW1wU3Rh
dGlzdGljcygpOyB9CisKK3ByaXZhdGU6CisgICAgSGFzaFNldDxOb2RlKj4gbV9yb290czsKKyAg
ICBQYWdlKiBtX3BhZ2U7CisgICAgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCBt
X2RvbU1lbW9yeVVzYWdlOworfTsKKworfQorCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz4gZG9tVHJlZUluZm8oUGFnZSogcGFnZSkKK3sKKyAgICBET01UcmVlc0l0ZXJh
dG9yIGRvbVRyZWVzSXRlcmF0b3IocGFnZSk7CisgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0SlNE
T01XcmFwcGVycygmZG9tVHJlZXNJdGVyYXRvcik7CisKKyAgICAvLyBNYWtlIHN1cmUgYWxsIGRv
Y3VtZW50cyByZWFjaGFibGUgZnJvbSB0aGUgbWFpbiBmcmFtZSBhcmUgYWNjb3VudGVkLgorICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChEb2N1bWVudCogZG9j
ID0gZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb21UcmVlc0l0ZXJhdG9yLnZpc2l0
Tm9kZShkb2MpOworICAgIH0KKworICAgIHJldHVybiBkb21UcmVlc0l0ZXJhdG9yLmR1bXBTdGF0
aXN0aWNzKCk7Cit9CisKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBt
ZW1vcnlDYWNoZUluZm8oKQogewogICAgIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIHN0YXRzID0g
bWVtb3J5Q2FjaGUoKS0+Z2V0U3RhdGlzdGljcygpOwpAQCAtMzkxLDEyICs0ODEsMTIgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygpCiAg
ICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0U2l6ZSh0b3RhbFNpemUpOwogCiAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwotICAgIGFkZE1l
bW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFnZXMsIE1lbW9yeUJsb2NrTmFt
ZTo6Y2FjaGVkSW1hZ2VzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwg
c3RhdHMuY3NzU3R5bGVTaGVldHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3NzU3R5bGVTaGVl
dHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5zY3JpcHRz
LCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFNjcmlwdHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9y
KGNoaWxkcmVuLmdldCgpLCBzdGF0cy54c2xTdHlsZVNoZWV0cywgTWVtb3J5QmxvY2tOYW1lOjpj
YWNoZWRYc2xTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0
KCksIHN0YXRzLmZvbnRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZEZvbnRzKTsKLSAgICBtZW1v
cnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgYWRkTWVtb3J5QmxvY2tG
b3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmltYWdlcy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNh
Y2hlZEltYWdlcyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRz
LmNzc1N0eWxlU2hlZXRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3NzU3R5bGVTaGVl
dHMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5zY3JpcHRz
LnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkU2NyaXB0cyk7CisgICAgYWRkTWVtb3J5Qmxv
Y2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhzbFN0eWxlU2hlZXRzLnNpemUsIE1lbW9yeUJs
b2NrTmFtZTo6Y2FjaGVkWHNsU3R5bGVTaGVldHMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNo
aWxkcmVuLmdldCgpLCBzdGF0cy5mb250cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZEZv
bnRzKTsKKyAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5nZXQoKSk7
CiAgICAgcmV0dXJuIG1lbW9yeUNhY2hlU3RhdHMucmVsZWFzZSgpOwogfQogCkBAIC00MTMsNiAr
NTAzLDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3Ry
aWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAgICBjaGlsZHJlbi0+YWRkSXRlbShp
bnNwZWN0b3JEYXRhKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKG1lbW9yeUNhY2hlSW5mbygp
KTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShyZW5kZXJUcmVlSW5mbyhtX3BhZ2UpKTsgLy8gVE9E
TzogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPworICAgIGNoaWxkcmVuLT5hZGRJdGVtKGRvbVRyZWVJ
bmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgcHJvY2Vz
c01lbW9yeS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTk3ZDE1YWRlNDljMTc2ODRiODQzZmNmNGJjYzdhNWRjNGVhNWEwNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlJbnN0
cnVtZW50YXRpb24uaApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yTWVtb3J5SW5z
dHJ1bWVudGF0aW9uX2gKKyNkZWZpbmUgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gK
KworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbiB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCByZXBvcnRTaXplKGNvbnN0IFQqIGNvbnN0IG9iamVjdCkKKyAgICB7
CisgICAgICAgIGlmICghb2JqZWN0IHx8IHZpc2l0ZWQob2JqZWN0KSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgT2JqZWN0TWVtb3J5QWdncmVnYXRvciBhZ2dyZWFndG9yKHRoaXMpOwor
ICAgICAgICByZXBvcnRTaXplSW1wbChvYmplY3QsICAmYWdncmVhZ3Rvcik7CisgICAgfQorCisg
ICAgZW51bSBPYmplY3RUeXBlIHsKKyAgICAgICAgT3RoZXIgPSAwLAorICAgICAgICBET00gPSAx
LAorICAgICAgICBDU1MgPSAyLAorICAgICAgICBMYXN0VHlwZUVudHJ5ID0gMworICAgIH07CisK
KyAgICBjbGFzcyBPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IoSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBp
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgICAgICAgICA6IG1faW5zcGVjdG9y
TWVtb3J5SW5zdHJ1bWVudGF0aW9uKGluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbikKKyAg
ICAgICAgICAgICwgbV90eXBlKE90aGVyKQorICAgICAgICB7IH0KKworICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgUD4KKyAgICAgICAgc2l6ZV90IHJlcG9ydE1lbWJlcihjb25zdCBQKiBjb25z
dCBtZW1iZXJQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luc3BlY3Rvck1lbW9y
eUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U2l6ZShtZW1iZXJQb2ludGVyKTsKKyAgICAgICAgICAg
IHJldHVybiBzaXplb2YoUCk7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgUD4KKyAgICAgICAgc2l6ZV90IHJlcG9ydE1lbWJlcihjb25zdCBPd25QdHI8UD4mIG1lbWJl
clBvaW50ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5yZXBvcnRTaXplKG1lbWJlclBvaW50ZXIuZ2V0KCkpOworICAgICAgICAgICAg
cmV0dXJuIHNpemVvZihPd25QdHI8UD4pOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFA+CisgICAgICAgIHNpemVfdCByZXBvcnRNZW1iZXIoY29uc3QgUmVmUHRyPFA+
JiBtZW1iZXJQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luc3BlY3Rvck1lbW9y
eUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U2l6ZShtZW1iZXJQb2ludGVyLmdldCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBzaXplb2YoUmVmUHRyPFA+KTsKKyAgICAgICAgfQorCisgICAgICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBPPgorICAgICAgICBzaXplX3QgcmVwb3J0TWVtYmVyU3RydWN0dXJl
KGNvbnN0IE8mIG1lbWJlck9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbnNwZWN0
b3JNZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydFN0cnVjdHVyZUltcGwobWVtYmVyT2JqZWN0
KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCByZXBv
cnRUeXBlKE9iamVjdFR5cGUgdHlwZSkgeyBtX3R5cGUgPSBtX3R5cGUgPT0gT3RoZXIgPyB0eXBl
IDogbV90eXBlOyB9CisgICAgICAgIE9iamVjdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKiBtX2luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjsKKyAgICAgICAgT2JqZWN0
VHlwZSBtX3R5cGU7CisgICAgfTsKKworcHJpdmF0ZToKKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBm
b3IgaW5zdHJ1bWVudGVkIGNsYXNzZXMuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAg
dm9pZCByZXBvcnRTaXplSW1wbChjb25zdCBUKiBjb25zdCBvYmplY3QsIHR5cGVuYW1lIFQ6Ok9i
amVjdE1lbW9yeUFnZ3JlZ2F0b3IqIGFnZ3JlZ2F0b3IpCisgICAgeworICAgICAgICBzaXplX3Qg
c2l6ZSA9IG9iamVjdC0+cmVwb3J0TWVtb3J5VXNhZ2UoYWdncmVnYXRvcik7CisgICAgICAgIGNv
dW50T2JqZWN0U2l6ZShhZ2dyZWdhdG9yLT50eXBlKCksIHNpemUpOworICAgIH0KKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0U3RydWN0dXJlSW1wbChjb25zdCBU
JiBvYmplY3QsIHR5cGVuYW1lIFQ6Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIGFnZ3JlZ2F0b3Ip
CisgICAgeworICAgICAgICBvYmplY3QucmVwb3J0TWVtb3J5VXNhZ2UoYWdncmVnYXRvcik7Cisg
ICAgfQorCisgICAgLy8gSW1wbGVtZW50YXRpb24gZm9yIF9OT1RfIGluc3RydW1lbnRlZCBjbGFz
c2VzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0U2l6ZUltcGwo
Y29uc3QgVCogY29uc3Qgb2JqZWN0LCAuLi4pCisgICAgeworICAgICAgICBjb3VudE9iamVjdFNp
emUoT3RoZXIsIHNpemVvZihUKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgdm9pZCByZXBvcnRTdHJ1Y3R1cmVJbXBsKGNvbnN0IFQmIG9iamVjdCwgLi4uKQorICAg
IHsKKyAgICAgICAgLy8gV2UgY2FuJ3QgY2FsbCByZXBvcnRNZW1vcnlVc2FnZSBiZWNhdXNlIG9i
amVjdCdzIGNsYXNzIGlzbid0IGluc3RydW1lbnRlZCB5ZXQuCisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIGNvdW50T2JqZWN0U2l6ZShPYmplY3RUeXBlLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgPSAwOworfTsKKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKKyNlbmRpZiAvLyAhZGVm
aW5lZChJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25faCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RyZWVTaGFyZWQuaAppbmRleCAyZWJkYjFkMWM1OTc4ZDFmMGM3ZWYzMmZkY2I0ZGMzNjBmZmM1
MmY0Li5lOTQ4ZDU3YTljMjllM2ZkMDg3YjA5MjJjYjlkZTRhYzU5ZDE0Y2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCkBAIC0xMTEsNiArMTExLDE0IEBAIHB1YmxpYzoKICAg
ICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uOwogI2VuZGlmCiAKKyAgICB0eXBlZGVm
IEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdncmVnYXRvciBP
YmplY3RNZW1vcnlBZ2dyZWdhdG9yOworICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShPYmpl
Y3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsK
KyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1v
cnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3It
PnJlcG9ydE1lbWJlcihtX3BhcmVudCk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOwor
ICAgIH0KKwogcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJpZW5kIHZvaWQgYWRvcHRl
ZDw+KFRyZWVTaGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCBlZmI1ODdiYWEzMWM2MWFjNzBhMmRjZTgxZmQ4ODdhNDhlMGVkZGI5Li5iYzBmYjhlYWY2
NDI5NTQyZmIxM2UxOTIxNThmODA4ZTA1YjJkOTBlIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEyLTA2LTIwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJl
ZSBuYXRpdmUgbWVtb3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgSW5zcGVjdG9yTWVtb3J5
SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9i
amVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBo
YXMgc3VjaCBtZXRob2QuCisgICAgICAgIEFjdHVhbGx5IHN1Y2ggZGV0ZWN0aW9uIGhhcHBlbnMg
d2l0aCBoZWxwIG9mIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IgdHlwZWRlZi4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9uYXRpdmUt
bWVtb3J5LXNuYXBzaG90Lmh0bWw6CisKIDIwMTItMDYtMTggIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG5hdGl2ZSBtZW1v
cnkgc25hcHNob3QgcGVyZm9ybWFuY2UgYW5kIGNvdmVyYWdlIHRlc3QgaW1wbGVtZW50YXRpb24u
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNu
YXBzaG90Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNu
YXBzaG90Lmh0bWwKaW5kZXggMmFlMDViYTU3Zjc1YjRlZjNhODg2N2I4N2UzM2Q0NTBhMTA0ZDI1
OS4uMzg2NTNhNzQyMjQ5NzJlNDA5YmVjYzFlM2ZiMDQ0N2U3OWFhNTJjMCAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRt
bApAQCAtMSw1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgorICAgIHNwYW4geworICAgICAgY29sb3I6cmVkOworICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgaGVpZ2h0OiAyMHB4OworICAgIH0KKyAgICBkaXYgeworICAgICAgY29sb3I6Ymx1ZTsK
KyAgICAgIHdpZHRoOiA1MHB4OworICAgICAgaGVpZ2h0OiAxMHB4OworICAgIH0KKyAgPC9zdHls
ZT4KICAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KICAgPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNl
LXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KQEAgLTM5LDggKzUxLDEyIEBAIGZ1bmN0aW9u
IGNyZWF0ZURPTVRyZWUoZWxlbWVudHNDb3VudCkKIHsKICAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJlZVJvb3QiKTsKIAotICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZWxlbWVudHNDb3VudDsgKytpKQotICAgICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50
c0NvdW50OyArK2kpIHsKKyAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CisgICAgICAgIHNwYW4uaWQgPSAic3Bhbl8iICsgaTsKKyAgICAgICAgc3Bhbi5z
dHlsZS53aWR0aCA9ICIxMHB4IjsKKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChzcGFuKTsKKyAg
ICB9CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzQ291bnQ7ICsraSkKICAgICAg
ICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148573</attachid>
            <date>2012-06-20 08:20:23 -0700</date>
            <delta_ts>2012-06-20 08:59:10 -0700</delta_ts>
            <desc>build errors fix</desc>
            <filename>bug-89568-20120620192022.patch</filename>
            <type>text/plain</type>
            <size>30111</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiMWNkZDBjMWMyMjk3
YWM1ZDFjMWFlMDc5NDYyMjU1YjkzNGIxZS4uNTQ5ZWE5OTcwODc2ZGQ4MTZhZWEyNzBlMjZhZmNl
ZTYzYWZiY2E2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTA2LTIwICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRo
YXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1l
bW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisgICAgICAg
IEFjdHVhbGx5IHN1Y2ggZGV0ZWN0aW9uIGhhcHBlbnMgd2l0aCBoZWxwIG9mIE9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3IgdHlwZWRlZi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnBy
aToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmg6Cisg
ICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBh
YmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0V3Jh
cHBhYmxlLmg6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL1N0eWxl
UHJvcGVydHlTZXQuaDoKKyAgICAgICAgKFN0eWxlUHJvcGVydHlTZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDb250YWluZXJOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2Up
OgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRh
Lmg6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50QXR0cmlidXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToK
KyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOgorICAgICAgICAoUXVhbGlmaWVkTmFtZUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw6
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFF1YWxpZmllZE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05h
bWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9j
a0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjptZW1vcnlDYWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246On5JbnNwZWN0b3JNZW1vcnlJ
bnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRTaXplKToKKyAgICAgICAgKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmpl
Y3RNZW1vcnlBZ2dyZWdhdG9yOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdncmVn
YXRvcjo6cmVwb3J0TWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyU3RydWN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6
T2JqZWN0TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I6OnR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpy
ZXBvcnRTaXplSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVt
ZW50YXRpb246OnJlcG9ydFN0cnVjdHVyZUltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL1RyZWVT
aGFyZWQuaDoKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNo
YXJlZDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorCiAyMDEyLTA2LTIwICBaZWV2IExpZWJlciAgPHps
aWViZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIHJlZHVuZGFu
dCAjaW5jbHVkZXMgaW4gY29tcG9zaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMjAyZjVlYTM3OGE3MGUxYmYwODAxMzIyMmFiNjI2YTQ3MTZkMmZjYS4uNjAyNzk3OGNjY2Rm
MmZkNWFjODkxN2MyODVhZWQ0NjVjOTJmNTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0yNzA5LDYgKzI3MDksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGRkOWZkYzBiMTQy
OTNlZWFkN2RhMThlMjhkZDY0ZWJkZGY2N2FiOWQuLmI4MjJlODc3Y2JhOTI0OWI0MGM0NjA0MDBl
NDkzMmQ5Y2Y2NTFjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjA2NSw2ICsyMDY1LDcgQEAgSEVBREVS
UyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaCBcCiAgICAgaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlv
bi5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM4OTc0ZDJkNjUyZGJlYTY2ODI3MGRh
M2RmOGY0M2JmODRhMjIyYzQuLmIxZjdhZTBjMTMxYzQ4YjVmOTViOGUwZmFmOTEyNDAzN2Q0NTEw
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4MTUsNiArMjgxNSw3IEBACiAgICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCA2MTllODI5Zjc5NTYxODk1ZWVjZGRmMjQzMzg2NjkxNDRlMjQyZDUzLi4yNDQxMTEwZTFkMTRl
MWZjYTc5YWM0ZWRjNjgyOWNiZjJmY2I3NWU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzM5OTEsNiArNzM5OTEsMTAgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUGFnZUFnZW50LmNwcCIK
IAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFdyYXBwYWJsZS5oCmluZGV4IDUwOGE5MzcwMDQ2MGYwMTIxMTA5ZDVmZWUyYTY4
ZWE5OGY5MmRmZmYuLmZjNmI5ZjI2Y2I0N2Q0NjE0ZmIzNDUxODU3YzcxNGYwMjUzY2JkOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCkBAIC01NCw2
ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHdlYWtDbGVhcihtX3dyYXBwZXIsIHdyYXBwZXIp
OwogICAgIH0KIAorICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
YmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgc2l6ZV90
IHJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFn
Z3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5y
ZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAg
b2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fd3JhcHBlcik7CisgICAgICAg
IHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBKU0M6OldlYWs8
SlNET01XcmFwcGVyPiBtX3dyYXBwZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA4NTA5OTRhYmI3MWYyY2U4YTQ2ZDVkZjdiMzU2YWU4
Zjc4MmNmYWE2Li44NTFmZDBiNmJiNDAyNDU5ZWQ5YmY4ZjU1YjQ3NjI1Y2VlYzE3ZjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaApAQCAtNTIsNiAr
NTIsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhcldyYXBwZXIoKSB7IG1fd3JhcHBlciA9
IDA7IH0KIAorICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmpl
Y3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgc2l6ZV90IHJl
cG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFnZ3Jl
Z2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBv
cnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgb2Jq
ZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fd3JhcHBlcik7CisgICAgICAgIHJl
dHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiogbV93cmFwcGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oCmluZGV4IDc0Y2UwNzlhNDczMzFmNWU0MjdiNTFmZWU5Y2YwYmMzOTQ5OTc1MzguLjNh
MTEyYWFiYzY2ZjMyMTllMDk3OTk0NDNkNWYxMmI4YWJiOGYzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTE1LDYgKzExNiwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzaG93U3R5bGUoKTsKICNlbmRpZgogICAgIAorICAgIHR5cGVkZWYgSW5z
cGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVj
dE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1l
bW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAg
ICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgaWYgKG1faXNNdXRhYmxlKQorICAgICAgICAg
ICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fbXV0YWJsZVByb3BlcnR5
VmVjdG9yKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQogcHJpdmF0ZToK
ICAgICBTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1vZGUpOwogICAgIFN0eWxlUHJvcGVydHlT
ZXQoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2lnbmVkIGNvdW50LCBDU1NQYXJz
ZXJNb2RlLCBib29sIG1ha2VNdXRhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmlu
ZGV4IGJlOGM3OGU0ZDVmMTA1NjdkNGU1NTliYWJmYmZlNjBmOTE2ZmZlM2MuLmQzZjQ5NjlmODQ1
OWI5MjVhOTM4YWRlMGFjODcyMmQ3MzAyM2IzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuaApAQCAtOTksNiArOTksMTYgQEAgcHVibGljOgogICAgIE5vZGUqIHRyYXZlcnNlTmV4dE5v
ZGUoKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5vZGUqIHN0YXlX
aXRoaW4pIGNvbnN0OwogCisgICAgdHlwZWRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRp
b246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IgT2JqZWN0TWVtb3J5QWdncmVnYXRvcjsKKyAgICB2
aXJ0dWFsIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBv
YmplY3RNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgb2JqZWN0TWVtb3J5
QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkRP
TSk7CisgICAgICAgIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG9iamVjdE1lbW9yeUFnZ3JlZ2F0
b3IpOworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9maXJz
dENoaWxkKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1f
bGFzdENoaWxkKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgQ29udGFpbmVyTm9kZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBD
cmVhdGVDb250YWluZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBkZTNmMGM1YWYxNGUwNTA2
ZTYxMTVjOWZkZDY5ODg2NWE5YjMwODNiLi40NTYzMGZjZmI4ZTE1Y2FjZDhjOTM4Y2FlMTU4MWVh
NWRmYzk2NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQyMSw2ICs0MjEsMTYgQEAgcHVibGlj
OgogICAgIEludFNpemUgc2F2ZWRMYXllclNjcm9sbE9mZnNldCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJik7CiAKKyAgICB0eXBlZGVm
IEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdncmVnYXRvciBP
YmplY3RNZW1vcnlBZ2dyZWdhdG9yOworICAgIHZpcnR1YWwgc2l6ZV90IHJlcG9ydE1lbW9yeVVz
YWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0
CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRUeXBlKEluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgQ29udGFpbmVyTm9kZTo6
cmVwb3J0TWVtb3J5VXNhZ2Uob2JqZWN0TWVtb3J5QWdncmVnYXRvcik7CisgICAgICAgIG9iamVj
dE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX3RhZ05hbWUpOworICAg
ICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9hdHRyaWJ1dGVEYXRh
KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBDb250YWluZXJOb2RlKGRvY3Vt
ZW50LCB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1
dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRl
eCA4YjFiMzE4ZmU5OWRlNGIyMWU4ZmRmNjE2YmVhMGU1OWJkMmVmZjM1Li44ZDExMzgxMzk4NDRh
MzZjMmJmZjMwMzQ5NTZmYjM5NTcyOTcwZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEF0dHJpYnV0ZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFbGVtZW50QXR0cmli
dXRlRGF0YV9oCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpA
QCAtOTksNiArMTAwLDE4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEF0dHI+IGF0dHJJZkV4
aXN0cyhFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIFBhc3NSZWZQdHI8QXR0
cj4gZW5zdXJlQXR0cihFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCisgICAgdHlw
ZWRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0
b3IgT2JqZWN0TWVtb3J5QWdncmVnYXRvcjsKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2Uo
T2JqZWN0TWVtb3J5QWdncmVnYXRvciogb2JqZWN0TWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAg
ICB7CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFR5cGUoSW5zcGVjdG9y
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdh
dG9yLT5yZXBvcnRNZW1iZXIobV9pbmxpbmVTdHlsZURlY2wpOworICAgICAgICBvYmplY3RNZW1v
cnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9hdHRyaWJ1dGVTdHlsZSk7CisgICAgICAgIG9i
amVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX2NsYXNzTmFtZXMp
OworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUo
bV9pZEZvclN0eWxlUmVzb2x1dGlvbik7CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3It
PnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX2F0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gc2l6
ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEVsZW1lbnQ7
CiAgICAgZnJpZW5kIGNsYXNzIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IGYzNWRjNWI5OTAzOGJhMDM0NDhiYzQ2YThhODAwNDViZWJjNmNjMTYuLmE4Y2ViYWIyOGU5
MjE5NTc3NTAxY2EzM2IyOTdhNjk1ZjA1M2I5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI5MzIs
NiArMjkzMiwxNyBAQCB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKICAgICBkZWxldGUgdGhp
czsKIH0KIAorc2l6ZV90IE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3Jl
Z2F0b3IqIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0Cit7CisgICAgb2JqZWN0TWVtb3J5
QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkRP
TSk7CisgICAgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5VXNh
Z2Uob2JqZWN0TWVtb3J5QWdncmVnYXRvcik7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRN
ZW1vcnlVc2FnZShvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKTsKKyAgICBvYmplY3RNZW1vcnlBZ2dy
ZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9kb2N1bWVudCk7CisgICAgb2JqZWN0TWVtb3J5QWdncmVn
YXRvci0+cmVwb3J0TWVtYmVyKG1fbmV4dCk7CisgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+
cmVwb3J0TWVtYmVyKG1fcHJldmlvdXMpOworICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRl
eCAyNjU5MTJkMDE4N2E3MGU4NDFmNTRlNzA2YzUwNzA1ZGMwZjY3NDg1Li5iZmI1NWVjYTAzZTYz
ZDE3NjczMDE2ZWFiYzhkN2RmMGI0ODkzNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2luY2x1ZGUgIkVkaXRpbmdCb3VuZGFyeS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlQ29uc3RhbnRzLmgiCkBAIC02NTYsNiArNjU3LDkgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBjb25zdDsKICAgICBzaXplX3QgbnVtYmVyT2ZTY29w
ZWRIVE1MU3R5bGVDaGlsZHJlbigpIGNvbnN0OwogCisgICAgdHlwZWRlZiBJbnNwZWN0b3JNZW1v
cnlJbnN0cnVtZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IgT2JqZWN0TWVtb3J5QWdn
cmVnYXRvcjsKKyAgICB2aXJ0dWFsIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShPYmplY3RNZW1v
cnlBZ2dyZWdhdG9yKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZW51bSBOb2RlRmxhZ3Mgewog
ICAgICAgICBJc1RleHRGbGFnID0gMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9R
dWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4
IDYzNmIyYTUxNTBjOWU5ODdjMDI3ZTc1Njk3OTJkOWJhYzM0YTg5ZTkuLjdhZDI4ZTk1ZWFhMDA5
MjY4MTBjZDBiYTYzZDgxY2FmMzk3MGZlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUu
aApAQCAtMjEsNiArMjEsOCBAQAogI2lmbmRlZiBRdWFsaWZpZWROYW1lX2gKICNkZWZpbmUgUXVh
bGlmaWVkTmFtZV9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKKwogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTQ4LDYgKzUwLDE2
IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZXNwYWNlOwogICAg
ICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyBtX2xvY2FsTmFtZVVwcGVyOwogCisgICAgICAgIHR5
cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdh
dG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgICAgIHNpemVfdCByZXBvcnRNZW1vcnlV
c2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRU
eXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgICAgIG9i
amVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX3ByZWZpeCk7Cisg
ICAgICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUo
bV9sb2NhbE5hbWUpOworICAgICAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0
TWVtYmVyU3RydWN0dXJlKG1fbmFtZXNwYWNlKTsKKyAgICAgICAgICAgIG9iamVjdE1lbW9yeUFn
Z3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX2xvY2FsTmFtZVVwcGVyKTsKKyAgICAg
ICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUXVhbGlmaWVkTmFtZUltcGwoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVS
SSkKICAgICAgICAgICAgIDogbV9wcmVmaXgocHJlZml4KQpAQCAtOTIsNiArMTA0LDEzIEBAIHB1
YmxpYzoKICAgICAvLyBJbml0IHJvdXRpbmUgZm9yIGdsb2JhbHMKICAgICBzdGF0aWMgdm9pZCBp
bml0KCk7CiAgICAgCisgICAgdHlwZWRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246
Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IgT2JqZWN0TWVtb3J5QWdncmVnYXRvcjsKKyAgICBzaXpl
X3QgcmVwb3J0TWVtb3J5VXNhZ2UoT2JqZWN0TWVtb3J5QWdncmVnYXRvciogb2JqZWN0TWVtb3J5
QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3It
PnJlcG9ydFR5cGUoSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAg
ICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9pbXBsKTsKKyAgICAgICAg
cmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQogcHJpdmF0ZToKICAgICB2b2lkIGluaXQoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAgICAgdm9pZCByZWYoKSBjb25zdCB7
IG1faW1wbC0+cmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDc1MmY3Mjg1N2RiOWMxMDY2ZDQxZTQxMTkxOTFhMGUx
Y2ViNjllYzguLjI3NTk2NjAxM2Q1ODYwMmEyY2MxY2I0MmYwYmU0N2E0ZTExMTVjNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXJNYXAuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCkBAIC03Nyw2ICs3OCwxMSBAQCBzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRYc2xT
dHlsZVNoZWV0c1tdID0gIkNhY2hlZFhzbFN0eWxlU2hlZXRzIjsKIHN0YXRpYyBjb25zdCBjaGFy
IGNhY2hlZEZvbnRzW10gPSAiQ2FjaGVkRm9udHMiOwogc3RhdGljIGNvbnN0IGNoYXIgcmVuZGVy
VHJlZVVzZWRbXSA9ICJSZW5kZXJUcmVlVXNlZCI7CiBzdGF0aWMgY29uc3QgY2hhciByZW5kZXJU
cmVlQWxsb2NhdGVkW10gPSAiUmVuZGVyVHJlZUFsbG9jYXRlZCI7CisKK3N0YXRpYyBjb25zdCBj
aGFyIGRvbVtdID0gIkRPTSI7CitzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlT3RoZXJbXSA9ICJE
T01UcmVlT3RoZXIiOworc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZURPTVtdID0gIkRPTVRyZWVE
T00iOworc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZUNTU1tdID0gIkRPTVRyZWVDU1MiOwogfQog
CiBuYW1lc3BhY2UgewpAQCAtMTc3LDEwICsxODMsNiBAQCBwcml2YXRlOgogICAgICAgICBjb2xs
ZWN0TGlzdGVuZXJzSW5mbyhub2RlKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbGxlY3RDaGFyYWN0
ZXJEYXRhKE5vZGUqKQotICAgIHsKLSAgICB9Ci0KICAgICB2b2lkIGNvbGxlY3ROb2RlTmFtZUlu
Zm8oTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIFN0cmluZyBuYW1lID0gbm9kZU5hbWUobm9k
ZSk7CkBAIC0zNzIsMTMgKzM3NCwxMDEgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVt
b3J5QmxvY2s+IHJlbmRlclRyZWVJbmZvKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHJlbmRlclRy
ZWVBbGxvY2F0ZWQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRNZW1vcnlCbG9ja0Zv
cihUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBhcnJheSwgY29uc3Qg
TWVtb3J5Q2FjaGU6OlR5cGVTdGF0aXN0aWMmIHN0YXRpc3RpYywgY29uc3QgY2hhciogbmFtZSkK
K3N0YXRpYyB2b2lkIGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4qIGFycmF5LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogbmFtZSkKIHsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJlc3VsdCA9IEluc3BlY3Rvck1lbW9y
eUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKG5hbWUpOwotICAgIHJlc3VsdC0+c2V0U2l6ZShzdGF0
aXN0aWMuc2l6ZSk7CisgICAgcmVzdWx0LT5zZXRTaXplKHNpemUpOwogICAgIGFycmF5LT5hZGRJ
dGVtKHJlc3VsdCk7CiB9CiAKK25hbWVzcGFjZSB7CisKK2NsYXNzIEluc3BlY3Rvck1lbW9yeUlu
c3RydW1lbnRhdGlvbkltcGwgOiBwdWJsaWMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9u
IHsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsKCkKKyAg
ICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTGFzdFR5cGVFbnRyeTsgKytpKQorICAg
ICAgICAgICAgbV90b3RhbFNpemVzW2ldID0gMDsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2NrPiBkdW1wU3RhdGlzdGljcygpCisgICAgeworICAgICAgICBzaXpl
X3QgdG90YWxTaXplID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IE90aGVyOyBpIDwgTGFzdFR5
cGVFbnRyeTsgKytpKQorICAgICAgICAgICAgdG90YWxTaXplICs9IG1fdG90YWxTaXplc1tpXTsK
KworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiA+IGRvbUNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2Nr
Pjo6Y3JlYXRlKCk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgp
LCBtX3RvdGFsU2l6ZXNbT3RoZXJdLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVPdGhlcik7Cisg
ICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNb
RE9NXSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlRE9NKTsKKyAgICAgICAgYWRkTWVtb3J5Qmxv
Y2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tDU1NdLCBNZW1vcnlCbG9ja05h
bWU6OmRvbVRyZWVDU1MpOworCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4g
ZG9tID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tO
YW1lOjpkb20pOworICAgICAgICBkb20tPnNldFNpemUodG90YWxTaXplKTsKKyAgICAgICAgZG9t
LT5zZXRDaGlsZHJlbihkb21DaGlsZHJlbi5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gZG9t
LnJlbGVhc2UoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGNvdW50T2Jq
ZWN0U2l6ZShPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG9iamVjdFR5cGUgPj0gMCAmJiBvYmplY3RUeXBlIDwgTGFzdFR5cGVFbnRyeSk7
CisgICAgICAgIG1fdG90YWxTaXplc1tvYmplY3RUeXBlXSArPSBzaXplOworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqIG9iamVjdCkKKyAgICB7CisgICAgICAg
IHJldHVybiAhbV92aXNpdGVkT2JqZWN0cy5hZGQob2JqZWN0KS5pc05ld0VudHJ5OworICAgIH0K
KyAgICBzaXplX3QgbV90b3RhbFNpemVzW0xhc3RUeXBlRW50cnldOworICAgIHR5cGVkZWYgSGFz
aFNldDxjb25zdCB2b2lkKj4gVmlzaXRlZE9iamVjdHM7CisgICAgVmlzaXRlZE9iamVjdHMgbV92
aXNpdGVkT2JqZWN0czsKK307CisKK2NsYXNzIERPTVRyZWVzSXRlcmF0b3IgOiBwdWJsaWMgRE9N
V3JhcHBlclZpc2l0b3IgeworcHVibGljOgorICAgIERPTVRyZWVzSXRlcmF0b3IoUGFnZSogcGFn
ZSkgOiBtX3BhZ2UocGFnZSkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXROb2RlKE5vZGUq
IG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBt
X3BhZ2UgIT0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIE5vZGUqIHJvb3ROb2RlID0gbm9kZTsKKyAgICAgICAgd2hpbGUg
KHJvb3ROb2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICByb290Tm9kZSA9IHJvb3ROb2Rl
LT5wYXJlbnROb2RlKCk7CisKKyAgICAgICAgaWYgKG1fcm9vdHMuY29udGFpbnMocm9vdE5vZGUp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Jvb3RzLmFkZChyb290Tm9kZSk7Cisg
ICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UucmVwb3J0U2l6ZShyb290Tm9kZSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRlcm5hbFN0cmluZyhTdHJpbmdJbXBsKiBzdHJpbmcp
IHsgfQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0YXRpc3Rp
Y3MoKSB7IHJldHVybiBtX2RvbU1lbW9yeVVzYWdlLmR1bXBTdGF0aXN0aWNzKCk7IH0KKworcHJp
dmF0ZToKKyAgICBIYXNoU2V0PE5vZGUqPiBtX3Jvb3RzOworICAgIFBhZ2UqIG1fcGFnZTsKKyAg
ICBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIG1fZG9tTWVtb3J5VXNhZ2U7Cit9
OworCit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVl
SW5mbyhQYWdlKiBwYWdlKQoreworICAgIERPTVRyZWVzSXRlcmF0b3IgZG9tVHJlZXNJdGVyYXRv
cihwYWdlKTsKKyAgICBTY3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJzKCZkb21UcmVl
c0l0ZXJhdG9yKTsKKworICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBm
cm9tIHRoZSBtYWluIGZyYW1lIGFyZSBhY2NvdW50ZWQuCisgICAgZm9yIChGcmFtZSogZnJhbWUg
PSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVy
c2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgICAgIGRvbVRyZWVzSXRlcmF0b3IudmlzaXROb2RlKGRvYyk7CisgICAgfQor
CisgICAgcmV0dXJuIGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoKTsKK30KKwogc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygpCiB7
CiAgICAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3Mgc3RhdHMgPSBtZW1vcnlDYWNoZSgpLT5nZXRT
dGF0aXN0aWNzKCk7CkBAIC0zOTEsMTIgKzQ4MSwxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4gbWVtb3J5Q2FjaGVJbmZvKCkKICAgICBtZW1vcnlDYWNoZVN0YXRz
LT5zZXRTaXplKHRvdGFsU2l6ZSk7CiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRy
ZW4uZ2V0KCksIHN0YXRzLmltYWdlcywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRJbWFnZXMpOwot
ICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5jc3NTdHlsZVNoZWV0
cywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5
QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMsIE1lbW9yeUJsb2NrTmFtZTo6
Y2FjaGVkU2NyaXB0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0
YXRzLnhzbFN0eWxlU2hlZXRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRz
KTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMsIE1l
bW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOwotICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldENo
aWxkcmVuKGNoaWxkcmVuKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwg
c3RhdHMuaW1hZ2VzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkSW1hZ2VzKTsKKyAgICBh
ZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuY3NzU3R5bGVTaGVldHMuc2l6
ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7CisgICAgYWRkTWVtb3J5
QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMuc2l6ZSwgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRTY3JpcHRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQo
KSwgc3RhdHMueHNsU3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRYc2xT
dHlsZVNoZWV0cyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRz
LmZvbnRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOworICAgIG1lbW9yeUNh
Y2hlU3RhdHMtPnNldENoaWxkcmVuKGNoaWxkcmVuLmdldCgpKTsKICAgICByZXR1cm4gbWVtb3J5
Q2FjaGVTdGF0cy5yZWxlYXNlKCk7CiB9CiAKQEAgLTQxMyw2ICs1MDMsNyBAQCB2b2lkIEluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5n
KiwgUmVmUHRyPElucwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGluc3BlY3RvckRhdGEoKSk7CiAg
ICAgY2hpbGRyZW4tPmFkZEl0ZW0obWVtb3J5Q2FjaGVJbmZvKCkpOwogICAgIGNoaWxkcmVuLT5h
ZGRJdGVtKHJlbmRlclRyZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwg
cGFnZXM/CisgICAgY2hpbGRyZW4tPmFkZEl0ZW0oZG9tVHJlZUluZm8obV9wYWdlKSk7IC8vIFRP
RE86IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJl
bihjaGlsZHJlbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjBhYmVhMjJh
MjFlMDJmYzIwMWRjNmYwM2FkNzkxNzFhZDljODg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC0w
LDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25faAorI2Rl
ZmluZSBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25faAorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50
YXRpb24oKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0
U2l6ZShjb25zdCBUKiBjb25zdCBvYmplY3QpCisgICAgeworICAgICAgICBpZiAoIW9iamVjdCB8
fCB2aXNpdGVkKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIE9iamVjdE1l
bW9yeUFnZ3JlZ2F0b3IgYWdncmVhZ3Rvcih0aGlzKTsKKyAgICAgICAgcmVwb3J0U2l6ZUltcGwo
b2JqZWN0LCAgJmFnZ3JlYWd0b3IpOworICAgIH0KKworICAgIGVudW0gT2JqZWN0VHlwZSB7Cisg
ICAgICAgIE90aGVyID0gMCwKKyAgICAgICAgRE9NID0gMSwKKyAgICAgICAgQ1NTID0gMiwKKyAg
ICAgICAgTGFzdFR5cGVFbnRyeSA9IDMKKyAgICB9OworCisgICAgY2xhc3MgT2JqZWN0TWVtb3J5
QWdncmVnYXRvciB7CisgICAgcHVibGljOgorICAgICAgICBPYmplY3RNZW1vcnlBZ2dyZWdhdG9y
KEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKQorICAgICAgICAgICAgOiBtX2luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbihp
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgICAgICAgICAsIG1fdHlwZShPdGhl
cikKKyAgICAgICAgeyB9CisKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+CisgICAgICAg
IHNpemVfdCByZXBvcnRNZW1iZXIoY29uc3QgUCogY29uc3QgbWVtYmVyUG9pbnRlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9pbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9y
dFNpemUobWVtYmVyUG9pbnRlcik7CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKFApOworICAg
ICAgICB9CisKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+CisgICAgICAgIHNpemVfdCBy
ZXBvcnRNZW1iZXIoY29uc3QgT3duUHRyPFA+JiBtZW1iZXJQb2ludGVyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U2l6ZSht
ZW1iZXJQb2ludGVyLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBzaXplb2YoT3duUHRyPFA+
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgICAgICBz
aXplX3QgcmVwb3J0TWVtYmVyKGNvbnN0IFJlZlB0cjxQPiYgbWVtYmVyUG9pbnRlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9pbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9y
dFNpemUobWVtYmVyUG9pbnRlci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKFJl
ZlB0cjxQPik7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTz4KKyAg
ICAgICAgc2l6ZV90IHJlcG9ydE1lbWJlclN0cnVjdHVyZShjb25zdCBPJiBtZW1iZXJPYmplY3Qp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5yZXBvcnRTdHJ1Y3R1cmVJbXBsKG1lbWJlck9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVwb3J0VHlwZShPYmplY3RUeXBlIHR5cGUp
IHsgbV90eXBlID0gbV90eXBlID09IE90aGVyID8gdHlwZSA6IG1fdHlwZTsgfQorICAgICAgICBP
YmplY3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9pbnNwZWN0b3JNZW1v
cnlJbnN0cnVtZW50YXRpb247CisgICAgICAgIE9iamVjdFR5cGUgbV90eXBlOworICAgIH07CisK
K3ByaXZhdGU6CisgICAgLy8gSW1wbGVtZW50YXRpb24gZm9yIGluc3RydW1lbnRlZCBjbGFzc2Vz
LgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0U2l6ZUltcGwoY29u
c3QgVCogY29uc3Qgb2JqZWN0LCB0eXBlbmFtZSBUOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBh
Z2dyZWdhdG9yKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBvYmplY3QtPnJlcG9ydE1l
bW9yeVVzYWdlKGFnZ3JlZ2F0b3IpOworICAgICAgICBjb3VudE9iamVjdFNpemUoYWdncmVnYXRv
ci0+dHlwZSgpLCBzaXplKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
ICB2b2lkIHJlcG9ydFN0cnVjdHVyZUltcGwoY29uc3QgVCYgb2JqZWN0LCB0eXBlbmFtZSBUOjpP
YmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBhZ2dyZWdhdG9yKQorICAgIHsKKyAgICAgICAgb2JqZWN0
LnJlcG9ydE1lbW9yeVVzYWdlKGFnZ3JlZ2F0b3IpOworICAgIH0KKworICAgIC8vIEltcGxlbWVu
dGF0aW9uIGZvciBfTk9UXyBpbnN0cnVtZW50ZWQgY2xhc3Nlcy4KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgICB2b2lkIHJlcG9ydFNpemVJbXBsKGNvbnN0IFQqIGNvbnN0LCAuLi4pCisg
ICAgeworICAgICAgICBjb3VudE9iamVjdFNpemUoT3RoZXIsIHNpemVvZihUKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZXBvcnRTdHJ1Y3R1cmVJbXBs
KGNvbnN0IFQmLCAuLi4pCisgICAgeworICAgICAgICAvLyBXZSBjYW4ndCBjYWxsIHJlcG9ydE1l
bW9yeVVzYWdlIGJlY2F1c2Ugb2JqZWN0J3MgY2xhc3MgaXNuJ3QgaW5zdHJ1bWVudGVkIHlldC4K
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKE9iamVjdFR5cGUsIHNp
emVfdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqKSA9IDA7Cit9
OworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFFTkFCTEUoSU5TUEVD
VE9SKQorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbl9o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDJlYmRiMWQxYzU5NzhkMWYw
YzdlZjMyZmRjYjRkYzM2MGZmYzUyZjQuLmU5NDhkNTdhOWMyOWUzZmQwODdiMDkyMmNiOWRlNGFj
NTlkMTRjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAgLTExMSw2ICsx
MTEsMTQgQEAgcHVibGljOgogICAgIGJvb2wgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb247CiAj
ZW5kaWYKIAorICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmpl
Y3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgc2l6ZV90IHJl
cG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFnZ3Jl
Z2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBv
cnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgb2Jq
ZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fcGFyZW50KTsKKyAgICAgICAgcmV0
dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAg
ICBmcmllbmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50Tm9kZVR5
cGU+Kik7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVmYjU4N2JhYTMxYzYxYWM3MGEyZGNlODFmZDg4N2E0
OGUwZWRkYjkuLmJjMGZiOGVhZjY0Mjk1NDJmYjEzZTE5MjE1OGY4MDhlMDViMmQ5MGUgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDYtMjAgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBhcnRpYWxs
eSBpbnN0cnVtZW50IERPTSBUcmVlIG5hdGl2ZSBtZW1vcnkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU2OAorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24gY2xhc3MgdGhhdCBjb3VudHMgYWxs
IHZpc2l0ZWQKKyAgICAgICAgb2JqZWN0cyBhbmQgY2FsbHMgcmVwb3J0TWVtb3J5VXNhZ2UgaWYg
dGhlIG9iamVjdCdzIGNsYXNzIGhhcyBzdWNoIG1ldGhvZC4KKyAgICAgICAgQWN0dWFsbHkgc3Vj
aCBkZXRlY3Rpb24gaGFwcGVucyB3aXRoIGhlbHAgb2YgT2JqZWN0TWVtb3J5QWdncmVnYXRvciB0
eXBlZGVmLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbDoKKwogMjAxMi0wNi0xOCAg
SWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogbmF0aXZlIG1lbW9yeSBzbmFwc2hvdCBwZXJmb3JtYW5jZSBhbmQgY292ZXJhZ2Ug
dGVzdCBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbAppbmRleCAyYWUwNWJhNTdmNzViNGVmM2E4
ODY3Yjg3ZTMzZDQ1MGExMDRkMjU5Li4zODY1M2E3NDIyNDk3MmU0MDliZWNjMWUzZmIwNDQ3ZTc5
YWE1MmMwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9uYXRpdmUtbWVt
b3J5LXNuYXBzaG90Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmF0aXZl
LW1lbW9yeS1zbmFwc2hvdC5odG1sCkBAIC0xLDUgKzEsMTcgQEAKIDxodG1sPgogPGhlYWQ+Cisg
IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgc3BhbiB7CisgICAgICBjb2xvcjpyZWQ7Cisg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDIwcHg7CisgICAgfQorICAgIGRpdiB7
CisgICAgICBjb2xvcjpibHVlOworICAgICAgd2lkdGg6IDUwcHg7CisgICAgICBoZWlnaHQ6IDEw
cHg7CisgICAgfQorICA8L3N0eWxlPgogICA8c2NyaXB0IHNyYz0iLi4vLi4vTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogICA8c2Ny
aXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgpAQCAtMzks
OCArNTEsMTIgQEAgZnVuY3Rpb24gY3JlYXRlRE9NVHJlZShlbGVtZW50c0NvdW50KQogewogICAg
IHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RUcmVlUm9vdCIpOwogCi0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyArK2kpCi0gICAgICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGVsZW1lbnRzQ291bnQ7ICsraSkgeworICAgICAgICB2YXIgc3BhbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgc3Bhbi5pZCA9ICJzcGFuXyIg
KyBpOworICAgICAgICBzcGFuLnN0eWxlLndpZHRoID0gIjEwcHgiOworICAgICAgICByb290LmFw
cGVuZENoaWxkKHNwYW4pOworICAgIH0KIAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVu
dHNDb3VudDsgKytpKQogICAgICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148579</attachid>
            <date>2012-06-20 08:59:26 -0700</date>
            <delta_ts>2012-06-21 01:39:06 -0700</delta_ts>
            <desc>build errors fix 2</desc>
            <filename>bug-89568-20120620195925.patch</filename>
            <type>text/plain</type>
            <size>30120</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiMWNkZDBjMWMyMjk3
YWM1ZDFjMWFlMDc5NDYyMjU1YjkzNGIxZS4uNTQ5ZWE5OTcwODc2ZGQ4MTZhZWEyNzBlMjZhZmNl
ZTYzYWZiY2E2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTA2LTIwICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRo
YXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1l
bW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisgICAgICAg
IEFjdHVhbGx5IHN1Y2ggZGV0ZWN0aW9uIGhhcHBlbnMgd2l0aCBoZWxwIG9mIE9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3IgdHlwZWRlZi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnBy
aToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmg6Cisg
ICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBh
YmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0V3Jh
cHBhYmxlLmg6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL1N0eWxl
UHJvcGVydHlTZXQuaDoKKyAgICAgICAgKFN0eWxlUHJvcGVydHlTZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDb250YWluZXJOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2Up
OgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRh
Lmg6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50QXR0cmlidXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToK
KyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOgorICAgICAgICAoUXVhbGlmaWVkTmFtZUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw6
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFF1YWxpZmllZE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05h
bWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9j
a0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjptZW1vcnlDYWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246On5JbnNwZWN0b3JNZW1vcnlJ
bnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRTaXplKToKKyAgICAgICAgKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmpl
Y3RNZW1vcnlBZ2dyZWdhdG9yOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdncmVn
YXRvcjo6cmVwb3J0TWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyU3RydWN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6
T2JqZWN0TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I6OnR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpy
ZXBvcnRTaXplSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVt
ZW50YXRpb246OnJlcG9ydFN0cnVjdHVyZUltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL1RyZWVT
aGFyZWQuaDoKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNo
YXJlZDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorCiAyMDEyLTA2LTIwICBaZWV2IExpZWJlciAgPHps
aWViZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIHJlZHVuZGFu
dCAjaW5jbHVkZXMgaW4gY29tcG9zaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMjAyZjVlYTM3OGE3MGUxYmYwODAxMzIyMmFiNjI2YTQ3MTZkMmZjYS4uNjAyNzk3OGNjY2Rm
MmZkNWFjODkxN2MyODVhZWQ0NjVjOTJmNTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0yNzA5LDYgKzI3MDksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGRkOWZkYzBiMTQy
OTNlZWFkN2RhMThlMjhkZDY0ZWJkZGY2N2FiOWQuLmI4MjJlODc3Y2JhOTI0OWI0MGM0NjA0MDBl
NDkzMmQ5Y2Y2NTFjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjA2NSw2ICsyMDY1LDcgQEAgSEVBREVS
UyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaCBcCiAgICAgaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlv
bi5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM4OTc0ZDJkNjUyZGJlYTY2ODI3MGRh
M2RmOGY0M2JmODRhMjIyYzQuLmIxZjdhZTBjMTMxYzQ4YjVmOTViOGUwZmFmOTEyNDAzN2Q0NTEw
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4MTUsNiArMjgxNSw3IEBACiAgICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCA2MTllODI5Zjc5NTYxODk1ZWVjZGRmMjQzMzg2NjkxNDRlMjQyZDUzLi4yNDQxMTEwZTFkMTRl
MWZjYTc5YWM0ZWRjNjgyOWNiZjJmY2I3NWU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzM5OTEsNiArNzM5OTEsMTAgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yUGFnZUFnZW50LmNwcCIK
IAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFdyYXBwYWJsZS5oCmluZGV4IDUwOGE5MzcwMDQ2MGYwMTIxMTA5ZDVmZWUyYTY4
ZWE5OGY5MmRmZmYuLmI2N2U5YmEyNmJjMDYzYjA4YTkwNGI5YTQ1YzY1NmMxZjFhOGZiZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCkBAIC01NCw2
ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHdlYWtDbGVhcihtX3dyYXBwZXIsIHdyYXBwZXIp
OwogICAgIH0KIAorICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpP
YmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgc2l6ZV90
IHJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFn
Z3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5y
ZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAg
b2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fd3JhcHBlcik7
CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBK
U0M6OldlYWs8SlNET01XcmFwcGVyPiBtX3dyYXBwZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA4NTA5OTRhYmI3MWYyY2U4YTQ2ZDVk
ZjdiMzU2YWU4Zjc4MmNmYWE2Li44NTFmZDBiNmJiNDAyNDU5ZWQ5YmY4ZjU1YjQ3NjI1Y2VlYzE3
ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFi
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaApA
QCAtNTIsNiArNTIsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhcldyYXBwZXIoKSB7IG1f
d3JhcHBlciA9IDA7IH0KIAorICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAg
c2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1l
bW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdh
dG9yLT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAg
ICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fd3JhcHBlcik7Cisg
ICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiogbV93cmFwcGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5oCmluZGV4IDc0Y2UwNzlhNDczMzFmNWU0MjdiNTFmZWU5Y2YwYmMzOTQ5
OTc1MzguLjNhMTEyYWFiYzY2ZjMyMTllMDk3OTk0NDNkNWYxMmI4YWJiOGYzZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTE1LDYgKzExNiwx
NCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93U3R5bGUoKTsKICNlbmRpZgogICAgIAorICAgIHR5
cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdh
dG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdl
KE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0Cisg
ICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRUeXBlKEluc3BlY3Rv
ck1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgaWYgKG1faXNNdXRhYmxlKQor
ICAgICAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fbXV0YWJs
ZVByb3BlcnR5VmVjdG9yKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQog
cHJpdmF0ZToKICAgICBTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1vZGUpOwogICAgIFN0eWxl
UHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2lnbmVkIGNvdW50
LCBDU1NQYXJzZXJNb2RlLCBib29sIG1ha2VNdXRhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCmluZGV4IGJlOGM3OGU0ZDVmMTA1NjdkNGU1NTliYWJmYmZlNjBmOTE2ZmZlM2MuLmQz
ZjQ5NjlmODQ1OWI5MjVhOTM4YWRlMGFjODcyMmQ3MzAyM2IzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaApAQCAtOTksNiArOTksMTYgQEAgcHVibGljOgogICAgIE5vZGUqIHRyYXZl
cnNlTmV4dE5vZGUoKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5v
ZGUqIHN0YXlXaXRoaW4pIGNvbnN0OwogCisgICAgdHlwZWRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IgT2JqZWN0TWVtb3J5QWdncmVnYXRv
cjsKKyAgICB2aXJ0dWFsIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dy
ZWdhdG9yKiBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgb2Jq
ZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50
YXRpb246OkRPTSk7CisgICAgICAgIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3IpOworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1i
ZXIobV9maXJzdENoaWxkKTsKKyAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0
TWVtYmVyKG1fbGFzdENoaWxkKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgQ29udGFpbmVyTm9kZShEb2N1bWVudCosIENvbnN0cnVjdGlv
blR5cGUgPSBDcmVhdGVDb250YWluZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBkZTNmMGM1
YWYxNGUwNTA2ZTYxMTVjOWZkZDY5ODg2NWE5YjMwODNiLi40NTYzMGZjZmI4ZTE1Y2FjZDhjOTM4
Y2FlMTU4MWVhNWRmYzk2NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQyMSw2ICs0MjEsMTYg
QEAgcHVibGljOgogICAgIEludFNpemUgc2F2ZWRMYXllclNjcm9sbE9mZnNldCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJik7CiAKKyAg
ICB0eXBlZGVmIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0TWVtb3J5QWdn
cmVnYXRvciBPYmplY3RNZW1vcnlBZ2dyZWdhdG9yOworICAgIHZpcnR1YWwgc2l6ZV90IHJlcG9y
dE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFnZ3JlZ2F0
b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRU
eXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgQ29udGFp
bmVyTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2Uob2JqZWN0TWVtb3J5QWdncmVnYXRvcik7CisgICAg
ICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX3RhZ05h
bWUpOworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9hdHRy
aWJ1dGVEYXRhKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBDb250YWluZXJO
b2RlKGRvY3VtZW50LCB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRBdHRyaWJ1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURh
dGEuaAppbmRleCA4YjFiMzE4ZmU5OWRlNGIyMWU4ZmRmNjE2YmVhMGU1OWJkMmVmZjM1Li44ZDEx
MzgxMzk4NDRhMzZjMmJmZjMwMzQ5NTZmYjM5NTcyOTcwZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFbGVt
ZW50QXR0cmlidXRlRGF0YV9oCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RG
b3VuZC5oPgpAQCAtOTksNiArMTAwLDE4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEF0dHI+
IGF0dHJJZkV4aXN0cyhFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIFBhc3NS
ZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
CisgICAgdHlwZWRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdE1lbW9y
eUFnZ3JlZ2F0b3IgT2JqZWN0TWVtb3J5QWdncmVnYXRvcjsKKyAgICBzaXplX3QgcmVwb3J0TWVt
b3J5VXNhZ2UoT2JqZWN0TWVtb3J5QWdncmVnYXRvciogb2JqZWN0TWVtb3J5QWdncmVnYXRvcikg
Y29uc3QKKyAgICB7CisgICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFR5cGUo
SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBvYmplY3RNZW1v
cnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9pbmxpbmVTdHlsZURlY2wpOworICAgICAgICBv
YmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9hdHRyaWJ1dGVTdHlsZSk7Cisg
ICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX2Ns
YXNzTmFtZXMpOworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJT
dHJ1Y3R1cmUobV9pZEZvclN0eWxlUmVzb2x1dGlvbik7CisgICAgICAgIG9iamVjdE1lbW9yeUFn
Z3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX2F0dHJpYnV0ZXMpOworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IEVsZW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IGYzNWRjNWI5OTAzOGJhMDM0NDhiYzQ2YThhODAwNDViZWJjNmNjMTYuLmE4
Y2ViYWIyOGU5MjE5NTc3NTAxY2EzM2IyOTdhNjk1ZjA1M2I5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTI5MzIsNiArMjkzMiwxNyBAQCB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKICAgICBk
ZWxldGUgdGhpczsKIH0KIAorc2l6ZV90IE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1l
bW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0Cit7CisgICAgb2Jq
ZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50
YXRpb246OkRPTSk7CisgICAgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6cmVwb3J0
TWVtb3J5VXNhZ2Uob2JqZWN0TWVtb3J5QWdncmVnYXRvcik7CisgICAgU2NyaXB0V3JhcHBhYmxl
OjpyZXBvcnRNZW1vcnlVc2FnZShvYmplY3RNZW1vcnlBZ2dyZWdhdG9yKTsKKyAgICBvYmplY3RN
ZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9kb2N1bWVudCk7CisgICAgb2JqZWN0TWVt
b3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fbmV4dCk7CisgICAgb2JqZWN0TWVtb3J5QWdn
cmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fcHJldmlvdXMpOworICAgIHJldHVybiBzaXplb2YoKnRo
aXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVHCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAppbmRleCAyNjU5MTJkMDE4N2E3MGU4NDFmNTRlNzA2YzUwNzA1ZGMwZjY3NDg1Li5iZmI1
NWVjYTAzZTYzZDE3NjczMDE2ZWFiYzhkN2RmMGI0ODkzNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkVkaXRpbmdCb3VuZGFyeS5oIgogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1
ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCkBAIC02NTYsNiArNjU3LDkgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBjb25zdDsKICAgICBzaXplX3QgbnVt
YmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbigpIGNvbnN0OwogCisgICAgdHlwZWRlZiBJbnNw
ZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IgT2JqZWN0
TWVtb3J5QWdncmVnYXRvcjsKKyAgICB2aXJ0dWFsIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShP
YmplY3RNZW1vcnlBZ2dyZWdhdG9yKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZW51bSBOb2Rl
RmxhZ3MgewogICAgICAgICBJc1RleHRGbGFnID0gMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5oCmluZGV4IDYzNmIyYTUxNTBjOWU5ODdjMDI3ZTc1Njk3OTJkOWJhYzM0YTg5ZTkuLjdhZDI4
ZTk1ZWFhMDA5MjY4MTBjZDBiYTYzZDgxY2FmMzk3MGZlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxp
ZmllZE5hbWUuaApAQCAtMjEsNiArMjEsOCBAQAogI2lmbmRlZiBRdWFsaWZpZWROYW1lX2gKICNk
ZWZpbmUgUXVhbGlmaWVkTmFtZV9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCIKKwogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTQ4
LDYgKzUwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZXNw
YWNlOwogICAgICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyBtX2xvY2FsTmFtZVVwcGVyOwogCisg
ICAgICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RNZW1v
cnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgICAgIHNpemVfdCByZXBv
cnRNZW1vcnlVc2FnZShPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBvYmplY3RNZW1vcnlBZ2dyZWdh
dG9yKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9y
LT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAg
ICAgICAgIG9iamVjdE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX3By
ZWZpeCk7CisgICAgICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJT
dHJ1Y3R1cmUobV9sb2NhbE5hbWUpOworICAgICAgICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRv
ci0+cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fbmFtZXNwYWNlKTsKKyAgICAgICAgICAgIG9iamVj
dE1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX2xvY2FsTmFtZVVwcGVy
KTsKKyAgICAgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgICAgICB9CiAgICAgcHJp
dmF0ZToKICAgICAgICAgUXVhbGlmaWVkTmFtZUltcGwoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVm
aXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSkKICAgICAgICAgICAgIDogbV9wcmVmaXgocHJlZml4KQpAQCAtOTIsNiArMTA0
LDEzIEBAIHB1YmxpYzoKICAgICAvLyBJbml0IHJvdXRpbmUgZm9yIGdsb2JhbHMKICAgICBzdGF0
aWMgdm9pZCBpbml0KCk7CiAgICAgCisgICAgdHlwZWRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVt
ZW50YXRpb246Ok9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IgT2JqZWN0TWVtb3J5QWdncmVnYXRvcjsK
KyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoT2JqZWN0TWVtb3J5QWdncmVnYXRvciogb2Jq
ZWN0TWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG9iamVjdE1lbW9yeUFn
Z3JlZ2F0b3ItPnJlcG9ydFR5cGUoSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00p
OworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9pbXBsKTsK
KyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQogcHJpdmF0ZToKICAgICB2b2lk
IGluaXQoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAgICAgdm9pZCByZWYo
KSBjb25zdCB7IG1faW1wbC0+cmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDc1MmY3Mjg1N2RiOWMxMDY2ZDQxZTQx
MTkxOTFhMGUxY2ViNjllYzguLjI3NTk2NjAxM2Q1ODYwMmEyY2MxY2I0MmYwYmU0N2E0ZTExMTVj
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXJNYXAuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0
cnVtZW50aW5nQWdlbnRzLmgiCkBAIC03Nyw2ICs3OCwxMSBAQCBzdGF0aWMgY29uc3QgY2hhciBj
YWNoZWRYc2xTdHlsZVNoZWV0c1tdID0gIkNhY2hlZFhzbFN0eWxlU2hlZXRzIjsKIHN0YXRpYyBj
b25zdCBjaGFyIGNhY2hlZEZvbnRzW10gPSAiQ2FjaGVkRm9udHMiOwogc3RhdGljIGNvbnN0IGNo
YXIgcmVuZGVyVHJlZVVzZWRbXSA9ICJSZW5kZXJUcmVlVXNlZCI7CiBzdGF0aWMgY29uc3QgY2hh
ciByZW5kZXJUcmVlQWxsb2NhdGVkW10gPSAiUmVuZGVyVHJlZUFsbG9jYXRlZCI7CisKK3N0YXRp
YyBjb25zdCBjaGFyIGRvbVtdID0gIkRPTSI7CitzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlT3Ro
ZXJbXSA9ICJET01UcmVlT3RoZXIiOworc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZURPTVtdID0g
IkRPTVRyZWVET00iOworc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZUNTU1tdID0gIkRPTVRyZWVD
U1MiOwogfQogCiBuYW1lc3BhY2UgewpAQCAtMTc3LDEwICsxODMsNiBAQCBwcml2YXRlOgogICAg
ICAgICBjb2xsZWN0TGlzdGVuZXJzSW5mbyhub2RlKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbGxl
Y3RDaGFyYWN0ZXJEYXRhKE5vZGUqKQotICAgIHsKLSAgICB9Ci0KICAgICB2b2lkIGNvbGxlY3RO
b2RlTmFtZUluZm8oTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIFN0cmluZyBuYW1lID0gbm9k
ZU5hbWUobm9kZSk7CkBAIC0zNzIsMTMgKzM3NCwxMDEgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yTWVtb3J5QmxvY2s+IHJlbmRlclRyZWVJbmZvKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJu
IHJlbmRlclRyZWVBbGxvY2F0ZWQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRNZW1v
cnlCbG9ja0ZvcihUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBhcnJh
eSwgY29uc3QgTWVtb3J5Q2FjaGU6OlR5cGVTdGF0aXN0aWMmIHN0YXRpc3RpYywgY29uc3QgY2hh
ciogbmFtZSkKK3N0YXRpYyB2b2lkIGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4qIGFycmF5LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciog
bmFtZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJlc3VsdCA9IEluc3Bl
Y3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKG5hbWUpOwotICAgIHJlc3VsdC0+c2V0
U2l6ZShzdGF0aXN0aWMuc2l6ZSk7CisgICAgcmVzdWx0LT5zZXRTaXplKHNpemUpOwogICAgIGFy
cmF5LT5hZGRJdGVtKHJlc3VsdCk7CiB9CiAKK25hbWVzcGFjZSB7CisKK2NsYXNzIEluc3BlY3Rv
ck1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgOiBwdWJsaWMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uIHsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25J
bXBsKCkKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTGFzdFR5cGVFbnRyeTsg
KytpKQorICAgICAgICAgICAgbV90b3RhbFNpemVzW2ldID0gMDsKKyAgICB9CisKKyAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkdW1wU3RhdGlzdGljcygpCisgICAgeworICAg
ICAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IE90aGVyOyBp
IDwgTGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICAgICAgdG90YWxTaXplICs9IG1fdG90YWxT
aXplc1tpXTsKKworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1l
bW9yeUJsb2NrPiA+IGRvbUNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1l
bW9yeUJsb2NrPjo6Y3JlYXRlKCk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxk
cmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbT3RoZXJdLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVP
dGhlcik7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3Rv
dGFsU2l6ZXNbRE9NXSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlRE9NKTsKKyAgICAgICAgYWRk
TWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tDU1NdLCBNZW1v
cnlCbG9ja05hbWU6OmRvbVRyZWVDU1MpOworCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4gZG9tID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVt
b3J5QmxvY2tOYW1lOjpkb20pOworICAgICAgICBkb20tPnNldFNpemUodG90YWxTaXplKTsKKyAg
ICAgICAgZG9tLT5zZXRDaGlsZHJlbihkb21DaGlsZHJlbi5yZWxlYXNlKCkpOworICAgICAgICBy
ZXR1cm4gZG9tLnJlbGVhc2UoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lk
IGNvdW50T2JqZWN0U2l6ZShPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG9iamVjdFR5cGUgPj0gMCAmJiBvYmplY3RUeXBlIDwgTGFzdFR5
cGVFbnRyeSk7CisgICAgICAgIG1fdG90YWxTaXplc1tvYmplY3RUeXBlXSArPSBzaXplOworICAg
IH0KKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQqIG9iamVjdCkKKyAgICB7
CisgICAgICAgIHJldHVybiAhbV92aXNpdGVkT2JqZWN0cy5hZGQob2JqZWN0KS5pc05ld0VudHJ5
OworICAgIH0KKyAgICBzaXplX3QgbV90b3RhbFNpemVzW0xhc3RUeXBlRW50cnldOworICAgIHR5
cGVkZWYgSGFzaFNldDxjb25zdCB2b2lkKj4gVmlzaXRlZE9iamVjdHM7CisgICAgVmlzaXRlZE9i
amVjdHMgbV92aXNpdGVkT2JqZWN0czsKK307CisKK2NsYXNzIERPTVRyZWVzSXRlcmF0b3IgOiBw
dWJsaWMgRE9NV3JhcHBlclZpc2l0b3IgeworcHVibGljOgorICAgIERPTVRyZWVzSXRlcmF0b3Io
UGFnZSogcGFnZSkgOiBtX3BhZ2UocGFnZSkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRO
b2RlKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSAmJiBtX3BhZ2UgIT0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIE5vZGUqIHJvb3ROb2RlID0gbm9kZTsKKyAgICAg
ICAgd2hpbGUgKHJvb3ROb2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICByb290Tm9kZSA9
IHJvb3ROb2RlLT5wYXJlbnROb2RlKCk7CisKKyAgICAgICAgaWYgKG1fcm9vdHMuY29udGFpbnMo
cm9vdE5vZGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Jvb3RzLmFkZChyb290
Tm9kZSk7CisgICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UucmVwb3J0U2l6ZShyb290Tm9kZSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRlcm5hbFN0cmluZyhTdHJpbmdJbXBs
KiBzdHJpbmcpIHsgfQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVt
cFN0YXRpc3RpY3MoKSB7IHJldHVybiBtX2RvbU1lbW9yeVVzYWdlLmR1bXBTdGF0aXN0aWNzKCk7
IH0KKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PE5vZGUqPiBtX3Jvb3RzOworICAgIFBhZ2UqIG1f
cGFnZTsKKyAgICBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIG1fZG9tTWVtb3J5
VXNhZ2U7Cit9OworCit9CisKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiBkb21UcmVlSW5mbyhQYWdlKiBwYWdlKQoreworICAgIERPTVRyZWVzSXRlcmF0b3IgZG9tVHJl
ZXNJdGVyYXRvcihwYWdlKTsKKyAgICBTY3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJz
KCZkb21UcmVlc0l0ZXJhdG9yKTsKKworICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJl
YWNoYWJsZSBmcm9tIHRoZSBtYWluIGZyYW1lIGFyZSBhY2NvdW50ZWQuCisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBmcmFtZS0+
ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGRvbVRyZWVzSXRlcmF0b3IudmlzaXROb2RlKGRvYyk7
CisgICAgfQorCisgICAgcmV0dXJuIGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoKTsK
K30KKwogc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hl
SW5mbygpCiB7CiAgICAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3Mgc3RhdHMgPSBtZW1vcnlDYWNo
ZSgpLT5nZXRTdGF0aXN0aWNzKCk7CkBAIC0zOTEsMTIgKzQ4MSwxMiBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gbWVtb3J5Q2FjaGVJbmZvKCkKICAgICBtZW1vcnlD
YWNoZVN0YXRzLT5zZXRTaXplKHRvdGFsU2l6ZSk7CiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7Ci0gICAgYWRkTWVtb3J5QmxvY2tG
b3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmltYWdlcywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRJ
bWFnZXMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5jc3NT
dHlsZVNoZWV0cywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7Ci0gICAg
YWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMsIE1lbW9yeUJs
b2NrTmFtZTo6Y2FjaGVkU2NyaXB0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4u
Z2V0KCksIHN0YXRzLnhzbFN0eWxlU2hlZXRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0
eWxlU2hlZXRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMu
Zm9udHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOwotICAgIG1lbW9yeUNhY2hlU3Rh
dHMtPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJl
bi5nZXQoKSwgc3RhdHMuaW1hZ2VzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkSW1hZ2Vz
KTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuY3NzU3R5bGVT
aGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7CisgICAg
YWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMuc2l6ZSwgTWVt
b3J5QmxvY2tOYW1lOjpjYWNoZWRTY3JpcHRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGls
ZHJlbi5nZXQoKSwgc3RhdHMueHNsU3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpj
YWNoZWRYc2xTdHlsZVNoZWV0cyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0
KCksIHN0YXRzLmZvbnRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOworICAg
IG1lbW9yeUNhY2hlU3RhdHMtPnNldENoaWxkcmVuKGNoaWxkcmVuLmdldCgpKTsKICAgICByZXR1
cm4gbWVtb3J5Q2FjaGVTdGF0cy5yZWxlYXNlKCk7CiB9CiAKQEAgLTQxMyw2ICs1MDMsNyBAQCB2
b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPElucwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGluc3BlY3RvckRh
dGEoKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0obWVtb3J5Q2FjaGVJbmZvKCkpOwogICAgIGNo
aWxkcmVuLT5hZGRJdGVtKHJlbmRlclRyZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0
IGZvciBhbGwgcGFnZXM/CisgICAgY2hpbGRyZW4tPmFkZEl0ZW0oZG9tVHJlZUluZm8obV9wYWdl
KSk7IC8vIFRPRE86IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KICAgICBwcm9jZXNzTWVtb3J5LT5z
ZXRDaGlsZHJlbihjaGlsZHJlbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YjBhYmVhMjJhMjFlMDJmYzIwMWRjNmYwM2FkNzkxNzFhZDljODg4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlv
bi5oCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRp
b25faAorI2RlZmluZSBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25faAorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVjdG9yTWVtb3J5
SW5zdHJ1bWVudGF0aW9uIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JNZW1vcnlJ
bnN0cnVtZW50YXRpb24oKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZv
aWQgcmVwb3J0U2l6ZShjb25zdCBUKiBjb25zdCBvYmplY3QpCisgICAgeworICAgICAgICBpZiAo
IW9iamVjdCB8fCB2aXNpdGVkKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IgYWdncmVhZ3Rvcih0aGlzKTsKKyAgICAgICAgcmVwb3J0
U2l6ZUltcGwob2JqZWN0LCAgJmFnZ3JlYWd0b3IpOworICAgIH0KKworICAgIGVudW0gT2JqZWN0
VHlwZSB7CisgICAgICAgIE90aGVyID0gMCwKKyAgICAgICAgRE9NID0gMSwKKyAgICAgICAgQ1NT
ID0gMiwKKyAgICAgICAgTGFzdFR5cGVFbnRyeSA9IDMKKyAgICB9OworCisgICAgY2xhc3MgT2Jq
ZWN0TWVtb3J5QWdncmVnYXRvciB7CisgICAgcHVibGljOgorICAgICAgICBPYmplY3RNZW1vcnlB
Z2dyZWdhdG9yKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zcGVjdG9yTWVtb3J5
SW5zdHJ1bWVudGF0aW9uKQorICAgICAgICAgICAgOiBtX2luc3BlY3Rvck1lbW9yeUluc3RydW1l
bnRhdGlvbihpbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgICAgICAgICAsIG1f
dHlwZShPdGhlcikKKyAgICAgICAgeyB9CisKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+
CisgICAgICAgIHNpemVfdCByZXBvcnRNZW1iZXIoY29uc3QgUCogY29uc3QgbWVtYmVyUG9pbnRl
cikKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRp
b24tPnJlcG9ydFNpemUobWVtYmVyUG9pbnRlcik7CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9m
KFApOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+CisgICAgICAg
IHNpemVfdCByZXBvcnRNZW1iZXIoY29uc3QgT3duUHRyPFA+JiBtZW1iZXJQb2ludGVyKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVw
b3J0U2l6ZShtZW1iZXJQb2ludGVyLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBzaXplb2Yo
T3duUHRyPFA+KTsKKyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgor
ICAgICAgICBzaXplX3QgcmVwb3J0TWVtYmVyKGNvbnN0IFJlZlB0cjxQPiYgbWVtYmVyUG9pbnRl
cikKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRp
b24tPnJlcG9ydFNpemUobWVtYmVyUG9pbnRlci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4g
c2l6ZW9mKFJlZlB0cjxQPik7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTz4KKyAgICAgICAgc2l6ZV90IHJlcG9ydE1lbWJlclN0cnVjdHVyZShjb25zdCBPJiBtZW1i
ZXJPYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5yZXBvcnRTdHJ1Y3R1cmVJbXBsKG1lbWJlck9iamVjdCk7CisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVwb3J0VHlwZShPYmplY3RU
eXBlIHR5cGUpIHsgbV90eXBlID0gbV90eXBlID09IE90aGVyID8gdHlwZSA6IG1fdHlwZTsgfQor
ICAgICAgICBPYmplY3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9pbnNw
ZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb247CisgICAgICAgIE9iamVjdFR5cGUgbV90eXBlOwor
ICAgIH07CisKK3ByaXZhdGU6CisgICAgLy8gSW1wbGVtZW50YXRpb24gZm9yIGluc3RydW1lbnRl
ZCBjbGFzc2VzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0U2l6
ZUltcGwoY29uc3QgVCogY29uc3Qgb2JqZWN0LCB0eXBlbmFtZSBUOjpPYmplY3RNZW1vcnlBZ2dy
ZWdhdG9yKiBhZ2dyZWdhdG9yKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBvYmplY3Qt
PnJlcG9ydE1lbW9yeVVzYWdlKGFnZ3JlZ2F0b3IpOworICAgICAgICBjb3VudE9iamVjdFNpemUo
YWdncmVnYXRvci0+dHlwZSgpLCBzaXplKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KKyAgICB2b2lkIHJlcG9ydFN0cnVjdHVyZUltcGwoY29uc3QgVCYgb2JqZWN0LCB0eXBl
bmFtZSBUOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yKiBhZ2dyZWdhdG9yKQorICAgIHsKKyAgICAg
ICAgb2JqZWN0LnJlcG9ydE1lbW9yeVVzYWdlKGFnZ3JlZ2F0b3IpOworICAgIH0KKworICAgIC8v
IEltcGxlbWVudGF0aW9uIGZvciBfTk9UXyBpbnN0cnVtZW50ZWQgY2xhc3Nlcy4KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlcG9ydFNpemVJbXBsKGNvbnN0IFQqIGNvbnN0
LCAuLi4pCisgICAgeworICAgICAgICBjb3VudE9iamVjdFNpemUoT3RoZXIsIHNpemVvZihUKSk7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZXBvcnRTdHJ1
Y3R1cmVJbXBsKGNvbnN0IFQmLCAuLi4pCisgICAgeworICAgICAgICAvLyBXZSBjYW4ndCBjYWxs
IHJlcG9ydE1lbW9yeVVzYWdlIGJlY2F1c2Ugb2JqZWN0J3MgY2xhc3MgaXNuJ3QgaW5zdHJ1bWVu
dGVkIHlldC4KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKE9iamVj
dFR5cGUsIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQq
KSA9IDA7Cit9OworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFFTkFC
TEUoSU5TUEVDVE9SKQorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvck1lbW9yeUluc3RydW1l
bnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJl
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDJlYmRiMWQx
YzU5NzhkMWYwYzdlZjMyZmRjYjRkYzM2MGZmYzUyZjQuLmU5NDhkNTdhOWMyOWUzZmQwODdiMDky
MmNiOWRlNGFjNTlkMTRjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ry
ZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAg
LTExMSw2ICsxMTEsMTQgQEAgcHVibGljOgogICAgIGJvb2wgbV9pblJlbW92ZWRMYXN0UmVmRnVu
Y3Rpb247CiAjZW5kaWYKIAorICAgIHR5cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpPYmplY3RNZW1vcnlBZ2dyZWdhdG9yIE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3I7CisgICAg
c2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE9iamVjdE1lbW9yeUFnZ3JlZ2F0b3IqIG9iamVjdE1l
bW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBvYmplY3RNZW1vcnlBZ2dyZWdh
dG9yLT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAg
ICAgICAgb2JqZWN0TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fcGFyZW50KTsKKyAg
ICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogI2lmbmRlZiBO
REVCVUcKICAgICBmcmllbmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFy
ZW50Tm9kZVR5cGU+Kik7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBi
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVmYjU4N2JhYTMxYzYxYWM3MGEyZGNl
ODFmZDg4N2E0OGUwZWRkYjkuLmJjMGZiOGVhZjY0Mjk1NDJmYjEzZTE5MjE1OGY4MDhlMDViMmQ5
MGUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDYtMjAgIElseWEgVGlr
aG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHBhcnRpYWxseSBpbnN0cnVtZW50IERPTSBUcmVlIG5hdGl2ZSBtZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU2OAorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24gY2xhc3MgdGhhdCBj
b3VudHMgYWxsIHZpc2l0ZWQKKyAgICAgICAgb2JqZWN0cyBhbmQgY2FsbHMgcmVwb3J0TWVtb3J5
VXNhZ2UgaWYgdGhlIG9iamVjdCdzIGNsYXNzIGhhcyBzdWNoIG1ldGhvZC4KKyAgICAgICAgQWN0
dWFsbHkgc3VjaCBkZXRlY3Rpb24gaGFwcGVucyB3aXRoIGhlbHAgb2YgT2JqZWN0TWVtb3J5QWdn
cmVnYXRvciB0eXBlZGVmLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbDoKKwogMjAx
Mi0wNi0xOCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogbmF0aXZlIG1lbW9yeSBzbmFwc2hvdCBwZXJmb3JtYW5jZSBhbmQg
Y292ZXJhZ2UgdGVzdCBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbCBiL1BlcmZvcm1hbmNlVGVz
dHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbAppbmRleCAyYWUwNWJhNTdm
NzViNGVmM2E4ODY3Yjg3ZTMzZDQ1MGExMDRkMjU5Li4zODY1M2E3NDIyNDk3MmU0MDliZWNjMWUz
ZmIwNDQ3ZTc5YWE1MmMwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9u
YXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0
b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sCkBAIC0xLDUgKzEsMTcgQEAKIDxodG1sPgog
PGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgc3BhbiB7CisgICAgICBjb2xv
cjpyZWQ7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDIwcHg7CisgICAgfQor
ICAgIGRpdiB7CisgICAgICBjb2xvcjpibHVlOworICAgICAgd2lkdGg6IDUwcHg7CisgICAgICBo
ZWlnaHQ6IDEwcHg7CisgICAgfQorICA8L3N0eWxlPgogICA8c2NyaXB0IHNyYz0iLi4vLi4vTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgogICA8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgpAQCAtMzksOCArNTEsMTIgQEAgZnVuY3Rpb24gY3JlYXRlRE9NVHJlZShlbGVtZW50c0NvdW50
KQogewogICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RUcmVlUm9v
dCIpOwogCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyArK2kpCi0gICAg
ICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzQ291bnQ7ICsraSkgeworICAgICAgICB2YXIg
c3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgc3Bhbi5pZCA9
ICJzcGFuXyIgKyBpOworICAgICAgICBzcGFuLnN0eWxlLndpZHRoID0gIjEwcHgiOworICAgICAg
ICByb290LmFwcGVuZENoaWxkKHNwYW4pOworICAgIH0KIAogICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZWxlbWVudHNDb3VudDsgKytpKQogICAgICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148747</attachid>
            <date>2012-06-21 01:39:16 -0700</date>
            <delta_ts>2012-06-21 01:52:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89568-20120621123914.patch</filename>
            <type>text/plain</type>
            <size>29640</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMzNjY2MwOTViMzlj
MTM5MzQ5NDUyZjY4YjMzMDA0YjkzNGM2Ni4uNWY1ZDFkOWI4OGRjZjcxZTFkNTgwNzNhMTY2YmNj
NTZjNDllZDVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA2LTIxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRo
YXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1l
bW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBh
YmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFw
cGFibGUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcG9y
dE1lbW9yeVVzYWdlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9F
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBvcnRNZW1vcnlV
c2FnZSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgor
ICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZp
ZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05h
bWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9j
a0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjptZW1vcnlDYWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246On5JbnNwZWN0b3JNZW1vcnlJ
bnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRTaXplKToKKyAgICAgICAgKEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJ
bnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yOjpJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zcGVjdG9y
TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcjo6cmVw
b3J0TWVtYmVyU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6SW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3BlY3Rv
ck1lbW9yeUFnZ3JlZ2F0b3I6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFN0cnVjdHVyZUltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFy
ZWQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorCiAyMDEyLTA2
LTIxICBUYWlqdSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBNb3ZlIHJlcXVlc3RJZCBhbGxvY2F0aW9uIGZyb20gRmlsZVN5c3RlbSBmcm9udGVu
ZCB0byBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ODVkYjlhNzA3
Zjg2Y2ZhYzc5ODMxN2MxNWRmYWQxMjhmYmIzNWRhLi45MDllMDE1Y2ViMjI0NWU2MThkZGNiYjY1
YmUwNDE3OWMyNDQ5MzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI3MTEs
NiArMjcxMSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYjlkZGY5MzU2ZTJiMmJlOGQyZmE4NDA4
MzM5NjQ5YjFhNTQ5MGY0Yy4uODJkNzJjNWJjYWRlNjY0YzI2NTExYWE2NDQyZTU3ZWEzZWFjZGYx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCkBAIC0yMDY3LDYgKzIwNjcsNyBAQCBIRUFERVJTICs9IFwKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIFwK
KyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggYjRmMTQxYTFjYjI2NTY3YmZlODQ5MTFlODRlMmNjYzgzYmFi
ZWRlYS4uMGMwYjk4NjAxMDJhZGFhODFhYmFhNjRiODA2NTcyMDRhYTZkM2Y1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMjgxNyw2ICsyODE3LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDA1NmY4OTRiNmUy
MzM5MDJiZjQzMjE1MDMxODJlNjczNTJmNGVmMWEuLjJhYjE3NmE0MGZiYmNjNTU5ZTUyYzhjMjFm
MTNmYjZmYTViOTJkYTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC03NDAxNSw2ICs3NDAxNSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgogCQkJCT4KIAkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFdyYXBwYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3Jh
cHBhYmxlLmgKaW5kZXggNTA4YTkzNzAwNDYwZjAxMjExMDlkNWZlZTJhNjhlYTk4ZjkyZGZmZi4u
YTQyZjk0M2U4MjIxMDExNjViYzg1OGExMTE4MzA1MGRhZTFjNTllZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKQEAgLTU0LDYgKzU0LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgd2Vha0NsZWFyKG1fd3JhcHBlciwgd3JhcHBlcik7CiAgICAgfQogCisg
ICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IqIGlu
c3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpbnNwZWN0b3JN
ZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlv
bjo6RE9NKTsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVy
U3RydWN0dXJlKG1fd3JhcHBlcik7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAg
IH0KKwogcHJpdmF0ZToKICAgICBKU0M6OldlYWs8SlNET01XcmFwcGVyPiBtX3dyYXBwZXI7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA4
NTA5OTRhYmI3MWYyY2U4YTQ2ZDVkZjdiMzU2YWU4Zjc4MmNmYWE2Li5hOGY4MmU3YmI3OGQ3MDg1
MGZlZmI4MDlkYzc0Zjc5ZjJiNjRiYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRXcmFwcGFibGUuaApAQCAtNTIsNiArNTIsMTMgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBjbGVhcldyYXBwZXIoKSB7IG1fd3JhcHBlciA9IDA7IH0KIAorICAgIHNpemVfdCByZXBvcnRN
ZW1vcnlVc2FnZShJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKiBpbnNwZWN0b3JNZW1vcnlBZ2dy
ZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+
cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3BlY3Rvck1lbW9y
eUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRv
ci0+cmVwb3J0TWVtYmVyKG1fd3JhcHBlcik7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMp
OworICAgIH0KKwogcHJpdmF0ZToKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiogbV93
cmFwcGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5
U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCmluZGV4IDc0Y2Uw
NzlhNDczMzFmNWU0MjdiNTFmZWU5Y2YwYmMzOTQ5OTc1MzguLjRlZDk0MTRkNjkxNWE3OWFhNjRi
MzI4NGE1NjYzZDFlZjJlOTEwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
aApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtMTE1LDYgKzExNiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93
U3R5bGUoKTsKICNlbmRpZgogICAgIAorICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShJbnNw
ZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKiBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNw
ZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgICAgIGlmIChtX2lzTXV0YWJs
ZSkKKyAgICAgICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlciht
X211dGFibGVQcm9wZXJ0eVZlY3Rvcik7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOwor
ICAgIH0KIHByaXZhdGU6CiAgICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2RlKTsKICAg
ICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25l
ZCBjb3VudCwgQ1NTUGFyc2VyTW9kZSwgYm9vbCBtYWtlTXV0YWJsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaAppbmRleCBiZThjNzhlNGQ1ZjEwNTY3ZDRlNTU5YmFiZmJmZTYwZjkxNmZm
ZTNjLi5mYmVjZThkYjM5MWU4NTY4ZTRmYmU3YjExZmQ5ZGJmOTdlMGQyMjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTk5LDYgKzk5LDE1IEBAIHB1YmxpYzoKICAgICBOb2Rl
KiB0cmF2ZXJzZU5leHROb2RlKCkgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZShj
b25zdCBOb2RlKiBzdGF5V2l0aGluKSBjb25zdDsKIAorICAgIHZpcnR1YWwgc2l6ZV90IHJlcG9y
dE1lbW9yeVVzYWdlKEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IqIGluc3BlY3Rvck1lbW9yeUFn
Z3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9y
LT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAg
ICAgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcik7Cisg
ICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlcihtX2ZpcnN0Q2hp
bGQpOworICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9s
YXN0Q2hpbGQpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByb3Rl
Y3RlZDoKICAgICBDb250YWluZXJOb2RlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENy
ZWF0ZUNvbnRhaW5lcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGRlM2YwYzVhZjE0ZTA1MDZl
NjExNWM5ZmRkNjk4ODY1YTliMzA4M2IuLmY2YTQxZWI0YTRiNzM2OWY1NjVjYmU1YmE3ZWVmM2Y1
NWJhODFlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDIxLDYgKzQyMSwxNiBAQCBwdWJsaWM6
CiAgICAgSW50U2l6ZSBzYXZlZExheWVyU2Nyb2xsT2Zmc2V0KCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmKTsKIAorICAgIHR5cGVkZWYg
SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9y
IEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3I7CisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0TWVt
b3J5VXNhZ2UoSW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvciogaW5zcGVjdG9yTWVtb3J5QWdncmVn
YXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJl
cG9ydFR5cGUoSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBD
b250YWluZXJOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9y
KTsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3RydWN0
dXJlKG1fdGFnTmFtZSk7CisgICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9y
dE1lbWJlcihtX2F0dHJpYnV0ZURhdGEpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsK
KyAgICB9CisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICAg
ICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50QXR0cmlidXRlRGF0YS5oCmluZGV4IDhiMWIzMThmZTk5ZGU0YjIxZThmZGY2MTZiZWEwZTU5
YmQyZWZmMzUuLmYyOGQ1NjYyMGM1ZTNjZjhkOTdhZjNmYjU5ZDJmZjg1NGJlYzg0NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIEVsZW1lbnRBdHRyaWJ1dGVEYXRhX2gKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5o
IgorI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IlNwYWNlU3BsaXRTdHJpbmcuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5j
bHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC05OSw2ICsxMDAsMTcgQEAgcHVibGljOgogICAgIFBh
c3NSZWZQdHI8QXR0cj4gYXR0cklmRXhpc3RzKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgUGFzc1JlZlB0cjxBdHRyPiBlbnN1cmVBdHRyKEVsZW1lbnQqLCBjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoSW5zcGVjdG9yTWVt
b3J5QWdncmVnYXRvciogaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFR5cGUoSW5zcGVjdG9yTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdh
dG9yLT5yZXBvcnRNZW1iZXIobV9pbmxpbmVTdHlsZURlY2wpOworICAgICAgICBpbnNwZWN0b3JN
ZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9hdHRyaWJ1dGVTdHlsZSk7CisgICAgICAg
IGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX2NsYXNz
TmFtZXMpOworICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJT
dHJ1Y3R1cmUobV9pZEZvclN0eWxlUmVzb2x1dGlvbik7CisgICAgICAgIGluc3BlY3Rvck1lbW9y
eUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX2F0dHJpYnV0ZXMpOworICAgICAg
ICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIEVsZW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IGM5YmU2NTc1ZTQxZTI4ZTg3N2Q4ZTUwZTk4ZmUyZDhhNWE3MWZlY2Yu
LjEzYzAyNWNkMTllZThkYjgzYzgwMzczNWU5ZjVlYzVmOWM0NDBlNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKQEAgLTI5MTMsNiArMjkxMywxNyBAQCB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKICAg
ICBkZWxldGUgdGhpczsKIH0KIAorc2l6ZV90IE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKEluc3Bl
Y3Rvck1lbW9yeUFnZ3JlZ2F0b3IqIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0Cit7
CisgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1v
cnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJO
b2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UoaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcik7CisgICAg
U2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShpbnNwZWN0b3JNZW1vcnlBZ2dyZWdh
dG9yKTsKKyAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9kb2N1
bWVudCk7CisgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fbmV4
dCk7CisgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fcHJldmlv
dXMpOworICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAyNjU5MTJkMDE4N2E3MGU4NDFm
NTRlNzA2YzUwNzA1ZGMwZjY3NDg1Li40NjZjNTliYWZmNzJiNjdhY2RmOTAzNzRkNzliMjIwZmMx
YmI1N2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkVkaXRp
bmdCb3VuZGFyeS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNs
dWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCkBA
IC02NTYsNiArNjU3LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2NvcGVkSFRNTFN0eWxlQ2hp
bGQoKSBjb25zdDsKICAgICBzaXplX3QgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbigp
IGNvbnN0OwogCisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoSW5zcGVjdG9y
TWVtb3J5QWdncmVnYXRvciopIGNvbnN0OworCiBwcml2YXRlOgogICAgIGVudW0gTm9kZUZsYWdz
IHsKICAgICAgICAgSXNUZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApp
bmRleCA2MzZiMmE1MTUwYzllOTg3YzAyN2U3NTY5NzkyZDliYWMzNGE4OWU5Li5hZjRiOWJjY2Rj
ODE1OGIwM2RiMGYxMzBiNzFlOTQzZjYwNmIzNGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWRO
YW1lLmgKQEAgLTIxLDYgKzIxLDggQEAKICNpZm5kZWYgUXVhbGlmaWVkTmFtZV9oCiAjZGVmaW5l
IFF1YWxpZmllZE5hbWVfaAogCisjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmgiCisKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC00OCw2ICs1
MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZTsK
ICAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWVVcHBlcjsKIAorICAgICAg
ICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoSW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvciogaW5z
cGVjdG9yTWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaW5z
cGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkRPTSk7CisgICAgICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yLT5y
ZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9wcmVmaXgpOworICAgICAgICAgICAgaW5zcGVjdG9yTWVt
b3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fbG9jYWxOYW1lKTsKKyAgICAg
ICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZSht
X25hbWVzcGFjZSk7CisgICAgICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yLT5yZXBv
cnRNZW1iZXJTdHJ1Y3R1cmUobV9sb2NhbE5hbWVVcHBlcik7CisgICAgICAgICAgICByZXR1cm4g
c2l6ZW9mKCp0aGlzKTsKKyAgICAgICAgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFF1YWxpZmll
ZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCiAgICAgICAgICAg
ICA6IG1fcHJlZml4KHByZWZpeCkKQEAgLTkyLDYgKzEwMywxMiBAQCBwdWJsaWM6CiAgICAgLy8g
SW5pdCByb3V0aW5lIGZvciBnbG9iYWxzCiAgICAgc3RhdGljIHZvaWQgaW5pdCgpOwogICAgIAor
ICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKiBp
bnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgaW5zcGVjdG9y
TWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRp
b246OkRPTSk7CisgICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJl
cihtX2ltcGwpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CiBwcml2YXRl
OgogICAgIHZvaWQgaW5pdChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKICAg
ICB2b2lkIHJlZigpIGNvbnN0IHsgbV9pbXBsLT5yZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggNzUyZjcyODU3ZGI5
YzEwNjZkNDFlNDExOTE5MWEwZTFjZWI2OWVjOC4uMjc1OTY2MDEzZDU4NjAyYTJjYzFjYjQyZjBi
ZTQ3YTRlMTExNWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0
ZW5lck1hcC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKQEAgLTc3LDYgKzc4LDExIEBAIHN0YXRpYyBj
b25zdCBjaGFyIGNhY2hlZFhzbFN0eWxlU2hlZXRzW10gPSAiQ2FjaGVkWHNsU3R5bGVTaGVldHMi
Owogc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkRm9udHNbXSA9ICJDYWNoZWRGb250cyI7CiBzdGF0
aWMgY29uc3QgY2hhciByZW5kZXJUcmVlVXNlZFtdID0gIlJlbmRlclRyZWVVc2VkIjsKIHN0YXRp
YyBjb25zdCBjaGFyIHJlbmRlclRyZWVBbGxvY2F0ZWRbXSA9ICJSZW5kZXJUcmVlQWxsb2NhdGVk
IjsKKworc3RhdGljIGNvbnN0IGNoYXIgZG9tW10gPSAiRE9NIjsKK3N0YXRpYyBjb25zdCBjaGFy
IGRvbVRyZWVPdGhlcltdID0gIkRPTVRyZWVPdGhlciI7CitzdGF0aWMgY29uc3QgY2hhciBkb21U
cmVlRE9NW10gPSAiRE9NVHJlZURPTSI7CitzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlQ1NTW10g
PSAiRE9NVHJlZUNTUyI7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC0xNzcsMTAgKzE4Myw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNvbGxlY3RMaXN0ZW5lcnNJbmZvKG5vZGUpOwogICAgIH0KIAotICAg
IHZvaWQgY29sbGVjdENoYXJhY3RlckRhdGEoTm9kZSopCi0gICAgewotICAgIH0KLQogICAgIHZv
aWQgY29sbGVjdE5vZGVOYW1lSW5mbyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgU3RyaW5n
IG5hbWUgPSBub2RlTmFtZShub2RlKTsKQEAgLTM3MiwxMyArMzc0LDEwMSBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVuZGVyVHJlZUluZm8oUGFnZSogcGFnZSkK
ICAgICByZXR1cm4gcmVuZGVyVHJlZUFsbG9jYXRlZC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4qIGFycmF5LCBjb25zdCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYyYgc3RhdGlzdGlj
LCBjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIHZvaWQgYWRkTWVtb3J5QmxvY2tGb3IoVHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXksIHNpemVfdCBzaXplLCBj
b25zdCBjaGFyKiBuYW1lKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVz
dWx0ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUobmFtZSk7Ci0gICAg
cmVzdWx0LT5zZXRTaXplKHN0YXRpc3RpYy5zaXplKTsKKyAgICByZXN1bHQtPnNldFNpemUoc2l6
ZSk7CiAgICAgYXJyYXktPmFkZEl0ZW0ocmVzdWx0KTsKIH0KIAorbmFtZXNwYWNlIHsKKworY2xh
c3MgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCA6IHB1YmxpYyBJbnNwZWN0b3JN
ZW1vcnlJbnN0cnVtZW50YXRpb24geworcHVibGljOgorICAgIEluc3BlY3Rvck1lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwoKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBMYXN0
VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAgICBtX3RvdGFsU2l6ZXNbaV0gPSAwOworICAgIH0K
KworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBTdGF0aXN0aWNzKCkK
KyAgICB7CisgICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOworICAgICAgICBmb3IgKGludCBp
ID0gT3RoZXI7IGkgPCBMYXN0VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAgICB0b3RhbFNpemUg
Kz0gbV90b3RhbFNpemVzW2ldOworCisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gZG9tQ2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tG
b3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tPdGhlcl0sIE1lbW9yeUJsb2NrTmFt
ZTo6ZG9tVHJlZU90aGVyKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4u
Z2V0KCksIG1fdG90YWxTaXplc1tET01dLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVET00pOwor
ICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVz
W0NTU10sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUNTUyk7CisKKyAgICAgICAgUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2NrPiBkb20gPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCku
c2V0TmFtZShNZW1vcnlCbG9ja05hbWU6OmRvbSk7CisgICAgICAgIGRvbS0+c2V0U2l6ZSh0b3Rh
bFNpemUpOworICAgICAgICBkb20tPnNldENoaWxkcmVuKGRvbUNoaWxkcmVuLnJlbGVhc2UoKSk7
CisgICAgICAgIHJldHVybiBkb20ucmVsZWFzZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90
IHNpemUpCisgICAgeworICAgICAgICBBU1NFUlQob2JqZWN0VHlwZSA+PSAwICYmIG9iamVjdFR5
cGUgPCBMYXN0VHlwZUVudHJ5KTsKKyAgICAgICAgbV90b3RhbFNpemVzW29iamVjdFR5cGVdICs9
IHNpemU7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCogb2Jq
ZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3Zpc2l0ZWRPYmplY3RzLmFkZChvYmplY3Qp
LmlzTmV3RW50cnk7CisgICAgfQorICAgIHNpemVfdCBtX3RvdGFsU2l6ZXNbTGFzdFR5cGVFbnRy
eV07CisgICAgdHlwZWRlZiBIYXNoU2V0PGNvbnN0IHZvaWQqPiBWaXNpdGVkT2JqZWN0czsKKyAg
ICBWaXNpdGVkT2JqZWN0cyBtX3Zpc2l0ZWRPYmplY3RzOworfTsKKworY2xhc3MgRE9NVHJlZXNJ
dGVyYXRvciA6IHB1YmxpYyBET01XcmFwcGVyVmlzaXRvciB7CitwdWJsaWM6CisgICAgRE9NVHJl
ZXNJdGVyYXRvcihQYWdlKiBwYWdlKSA6IG1fcGFnZShwYWdlKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdE5vZGUoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5kb2N1
bWVudCgpLT5mcmFtZSgpICYmIG1fcGFnZSAhPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5w
YWdlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgTm9kZSogcm9vdE5vZGUgPSBu
b2RlOworICAgICAgICB3aGlsZSAocm9vdE5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAg
IHJvb3ROb2RlID0gcm9vdE5vZGUtPnBhcmVudE5vZGUoKTsKKworICAgICAgICBpZiAobV9yb290
cy5jb250YWlucyhyb290Tm9kZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcm9v
dHMuYWRkKHJvb3ROb2RlKTsKKyAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5yZXBvcnRTaXplKHJv
b3ROb2RlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0V4dGVybmFsU3RyaW5n
KFN0cmluZ0ltcGwqIHN0cmluZykgeyB9CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9y
eUJsb2NrPiBkdW1wU3RhdGlzdGljcygpIHsgcmV0dXJuIG1fZG9tTWVtb3J5VXNhZ2UuZHVtcFN0
YXRpc3RpY3MoKTsgfQorCitwcml2YXRlOgorICAgIEhhc2hTZXQ8Tm9kZSo+IG1fcm9vdHM7Cisg
ICAgUGFnZSogbV9wYWdlOworICAgIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwg
bV9kb21NZW1vcnlVc2FnZTsKK307CisKK30KKworc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9y
TWVtb3J5QmxvY2s+IGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UpCit7CisgICAgRE9NVHJlZXNJdGVy
YXRvciBkb21UcmVlc0l0ZXJhdG9yKHBhZ2UpOworICAgIFNjcmlwdFByb2ZpbGVyOjp2aXNpdEpT
RE9NV3JhcHBlcnMoJmRvbVRyZWVzSXRlcmF0b3IpOworCisgICAgLy8gTWFrZSBzdXJlIGFsbCBk
b2N1bWVudHMgcmVhY2hhYmxlIGZyb20gdGhlIG1haW4gZnJhbWUgYXJlIGFjY291bnRlZC4KKyAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoRG9jdW1lbnQqIGRv
YyA9IGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZG9tVHJlZXNJdGVyYXRvci52aXNp
dE5vZGUoZG9jKTsKKyAgICB9CisKKyAgICByZXR1cm4gZG9tVHJlZXNJdGVyYXRvci5kdW1wU3Rh
dGlzdGljcygpOworfQorCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4g
bWVtb3J5Q2FjaGVJbmZvKCkKIHsKICAgICBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBzdGF0cyA9
IG1lbW9yeUNhY2hlKCktPmdldFN0YXRpc3RpY3MoKTsKQEAgLTM5MSwxMiArNDgxLDEyIEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBtZW1vcnlDYWNoZUluZm8oKQog
ICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldFNpemUodG90YWxTaXplKTsKIAogICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKLSAgICBhZGRN
ZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuaW1hZ2VzLCBNZW1vcnlCbG9ja05h
bWU6OmNhY2hlZEltYWdlcyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCks
IHN0YXRzLmNzc1N0eWxlU2hlZXRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZENzc1N0eWxlU2hl
ZXRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuc2NyaXB0
cywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRTY3JpcHRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0Zv
cihjaGlsZHJlbi5nZXQoKSwgc3RhdHMueHNsU3R5bGVTaGVldHMsIE1lbW9yeUJsb2NrTmFtZTo6
Y2FjaGVkWHNsU3R5bGVTaGVldHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdl
dCgpLCBzdGF0cy5mb250cywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRGb250cyk7Ci0gICAgbWVt
b3J5Q2FjaGVTdGF0cy0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAgIGFkZE1lbW9yeUJsb2Nr
Rm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFnZXMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpj
YWNoZWRJbWFnZXMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0
cy5jc3NTdHlsZVNoZWV0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZENzc1N0eWxlU2hl
ZXRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuc2NyaXB0
cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFNjcmlwdHMpOworICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy54c2xTdHlsZVNoZWV0cy5zaXplLCBNZW1vcnlC
bG9ja05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0Zvcihj
aGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRG
b250cyk7CisgICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4uZ2V0KCkp
OwogICAgIHJldHVybiBtZW1vcnlDYWNoZVN0YXRzLnJlbGVhc2UoKTsKIH0KIApAQCAtNDEzLDYg
KzUwMyw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0
cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zCiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0o
aW5zcGVjdG9yRGF0YSgpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShtZW1vcnlDYWNoZUluZm8o
KSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8obV9wYWdlKSk7IC8vIFRP
RE86IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KKyAgICBjaGlsZHJlbi0+YWRkSXRlbShkb21UcmVl
SW5mbyhtX3BhZ2UpKTsgLy8gVE9ETzogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwogICAgIHByb2Nl
c3NNZW1vcnktPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM4MTE0NjA0MTJhYzU3NjBjMzEwODIzZWJkOTdhMDg3MTNlZDdmYmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3Rvck1lbW9yeUlu
c3RydW1lbnRhdGlvbl9oCisjZGVmaW5lIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbl9o
CisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlv
biB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KCkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlcG9ydFNpemUo
Y29uc3QgVCogY29uc3Qgb2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKCFvYmplY3QgfHwgdmlz
aXRlZChvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBJbnNwZWN0b3JNZW1v
cnlBZ2dyZWdhdG9yIGFnZ3JlYWd0b3IodGhpcyk7CisgICAgICAgIHJlcG9ydFNpemVJbXBsPFQs
IHNpemVfdCAoVDo6KikoSW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvciopIGNvbnN0PihvYmplY3Qs
ICZhZ2dyZWFndG9yLCAwKTsKKyAgICB9CisKKyAgICBlbnVtIE9iamVjdFR5cGUgeworICAgICAg
ICBPdGhlciA9IDAsCisgICAgICAgIERPTSA9IDEsCisgICAgICAgIENTUyA9IDIsCisgICAgICAg
IExhc3RUeXBlRW50cnkgPSAzCisgICAgfTsKKworICAgIGNsYXNzIEluc3BlY3Rvck1lbW9yeUFn
Z3JlZ2F0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgSW5zcGVjdG9yTWVtb3J5QWdncmVnYXRv
cihJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3BlY3Rvck1lbW9yeUluc3RydW1l
bnRhdGlvbikKKyAgICAgICAgICAgIDogbV9pbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24o
aW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uKQorICAgICAgICAgICAgLCBtX3R5cGUoT3Ro
ZXIpCisgICAgICAgIHsgfQorCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgICAg
ICBzaXplX3QgcmVwb3J0TWVtYmVyKGNvbnN0IFAqIGNvbnN0IG1lbWJlclBvaW50ZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBv
cnRTaXplKG1lbWJlclBvaW50ZXIpOworICAgICAgICAgICAgcmV0dXJuIHNpemVvZihQKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgICAgICBzaXplX3Qg
cmVwb3J0TWVtYmVyKGNvbnN0IE93blB0cjxQPiYgbWVtYmVyUG9pbnRlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9pbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydFNpemUo
bWVtYmVyUG9pbnRlci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKE93blB0cjxQ
Pik7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgICAgICAg
c2l6ZV90IHJlcG9ydE1lbWJlcihjb25zdCBSZWZQdHI8UD4mIG1lbWJlclBvaW50ZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBv
cnRTaXplKG1lbWJlclBvaW50ZXIuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIHNpemVvZihS
ZWZQdHI8UD4pOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgICAgIHNpemVfdCByZXBvcnRNZW1iZXJTdHJ1Y3R1cmUoY29uc3QgVCYgbWVtYmVyT2JqZWN0
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlv
bi0+cmVwb3J0U3RydWN0dXJlSW1wbDxULCBzaXplX3QgKFQ6OiopKEluc3BlY3Rvck1lbW9yeUFn
Z3JlZ2F0b3IqKSBjb25zdD4obWVtYmVyT2JqZWN0LCAwKTsKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCByZXBvcnRUeXBlKE9iamVjdFR5cGUgdHlwZSkg
eyBtX3R5cGUgPSBtX3R5cGUgPT0gT3RoZXIgPyB0eXBlIDogbV90eXBlOyB9CisgICAgICAgIE9i
amVjdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtX2luc3BlY3Rvck1lbW9y
eUluc3RydW1lbnRhdGlvbjsKKyAgICAgICAgT2JqZWN0VHlwZSBtX3R5cGU7CisgICAgfTsKKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCBUeXBlIFB0cj4KKyAgICBzdHJ1
Y3QgTWVtYmVySGVscGVyU3RydWN0OworCisgICAgLy8gSW1wbGVtZW50YXRpb24gZm9yIGluc3Ry
dW1lbnRlZCBjbGFzc2VzLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+
CisgICAgdm9pZCByZXBvcnRTaXplSW1wbChjb25zdCBUKiBjb25zdCBvYmplY3QsIEluc3BlY3Rv
ck1lbW9yeUFnZ3JlZ2F0b3IqIGFnZ3JlZ2F0b3IsIE1lbWJlckhlbHBlclN0cnVjdDxUeXBlLCAm
VDo6cmVwb3J0TWVtb3J5VXNhZ2U+KikKKyAgICB7CisgICAgICAgIHNpemVfdCBzaXplID0gb2Jq
ZWN0LT5yZXBvcnRNZW1vcnlVc2FnZShhZ2dyZWdhdG9yKTsKKyAgICAgICAgY291bnRPYmplY3RT
aXplKGFnZ3JlZ2F0b3ItPnR5cGUoKSwgc2l6ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVHlwZT4KKyAgICB2b2lkIHJlcG9ydFN0cnVjdHVyZUltcGwoY29u
c3QgVCYgb2JqZWN0LCBNZW1iZXJIZWxwZXJTdHJ1Y3Q8VHlwZSwgJlQ6OnJlcG9ydE1lbW9yeVVz
YWdlPiopCisgICAgeworICAgICAgICBJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yIGFnZ3JlZ2F0
b3IodGhpcyk7CisgICAgICAgIG9iamVjdC5yZXBvcnRNZW1vcnlVc2FnZSgmYWdncmVnYXRvcik7
CisgICAgfQorCisgICAgLy8gSW1wbGVtZW50YXRpb24gZm9yIF9OT1RfIGluc3RydW1lbnRlZCBj
bGFzc2VzLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+CisgICAgdm9p
ZCByZXBvcnRTaXplSW1wbChjb25zdCBUKiBjb25zdCwgSW5zcGVjdG9yTWVtb3J5QWdncmVnYXRv
ciosIC4uLikKKyAgICB7CisgICAgICAgIGNvdW50T2JqZWN0U2l6ZShPdGhlciwgc2l6ZW9mKFQp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlPgorICAg
IHZvaWQgcmVwb3J0U3RydWN0dXJlSW1wbChjb25zdCBUJiwgLi4uKQorICAgIHsKKyAgICAgICAg
Ly8gV2UgY2FuJ3QgY2FsbCByZXBvcnRNZW1vcnlVc2FnZSBiZWNhdXNlIG9iamVjdCdzIGNsYXNz
IGlzbid0IGluc3RydW1lbnRlZCB5ZXQuCisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvdW50
T2JqZWN0U2l6ZShPYmplY3RUeXBlLCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRlZChjb25zdCB2b2lkKikgPSAwOworfTsKKwordHlwZWRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0
cnVtZW50YXRpb246Okluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IgSW5zcGVjdG9yTWVtb3J5QWdn
cmVnYXRvcjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIWRlZmluZWQo
SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVl
U2hhcmVkLmgKaW5kZXggMmViZGIxZDFjNTk3OGQxZjBjN2VmMzJmZGNiNGRjMzYwZmZjNTJmNC4u
ZWI2NTUwMDUxNmQ4YjdjMWI5MDFkM2JhMzZmNDFjMzJkMzBjYTc0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtMTExLDYgKzExMSwxMyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbjsKICNlbmRpZgogCisgICAgc2l6ZV90IHJlcG9y
dE1lbW9yeVVzYWdlKEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IqIGluc3BlY3Rvck1lbW9yeUFn
Z3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9y
LT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAg
ICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fcGFyZW50KTsKKyAg
ICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogI2lmbmRlZiBO
REVCVUcKICAgICBmcmllbmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFy
ZW50Tm9kZVR5cGU+Kik7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBi
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJlYTBjZDVhZTVkMzZlZWFkNGE0NjQ5
MjMzMGIxY2JlMzQ2N2NhZTAuLjkzOTE4NjZjMDRlMmUwOGZkYzE1ZjNlMzFkZGYwNGVkMTUwNDE2
YmYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjEgIElseWEgVGlr
aG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHBhcnRpYWxseSBpbnN0cnVtZW50IERPTSBUcmVlIG5hdGl2ZSBtZW1vcnkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU2OAorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24gY2xhc3MgdGhhdCBj
b3VudHMgYWxsIHZpc2l0ZWQKKyAgICAgICAgb2JqZWN0cyBhbmQgY2FsbHMgcmVwb3J0TWVtb3J5
VXNhZ2UgaWYgdGhlIG9iamVjdCdzIGNsYXNzIGhhcyBzdWNoIG1ldGhvZC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9uYXRpdmUt
bWVtb3J5LXNuYXBzaG90Lmh0bWw6CisKIDIwMTItMDYtMjAgIFBoaWxpcCBSb2dlcnMgIDxwZHJA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBBZGQgYSBwZXJmb3JtYW5jZSB0ZXN0IGZvciBwYXRocyBp
biBTVkcKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1v
cnktc25hcHNob3QuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1v
cnktc25hcHNob3QuaHRtbAppbmRleCAyYWUwNWJhNTdmNzViNGVmM2E4ODY3Yjg3ZTMzZDQ1MGEx
MDRkMjU5Li4zODY1M2E3NDIyNDk3MmU0MDliZWNjMWUzZmIwNDQ3ZTc5YWE1MmMwIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0
bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hv
dC5odG1sCkBAIC0xLDUgKzEsMTcgQEAKIDxodG1sPgogPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CisgICAgc3BhbiB7CisgICAgICBjb2xvcjpyZWQ7CisgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICBoZWlnaHQ6IDIwcHg7CisgICAgfQorICAgIGRpdiB7CisgICAgICBjb2xvcjpi
bHVlOworICAgICAgd2lkdGg6IDUwcHg7CisgICAgICBoZWlnaHQ6IDEwcHg7CisgICAgfQorICA8
L3N0eWxlPgogICA8c2NyaXB0IHNyYz0iLi4vLi4vTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogICA8c2NyaXB0IHNyYz0icGVyZm9y
bWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgpAQCAtMzksOCArNTEsMTIgQEAgZnVu
Y3Rpb24gY3JlYXRlRE9NVHJlZShlbGVtZW50c0NvdW50KQogewogICAgIHZhciByb290ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RUcmVlUm9vdCIpOwogCi0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBlbGVtZW50c0NvdW50OyArK2kpCi0gICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVs
ZW1lbnRzQ291bnQ7ICsraSkgeworICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKKyAgICAgICAgc3Bhbi5pZCA9ICJzcGFuXyIgKyBpOworICAgICAgICBz
cGFuLnN0eWxlLndpZHRoID0gIjEwcHgiOworICAgICAgICByb290LmFwcGVuZENoaWxkKHNwYW4p
OworICAgIH0KIAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHNDb3VudDsgKytpKQog
ICAgICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148749</attachid>
            <date>2012-06-21 01:52:51 -0700</date>
            <delta_ts>2012-06-21 04:25:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89568-20120621125250.patch</filename>
            <type>text/plain</type>
            <size>29608</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMzNjY2MwOTViMzlj
MTM5MzQ5NDUyZjY4YjMzMDA0YjkzNGM2Ni4uNWY1ZDFkOWI4OGRjZjcxZTFkNTgwNzNhMTY2YmNj
NTZjNDllZDVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA2LTIxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRo
YXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1l
bW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBh
YmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFw
cGFibGUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcG9y
dE1lbW9yeVVzYWdlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9F
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBvcnRNZW1vcnlV
c2FnZSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgor
ICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZp
ZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05h
bWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9j
a0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjptZW1vcnlDYWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246On5JbnNwZWN0b3JNZW1vcnlJ
bnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRTaXplKToKKyAgICAgICAgKEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJ
bnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yOjpJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zcGVjdG9y
TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcjo6cmVw
b3J0TWVtYmVyU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6SW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3BlY3Rv
ck1lbW9yeUFnZ3JlZ2F0b3I6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFN0cnVjdHVyZUltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFy
ZWQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorCiAyMDEyLTA2
LTIxICBUYWlqdSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBNb3ZlIHJlcXVlc3RJZCBhbGxvY2F0aW9uIGZyb20gRmlsZVN5c3RlbSBmcm9udGVu
ZCB0byBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ODVkYjlhNzA3
Zjg2Y2ZhYzc5ODMxN2MxNWRmYWQxMjhmYmIzNWRhLi45MDllMDE1Y2ViMjI0NWU2MThkZGNiYjY1
YmUwNDE3OWMyNDQ5MzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI3MTEs
NiArMjcxMSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYjlkZGY5MzU2ZTJiMmJlOGQyZmE4NDA4
MzM5NjQ5YjFhNTQ5MGY0Yy4uODJkNzJjNWJjYWRlNjY0YzI2NTExYWE2NDQyZTU3ZWEzZWFjZGYx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCkBAIC0yMDY3LDYgKzIwNjcsNyBAQCBIRUFERVJTICs9IFwKICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIFwK
KyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggYjRmMTQxYTFjYjI2NTY3YmZlODQ5MTFlODRlMmNjYzgzYmFi
ZWRlYS4uMGMwYjk4NjAxMDJhZGFhODFhYmFhNjRiODA2NTcyMDRhYTZkM2Y1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMjgxNyw2ICsyODE3LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDA1NmY4OTRiNmUy
MzM5MDJiZjQzMjE1MDMxODJlNjczNTJmNGVmMWEuLjJhYjE3NmE0MGZiYmNjNTU5ZTUyYzhjMjFm
MTNmYjZmYTViOTJkYTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC03NDAxNSw2ICs3NDAxNSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgogCQkJCT4KIAkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFdyYXBwYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3Jh
cHBhYmxlLmgKaW5kZXggNTA4YTkzNzAwNDYwZjAxMjExMDlkNWZlZTJhNjhlYTk4ZjkyZGZmZi4u
YTQyZjk0M2U4MjIxMDExNjViYzg1OGExMTE4MzA1MGRhZTFjNTllZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKQEAgLTU0LDYgKzU0LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgd2Vha0NsZWFyKG1fd3JhcHBlciwgd3JhcHBlcik7CiAgICAgfQogCisg
ICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IqIGlu
c3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpbnNwZWN0b3JN
ZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlv
bjo6RE9NKTsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVy
U3RydWN0dXJlKG1fd3JhcHBlcik7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAg
IH0KKwogcHJpdmF0ZToKICAgICBKU0M6OldlYWs8SlNET01XcmFwcGVyPiBtX3dyYXBwZXI7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA4
NTA5OTRhYmI3MWYyY2U4YTQ2ZDVkZjdiMzU2YWU4Zjc4MmNmYWE2Li5jYzIwMDU1MzM4NWExNTIw
MWY2OWJjMzc1MWZlZDNiOWRkYTY1ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRXcmFwcGFibGUuaApAQCAtNTIsNiArNTIsMTMgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBjbGVhcldyYXBwZXIoKSB7IG1fd3JhcHBlciA9IDA7IH0KIAorICAgIHNpemVfdCByZXBvcnRN
ZW1vcnlVc2FnZShJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKiBpbnNwZWN0b3JNZW1vcnlBZ2dy
ZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+
cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAg
IGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlcihtX3dyYXBwZXIpOworICAg
ICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4qIG1fd3JhcHBlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydHlTZXQuaAppbmRleCA3NGNlMDc5YTQ3MzMxZjVlNDI3YjUxZmVlOWNmMGJjMzk0OTk3
NTM4Li40ZWQ5NDE0ZDY5MTVhNzlhYTY0YjMyODRhNTY2M2QxZWYyZTkxMGQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTExNSw2ICsxMTYsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgc2hvd1N0eWxlKCk7CiAjZW5kaWYKICAgICAKKyAgICBzaXpl
X3QgcmVwb3J0TWVtb3J5VXNhZ2UoSW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvciogaW5zcGVjdG9y
TWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIGluc3BlY3Rvck1lbW9yeUFn
Z3JlZ2F0b3ItPnJlcG9ydFR5cGUoSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1Mp
OworICAgICAgICBpZiAobV9pc011dGFibGUpCisgICAgICAgICAgICBpbnNwZWN0b3JNZW1vcnlB
Z2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9tdXRhYmxlUHJvcGVydHlWZWN0b3IpOworICAgICAg
ICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CiBwcml2YXRlOgogICAgIFN0eWxlUHJvcGVy
dHlTZXQoQ1NTUGFyc2VyTW9kZSk7CiAgICAgU3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9w
ZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291bnQsIENTU1BhcnNlck1vZGUsIGJvb2wgbWFr
ZU11dGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggYmU4Yzc4ZTRkNWYx
MDU2N2Q0ZTU1OWJhYmZiZmU2MGY5MTZmZmUzYy4uZmJlY2U4ZGIzOTFlODU2OGU0ZmJlN2IxMWZk
OWRiZjk3ZTBkMjI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC05OSw2ICs5
OSwxNSBAQCBwdWJsaWM6CiAgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZSgpIGNvbnN0OwogICAg
IE5vZGUqIHRyYXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSogc3RheVdpdGhpbikgY29uc3Q7CiAK
KyAgICB2aXJ0dWFsIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShJbnNwZWN0b3JNZW1vcnlBZ2dy
ZWdhdG9yKiBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAg
aW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0
cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKGluc3Bl
Y3Rvck1lbW9yeUFnZ3JlZ2F0b3IpOworICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9y
LT5yZXBvcnRNZW1iZXIobV9maXJzdENoaWxkKTsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5QWdn
cmVnYXRvci0+cmVwb3J0TWVtYmVyKG1fbGFzdENoaWxkKTsKKyAgICAgICAgcmV0dXJuIHNpemVv
ZigqdGhpcyk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQ29udGFpbmVyTm9kZShEb2N1bWVu
dCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCBkZTNmMGM1YWYxNGUwNTA2ZTYxMTVjOWZkZDY5ODg2NWE5YjMwODNiLi5mNmE0MWVi
NGE0YjczNjlmNTY1Y2JlNWJhN2VlZjNmNTViYTgxZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTQyMSw2ICs0MjEsMTYgQEAgcHVibGljOgogICAgIEludFNpemUgc2F2ZWRMYXllclNjcm9sbE9m
ZnNldCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChjb25zdCBJ
bnRTaXplJik7CiAKKyAgICB0eXBlZGVmIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6
SW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvciBJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yOworICAg
IHZpcnR1YWwgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0
b3IqIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpbnNw
ZWN0b3JNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1l
bnRhdGlvbjo6RE9NKTsKKyAgICAgICAgQ29udGFpbmVyTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2Uo
aW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcik7CisgICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3Jl
Z2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX3RhZ05hbWUpOworICAgICAgICBpbnNwZWN0
b3JNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9hdHRyaWJ1dGVEYXRhKTsKKyAgICAg
ICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0
cnVjdGlvblR5cGUgdHlwZSkKICAgICAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCB0eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCA4YjFiMzE4
ZmU5OWRlNGIyMWU4ZmRmNjE2YmVhMGU1OWJkMmVmZjM1Li5mMjhkNTY2MjBjNWUzY2Y4ZDk3YWYz
ZmI1OWQyZmY4NTRiZWM4NDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEF0dHJpYnV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0
ZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFbGVtZW50QXR0cmlidXRlRGF0YV9o
CiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSAi
U3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtOTksNiAr
MTAwLDE3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEF0dHI+IGF0dHJJZkV4aXN0cyhFbGVt
ZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIFBhc3NSZWZQdHI8QXR0cj4gZW5zdXJl
QXR0cihFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCisgICAgc2l6ZV90IHJlcG9y
dE1lbW9yeVVzYWdlKEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IqIGluc3BlY3Rvck1lbW9yeUFn
Z3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9y
LT5yZXBvcnRUeXBlKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAg
ICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1faW5saW5lU3R5bGVE
ZWNsKTsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyKG1f
YXR0cmlidXRlU3R5bGUpOworICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yLT5yZXBv
cnRNZW1iZXJTdHJ1Y3R1cmUobV9jbGFzc05hbWVzKTsKKyAgICAgICAgaW5zcGVjdG9yTWVtb3J5
QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1faWRGb3JTdHlsZVJlc29sdXRpb24p
OworICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1
cmUobV9hdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFbGVtZW50OwogICAgIGZyaWVuZCBjbGFzcyBI
VE1MQ29uc3RydWN0aW9uU2l0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBjOWJlNjU3NWU0MWUyOGU4
NzdkOGU1MGU5OGZlMmQ4YTVhNzFmZWNmLi4xM2MwMjVjZDE5ZWU4ZGI4M2M4MDM3MzVlOWY1ZWM1
ZjljNDQwZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yOTEzLDYgKzI5MTMsMTcgQEAgdm9pZCBO
b2RlOjpyZW1vdmVkTGFzdFJlZigpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKK3NpemVfdCBOb2Rl
OjpyZXBvcnRNZW1vcnlVc2FnZShJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKiBpbnNwZWN0b3JN
ZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAoreworICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3It
PnJlcG9ydFR5cGUoSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIFRy
ZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnJlcG9ydE1lbW9yeVVzYWdlKGluc3BlY3Rv
ck1lbW9yeUFnZ3JlZ2F0b3IpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNh
Z2UoaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcik7CisgICAgaW5zcGVjdG9yTWVtb3J5QWdncmVn
YXRvci0+cmVwb3J0TWVtYmVyKG1fZG9jdW1lbnQpOworICAgIGluc3BlY3Rvck1lbW9yeUFnZ3Jl
Z2F0b3ItPnJlcG9ydE1lbWJlcihtX25leHQpOworICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0
b3ItPnJlcG9ydE1lbWJlcihtX3ByZXZpb3VzKTsKKyAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
aW5kZXggMjY1OTEyZDAxODdhNzBlODQxZjU0ZTcwNmM1MDcwNWRjMGY2NzQ4NS4uNDY2YzU5YmFm
ZjcyYjY3YWNkZjkwMzc0ZDc5YjIyMGZjMWJiNTdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJFZGl0aW5nQm91bmRhcnkuaCIKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIktVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlICJS
ZW5kZXJTdHlsZUNvbnN0YW50cy5oIgpAQCAtNjU2LDYgKzY1Nyw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKCkgY29uc3Q7CiAgICAgc2l6ZV90IG51bWJlck9m
U2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oKSBjb25zdDsKIAorICAgIHZpcnR1YWwgc2l6ZV90IHJl
cG9ydE1lbW9yeVVzYWdlKEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IqKSBjb25zdDsKKwogcHJp
dmF0ZToKICAgICBlbnVtIE5vZGVGbGFncyB7CiAgICAgICAgIElzVGV4dEZsYWcgPSAxLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKaW5kZXggNjM2YjJhNTE1MGM5ZTk4N2MwMjdlNzU2OTc5
MmQ5YmFjMzRhODllOS4uYWY0YjliY2NkYzgxNThiMDNkYjBmMTMwYjcxZTk0M2Y2MDZiMzRkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCkBAIC0yMSw2ICsyMSw4IEBACiAjaWZuZGVm
IFF1YWxpZmllZE5hbWVfaAogI2RlZmluZSBRdWFsaWZpZWROYW1lX2gKIAorI2luY2x1ZGUgIklu
c3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorCiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFp
dHMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgpAQCAtNDgsNiArNTAsMTUgQEAgcHVibGljOgogICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcgbV9uYW1lc3BhY2U7CiAgICAgICAgIG11dGFibGUgQXRvbWljU3RyaW5nIG1f
bG9jYWxOYW1lVXBwZXI7CiAKKyAgICAgICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKEluc3Bl
Y3Rvck1lbW9yeUFnZ3JlZ2F0b3IqIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFR5
cGUoSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICAgICAgaW5z
cGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fcHJlZml4KTsK
KyAgICAgICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVj
dHVyZShtX2xvY2FsTmFtZSk7CisgICAgICAgICAgICBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9y
LT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9uYW1lc3BhY2UpOworICAgICAgICAgICAgaW5zcGVj
dG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fbG9jYWxOYW1lVXBw
ZXIpOworICAgICAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgICAgIH0KICAgICBw
cml2YXRlOgogICAgICAgICBRdWFsaWZpZWROYW1lSW1wbChjb25zdCBBdG9taWNTdHJpbmcmIHBy
ZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgOiBtX3ByZWZpeChwcmVmaXgpCkBAIC05Miw2ICsx
MDMsMTIgQEAgcHVibGljOgogICAgIC8vIEluaXQgcm91dGluZSBmb3IgZ2xvYmFscwogICAgIHN0
YXRpYyB2b2lkIGluaXQoKTsKICAgICAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoSW5z
cGVjdG9yTWVtb3J5QWdncmVnYXRvciogaW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvcikgY29uc3QK
KyAgICB7CisgICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFR5cGUoSW5z
cGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBpbnNwZWN0b3JNZW1v
cnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXIobV9pbXBsKTsKKyAgICAgICAgcmV0dXJuIHNpemVv
ZigqdGhpcyk7CisgICAgfQogcHJpdmF0ZToKICAgICB2b2lkIGluaXQoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAgICAgdm9pZCByZWYoKSBjb25zdCB7IG1faW1wbC0+cmVm
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwCmluZGV4IDc1MmY3Mjg1N2RiOWMxMDY2ZDQxZTQxMTkxOTFhMGUxY2ViNjllYzguLjI3
NTk2NjAxM2Q1ODYwMmEyY2MxY2I0MmYwYmU0N2E0ZTExMTVjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXJNYXAuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCkBA
IC03Nyw2ICs3OCwxMSBAQCBzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRYc2xTdHlsZVNoZWV0c1td
ID0gIkNhY2hlZFhzbFN0eWxlU2hlZXRzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZEZvbnRz
W10gPSAiQ2FjaGVkRm9udHMiOwogc3RhdGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZVVzZWRbXSA9
ICJSZW5kZXJUcmVlVXNlZCI7CiBzdGF0aWMgY29uc3QgY2hhciByZW5kZXJUcmVlQWxsb2NhdGVk
W10gPSAiUmVuZGVyVHJlZUFsbG9jYXRlZCI7CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVtdID0g
IkRPTSI7CitzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlT3RoZXJbXSA9ICJET01UcmVlT3RoZXIi
Oworc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZURPTVtdID0gIkRPTVRyZWVET00iOworc3RhdGlj
IGNvbnN0IGNoYXIgZG9tVHJlZUNTU1tdID0gIkRPTVRyZWVDU1MiOwogfQogCiBuYW1lc3BhY2Ug
ewpAQCAtMTc3LDEwICsxODMsNiBAQCBwcml2YXRlOgogICAgICAgICBjb2xsZWN0TGlzdGVuZXJz
SW5mbyhub2RlKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbGxlY3RDaGFyYWN0ZXJEYXRhKE5vZGUq
KQotICAgIHsKLSAgICB9Ci0KICAgICB2b2lkIGNvbGxlY3ROb2RlTmFtZUluZm8oTm9kZSogbm9k
ZSkKICAgICB7CiAgICAgICAgIFN0cmluZyBuYW1lID0gbm9kZU5hbWUobm9kZSk7CkBAIC0zNzIs
MTMgKzM3NCwxMDEgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJl
bmRlclRyZWVJbmZvKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHJlbmRlclRyZWVBbGxvY2F0ZWQu
cmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRNZW1vcnlCbG9ja0ZvcihUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBhcnJheSwgY29uc3QgTWVtb3J5Q2FjaGU6
OlR5cGVTdGF0aXN0aWMmIHN0YXRpc3RpYywgY29uc3QgY2hhciogbmFtZSkKK3N0YXRpYyB2b2lk
IGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9j
az4qIGFycmF5LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBSZWZQdHI8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJlc3VsdCA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVh
dGUoKS5zZXROYW1lKG5hbWUpOwotICAgIHJlc3VsdC0+c2V0U2l6ZShzdGF0aXN0aWMuc2l6ZSk7
CisgICAgcmVzdWx0LT5zZXRTaXplKHNpemUpOwogICAgIGFycmF5LT5hZGRJdGVtKHJlc3VsdCk7
CiB9CiAKK25hbWVzcGFjZSB7CisKK2NsYXNzIEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlv
bkltcGwgOiBwdWJsaWMgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uIHsKK3B1YmxpYzoK
KyAgICBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsKCkKKyAgICB7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgTGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICAgICAgbV90
b3RhbFNpemVzW2ldID0gMDsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9y
eUJsb2NrPiBkdW1wU3RhdGlzdGljcygpCisgICAgeworICAgICAgICBzaXplX3QgdG90YWxTaXpl
ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IE90aGVyOyBpIDwgTGFzdFR5cGVFbnRyeTsgKytp
KQorICAgICAgICAgICAgdG90YWxTaXplICs9IG1fdG90YWxTaXplc1tpXTsKKworICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGRvbUNoaWxk
cmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7
CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6
ZXNbT3RoZXJdLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVPdGhlcik7CisgICAgICAgIGFkZE1l
bW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbRE9NXSwgTWVtb3J5
QmxvY2tOYW1lOjpkb21UcmVlRE9NKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hp
bGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tDU1NdLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVD
U1MpOworCisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZG9tID0gSW5zcGVj
dG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpkb20pOwor
ICAgICAgICBkb20tPnNldFNpemUodG90YWxTaXplKTsKKyAgICAgICAgZG9tLT5zZXRDaGlsZHJl
bihkb21DaGlsZHJlbi5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gZG9tLnJlbGVhc2UoKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShPYmpl
Y3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9i
amVjdFR5cGUgPj0gMCAmJiBvYmplY3RUeXBlIDwgTGFzdFR5cGVFbnRyeSk7CisgICAgICAgIG1f
dG90YWxTaXplc1tvYmplY3RUeXBlXSArPSBzaXplOworICAgIH0KKworICAgIHZpcnR1YWwgYm9v
bCB2aXNpdGVkKGNvbnN0IHZvaWQqIG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiAhbV92
aXNpdGVkT2JqZWN0cy5hZGQob2JqZWN0KS5pc05ld0VudHJ5OworICAgIH0KKyAgICBzaXplX3Qg
bV90b3RhbFNpemVzW0xhc3RUeXBlRW50cnldOworICAgIHR5cGVkZWYgSGFzaFNldDxjb25zdCB2
b2lkKj4gVmlzaXRlZE9iamVjdHM7CisgICAgVmlzaXRlZE9iamVjdHMgbV92aXNpdGVkT2JqZWN0
czsKK307CisKK2NsYXNzIERPTVRyZWVzSXRlcmF0b3IgOiBwdWJsaWMgRE9NV3JhcHBlclZpc2l0
b3IgeworcHVibGljOgorICAgIERPTVRyZWVzSXRlcmF0b3IoUGFnZSogcGFnZSkgOiBtX3BhZ2Uo
cGFnZSkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXROb2RlKE5vZGUqIG5vZGUpCisgICAg
eworICAgICAgICBpZiAobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBtX3BhZ2UgIT0gbm9k
ZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIE5vZGUqIHJvb3ROb2RlID0gbm9kZTsKKyAgICAgICAgd2hpbGUgKHJvb3ROb2RlLT5w
YXJlbnROb2RlKCkpCisgICAgICAgICAgICByb290Tm9kZSA9IHJvb3ROb2RlLT5wYXJlbnROb2Rl
KCk7CisKKyAgICAgICAgaWYgKG1fcm9vdHMuY29udGFpbnMocm9vdE5vZGUpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX3Jvb3RzLmFkZChyb290Tm9kZSk7CisgICAgICAgIG1fZG9t
TWVtb3J5VXNhZ2UucmVwb3J0U2l6ZShyb290Tm9kZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0SlNFeHRlcm5hbFN0cmluZyhTdHJpbmdJbXBsKiBzdHJpbmcpIHsgfQorCisgICAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0YXRpc3RpY3MoKSB7IHJldHVy
biBtX2RvbU1lbW9yeVVzYWdlLmR1bXBTdGF0aXN0aWNzKCk7IH0KKworcHJpdmF0ZToKKyAgICBI
YXNoU2V0PE5vZGUqPiBtX3Jvb3RzOworICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBJbnNwZWN0b3JN
ZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIG1fZG9tTWVtb3J5VXNhZ2U7Cit9OworCit9CisKK3N0
YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVlSW5mbyhQYWdlKiBw
YWdlKQoreworICAgIERPTVRyZWVzSXRlcmF0b3IgZG9tVHJlZXNJdGVyYXRvcihwYWdlKTsKKyAg
ICBTY3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJzKCZkb21UcmVlc0l0ZXJhdG9yKTsK
KworICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBtYWlu
IGZyYW1lIGFyZSBhY2NvdW50ZWQuCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsK
KyAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
ICAgIGRvbVRyZWVzSXRlcmF0b3IudmlzaXROb2RlKGRvYyk7CisgICAgfQorCisgICAgcmV0dXJu
IGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoKTsKK30KKwogc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygpCiB7CiAgICAgTWVtb3J5
Q2FjaGU6OlN0YXRpc3RpY3Mgc3RhdHMgPSBtZW1vcnlDYWNoZSgpLT5nZXRTdGF0aXN0aWNzKCk7
CkBAIC0zOTEsMTIgKzQ4MSwxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gbWVtb3J5Q2FjaGVJbmZvKCkKICAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRTaXplKHRv
dGFsU2l6ZSk7CiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9y
eUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJs
b2NrPjo6Y3JlYXRlKCk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0
YXRzLmltYWdlcywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRJbWFnZXMpOwotICAgIGFkZE1lbW9y
eUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5jc3NTdHlsZVNoZWV0cywgTWVtb3J5Qmxv
Y2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hp
bGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkU2NyaXB0
cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhzbFN0eWxl
U2hlZXRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRzKTsKLSAgICBhZGRN
ZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMsIE1lbW9yeUJsb2NrTmFt
ZTo6Y2FjaGVkRm9udHMpOwotICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldENoaWxkcmVuKGNoaWxk
cmVuKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuaW1hZ2Vz
LnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkSW1hZ2VzKTsKKyAgICBhZGRNZW1vcnlCbG9j
a0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuY3NzU3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5Qmxv
Y2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hp
bGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRT
Y3JpcHRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMueHNs
U3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRYc2xTdHlsZVNoZWV0cyk7
CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmZvbnRzLnNpemUs
IE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOworICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNl
dENoaWxkcmVuKGNoaWxkcmVuLmdldCgpKTsKICAgICByZXR1cm4gbWVtb3J5Q2FjaGVTdGF0cy5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTQxMyw2ICs1MDMsNyBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFn
ZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElu
cwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGluc3BlY3RvckRhdGEoKSk7CiAgICAgY2hpbGRyZW4t
PmFkZEl0ZW0obWVtb3J5Q2FjaGVJbmZvKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKHJlbmRl
clRyZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CisgICAg
Y2hpbGRyZW4tPmFkZEl0ZW0oZG9tVHJlZUluZm8obV9wYWdlKSk7IC8vIFRPRE86IGNvbGxlY3Qg
Zm9yIGFsbCBwYWdlcz8KICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJlbihjaGlsZHJlbik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODExNDYwNDEyYWM1NzYwYzMxMDgy
M2ViZDk3YTA4NzEzZWQ3ZmJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC0wLDAgKzEsMTQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb25faAorI2RlZmluZSBJbnNwZWN0
b3JNZW1vcnlJbnN0cnVtZW50YXRpb25faAorCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnNw
ZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24geworcHVibGljOgorICAgIHZpcnR1YWwgfkluc3Bl
Y3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbigpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgdm9pZCByZXBvcnRTaXplKGNvbnN0IFQqIGNvbnN0IG9iamVjdCkKKyAgICB7Cisg
ICAgICAgIGlmICghb2JqZWN0IHx8IHZpc2l0ZWQob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgSW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvciBhZ2dyZWFndG9yKHRoaXMpOwor
ICAgICAgICByZXBvcnRTaXplSW1wbDxULCBzaXplX3QgKFQ6OiopKEluc3BlY3Rvck1lbW9yeUFn
Z3JlZ2F0b3IqKSBjb25zdD4ob2JqZWN0LCAmYWdncmVhZ3RvciwgMCk7CisgICAgfQorCisgICAg
ZW51bSBPYmplY3RUeXBlIHsKKyAgICAgICAgT3RoZXIgPSAwLAorICAgICAgICBET00gPSAxLAor
ICAgICAgICBDU1MgPSAyLAorICAgICAgICBMYXN0VHlwZUVudHJ5ID0gMworICAgIH07CisKKyAg
ICBjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IoSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBpbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgICAgICAgICA6IG1faW5zcGVj
dG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uKGluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbikK
KyAgICAgICAgICAgICwgbV90eXBlKE90aGVyKQorICAgICAgICB7IH0KKworICAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgUD4KKyAgICAgICAgc2l6ZV90IHJlcG9ydE1lbWJlcihjb25zdCBQKiBj
b25zdCBtZW1iZXJQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luc3BlY3Rvck1l
bW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U2l6ZShtZW1iZXJQb2ludGVyKTsKKyAgICAgICAg
ICAgIHJldHVybiBzaXplb2YoUCk7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUD4KKyAgICAgICAgc2l6ZV90IHJlcG9ydE1lbWJlcihjb25zdCBPd25QdHI8UD4mIG1l
bWJlclBvaW50ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5yZXBvcnRTaXplKG1lbWJlclBvaW50ZXIuZ2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIHNpemVvZihPd25QdHI8UD4pOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFA+CisgICAgICAgIHNpemVfdCByZXBvcnRNZW1iZXIoY29uc3QgUmVmUHRy
PFA+JiBtZW1iZXJQb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luc3BlY3Rvck1l
bW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U2l6ZShtZW1iZXJQb2ludGVyLmdldCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBzaXplb2YoUmVmUHRyPFA+KTsKKyAgICAgICAgfQorCisgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgICAgICBzaXplX3QgcmVwb3J0TWVtYmVyU3RydWN0
dXJlKGNvbnN0IFQmIG1lbWJlck9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbnNw
ZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydFN0cnVjdHVyZUltcGw8VCwgc2l6ZV90
IChUOjoqKShJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKikgY29uc3Q+KG1lbWJlck9iamVjdCwg
MCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVw
b3J0VHlwZShPYmplY3RUeXBlIHR5cGUpIHsgbV90eXBlID0gbV90eXBlID09IE90aGVyID8gdHlw
ZSA6IG1fdHlwZTsgfQorICAgICAgICBPYmplY3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEluc3BlY3Rvck1lbW9yeUluc3RydW1l
bnRhdGlvbiogbV9pbnNwZWN0b3JNZW1vcnlJbnN0cnVtZW50YXRpb247CisgICAgICAgIE9iamVj
dFR5cGUgbV90eXBlOworICAgIH07CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHlwZSwgVHlwZSBQdHI+CisgICAgc3RydWN0IE1lbWJlckhlbHBlclN0cnVjdDsKKworICAgIC8v
IEltcGxlbWVudGF0aW9uIGZvciBpbnN0cnVtZW50ZWQgY2xhc3Nlcy4KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlPgorICAgIHZvaWQgcmVwb3J0U2l6ZUltcGwoY29uc3Qg
VCogY29uc3Qgb2JqZWN0LCBJbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKiBhZ2dyZWdhdG9yLCBN
ZW1iZXJIZWxwZXJTdHJ1Y3Q8VHlwZSwgJlQ6OnJlcG9ydE1lbW9yeVVzYWdlPiopCisgICAgewor
ICAgICAgICBzaXplX3Qgc2l6ZSA9IG9iamVjdC0+cmVwb3J0TWVtb3J5VXNhZ2UoYWdncmVnYXRv
cik7CisgICAgICAgIGNvdW50T2JqZWN0U2l6ZShhZ2dyZWdhdG9yLT50eXBlKCksIHNpemUpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+CisgICAgdm9p
ZCByZXBvcnRTdHJ1Y3R1cmVJbXBsKGNvbnN0IFQmIG9iamVjdCwgTWVtYmVySGVscGVyU3RydWN0
PFR5cGUsICZUOjpyZXBvcnRNZW1vcnlVc2FnZT4qKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9y
TWVtb3J5QWdncmVnYXRvciBhZ2dyZWdhdG9yKHRoaXMpOworICAgICAgICBvYmplY3QucmVwb3J0
TWVtb3J5VXNhZ2UoJmFnZ3JlZ2F0b3IpOworICAgIH0KKworICAgIC8vIEltcGxlbWVudGF0aW9u
IGZvciBfTk9UXyBpbnN0cnVtZW50ZWQgY2xhc3Nlcy4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBUeXBlPgorICAgIHZvaWQgcmVwb3J0U2l6ZUltcGwoY29uc3QgVCogY29uc3Qs
IEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3IqLCAuLi4pCisgICAgeworICAgICAgICBjb3VudE9i
amVjdFNpemUoT3RoZXIsIHNpemVvZihUKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVHlwZT4KKyAgICB2b2lkIHJlcG9ydFN0cnVjdHVyZUltcGwoY29uc3Qg
VCYsIC4uLikKKyAgICB7CisgICAgICAgIC8vIFdlIGNhbid0IGNhbGwgcmVwb3J0TWVtb3J5VXNh
Z2UgYmVjYXVzZSBvYmplY3QncyBjbGFzcyBpc24ndCBpbnN0cnVtZW50ZWQgeWV0LgorICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSwgc2l6ZV90KSA9
IDA7CisgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopID0gMDsKK307CisKK3R5
cGVkZWYgSW5zcGVjdG9yTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpJbnNwZWN0b3JNZW1vcnlBZ2dy
ZWdhdG9yIEluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3I7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvck1lbW9yeUluc3RydW1lbnRhdGlvbl9o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDJlYmRiMWQxYzU5NzhkMWYw
YzdlZjMyZmRjYjRkYzM2MGZmYzUyZjQuLmViNjU1MDA1MTZkOGI3YzFiOTAxZDNiYTM2ZjQxYzMy
ZDMwY2E3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAgLTExMSw2ICsx
MTEsMTMgQEAgcHVibGljOgogICAgIGJvb2wgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb247CiAj
ZW5kaWYKIAorICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShJbnNwZWN0b3JNZW1vcnlBZ2dy
ZWdhdG9yKiBpbnNwZWN0b3JNZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAg
aW5zcGVjdG9yTWVtb3J5QWdncmVnYXRvci0+cmVwb3J0VHlwZShJbnNwZWN0b3JNZW1vcnlJbnN0
cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIGluc3BlY3Rvck1lbW9yeUFnZ3JlZ2F0b3ItPnJl
cG9ydE1lbWJlcihtX3BhcmVudCk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAg
IH0KKwogcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJpZW5kIHZvaWQgYWRvcHRlZDw+
KFRyZWVTaGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRl
eCAyZWEwY2Q1YWU1ZDM2ZWVhZDRhNDY0OTIzMzBiMWNiZTM0NjdjYWUwLi45MzkxODY2YzA0ZTJl
MDhmZGMxNWYzZTMxZGRmMDRlZDE1MDQxNmJmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTA2LTIxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBu
YXRpdmUgbWVtb3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODk1NjgKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgSW5zcGVjdG9yTWVtb3J5SW5z
dHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVj
dHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMg
c3VjaCBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA2
LTIwICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIGEgcGVy
Zm9ybWFuY2UgdGVzdCBmb3IgcGF0aHMgaW4gU1ZHCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL2luc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwgYi9QZXJmb3JtYW5jZVRl
c3RzL2luc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwKaW5kZXggMmFlMDViYTU3
Zjc1YjRlZjNhODg2N2I4N2UzM2Q0NTBhMTA0ZDI1OS4uMzg2NTNhNzQyMjQ5NzJlNDA5YmVjYzFl
M2ZiMDQ0N2U3OWFhNTJjMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3Iv
bmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbApAQCAtMSw1ICsxLDE3IEBACiA8aHRtbD4K
IDxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIHNwYW4geworICAgICAgY29s
b3I6cmVkOworICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAyMHB4OworICAgIH0K
KyAgICBkaXYgeworICAgICAgY29sb3I6Ymx1ZTsKKyAgICAgIHdpZHRoOiA1MHB4OworICAgICAg
aGVpZ2h0OiAxMHB4OworICAgIH0KKyAgPC9zdHlsZT4KICAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KICAgPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KQEAgLTM5LDggKzUxLDEyIEBAIGZ1bmN0aW9uIGNyZWF0ZURPTVRyZWUoZWxlbWVudHNDb3Vu
dCkKIHsKICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJlZVJv
b3QiKTsKIAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHNDb3VudDsgKytpKQotICAg
ICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyArK2kpIHsKKyAgICAgICAgdmFy
IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHNwYW4uaWQg
PSAic3Bhbl8iICsgaTsKKyAgICAgICAgc3Bhbi5zdHlsZS53aWR0aCA9ICIxMHB4IjsKKyAgICAg
ICAgcm9vdC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICB9CiAKICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGVsZW1lbnRzQ291bnQ7ICsraSkKICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148763</attachid>
            <date>2012-06-21 04:25:57 -0700</date>
            <delta_ts>2012-06-21 07:05:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89568-20120621152556.patch</filename>
            <type>text/plain</type>
            <size>28060</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMzNjY2MwOTViMzlj
MTM5MzQ5NDUyZjY4YjMzMDA0YjkzNGM2Ni4uOTFkOGEzYzFhODhhZDg5OTkwNDY0OGE3OGY5NDE4
YTZiOGM0MTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA2LTIxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRz
IGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdl
IGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3Jh
cHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAq
IGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpR
dWFsaWZpZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9ja0Zvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjptZW1vcnlD
YWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFBy
b2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lbW9y
eUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRp
b246On5NZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplKToKKyAgICAgICAgKE1lbW9yeUFnZ3JlZ2F0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlBZ2dyZWdhdG9y
OjpNZW1vcnlBZ2dyZWdhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRh
dGlvbjo6TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5
QWdncmVnYXRvcjo6c2V0T2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok1lbW9yeUFnZ3JlZ2F0b3I6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFN0cnVjdHVyZUltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorCiAyMDEyLTA2LTIxICBU
YWlqdSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNb3ZlIHJlcXVlc3RJZCBhbGxvY2F0aW9uIGZyb20gRmlsZVN5c3RlbSBmcm9udGVuZCB0byBi
YWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ODVkYjlhNzA3Zjg2Y2Zh
Yzc5ODMxN2MxNWRmYWQxMjhmYmIzNWRhLi44NzFmNTllODVmNTdlMTlkMzBlMzA3MTI0N2ZjMTRk
MDYzYzk4ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MDYsNiArMTkw
Niw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFu
Z2VFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFu
bmVsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGI5ZGRmOTM1
NmUyYjJiZThkMmZhODQwODMzOTY0OWIxYTU0OTBmNGMuLmQ2MmJjMDliMGIxYTgxNGZmN2ZmZTgw
OTdmMGVhYTAzNGRjM2Y3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTc0NCw2ICsxNzQ0LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCiAgICAgZG9tL0ZyYWdtZW50U2Ny
aXB0aW5nUGVybWlzc2lvbi5oIFwKICAgICBkb20vS2V5Ym9hcmRFdmVudC5oIFwKKyAgICBkb20v
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5oIFwKICAg
ICBkb20vTWVzc2FnZUV2ZW50LmggXAogICAgIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggYjRmMTQxYTFjYjI2NTY3YmZlODQ5MTFlODRlMmNjYzgzYmFiZWRl
YS4uMWQyY2JlNDY2Y2Q3NmI0NjIzY2QxY2JjNjVmNjE5YjIxN2RiNmNjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNTMzNyw2ICs1MzM3LDcgQEAKICAgICAgICAgICAgICdkb20vSWNvblVSTC5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAogICAgICAgICAgICAgJ2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oJywK
ICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuY3BwJywKICAgICAgICAgICAgICdkb20v
TWVzc2FnZUNoYW5uZWwuaCcsCiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VFdmVudC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwNTZm
ODk0YjZlMjMzOTAyYmY0MzIxNTAzMTgyZTY3MzUyZjRlZjFhLi5hMjg1YmQ4YWU5NTc4ZTI0YjY4
MGU1NTdlMzlmZjgyZjQ1MWQ5OTAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNTExNzUsNiArNTExNzUsMTAgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cTWVzc2FnZUNoYW5uZWwuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKaW5kZXggNTA4
YTkzNzAwNDYwZjAxMjExMDlkNWZlZTJhNjhlYTk4ZjkyZGZmZi4uYmNjOTgzMzFiNGNjYWMzMWIz
ZGE5ZDkzM2EwZmNlNDcxMWFjYTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0V3JhcHBhYmxlLmgKQEAgLTU0LDYgKzU0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgd2Vh
a0NsZWFyKG1fd3JhcHBlciwgd3JhcHBlcik7CiAgICAgfQogCisgICAgc2l6ZV90IHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAg
eworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RUeXBlKE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6RE9NKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3Ry
dWN0dXJlKG1fd3JhcHBlcik7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0K
KwogcHJpdmF0ZToKICAgICBKU0M6OldlYWs8SlNET01XcmFwcGVyPiBtX3dyYXBwZXI7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA4NTA5
OTRhYmI3MWYyY2U4YTQ2ZDVkZjdiMzU2YWU4Zjc4MmNmYWE2Li5hYjhlMWYwZTJlMDkzOGY4ODA4
OGFmYTI4YmQyNzY5N2ZjZWY4NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRXcmFwcGFibGUuaApAQCAtNTIsNiArNTIsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
bGVhcldyYXBwZXIoKSB7IG1fd3JhcHBlciA9IDA7IH0KIAorICAgIHNpemVfdCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlBZ2dyZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsK
KyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50
YXRpb246OkRPTSk7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFBvaW50ZXIobV93
cmFwcGVyKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRl
OgogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KiBtX3dyYXBwZXI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKaW5kZXggNzRjZTA3OWE0NzMzMWY1ZTQyN2I1MWZl
ZTljZjBiYzM5NDk5NzUzOC4uZmM5NThiNmI2NzNkYWE1ZTc1ZWVlY2EyZWZjYzQ1MzU5ZmI4NjA2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMTUsNiArMTE2
LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dTdHlsZSgpOwogI2VuZGlmCiAgICAgCisgICAg
c2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0
b3IpIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RUeXBl
KE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgaWYgKG1faXNNdXRhYmxlKQor
ICAgICAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX211dGFibGVQcm9w
ZXJ0eVZlY3Rvcik7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KIHByaXZh
dGU6CiAgICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2RlKTsKICAgICBTdHlsZVByb3Bl
cnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCwgQ1NT
UGFyc2VyTW9kZSwgYm9vbCBtYWtlTXV0YWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
aAppbmRleCBiZThjNzhlNGQ1ZjEwNTY3ZDRlNTU5YmFiZmJmZTYwZjkxNmZmZTNjLi41ODViMWY4
MWEzODAzMzA2NzE1N2Q0ZWNkNGVhMWYxOTFhNzg1MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmgKQEAgLTk5LDYgKzk5LDE1IEBAIHB1YmxpYzoKICAgICBOb2RlKiB0cmF2ZXJzZU5l
eHROb2RlKCkgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKiBz
dGF5V2l0aGluKSBjb25zdDsKIAorICAgIHZpcnR1YWwgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAg
ICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RUeXBlKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
RE9NKTsKKyAgICAgICAgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5QWdncmVnYXRvcik7
CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFBvaW50ZXIobV9maXJzdENoaWxkKTsK
KyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2xhc3RDaGlsZCk7Cisg
ICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIENv
bnRhaW5lck5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZGUzZjBjNWFmMTRlMDUwNmU2MTE1YzlmZGQ2OTg4
NjVhOWIzMDgzYi4uZjliNjUzNTI0MDFmMDg0MDliYzE3OTlmYWZkNmZkMmQ2MzFlZDVhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCkBAIC00MjEsNiArNDIxLDE1IEBAIHB1YmxpYzoKICAgICBJbnRTaXpl
IHNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFNhdmVkTGF5ZXJT
Y3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYpOwogCisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAg
ICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpET00pOworICAgICAgICBDb250YWluZXJOb2RlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShtZW1vcnlBZ2dyZWdhdG9yKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVt
YmVyU3RydWN0dXJlKG1fdGFnTmFtZSk7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9y
dFBvaW50ZXIobV9hdHRyaWJ1dGVEYXRhKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7
CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICAg
ICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCA4YjFiMzE4ZmU5OWRlNGIyMWU4ZmRmNjE2YmVhMGU1
OWJkMmVmZjM1Li5iZjA1OTliYzlkODkzNTRkYTM4ODE2ODVjZWMwMTgyOTZjZjNjY2RiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaApAQCAtMjcsNiArMjcsNyBA
QAogI2RlZmluZSBFbGVtZW50QXR0cmlidXRlRGF0YV9oCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUu
aCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTcGFjZVNw
bGl0U3RyaW5nLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgPHd0
Zi9Ob3RGb3VuZC5oPgpAQCAtOTksNiArMTAwLDE3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PEF0dHI+IGF0dHJJZkV4aXN0cyhFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IFBhc3NSZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogCisgICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1l
bW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5z
ZXRPYmplY3RUeXBlKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgbWVtb3J5
QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2lubGluZVN0eWxlRGVjbCk7CisgICAgICAgIG1l
bW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFBvaW50ZXIobV9hdHRyaWJ1dGVTdHlsZSk7CisgICAgICAg
IG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX2NsYXNzTmFtZXMpOwor
ICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9pZEZvclN0
eWxlUmVzb2x1dGlvbik7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0
cnVjdHVyZShtX2F0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAg
ICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEVsZW1lbnQ7CiAgICAgZnJpZW5kIGNs
YXNzIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L01lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMzBmZmY1NzY2Y2ExOTc0MjQxYTQwYjQ0YzAyYTNl
ODA1YWM2YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lbW9yeUluc3RydW1lbnRh
dGlvbl9oCisjZGVmaW5lIE1lbW9yeUluc3RydW1lbnRhdGlvbl9oCisKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1lbW9yeUFnZ3JlZ2F0b3I7CisKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlv
biB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkgeyB9CisK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlcG9ydFNpemUoY29uc3QgVCog
Y29uc3Qgb2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKCFvYmplY3QgfHwgdmlzaXRlZChvYmpl
Y3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBNZW1vcnlBZ2dyZWdhdG9yIGFnZ3Jl
YWd0b3IodGhpcyk7CisgICAgICAgIHJlcG9ydFNpemVJbXBsPFQsIHNpemVfdCAoVDo6KikoTWVt
b3J5QWdncmVnYXRvciopIGNvbnN0PihvYmplY3QsICZhZ2dyZWFndG9yLCAwKTsKKyAgICB9CisK
KyAgICBlbnVtIE9iamVjdFR5cGUgeworICAgICAgICBPdGhlciA9IDAsCisgICAgICAgIERPTSA9
IDEsCisgICAgICAgIENTUyA9IDIsCisgICAgICAgIExhc3RUeXBlRW50cnkgPSAzCisgICAgfTsK
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTWVtb3J5QWdncmVnYXRvcjsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFR5cGUsIFR5cGUgUHRyPgorICAgIHN0cnVjdCBNZW1iZXJIZWxwZXJT
dHJ1Y3Q7CisKKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBmb3IgaW5zdHJ1bWVudGVkIGNsYXNzZXMu
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZT4KKyAgICB2b2lkIHJlcG9y
dFNpemVJbXBsKGNvbnN0IFQqLCBNZW1vcnlBZ2dyZWdhdG9yKiwgTWVtYmVySGVscGVyU3RydWN0
PFR5cGUsICZUOjpyZXBvcnRNZW1vcnlVc2FnZT4qKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFR5cGU+CisgICAgdm9pZCByZXBvcnRTdHJ1Y3R1cmVJbXBsKGNvbnN0IFQm
LCBNZW1iZXJIZWxwZXJTdHJ1Y3Q8VHlwZSwgJlQ6OnJlcG9ydE1lbW9yeVVzYWdlPiopOworCisg
ICAgLy8gSW1wbGVtZW50YXRpb24gZm9yIF9OT1RfIGluc3RydW1lbnRlZCBjbGFzc2VzLgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+CisgICAgdm9pZCByZXBvcnRTaXpl
SW1wbChjb25zdCBUKiBjb25zdCwgTWVtb3J5QWdncmVnYXRvciosIC4uLikKKyAgICB7CisgICAg
ICAgIGNvdW50T2JqZWN0U2l6ZShPdGhlciwgc2l6ZW9mKFQpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlPgorICAgIHZvaWQgcmVwb3J0U3RydWN0dXJl
SW1wbChjb25zdCBUJiwgLi4uKQorICAgIHsKKyAgICAgICAgLy8gV2UgY2FuJ3QgY2FsbCByZXBv
cnRNZW1vcnlVc2FnZSBiZWNhdXNlIG9iamVjdCdzIGNsYXNzIGlzbid0IGluc3RydW1lbnRlZCB5
ZXQuCisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShPYmplY3RUeXBl
LCBzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgPSAw
OworfTsKKworY2xhc3MgTWVtb3J5QWdncmVnYXRvciB7CitwdWJsaWM6CisgICAgIE1lbW9yeUFn
Z3JlZ2F0b3IoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCisg
ICAgICAgICA6IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uKG1lbW9yeUluc3RydW1lbnRhdGlvbikK
KyAgICAgICAgICwgbV9vYmplY3RUeXBlKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIpCisg
ICAgIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+CisgICAgdm9pZCByZXBvcnRQb2lu
dGVyKGNvbnN0IFAqIGNvbnN0IG1lbWJlclBvaW50ZXIpCisgICAgeworICAgICAgICBtX21lbW9y
eUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U2l6ZShtZW1iZXJQb2ludGVyKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgICB2b2lkIHJlcG9ydFBvaW50ZXIoY29uc3QgT3du
UHRyPFA+JiBtZW1iZXJQb2ludGVyKQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPnJlcG9ydFNpemUobWVtYmVyUG9pbnRlci5nZXQoKSk7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFA+CisgICAgdm9pZCByZXBvcnRQb2ludGVyKGNvbnN0IFJlZlB0cjxQ
PiYgbWVtYmVyUG9pbnRlcikKKyAgICB7CisgICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5yZXBvcnRTaXplKG1lbWJlclBvaW50ZXIuZ2V0KCkpOworICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0TWVtYmVyU3RydWN0dXJlKGNvbnN0IFQmIG1l
bWJlck9iamVjdCkKKyAgICB7CisgICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBv
cnRTdHJ1Y3R1cmVJbXBsPFQsIHNpemVfdCAoVDo6KikoTWVtb3J5QWdncmVnYXRvciopIGNvbnN0
PihtZW1iZXJPYmplY3QsIDApOworICAgIH0KKworICAgIHZvaWQgc2V0T2JqZWN0VHlwZShNZW1v
cnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSkgeyBtX29iamVjdFR5cGUg
PSBtX29iamVjdFR5cGUgPT0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPdGhlciA/IG9iamVjdFR5
cGUgOiBtX29iamVjdFR5cGU7IH0KKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVjdFR5
cGUgb2JqZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0VHlwZTsgfQorCisgcHJpdmF0
ZToKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOwor
ICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBtX29iamVjdFR5cGU7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlPgordm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OnJlcG9ydFNpemVJbXBsKGNvbnN0IFQqIGNvbnN0IG9iamVjdCwgTWVtb3J5QWdn
cmVnYXRvciogYWdncmVnYXRvciwgTWVtYmVySGVscGVyU3RydWN0PFR5cGUsICZUOjpyZXBvcnRN
ZW1vcnlVc2FnZT4qKQoreworICAgIHNpemVfdCBzaXplID0gb2JqZWN0LT5yZXBvcnRNZW1vcnlV
c2FnZShhZ2dyZWdhdG9yKTsKKyAgICBjb3VudE9iamVjdFNpemUoYWdncmVnYXRvci0+b2JqZWN0
VHlwZSgpLCBzaXplKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZT4K
K3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTdHJ1Y3R1cmVJbXBsKGNvbnN0IFQm
IG9iamVjdCwgTWVtYmVySGVscGVyU3RydWN0PFR5cGUsICZUOjpyZXBvcnRNZW1vcnlVc2FnZT4q
KQoreworICAgIE1lbW9yeUFnZ3JlZ2F0b3IgYWdncmVnYXRvcih0aGlzKTsKKyAgICBvYmplY3Qu
cmVwb3J0TWVtb3J5VXNhZ2UoJmFnZ3JlZ2F0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChNZW1vcnlJbnN0cnVtZW50YXRpb25faCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCBjOWJlNjU3NWU0MWUyOGU4NzdkOGU1MGU5OGZlMmQ4YTVhNzFmZWNmLi4w
MDY4NjQ5NmE4NzYwNTQzMTg2MGM2NTU5N2UwNmNhODM3ZGJkNTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0yOTEzLDYgKzI5MTMsMTcgQEAgdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigpCiAgICAg
ZGVsZXRlIHRoaXM7CiB9CiAKK3NpemVfdCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlB
Z2dyZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAoreworICAgIG1lbW9yeUFnZ3JlZ2F0
b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIFRyZWVT
aGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeUFnZ3Jl
Z2F0b3IpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5QWdn
cmVnYXRvcik7CisgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2RvY3VtZW50
KTsKKyAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fbmV4dCk7CisgICAgbWVt
b3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX3ByZXZpb3VzKTsKKyAgICByZXR1cm4gc2l6
ZW9mKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJV
RwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKaW5kZXggMjY1OTEyZDAxODdhNzBlODQxZjU0ZTcwNmM1MDcwNWRjMGY2NzQ4
NS4uZmJmYjE4MWRmZjcxYTAwYWI3YWI2MGE3ODIyNTAxNWY4OGViNjM2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJL
VVJMSGFzaC5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNs
dWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUcmVlU2hhcmVkLmgiCkBAIC02NTYs
NiArNjU3LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBj
b25zdDsKICAgICBzaXplX3QgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbigpIGNvbnN0
OwogCisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRv
ciopIGNvbnN0OworCiBwcml2YXRlOgogICAgIGVudW0gTm9kZUZsYWdzIHsKICAgICAgICAgSXNU
ZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRleCA2MzZiMmE1MTUw
YzllOTg3YzAyN2U3NTY5NzkyZDliYWMzNGE4OWU5Li5mYTE5NzE3NDUxNjQ1ZGRlMjQ5YzkxZTQ0
YWU0NTc5ZTkyM2QxZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTIxLDYg
KzIxLDggQEAKICNpZm5kZWYgUXVhbGlmaWVkTmFtZV9oCiAjZGVmaW5lIFF1YWxpZmllZE5hbWVf
aAogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisKICNpbmNsdWRlIDx3dGYv
SGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC00OCw2ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZTsKICAgICAgICAgbXV0YWJsZSBBdG9taWNT
dHJpbmcgbV9sb2NhbE5hbWVVcHBlcjsKIAorICAgICAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkRPTSk7CisgICAgICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1i
ZXJTdHJ1Y3R1cmUobV9wcmVmaXgpOworICAgICAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVw
b3J0TWVtYmVyU3RydWN0dXJlKG1fbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIG1lbW9yeUFnZ3Jl
Z2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX25hbWVzcGFjZSk7CisgICAgICAgICAgICBt
ZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9sb2NhbE5hbWVVcHBlcik7
CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICAgICAgfQogICAgIHByaXZh
dGU6CiAgICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkkpCiAgICAgICAgICAgICA6IG1fcHJlZml4KHByZWZpeCkKQEAgLTkyLDYgKzEwMywx
MiBAQCBwdWJsaWM6CiAgICAgLy8gSW5pdCByb3V0aW5lIGZvciBnbG9iYWxzCiAgICAgc3RhdGlj
IHZvaWQgaW5pdCgpOwogICAgIAorICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlB
Z2dyZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5
QWdncmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7Cisg
ICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFBvaW50ZXIobV9pbXBsKTsKKyAgICAgICAg
cmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQogcHJpdmF0ZToKICAgICB2b2lkIGluaXQoY29u
c3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAgICAgdm9pZCByZWYoKSBjb25zdCB7
IG1faW1wbC0+cmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDc1MmY3Mjg1N2RiOWMxMDY2ZDQxZTQxMTkxOTFhMGUx
Y2ViNjllYzguLjY3MDc2NzdiOWM3ZWU3NDRhOGM5YjEwZjIzMjM0YjQzNjQxNWI4ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApA
QCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1
ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lbW9yeVVzYWdlU3VwcG9y
dC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC03Nyw2ICs3OCwx
MSBAQCBzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRYc2xTdHlsZVNoZWV0c1tdID0gIkNhY2hlZFhz
bFN0eWxlU2hlZXRzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZEZvbnRzW10gPSAiQ2FjaGVk
Rm9udHMiOwogc3RhdGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZVVzZWRbXSA9ICJSZW5kZXJUcmVl
VXNlZCI7CiBzdGF0aWMgY29uc3QgY2hhciByZW5kZXJUcmVlQWxsb2NhdGVkW10gPSAiUmVuZGVy
VHJlZUFsbG9jYXRlZCI7CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVtdID0gIkRPTSI7CitzdGF0
aWMgY29uc3QgY2hhciBkb21UcmVlT3RoZXJbXSA9ICJET01UcmVlT3RoZXIiOworc3RhdGljIGNv
bnN0IGNoYXIgZG9tVHJlZURPTVtdID0gIkRPTVRyZWVET00iOworc3RhdGljIGNvbnN0IGNoYXIg
ZG9tVHJlZUNTU1tdID0gIkRPTVRyZWVDU1MiOwogfQogCiBuYW1lc3BhY2UgewpAQCAtMTc3LDEw
ICsxODMsNiBAQCBwcml2YXRlOgogICAgICAgICBjb2xsZWN0TGlzdGVuZXJzSW5mbyhub2RlKTsK
ICAgICB9CiAKLSAgICB2b2lkIGNvbGxlY3RDaGFyYWN0ZXJEYXRhKE5vZGUqKQotICAgIHsKLSAg
ICB9Ci0KICAgICB2b2lkIGNvbGxlY3ROb2RlTmFtZUluZm8oTm9kZSogbm9kZSkKICAgICB7CiAg
ICAgICAgIFN0cmluZyBuYW1lID0gbm9kZU5hbWUobm9kZSk7CkBAIC0zNzIsMTMgKzM3NCw5MyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVuZGVyVHJlZUluZm8o
UGFnZSogcGFnZSkKICAgICByZXR1cm4gcmVuZGVyVHJlZUFsbG9jYXRlZC5yZWxlYXNlKCk7CiB9
CiAKLXN0YXRpYyB2b2lkIGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4qIGFycmF5LCBjb25zdCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3Rp
YyYgc3RhdGlzdGljLCBjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIHZvaWQgYWRkTWVtb3J5Qmxv
Y2tGb3IoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXksIHNp
emVfdCBzaXplLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4gcmVzdWx0ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUo
bmFtZSk7Ci0gICAgcmVzdWx0LT5zZXRTaXplKHN0YXRpc3RpYy5zaXplKTsKKyAgICByZXN1bHQt
PnNldFNpemUoc2l6ZSk7CiAgICAgYXJyYXktPmFkZEl0ZW0ocmVzdWx0KTsKIH0KIAorbmFtZXNw
YWNlIHsKKworY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCA6IHB1YmxpYyBNZW1vcnlJ
bnN0cnVtZW50YXRpb24geworcHVibGljOgorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwo
KQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBMYXN0VHlwZUVudHJ5OyArK2kp
CisgICAgICAgICAgICBtX3RvdGFsU2l6ZXNbaV0gPSAwOworICAgIH0KKworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBTdGF0aXN0aWNzKCkKKyAgICB7CisgICAgICAg
IHNpemVfdCB0b3RhbFNpemUgPSAwOworICAgICAgICBmb3IgKGludCBpID0gT3RoZXI7IGkgPCBM
YXN0VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAgICB0b3RhbFNpemUgKz0gbV90b3RhbFNpemVz
W2ldOworCisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+ID4gZG9tQ2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+OjpjcmVhdGUoKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4u
Z2V0KCksIG1fdG90YWxTaXplc1tPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90aGVy
KTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxT
aXplc1tET01dLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVET00pOworICAgICAgICBhZGRNZW1v
cnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW0NTU10sIE1lbW9yeUJs
b2NrTmFtZTo6ZG9tVHJlZUNTUyk7CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJs
b2NrPiBkb20gPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlC
bG9ja05hbWU6OmRvbSk7CisgICAgICAgIGRvbS0+c2V0U2l6ZSh0b3RhbFNpemUpOworICAgICAg
ICBkb20tPnNldENoaWxkcmVuKGRvbUNoaWxkcmVuLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVy
biBkb20ucmVsZWFzZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY291
bnRPYmplY3RTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCisgICAgewor
ICAgICAgICBBU1NFUlQob2JqZWN0VHlwZSA+PSAwICYmIG9iamVjdFR5cGUgPCBMYXN0VHlwZUVu
dHJ5KTsKKyAgICAgICAgbV90b3RhbFNpemVzW29iamVjdFR5cGVdICs9IHNpemU7CisgICAgfQor
CisgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCogb2JqZWN0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICFtX3Zpc2l0ZWRPYmplY3RzLmFkZChvYmplY3QpLmlzTmV3RW50cnk7Cisg
ICAgfQorICAgIHNpemVfdCBtX3RvdGFsU2l6ZXNbTGFzdFR5cGVFbnRyeV07CisgICAgdHlwZWRl
ZiBIYXNoU2V0PGNvbnN0IHZvaWQqPiBWaXNpdGVkT2JqZWN0czsKKyAgICBWaXNpdGVkT2JqZWN0
cyBtX3Zpc2l0ZWRPYmplY3RzOworfTsKKworY2xhc3MgRE9NVHJlZXNJdGVyYXRvciA6IHB1Ymxp
YyBET01XcmFwcGVyVmlzaXRvciB7CitwdWJsaWM6CisgICAgRE9NVHJlZXNJdGVyYXRvcihQYWdl
KiBwYWdlKSA6IG1fcGFnZShwYWdlKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdE5vZGUo
Tm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgp
ICYmIG1fcGFnZSAhPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCkpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5yZXBvcnRTaXplKG5vZGUp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmcoU3RyaW5n
SW1wbCopIHsgfQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0
YXRpc3RpY3MoKSB7IHJldHVybiBtX2RvbU1lbW9yeVVzYWdlLmR1bXBTdGF0aXN0aWNzKCk7IH0K
KworcHJpdmF0ZToKKyAgICBQYWdlKiBtX3BhZ2U7CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SW1wbCBtX2RvbU1lbW9yeVVzYWdlOworfTsKKworfQorCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4gZG9tVHJlZUluZm8oUGFnZSogcGFnZSkKK3sKKyAgICBET01UcmVl
c0l0ZXJhdG9yIGRvbVRyZWVzSXRlcmF0b3IocGFnZSk7CisgICAgU2NyaXB0UHJvZmlsZXI6OnZp
c2l0SlNET01XcmFwcGVycygmZG9tVHJlZXNJdGVyYXRvcik7CisKKyAgICAvLyBNYWtlIHN1cmUg
YWxsIGRvY3VtZW50cyByZWFjaGFibGUgZnJvbSB0aGUgbWFpbiBmcmFtZSBhcmUgYWNjb3VudGVk
LgorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChEb2N1bWVu
dCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb21UcmVlc0l0ZXJhdG9y
LnZpc2l0Tm9kZShkb2MpOworICAgIH0KKworICAgIHJldHVybiBkb21UcmVlc0l0ZXJhdG9yLmR1
bXBTdGF0aXN0aWNzKCk7Cit9CisKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJs
b2NrPiBtZW1vcnlDYWNoZUluZm8oKQogewogICAgIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIHN0
YXRzID0gbWVtb3J5Q2FjaGUoKS0+Z2V0U3RhdGlzdGljcygpOwpAQCAtMzkxLDEyICs0NzMsMTIg
QEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5m
bygpCiAgICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0U2l6ZSh0b3RhbFNpemUpOwogCiAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9
IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwotICAg
IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFnZXMsIE1lbW9yeUJs
b2NrTmFtZTo6Y2FjaGVkSW1hZ2VzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5n
ZXQoKSwgc3RhdHMuY3NzU3R5bGVTaGVldHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3NzU3R5
bGVTaGVldHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5z
Y3JpcHRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFNjcmlwdHMpOwotICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy54c2xTdHlsZVNoZWV0cywgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRYc2xTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRy
ZW4uZ2V0KCksIHN0YXRzLmZvbnRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZEZvbnRzKTsKLSAg
ICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgYWRkTWVtb3J5
QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmltYWdlcy5zaXplLCBNZW1vcnlCbG9ja05h
bWU6OmNhY2hlZEltYWdlcyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCks
IHN0YXRzLmNzc1N0eWxlU2hlZXRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3NzU3R5
bGVTaGVldHMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5z
Y3JpcHRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkU2NyaXB0cyk7CisgICAgYWRkTWVt
b3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhzbFN0eWxlU2hlZXRzLnNpemUsIE1l
bW9yeUJsb2NrTmFtZTo6Y2FjaGVkWHNsU3R5bGVTaGVldHMpOworICAgIGFkZE1lbW9yeUJsb2Nr
Rm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5mb250cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNh
Y2hlZEZvbnRzKTsKKyAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5n
ZXQoKSk7CiAgICAgcmV0dXJuIG1lbW9yeUNhY2hlU3RhdHMucmVsZWFzZSgpOwogfQogCkBAIC00
MTMsNiArNDk1LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9y
eURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAgICBjaGlsZHJlbi0+YWRk
SXRlbShpbnNwZWN0b3JEYXRhKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKG1lbW9yeUNhY2hl
SW5mbygpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShyZW5kZXJUcmVlSW5mbyhtX3BhZ2UpKTsg
Ly8gVE9ETzogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPworICAgIGNoaWxkcmVuLT5hZGRJdGVtKGRv
bVRyZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAg
cHJvY2Vzc01lbW9yeS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UcmVlU2hhcmVkLmgKaW5kZXggMmViZGIxZDFjNTk3OGQxZjBjN2VmMzJmZGNiNGRjMzYw
ZmZjNTJmNC4uN2ExMmNlZDc4NGNkZDkxNzA4MjQxNDM4NmI5M2UyOGE2YzllZTEyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtMTExLDYgKzExMSwxMyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbjsKICNlbmRpZgogCisgICAgc2l6
ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0b3Ip
IGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RUeXBlKE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVw
b3J0UG9pbnRlcihtX3BhcmVudCk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAg
IH0KKwogcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJpZW5kIHZvaWQgYWRvcHRlZDw+
KFRyZWVTaGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRl
eCAyZWEwY2Q1YWU1ZDM2ZWVhZDRhNDY0OTIzMzBiMWNiZTM0NjdjYWUwLi42ZWU4YjQwMmJmNjc3
ODEyNzliNjg2MDRmMjJkNWY5NDAyNjk4YTM1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTA2LTIxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBu
YXRpdmUgbWVtb3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODk1NjgKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uIGNsYXNzIHRoYXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNh
bGxzIHJlcG9ydE1lbW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRo
b2QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA2LTIwICBQaGls
aXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIGEgcGVyZm9ybWFuY2Ug
dGVzdCBmb3IgcGF0aHMgaW4gU1ZHCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3Bl
Y3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3Bl
Y3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwKaW5kZXggMmFlMDViYTU3Zjc1YjRlZjNh
ODg2N2I4N2UzM2Q0NTBhMTA0ZDI1OS4uMzg2NTNhNzQyMjQ5NzJlNDA5YmVjYzFlM2ZiMDQ0N2U3
OWFhNTJjMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmF0aXZlLW1l
bW9yeS1zbmFwc2hvdC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2
ZS1tZW1vcnktc25hcHNob3QuaHRtbApAQCAtMSw1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgor
ICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIHNwYW4geworICAgICAgY29sb3I6cmVkOwor
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAyMHB4OworICAgIH0KKyAgICBkaXYg
eworICAgICAgY29sb3I6Ymx1ZTsKKyAgICAgIHdpZHRoOiA1MHB4OworICAgICAgaGVpZ2h0OiAx
MHB4OworICAgIH0KKyAgPC9zdHlsZT4KICAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KICAgPHNj
cmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KQEAgLTM5
LDggKzUxLDEyIEBAIGZ1bmN0aW9uIGNyZWF0ZURPTVRyZWUoZWxlbWVudHNDb3VudCkKIHsKICAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJlZVJvb3QiKTsKIAot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHNDb3VudDsgKytpKQotICAgICAgICByb290
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyArK2kpIHsKKyAgICAgICAgdmFyIHNwYW4gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHNwYW4uaWQgPSAic3Bhbl8i
ICsgaTsKKyAgICAgICAgc3Bhbi5zdHlsZS53aWR0aCA9ICIxMHB4IjsKKyAgICAgICAgcm9vdC5h
cHBlbmRDaGlsZChzcGFuKTsKKyAgICB9CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1l
bnRzQ291bnQ7ICsraSkKICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148792</attachid>
            <date>2012-06-21 07:05:38 -0700</date>
            <delta_ts>2012-06-21 07:09:33 -0700</delta_ts>
            <desc>build fix for win and mac bots</desc>
            <filename>bug-89568-20120621180537.patch</filename>
            <type>text/plain</type>
            <size>31839</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMzNjY2MwOTViMzlj
MTM5MzQ5NDUyZjY4YjMzMDA0YjkzNGM2Ni4uOTFkOGEzYzFhODhhZDg5OTkwNDY0OGE3OGY5NDE4
YTZiOGM0MTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA2LTIxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRz
IGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdl
IGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3Jh
cHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAq
IGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpR
dWFsaWZpZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9ja0Zvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjptZW1vcnlD
YWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFBy
b2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lbW9y
eUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRp
b246On5NZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplKToKKyAgICAgICAgKE1lbW9yeUFnZ3JlZ2F0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlBZ2dyZWdhdG9y
OjpNZW1vcnlBZ2dyZWdhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRh
dGlvbjo6TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5
QWdncmVnYXRvcjo6c2V0T2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok1lbW9yeUFnZ3JlZ2F0b3I6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFN0cnVjdHVyZUltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorCiAyMDEyLTA2LTIxICBU
YWlqdSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNb3ZlIHJlcXVlc3RJZCBhbGxvY2F0aW9uIGZyb20gRmlsZVN5c3RlbSBmcm9udGVuZCB0byBi
YWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ODVkYjlhNzA3Zjg2Y2Zh
Yzc5ODMxN2MxNWRmYWQxMjhmYmIzNWRhLi44NzFmNTllODVmNTdlMTlkMzBlMzA3MTI0N2ZjMTRk
MDYzYzk4ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MDYsNiArMTkw
Niw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFu
Z2VFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFu
bmVsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGI5ZGRmOTM1
NmUyYjJiZThkMmZhODQwODMzOTY0OWIxYTU0OTBmNGMuLmQ2MmJjMDliMGIxYTgxNGZmN2ZmZTgw
OTdmMGVhYTAzNGRjM2Y3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTc0NCw2ICsxNzQ0LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCiAgICAgZG9tL0ZyYWdtZW50U2Ny
aXB0aW5nUGVybWlzc2lvbi5oIFwKICAgICBkb20vS2V5Ym9hcmRFdmVudC5oIFwKKyAgICBkb20v
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5oIFwKICAg
ICBkb20vTWVzc2FnZUV2ZW50LmggXAogICAgIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggYjRmMTQxYTFjYjI2NTY3YmZlODQ5MTFlODRlMmNjYzgzYmFiZWRl
YS4uMWQyY2JlNDY2Y2Q3NmI0NjIzY2QxY2JjNjVmNjE5YjIxN2RiNmNjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNTMzNyw2ICs1MzM3LDcgQEAKICAgICAgICAgICAgICdkb20vSWNvblVSTC5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAogICAgICAgICAgICAgJ2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oJywK
ICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuY3BwJywKICAgICAgICAgICAgICdkb20v
TWVzc2FnZUNoYW5uZWwuaCcsCiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VFdmVudC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwNTZm
ODk0YjZlMjMzOTAyYmY0MzIxNTAzMTgyZTY3MzUyZjRlZjFhLi5hMjg1YmQ4YWU5NTc4ZTI0YjY4
MGU1NTdlMzlmZjgyZjQ1MWQ5OTAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNTExNzUsNiArNTExNzUsMTAgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cTWVzc2FnZUNoYW5uZWwuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA0OTJmYzEyMzM1YTRhN2ZjNWNiMDg2NWM3OGZhNmE1ZTA1OWE3ZmNiLi4yNjA0YjUyMDdi
ZWMwNzgwYjAzNmJmZWEyYTA0NDEwZDkxODdmY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDI4LDYgKzE0MjgsNyBAQAog
CQk0RjE1MzRERTExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERDExQjUzMkVDMDAy
MUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdC
ZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1
NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJ
bnNwZWN0b3JBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzJC
QjFBMTRGQTg1QUEwMEY2QzFBMyAvIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIC87IH07CiAJCTRG
MkQyMDU1MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1MzEyRUFFN0IzMDA1QzI4
NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovOyB9OwogCQk0RjMyODlCNTExQTQyQUFCMDA1QUJF
N0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1
ZXMuY3BwICovOyB9OwogCQk0RjMyODlCNjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFs
dWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMy
ODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg0OTUsNiArODQ5Niw3IEBACiAJ
CTRGMTUzNEREMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZp
b3JUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5nQmVoYXZp
b3JUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjJEMjA1MjEyRUFFN0Iz
MDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEYz
MkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3Bl
Y3RvckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3Bl
Y3RvckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYzMjg5QjMxMUE0
MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclZhbHVlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEzOTQsNiArMjEzOTYsNyBAQAogCQkJCUJDOUE2
MTQ0MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2RvbV9leGNlcHRpb25zLnBsICovLAogCQkJCUJD
OUE2MTQ1MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2V2ZW50X2ZhY3RvcnkucGwgKi8sCiAJCQkJ
QkM5QTYxNDYxNDY4NTlEOTAwNjA1N0ZEIC8qIG1ha2VfbmFtZXMucGwgKi8sCisJCQkJNEYzMkJC
MUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovLAogCQkJCUUx
QURFQ0NEMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5jcHAgKi8sCiAJCQkJRTFB
REVDQ0MwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggKi8sCiAJCQkJRTFBREVD
RDAwRTc2QURBQjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmlkbCAqLywKQEAgLTI1MTE5LDYg
KzI1MTIyLDcgQEAKIAkJCQlDRTdCMkRCMzE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTdCMkRCNTE1ODZBQkFEMDA5
OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MDk4N0MyNzE1N0Q2NzZEMDBCREE4MzUgLyogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNEYzMkJCMUIxNEZBODVFODAwRjZDMUEzIC8qIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFdyYXBwYWJsZS5oCmluZGV4IDUwOGE5MzcwMDQ2MGYwMTIxMTA5ZDVmZWUyYTY4ZWE5
OGY5MmRmZmYuLmJjYzk4MzMxYjRjY2FjMzFiM2RhOWQ5MzNhMGZjZTQ3MTFhY2E5NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCkBAIC01NCw2ICs1
NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHdlYWtDbGVhcihtX3dyYXBwZXIsIHdyYXBwZXIpOwog
ICAgIH0KIAorICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlBZ2dyZWdhdG9yKiBt
ZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+
c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIG1lbW9y
eUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX3dyYXBwZXIpOworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgSlNDOjpXZWFrPEpT
RE9NV3JhcHBlcj4gbV93cmFwcGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0V3JhcHBhYmxlLmgKaW5kZXggODUwOTk0YWJiNzFmMmNlOGE0NmQ1ZGY3YjM1NmFlOGY3
ODJjZmFhNi4uYWI4ZTFmMGUyZTA5MzhmODgwODhhZmEyOGJkMjc2OTdmY2VmODZmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKQEAgLTUyLDYgKzUy
LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJXcmFwcGVyKCkgeyBtX3dyYXBwZXIgPSAw
OyB9CiAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciogbWVt
b3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNl
dE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBtZW1vcnlB
Z2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fd3JhcHBlcik7CisgICAgICAgIHJldHVybiBzaXpl
b2YoKnRoaXMpOworICAgIH0KKwogcHJpdmF0ZToKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiogbV93cmFwcGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCmlu
ZGV4IDc0Y2UwNzlhNDczMzFmNWU0MjdiNTFmZWU5Y2YwYmMzOTQ5OTc1MzguLmZjOTU4YjZiNjcz
ZGFhNWU3NWVlZWNhMmVmY2M0NTM1OWZiODYwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydHlTZXQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVz
LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtMTE1LDYgKzExNiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93
U3R5bGUoKTsKICNlbmRpZgogICAgIAorICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlBZ2dyZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVt
b3J5QWdncmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7
CisgICAgICAgIGlmIChtX2lzTXV0YWJsZSkKKyAgICAgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3It
PnJlcG9ydFBvaW50ZXIobV9tdXRhYmxlUHJvcGVydHlWZWN0b3IpOworICAgICAgICByZXR1cm4g
c2l6ZW9mKCp0aGlzKTsKKyAgICB9CiBwcml2YXRlOgogICAgIFN0eWxlUHJvcGVydHlTZXQoQ1NT
UGFyc2VyTW9kZSk7CiAgICAgU3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSogcHJv
cGVydGllcywgdW5zaWduZWQgY291bnQsIENTU1BhcnNlck1vZGUsIGJvb2wgbWFrZU11dGFibGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggYmU4Yzc4ZTRkNWYxMDU2N2Q0ZTU1
OWJhYmZiZmU2MGY5MTZmZmUzYy4uNTg1YjFmODFhMzgwMzMwNjcxNTdkNGVjZDRlYTFmMTkxYTc4
NTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC05OSw2ICs5OSwxNSBAQCBw
dWJsaWM6CiAgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZSgpIGNvbnN0OwogICAgIE5vZGUqIHRy
YXZlcnNlTmV4dE5vZGUoY29uc3QgTm9kZSogc3RheVdpdGhpbikgY29uc3Q7CiAKKyAgICB2aXJ0
dWFsIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlBZ2dyZWdhdG9yKiBtZW1vcnlBZ2dy
ZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+c2V0T2JqZWN0
VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIE5vZGU6OnJlcG9ydE1l
bW9yeVVzYWdlKG1lbW9yeUFnZ3JlZ2F0b3IpOworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5y
ZXBvcnRQb2ludGVyKG1fZmlyc3RDaGlsZCk7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJl
cG9ydFBvaW50ZXIobV9sYXN0Q2hpbGQpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsK
KyAgICB9CisKIHByb3RlY3RlZDoKICAgICBDb250YWluZXJOb2RlKERvY3VtZW50KiwgQ29uc3Ry
dWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGRl
M2YwYzVhZjE0ZTA1MDZlNjExNWM5ZmRkNjk4ODY1YTliMzA4M2IuLmY5YjY1MzUyNDAxZjA4NDA5
YmMxNzk5ZmFmZDZmZDJkNjMxZWQ1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDIxLDYgKzQy
MSwxNSBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBzYXZlZExheWVyU2Nyb2xsT2Zmc2V0KCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmKTsK
IAorICAgIHZpcnR1YWwgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3Iq
IG1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9y
LT5zZXRPYmplY3RUeXBlKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgQ29u
dGFpbmVyTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5QWdncmVnYXRvcik7CisgICAgICAg
IG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX3RhZ05hbWUpOworICAg
ICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fYXR0cmlidXRlRGF0YSk7Cisg
ICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBD
b25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwg
dHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXggOGIx
YjMxOGZlOTlkZTRiMjFlOGZkZjYxNmJlYTBlNTliZDJlZmYzNS4uYmYwNTk5YmM5ZDg5MzU0ZGEz
ODgxNjg1Y2VjMDE4Mjk2Y2YzY2NkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRy
aWJ1dGVEYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRWxlbWVudEF0dHJpYnV0ZURh
dGFfaAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUgIlN0eWxl
UHJvcGVydHlTZXQuaCIKICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KQEAgLTk5LDYgKzEwMCwx
NyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxBdHRyPiBhdHRySWZFeGlzdHMoRWxlbWVudCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICBQYXNzUmVmUHRyPEF0dHI+IGVuc3VyZUF0dHIo
RWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAorICAgIHNpemVfdCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlBZ2dyZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsK
KyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50
YXRpb246OkRPTSk7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFBvaW50ZXIobV9p
bmxpbmVTdHlsZURlY2wpOworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVy
KG1fYXR0cmlidXRlU3R5bGUpOworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1i
ZXJTdHJ1Y3R1cmUobV9jbGFzc05hbWVzKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVw
b3J0TWVtYmVyU3RydWN0dXJlKG1faWRGb3JTdHlsZVJlc29sdXRpb24pOworICAgICAgICBtZW1v
cnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9hdHRyaWJ1dGVzKTsKKyAgICAg
ICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBFbGVtZW50OwogICAgIGZyaWVuZCBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjI3
OTFjMmMwMGRkZjI1NDc0YjRhYjM3MGViN2MzZGVmMmZmZGNjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC0wLDAgKzEsMTQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNZW1vcnlJbnN0cnVtZW50YXRpb25faAorI2RlZmluZSBNZW1vcnlJbnN0cnVt
ZW50YXRpb25faAorCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZW1vcnlBZ2dyZWdhdG9yOwor
CitjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb24geworcHVibGljOgorICAgIHZpcnR1YWwgfk1l
bW9yeUluc3RydW1lbnRhdGlvbigpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgdm9pZCByZXBvcnRTaXplKGNvbnN0IFQqIGNvbnN0IG9iamVjdCkKKyAgICB7CisgICAgICAg
IGlmICghb2JqZWN0IHx8IHZpc2l0ZWQob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgTWVtb3J5QWdncmVnYXRvciBhZ2dyZWdhdG9yKHRoaXMpOworICAgICAgICByZXBvcnRT
aXplSW1wbDxULCBzaXplX3QgKFQ6OiopKE1lbW9yeUFnZ3JlZ2F0b3IqKSBjb25zdD4ob2JqZWN0
LCAmYWdncmVnYXRvciwgMCk7CisgICAgfQorCisgICAgZW51bSBPYmplY3RUeXBlIHsKKyAgICAg
ICAgT3RoZXIgPSAwLAorICAgICAgICBET00gPSAxLAorICAgICAgICBDU1MgPSAyLAorICAgICAg
ICBMYXN0VHlwZUVudHJ5ID0gMworICAgIH07CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IE1lbW9yeUFnZ3JlZ2F0b3I7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCBUeXBlIFB0
cj4KKyAgICBzdHJ1Y3QgTWVtYmVySGVscGVyU3RydWN0OworCisgICAgLy8gSW1wbGVtZW50YXRp
b24gZm9yIGluc3RydW1lbnRlZCBjbGFzc2VzLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFR5cGU+CisgICAgdm9pZCByZXBvcnRTaXplSW1wbChjb25zdCBUKiwgTWVtb3J5QWdn
cmVnYXRvciosIE1lbWJlckhlbHBlclN0cnVjdDxUeXBlLCAmVDo6cmVwb3J0TWVtb3J5VXNhZ2U+
Kik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlPgorICAgIHZvaWQg
cmVwb3J0U3RydWN0dXJlSW1wbChjb25zdCBUJiwgTWVtYmVySGVscGVyU3RydWN0PFR5cGUsICZU
OjpyZXBvcnRNZW1vcnlVc2FnZT4qKTsKKworICAgIC8vIEltcGxlbWVudGF0aW9uIGZvciBfTk9U
XyBpbnN0cnVtZW50ZWQgY2xhc3Nlcy4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBUeXBlPgorICAgIHZvaWQgcmVwb3J0U2l6ZUltcGwoY29uc3QgVCogY29uc3QsIE1lbW9yeUFn
Z3JlZ2F0b3IqLCAuLi4pCisgICAgeworICAgICAgICBjb3VudE9iamVjdFNpemUoT3RoZXIsIHNp
emVvZihUKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlw
ZT4KKyAgICB2b2lkIHJlcG9ydFN0cnVjdHVyZUltcGwoY29uc3QgVCYsIC4uLikKKyAgICB7Cisg
ICAgICAgIC8vIFdlIGNhbid0IGNhbGwgcmVwb3J0TWVtb3J5VXNhZ2UgYmVjYXVzZSBvYmplY3Qn
cyBjbGFzcyBpc24ndCBpbnN0cnVtZW50ZWQgeWV0LgorICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopID0gMDsKK307CisKK2NsYXNzIE1lbW9yeUFnZ3JlZ2F0
b3IgeworcHVibGljOgorICAgICBNZW1vcnlBZ2dyZWdhdG9yKE1lbW9yeUluc3RydW1lbnRhdGlv
biogbWVtb3J5SW5zdHJ1bWVudGF0aW9uKQorICAgICAgICAgOiBtX21lbW9yeUluc3RydW1lbnRh
dGlvbihtZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgICAgICAsIG1fb2JqZWN0VHlwZShNZW1v
cnlJbnN0cnVtZW50YXRpb246Ok90aGVyKQorICAgICB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBQPgorICAgIHZvaWQgcmVwb3J0UG9pbnRlcihjb25zdCBQKiBjb25zdCBtZW1iZXJQb2lu
dGVyKQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydFNpemUo
bWVtYmVyUG9pbnRlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+CisgICAg
dm9pZCByZXBvcnRQb2ludGVyKGNvbnN0IE93blB0cjxQPiYgbWVtYmVyUG9pbnRlcikKKyAgICB7
CisgICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRTaXplKG1lbWJlclBvaW50
ZXIuZ2V0KCkpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgIHZvaWQg
cmVwb3J0UG9pbnRlcihjb25zdCBSZWZQdHI8UD4mIG1lbWJlclBvaW50ZXIpCisgICAgeworICAg
ICAgICBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U2l6ZShtZW1iZXJQb2ludGVyLmdl
dCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlcG9y
dE1lbWJlclN0cnVjdHVyZShjb25zdCBUJiBtZW1iZXJPYmplY3QpCisgICAgeworICAgICAgICBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U3RydWN0dXJlSW1wbDxULCBzaXplX3QgKFQ6
OiopKE1lbW9yeUFnZ3JlZ2F0b3IqKSBjb25zdD4obWVtYmVyT2JqZWN0LCAwKTsKKyAgICB9CisK
KyAgICB2b2lkIHNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBl
IG9iamVjdFR5cGUpIHsgbV9vYmplY3RUeXBlID0gbV9vYmplY3RUeXBlID09IE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6T3RoZXIgPyBvYmplY3RUeXBlIDogbV9vYmplY3RUeXBlOyB9CisgICAgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX29iamVjdFR5cGU7IH0KKworIHByaXZhdGU6CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9i
amVjdFR5cGUgbV9vYmplY3RUeXBlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVHlwZT4KK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplSW1wbChjb25z
dCBUKiBjb25zdCBvYmplY3QsIE1lbW9yeUFnZ3JlZ2F0b3IqIGFnZ3JlZ2F0b3IsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6TWVtYmVySGVscGVyU3RydWN0PFR5cGUsICZUOjpyZXBvcnRNZW1vcnlV
c2FnZT4qKQoreworICAgIHNpemVfdCBzaXplID0gb2JqZWN0LT5yZXBvcnRNZW1vcnlVc2FnZShh
Z2dyZWdhdG9yKTsKKyAgICBjb3VudE9iamVjdFNpemUoYWdncmVnYXRvci0+b2JqZWN0VHlwZSgp
LCBzaXplKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZT4KK3ZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTdHJ1Y3R1cmVJbXBsKGNvbnN0IFQmIG9iamVj
dCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1iZXJIZWxwZXJTdHJ1Y3Q8VHlwZSwgJlQ6OnJl
cG9ydE1lbW9yeVVzYWdlPiopCit7CisgICAgTWVtb3J5QWdncmVnYXRvciBhZ2dyZWdhdG9yKHRo
aXMpOworICAgIG9iamVjdC5yZXBvcnRNZW1vcnlVc2FnZSgmYWdncmVnYXRvcik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVkKE1lbW9yeUluc3RydW1l
bnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGM5YmU2NTc1ZTQxZTI4ZTg3N2Q4ZTUwZTk4
ZmUyZDhhNWE3MWZlY2YuLjAwNjg2NDk2YTg3NjA1NDMxODYwYzY1NTk3ZTA2Y2E4MzdkYmQ1MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTI5MTMsNiArMjkxMywxNyBAQCB2b2lkIE5vZGU6OnJlbW92
ZWRMYXN0UmVmKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAorc2l6ZV90IE5vZGU6OnJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0Cit7Cisg
ICAgbWVtb3J5QWdncmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246
OkRPTSk7CisgICAgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6cmVwb3J0TWVtb3J5
VXNhZ2UobWVtb3J5QWdncmVnYXRvcik7CisgICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1v
cnlVc2FnZShtZW1vcnlBZ2dyZWdhdG9yKTsKKyAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQ
b2ludGVyKG1fZG9jdW1lbnQpOworICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFBvaW50ZXIo
bV9uZXh0KTsKKyAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fcHJldmlvdXMp
OworICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAyNjU5MTJkMDE4N2E3MGU4NDFmNTRl
NzA2YzUwNzA1ZGMwZjY3NDg1Li5mYmZiMTgxZGZmNzFhMDBhYjdhYjYwYTc4MjI1MDE1Zjg4ZWI2
MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlRyZWVT
aGFyZWQuaCIKQEAgLTY1Niw2ICs2NTcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTY29wZWRI
VE1MU3R5bGVDaGlsZCgpIGNvbnN0OwogICAgIHNpemVfdCBudW1iZXJPZlNjb3BlZEhUTUxTdHls
ZUNoaWxkcmVuKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHNpemVfdCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlBZ2dyZWdhdG9yKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZW51bSBOb2RlRmxh
Z3MgewogICAgICAgICBJc1RleHRGbGFnID0gMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5o
CmluZGV4IDYzNmIyYTUxNTBjOWU5ODdjMDI3ZTc1Njk3OTJkOWJhYzM0YTg5ZTkuLmZhMTk3MTc0
NTE2NDVkZGUyNDljOTFlNDRhZTQ1NzllOTIzZDFkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmll
ZE5hbWUuaApAQCAtMjEsNiArMjEsOCBAQAogI2lmbmRlZiBRdWFsaWZpZWROYW1lX2gKICNkZWZp
bmUgUXVhbGlmaWVkTmFtZV9oCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIK
KwogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTQ4LDYgKzUwLDE1IEBA
IHB1YmxpYzoKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZXNwYWNlOwogICAgICAg
ICBtdXRhYmxlIEF0b21pY1N0cmluZyBtX2xvY2FsTmFtZVVwcGVyOwogCisgICAgICAgIHNpemVf
dCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlBZ2dyZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RU
eXBlKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgICAgIG1lbW9yeUFnZ3Jl
Z2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX3ByZWZpeCk7CisgICAgICAgICAgICBtZW1v
cnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9sb2NhbE5hbWUpOworICAgICAg
ICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fbmFtZXNwYWNl
KTsKKyAgICAgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZSht
X2xvY2FsTmFtZVVwcGVyKTsKKyAgICAgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAg
ICAgICB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUXVhbGlmaWVkTmFtZUltcGwoY29uc3QgQXRv
bWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKICAgICAgICAgICAgIDogbV9wcmVmaXgocHJlZml4
KQpAQCAtOTIsNiArMTAzLDEyIEBAIHB1YmxpYzoKICAgICAvLyBJbml0IHJvdXRpbmUgZm9yIGds
b2JhbHMKICAgICBzdGF0aWMgdm9pZCBpbml0KCk7CiAgICAgCisgICAgc2l6ZV90IHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAg
eworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RUeXBlKE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6RE9NKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlciht
X2ltcGwpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CiBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKICAgICB2
b2lkIHJlZigpIGNvbnN0IHsgbV9pbXBsLT5yZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggNzUyZjcyODU3ZGI5YzEw
NjZkNDFlNDExOTE5MWEwZTFjZWI2OWVjOC4uNjcwNzY3N2I5YzdlZTc0NGE4YzliMTBmMjMyMzRi
NDM2NDE1YjhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk1lbW9y
eUNhY2hlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
TWVtb3J5VXNhZ2VTdXBwb3J0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKQEAgLTc3LDYgKzc4LDExIEBAIHN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZFhzbFN0eWxlU2hl
ZXRzW10gPSAiQ2FjaGVkWHNsU3R5bGVTaGVldHMiOwogc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVk
Rm9udHNbXSA9ICJDYWNoZWRGb250cyI7CiBzdGF0aWMgY29uc3QgY2hhciByZW5kZXJUcmVlVXNl
ZFtdID0gIlJlbmRlclRyZWVVc2VkIjsKIHN0YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVBbGxv
Y2F0ZWRbXSA9ICJSZW5kZXJUcmVlQWxsb2NhdGVkIjsKKworc3RhdGljIGNvbnN0IGNoYXIgZG9t
W10gPSAiRE9NIjsKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVPdGhlcltdID0gIkRPTVRyZWVP
dGhlciI7CitzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlRE9NW10gPSAiRE9NVHJlZURPTSI7Citz
dGF0aWMgY29uc3QgY2hhciBkb21UcmVlQ1NTW10gPSAiRE9NVHJlZUNTUyI7CiB9CiAKIG5hbWVz
cGFjZSB7CkBAIC0xNzcsMTAgKzE4Myw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbGxlY3RMaXN0
ZW5lcnNJbmZvKG5vZGUpOwogICAgIH0KIAotICAgIHZvaWQgY29sbGVjdENoYXJhY3RlckRhdGEo
Tm9kZSopCi0gICAgewotICAgIH0KLQogICAgIHZvaWQgY29sbGVjdE5vZGVOYW1lSW5mbyhOb2Rl
KiBub2RlKQogICAgIHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBub2RlTmFtZShub2RlKTsKQEAg
LTM3MiwxMyArMzc0LDkzIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiByZW5kZXJUcmVlSW5mbyhQYWdlKiBwYWdlKQogICAgIHJldHVybiByZW5kZXJUcmVlQWxsb2Nh
dGVkLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVtb3J5QmxvY2tGb3IoVHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXksIGNvbnN0IE1lbW9yeUNh
Y2hlOjpUeXBlU3RhdGlzdGljJiBzdGF0aXN0aWMsIGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMg
dm9pZCBhZGRNZW1vcnlCbG9ja0ZvcihUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+KiBhcnJheSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgUmVm
UHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZXN1bHQgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6
Y3JlYXRlKCkuc2V0TmFtZShuYW1lKTsKLSAgICByZXN1bHQtPnNldFNpemUoc3RhdGlzdGljLnNp
emUpOworICAgIHJlc3VsdC0+c2V0U2l6ZShzaXplKTsKICAgICBhcnJheS0+YWRkSXRlbShyZXN1
bHQpOwogfQogCituYW1lc3BhY2UgeworCitjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBs
IDogcHVibGljIE1lbW9yeUluc3RydW1lbnRhdGlvbiB7CitwdWJsaWM6CisgICAgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbCgpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IExh
c3RUeXBlRW50cnk7ICsraSkKKyAgICAgICAgICAgIG1fdG90YWxTaXplc1tpXSA9IDA7CisgICAg
fQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0YXRpc3RpY3Mo
KQorICAgIHsKKyAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7CisgICAgICAgIGZvciAoaW50
IGkgPSBPdGhlcjsgaSA8IExhc3RUeXBlRW50cnk7ICsraSkKKyAgICAgICAgICAgIHRvdGFsU2l6
ZSArPSBtX3RvdGFsU2l6ZXNbaV07CisKKyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBkb21DaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOworICAgICAgICBhZGRNZW1vcnlCbG9j
a0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW090aGVyXSwgTWVtb3J5QmxvY2tO
YW1lOjpkb21UcmVlT3RoZXIpOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJl
bi5nZXQoKSwgbV90b3RhbFNpemVzW0RPTV0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZURPTSk7
CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6
ZXNbQ1NTXSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlQ1NTKTsKKworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUo
KS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6ZG9tKTsKKyAgICAgICAgZG9tLT5zZXRTaXplKHRv
dGFsU2l6ZSk7CisgICAgICAgIGRvbS0+c2V0Q2hpbGRyZW4oZG9tQ2hpbGRyZW4ucmVsZWFzZSgp
KTsKKyAgICAgICAgcmV0dXJuIGRvbS5yZWxlYXNlKCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSBvYmplY3RUeXBlLCBzaXpl
X3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChvYmplY3RUeXBlID49IDAgJiYgb2JqZWN0
VHlwZSA8IExhc3RUeXBlRW50cnkpOworICAgICAgICBtX3RvdGFsU2l6ZXNbb2JqZWN0VHlwZV0g
Kz0gc2l6ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKiBv
YmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gIW1fdmlzaXRlZE9iamVjdHMuYWRkKG9iamVj
dCkuaXNOZXdFbnRyeTsKKyAgICB9CisgICAgc2l6ZV90IG1fdG90YWxTaXplc1tMYXN0VHlwZUVu
dHJ5XTsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8Y29uc3Qgdm9pZCo+IFZpc2l0ZWRPYmplY3RzOwor
ICAgIFZpc2l0ZWRPYmplY3RzIG1fdmlzaXRlZE9iamVjdHM7Cit9OworCitjbGFzcyBET01UcmVl
c0l0ZXJhdG9yIDogcHVibGljIERPTVdyYXBwZXJWaXNpdG9yIHsKK3B1YmxpYzoKKyAgICBET01U
cmVlc0l0ZXJhdG9yKFBhZ2UqIHBhZ2UpIDogbV9wYWdlKHBhZ2UpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIHZpc2l0Tm9kZShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUtPmRv
Y3VtZW50KCktPmZyYW1lKCkgJiYgbV9wYWdlICE9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkt
PnBhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2RvbU1lbW9yeVVzYWdl
LnJlcG9ydFNpemUobm9kZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRl
cm5hbFN0cmluZyhTdHJpbmdJbXBsKikgeyB9CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1l
bW9yeUJsb2NrPiBkdW1wU3RhdGlzdGljcygpIHsgcmV0dXJuIG1fZG9tTWVtb3J5VXNhZ2UuZHVt
cFN0YXRpc3RpY3MoKTsgfQorCitwcml2YXRlOgorICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBNZW1v
cnlJbnN0cnVtZW50YXRpb25JbXBsIG1fZG9tTWVtb3J5VXNhZ2U7Cit9OworCit9CisKK3N0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVlSW5mbyhQYWdlKiBwYWdl
KQoreworICAgIERPTVRyZWVzSXRlcmF0b3IgZG9tVHJlZXNJdGVyYXRvcihwYWdlKTsKKyAgICBT
Y3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJzKCZkb21UcmVlc0l0ZXJhdG9yKTsKKwor
ICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBtYWluIGZy
YW1lIGFyZSBhY2NvdW50ZWQuCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAg
ICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAg
IGRvbVRyZWVzSXRlcmF0b3IudmlzaXROb2RlKGRvYyk7CisgICAgfQorCisgICAgcmV0dXJuIGRv
bVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoKTsKK30KKwogc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygpCiB7CiAgICAgTWVtb3J5Q2Fj
aGU6OlN0YXRpc3RpY3Mgc3RhdHMgPSBtZW1vcnlDYWNoZSgpLT5nZXRTdGF0aXN0aWNzKCk7CkBA
IC0zOTEsMTIgKzQ3MywxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gbWVtb3J5Q2FjaGVJbmZvKCkKICAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRTaXplKHRvdGFs
U2l6ZSk7CiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJs
b2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2Nr
Pjo6Y3JlYXRlKCk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRz
LmltYWdlcywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRJbWFnZXMpOwotICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5jc3NTdHlsZVNoZWV0cywgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRy
ZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkU2NyaXB0cyk7
Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhzbFN0eWxlU2hl
ZXRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRzKTsKLSAgICBhZGRNZW1v
cnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMsIE1lbW9yeUJsb2NrTmFtZTo6
Y2FjaGVkRm9udHMpOwotICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldENoaWxkcmVuKGNoaWxkcmVu
KTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuaW1hZ2VzLnNp
emUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkSW1hZ2VzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0Zv
cihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuY3NzU3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRy
ZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRTY3Jp
cHRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMueHNsU3R5
bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRYc2xTdHlsZVNoZWV0cyk7Cisg
ICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmZvbnRzLnNpemUsIE1l
bW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOworICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldENo
aWxkcmVuKGNoaWxkcmVuLmdldCgpKTsKICAgICByZXR1cm4gbWVtb3J5Q2FjaGVTdGF0cy5yZWxl
YXNlKCk7CiB9CiAKQEAgLTQxMyw2ICs0OTUsNyBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50
OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwog
ICAgIGNoaWxkcmVuLT5hZGRJdGVtKGluc3BlY3RvckRhdGEoKSk7CiAgICAgY2hpbGRyZW4tPmFk
ZEl0ZW0obWVtb3J5Q2FjaGVJbmZvKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKHJlbmRlclRy
ZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CisgICAgY2hp
bGRyZW4tPmFkZEl0ZW0oZG9tVHJlZUluZm8obV9wYWdlKSk7IC8vIFRPRE86IGNvbGxlY3QgZm9y
IGFsbCBwYWdlcz8KICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRleCAyZWJkYjFkMWM1OTc4ZDFm
MGM3ZWYzMmZkY2I0ZGMzNjBmZmM1MmY0Li43YTEyY2VkNzg0Y2RkOTE3MDgyNDE0Mzg2YjkzZTI4
YTZjOWVlMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCkBAIC0xMTEsNiAr
MTExLDEzIEBAIHB1YmxpYzoKICAgICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uOwog
I2VuZGlmCiAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciog
bWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3It
PnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBtZW1v
cnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fcGFyZW50KTsKKyAgICAgICAgcmV0dXJuIHNp
emVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBmcmll
bmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50Tm9kZVR5cGU+Kik7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDJlYTBjZDVhZTVkMzZlZWFkNGE0NjQ5MjMzMGIxY2JlMzQ2N2Nh
ZTAuLjZlZThiNDAyYmY2Nzc4MTI3OWI2ODYwNGYyMmQ1Zjk0MDI2OThhMzUgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjEgIElseWEgVGlraG9ub3Zza3kgIDxsb2lz
bG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBhcnRpYWxseSBpbnN0
cnVtZW50IERPTSBUcmVlIG5hdGl2ZSBtZW1vcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU2OAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBN
ZW1vcnlJbnN0cnVtZW50YXRpb24gY2xhc3MgdGhhdCBjb3VudHMgYWxsIHZpc2l0ZWQKKyAgICAg
ICAgb2JqZWN0cyBhbmQgY2FsbHMgcmVwb3J0TWVtb3J5VXNhZ2UgaWYgdGhlIG9iamVjdCdzIGNs
YXNzIGhhcyBzdWNoIG1ldGhvZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGluc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWw6CisK
IDIwMTItMDYtMjAgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBwZXJmb3JtYW5jZSB0ZXN0IGZvciBwYXRocyBpbiBTVkcKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbAppbmRleCAy
YWUwNWJhNTdmNzViNGVmM2E4ODY3Yjg3ZTMzZDQ1MGExMDRkMjU5Li4zODY1M2E3NDIyNDk3MmU0
MDliZWNjMWUzZmIwNDQ3ZTc5YWE1MmMwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9pbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sCkBAIC0xLDUgKzEsMTcgQEAK
IDxodG1sPgogPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgc3BhbiB7Cisg
ICAgICBjb2xvcjpyZWQ7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDIwcHg7
CisgICAgfQorICAgIGRpdiB7CisgICAgICBjb2xvcjpibHVlOworICAgICAgd2lkdGg6IDUwcHg7
CisgICAgICBoZWlnaHQ6IDEwcHg7CisgICAgfQorICA8L3N0eWxlPgogICA8c2NyaXB0IHNyYz0i
Li4vLi4vTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgogICA8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgpAQCAtMzksOCArNTEsMTIgQEAgZnVuY3Rpb24gY3JlYXRlRE9NVHJlZShlbGVt
ZW50c0NvdW50KQogewogICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3RUcmVlUm9vdCIpOwogCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyAr
K2kpCi0gICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzQ291bnQ7ICsraSkgeworICAg
ICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAg
c3Bhbi5pZCA9ICJzcGFuXyIgKyBpOworICAgICAgICBzcGFuLnN0eWxlLndpZHRoID0gIjEwcHgi
OworICAgICAgICByb290LmFwcGVuZENoaWxkKHNwYW4pOworICAgIH0KIAogICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZWxlbWVudHNDb3VudDsgKytpKQogICAgICAgICByb290LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148793</attachid>
            <date>2012-06-21 07:09:45 -0700</date>
            <delta_ts>2012-06-21 07:57:48 -0700</delta_ts>
            <desc>build fix for win and mac bots</desc>
            <filename>bug-89568-20120621180944.patch</filename>
            <type>text/plain</type>
            <size>31882</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMzNjY2MwOTViMzlj
MTM5MzQ5NDUyZjY4YjMzMDA0YjkzNGM2Ni4uOTFkOGEzYzFhODhhZDg5OTkwNDY0OGE3OGY5NDE4
YTZiOGM0MTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA2LTIxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRz
IGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdl
IGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3Jh
cHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAq
IGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpR
dWFsaWZpZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9ja0Zvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjptZW1vcnlD
YWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFBy
b2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lbW9y
eUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRp
b246On5NZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplKToKKyAgICAgICAgKE1lbW9yeUFnZ3JlZ2F0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlBZ2dyZWdhdG9y
OjpNZW1vcnlBZ2dyZWdhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRh
dGlvbjo6TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5
QWdncmVnYXRvcjo6c2V0T2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok1lbW9yeUFnZ3JlZ2F0b3I6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFN0cnVjdHVyZUltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorCiAyMDEyLTA2LTIxICBU
YWlqdSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNb3ZlIHJlcXVlc3RJZCBhbGxvY2F0aW9uIGZyb20gRmlsZVN5c3RlbSBmcm9udGVuZCB0byBi
YWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ODVkYjlhNzA3Zjg2Y2Zh
Yzc5ODMxN2MxNWRmYWQxMjhmYmIzNWRhLi44NzFmNTllODVmNTdlMTlkMzBlMzA3MTI0N2ZjMTRk
MDYzYzk4ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MDYsNiArMTkw
Niw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFu
Z2VFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFu
bmVsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGI5ZGRmOTM1
NmUyYjJiZThkMmZhODQwODMzOTY0OWIxYTU0OTBmNGMuLmQ2MmJjMDliMGIxYTgxNGZmN2ZmZTgw
OTdmMGVhYTAzNGRjM2Y3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTc0NCw2ICsxNzQ0LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCiAgICAgZG9tL0ZyYWdtZW50U2Ny
aXB0aW5nUGVybWlzc2lvbi5oIFwKICAgICBkb20vS2V5Ym9hcmRFdmVudC5oIFwKKyAgICBkb20v
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5oIFwKICAg
ICBkb20vTWVzc2FnZUV2ZW50LmggXAogICAgIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggYjRmMTQxYTFjYjI2NTY3YmZlODQ5MTFlODRlMmNjYzgzYmFiZWRl
YS4uMWQyY2JlNDY2Y2Q3NmI0NjIzY2QxY2JjNjVmNjE5YjIxN2RiNmNjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNTMzNyw2ICs1MzM3LDcgQEAKICAgICAgICAgICAgICdkb20vSWNvblVSTC5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAogICAgICAgICAgICAgJ2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oJywK
ICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuY3BwJywKICAgICAgICAgICAgICdkb20v
TWVzc2FnZUNoYW5uZWwuaCcsCiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VFdmVudC5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwNTZm
ODk0YjZlMjMzOTAyYmY0MzIxNTAzMTgyZTY3MzUyZjRlZjFhLi5hMjg1YmQ4YWU5NTc4ZTI0YjY4
MGU1NTdlMzlmZjgyZjQ1MWQ5OTAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNTExNzUsNiArNTExNzUsMTAgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxkb21cTWVzc2FnZUNoYW5uZWwuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA0OTJmYzEyMzM1YTRhN2ZjNWNiMDg2NWM3OGZhNmE1ZTA1OWE3ZmNiLi4wM2E0MjY4NjM4
OTVhOWE4NmI1MmU2Yjc4NWI5NzViNmNmOWExNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDI4LDYgKzE0MjgsNyBAQAog
CQk0RjE1MzRERTExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERDExQjUzMkVDMDAy
MUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdC
ZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1
NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJ
bnNwZWN0b3JBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzJC
QjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NTEyRUFFN0Iz
MDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3Rv
ckFnZW50LmNwcCAqLzsgfTsKIAkJNEYzMjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3Rv
clZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsK
IAkJNEYzMjg5QjYxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjQxMUE0MkFBQjAw
NUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC04NDk1LDYgKzg0OTYsNyBAQAogCQk0RjE1MzRERDExQjUz
MkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIElu
c3BlY3RvckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rv
ckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGMzJCQjFBMTRGQTg1QUEw
MEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAv
KiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYz
Mjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxMzk0LDYgKzIxMzk2LDcgQEAKIAkJCQlCQzlBNjE0NDE0Njg1OUQ5MDA2
MDU3RkQgLyogbWFrZV9kb21fZXhjZXB0aW9ucy5wbCAqLywKIAkJCQlCQzlBNjE0NTE0Njg1OUQ5
MDA2MDU3RkQgLyogbWFrZV9ldmVudF9mYWN0b3J5LnBsICovLAogCQkJCUJDOUE2MTQ2MTQ2ODU5
RDkwMDYwNTdGRCAvKiBtYWtlX25hbWVzLnBsICovLAorCQkJCTRGMzJCQjFBMTRGQTg1QUEwMEY2
QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLywKIAkJCQlFMUFERUNDRDBFNzZBRDhC
MDA0QTFBNUUgLyogTWVzc2FnZUNoYW5uZWwuY3BwICovLAogCQkJCUUxQURFQ0NDMEU3NkFEOEIw
MDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oICovLAogCQkJCUUxQURFQ0QwMEU3NkFEQUIwMDRB
MUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5pZGwgKi8sCkBAIC0yNTExOSw2ICsyNTEyMiw3IEBACiAJ
CQkJQ0U3QjJEQjMxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTA5ODdDMjcxNTdENjc2
RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFi
bGUuaAppbmRleCA1MDhhOTM3MDA0NjBmMDEyMTEwOWQ1ZmVlMmE2OGVhOThmOTJkZmZmLi5iY2M5
ODMzMWI0Y2NhYzMxYjNkYTlkOTMzYTBmY2U0NzExYWNhOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaApAQCAtNTQsNiArNTQsMTMgQEAgcHVibGlj
OgogICAgICAgICB3ZWFrQ2xlYXIobV93cmFwcGVyLCB3cmFwcGVyKTsKICAgICB9CiAKKyAgICBz
aXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRv
cikgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5y
ZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV93cmFwcGVyKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigq
dGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogICAgIEpTQzo6V2VhazxKU0RPTVdyYXBwZXI+IG1f
d3JhcHBlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJs
ZS5oCmluZGV4IDg1MDk5NGFiYjcxZjJjZThhNDZkNWRmN2IzNTZhZThmNzgyY2ZhYTYuLmFiOGUx
ZjBlMmUwOTM4Zjg4MDg4YWZhMjhiZDI3Njk3ZmNlZjg2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCkBAIC01Miw2ICs1MiwxMyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyV3JhcHBlcigpIHsgbV93cmFwcGVyID0gMDsgfQogCisgICAgc2l6
ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0b3Ip
IGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RUeXBlKE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVw
b3J0UG9pbnRlcihtX3dyYXBwZXIpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAg
ICB9CisKIHByaXZhdGU6CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4qIG1fd3JhcHBl
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA3NGNlMDc5YTQ3
MzMxZjVlNDI3YjUxZmVlOWNmMGJjMzk0OTk3NTM4Li5mYzk1OGI2YjY3M2RhYTVlNzVlZWVjYTJl
ZmNjNDUzNTlmYjg2MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTExNSw2ICsxMTYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1N0eWxlKCk7CiAjZW5k
aWYKICAgICAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciog
bWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3It
PnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgICAgICBpZiAo
bV9pc011dGFibGUpCisgICAgICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVy
KG1fbXV0YWJsZVByb3BlcnR5VmVjdG9yKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7
CisgICAgfQogcHJpdmF0ZToKICAgICBTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1vZGUpOwog
ICAgIFN0eWxlUHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2ln
bmVkIGNvdW50LCBDU1NQYXJzZXJNb2RlLCBib29sIG1ha2VNdXRhYmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCmluZGV4IGJlOGM3OGU0ZDVmMTA1NjdkNGU1NTliYWJmYmZlNjBmOTE2
ZmZlM2MuLjU4NWIxZjgxYTM4MDMzMDY3MTU3ZDRlY2Q0ZWExZjE5MWE3ODUzMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtOTksNiArOTksMTUgQEAgcHVibGljOgogICAgIE5v
ZGUqIHRyYXZlcnNlTmV4dE5vZGUoKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZU5leHROb2Rl
KGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4pIGNvbnN0OwogCisgICAgdmlydHVhbCBzaXplX3QgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QK
KyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1v
cnlBZ2dyZWdhdG9yKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlciht
X2ZpcnN0Q2hpbGQpOworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1f
bGFzdENoaWxkKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgQ29udGFpbmVyTm9kZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBD
cmVhdGVDb250YWluZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBkZTNmMGM1YWYxNGUwNTA2
ZTYxMTVjOWZkZDY5ODg2NWE5YjMwODNiLi5mOWI2NTM1MjQwMWYwODQwOWJjMTc5OWZhZmQ2ZmQy
ZDYzMWVkNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQyMSw2ICs0MjEsMTUgQEAgcHVibGlj
OgogICAgIEludFNpemUgc2F2ZWRMYXllclNjcm9sbE9mZnNldCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJik7CiAKKyAgICB2aXJ0dWFs
IHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlBZ2dyZWdhdG9yKiBtZW1vcnlBZ2dyZWdh
dG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+c2V0T2JqZWN0VHlw
ZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIENvbnRhaW5lck5vZGU6OnJl
cG9ydE1lbW9yeVVzYWdlKG1lbW9yeUFnZ3JlZ2F0b3IpOworICAgICAgICBtZW1vcnlBZ2dyZWdh
dG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV90YWdOYW1lKTsKKyAgICAgICAgbWVtb3J5QWdn
cmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2F0dHJpYnV0ZURhdGEpOworICAgICAgICByZXR1cm4g
c2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlw
ZSB0eXBlKQogICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCmluZGV4IDhiMWIzMThmZTk5ZGU0YjIx
ZThmZGY2MTZiZWEwZTU5YmQyZWZmMzUuLmJmMDU5OWJjOWQ4OTM1NGRhMzg4MTY4NWNlYzAxODI5
NmNmM2NjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEVsZW1lbnRBdHRyaWJ1dGVEYXRhX2gKIAogI2luY2x1
ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0Lmgi
CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC05OSw2ICsxMDAsMTcgQEAgcHVibGljOgog
ICAgIFBhc3NSZWZQdHI8QXR0cj4gYXR0cklmRXhpc3RzKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgUGFzc1JlZlB0cjxBdHRyPiBlbnN1cmVBdHRyKEVsZW1lbnQqLCBjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9y
eUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOwor
ICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1faW5saW5lU3R5bGVEZWNs
KTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2F0dHJpYnV0ZVN0
eWxlKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1f
Y2xhc3NOYW1lcyk7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVj
dHVyZShtX2lkRm9yU3R5bGVSZXNvbHV0aW9uKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+
cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fYXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybiBzaXpl
b2YoKnRoaXMpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRWxlbWVudDsK
ICAgICBmcmllbmQgY2xhc3MgSFRNTENvbnN0cnVjdGlvblNpdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YyNzkxYzJjMDBkZGYyNTQ3
NGI0YWIzNzBlYjdjM2RlZjJmZmRjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uX2gKKyNkZWZpbmUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKKwor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVtb3J5QWdncmVnYXRvcjsKKworY2xhc3MgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZW1vcnlJbnN0cnVtZW50
YXRpb24oKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0
U2l6ZShjb25zdCBUKiBjb25zdCBvYmplY3QpCisgICAgeworICAgICAgICBpZiAoIW9iamVjdCB8
fCB2aXNpdGVkKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIE1lbW9yeUFn
Z3JlZ2F0b3IgYWdncmVnYXRvcih0aGlzKTsKKyAgICAgICAgcmVwb3J0U2l6ZUltcGw8VCwgc2l6
ZV90IChUOjoqKShNZW1vcnlBZ2dyZWdhdG9yKikgY29uc3Q+KG9iamVjdCwgJmFnZ3JlZ2F0b3Is
IDApOworICAgIH0KKworICAgIGVudW0gT2JqZWN0VHlwZSB7CisgICAgICAgIE90aGVyID0gMCwK
KyAgICAgICAgRE9NID0gMSwKKyAgICAgICAgQ1NTID0gMiwKKyAgICAgICAgTGFzdFR5cGVFbnRy
eSA9IDMKKyAgICB9OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlBZ2dyZWdh
dG9yOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZSwgVHlwZSBQdHI+CisgICAgc3RydWN0
IE1lbWJlckhlbHBlclN0cnVjdDsKKworICAgIC8vIEltcGxlbWVudGF0aW9uIGZvciBpbnN0cnVt
ZW50ZWQgY2xhc3Nlcy4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUeXBlPgor
ICAgIHZvaWQgcmVwb3J0U2l6ZUltcGwoY29uc3QgVCosIE1lbW9yeUFnZ3JlZ2F0b3IqLCBNZW1i
ZXJIZWxwZXJTdHJ1Y3Q8VHlwZSwgJlQ6OnJlcG9ydE1lbW9yeVVzYWdlPiopOworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZT4KKyAgICB2b2lkIHJlcG9ydFN0cnVjdHVy
ZUltcGwoY29uc3QgVCYsIE1lbWJlckhlbHBlclN0cnVjdDxUeXBlLCAmVDo6cmVwb3J0TWVtb3J5
VXNhZ2U+Kik7CisKKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBmb3IgX05PVF8gaW5zdHJ1bWVudGVk
IGNsYXNzZXMuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZT4KKyAgICB2
b2lkIHJlcG9ydFNpemVJbXBsKGNvbnN0IFQqIGNvbnN0LCBNZW1vcnlBZ2dyZWdhdG9yKiwgLi4u
KQorICAgIHsKKyAgICAgICAgY291bnRPYmplY3RTaXplKE90aGVyLCBzaXplb2YoVCkpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+CisgICAgdm9pZCBy
ZXBvcnRTdHJ1Y3R1cmVJbXBsKGNvbnN0IFQmLCAuLi4pCisgICAgeworICAgICAgICAvLyBXZSBj
YW4ndCBjYWxsIHJlcG9ydE1lbW9yeVVzYWdlIGJlY2F1c2Ugb2JqZWN0J3MgY2xhc3MgaXNuJ3Qg
aW5zdHJ1bWVudGVkIHlldC4KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RT
aXplKE9iamVjdFR5cGUsIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNv
bnN0IHZvaWQqKSA9IDA7Cit9OworCitjbGFzcyBNZW1vcnlBZ2dyZWdhdG9yIHsKK3B1YmxpYzoK
KyAgICAgTWVtb3J5QWdncmVnYXRvcihNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3Ry
dW1lbnRhdGlvbikKKyAgICAgICAgIDogbV9tZW1vcnlJbnN0cnVtZW50YXRpb24obWVtb3J5SW5z
dHJ1bWVudGF0aW9uKQorICAgICAgICAgLCBtX29iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpPdGhlcikKKyAgICAgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgICB2
b2lkIHJlcG9ydFBvaW50ZXIoY29uc3QgUCogY29uc3QgbWVtYmVyUG9pbnRlcikKKyAgICB7Cisg
ICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRTaXplKG1lbWJlclBvaW50ZXIp
OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgIHZvaWQgcmVwb3J0UG9p
bnRlcihjb25zdCBPd25QdHI8UD4mIG1lbWJlclBvaW50ZXIpCisgICAgeworICAgICAgICBtX21l
bW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U2l6ZShtZW1iZXJQb2ludGVyLmdldCgpKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgICB2b2lkIHJlcG9ydFBvaW50ZXIo
Y29uc3QgUmVmUHRyPFA+JiBtZW1iZXJQb2ludGVyKQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24tPnJlcG9ydFNpemUobWVtYmVyUG9pbnRlci5nZXQoKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZXBvcnRNZW1iZXJTdHJ1Y3R1
cmUoY29uc3QgVCYgbWVtYmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24tPnJlcG9ydFN0cnVjdHVyZUltcGw8VCwgc2l6ZV90IChUOjoqKShNZW1vcnlBZ2dy
ZWdhdG9yKikgY29uc3Q+KG1lbWJlck9iamVjdCwgMCk7CisgICAgfQorCisgICAgdm9pZCBzZXRP
YmplY3RUeXBlKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7
IG1fb2JqZWN0VHlwZSA9IG1fb2JqZWN0VHlwZSA9PSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90
aGVyID8gb2JqZWN0VHlwZSA6IG1fb2JqZWN0VHlwZTsgfQorICAgIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RUeXBl
OyB9CisKKyBwcml2YXRlOgorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9tZW1vcnlJbnN0
cnVtZW50YXRpb247CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG1fb2Jq
ZWN0VHlwZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+Cit2b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0U2l6ZUltcGwoY29uc3QgVCogY29uc3Qgb2Jq
ZWN0LCBNZW1vcnlBZ2dyZWdhdG9yKiBhZ2dyZWdhdG9yLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
Ok1lbWJlckhlbHBlclN0cnVjdDxUeXBlLCAmVDo6cmVwb3J0TWVtb3J5VXNhZ2U+KikKK3sKKyAg
ICBzaXplX3Qgc2l6ZSA9IG9iamVjdC0+cmVwb3J0TWVtb3J5VXNhZ2UoYWdncmVnYXRvcik7Cisg
ICAgY291bnRPYmplY3RTaXplKGFnZ3JlZ2F0b3ItPm9iamVjdFR5cGUoKSwgc2l6ZSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6cmVwb3J0U3RydWN0dXJlSW1wbChjb25zdCBUJiBvYmplY3QsIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6TWVtYmVySGVscGVyU3RydWN0PFR5cGUsICZUOjpyZXBvcnRNZW1vcnlVc2Fn
ZT4qKQoreworICAgIE1lbW9yeUFnZ3JlZ2F0b3IgYWdncmVnYXRvcih0aGlzKTsKKyAgICBvYmpl
Y3QucmVwb3J0TWVtb3J5VXNhZ2UoJmFnZ3JlZ2F0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyAhZGVmaW5lZChNZW1vcnlJbnN0cnVtZW50YXRpb25faCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCBjOWJlNjU3NWU0MWUyOGU4NzdkOGU1MGU5OGZlMmQ4YTVhNzFmZWNm
Li4wMDY4NjQ5NmE4NzYwNTQzMTg2MGM2NTU5N2UwNmNhODM3ZGJkNTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC0yOTEzLDYgKzI5MTMsMTcgQEAgdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigpCiAg
ICAgZGVsZXRlIHRoaXM7CiB9CiAKK3NpemVfdCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlBZ2dyZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAoreworICAgIG1lbW9yeUFnZ3Jl
Z2F0b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIFRy
ZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeUFn
Z3JlZ2F0b3IpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5
QWdncmVnYXRvcik7CisgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2RvY3Vt
ZW50KTsKKyAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fbmV4dCk7CisgICAg
bWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX3ByZXZpb3VzKTsKKyAgICByZXR1cm4g
c2l6ZW9mKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5E
RUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggMjY1OTEyZDAxODdhNzBlODQxZjU0ZTcwNmM1MDcwNWRjMGY2
NzQ4NS4uZmJmYjE4MWRmZjcxYTAwYWI3YWI2MGE3ODIyNTAxNWY4OGViNjM2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRl
ICJLVVJMSGFzaC5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCisjaW5jbHVkZSAiTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNp
bmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUcmVlU2hhcmVkLmgiCkBAIC02
NTYsNiArNjU3LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQo
KSBjb25zdDsKICAgICBzaXplX3QgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbigpIGNv
bnN0OwogCisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVn
YXRvciopIGNvbnN0OworCiBwcml2YXRlOgogICAgIGVudW0gTm9kZUZsYWdzIHsKICAgICAgICAg
SXNUZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRleCA2MzZiMmE1
MTUwYzllOTg3YzAyN2U3NTY5NzkyZDliYWMzNGE4OWU5Li5mYTE5NzE3NDUxNjQ1ZGRlMjQ5Yzkx
ZTQ0YWU0NTc5ZTkyM2QxZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlm
aWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTIx
LDYgKzIxLDggQEAKICNpZm5kZWYgUXVhbGlmaWVkTmFtZV9oCiAjZGVmaW5lIFF1YWxpZmllZE5h
bWVfaAogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisKICNpbmNsdWRlIDx3
dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC00OCw2ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZTsKICAgICAgICAgbXV0YWJsZSBBdG9t
aWNTdHJpbmcgbV9sb2NhbE5hbWVVcHBlcjsKIAorICAgICAgICBzaXplX3QgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICAgICAg
eworICAgICAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0
cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRN
ZW1iZXJTdHJ1Y3R1cmUobV9wcmVmaXgpOworICAgICAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+
cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIG1lbW9yeUFn
Z3JlZ2F0b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX25hbWVzcGFjZSk7CisgICAgICAgICAg
ICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9sb2NhbE5hbWVVcHBl
cik7CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICAgICAgfQogICAgIHBy
aXZhdGU6CiAgICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkkpCiAgICAgICAgICAgICA6IG1fcHJlZml4KHByZWZpeCkKQEAgLTkyLDYgKzEw
MywxMiBAQCBwdWJsaWM6CiAgICAgLy8gSW5pdCByb3V0aW5lIGZvciBnbG9iYWxzCiAgICAgc3Rh
dGljIHZvaWQgaW5pdCgpOwogICAgIAorICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlBZ2dyZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVt
b3J5QWdncmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7
CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFBvaW50ZXIobV9pbXBsKTsKKyAgICAg
ICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQogcHJpdmF0ZToKICAgICB2b2lkIGluaXQo
Y29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAgICAgdm9pZCByZWYoKSBjb25z
dCB7IG1faW1wbC0+cmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDc1MmY3Mjg1N2RiOWMxMDY2ZDQxZTQxMTkxOTFh
MGUxY2ViNjllYzguLjY3MDc2NzdiOWM3ZWU3NDRhOGM5YjEwZjIzMjM0YjQzNjQxNWI4ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1
ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2lu
Y2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lbW9yeVVzYWdlU3Vw
cG9ydC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC03Nyw2ICs3
OCwxMSBAQCBzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRYc2xTdHlsZVNoZWV0c1tdID0gIkNhY2hl
ZFhzbFN0eWxlU2hlZXRzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZEZvbnRzW10gPSAiQ2Fj
aGVkRm9udHMiOwogc3RhdGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZVVzZWRbXSA9ICJSZW5kZXJU
cmVlVXNlZCI7CiBzdGF0aWMgY29uc3QgY2hhciByZW5kZXJUcmVlQWxsb2NhdGVkW10gPSAiUmVu
ZGVyVHJlZUFsbG9jYXRlZCI7CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVtdID0gIkRPTSI7Citz
dGF0aWMgY29uc3QgY2hhciBkb21UcmVlT3RoZXJbXSA9ICJET01UcmVlT3RoZXIiOworc3RhdGlj
IGNvbnN0IGNoYXIgZG9tVHJlZURPTVtdID0gIkRPTVRyZWVET00iOworc3RhdGljIGNvbnN0IGNo
YXIgZG9tVHJlZUNTU1tdID0gIkRPTVRyZWVDU1MiOwogfQogCiBuYW1lc3BhY2UgewpAQCAtMTc3
LDEwICsxODMsNiBAQCBwcml2YXRlOgogICAgICAgICBjb2xsZWN0TGlzdGVuZXJzSW5mbyhub2Rl
KTsKICAgICB9CiAKLSAgICB2b2lkIGNvbGxlY3RDaGFyYWN0ZXJEYXRhKE5vZGUqKQotICAgIHsK
LSAgICB9Ci0KICAgICB2b2lkIGNvbGxlY3ROb2RlTmFtZUluZm8oTm9kZSogbm9kZSkKICAgICB7
CiAgICAgICAgIFN0cmluZyBuYW1lID0gbm9kZU5hbWUobm9kZSk7CkBAIC0zNzIsMTMgKzM3NCw5
MyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVuZGVyVHJlZUlu
Zm8oUGFnZSogcGFnZSkKICAgICByZXR1cm4gcmVuZGVyVHJlZUFsbG9jYXRlZC5yZWxlYXNlKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4qIGFycmF5LCBjb25zdCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRp
c3RpYyYgc3RhdGlzdGljLCBjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIHZvaWQgYWRkTWVtb3J5
QmxvY2tGb3IoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXks
IHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz4gcmVzdWx0ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5h
bWUobmFtZSk7Ci0gICAgcmVzdWx0LT5zZXRTaXplKHN0YXRpc3RpYy5zaXplKTsKKyAgICByZXN1
bHQtPnNldFNpemUoc2l6ZSk7CiAgICAgYXJyYXktPmFkZEl0ZW0ocmVzdWx0KTsKIH0KIAorbmFt
ZXNwYWNlIHsKKworY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCA6IHB1YmxpYyBNZW1v
cnlJbnN0cnVtZW50YXRpb24geworcHVibGljOgorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbklt
cGwoKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBMYXN0VHlwZUVudHJ5OyAr
K2kpCisgICAgICAgICAgICBtX3RvdGFsU2l6ZXNbaV0gPSAwOworICAgIH0KKworICAgIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBTdGF0aXN0aWNzKCkKKyAgICB7CisgICAg
ICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOworICAgICAgICBmb3IgKGludCBpID0gT3RoZXI7IGkg
PCBMYXN0VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAgICB0b3RhbFNpemUgKz0gbV90b3RhbFNp
emVzW2ldOworCisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVt
b3J5QmxvY2s+ID4gZG9tQ2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVt
b3J5QmxvY2s+OjpjcmVhdGUoKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRy
ZW4uZ2V0KCksIG1fdG90YWxTaXplc1tPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90
aGVyKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90
YWxTaXplc1tET01dLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVET00pOworICAgICAgICBhZGRN
ZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW0NTU10sIE1lbW9y
eUJsb2NrTmFtZTo6ZG9tVHJlZUNTUyk7CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9y
eUJsb2NrPiBkb20gPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1v
cnlCbG9ja05hbWU6OmRvbSk7CisgICAgICAgIGRvbS0+c2V0U2l6ZSh0b3RhbFNpemUpOworICAg
ICAgICBkb20tPnNldENoaWxkcmVuKGRvbUNoaWxkcmVuLnJlbGVhc2UoKSk7CisgICAgICAgIHJl
dHVybiBkb20ucmVsZWFzZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQg
Y291bnRPYmplY3RTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCisgICAg
eworICAgICAgICBBU1NFUlQob2JqZWN0VHlwZSA+PSAwICYmIG9iamVjdFR5cGUgPCBMYXN0VHlw
ZUVudHJ5KTsKKyAgICAgICAgbV90b3RhbFNpemVzW29iamVjdFR5cGVdICs9IHNpemU7CisgICAg
fQorCisgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCogb2JqZWN0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuICFtX3Zpc2l0ZWRPYmplY3RzLmFkZChvYmplY3QpLmlzTmV3RW50cnk7
CisgICAgfQorICAgIHNpemVfdCBtX3RvdGFsU2l6ZXNbTGFzdFR5cGVFbnRyeV07CisgICAgdHlw
ZWRlZiBIYXNoU2V0PGNvbnN0IHZvaWQqPiBWaXNpdGVkT2JqZWN0czsKKyAgICBWaXNpdGVkT2Jq
ZWN0cyBtX3Zpc2l0ZWRPYmplY3RzOworfTsKKworY2xhc3MgRE9NVHJlZXNJdGVyYXRvciA6IHB1
YmxpYyBET01XcmFwcGVyVmlzaXRvciB7CitwdWJsaWM6CisgICAgRE9NVHJlZXNJdGVyYXRvcihQ
YWdlKiBwYWdlKSA6IG1fcGFnZShwYWdlKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdE5v
ZGUoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgpLT5mcmFt
ZSgpICYmIG1fcGFnZSAhPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9kb21NZW1vcnlVc2FnZS5yZXBvcnRTaXplKG5v
ZGUpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmcoU3Ry
aW5nSW1wbCopIHsgfQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVt
cFN0YXRpc3RpY3MoKSB7IHJldHVybiBtX2RvbU1lbW9yeVVzYWdlLmR1bXBTdGF0aXN0aWNzKCk7
IH0KKworcHJpdmF0ZToKKyAgICBQYWdlKiBtX3BhZ2U7CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSW1wbCBtX2RvbU1lbW9yeVVzYWdlOworfTsKKworfQorCitzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gZG9tVHJlZUluZm8oUGFnZSogcGFnZSkKK3sKKyAgICBET01U
cmVlc0l0ZXJhdG9yIGRvbVRyZWVzSXRlcmF0b3IocGFnZSk7CisgICAgU2NyaXB0UHJvZmlsZXI6
OnZpc2l0SlNET01XcmFwcGVycygmZG9tVHJlZXNJdGVyYXRvcik7CisKKyAgICAvLyBNYWtlIHN1
cmUgYWxsIGRvY3VtZW50cyByZWFjaGFibGUgZnJvbSB0aGUgbWFpbiBmcmFtZSBhcmUgYWNjb3Vu
dGVkLgorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChEb2N1
bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb21UcmVlc0l0ZXJh
dG9yLnZpc2l0Tm9kZShkb2MpOworICAgIH0KKworICAgIHJldHVybiBkb21UcmVlc0l0ZXJhdG9y
LmR1bXBTdGF0aXN0aWNzKCk7Cit9CisKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9y
eUJsb2NrPiBtZW1vcnlDYWNoZUluZm8oKQogewogICAgIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNz
IHN0YXRzID0gbWVtb3J5Q2FjaGUoKS0+Z2V0U3RhdGlzdGljcygpOwpAQCAtMzkxLDEyICs0NzMs
MTIgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hl
SW5mbygpCiAgICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0U2l6ZSh0b3RhbFNpemUpOwogCiAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJl
biA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwot
ICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFnZXMsIE1lbW9y
eUJsb2NrTmFtZTo6Y2FjaGVkSW1hZ2VzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJl
bi5nZXQoKSwgc3RhdHMuY3NzU3R5bGVTaGVldHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3Nz
U3R5bGVTaGVldHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0
cy5zY3JpcHRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFNjcmlwdHMpOwotICAgIGFkZE1lbW9y
eUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy54c2xTdHlsZVNoZWV0cywgTWVtb3J5Qmxv
Y2tOYW1lOjpjYWNoZWRYc2xTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hp
bGRyZW4uZ2V0KCksIHN0YXRzLmZvbnRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZEZvbnRzKTsK
LSAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgYWRkTWVt
b3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmltYWdlcy5zaXplLCBNZW1vcnlCbG9j
a05hbWU6OmNhY2hlZEltYWdlcyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0
KCksIHN0YXRzLmNzc1N0eWxlU2hlZXRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3Nz
U3R5bGVTaGVldHMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0
cy5zY3JpcHRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkU2NyaXB0cyk7CisgICAgYWRk
TWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhzbFN0eWxlU2hlZXRzLnNpemUs
IE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkWHNsU3R5bGVTaGVldHMpOworICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5mb250cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6
OmNhY2hlZEZvbnRzKTsKKyAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJl
bi5nZXQoKSk7CiAgICAgcmV0dXJuIG1lbW9yeUNhY2hlU3RhdHMucmVsZWFzZSgpOwogfQogCkBA
IC00MTMsNiArNDk1LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01l
bW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAgICBjaGlsZHJlbi0+
YWRkSXRlbShpbnNwZWN0b3JEYXRhKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKG1lbW9yeUNh
Y2hlSW5mbygpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShyZW5kZXJUcmVlSW5mbyhtX3BhZ2Up
KTsgLy8gVE9ETzogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPworICAgIGNoaWxkcmVuLT5hZGRJdGVt
KGRvbVRyZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAg
ICAgcHJvY2Vzc01lbW9yeS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UcmVlU2hhcmVkLmgKaW5kZXggMmViZGIxZDFjNTk3OGQxZjBjN2VmMzJmZGNiNGRj
MzYwZmZjNTJmNC4uN2ExMmNlZDc4NGNkZDkxNzA4MjQxNDM4NmI5M2UyOGE2YzllZTEyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtMTExLDYgKzExMSwxMyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbjsKICNlbmRpZgogCisgICAg
c2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0
b3IpIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RUeXBl
KE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+
cmVwb3J0UG9pbnRlcihtX3BhcmVudCk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOwor
ICAgIH0KKwogcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJpZW5kIHZvaWQgYWRvcHRl
ZDw+KFRyZWVTaGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCAyZWEwY2Q1YWU1ZDM2ZWVhZDRhNDY0OTIzMzBiMWNiZTM0NjdjYWUwLi42ZWU4YjQwMmJm
Njc3ODEyNzliNjg2MDRmMjJkNWY5NDAyNjk4YTM1IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDEyLTA2LTIxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJl
ZSBuYXRpdmUgbWVtb3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uIGNsYXNzIHRoYXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5k
IGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBt
ZXRob2QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA2LTIwICBQ
aGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIGEgcGVyZm9ybWFu
Y2UgdGVzdCBmb3IgcGF0aHMgaW4gU1ZHCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwKaW5kZXggMmFlMDViYTU3Zjc1YjRl
ZjNhODg2N2I4N2UzM2Q0NTBhMTA0ZDI1OS4uMzg2NTNhNzQyMjQ5NzJlNDA5YmVjYzFlM2ZiMDQ0
N2U3OWFhNTJjMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmF0aXZl
LW1lbW9yeS1zbmFwc2hvdC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25h
dGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbApAQCAtMSw1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFk
PgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIHNwYW4geworICAgICAgY29sb3I6cmVk
OworICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAyMHB4OworICAgIH0KKyAgICBk
aXYgeworICAgICAgY29sb3I6Ymx1ZTsKKyAgICAgIHdpZHRoOiA1MHB4OworICAgICAgaGVpZ2h0
OiAxMHB4OworICAgIH0KKyAgPC9zdHlsZT4KICAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KICAg
PHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KQEAg
LTM5LDggKzUxLDEyIEBAIGZ1bmN0aW9uIGNyZWF0ZURPTVRyZWUoZWxlbWVudHNDb3VudCkKIHsK
ICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJlZVJvb3QiKTsK
IAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHNDb3VudDsgKytpKQotICAgICAgICBy
b290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyArK2kpIHsKKyAgICAgICAgdmFyIHNwYW4g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHNwYW4uaWQgPSAic3Bh
bl8iICsgaTsKKyAgICAgICAgc3Bhbi5zdHlsZS53aWR0aCA9ICIxMHB4IjsKKyAgICAgICAgcm9v
dC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICB9CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVs
ZW1lbnRzQ291bnQ7ICsraSkKICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148803</attachid>
            <date>2012-06-21 07:59:36 -0700</date>
            <delta_ts>2012-06-21 11:29:38 -0700</delta_ts>
            <desc>build fix for win</desc>
            <filename>bug-89568-20120621185935.patch</filename>
            <type>text/plain</type>
            <size>31896</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI1NWI4M2YzYzc2MmVk
NjBiNDc3NjU5NmZlYjU0OGViNDI3ODlkMC4uMzA1OGM4OWU5NzllMjE1ZWRlMWE4NWJjODExNmQx
ZTE5NTkxMDczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA2LTIxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRz
IGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdl
IGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3Jh
cHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcG9ydE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAq
IGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpR
dWFsaWZpZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9ja0Zvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjptZW1vcnlD
YWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFBy
b2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lbW9y
eUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRp
b246On5NZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplKToKKyAgICAgICAgKE1lbW9yeUFnZ3JlZ2F0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpNZW1vcnlBZ2dyZWdhdG9y
OjpNZW1vcnlBZ2dyZWdhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRh
dGlvbjo6TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0TWVtYmVyU3Ry
dWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6TWVtb3J5
QWdncmVnYXRvcjo6c2V0T2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0
cnVtZW50YXRpb246Ok1lbW9yeUFnZ3JlZ2F0b3I6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRTaXplSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFN0cnVjdHVyZUltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorCiAyMDEyLTA2LTIwICBI
YW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BlZWNoIEphdmFT
Y3JpcHQgQVBJOiBTcGVlY2hSZWNvZ25pdGlvbiBzaG91bGQgaG9vayB1cCB3aXRoIEFjdGl2ZURP
TU9iamVjdCBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ODVkYjlhNzA3
Zjg2Y2ZhYzc5ODMxN2MxNWRmYWQxMjhmYmIzNWRhLi44NzFmNTllODVmNTdlMTlkMzBlMzA3MTI0
N2ZjMTRkMDYzYzk4ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MDYs
NiArMTkwNiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hh
c2hDaGFuZ2VFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3Jl
L2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VDaGFubmVsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmggXAog
CVNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGI5
ZGRmOTM1NmUyYjJiZThkMmZhODQwODMzOTY0OWIxYTU0OTBmNGMuLmQ2MmJjMDliMGIxYTgxNGZm
N2ZmZTgwOTdmMGVhYTAzNGRjM2Y3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTc0NCw2ICsxNzQ0LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCiAgICAgZG9tL0ZyYWdt
ZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIFwKICAgICBkb20vS2V5Ym9hcmRFdmVudC5oIFwKKyAg
ICBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5o
IFwKICAgICBkb20vTWVzc2FnZUV2ZW50LmggXAogICAgIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjRmMTQxYTFjYjI2NTY3YmZlODQ5MTFlODRlMmNjYzgz
YmFiZWRlYS4uMWQyY2JlNDY2Y2Q3NmI0NjIzY2QxY2JjNjVmNjE5YjIxN2RiNmNjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNTMzNyw2ICs1MzM3LDcgQEAKICAgICAgICAgICAgICdkb20vSWNvblVS
TC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAogICAgICAgICAgICAgJ2RvbS9L
ZXlib2FyZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnZG9tL01lbW9yeUluc3RydW1lbnRhdGlv
bi5oJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuY3BwJywKICAgICAgICAgICAg
ICdkb20vTWVzc2FnZUNoYW5uZWwuaCcsCiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VFdmVudC5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCAwNTZmODk0YjZlMjMzOTAyYmY0MzIxNTAzMTgyZTY3MzUyZjRlZjFhLi5hMjg1YmQ4YWU5NTc4
ZTI0YjY4MGU1NTdlMzlmZjgyZjQ1MWQ5OTAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTExNzUsNiArNTExNzUsMTAgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXE1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxkb21cTWVzc2FnZUNoYW5uZWwuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA0OTJmYzEyMzM1YTRhN2ZjNWNiMDg2NWM3OGZhNmE1ZTA1OWE3ZmNiLi4wM2E0
MjY4NjM4OTVhOWE4NmI1MmU2Yjc4NWI5NzViNmNmOWExNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDI4LDYgKzE0Mjgs
NyBAQAogCQk0RjE1MzRERTExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERDExQjUz
MkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVk
aXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3
NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NTEy
RUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIElu
c3BlY3RvckFnZW50LmNwcCAqLzsgfTsKIAkJNEYzMjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIElu
c3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAq
LzsgfTsKIAkJNEYzMjg5QjYxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjQxMUE0
MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDk1LDYgKzg0OTYsNyBAQAogCQk0RjE1MzRE
RDExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0
IC8qIEluc3BlY3RvckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGMzJCQjFBMTRG
QTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2Vu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMzI4OUIzMTFBNDJBQUIwMDVB
QkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMzk0LDYgKzIxMzk2LDcgQEAKIAkJCQlCQzlBNjE0NDE0Njg1
OUQ5MDA2MDU3RkQgLyogbWFrZV9kb21fZXhjZXB0aW9ucy5wbCAqLywKIAkJCQlCQzlBNjE0NTE0
Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9ldmVudF9mYWN0b3J5LnBsICovLAogCQkJCUJDOUE2MTQ2
MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX25hbWVzLnBsICovLAorCQkJCTRGMzJCQjFBMTRGQTg1
QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLywKIAkJCQlFMUFERUNDRDBF
NzZBRDhCMDA0QTFBNUUgLyogTWVzc2FnZUNoYW5uZWwuY3BwICovLAogCQkJCUUxQURFQ0NDMEU3
NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oICovLAogCQkJCUUxQURFQ0QwMEU3NkFE
QUIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5pZGwgKi8sCkBAIC0yNTExOSw2ICsyNTEyMiw3
IEBACiAJCQkJQ0U3QjJEQjMxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8q
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTA5ODdDMjcx
NTdENjc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRX
cmFwcGFibGUuaAppbmRleCA1MDhhOTM3MDA0NjBmMDEyMTEwOWQ1ZmVlMmE2OGVhOThmOTJkZmZm
Li5iY2M5ODMzMWI0Y2NhYzMxYjNkYTlkOTMzYTBmY2U0NzExYWNhOTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaApAQCAtNTQsNiArNTQsMTMgQEAg
cHVibGljOgogICAgICAgICB3ZWFrQ2xlYXIobV93cmFwcGVyLCB3cmFwcGVyKTsKICAgICB9CiAK
KyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdn
cmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVj
dFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBtZW1vcnlBZ2dyZWdh
dG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV93cmFwcGVyKTsKKyAgICAgICAgcmV0dXJuIHNp
emVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogICAgIEpTQzo6V2VhazxKU0RPTVdyYXBw
ZXI+IG1fd3JhcHBlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdy
YXBwYWJsZS5oCmluZGV4IDg1MDk5NGFiYjcxZjJjZThhNDZkNWRmN2IzNTZhZThmNzgyY2ZhYTYu
LmFiOGUxZjBlMmUwOTM4Zjg4MDg4YWZhMjhiZDI3Njk3ZmNlZjg2ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCkBAIC01Miw2ICs1MiwxMyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNsZWFyV3JhcHBlcigpIHsgbV93cmFwcGVyID0gMDsgfQogCisg
ICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3Jl
Z2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RU
eXBlKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRv
ci0+cmVwb3J0UG9pbnRlcihtX3dyYXBwZXIpOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlz
KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4qIG1f
d3JhcHBlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA3NGNl
MDc5YTQ3MzMxZjVlNDI3YjUxZmVlOWNmMGJjMzk0OTk3NTM4Li5mYzk1OGI2YjY3M2RhYTVlNzVl
ZWVjYTJlZmNjNDUzNTlmYjg2MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0
LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTExNSw2ICsxMTYsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1N0eWxlKCk7
CiAjZW5kaWYKICAgICAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVn
YXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3Jl
Z2F0b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgICAg
ICBpZiAobV9pc011dGFibGUpCisgICAgICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQ
b2ludGVyKG1fbXV0YWJsZVByb3BlcnR5VmVjdG9yKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigq
dGhpcyk7CisgICAgfQogcHJpdmF0ZToKICAgICBTdHlsZVByb3BlcnR5U2V0KENTU1BhcnNlck1v
ZGUpOwogICAgIFN0eWxlUHJvcGVydHlTZXQoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMs
IHVuc2lnbmVkIGNvdW50LCBDU1NQYXJzZXJNb2RlLCBib29sIG1ha2VNdXRhYmxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IGJlOGM3OGU0ZDVmMTA1NjdkNGU1NTliYWJmYmZl
NjBmOTE2ZmZlM2MuLjU4NWIxZjgxYTM4MDMzMDY3MTU3ZDRlY2Q0ZWExZjE5MWE3ODUzMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtOTksNiArOTksMTUgQEAgcHVibGljOgog
ICAgIE5vZGUqIHRyYXZlcnNlTmV4dE5vZGUoKSBjb25zdDsKICAgICBOb2RlKiB0cmF2ZXJzZU5l
eHROb2RlKGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4pIGNvbnN0OwogCisgICAgdmlydHVhbCBzaXpl
X3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikg
Y29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBOb2RlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShtZW1vcnlBZ2dyZWdhdG9yKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9p
bnRlcihtX2ZpcnN0Q2hpbGQpOworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2lu
dGVyKG1fbGFzdENoaWxkKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgQ29udGFpbmVyTm9kZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5
cGUgPSBDcmVhdGVDb250YWluZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBkZTNmMGM1YWYx
NGUwNTA2ZTYxMTVjOWZkZDY5ODg2NWE5YjMwODNiLi5mOWI2NTM1MjQwMWYwODQwOWJjMTc5OWZh
ZmQ2ZmQyZDYzMWVkNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQyMSw2ICs0MjEsMTUgQEAg
cHVibGljOgogICAgIEludFNpemUgc2F2ZWRMYXllclNjcm9sbE9mZnNldCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJik7CiAKKyAgICB2
aXJ0dWFsIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlBZ2dyZWdhdG9yKiBtZW1vcnlB
Z2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+c2V0T2Jq
ZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIENvbnRhaW5lck5v
ZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeUFnZ3JlZ2F0b3IpOworICAgICAgICBtZW1vcnlB
Z2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV90YWdOYW1lKTsKKyAgICAgICAgbWVt
b3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2F0dHJpYnV0ZURhdGEpOworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0
aW9uVHlwZSB0eXBlKQogICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCmluZGV4IDhiMWIzMThmZTk5
ZGU0YjIxZThmZGY2MTZiZWEwZTU5YmQyZWZmMzUuLmJmMDU5OWJjOWQ4OTM1NGRhMzg4MTY4NWNl
YzAxODI5NmNmM2NjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0
cmlidXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEVsZW1lbnRBdHRyaWJ1dGVEYXRhX2gKIAog
I2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5
U2V0LmgiCiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CkBAIC05OSw2ICsxMDAsMTcgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8QXR0cj4gYXR0cklmRXhpc3RzKEVsZW1lbnQqLCBjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgUGFzc1JlZlB0cjxBdHRyPiBlbnN1cmVBdHRyKEVsZW1lbnQq
LCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAg
IG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpE
T00pOworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1faW5saW5lU3R5
bGVEZWNsKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2F0dHJp
YnV0ZVN0eWxlKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0TWVtYmVyU3RydWN0
dXJlKG1fY2xhc3NOYW1lcyk7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE1lbWJl
clN0cnVjdHVyZShtX2lkRm9yU3R5bGVSZXNvbHV0aW9uKTsKKyAgICAgICAgbWVtb3J5QWdncmVn
YXRvci0+cmVwb3J0TWVtYmVyU3RydWN0dXJlKG1fYXR0cmlidXRlcyk7CisgICAgICAgIHJldHVy
biBzaXplb2YoKnRoaXMpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRWxl
bWVudDsKICAgICBmcmllbmQgY2xhc3MgSFRNTENvbnN0cnVjdGlvblNpdGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTAzNjk1Y2E3OWE5
YTg2YjYzOWVjNGVmOTE5Y2FjNDU3MWFlZGI3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtMCwwICsxLDE0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKKyNkZWZpbmUgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
X2gKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVtb3J5QWdncmVnYXRvcjsKKworY2xhc3Mg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZW1vcnlJbnN0
cnVtZW50YXRpb24oKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQg
cmVwb3J0U2l6ZShjb25zdCBUKiBjb25zdCBvYmplY3QpCisgICAgeworICAgICAgICBpZiAoIW9i
amVjdCB8fCB2aXNpdGVkKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIE1l
bW9yeUFnZ3JlZ2F0b3IgYWdncmVnYXRvcih0aGlzKTsKKyAgICAgICAgcmVwb3J0U2l6ZUltcGw8
VCwgc2l6ZV90IChUOjoqKShNZW1vcnlBZ2dyZWdhdG9yKikgY29uc3Q+KG9iamVjdCwgJmFnZ3Jl
Z2F0b3IsIDApOworICAgIH0KKworICAgIGVudW0gT2JqZWN0VHlwZSB7CisgICAgICAgIE90aGVy
ID0gMCwKKyAgICAgICAgRE9NID0gMSwKKyAgICAgICAgQ1NTID0gMiwKKyAgICAgICAgTGFzdFR5
cGVFbnRyeSA9IDMKKyAgICB9OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlB
Z2dyZWdhdG9yOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZSwgVHlwZSBQdHI+CisgICAg
c3RydWN0IE1lbWJlckhlbHBlclN0cnVjdDsKKworICAgIC8vIEltcGxlbWVudGF0aW9uIGZvciBp
bnN0cnVtZW50ZWQgY2xhc3Nlcy4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBU
eXBlPgorICAgIHZvaWQgcmVwb3J0U2l6ZUltcGwoY29uc3QgVCosIE1lbW9yeUFnZ3JlZ2F0b3Iq
LCBNZW1iZXJIZWxwZXJTdHJ1Y3Q8VHlwZSwgJlQ6OnJlcG9ydE1lbW9yeVVzYWdlPiopOworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZT4KKyAgICB2b2lkIHJlcG9ydFN0
cnVjdHVyZUltcGwoY29uc3QgVCYsIE1lbWJlckhlbHBlclN0cnVjdDxUeXBlLCAmVDo6cmVwb3J0
TWVtb3J5VXNhZ2U+Kik7CisKKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBmb3IgX05PVF8gaW5zdHJ1
bWVudGVkIGNsYXNzZXMuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHlwZT4K
KyAgICB2b2lkIHJlcG9ydFNpemVJbXBsKGNvbnN0IFQqLCBNZW1vcnlBZ2dyZWdhdG9yKiwgLi4u
KQorICAgIHsKKyAgICAgICAgY291bnRPYmplY3RTaXplKE90aGVyLCBzaXplb2YoVCkpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+CisgICAgdm9pZCBy
ZXBvcnRTdHJ1Y3R1cmVJbXBsKGNvbnN0IFQmLCAuLi4pCisgICAgeworICAgICAgICAvLyBXZSBj
YW4ndCBjYWxsIHJlcG9ydE1lbW9yeVVzYWdlIGJlY2F1c2Ugb2JqZWN0J3MgY2xhc3MgaXNuJ3Qg
aW5zdHJ1bWVudGVkIHlldC4KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RT
aXplKE9iamVjdFR5cGUsIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNv
bnN0IHZvaWQqKSA9IDA7Cit9OworCitjbGFzcyBNZW1vcnlBZ2dyZWdhdG9yIHsKK3B1YmxpYzoK
KyAgICAgTWVtb3J5QWdncmVnYXRvcihNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3Ry
dW1lbnRhdGlvbikKKyAgICAgICAgIDogbV9tZW1vcnlJbnN0cnVtZW50YXRpb24obWVtb3J5SW5z
dHJ1bWVudGF0aW9uKQorICAgICAgICAgLCBtX29iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpPdGhlcikKKyAgICAgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgICB2
b2lkIHJlcG9ydFBvaW50ZXIoY29uc3QgUCogY29uc3QgbWVtYmVyUG9pbnRlcikKKyAgICB7Cisg
ICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRTaXplKG1lbWJlclBvaW50ZXIp
OworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgIHZvaWQgcmVwb3J0UG9p
bnRlcihjb25zdCBPd25QdHI8UD4mIG1lbWJlclBvaW50ZXIpCisgICAgeworICAgICAgICBtX21l
bW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0U2l6ZShtZW1iZXJQb2ludGVyLmdldCgpKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgICB2b2lkIHJlcG9ydFBvaW50ZXIo
Y29uc3QgUmVmUHRyPFA+JiBtZW1iZXJQb2ludGVyKQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24tPnJlcG9ydFNpemUobWVtYmVyUG9pbnRlci5nZXQoKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZXBvcnRNZW1iZXJTdHJ1Y3R1
cmUoY29uc3QgVCYgbWVtYmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24tPnJlcG9ydFN0cnVjdHVyZUltcGw8VCwgc2l6ZV90IChUOjoqKShNZW1vcnlBZ2dy
ZWdhdG9yKikgY29uc3Q+KG1lbWJlck9iamVjdCwgMCk7CisgICAgfQorCisgICAgdm9pZCBzZXRP
YmplY3RUeXBlKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKSB7
IG1fb2JqZWN0VHlwZSA9IG1fb2JqZWN0VHlwZSA9PSBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok90
aGVyID8gb2JqZWN0VHlwZSA6IG1fb2JqZWN0VHlwZTsgfQorICAgIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6T2JqZWN0VHlwZSBvYmplY3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RUeXBl
OyB9CisKKyBwcml2YXRlOgorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9tZW1vcnlJbnN0
cnVtZW50YXRpb247CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG1fb2Jq
ZWN0VHlwZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+Cit2b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0U2l6ZUltcGwoY29uc3QgVCogb2JqZWN0LCBN
ZW1vcnlBZ2dyZWdhdG9yKiBhZ2dyZWdhdG9yLCBNZW1vcnlJbnN0cnVtZW50YXRpb246Ok1lbWJl
ckhlbHBlclN0cnVjdDxUeXBlLCAmVDo6cmVwb3J0TWVtb3J5VXNhZ2U+KikKK3sKKyAgICBzaXpl
X3Qgc2l6ZSA9IG9iamVjdC0+cmVwb3J0TWVtb3J5VXNhZ2UoYWdncmVnYXRvcik7CisgICAgY291
bnRPYmplY3RTaXplKGFnZ3JlZ2F0b3ItPm9iamVjdFR5cGUoKSwgc2l6ZSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6cmVwb3J0U3RydWN0dXJlSW1wbChjb25zdCBUJiBvYmplY3QsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6TWVtYmVySGVscGVyU3RydWN0PFR5cGUsICZUOjpyZXBvcnRNZW1vcnlVc2FnZT4qKQor
eworICAgIE1lbW9yeUFnZ3JlZ2F0b3IgYWdncmVnYXRvcih0aGlzKTsKKyAgICBvYmplY3QucmVw
b3J0TWVtb3J5VXNhZ2UoJmFnZ3JlZ2F0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyAhZGVmaW5lZChNZW1vcnlJbnN0cnVtZW50YXRpb25faCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAppbmRleCBjOWJlNjU3NWU0MWUyOGU4NzdkOGU1MGU5OGZlMmQ4YTVhNzFmZWNmLi4wMDY4
NjQ5NmE4NzYwNTQzMTg2MGM2NTU5N2UwNmNhODM3ZGJkNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC0yOTEzLDYgKzI5MTMsMTcgQEAgdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigpCiAgICAgZGVs
ZXRlIHRoaXM7CiB9CiAKK3NpemVfdCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlBZ2dy
ZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAoreworICAgIG1lbW9yeUFnZ3JlZ2F0b3It
PnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIFRyZWVTaGFy
ZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeUFnZ3JlZ2F0
b3IpOworICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5QWdncmVn
YXRvcik7CisgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2RvY3VtZW50KTsK
KyAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fbmV4dCk7CisgICAgbWVtb3J5
QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX3ByZXZpb3VzKTsKKyAgICByZXR1cm4gc2l6ZW9m
KCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5ERUJVRwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggMjY1OTEyZDAxODdhNzBlODQxZjU0ZTcwNmM1MDcwNWRjMGY2NzQ4NS4u
ZmJmYjE4MWRmZjcxYTAwYWI3YWI2MGE3ODIyNTAxNWY4OGViNjM2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJLVVJM
SGFzaC5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRl
ICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUcmVlU2hhcmVkLmgiCkBAIC02NTYsNiAr
NjU3LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBjb25z
dDsKICAgICBzaXplX3QgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbigpIGNvbnN0Owog
CisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciop
IGNvbnN0OworCiBwcml2YXRlOgogICAgIGVudW0gTm9kZUZsYWdzIHsKICAgICAgICAgSXNUZXh0
RmxhZyA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRleCA2MzZiMmE1MTUwYzll
OTg3YzAyN2U3NTY5NzkyZDliYWMzNGE4OWU5Li5mYTE5NzE3NDUxNjQ1ZGRlMjQ5YzkxZTQ0YWU0
NTc5ZTkyM2QxZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTIxLDYgKzIx
LDggQEAKICNpZm5kZWYgUXVhbGlmaWVkTmFtZV9oCiAjZGVmaW5lIFF1YWxpZmllZE5hbWVfaAog
CisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisKICNpbmNsdWRlIDx3dGYvSGFz
aFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CkBAIC00OCw2ICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZTsKICAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJp
bmcgbV9sb2NhbE5hbWVVcHBlcjsKIAorICAgICAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50
YXRpb246OkRPTSk7CisgICAgICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJT
dHJ1Y3R1cmUobV9wcmVmaXgpOworICAgICAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0
TWVtYmVyU3RydWN0dXJlKG1fbG9jYWxOYW1lKTsKKyAgICAgICAgICAgIG1lbW9yeUFnZ3JlZ2F0
b3ItPnJlcG9ydE1lbWJlclN0cnVjdHVyZShtX25hbWVzcGFjZSk7CisgICAgICAgICAgICBtZW1v
cnlBZ2dyZWdhdG9yLT5yZXBvcnRNZW1iZXJTdHJ1Y3R1cmUobV9sb2NhbE5hbWVVcHBlcik7Cisg
ICAgICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICAgICAgfQogICAgIHByaXZhdGU6
CiAgICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3Bh
Y2VVUkkpCiAgICAgICAgICAgICA6IG1fcHJlZml4KHByZWZpeCkKQEAgLTkyLDYgKzEwMywxMiBA
QCBwdWJsaWM6CiAgICAgLy8gSW5pdCByb3V0aW5lIGZvciBnbG9iYWxzCiAgICAgc3RhdGljIHZv
aWQgaW5pdCgpOwogICAgIAorICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlBZ2dy
ZWdhdG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5QWdn
cmVnYXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAg
ICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydFBvaW50ZXIobV9pbXBsKTsKKyAgICAgICAgcmV0
dXJuIHNpemVvZigqdGhpcyk7CisgICAgfQogcHJpdmF0ZToKICAgICB2b2lkIGluaXQoY29uc3Qg
QXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAgICAgdm9pZCByZWYoKSBjb25zdCB7IG1f
aW1wbC0+cmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuY3BwCmluZGV4IDc1MmY3Mjg1N2RiOWMxMDY2ZDQxZTQxMTkxOTFhMGUxY2Vi
NjllYzguLjUwMDhhOGUzZjY0NjdlMmE0NDYxNjk2MGUxNzMyOGU2OTA5MTg1YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAt
NDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lbW9yeVVzYWdlU3VwcG9ydC5o
IgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC03Nyw2ICs3OCwxMSBA
QCBzdGF0aWMgY29uc3QgY2hhciBjYWNoZWRYc2xTdHlsZVNoZWV0c1tdID0gIkNhY2hlZFhzbFN0
eWxlU2hlZXRzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGNhY2hlZEZvbnRzW10gPSAiQ2FjaGVkRm9u
dHMiOwogc3RhdGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZVVzZWRbXSA9ICJSZW5kZXJUcmVlVXNl
ZCI7CiBzdGF0aWMgY29uc3QgY2hhciByZW5kZXJUcmVlQWxsb2NhdGVkW10gPSAiUmVuZGVyVHJl
ZUFsbG9jYXRlZCI7CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVtdID0gIkRPTSI7CitzdGF0aWMg
Y29uc3QgY2hhciBkb21UcmVlT3RoZXJbXSA9ICJET01UcmVlT3RoZXIiOworc3RhdGljIGNvbnN0
IGNoYXIgZG9tVHJlZURPTVtdID0gIkRPTVRyZWVET00iOworc3RhdGljIGNvbnN0IGNoYXIgZG9t
VHJlZUNTU1tdID0gIkRPTVRyZWVDU1MiOwogfQogCiBuYW1lc3BhY2UgewpAQCAtMTc3LDEwICsx
ODMsNiBAQCBwcml2YXRlOgogICAgICAgICBjb2xsZWN0TGlzdGVuZXJzSW5mbyhub2RlKTsKICAg
ICB9CiAKLSAgICB2b2lkIGNvbGxlY3RDaGFyYWN0ZXJEYXRhKE5vZGUqKQotICAgIHsKLSAgICB9
Ci0KICAgICB2b2lkIGNvbGxlY3ROb2RlTmFtZUluZm8oTm9kZSogbm9kZSkKICAgICB7CiAgICAg
ICAgIFN0cmluZyBuYW1lID0gbm9kZU5hbWUobm9kZSk7CkBAIC0zNzIsMTMgKzM3NCw5MyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVuZGVyVHJlZUluZm8oUGFn
ZSogcGFnZSkKICAgICByZXR1cm4gcmVuZGVyVHJlZUFsbG9jYXRlZC5yZWxlYXNlKCk7CiB9CiAK
LXN0YXRpYyB2b2lkIGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4qIGFycmF5LCBjb25zdCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYyYg
c3RhdGlzdGljLCBjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIHZvaWQgYWRkTWVtb3J5QmxvY2tG
b3IoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXksIHNpemVf
dCBzaXplLCBjb25zdCBjaGFyKiBuYW1lKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gcmVzdWx0ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUobmFt
ZSk7Ci0gICAgcmVzdWx0LT5zZXRTaXplKHN0YXRpc3RpYy5zaXplKTsKKyAgICByZXN1bHQtPnNl
dFNpemUoc2l6ZSk7CiAgICAgYXJyYXktPmFkZEl0ZW0ocmVzdWx0KTsKIH0KIAorbmFtZXNwYWNl
IHsKKworY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCA6IHB1YmxpYyBNZW1vcnlJbnN0
cnVtZW50YXRpb24geworcHVibGljOgorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwoKQor
ICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBMYXN0VHlwZUVudHJ5OyArK2kpCisg
ICAgICAgICAgICBtX3RvdGFsU2l6ZXNbaV0gPSAwOworICAgIH0KKworICAgIFBhc3NSZWZQdHI8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBTdGF0aXN0aWNzKCkKKyAgICB7CisgICAgICAgIHNp
emVfdCB0b3RhbFNpemUgPSAwOworICAgICAgICBmb3IgKGludCBpID0gT3RoZXI7IGkgPCBMYXN0
VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAgICB0b3RhbFNpemUgKz0gbV90b3RhbFNpemVzW2ld
OworCisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+ID4gZG9tQ2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+OjpjcmVhdGUoKTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0
KCksIG1fdG90YWxTaXplc1tPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90aGVyKTsK
KyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXpl
c1tET01dLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVET00pOworICAgICAgICBhZGRNZW1vcnlC
bG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW0NTU10sIE1lbW9yeUJsb2Nr
TmFtZTo6ZG9tVHJlZUNTUyk7CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiBkb20gPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9j
a05hbWU6OmRvbSk7CisgICAgICAgIGRvbS0+c2V0U2l6ZSh0b3RhbFNpemUpOworICAgICAgICBk
b20tPnNldENoaWxkcmVuKGRvbUNoaWxkcmVuLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiBk
b20ucmVsZWFzZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRP
YmplY3RTaXplKE9iamVjdFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCisgICAgeworICAg
ICAgICBBU1NFUlQob2JqZWN0VHlwZSA+PSAwICYmIG9iamVjdFR5cGUgPCBMYXN0VHlwZUVudHJ5
KTsKKyAgICAgICAgbV90b3RhbFNpemVzW29iamVjdFR5cGVdICs9IHNpemU7CisgICAgfQorCisg
ICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCogb2JqZWN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICFtX3Zpc2l0ZWRPYmplY3RzLmFkZChvYmplY3QpLmlzTmV3RW50cnk7CisgICAg
fQorICAgIHNpemVfdCBtX3RvdGFsU2l6ZXNbTGFzdFR5cGVFbnRyeV07CisgICAgdHlwZWRlZiBI
YXNoU2V0PGNvbnN0IHZvaWQqPiBWaXNpdGVkT2JqZWN0czsKKyAgICBWaXNpdGVkT2JqZWN0cyBt
X3Zpc2l0ZWRPYmplY3RzOworfTsKKworY2xhc3MgRE9NVHJlZXNJdGVyYXRvciA6IHB1YmxpYyBE
T01XcmFwcGVyVmlzaXRvciB7CitwdWJsaWM6CisgICAgRE9NVHJlZXNJdGVyYXRvcihQYWdlKiBw
YWdlKSA6IG1fcGFnZShwYWdlKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdE5vZGUoTm9k
ZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRv
Y3VtZW50KCktPmZyYW1lKCkgJiYgbV9wYWdlICE9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkt
PnBhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2RvbU1lbW9yeVVzYWdl
LnJlcG9ydFNpemUobm9kZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRl
cm5hbFN0cmluZyhTdHJpbmdJbXBsKikgeyB9CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1l
bW9yeUJsb2NrPiBkdW1wU3RhdGlzdGljcygpIHsgcmV0dXJuIG1fZG9tTWVtb3J5VXNhZ2UuZHVt
cFN0YXRpc3RpY3MoKTsgfQorCitwcml2YXRlOgorICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBNZW1v
cnlJbnN0cnVtZW50YXRpb25JbXBsIG1fZG9tTWVtb3J5VXNhZ2U7Cit9OworCit9CisKK3N0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVlSW5mbyhQYWdlKiBwYWdl
KQoreworICAgIERPTVRyZWVzSXRlcmF0b3IgZG9tVHJlZXNJdGVyYXRvcihwYWdlKTsKKyAgICBT
Y3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJzKCZkb21UcmVlc0l0ZXJhdG9yKTsKKwor
ICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBtYWluIGZy
YW1lIGFyZSBhY2NvdW50ZWQuCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAg
ICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAg
IGRvbVRyZWVzSXRlcmF0b3IudmlzaXROb2RlKGRvYyk7CisgICAgfQorCisgICAgcmV0dXJuIGRv
bVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoKTsKK30KKwogc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygpCiB7CiAgICAgTWVtb3J5Q2Fj
aGU6OlN0YXRpc3RpY3Mgc3RhdHMgPSBtZW1vcnlDYWNoZSgpLT5nZXRTdGF0aXN0aWNzKCk7CkBA
IC0zOTEsMTIgKzQ3MywxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gbWVtb3J5Q2FjaGVJbmZvKCkKICAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRTaXplKHRvdGFs
U2l6ZSk7CiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJs
b2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2Nr
Pjo6Y3JlYXRlKCk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRz
LmltYWdlcywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRJbWFnZXMpOwotICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5jc3NTdHlsZVNoZWV0cywgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRy
ZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkU2NyaXB0cyk7
Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhzbFN0eWxlU2hl
ZXRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRzKTsKLSAgICBhZGRNZW1v
cnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMsIE1lbW9yeUJsb2NrTmFtZTo6
Y2FjaGVkRm9udHMpOwotICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldENoaWxkcmVuKGNoaWxkcmVu
KTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuaW1hZ2VzLnNp
emUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkSW1hZ2VzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0Zv
cihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuY3NzU3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tO
YW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRy
ZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRTY3Jp
cHRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMueHNsU3R5
bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRYc2xTdHlsZVNoZWV0cyk7Cisg
ICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmZvbnRzLnNpemUsIE1l
bW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOworICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldENo
aWxkcmVuKGNoaWxkcmVuLmdldCgpKTsKICAgICByZXR1cm4gbWVtb3J5Q2FjaGVTdGF0cy5yZWxl
YXNlKCk7CiB9CiAKQEAgLTQxMyw2ICs0OTUsNyBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50
OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwog
ICAgIGNoaWxkcmVuLT5hZGRJdGVtKGluc3BlY3RvckRhdGEoKSk7CiAgICAgY2hpbGRyZW4tPmFk
ZEl0ZW0obWVtb3J5Q2FjaGVJbmZvKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKHJlbmRlclRy
ZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CisgICAgY2hp
bGRyZW4tPmFkZEl0ZW0oZG9tVHJlZUluZm8obV9wYWdlKSk7IC8vIFRPRE86IGNvbGxlY3QgZm9y
IGFsbCBwYWdlcz8KICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRleCAyZWJkYjFkMWM1OTc4ZDFm
MGM3ZWYzMmZkY2I0ZGMzNjBmZmM1MmY0Li43YTEyY2VkNzg0Y2RkOTE3MDgyNDE0Mzg2YjkzZTI4
YTZjOWVlMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCkBAIC0xMTEsNiAr
MTExLDEzIEBAIHB1YmxpYzoKICAgICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uOwog
I2VuZGlmCiAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciog
bWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3It
PnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBtZW1v
cnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fcGFyZW50KTsKKyAgICAgICAgcmV0dXJuIHNp
emVvZigqdGhpcyk7CisgICAgfQorCiBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBmcmll
bmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50Tm9kZVR5cGU+Kik7
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDJlYTBjZDVhZTVkMzZlZWFkNGE0NjQ5MjMzMGIxY2JlMzQ2N2Nh
ZTAuLjZlZThiNDAyYmY2Nzc4MTI3OWI2ODYwNGYyMmQ1Zjk0MDI2OThhMzUgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjEgIElseWEgVGlraG9ub3Zza3kgIDxsb2lz
bG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBhcnRpYWxseSBpbnN0
cnVtZW50IERPTSBUcmVlIG5hdGl2ZSBtZW1vcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU2OAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBN
ZW1vcnlJbnN0cnVtZW50YXRpb24gY2xhc3MgdGhhdCBjb3VudHMgYWxsIHZpc2l0ZWQKKyAgICAg
ICAgb2JqZWN0cyBhbmQgY2FsbHMgcmVwb3J0TWVtb3J5VXNhZ2UgaWYgdGhlIG9iamVjdCdzIGNs
YXNzIGhhcyBzdWNoIG1ldGhvZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGluc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWw6CisK
IDIwMTItMDYtMjAgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBwZXJmb3JtYW5jZSB0ZXN0IGZvciBwYXRocyBpbiBTVkcKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbAppbmRleCAy
YWUwNWJhNTdmNzViNGVmM2E4ODY3Yjg3ZTMzZDQ1MGExMDRkMjU5Li4zODY1M2E3NDIyNDk3MmU0
MDliZWNjMWUzZmIwNDQ3ZTc5YWE1MmMwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9pbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sCkBAIC0xLDUgKzEsMTcgQEAK
IDxodG1sPgogPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgc3BhbiB7Cisg
ICAgICBjb2xvcjpyZWQ7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDIwcHg7
CisgICAgfQorICAgIGRpdiB7CisgICAgICBjb2xvcjpibHVlOworICAgICAgd2lkdGg6IDUwcHg7
CisgICAgICBoZWlnaHQ6IDEwcHg7CisgICAgfQorICA8L3N0eWxlPgogICA8c2NyaXB0IHNyYz0i
Li4vLi4vTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgogICA8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgpAQCAtMzksOCArNTEsMTIgQEAgZnVuY3Rpb24gY3JlYXRlRE9NVHJlZShlbGVt
ZW50c0NvdW50KQogewogICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3RUcmVlUm9vdCIpOwogCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyAr
K2kpCi0gICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzQ291bnQ7ICsraSkgeworICAg
ICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAg
c3Bhbi5pZCA9ICJzcGFuXyIgKyBpOworICAgICAgICBzcGFuLnN0eWxlLndpZHRoID0gIjEwcHgi
OworICAgICAgICByb290LmFwcGVuZENoaWxkKHNwYW4pOworICAgIH0KIAogICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZWxlbWVudHNDb3VudDsgKytpKQogICAgICAgICByb290LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148847</attachid>
            <date>2012-06-21 11:30:10 -0700</date>
            <delta_ts>2012-06-22 05:39:46 -0700</delta_ts>
            <desc>heavy template code was removed because MSVS2005 can&apos;t compile it</desc>
            <filename>bug-89568-20120621223008.patch</filename>
            <type>text/plain</type>
            <size>31375</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI1NWI4M2YzYzc2MmVk
NjBiNDc3NjU5NmZlYjU0OGViNDI3ODlkMC4uODdkYTM5ZDcyMjIxYWEzMDhlZjVhMWY2OTk5ODY4
NmRkYTI3OGI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTA2LTIxICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRz
IGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdl
IGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFi
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
Y3JpcHRXcmFwcGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6cmVw
b3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNl
dDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgIChDb250YWluZXJOb2RlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoRWxlbWVudCk6
CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoRWxl
bWVudEF0dHJpYnV0ZURhdGEpOgorICAgICAgICAqIGRvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246On5NZW1vcnlJ
bnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpyZXBvcnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpyZXBvcnRQb2ludGVyKToKKyAgICAgICAgKE1lbW9yeUFnZ3JlZ2F0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5QWdncmVnYXRvcjo6TWVtb3J5QWdncmVnYXRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlBZ2dyZWdhdG9yOjpyZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUFnZ3JlZ2F0b3I6OnJlcG9ydFBvaW50ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5QWdncmVnYXRvcjo6cmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUFnZ3JlZ2F0b3I6OnJlcG9ydE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlBZ2dyZWdhdG9yOjpzZXRPYmplY3RUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeUFnZ3JlZ2F0b3I6Om9iamVjdFR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0SW5zdHJ1bWVudGVk
T2JqZWN0KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20v
Tm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpyZXBvcnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cDoKKyAgICAgICAgKE1lbW9yeUJsb2NrTmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZE1lbW9yeUJsb2NrRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbVRy
ZWVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Om1lbW9yeUNhY2hlSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vVHJlZVNoYXJlZC5oOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNoYXJlZDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoVHJlZVNoYXJlZCk6CisK
IDIwMTItMDYtMjAgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBTcGVlY2ggSmF2YVNjcmlwdCBBUEk6IFNwZWVjaFJlY29nbml0aW9uIHNob3VsZCBob29rIHVw
IHdpdGggQWN0aXZlRE9NT2JqZWN0IG1vcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDk4NWRiOWE3MDdmODZjZmFjNzk4MzE3YzE1ZGZhZDEyOGZiYjM1ZGEuLjg3MWY1OWU4NWY1
N2UxOWQzMGUzMDcxMjQ3ZmMxNGQwNjNjOThmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMTkwNiw2ICsxOTA2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUNoYW5uZWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUNoYW5uZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggYjlkZGY5MzU2ZTJiMmJlOGQyZmE4NDA4MzM5NjQ5YjFhNTQ5MGY0Yy4uZDYy
YmMwOWIwYjFhODE0ZmY3ZmZlODA5N2YwZWFhMDM0ZGMzZjczYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0x
NzQ0LDYgKzE3NDQsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vRXhjZXB0aW9uQ29kZS5oIFwK
ICAgICBkb20vRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggXAogICAgIGRvbS9LZXlib2Fy
ZEV2ZW50LmggXAorICAgIGRvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgZG9tL01l
c3NhZ2VDaGFubmVsLmggXAogICAgIGRvbS9NZXNzYWdlRXZlbnQuaCBcCiAgICAgZG9tL01lc3Nh
Z2VQb3J0Q2hhbm5lbC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiNGYxNDFhMWNiMjY1NjdiZmU4
NDkxMWU4NGUyY2NjODNiYWJlZGVhLi4xZDJjYmU0NjZjZDc2YjQ2MjNjZDFjYmM2NWY2MTliMjE3
ZGI2Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01MzM3LDYgKzUzMzcsNyBAQAogICAgICAgICAg
ICAgJ2RvbS9JY29uVVJMLmNwcCcsCiAgICAgICAgICAgICAnZG9tL0ljb25VUkwuaCcsCiAgICAg
ICAgICAgICAnZG9tL0tleWJvYXJkRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdkb20vTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAn
LAogICAgICAgICAgICAgJ2RvbS9NZXNzYWdlQ2hhbm5lbC5oJywKICAgICAgICAgICAgICdkb20v
TWVzc2FnZUV2ZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDA1NmY4OTRiNmUyMzM5MDJiZjQzMjE1MDMxODJlNjczNTJmNGVmMWEu
LmEyODViZDhhZTk1NzhlMjRiNjgwZTU1N2UzOWZmODJmNDUxZDk5MDAgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MTE3NSw2ICs1MTE3NSwx
MCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxNZXNzYWdlQ2hhbm5lbC5jcHAiCiAJCQkJPgogCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ5MmZjMTIzMzVhNGE3ZmM1Y2IwODY1Yzc4ZmE2YTVl
MDU5YTdmY2IuLjAzYTQyNjg2Mzg5NWE5YTg2YjUyZTZiNzg1Yjk3NWI2Y2Y5YTE3MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE0MjgsNiArMTQyOCw3IEBACiAJCTRGMTUzNERFMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5n
QmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGMTUzNEREMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjE1MzRFMDExQjUzMzAy
MDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0
aW5nQmVoYXZpb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRGMkQyMDU0MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYyRDIwNTIx
MkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEYzMkJCMUIxNEZBODVFODAwRjZDMUEzIC8q
IE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEYzMkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1l
bnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTRGMkQyMDU1MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1MzEyRUFFN0Iz
MDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovOyB9OwogCQk0RjMyODlCNTExQTQyQUFC
MDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0
b3JWYWx1ZXMuY3BwICovOyB9OwogCQk0RjMyODlCNjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVj
dG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg0OTUsNiArODQ5Niw3
IEBACiAJCTRGMTUzNEREMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5n
QmVoYXZpb3JUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5n
QmVoYXZpb3JUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjJEMjA1MjEy
RUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEYzMkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8q
IEluc3BlY3RvckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYzMjg5
QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFs
dWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclZhbHVlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEzOTQsNiArMjEzOTYsNyBAQAogCQkJ
CUJDOUE2MTQ0MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2RvbV9leGNlcHRpb25zLnBsICovLAog
CQkJCUJDOUE2MTQ1MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2V2ZW50X2ZhY3RvcnkucGwgKi8s
CiAJCQkJQkM5QTYxNDYxNDY4NTlEOTAwNjA1N0ZEIC8qIG1ha2VfbmFtZXMucGwgKi8sCisJCQkJ
NEYzMkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovLAog
CQkJCUUxQURFQ0NEMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5jcHAgKi8sCiAJ
CQkJRTFBREVDQ0MwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggKi8sCiAJCQkJ
RTFBREVDRDAwRTc2QURBQjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmlkbCAqLywKQEAgLTI1
MTE5LDYgKzI1MTIyLDcgQEAKIAkJCQlDRTdCMkRCMzE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTdCMkRCNTE1ODZB
QkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MDk4N0MyNzE1N0Q2NzZEMDBCREE4MzUgLyogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEYzMkJCMUIxNEZBODVFODAwRjZDMUEzIC8qIE1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCmluZGV4IDUwOGE5MzcwMDQ2MGYwMTIxMTA5ZDVmZWUy
YTY4ZWE5OGY5MmRmZmYuLjAzMmY2ZDRjNzJkNDVhZWQ0ODI1ZjRjNWEwOGIwYTQxYTc4NWM2ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCkBAIC01
NCw2ICs1NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHdlYWtDbGVhcihtX3dyYXBwZXIsIHdyYXBw
ZXIpOwogICAgIH0KIAorICAgIHNpemVfdCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlBZ2dyZWdh
dG9yKiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5QWdncmVn
YXRvci0+c2V0T2JqZWN0VHlwZShNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAg
IG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE9iamVjdChtX3dyYXBwZXIpOworICAgICAgICByZXR1
cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgSlNDOjpXZWFrPEpTRE9N
V3JhcHBlcj4gbV93cmFwcGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0V3JhcHBhYmxlLmgKaW5kZXggODUwOTk0YWJiNzFmMmNlOGE0NmQ1ZGY3YjM1NmFlOGY3ODJj
ZmFhNi4uNDllZWMxZjlmOTY0NTFiMDgzYmJmNTA0MzRiNjMxYTk5ZTNkMzBlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKQEAgLTUyLDYgKzUyLDEz
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJXcmFwcGVyKCkgeyBtX3dyYXBwZXIgPSAwOyB9
CiAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5
QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9i
amVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgICAgICBtZW1vcnlBZ2dy
ZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fd3JhcHBlciwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpE
T00pOworICAgICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6CiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4qIG1fd3JhcHBlcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA3NGNlMDc5YTQ3MzMxZjVlNDI3YjUxZmVlOWNm
MGJjMzk0OTk3NTM4Li4yMDUxNzVjZTQxMjQwZDU1ZGQ1NjQyZDU5ZjVhYjI1NjI5NTlhMmRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAj
aW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTExNSw2ICsxMTYsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgc2hvd1N0eWxlKCk7CiAjZW5kaWYKICAgICAKKyAgICBzaXpl
X3QgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikg
Y29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgICAgICBpZiAobV9pc011dGFibGUpCisgICAg
ICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRQb2ludGVyKG1fbXV0YWJsZVByb3BlcnR5
VmVjdG9yLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgICAgIHJldHVybiBzaXpl
b2YoKnRoaXMpOworICAgIH0KIHByaXZhdGU6CiAgICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJz
ZXJNb2RlKTsKICAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0
aWVzLCB1bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2VyTW9kZSwgYm9vbCBtYWtlTXV0YWJsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCBiZThjNzhlNGQ1ZjEwNTY3ZDRlNTU5YmFi
ZmJmZTYwZjkxNmZmZTNjLi42ZDgyZGJlNGNlYjE1NjdjNmVjNDMwMTA2ZTJjYjJmMzQ4MzU2YzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTk5LDYgKzk5LDE1IEBAIHB1Ymxp
YzoKICAgICBOb2RlKiB0cmF2ZXJzZU5leHROb2RlKCkgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVy
c2VOZXh0Tm9kZShjb25zdCBOb2RlKiBzdGF5V2l0aGluKSBjb25zdDsKIAorICAgIHZpcnR1YWwg
c2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0
b3IpIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RUeXBl
KE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgTm9kZTo6cmVwb3J0TWVtb3J5
VXNhZ2UobWVtb3J5QWdncmVnYXRvcik7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9y
dEluc3RydW1lbnRlZFBvaW50ZXIobV9maXJzdENoaWxkKTsKKyAgICAgICAgbWVtb3J5QWdncmVn
YXRvci0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2xhc3RDaGlsZCk7CisgICAgICAgIHJl
dHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIENvbnRhaW5lck5v
ZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggZGUzZjBjNWFmMTRlMDUwNmU2MTE1YzlmZGQ2OTg4NjVhOWIzMDgz
Yi4uNDMzZjYyOTRjOGM1NjAwNTVkZGM4YTNkODU2ZjMwYTc0ZDA1ZDhmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC00MjEsNiArNDIxLDE1IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNhdmVkTGF5
ZXJTY3JvbGxPZmZzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFNhdmVkTGF5ZXJTY3JvbGxPZmZz
ZXQoY29uc3QgSW50U2l6ZSYpOwogCisgICAgdmlydHVhbCBzaXplX3QgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAg
ICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpET00pOworICAgICAgICBDb250YWluZXJOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlB
Z2dyZWdhdG9yKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0SW5zdHJ1bWVudGVk
T2JqZWN0KG1fdGFnTmFtZSk7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydEluc3Ry
dW1lbnRlZFBvaW50ZXIobV9hdHRyaWJ1dGVEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHNp
emVvZigqdGhpcyk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUg
dHlwZSkKICAgICAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCB0eXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCA4YjFiMzE4ZmU5OWRlNGIyMWU4
ZmRmNjE2YmVhMGU1OWJkMmVmZjM1Li41OTM3ZWNjZDU3YWEzZjAwOTdhNjI1YTIzNzFhMWEwZjAz
NzA5ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaApAQCAt
MjcsNiArMjcsNyBAQAogI2RlZmluZSBFbGVtZW50QXR0cmlidXRlRGF0YV9oCiAKICNpbmNsdWRl
ICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgog
I2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtOTksNiArMTAwLDE3IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPEF0dHI+IGF0dHJJZkV4aXN0cyhFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIFBhc3NSZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihFbGVtZW50KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogCisgICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFn
Z3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlB
Z2dyZWdhdG9yLT5zZXRPYmplY3RUeXBlKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAg
ICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2lubGlu
ZVN0eWxlRGVjbC5nZXQoKSk7CisgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydEluc3Ry
dW1lbnRlZFBvaW50ZXIobV9hdHRyaWJ1dGVTdHlsZS5nZXQoKSk7CisgICAgICAgIG1lbW9yeUFn
Z3JlZ2F0b3ItPnJlcG9ydE9iamVjdChtX2NsYXNzTmFtZXMpOworICAgICAgICBtZW1vcnlBZ2dy
ZWdhdG9yLT5yZXBvcnRPYmplY3QobV9pZEZvclN0eWxlUmVzb2x1dGlvbik7CisgICAgICAgIG1l
bW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE9iamVjdChtX2F0dHJpYnV0ZXMpOworICAgICAgICByZXR1
cm4gc2l6ZW9mKCp0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEVs
ZW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MjFhNTNkODdh
MTU5OGEwYjQ0ZTU5NDE3YzJiZTAyZDg5OWIwYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTAsMCArMSwxMjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIE1lbW9yeUluc3RydW1lbnRhdGlvbl9oCisjZGVmaW5lIE1lbW9yeUluc3RydW1lbnRhdGlv
bl9oCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lbW9yeUFnZ3JlZ2F0b3I7CisKK2NsYXNz
IE1lbW9yeUluc3RydW1lbnRhdGlvbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVtb3J5SW5z
dHJ1bWVudGF0aW9uKCkgeyB9CisKKyAgICBlbnVtIE9iamVjdFR5cGUgeworICAgICAgICBPdGhl
ciA9IDAsCisgICAgICAgIERPTSA9IDEsCisgICAgICAgIENTUyA9IDIsCisgICAgICAgIExhc3RU
eXBlRW50cnkgPSAzCisgICAgfTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIHJl
cG9ydEluc3RydW1lbnRlZE9iamVjdChjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHZvaWQgcmVwb3J0T2JqZWN0KGNvbnN0IFQmKSB7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gdm9pZCByZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKGNvbnN0IFQqKTsKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCByZXBvcnRQb2ludGVyKGNvbnN0IFQqIG9iamVjdCwgT2Jq
ZWN0VHlwZSBvYmplY3RUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKCFvYmplY3QgfHwgdmlzaXRl
ZChvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb3VudE9iamVjdFNpemUo
b2JqZWN0VHlwZSwgc2l6ZW9mKFQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIE1lbW9yeUFnZ3JlZ2F0b3I7CisKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXpl
KE9iamVjdFR5cGUsIHNpemVfdCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0
IHZvaWQqKSA9IDA7Cit9OworCitjbGFzcyBNZW1vcnlBZ2dyZWdhdG9yIHsKK3B1YmxpYzoKKyAg
ICAgTWVtb3J5QWdncmVnYXRvcihNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1l
bnRhdGlvbikKKyAgICAgICAgIDogbV9tZW1vcnlJbnN0cnVtZW50YXRpb24obWVtb3J5SW5zdHJ1
bWVudGF0aW9uKQorICAgICAgICAgLCBtX29iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpPdGhlcikKKyAgICAgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUD4KKyAgICB2b2lk
IHJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIoY29uc3QgUCogbWVtYmVyUG9pbnRlcikKKyAgICB7
CisgICAgICAgIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2lu
dGVyKG1lbWJlclBvaW50ZXIpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgor
ICAgIHZvaWQgcmVwb3J0UG9pbnRlcihjb25zdCBQKiBwb2ludGVyLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSkKKyAgICB7CisgICAgICAgIG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5yZXBvcnRQb2ludGVyKHBvaW50ZXIsIG9iamVjdFR5cGUpOworICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0SW5zdHJ1bWVudGVk
T2JqZWN0KGNvbnN0IFQmIG1lbWJlck9iamVjdCkKKyAgICB7CisgICAgICAgIG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5yZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QobWVtYmVyT2JqZWN0KTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlcG9ydE9iamVjdChj
b25zdCBUJiBvYmplY3QpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydE9iamVjdChv
YmplY3QpOyB9CisKKyAgICB2b2lkIHNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpPYmplY3RUeXBlIG9iamVjdFR5cGUpIHsgbV9vYmplY3RUeXBlID0gbV9vYmplY3RUeXBlID09
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIgPyBvYmplY3RUeXBlIDogbV9vYmplY3RUeXBl
OyB9CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX29iamVjdFR5cGU7IH0KKworIHByaXZhdGU6CisgICAgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uKiBtX21lbW9yeUluc3RydW1lbnRhdGlvbjsKKyAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb246Ok9iamVjdFR5cGUgbV9vYmplY3RUeXBlOworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0SW5zdHJ1bWVudGVkUG9p
bnRlcihjb25zdCBUKiBjb25zdCBvYmplY3QpCit7CisgICAgaWYgKCFvYmplY3QgfHwgdmlzaXRl
ZChvYmplY3QpKQorICAgICAgICByZXR1cm47CisgICAgTWVtb3J5QWdncmVnYXRvciBhZ2dyZWdh
dG9yKHRoaXMpOworICAgIHNpemVfdCBzaXplID0gb2JqZWN0LT5yZXBvcnRNZW1vcnlVc2FnZSgm
YWdncmVnYXRvcik7CisgICAgY291bnRPYmplY3RTaXplKGFnZ3JlZ2F0b3Iub2JqZWN0VHlwZSgp
LCBzaXplKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpyZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgb2JqZWN0KQoreworICAg
IE1lbW9yeUFnZ3JlZ2F0b3IgYWdncmVnYXRvcih0aGlzKTsKKyAgICBvYmplY3QucmVwb3J0TWVt
b3J5VXNhZ2UoJmFnZ3JlZ2F0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyAhZGVmaW5lZChNZW1vcnlJbnN0cnVtZW50YXRpb25faCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCBjOWJlNjU3NWU0MWUyOGU4NzdkOGU1MGU5OGZlMmQ4YTVhNzFmZWNmLi5mNGNjNTdlNDkz
NDZiYTFiMDg3YTkzMGYyYzc0MzQ0NzNhMmRiZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yOTEz
LDYgKzI5MTMsMTcgQEAgdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigpCiAgICAgZGVsZXRlIHRo
aXM7CiB9CiAKK3NpemVfdCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlBZ2dyZWdhdG9y
KiBtZW1vcnlBZ2dyZWdhdG9yKSBjb25zdAoreworICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9i
amVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIFRyZWVTaGFyZWQ8Tm9k
ZSwgQ29udGFpbmVyTm9kZT46OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeUFnZ3JlZ2F0b3IpOwor
ICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5QWdncmVnYXRvcik7
CisgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0UG9pbnRlcihtX2RvY3VtZW50LCBNZW1vcnlJ
bnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0SW5zdHJ1
bWVudGVkUG9pbnRlcihtX25leHQpOworICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydEluc3Ry
dW1lbnRlZFBvaW50ZXIobV9wcmV2aW91cyk7CisgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDI2NTkxMmQwMTg3YTcwZTg0MWY1NGU3MDZjNTA3MDVkYzBmNjc0ODUuLmZiZmIxODFkZmY3
MWEwMGFiN2FiNjBhNzgyMjUwMTVmODhlYjYzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNp
bmNsdWRlICJMYXlvdXRUeXBlcy5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSAiVHJlZVNoYXJlZC5oIgpAQCAtNjU2LDYgKzY1Nyw4IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKCkgY29uc3Q7CiAgICAgc2l6
ZV90IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oKSBjb25zdDsKIAorICAgIHZpcnR1
YWwgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqKSBjb25zdDsKKwog
cHJpdmF0ZToKICAgICBlbnVtIE5vZGVGbGFncyB7CiAgICAgICAgIElzVGV4dEZsYWcgPSAxLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKaW5kZXggNjM2YjJhNTE1MGM5ZTk4N2MwMjdlNzU2
OTc5MmQ5YmFjMzRhODllOS4uNTZkMThiMzA2MjVlOTZkYjJjZTRhZDcxNWRkOTJhZmIxYTZmZDNh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCkBAIC0yMSw2ICsyMSw4IEBACiAjaWZu
ZGVmIFF1YWxpZmllZE5hbWVfaAogI2RlZmluZSBRdWFsaWZpZWROYW1lX2gKIAorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorCiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgpAQCAtNDgsNiArNTAsMTUgQEAgcHVibGljOgogICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcgbV9uYW1lc3BhY2U7CiAgICAgICAgIG11dGFibGUgQXRvbWljU3RyaW5nIG1fbG9jYWxO
YW1lVXBwZXI7CiAKKyAgICAgICAgc2l6ZV90IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3Jl
Z2F0b3IqIG1lbW9yeUFnZ3JlZ2F0b3IpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIG1l
bW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00p
OworICAgICAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0T2JqZWN0KG1fcHJlZml4KTsK
KyAgICAgICAgICAgIG1lbW9yeUFnZ3JlZ2F0b3ItPnJlcG9ydE9iamVjdChtX2xvY2FsTmFtZSk7
CisgICAgICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRPYmplY3QobV9uYW1lc3BhY2Up
OworICAgICAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0T2JqZWN0KG1fbG9jYWxOYW1l
VXBwZXIpOworICAgICAgICAgICAgcmV0dXJuIHNpemVvZigqdGhpcyk7CisgICAgICAgIH0KICAg
ICBwcml2YXRlOgogICAgICAgICBRdWFsaWZpZWROYW1lSW1wbChjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgOiBtX3ByZWZpeChwcmVmaXgpCkBAIC05Miw2
ICsxMDMsMTIgQEAgcHVibGljOgogICAgIC8vIEluaXQgcm91dGluZSBmb3IgZ2xvYmFscwogICAg
IHN0YXRpYyB2b2lkIGluaXQoKTsKICAgICAKKyAgICBzaXplX3QgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5QWdncmVnYXRvciogbWVtb3J5QWdncmVnYXRvcikgY29uc3QKKyAgICB7CisgICAgICAg
IG1lbW9yeUFnZ3JlZ2F0b3ItPnNldE9iamVjdFR5cGUoTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpE
T00pOworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVy
KG1faW1wbCk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRoaXMpOworICAgIH0KIHByaXZhdGU6
CiAgICAgdm9pZCBpbml0KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAg
IHZvaWQgcmVmKCkgY29uc3QgeyBtX2ltcGwtPnJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA3NTJmNzI4NTdkYjlj
MTA2NmQ0MWU0MTE5MTkxYTBlMWNlYjY5ZWM4Li4zZmI2NTkzODMxODMzNWU1ZDU0Mjk4YjY1NTE1
MzE1NzEyM2RhYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJNZW1vcnlVc2FnZVN1cHBvcnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgpAQCAtNzcsNiArNzgsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkWHNsU3R5bGVT
aGVldHNbXSA9ICJDYWNoZWRYc2xTdHlsZVNoZWV0cyI7CiBzdGF0aWMgY29uc3QgY2hhciBjYWNo
ZWRGb250c1tdID0gIkNhY2hlZEZvbnRzIjsKIHN0YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVV
c2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZUFs
bG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0ZWQiOworCitzdGF0aWMgY29uc3QgY2hhciBk
b21bXSA9ICJET00iOworc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZU90aGVyW10gPSAiRE9NVHJl
ZU90aGVyIjsKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVET01bXSA9ICJET01UcmVlRE9NIjsK
K3N0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVDU1NbXSA9ICJET01UcmVlQ1NTIjsKIH0KIAogbmFt
ZXNwYWNlIHsKQEAgLTE3NywxMCArMTgzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY29sbGVjdExp
c3RlbmVyc0luZm8obm9kZSk7CiAgICAgfQogCi0gICAgdm9pZCBjb2xsZWN0Q2hhcmFjdGVyRGF0
YShOb2RlKikKLSAgICB7Ci0gICAgfQotCiAgICAgdm9pZCBjb2xsZWN0Tm9kZU5hbWVJbmZvKE5v
ZGUqIG5vZGUpCiAgICAgewogICAgICAgICBTdHJpbmcgbmFtZSA9IG5vZGVOYW1lKG5vZGUpOwpA
QCAtMzcyLDEzICszNzQsOTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IHJlbmRlclRyZWVJbmZvKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHJlbmRlclRyZWVBbGxv
Y2F0ZWQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRNZW1vcnlCbG9ja0ZvcihUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBhcnJheSwgY29uc3QgTWVtb3J5
Q2FjaGU6OlR5cGVTdGF0aXN0aWMmIHN0YXRpc3RpYywgY29uc3QgY2hhciogbmFtZSkKK3N0YXRp
YyB2b2lkIGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4qIGFycmF5LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJlc3VsdCA9IEluc3BlY3Rvck1lbW9yeUJsb2Nr
OjpjcmVhdGUoKS5zZXROYW1lKG5hbWUpOwotICAgIHJlc3VsdC0+c2V0U2l6ZShzdGF0aXN0aWMu
c2l6ZSk7CisgICAgcmVzdWx0LT5zZXRTaXplKHNpemUpOwogICAgIGFycmF5LT5hZGRJdGVtKHJl
c3VsdCk7CiB9CiAKK25hbWVzcGFjZSB7CisKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbklt
cGwgOiBwdWJsaWMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIHsKK3B1YmxpYzoKKyAgICBNZW1vcnlJ
bnN0cnVtZW50YXRpb25JbXBsKCkKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
TGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICAgICAgbV90b3RhbFNpemVzW2ldID0gMDsKKyAg
ICB9CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkdW1wU3RhdGlzdGlj
cygpCisgICAgeworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAgICAgICAgZm9yIChp
bnQgaSA9IE90aGVyOyBpIDwgTGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICAgICAgdG90YWxT
aXplICs9IG1fdG90YWxTaXplc1tpXTsKKworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGRvbUNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7CisgICAgICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbT3RoZXJdLCBNZW1vcnlCbG9j
a05hbWU6OmRvbVRyZWVPdGhlcik7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxk
cmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbRE9NXSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlRE9N
KTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxT
aXplc1tDU1NdLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVDU1MpOworCisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZG9tID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0
ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpkb20pOworICAgICAgICBkb20tPnNldFNpemUo
dG90YWxTaXplKTsKKyAgICAgICAgZG9tLT5zZXRDaGlsZHJlbihkb21DaGlsZHJlbi5yZWxlYXNl
KCkpOworICAgICAgICByZXR1cm4gZG9tLnJlbGVhc2UoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNp
emVfdCBzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9iamVjdFR5cGUgPj0gMCAmJiBvYmpl
Y3RUeXBlIDwgTGFzdFR5cGVFbnRyeSk7CisgICAgICAgIG1fdG90YWxTaXplc1tvYmplY3RUeXBl
XSArPSBzaXplOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQq
IG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiAhbV92aXNpdGVkT2JqZWN0cy5hZGQob2Jq
ZWN0KS5pc05ld0VudHJ5OworICAgIH0KKyAgICBzaXplX3QgbV90b3RhbFNpemVzW0xhc3RUeXBl
RW50cnldOworICAgIHR5cGVkZWYgSGFzaFNldDxjb25zdCB2b2lkKj4gVmlzaXRlZE9iamVjdHM7
CisgICAgVmlzaXRlZE9iamVjdHMgbV92aXNpdGVkT2JqZWN0czsKK307CisKK2NsYXNzIERPTVRy
ZWVzSXRlcmF0b3IgOiBwdWJsaWMgRE9NV3JhcHBlclZpc2l0b3IgeworcHVibGljOgorICAgIERP
TVRyZWVzSXRlcmF0b3IoUGFnZSogcGFnZSkgOiBtX3BhZ2UocGFnZSkgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXROb2RlKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS0+
ZG9jdW1lbnQoKSAmJiBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIG1fcGFnZSAhPSBub2Rl
LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgbV9kb21NZW1vcnlVc2FnZS5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG5vZGUpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmcoU3RyaW5nSW1w
bCopIHsgfQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0YXRp
c3RpY3MoKSB7IHJldHVybiBtX2RvbU1lbW9yeVVzYWdlLmR1bXBTdGF0aXN0aWNzKCk7IH0KKwor
cHJpdmF0ZToKKyAgICBQYWdlKiBtX3BhZ2U7CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1w
bCBtX2RvbU1lbW9yeVVzYWdlOworfTsKKworfQorCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4gZG9tVHJlZUluZm8oUGFnZSogcGFnZSkKK3sKKyAgICBET01UcmVlc0l0
ZXJhdG9yIGRvbVRyZWVzSXRlcmF0b3IocGFnZSk7CisgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0
SlNET01XcmFwcGVycygmZG9tVHJlZXNJdGVyYXRvcik7CisKKyAgICAvLyBNYWtlIHN1cmUgYWxs
IGRvY3VtZW50cyByZWFjaGFibGUgZnJvbSB0aGUgbWFpbiBmcmFtZSBhcmUgYWNjb3VudGVkLgor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChEb2N1bWVudCog
ZG9jID0gZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb21UcmVlc0l0ZXJhdG9yLnZp
c2l0Tm9kZShkb2MpOworICAgIH0KKworICAgIHJldHVybiBkb21UcmVlc0l0ZXJhdG9yLmR1bXBT
dGF0aXN0aWNzKCk7Cit9CisKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiBtZW1vcnlDYWNoZUluZm8oKQogewogICAgIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIHN0YXRz
ID0gbWVtb3J5Q2FjaGUoKS0+Z2V0U3RhdGlzdGljcygpOwpAQCAtMzkxLDEyICs0NzMsMTIgQEAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygp
CiAgICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0U2l6ZSh0b3RhbFNpemUpOwogCiAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwotICAgIGFk
ZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFnZXMsIE1lbW9yeUJsb2Nr
TmFtZTo6Y2FjaGVkSW1hZ2VzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQo
KSwgc3RhdHMuY3NzU3R5bGVTaGVldHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3NzU3R5bGVT
aGVldHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5zY3Jp
cHRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFNjcmlwdHMpOwotICAgIGFkZE1lbW9yeUJsb2Nr
Rm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy54c2xTdHlsZVNoZWV0cywgTWVtb3J5QmxvY2tOYW1l
OjpjYWNoZWRYc2xTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4u
Z2V0KCksIHN0YXRzLmZvbnRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZEZvbnRzKTsKLSAgICBt
ZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgYWRkTWVtb3J5Qmxv
Y2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmltYWdlcy5zaXplLCBNZW1vcnlCbG9ja05hbWU6
OmNhY2hlZEltYWdlcyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0
YXRzLmNzc1N0eWxlU2hlZXRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3NzU3R5bGVT
aGVldHMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5zY3Jp
cHRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkU2NyaXB0cyk7CisgICAgYWRkTWVtb3J5
QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhzbFN0eWxlU2hlZXRzLnNpemUsIE1lbW9y
eUJsb2NrTmFtZTo6Y2FjaGVkWHNsU3R5bGVTaGVldHMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9y
KGNoaWxkcmVuLmdldCgpLCBzdGF0cy5mb250cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hl
ZEZvbnRzKTsKKyAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5nZXQo
KSk7CiAgICAgcmV0dXJuIG1lbW9yeUNhY2hlU3RhdHMucmVsZWFzZSgpOwogfQogCkBAIC00MTMs
NiArNDk1LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURp
c3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAgICBjaGlsZHJlbi0+YWRkSXRl
bShpbnNwZWN0b3JEYXRhKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKG1lbW9yeUNhY2hlSW5m
bygpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShyZW5kZXJUcmVlSW5mbyhtX3BhZ2UpKTsgLy8g
VE9ETzogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPworICAgIGNoaWxkcmVuLT5hZGRJdGVtKGRvbVRy
ZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgcHJv
Y2Vzc01lbW9yeS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UcmVlU2hhcmVkLmgKaW5kZXggMmViZGIxZDFjNTk3OGQxZjBjN2VmMzJmZGNiNGRjMzYwZmZj
NTJmNC4uMGZkYTNjNDM4MTkxODE3ZTNhZmMzMjM4ZTJjZWZlNjBjYzZlNGQ1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtMTExLDYgKzExMSwxMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbjsKICNlbmRpZgogCisgICAgc2l6ZV90
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeUFnZ3JlZ2F0b3IqIG1lbW9yeUFnZ3JlZ2F0b3IpIGNv
bnN0CisgICAgeworICAgICAgICBtZW1vcnlBZ2dyZWdhdG9yLT5zZXRPYmplY3RUeXBlKE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgbWVtb3J5QWdncmVnYXRvci0+cmVwb3J0
SW5zdHJ1bWVudGVkUG9pbnRlcihtX3BhcmVudCk7CisgICAgICAgIHJldHVybiBzaXplb2YoKnRo
aXMpOworICAgIH0KKwogcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJpZW5kIHZvaWQg
YWRvcHRlZDw+KFRyZWVTaGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5n
ZUxvZwppbmRleCAyZWEwY2Q1YWU1ZDM2ZWVhZDRhNDY0OTIzMzBiMWNiZTM0NjdjYWUwLi42ZWU4
YjQwMmJmNjc3ODEyNzliNjg2MDRmMjJkNWY5NDAyNjk4YTM1IDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTA2LTIxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBE
T00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVj
dHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMg
c3VjaCBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA2
LTIwICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRkIGEgcGVy
Zm9ybWFuY2UgdGVzdCBmb3IgcGF0aHMgaW4gU1ZHCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL2luc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwgYi9QZXJmb3JtYW5jZVRl
c3RzL2luc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwKaW5kZXggMmFlMDViYTU3
Zjc1YjRlZjNhODg2N2I4N2UzM2Q0NTBhMTA0ZDI1OS4uMzg2NTNhNzQyMjQ5NzJlNDA5YmVjYzFl
M2ZiMDQ0N2U3OWFhNTJjMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3Iv
bmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbApAQCAtMSw1ICsxLDE3IEBACiA8aHRtbD4K
IDxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIHNwYW4geworICAgICAgY29s
b3I6cmVkOworICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAyMHB4OworICAgIH0K
KyAgICBkaXYgeworICAgICAgY29sb3I6Ymx1ZTsKKyAgICAgIHdpZHRoOiA1MHB4OworICAgICAg
aGVpZ2h0OiAxMHB4OworICAgIH0KKyAgPC9zdHlsZT4KICAgPHNjcmlwdCBzcmM9Ii4uLy4uL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KICAgPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KQEAgLTM5LDggKzUxLDEyIEBAIGZ1bmN0aW9uIGNyZWF0ZURPTVRyZWUoZWxlbWVudHNDb3Vu
dCkKIHsKICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJlZVJv
b3QiKTsKIAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHNDb3VudDsgKytpKQotICAg
ICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyArK2kpIHsKKyAgICAgICAgdmFy
IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHNwYW4uaWQg
PSAic3Bhbl8iICsgaTsKKyAgICAgICAgc3Bhbi5zdHlsZS53aWR0aCA9ICIxMHB4IjsKKyAgICAg
ICAgcm9vdC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICB9CiAKICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGVsZW1lbnRzQ291bnQ7ICsraSkKICAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149004</attachid>
            <date>2012-06-22 05:39:57 -0700</date>
            <delta_ts>2012-06-22 06:22:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89568-20120622163956.patch</filename>
            <type>text/plain</type>
            <size>31510</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI0ZGFkMzczNWUxZjMz
NzZkZjAwNTZiZjM0NDJlMTZmZDE3MTExYi4uM2EyZGM0YjEzMTZkMzExZTZkM2ZjNzhhY2Y1M2Fi
MTIyODAyMjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA2LTIyICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRz
IGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdl
IGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFi
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
Y3JpcHRXcmFwcGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6cmVw
b3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNl
dDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJp
YnV0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAg
ICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbjo6fk1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFBvaW50ZXIpOgorICAgICAgICAo
TWVtb3J5T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpN
ZW1vcnlPYmplY3RJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86OnJl
cG9ydEluc3RydW1lbnRlZFBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0
SW5mbzo6cmVwb3J0UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZv
OjpyZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2Jq
ZWN0SW5mbzo6cmVwb3J0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdElu
Zm86OnJlcG9ydE9iamVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5m
bzo6b2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmpl
Y3RTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0
SW5zdHJ1bWVudGVkUG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb246OnJlcG9ydEluc3RydW1lbnRlZE9iamVjdCk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAg
ICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1l
OjpRdWFsaWZpZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9ja0Zvcik6
CisgICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjptZW1v
cnlDYWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Omdl
dFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1RyZWVTaGFy
ZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKFRyZWVTaGFyZWQpOgorCiAyMDEyLTA2LTIxICBWc2V2b2xvZCBWbGFzb3YgIDx2
c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgc2Vw
YXJhdGUgc2NyaXB0IGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA3OGFiOTFjODM1YjFhOGUzOGRiMGQ5M2VlMTU0MWFhMDU0ZjAzMzYx
Li44OTg4OTljY2E3MjI0NzU0ZGU4ZTA0MDNhZmE2YjQwYzA2MTZmZWEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MDcsNiArMTkwNyw3IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VDaGFubmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGIyNTIwZWIxYjFhNzY2ZDFjYjM0ZDk0ZTdjNjJjYjA1
MjliMWQ4ODEuLjY5YTZiYjQ2NmVkOWViMzVmNjg2NzQxYTRkMGY5NTU4ZjYyMTZmMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtMTc0NSw2ICsxNzQ1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0V4Y2Vw
dGlvbkNvZGUuaCBcCiAgICAgZG9tL0ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIFwKICAg
ICBkb20vS2V5Ym9hcmRFdmVudC5oIFwKKyAgICBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgg
XAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5oIFwKICAgICBkb20vTWVzc2FnZUV2ZW50LmggXAog
ICAgIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDNiNmVh
NjhlYmRiYzQ4MWVkMDFmMmQ5MDAxYWI0YjNmODEwODM1Ni4uMmI0ZjE4MmY2ODM1OTQ1ZDIxNzZl
Y2I4YTUzZWNlODI3M2FlYWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTM0Miw2ICs1MzQyLDcg
QEAKICAgICAgICAgICAgICdkb20vSWNvblVSTC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9JY29u
VVJMLmgnLAogICAgICAgICAgICAgJ2RvbS9LZXlib2FyZEV2ZW50LmNwcCcsCisgICAgICAgICAg
ICAnZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdkb20vTWVzc2Fn
ZUNoYW5uZWwuY3BwJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuaCcsCiAgICAg
ICAgICAgICAnZG9tL01lc3NhZ2VFdmVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlZWQ4NTQxOTcyZmFhYzgxOTE0OTEwZjQ2ZjUw
MTUxZDM4MWNlYTdjLi44NTY2YTA4ZmFjNTI5NjUwMWIzNmRhMjI5N2FkMGE1YWNiYjcyYzczIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTEx
OTEsNiArNTExOTEsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cTWVzc2FnZUNoYW5uZWwuY3Bw
IgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYWNiMGNiMDA1NDhhMjljMjk1
NjYxNDA2NTM1ZmVjZjU3MTQ5MDhlLi5kYWM0NTU4M2U3ZjBkYTA5MmYwMDgwMjU2MDlhNjYxYTkx
MjdjODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDI4LDYgKzE0MjgsNyBAQAogCQk0RjE1MzRERTExQjUzMkVDMDAyMUZE
ODYgLyogRWRpdGluZ0JlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0RjE1MzRERDExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYx
NTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAy
MUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRGMzJCQjFCMTRGQTg1
RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYy
RDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCAqLzsgfTsKIAkJNEYz
Mjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlCMzExQTQyQUFCMDA1QUJF
N0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKIAkJNEYzMjg5QjYxMUE0MkFBQjAwNUFC
RTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04
NTAxLDYgKzg1MDIsNyBAQAogCQk0RjE1MzRERDExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0Jl
aGF2aW9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjE1MzRERjExQjUzMzAyMDAyMUZE
ODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQyMDUzMTJFQUU3
QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8q
IEluc3BlY3RvclZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDE0LDYgKzIx
NDE2LDcgQEAKIAkJCQlCQzlBNjE0NDE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9kb21fZXhjZXB0
aW9ucy5wbCAqLywKIAkJCQlCQzlBNjE0NTE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9ldmVudF9m
YWN0b3J5LnBsICovLAogCQkJCUJDOUE2MTQ2MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX25hbWVz
LnBsICovLAorCQkJCTRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCAqLywKIAkJCQlFMUFERUNDRDBFNzZBRDhCMDA0QTFBNUUgLyogTWVzc2FnZUNoYW5u
ZWwuY3BwICovLAogCQkJCUUxQURFQ0NDMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5l
bC5oICovLAogCQkJCUUxQURFQ0QwMEU3NkFEQUIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5p
ZGwgKi8sCkBAIC0yNTE0Miw2ICsyNTE0NSw3IEBACiAJCQkJQ0U3QjJEQjMxNTg2QUJBRDAwOThC
M0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTA5ODdDMjcxNTdENjc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRGMzJCQjFCMTRGQTg1RTgwMEY2
QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA1MDhhOTM3MDA0NjBm
MDEyMTEwOWQ1ZmVlMmE2OGVhOThmOTJkZmZmLi4zMDE0YTM0ODY3NzgxNGYyNzU3M2MxODBhZDgz
YWZlZjdhNmJhZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGUuaApAQCAtNTQsNiArNTQsMTIgQEAgcHVibGljOgogICAgICAgICB3ZWFrQ2xlYXIobV93
cmFwcGVyLCB3cmFwcGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgeworICAgICAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
RE9NLCBzaXplb2YoKnRoaXMpKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2Jq
ZWN0KG1fd3JhcHBlcik7CisgICAgfQorCiBwcml2YXRlOgogICAgIEpTQzo6V2VhazxKU0RPTVdy
YXBwZXI+IG1fd3JhcHBlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dFdyYXBwYWJsZS5oCmluZGV4IDg1MDk5NGFiYjcxZjJjZThhNDZkNWRmN2IzNTZhZThmNzgyY2Zh
YTYuLjQwZmJkZTg1ZTE0MWU1MzM0NDJjM2I1MmIyNTk5MjE4ZDgzYTQ1MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCkBAIC01Miw2ICs1MiwxMiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyV3JhcHBlcigpIHsgbV93cmFwcGVyID0gMDsgfQog
CisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2Jq
ZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSwgc2l6ZW9mKCp0aGlzKSk7CisgICAg
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50ZXIobV93cmFwcGVyLCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OkRPTSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+KiBtX3dyYXBwZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5
U2V0LmgKaW5kZXggNzRjZTA3OWE0NzMzMWY1ZTQyN2I1MWZlZTljZjBiYzM5NDk5NzUzOC4uYzFm
NWYyNjg3ZDU5NWNmZmU4YzlmMDVlMDM2MDc3NDAwZjk4ZjAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0
aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMTUsNiArMTE2LDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNob3dTdHlsZSgpOwogI2VuZGlmCiAgICAgCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRp
b246OkNTUywgc2l6ZW9mKCp0aGlzKSk7CisgICAgICAgIGlmIChtX2lzTXV0YWJsZSkKKyAgICAg
ICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50ZXIobV9tdXRhYmxlUHJvcGVydHlW
ZWN0b3IsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICB9CisKIHByaXZhdGU6CiAg
ICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2RlKTsKICAgICBTdHlsZVByb3BlcnR5U2V0
KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2Vy
TW9kZSwgYm9vbCBtYWtlTXV0YWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRl
eCBiZThjNzhlNGQ1ZjEwNTY3ZDRlNTU5YmFiZmJmZTYwZjkxNmZmZTNjLi5mOTRmMzM1OGQxNTli
YWNlMTUyZDdkNGZmODc2MGZiMjZjMjVkYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmgKQEAgLTk5LDYgKzk5LDE0IEBAIHB1YmxpYzoKICAgICBOb2RlKiB0cmF2ZXJzZU5leHROb2Rl
KCkgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKiBzdGF5V2l0
aGluKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5
T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSwg
c2l6ZW9mKCp0aGlzKSk7CisgICAgICAgIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9i
amVjdEluZm8pOworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQ
b2ludGVyKG1fZmlyc3RDaGlsZCk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydElu
c3RydW1lbnRlZFBvaW50ZXIobV9sYXN0Q2hpbGQpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAg
IENvbnRhaW5lck5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFp
bmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZGUzZjBjNWFmMTRlMDUwNmU2MTE1YzlmZGQ2
OTg4NjVhOWIzMDgzYi4uMmNiZGE4MDZlMGRkZjQ4Mzc5YTgwNmJjN2MzZDQ0NGIzYWI4ZDEwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC00MjEsNiArNDIxLDE0IEBAIHB1YmxpYzoKICAgICBJbnRT
aXplIHNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFNhdmVkTGF5
ZXJTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cisg
ICAgeworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6RE9NLCBzaXplb2YoKnRoaXMpKTsKKyAgICAgICAgQ29udGFpbmVyTm9k
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIG1lbW9yeU9i
amVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtX3RhZ05hbWUpOworICAgICAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlRGF0
YS5nZXQoKSk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlw
ZSkKICAgICAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCB0eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCA4YjFiMzE4ZmU5OWRlNGIyMWU4ZmRm
NjE2YmVhMGU1OWJkMmVmZjM1Li45MzllMTgyNmVmYTY4YjJmYzg0MzVmMDQzYTJlNmE1NTJjZTkw
YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaApAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBFbGVtZW50QXR0cmlidXRlRGF0YV9oCiAKICNpbmNsdWRlICJB
dHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtOTksNiArMTAwLDE2IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPEF0dHI+IGF0dHJJZkV4aXN0cyhFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIFBhc3NSZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihFbGVtZW50KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5T2JqZWN0
SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSwgc2l6ZW9m
KCp0aGlzKSk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBv
aW50ZXIobV9pbmxpbmVTdHlsZURlY2wuZ2V0KCkpOworICAgICAgICBtZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlU3R5bGUuZ2V0KCkpOworICAg
ICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9jbGFzc05hbWVzKTsKKyAgICAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1faWRGb3JTdHlsZVJlc29sdXRpb24p
OworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9hdHRyaWJ1dGVzKTsK
KyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEVsZW1lbnQ7CiAgICAgZnJpZW5k
IGNsYXNzIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUlu
c3RydW1lbnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZTlmNGUwZTdkZmEyYmJlOWQyOGYxM2MyNmIx
MzhlNzg1NGI1OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lbW9yeUluc3RydW1l
bnRhdGlvbl9oCisjZGVmaW5lIE1lbW9yeUluc3RydW1lbnRhdGlvbl9oCisKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CisKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRh
dGlvbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkgeyB9
CisKKyAgICBlbnVtIE9iamVjdFR5cGUgeworICAgICAgICBPdGhlciwKKyAgICAgICAgRE9NLAor
ICAgICAgICBDU1MsCisgICAgICAgIExhc3RUeXBlRW50cnkKKyAgICB9OworCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHZvaWQgcmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KGNvbnN0IFQmKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCByZXBvcnRPYmplY3QoY29uc3QgVCYpIHsg
fQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIHJlcG9ydEluc3RydW1lbnRlZFBvaW50
ZXIoY29uc3QgVCopOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIHJlcG9ydFBvaW50
ZXIoY29uc3QgVCogb2JqZWN0LCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCisgICAgeworICAgICAg
ICBpZiAoIW9iamVjdCB8fCB2aXNpdGVkKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBzaXplb2YoVCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKKworICAgIHZpcnR1
YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CisgICAgdmly
dHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopID0gMDsKK307CisKK2NsYXNzIE1lbW9yeU9i
amVjdEluZm8geworcHVibGljOgorICAgIE1lbW9yeU9iamVjdEluZm8oTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgICAgIDogbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24obWVtb3J5SW5zdHJ1bWVudGF0aW9uKQorICAgICAgICAsIG1fb2JqZWN0VHlwZShN
ZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyKQorICAgICAgICAsIG1fb2JqZWN0U2l6ZSgwKQor
ICAgICB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgIHZvaWQgcmVwb3J0SW5z
dHJ1bWVudGVkUG9pbnRlcihjb25zdCBQKiBtZW1iZXJQb2ludGVyKQorICAgIHsKKyAgICAgICAg
bV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobWVtYmVy
UG9pbnRlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+CisgICAgdm9pZCBy
ZXBvcnRQb2ludGVyKGNvbnN0IFAqIHBvaW50ZXIsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2Jq
ZWN0VHlwZSBvYmplY3RUeXBlKQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPnJlcG9ydFBvaW50ZXIocG9pbnRlciwgb2JqZWN0VHlwZSk7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QoY29u
c3QgVCYgbWVtYmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtZW1iZXJPYmplY3QpOworICAgIH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0T2JqZWN0KGNvbnN0IFQmIG9i
amVjdCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0T2JqZWN0KG9iamVjdCk7IH0K
KworICAgIHZvaWQgcmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVj
dFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IG9iamVjdFNpemUpCisgICAgeworICAgICAgICBpZiAo
bV9vYmplY3RUeXBlICE9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fb2JqZWN0VHlwZSA9IG9iamVjdFR5cGU7CisgICAgICAgIG1f
b2JqZWN0U2l6ZSA9IG9iamVjdFNpemU7CisgICAgfQorCisgICAgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFR5cGU7
IH0KKyAgICBzaXplX3Qgb2JqZWN0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U2l6ZTsg
fQorCisgcHJpdmF0ZToKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBtX29iamVj
dFR5cGU7CisgICAgc2l6ZV90IG1fb2JqZWN0U2l6ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydEluc3RydW1lbnRlZFBvaW50
ZXIoY29uc3QgVCogY29uc3Qgb2JqZWN0KQoreworICAgIGlmICghb2JqZWN0IHx8IHZpc2l0ZWQo
b2JqZWN0KSkKKyAgICAgICAgcmV0dXJuOworICAgIE1lbW9yeU9iamVjdEluZm8gYWdncmVnYXRv
cih0aGlzKTsKKyAgICBvYmplY3QtPnJlcG9ydE1lbW9yeVVzYWdlKCZhZ2dyZWdhdG9yKTsKKyAg
ICBjb3VudE9iamVjdFNpemUoYWdncmVnYXRvci5vYmplY3RUeXBlKCksIGFnZ3JlZ2F0b3Iub2Jq
ZWN0U2l6ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgb2JqZWN0KQorewor
ICAgIE1lbW9yeU9iamVjdEluZm8gYWdncmVnYXRvcih0aGlzKTsKKyAgICBvYmplY3QucmVwb3J0
TWVtb3J5VXNhZ2UoJmFnZ3JlZ2F0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyAhZGVmaW5lZChNZW1vcnlJbnN0cnVtZW50YXRpb25faCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAppbmRleCAyNGM2MTU4NzdmMTIwYTZiYjU2MmE1MmRhOGM4NDhlZjU1N2M1Mzc4Li5mMjQzMWVl
Y2UwNzExNGNkZDc1MzM1NGMxZTFhOTA4OGNkZGNjZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0y
Nzg1LDYgKzI3ODUsMTYgQEAgdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigpCiAgICAgZGVsZXRl
IHRoaXM7CiB9CiAKK3ZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRPYmplY3RJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NLCBzaXplb2YoKnRoaXMpKTsK
KyAgICBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OjpyZXBvcnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKKyAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50ZXIo
bV9kb2N1bWVudCwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOworICAgIG1lbW9yeU9iamVj
dEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9uZXh0KTsKKyAgICBtZW1vcnlPYmpl
Y3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fcHJldmlvdXMpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBlOGZk
ZTMwMDIwNTlmZjI3MzU1OGEzN2I4NmVkZWM5Zjc0MWZhNTVjLi5jOWMyNjc0ZDI3YzVjYzFlMzA0
OGYwZjUzMDM3N2VjMzYxZDY5MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIktVUkxIYXNoLmgiCiAjaW5jbHVkZSAi
TGF5b3V0VHlwZXMuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5o
IgogI2luY2x1ZGUgIlRyZWVTaGFyZWQuaCIKQEAgLTY0OCw2ICs2NDksOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNTY29wZWRIVE1MU3R5bGVDaGlsZCgpIGNvbnN0OwogICAgIHNpemVfdCBudW1i
ZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIGVudW0gTm9kZUZsYWdzIHsKICAgICAgICAgSXNUZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1F1YWxpZmllZE5hbWUuaAppbmRleCA2MzZiMmE1MTUwYzllOTg3YzAyN2U3NTY5NzkyZDliYWMz
NGE4OWU5Li5mZGU0ZjRiZWU4ODE4NWY3MzEzOTM3YTYwMzNiMjMxOGYwYTMyMjBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTIxLDYgKzIxLDggQEAKICNpZm5kZWYgUXVhbGlm
aWVkTmFtZV9oCiAjZGVmaW5lIFF1YWxpZmllZE5hbWVfaAogCisjaW5jbHVkZSAiTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCisKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBA
IC00OCw2ICs1MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX25h
bWVzcGFjZTsKICAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWVVcHBlcjsK
IAorICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydE9iamVjdEluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00sIHNpemVvZigq
dGhpcykpOworICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fcHJl
Zml4KTsKKyAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX2xvY2Fs
TmFtZSk7CisgICAgICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9uYW1l
c3BhY2UpOworICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fbG9j
YWxOYW1lVXBwZXIpOworICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUXVhbGlmaWVk
TmFtZUltcGwoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKICAgICAgICAgICAg
IDogbV9wcmVmaXgocHJlZml4KQpAQCAtOTIsNiArMTAyLDExIEBAIHB1YmxpYzoKICAgICAvLyBJ
bml0IHJvdXRpbmUgZm9yIGdsb2JhbHMKICAgICBzdGF0aWMgdm9pZCBpbml0KCk7CiAgICAgCisg
ICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0
SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSwgc2l6ZW9mKCp0aGlzKSk7CisgICAgICAg
IG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9pbXBsKTsKKyAg
ICB9CiBwcml2YXRlOgogICAgIHZvaWQgaW5pdChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlVVJJKTsKICAgICB2b2lkIHJlZigpIGNvbnN0IHsgbV9pbXBsLT5yZWYoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXgg
MGZiMmFhYzMzYWE1MTE1YzQxYmM1MTBhMjI5MTg4MGU2MTBhM2EzNC4uMGQ0MDQ2MDNlYjJkZDY5
NGJlMWZmNTkzZDMwM2YzNmI4NGY3NDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgog
I2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiTWVtb3J5VXNhZ2VTdXBwb3J0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTc3LDYgKzc4LDExIEBAIHN0YXRpYyBjb25zdCBjaGFyIGNh
Y2hlZFhzbFN0eWxlU2hlZXRzW10gPSAiQ2FjaGVkWHNsU3R5bGVTaGVldHMiOwogc3RhdGljIGNv
bnN0IGNoYXIgY2FjaGVkRm9udHNbXSA9ICJDYWNoZWRGb250cyI7CiBzdGF0aWMgY29uc3QgY2hh
ciByZW5kZXJUcmVlVXNlZFtdID0gIlJlbmRlclRyZWVVc2VkIjsKIHN0YXRpYyBjb25zdCBjaGFy
IHJlbmRlclRyZWVBbGxvY2F0ZWRbXSA9ICJSZW5kZXJUcmVlQWxsb2NhdGVkIjsKKworc3RhdGlj
IGNvbnN0IGNoYXIgZG9tW10gPSAiRE9NIjsKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVPdGhl
cltdID0gIkRPTVRyZWVPdGhlciI7CitzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlRE9NW10gPSAi
RE9NVHJlZURPTSI7CitzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlQ1NTW10gPSAiRE9NVHJlZUNT
UyI7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC0xNzcsMTAgKzE4Myw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNvbGxlY3RMaXN0ZW5lcnNJbmZvKG5vZGUpOwogICAgIH0KIAotICAgIHZvaWQgY29sbGVj
dENoYXJhY3RlckRhdGEoTm9kZSopCi0gICAgewotICAgIH0KLQogICAgIHZvaWQgY29sbGVjdE5v
ZGVOYW1lSW5mbyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBub2Rl
TmFtZShub2RlKTsKQEAgLTM3MiwxMyArMzc0LDkzIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck1lbW9yeUJsb2NrPiByZW5kZXJUcmVlSW5mbyhQYWdlKiBwYWdlKQogICAgIHJldHVybiBy
ZW5kZXJUcmVlQWxsb2NhdGVkLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTWVtb3J5
QmxvY2tGb3IoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXks
IGNvbnN0IE1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljJiBzdGF0aXN0aWMsIGNvbnN0IGNoYXIq
IG5hbWUpCitzdGF0aWMgdm9pZCBhZGRNZW1vcnlCbG9ja0ZvcihUeXBlQnVpbGRlcjo6QXJyYXk8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBhcnJheSwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIG5h
bWUpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZXN1bHQgPSBJbnNwZWN0
b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShuYW1lKTsKLSAgICByZXN1bHQtPnNldFNp
emUoc3RhdGlzdGljLnNpemUpOworICAgIHJlc3VsdC0+c2V0U2l6ZShzaXplKTsKICAgICBhcnJh
eS0+YWRkSXRlbShyZXN1bHQpOwogfQogCituYW1lc3BhY2UgeworCitjbGFzcyBNZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsIDogcHVibGljIE1lbW9yeUluc3RydW1lbnRhdGlvbiB7CitwdWJsaWM6
CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCgpCisgICAgeworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IExhc3RUeXBlRW50cnk7ICsraSkKKyAgICAgICAgICAgIG1fdG90YWxTaXpl
c1tpXSA9IDA7CisgICAgfQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4g
ZHVtcFN0YXRpc3RpY3MoKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7Cisg
ICAgICAgIGZvciAoaW50IGkgPSBPdGhlcjsgaSA8IExhc3RUeXBlRW50cnk7ICsraSkKKyAgICAg
ICAgICAgIHRvdGFsU2l6ZSArPSBtX3RvdGFsU2l6ZXNbaV07CisKKyAgICAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBkb21DaGlsZHJlbiA9IFR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOworICAgICAg
ICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW090aGVy
XSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlT3RoZXIpOworICAgICAgICBhZGRNZW1vcnlCbG9j
a0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW0RPTV0sIE1lbW9yeUJsb2NrTmFt
ZTo6ZG9tVHJlZURPTSk7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdl
dCgpLCBtX3RvdGFsU2l6ZXNbQ1NTXSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlQ1NTKTsKKwor
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbSA9IEluc3BlY3Rvck1lbW9y
eUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6ZG9tKTsKKyAgICAgICAg
ZG9tLT5zZXRTaXplKHRvdGFsU2l6ZSk7CisgICAgICAgIGRvbS0+c2V0Q2hpbGRyZW4oZG9tQ2hp
bGRyZW4ucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuIGRvbS5yZWxlYXNlKCk7CisgICAgfQor
Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSBv
YmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChvYmplY3RUeXBl
ID49IDAgJiYgb2JqZWN0VHlwZSA8IExhc3RUeXBlRW50cnkpOworICAgICAgICBtX3RvdGFsU2l6
ZXNbb2JqZWN0VHlwZV0gKz0gc2l6ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRl
ZChjb25zdCB2b2lkKiBvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gIW1fdmlzaXRlZE9i
amVjdHMuYWRkKG9iamVjdCkuaXNOZXdFbnRyeTsKKyAgICB9CisgICAgc2l6ZV90IG1fdG90YWxT
aXplc1tMYXN0VHlwZUVudHJ5XTsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8Y29uc3Qgdm9pZCo+IFZp
c2l0ZWRPYmplY3RzOworICAgIFZpc2l0ZWRPYmplY3RzIG1fdmlzaXRlZE9iamVjdHM7Cit9Owor
CitjbGFzcyBET01UcmVlc0l0ZXJhdG9yIDogcHVibGljIERPTVdyYXBwZXJWaXNpdG9yIHsKK3B1
YmxpYzoKKyAgICBET01UcmVlc0l0ZXJhdG9yKFBhZ2UqIHBhZ2UpIDogbV9wYWdlKHBhZ2UpIHsg
fQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0Tm9kZShOb2RlKiBub2RlKQorICAgIHsKKyAgICAg
ICAgaWYgKG5vZGUtPmRvY3VtZW50KCkgJiYgbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBt
X3BhZ2UgIT0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIG1fZG9tTWVtb3J5VXNhZ2UucmVwb3J0SW5zdHJ1bWVudGVkUG9p
bnRlcihub2RlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0V4dGVybmFsU3Ry
aW5nKFN0cmluZ0ltcGwqKSB7IH0KKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGR1bXBTdGF0aXN0aWNzKCkgeyByZXR1cm4gbV9kb21NZW1vcnlVc2FnZS5kdW1wU3RhdGlz
dGljcygpOyB9CisKK3ByaXZhdGU6CisgICAgUGFnZSogbV9wYWdlOworICAgIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwgbV9kb21NZW1vcnlVc2FnZTsKK307CisKK30KKworc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVRyZWVJbmZvKFBhZ2UqIHBhZ2UpCit7Cisg
ICAgRE9NVHJlZXNJdGVyYXRvciBkb21UcmVlc0l0ZXJhdG9yKHBhZ2UpOworICAgIFNjcmlwdFBy
b2ZpbGVyOjp2aXNpdEpTRE9NV3JhcHBlcnMoJmRvbVRyZWVzSXRlcmF0b3IpOworCisgICAgLy8g
TWFrZSBzdXJlIGFsbCBkb2N1bWVudHMgcmVhY2hhYmxlIGZyb20gdGhlIG1haW4gZnJhbWUgYXJl
IGFjY291bnRlZC4KKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBp
ZiAoRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZG9tVHJl
ZXNJdGVyYXRvci52aXNpdE5vZGUoZG9jKTsKKyAgICB9CisKKyAgICByZXR1cm4gZG9tVHJlZXNJ
dGVyYXRvci5kdW1wU3RhdGlzdGljcygpOworfQorCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4gbWVtb3J5Q2FjaGVJbmZvKCkKIHsKICAgICBNZW1vcnlDYWNoZTo6U3Rh
dGlzdGljcyBzdGF0cyA9IG1lbW9yeUNhY2hlKCktPmdldFN0YXRpc3RpY3MoKTsKQEAgLTM5MSwx
MiArNDczLDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBtZW1v
cnlDYWNoZUluZm8oKQogICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldFNpemUodG90YWxTaXplKTsK
IAogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4g
Y2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVh
dGUoKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuaW1hZ2Vz
LCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZEltYWdlcyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3Io
Y2hpbGRyZW4uZ2V0KCksIHN0YXRzLmNzc1N0eWxlU2hlZXRzLCBNZW1vcnlCbG9ja05hbWU6OmNh
Y2hlZENzc1N0eWxlU2hlZXRzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQo
KSwgc3RhdHMuc2NyaXB0cywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRTY3JpcHRzKTsKLSAgICBh
ZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMueHNsU3R5bGVTaGVldHMsIE1l
bW9yeUJsb2NrTmFtZTo6Y2FjaGVkWHNsU3R5bGVTaGVldHMpOwotICAgIGFkZE1lbW9yeUJsb2Nr
Rm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5mb250cywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRG
b250cyk7Ci0gICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAg
IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFnZXMuc2l6ZSwgTWVt
b3J5QmxvY2tOYW1lOjpjYWNoZWRJbWFnZXMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxk
cmVuLmdldCgpLCBzdGF0cy5jc3NTdHlsZVNoZWV0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNh
Y2hlZENzc1N0eWxlU2hlZXRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQo
KSwgc3RhdHMuc2NyaXB0cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFNjcmlwdHMpOwor
ICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy54c2xTdHlsZVNoZWV0
cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRzKTsKKyAgICBhZGRN
ZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMuc2l6ZSwgTWVtb3J5Qmxv
Y2tOYW1lOjpjYWNoZWRGb250cyk7CisgICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0Q2hpbGRyZW4o
Y2hpbGRyZW4uZ2V0KCkpOwogICAgIHJldHVybiBtZW1vcnlDYWNoZVN0YXRzLnJlbGVhc2UoKTsK
IH0KIApAQCAtNDEzLDYgKzQ5NSw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFBy
b2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zCiAgICAgY2hp
bGRyZW4tPmFkZEl0ZW0oaW5zcGVjdG9yRGF0YSgpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbSht
ZW1vcnlDYWNoZUluZm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8o
bV9wYWdlKSk7IC8vIFRPRE86IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KKyAgICBjaGlsZHJlbi0+
YWRkSXRlbShkb21UcmVlSW5mbyhtX3BhZ2UpKTsgLy8gVE9ETzogY29sbGVjdCBmb3IgYWxsIHBh
Z2VzPwogICAgIHByb2Nlc3NNZW1vcnktPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDJlYmRiMWQxYzU5NzhkMWYwYzdlZjMy
ZmRjYjRkYzM2MGZmYzUyZjQuLjgxZGVjYTYyMTRkNDM3NjAzNmQ3NDY4ODU1ODA3ZjEyYjg5ODVl
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAgLTExMSw2ICsxMTEsMTIg
QEAgcHVibGljOgogICAgIGJvb2wgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb247CiAjZW5kaWYK
IAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9i
amVjdEluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00sIHNpemVvZigqdGhpcykpOworICAg
ICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fcGFyZW50
KTsKKyAgICB9CisKIHByaXZhdGU6CiAjaWZuZGVmIE5ERUJVRwogICAgIGZyaWVuZCB2b2lkIGFk
b3B0ZWQ8PihUcmVlU2hhcmVkPE5vZGVUeXBlLCBQYXJlbnROb2RlVHlwZT4qKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZGY1ODc5NDM5NDU5M2RjMGJkZWRkYWJjNTlhNWI1ZjllZjg4NDk0OS4uMzlhOTQ4
ZjU0YTI5OWU5MDk3MDYxYzA4MTU5NWE0MTJjZTU1ODM3MCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0wNi0yMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcGFydGlhbGx5IGluc3RydW1lbnQgRE9N
IFRyZWUgbmF0aXZlIG1lbW9yeS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg5NTY4CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbiBjbGFzcyB0aGF0IGNvdW50cyBhbGwgdmlzaXRlZAorICAgICAgICBvYmplY3Rz
IGFuZCBjYWxscyByZXBvcnRNZW1vcnlVc2FnZSBpZiB0aGUgb2JqZWN0J3MgY2xhc3MgaGFzIHN1
Y2ggbWV0aG9kLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbDoKKwogMjAxMi0wNi0y
MSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEg
cGVyZi10ZXN0IGZvciBpbm5lckhUTUwgc2V0dGVyIGZvciBhIGxhcmdlIERPTSB0cmVlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90
Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90
Lmh0bWwKaW5kZXggMmFlMDViYTU3Zjc1YjRlZjNhODg2N2I4N2UzM2Q0NTBhMTA0ZDI1OS4uMzg2
NTNhNzQyMjQ5NzJlNDA5YmVjYzFlM2ZiMDQ0N2U3OWFhNTJjMCAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9pbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sCisrKyBiL1Bl
cmZvcm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbApAQCAt
MSw1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgor
ICAgIHNwYW4geworICAgICAgY29sb3I6cmVkOworICAgICAgd2lkdGg6IDEwMHB4OworICAgICAg
aGVpZ2h0OiAyMHB4OworICAgIH0KKyAgICBkaXYgeworICAgICAgY29sb3I6Ymx1ZTsKKyAgICAg
IHdpZHRoOiA1MHB4OworICAgICAgaGVpZ2h0OiAxMHB4OworICAgIH0KKyAgPC9zdHlsZT4KICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KICAgPHNjcmlwdCBzcmM9InBlcmZvcm1hbmNlLXRlc3Qu
anMiPjwvc2NyaXB0PgogPHNjcmlwdD4KQEAgLTM5LDggKzUxLDEyIEBAIGZ1bmN0aW9uIGNyZWF0
ZURPTVRyZWUoZWxlbWVudHNDb3VudCkKIHsKICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0VHJlZVJvb3QiKTsKIAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxl
bWVudHNDb3VudDsgKytpKQotICAgICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50
OyArK2kpIHsKKyAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CisgICAgICAgIHNwYW4uaWQgPSAic3Bhbl8iICsgaTsKKyAgICAgICAgc3Bhbi5zdHlsZS53
aWR0aCA9ICIxMHB4IjsKKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICB9CiAK
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzQ291bnQ7ICsraSkKICAgICAgICAgcm9v
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149010</attachid>
            <date>2012-06-22 06:04:36 -0700</date>
            <delta_ts>2012-06-22 06:56:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89568-20120622170435.patch</filename>
            <type>text/plain</type>
            <size>31554</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI0ZGFkMzczNWUxZjMz
NzZkZjAwNTZiZjM0NDJlMTZmZDE3MTExYi4uM2EyZGM0YjEzMTZkMzExZTZkM2ZjNzhhY2Y1M2Fi
MTIyODAyMjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA2LTIyICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRz
IGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdl
IGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFi
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
Y3JpcHRXcmFwcGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6cmVw
b3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNl
dDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJp
YnV0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAg
ICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbjo6fk1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFBvaW50ZXIpOgorICAgICAgICAo
TWVtb3J5T2JqZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpN
ZW1vcnlPYmplY3RJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86OnJl
cG9ydEluc3RydW1lbnRlZFBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0
SW5mbzo6cmVwb3J0UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZv
OjpyZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2Jq
ZWN0SW5mbzo6cmVwb3J0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdElu
Zm86OnJlcG9ydE9iamVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5m
bzo6b2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmpl
Y3RTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0
SW5zdHJ1bWVudGVkUG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb246OnJlcG9ydEluc3RydW1lbnRlZE9iamVjdCk6CisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAg
ICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1l
OjpRdWFsaWZpZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVhbGlmaWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9ja0Zvcik6
CisgICAgICAgIChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjptZW1v
cnlDYWNoZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Omdl
dFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1RyZWVTaGFy
ZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKFRyZWVTaGFyZWQpOgorCiAyMDEyLTA2LTIxICBWc2V2b2xvZCBWbGFzb3YgIDx2
c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgc2Vw
YXJhdGUgc2NyaXB0IGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCA3OGFiOTFjODM1YjFhOGUzOGRiMGQ5M2VlMTU0MWFhMDU0ZjAzMzYx
Li44OTg4OTljY2E3MjI0NzU0ZGU4ZTA0MDNhZmE2YjQwYzA2MTZmZWEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE5MDcsNiArMTkwNyw3IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VDaGFubmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGIyNTIwZWIxYjFhNzY2ZDFjYjM0ZDk0ZTdjNjJjYjA1
MjliMWQ4ODEuLjY5YTZiYjQ2NmVkOWViMzVmNjg2NzQxYTRkMGY5NTU4ZjYyMTZmMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtMTc0NSw2ICsxNzQ1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0V4Y2Vw
dGlvbkNvZGUuaCBcCiAgICAgZG9tL0ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIFwKICAg
ICBkb20vS2V5Ym9hcmRFdmVudC5oIFwKKyAgICBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgg
XAogICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5oIFwKICAgICBkb20vTWVzc2FnZUV2ZW50LmggXAog
ICAgIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDNiNmVh
NjhlYmRiYzQ4MWVkMDFmMmQ5MDAxYWI0YjNmODEwODM1Ni4uMmI0ZjE4MmY2ODM1OTQ1ZDIxNzZl
Y2I4YTUzZWNlODI3M2FlYWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTM0Miw2ICs1MzQyLDcg
QEAKICAgICAgICAgICAgICdkb20vSWNvblVSTC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9JY29u
VVJMLmgnLAogICAgICAgICAgICAgJ2RvbS9LZXlib2FyZEV2ZW50LmNwcCcsCisgICAgICAgICAg
ICAnZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdkb20vTWVzc2Fn
ZUNoYW5uZWwuY3BwJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuaCcsCiAgICAg
ICAgICAgICAnZG9tL01lc3NhZ2VFdmVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlZWQ4NTQxOTcyZmFhYzgxOTE0OTEwZjQ2ZjUw
MTUxZDM4MWNlYTdjLi44NTY2YTA4ZmFjNTI5NjUwMWIzNmRhMjI5N2FkMGE1YWNiYjcyYzczIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTEx
OTEsNiArNTExOTEsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cTWVzc2FnZUNoYW5uZWwuY3Bw
IgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYWNiMGNiMDA1NDhhMjljMjk1
NjYxNDA2NTM1ZmVjZjU3MTQ5MDhlLi5kYWM0NTU4M2U3ZjBkYTA5MmYwMDgwMjU2MDlhNjYxYTkx
MjdjODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDI4LDYgKzE0MjgsNyBAQAogCQk0RjE1MzRERTExQjUzMkVDMDAyMUZE
ODYgLyogRWRpdGluZ0JlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0RjE1MzRERDExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYx
NTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAy
MUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRGMzJCQjFCMTRGQTg1
RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYy
RDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCAqLzsgfTsKIAkJNEYz
Mjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlCMzExQTQyQUFCMDA1QUJF
N0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKIAkJNEYzMjg5QjYxMUE0MkFBQjAwNUFC
RTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04
NTAxLDYgKzg1MDIsNyBAQAogCQk0RjE1MzRERDExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0Jl
aGF2aW9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjE1MzRERjExQjUzMzAyMDAyMUZE
ODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRWRpdGluZ0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQyMDUzMTJFQUU3
QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8q
IEluc3BlY3RvclZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDE0LDYgKzIx
NDE2LDcgQEAKIAkJCQlCQzlBNjE0NDE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9kb21fZXhjZXB0
aW9ucy5wbCAqLywKIAkJCQlCQzlBNjE0NTE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9ldmVudF9m
YWN0b3J5LnBsICovLAogCQkJCUJDOUE2MTQ2MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX25hbWVz
LnBsICovLAorCQkJCTRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCAqLywKIAkJCQlFMUFERUNDRDBFNzZBRDhCMDA0QTFBNUUgLyogTWVzc2FnZUNoYW5u
ZWwuY3BwICovLAogCQkJCUUxQURFQ0NDMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5l
bC5oICovLAogCQkJCUUxQURFQ0QwMEU3NkFEQUIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5p
ZGwgKi8sCkBAIC0yNTE0Miw2ICsyNTE0NSw3IEBACiAJCQkJQ0U3QjJEQjMxNTg2QUJBRDAwOThC
M0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTA5ODdDMjcxNTdENjc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRl
ckdsb2JhbENvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRGMzJCQjFCMTRGQTg1RTgwMEY2
QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA1MDhhOTM3MDA0NjBm
MDEyMTEwOWQ1ZmVlMmE2OGVhOThmOTJkZmZmLi4zMDE0YTM0ODY3NzgxNGYyNzU3M2MxODBhZDgz
YWZlZjdhNmJhZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGUuaApAQCAtNTQsNiArNTQsMTIgQEAgcHVibGljOgogICAgICAgICB3ZWFrQ2xlYXIobV93
cmFwcGVyLCB3cmFwcGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgeworICAgICAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
RE9NLCBzaXplb2YoKnRoaXMpKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2Jq
ZWN0KG1fd3JhcHBlcik7CisgICAgfQorCiBwcml2YXRlOgogICAgIEpTQzo6V2VhazxKU0RPTVdy
YXBwZXI+IG1fd3JhcHBlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dFdyYXBwYWJsZS5oCmluZGV4IDg1MDk5NGFiYjcxZjJjZThhNDZkNWRmN2IzNTZhZThmNzgyY2Zh
YTYuLjQwZmJkZTg1ZTE0MWU1MzM0NDJjM2I1MmIyNTk5MjE4ZDgzYTQ1MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCkBAIC01Miw2ICs1MiwxMiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyV3JhcHBlcigpIHsgbV93cmFwcGVyID0gMDsgfQog
CisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2Jq
ZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSwgc2l6ZW9mKCp0aGlzKSk7CisgICAg
ICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50ZXIobV93cmFwcGVyLCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OkRPTSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+KiBtX3dyYXBwZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5
U2V0LmgKaW5kZXggNzRjZTA3OWE0NzMzMWY1ZTQyN2I1MWZlZTljZjBiYzM5NDk5NzUzOC4uYzFm
NWYyNjg3ZDU5NWNmZmU4YzlmMDVlMDM2MDc3NDAwZjk4ZjAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0
aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMTUsNiArMTE2LDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNob3dTdHlsZSgpOwogI2VuZGlmCiAgICAgCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRp
b246OkNTUywgc2l6ZW9mKCp0aGlzKSk7CisgICAgICAgIGlmIChtX2lzTXV0YWJsZSkKKyAgICAg
ICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50ZXIobV9tdXRhYmxlUHJvcGVydHlW
ZWN0b3IsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICB9CisKIHByaXZhdGU6CiAg
ICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2RlKTsKICAgICBTdHlsZVByb3BlcnR5U2V0
KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2Vy
TW9kZSwgYm9vbCBtYWtlTXV0YWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRl
eCBiZThjNzhlNGQ1ZjEwNTY3ZDRlNTU5YmFiZmJmZTYwZjkxNmZmZTNjLi5mOTRmMzM1OGQxNTli
YWNlMTUyZDdkNGZmODc2MGZiMjZjMjVkYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmgKQEAgLTk5LDYgKzk5LDE0IEBAIHB1YmxpYzoKICAgICBOb2RlKiB0cmF2ZXJzZU5leHROb2Rl
KCkgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKiBzdGF5V2l0
aGluKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5
T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSwg
c2l6ZW9mKCp0aGlzKSk7CisgICAgICAgIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9i
amVjdEluZm8pOworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQ
b2ludGVyKG1fZmlyc3RDaGlsZCk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydElu
c3RydW1lbnRlZFBvaW50ZXIobV9sYXN0Q2hpbGQpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAg
IENvbnRhaW5lck5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFp
bmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZGUzZjBjNWFmMTRlMDUwNmU2MTE1YzlmZGQ2
OTg4NjVhOWIzMDgzYi4uMmNiZGE4MDZlMGRkZjQ4Mzc5YTgwNmJjN2MzZDQ0NGIzYWI4ZDEwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC00MjEsNiArNDIxLDE0IEBAIHB1YmxpYzoKICAgICBJbnRT
aXplIHNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFNhdmVkTGF5
ZXJTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cisg
ICAgeworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6RE9NLCBzaXplb2YoKnRoaXMpKTsKKyAgICAgICAgQ29udGFpbmVyTm9k
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIG1lbW9yeU9i
amVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtX3RhZ05hbWUpOworICAgICAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlRGF0
YS5nZXQoKSk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlw
ZSkKICAgICAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCB0eXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCA4YjFiMzE4ZmU5OWRlNGIyMWU4ZmRm
NjE2YmVhMGU1OWJkMmVmZjM1Li45MzllMTgyNmVmYTY4YjJmYzg0MzVmMDQzYTJlNmE1NTJjZTkw
YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaApAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBFbGVtZW50QXR0cmlidXRlRGF0YV9oCiAKICNpbmNsdWRlICJB
dHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtOTksNiArMTAwLDE2IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPEF0dHI+IGF0dHJJZkV4aXN0cyhFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIFBhc3NSZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihFbGVtZW50KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5T2JqZWN0
SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSwgc2l6ZW9m
KCp0aGlzKSk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBv
aW50ZXIobV9pbmxpbmVTdHlsZURlY2wuZ2V0KCkpOworICAgICAgICBtZW1vcnlPYmplY3RJbmZv
LT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlU3R5bGUuZ2V0KCkpOworICAg
ICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9jbGFzc05hbWVzKTsKKyAgICAg
ICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1faWRGb3JTdHlsZVJlc29sdXRpb24p
OworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9hdHRyaWJ1dGVzKTsK
KyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEVsZW1lbnQ7CiAgICAgZnJpZW5k
IGNsYXNzIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUlu
c3RydW1lbnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZjQ1Mzc2MDk3NGEwOWM1OTgwMGE3YjgzMDBi
ZTEwNWZlYTBmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lbW9yeUluc3RydW1l
bnRhdGlvbl9oCisjZGVmaW5lIE1lbW9yeUluc3RydW1lbnRhdGlvbl9oCisKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CisKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRh
dGlvbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkgeyB9
CisKKyAgICBlbnVtIE9iamVjdFR5cGUgeworICAgICAgICBPdGhlciwKKyAgICAgICAgRE9NLAor
ICAgICAgICBDU1MsCisgICAgICAgIExhc3RUeXBlRW50cnkKKyAgICB9OworCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHZvaWQgcmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KGNvbnN0IFQmKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCByZXBvcnRPYmplY3QoY29uc3QgVCYpIHsg
fQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIHJlcG9ydEluc3RydW1lbnRlZFBvaW50
ZXIoY29uc3QgVCopOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIHJlcG9ydFBvaW50
ZXIoY29uc3QgVCogb2JqZWN0LCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCisgICAgeworICAgICAg
ICBpZiAoIW9iamVjdCB8fCB2aXNpdGVkKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBzaXplb2YoVCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKKworICAgIHZpcnR1
YWwgdm9pZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CisgICAgdmly
dHVhbCBib29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopID0gMDsKK307CisKK2NsYXNzIE1lbW9yeU9i
amVjdEluZm8geworcHVibGljOgorICAgIE1lbW9yeU9iamVjdEluZm8oTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgICAgIDogbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24obWVtb3J5SW5zdHJ1bWVudGF0aW9uKQorICAgICAgICAsIG1fb2JqZWN0VHlwZShN
ZW1vcnlJbnN0cnVtZW50YXRpb246Ok90aGVyKQorICAgICAgICAsIG1fb2JqZWN0U2l6ZSgwKQor
ICAgICB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgIHZvaWQgcmVwb3J0SW5z
dHJ1bWVudGVkUG9pbnRlcihjb25zdCBQKiBtZW1iZXJQb2ludGVyKQorICAgIHsKKyAgICAgICAg
bV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobWVtYmVy
UG9pbnRlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+CisgICAgdm9pZCBy
ZXBvcnRQb2ludGVyKGNvbnN0IFAqIHBvaW50ZXIsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2Jq
ZWN0VHlwZSBvYmplY3RUeXBlKQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPnJlcG9ydFBvaW50ZXIocG9pbnRlciwgb2JqZWN0VHlwZSk7CisgICAgfQorCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QoY29u
c3QgVCYgbWVtYmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtZW1iZXJPYmplY3QpOworICAgIH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0T2JqZWN0KGNvbnN0IFQmIG9i
amVjdCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0T2JqZWN0KG9iamVjdCk7IH0K
KworICAgIHZvaWQgcmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246Ok9iamVj
dFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IG9iamVjdFNpemUpCisgICAgeworICAgICAgICBpZiAo
bV9vYmplY3RUeXBlICE9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fb2JqZWN0VHlwZSA9IG9iamVjdFR5cGU7CisgICAgICAgIG1f
b2JqZWN0U2l6ZSA9IG9iamVjdFNpemU7CisgICAgfQorCisgICAgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFR5cGU7
IH0KKyAgICBzaXplX3Qgb2JqZWN0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U2l6ZTsg
fQorCisgcHJpdmF0ZToKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlwZSBtX29iamVj
dFR5cGU7CisgICAgc2l6ZV90IG1fb2JqZWN0U2l6ZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydEluc3RydW1lbnRlZFBvaW50
ZXIoY29uc3QgVCogY29uc3Qgb2JqZWN0KQoreworICAgIGlmICghb2JqZWN0IHx8IHZpc2l0ZWQo
b2JqZWN0KSkKKyAgICAgICAgcmV0dXJuOworICAgIE1lbW9yeU9iamVjdEluZm8gYWdncmVnYXRv
cih0aGlzKTsKKyAgICBvYmplY3QtPnJlcG9ydE1lbW9yeVVzYWdlKCZhZ2dyZWdhdG9yKTsKKyAg
ICBjb3VudE9iamVjdFNpemUoYWdncmVnYXRvci5vYmplY3RUeXBlKCksIGFnZ3JlZ2F0b3Iub2Jq
ZWN0U2l6ZSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgb2JqZWN0KQorewor
ICAgIGlmICh2aXNpdGVkKCZvYmplY3QpKQorICAgICAgICByZXR1cm47CisgICAgTWVtb3J5T2Jq
ZWN0SW5mbyBhZ2dyZWdhdG9yKHRoaXMpOworICAgIG9iamVjdC5yZXBvcnRNZW1vcnlVc2FnZSgm
YWdncmVnYXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFk
ZWZpbmVkKE1lbW9yeUluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDI0YzYx
NTg3N2YxMjBhNmJiNTYyYTUyZGE4Yzg0OGVmNTU3YzUzNzguLmYyNDMxZWVjZTA3MTE0Y2RkNzUz
MzU0YzFlMWE5MDg4Y2RkY2NlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI3ODUsNiArMjc4NSwx
NiBAQCB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAor
dm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAoreworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdEluZm8o
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00sIHNpemVvZigqdGhpcykpOworICAgIFRyZWVTaGFy
ZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdElu
Zm8pOworICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0
SW5mbyk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0UG9pbnRlcihtX2RvY3VtZW50LCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
SW5zdHJ1bWVudGVkUG9pbnRlcihtX25leHQpOworICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9y
dEluc3RydW1lbnRlZFBvaW50ZXIobV9wcmV2aW91cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGU4ZmRlMzAwMjA1OWZmMjcz
NTU4YTM3Yjg2ZWRlYzlmNzQxZmE1NWMuLmM5YzI2NzRkMjdjNWNjMWUzMDQ4ZjBmNTMwMzc3ZWMz
NjFkNjkxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiS1VSTEhhc2guaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlcy5o
IgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAi
VHJlZVNoYXJlZC5oIgpAQCAtNjQ4LDYgKzY0OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Nj
b3BlZEhUTUxTdHlsZUNoaWxkKCkgY29uc3Q7CiAgICAgc2l6ZV90IG51bWJlck9mU2NvcGVkSFRN
TFN0eWxlQ2hpbGRyZW4oKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZW51bSBOb2Rl
RmxhZ3MgewogICAgICAgICBJc1RleHRGbGFnID0gMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5oCmluZGV4IDYzNmIyYTUxNTBjOWU5ODdjMDI3ZTc1Njk3OTJkOWJhYzM0YTg5ZTkuLmZkZTRm
NGJlZTg4MTg1ZjczMTM5MzdhNjAzM2IyMzE4ZjBhMzIyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxp
ZmllZE5hbWUuaApAQCAtMjEsNiArMjEsOCBAQAogI2lmbmRlZiBRdWFsaWZpZWROYW1lX2gKICNk
ZWZpbmUgUXVhbGlmaWVkTmFtZV9oCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKKwogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTQ4LDYgKzUwLDE0
IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZXNwYWNlOwogICAg
ICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyBtX2xvY2FsTmFtZVVwcGVyOwogCisgICAgICAgIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2Jq
ZWN0SW5mbyhNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSwgc2l6ZW9mKCp0aGlzKSk7CisgICAg
ICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9wcmVmaXgpOworICAgICAg
ICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fbG9jYWxOYW1lKTsKKyAgICAg
ICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydE9iamVjdChtX25hbWVzcGFjZSk7CisgICAg
ICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9sb2NhbE5hbWVVcHBlcik7
CisgICAgICAgIH0KICAgICBwcml2YXRlOgogICAgICAgICBRdWFsaWZpZWROYW1lSW1wbChjb25z
dCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgOiBtX3ByZWZpeChw
cmVmaXgpCkBAIC05Miw2ICsxMDIsMTEgQEAgcHVibGljOgogICAgIC8vIEluaXQgcm91dGluZSBm
b3IgZ2xvYmFscwogICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKICAgICAKKyAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cisg
ICAgeworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6RE9NLCBzaXplb2YoKnRoaXMpKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0
SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlcihtX2ltcGwpOworICAgIH0KIHByaXZhdGU6
CiAgICAgdm9pZCBpbml0KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAg
IHZvaWQgcmVmKCkgY29uc3QgeyBtX2ltcGwtPnJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAwZmIyYWFjMzNhYTUx
MTVjNDFiYzUxMGEyMjkxODgwZTYxMGEzYTM0Li4wZDQwNDYwM2ViMmRkNjk0YmUxZmY1OTNkMzAz
ZjM2Yjg0Zjc0MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJNZW1vcnlVc2FnZVN1cHBvcnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgpAQCAtNzcsNiArNzgsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIgY2FjaGVkWHNsU3R5bGVT
aGVldHNbXSA9ICJDYWNoZWRYc2xTdHlsZVNoZWV0cyI7CiBzdGF0aWMgY29uc3QgY2hhciBjYWNo
ZWRGb250c1tdID0gIkNhY2hlZEZvbnRzIjsKIHN0YXRpYyBjb25zdCBjaGFyIHJlbmRlclRyZWVV
c2VkW10gPSAiUmVuZGVyVHJlZVVzZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgcmVuZGVyVHJlZUFs
bG9jYXRlZFtdID0gIlJlbmRlclRyZWVBbGxvY2F0ZWQiOworCitzdGF0aWMgY29uc3QgY2hhciBk
b21bXSA9ICJET00iOworc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZU90aGVyW10gPSAiRE9NVHJl
ZU90aGVyIjsKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVET01bXSA9ICJET01UcmVlRE9NIjsK
K3N0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVDU1NbXSA9ICJET01UcmVlQ1NTIjsKIH0KIAogbmFt
ZXNwYWNlIHsKQEAgLTE3NywxMCArMTgzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY29sbGVjdExp
c3RlbmVyc0luZm8obm9kZSk7CiAgICAgfQogCi0gICAgdm9pZCBjb2xsZWN0Q2hhcmFjdGVyRGF0
YShOb2RlKikKLSAgICB7Ci0gICAgfQotCiAgICAgdm9pZCBjb2xsZWN0Tm9kZU5hbWVJbmZvKE5v
ZGUqIG5vZGUpCiAgICAgewogICAgICAgICBTdHJpbmcgbmFtZSA9IG5vZGVOYW1lKG5vZGUpOwpA
QCAtMzcyLDEzICszNzQsOTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IHJlbmRlclRyZWVJbmZvKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIHJlbmRlclRyZWVBbGxv
Y2F0ZWQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRNZW1vcnlCbG9ja0ZvcihUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBhcnJheSwgY29uc3QgTWVtb3J5
Q2FjaGU6OlR5cGVTdGF0aXN0aWMmIHN0YXRpc3RpYywgY29uc3QgY2hhciogbmFtZSkKK3N0YXRp
YyB2b2lkIGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4qIGFycmF5LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IHJlc3VsdCA9IEluc3BlY3Rvck1lbW9yeUJsb2Nr
OjpjcmVhdGUoKS5zZXROYW1lKG5hbWUpOwotICAgIHJlc3VsdC0+c2V0U2l6ZShzdGF0aXN0aWMu
c2l6ZSk7CisgICAgcmVzdWx0LT5zZXRTaXplKHNpemUpOwogICAgIGFycmF5LT5hZGRJdGVtKHJl
c3VsdCk7CiB9CiAKK25hbWVzcGFjZSB7CisKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbklt
cGwgOiBwdWJsaWMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIHsKK3B1YmxpYzoKKyAgICBNZW1vcnlJ
bnN0cnVtZW50YXRpb25JbXBsKCkKKyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
TGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICAgICAgbV90b3RhbFNpemVzW2ldID0gMDsKKyAg
ICB9CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkdW1wU3RhdGlzdGlj
cygpCisgICAgeworICAgICAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAgICAgICAgZm9yIChp
bnQgaSA9IE90aGVyOyBpIDwgTGFzdFR5cGVFbnRyeTsgKytpKQorICAgICAgICAgICAgdG90YWxT
aXplICs9IG1fdG90YWxTaXplc1tpXTsKKworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGRvbUNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7CisgICAgICAgIGFkZE1lbW9yeUJs
b2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbT3RoZXJdLCBNZW1vcnlCbG9j
a05hbWU6OmRvbVRyZWVPdGhlcik7CisgICAgICAgIGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxk
cmVuLmdldCgpLCBtX3RvdGFsU2l6ZXNbRE9NXSwgTWVtb3J5QmxvY2tOYW1lOjpkb21UcmVlRE9N
KTsKKyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxT
aXplc1tDU1NdLCBNZW1vcnlCbG9ja05hbWU6OmRvbVRyZWVDU1MpOworCisgICAgICAgIFJlZlB0
cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZG9tID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0
ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpkb20pOworICAgICAgICBkb20tPnNldFNpemUo
dG90YWxTaXplKTsKKyAgICAgICAgZG9tLT5zZXRDaGlsZHJlbihkb21DaGlsZHJlbi5yZWxlYXNl
KCkpOworICAgICAgICByZXR1cm4gZG9tLnJlbGVhc2UoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNp
emVfdCBzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9iamVjdFR5cGUgPj0gMCAmJiBvYmpl
Y3RUeXBlIDwgTGFzdFR5cGVFbnRyeSk7CisgICAgICAgIG1fdG90YWxTaXplc1tvYmplY3RUeXBl
XSArPSBzaXplOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCB2aXNpdGVkKGNvbnN0IHZvaWQq
IG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiAhbV92aXNpdGVkT2JqZWN0cy5hZGQob2Jq
ZWN0KS5pc05ld0VudHJ5OworICAgIH0KKyAgICBzaXplX3QgbV90b3RhbFNpemVzW0xhc3RUeXBl
RW50cnldOworICAgIHR5cGVkZWYgSGFzaFNldDxjb25zdCB2b2lkKj4gVmlzaXRlZE9iamVjdHM7
CisgICAgVmlzaXRlZE9iamVjdHMgbV92aXNpdGVkT2JqZWN0czsKK307CisKK2NsYXNzIERPTVRy
ZWVzSXRlcmF0b3IgOiBwdWJsaWMgRE9NV3JhcHBlclZpc2l0b3IgeworcHVibGljOgorICAgIERP
TVRyZWVzSXRlcmF0b3IoUGFnZSogcGFnZSkgOiBtX3BhZ2UocGFnZSkgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXROb2RlKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS0+
ZG9jdW1lbnQoKSAmJiBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIG1fcGFnZSAhPSBub2Rl
LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgbV9kb21NZW1vcnlVc2FnZS5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG5vZGUpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmcoU3RyaW5nSW1w
bCopIHsgfQorCisgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZHVtcFN0YXRp
c3RpY3MoKSB7IHJldHVybiBtX2RvbU1lbW9yeVVzYWdlLmR1bXBTdGF0aXN0aWNzKCk7IH0KKwor
cHJpdmF0ZToKKyAgICBQYWdlKiBtX3BhZ2U7CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1w
bCBtX2RvbU1lbW9yeVVzYWdlOworfTsKKworfQorCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4gZG9tVHJlZUluZm8oUGFnZSogcGFnZSkKK3sKKyAgICBET01UcmVlc0l0
ZXJhdG9yIGRvbVRyZWVzSXRlcmF0b3IocGFnZSk7CisgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0
SlNET01XcmFwcGVycygmZG9tVHJlZXNJdGVyYXRvcik7CisKKyAgICAvLyBNYWtlIHN1cmUgYWxs
IGRvY3VtZW50cyByZWFjaGFibGUgZnJvbSB0aGUgbWFpbiBmcmFtZSBhcmUgYWNjb3VudGVkLgor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChEb2N1bWVudCog
ZG9jID0gZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb21UcmVlc0l0ZXJhdG9yLnZp
c2l0Tm9kZShkb2MpOworICAgIH0KKworICAgIHJldHVybiBkb21UcmVlc0l0ZXJhdG9yLmR1bXBT
dGF0aXN0aWNzKCk7Cit9CisKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiBtZW1vcnlDYWNoZUluZm8oKQogewogICAgIE1lbW9yeUNhY2hlOjpTdGF0aXN0aWNzIHN0YXRz
ID0gbWVtb3J5Q2FjaGUoKS0+Z2V0U3RhdGlzdGljcygpOwpAQCAtMzkxLDEyICs0NzMsMTIgQEAg
c3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygp
CiAgICAgbWVtb3J5Q2FjaGVTdGF0cy0+c2V0U2l6ZSh0b3RhbFNpemUpOwogCiAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwotICAgIGFk
ZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5pbWFnZXMsIE1lbW9yeUJsb2Nr
TmFtZTo6Y2FjaGVkSW1hZ2VzKTsKLSAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQo
KSwgc3RhdHMuY3NzU3R5bGVTaGVldHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3NzU3R5bGVT
aGVldHMpOwotICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5zY3Jp
cHRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFNjcmlwdHMpOwotICAgIGFkZE1lbW9yeUJsb2Nr
Rm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy54c2xTdHlsZVNoZWV0cywgTWVtb3J5QmxvY2tOYW1l
OjpjYWNoZWRYc2xTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4u
Z2V0KCksIHN0YXRzLmZvbnRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZEZvbnRzKTsKLSAgICBt
ZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgYWRkTWVtb3J5Qmxv
Y2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmltYWdlcy5zaXplLCBNZW1vcnlCbG9ja05hbWU6
OmNhY2hlZEltYWdlcyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0
YXRzLmNzc1N0eWxlU2hlZXRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkQ3NzU3R5bGVT
aGVldHMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5zY3Jp
cHRzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkU2NyaXB0cyk7CisgICAgYWRkTWVtb3J5
QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhzbFN0eWxlU2hlZXRzLnNpemUsIE1lbW9y
eUJsb2NrTmFtZTo6Y2FjaGVkWHNsU3R5bGVTaGVldHMpOworICAgIGFkZE1lbW9yeUJsb2NrRm9y
KGNoaWxkcmVuLmdldCgpLCBzdGF0cy5mb250cy5zaXplLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hl
ZEZvbnRzKTsKKyAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5nZXQo
KSk7CiAgICAgcmV0dXJuIG1lbW9yeUNhY2hlU3RhdHMucmVsZWFzZSgpOwogfQogCkBAIC00MTMs
NiArNDk1LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURp
c3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAgICBjaGlsZHJlbi0+YWRkSXRl
bShpbnNwZWN0b3JEYXRhKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKG1lbW9yeUNhY2hlSW5m
bygpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShyZW5kZXJUcmVlSW5mbyhtX3BhZ2UpKTsgLy8g
VE9ETzogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPworICAgIGNoaWxkcmVuLT5hZGRJdGVtKGRvbVRy
ZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgcHJv
Y2Vzc01lbW9yeS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UcmVlU2hhcmVkLmgKaW5kZXggMmViZGIxZDFjNTk3OGQxZjBjN2VmMzJmZGNiNGRjMzYwZmZj
NTJmNC4uODFkZWNhNjIxNGQ0Mzc2MDM2ZDc0Njg4NTU4MDdmMTJiODk4NWUzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtMTExLDYgKzExMSwxMiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbjsKICNlbmRpZgogCisgICAgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAorICAgIHsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyhNZW1v
cnlJbnN0cnVtZW50YXRpb246OkRPTSwgc2l6ZW9mKCp0aGlzKSk7CisgICAgICAgIG1lbW9yeU9i
amVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9wYXJlbnQpOworICAgIH0KKwog
cHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJpZW5kIHZvaWQgYWRvcHRlZDw+KFRyZWVT
aGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCBkZjU4
Nzk0Mzk0NTkzZGMwYmRlZGRhYmM1OWE1YjVmOWVmODg0OTQ5Li4zOWE5NDhmNTRhMjk5ZTkwOTcw
NjFjMDgxNTk1YTQxMmNlNTU4MzcwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5n
ZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTA2LTIyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUg
bWVtb3J5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk1NjgKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNs
YXNzIHRoYXQgY291bnRzIGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJl
cG9ydE1lbW9yeVVzYWdlIGlmIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgc3VjaCBtZXRob2QuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sOgorCiAyMDEyLTA2LTIxICBLZW50YXJvIEhh
cmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBwZXJmLXRlc3QgZm9y
IGlubmVySFRNTCBzZXR0ZXIgZm9yIGEgbGFyZ2UgRE9NIHRyZWUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbCBiL1BlcmZv
cm1hbmNlVGVzdHMvaW5zcGVjdG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbAppbmRleCAy
YWUwNWJhNTdmNzViNGVmM2E4ODY3Yjg3ZTMzZDQ1MGExMDRkMjU5Li4zODY1M2E3NDIyNDk3MmU0
MDliZWNjMWUzZmIwNDQ3ZTc5YWE1MmMwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2lu
c3BlY3Rvci9uYXRpdmUtbWVtb3J5LXNuYXBzaG90Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9pbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1zbmFwc2hvdC5odG1sCkBAIC0xLDUgKzEsMTcgQEAK
IDxodG1sPgogPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgc3BhbiB7Cisg
ICAgICBjb2xvcjpyZWQ7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDIwcHg7
CisgICAgfQorICAgIGRpdiB7CisgICAgICBjb2xvcjpibHVlOworICAgICAgd2lkdGg6IDUwcHg7
CisgICAgICBoZWlnaHQ6IDEwcHg7CisgICAgfQorICA8L3N0eWxlPgogICA8c2NyaXB0IHNyYz0i
Li4vLi4vTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgogICA8c2NyaXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgpAQCAtMzksOCArNTEsMTIgQEAgZnVuY3Rpb24gY3JlYXRlRE9NVHJlZShlbGVt
ZW50c0NvdW50KQogewogICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3RUcmVlUm9vdCIpOwogCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyAr
K2kpCi0gICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzQ291bnQ7ICsraSkgeworICAg
ICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAg
c3Bhbi5pZCA9ICJzcGFuXyIgKyBpOworICAgICAgICBzcGFuLnN0eWxlLndpZHRoID0gIjEwcHgi
OworICAgICAgICByb290LmFwcGVuZENoaWxkKHNwYW4pOworICAgIH0KIAogICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZWxlbWVudHNDb3VudDsgKytpKQogICAgICAgICByb290LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149018</attachid>
            <date>2012-06-22 06:56:15 -0700</date>
            <delta_ts>2012-06-22 07:05:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89568-20120622175613.patch</filename>
            <type>text/plain</type>
            <size>31479</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI0ZGFkMzczNWUxZjMz
NzZkZjAwNTZiZjM0NDJlMTZmZDE3MTExYi4uY2M4NWY3ZjBmOGRlYmVmZWE3YWQ0YTVkNzU4MTBl
NzRlNzEyNjdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA2LTIyICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBwYXJ0aWFsbHkgaW5zdHJ1bWVudCBET00gVHJlZSBuYXRpdmUgbWVtb3J5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1NjgKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIGNsYXNzIHRoYXQgY291bnRz
IGFsbCB2aXNpdGVkCisgICAgICAgIG9iamVjdHMgYW5kIGNhbGxzIHJlcG9ydE1lbW9yeVVzYWdl
IGZvciB0aGUgaW5zdHJ1bWVudGVkIGNsYXNzZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRXcmFw
cGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBjc3MvU3R5bGVQ
cm9wZXJ0eVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcG9y
dE1lbW9yeVVzYWdlKToKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9F
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZXBvcnRNZW1vcnlV
c2FnZSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgICogZG9tL01l
bW9yeUluc3RydW1lbnRhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6fk1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydFBvaW50ZXIpOgorICAgICAgICAoTWVtb3J5T2Jq
ZWN0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpNZW1vcnlPYmpl
Y3RJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86OnJlcG9ydEluc3Ry
dW1lbnRlZFBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6cmVw
b3J0UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpyZXBvcnRJ
bnN0cnVtZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6
cmVwb3J0T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86OnJlcG9y
dE9iamVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5T2JqZWN0SW5mbzo6b2JqZWN0
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZvOjpvYmplY3RTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0SW5zdHJ1bWVu
dGVkUG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OnJl
cG9ydEluc3RydW1lbnRlZE9iamVjdCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRvbS9R
dWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpRdWFsaWZp
ZWROYW1lSW1wbDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlm
aWVkTmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRNZW1vcnlCbG9ja0Zvcik6CisgICAgICAg
IChXZWJDb3JlOjpkb21UcmVlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjptZW1vcnlDYWNoZUlu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NN
ZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KFRyZWVTaGFyZWQpOgorCiAyMDEyLTA2LTIxICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgc2VwYXJhdGUgc2Ny
aXB0IGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCA3OGFiOTFjODM1YjFhOGUzOGRiMGQ5M2VlMTU0MWFhMDU0ZjAzMzYxLi44OTg4OTlj
Y2E3MjI0NzU0ZGU4ZTA0MDNhZmE2YjQwYzA2MTZmZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTE5MDcsNiArMTkwNyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
S2V5Ym9hcmRFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VDaGFubmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IGIyNTIwZWIxYjFhNzY2ZDFjYjM0ZDk0ZTdjNjJjYjA1MjliMWQ4ODEu
LjY5YTZiYjQ2NmVkOWViMzVmNjg2NzQxYTRkMGY5NTU4ZjYyMTZmMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpA
QCAtMTc0NSw2ICsxNzQ1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUu
aCBcCiAgICAgZG9tL0ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIFwKICAgICBkb20vS2V5
Ym9hcmRFdmVudC5oIFwKKyAgICBkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIGRv
bS9NZXNzYWdlQ2hhbm5lbC5oIFwKICAgICBkb20vTWVzc2FnZUV2ZW50LmggXAogICAgIGRvbS9N
ZXNzYWdlUG9ydENoYW5uZWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDNiNmVhNjhlYmRiYzQ4
MWVkMDFmMmQ5MDAxYWI0YjNmODEwODM1Ni4uMmI0ZjE4MmY2ODM1OTQ1ZDIxNzZlY2I4YTUzZWNl
ODI3M2FlYWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTM0Miw2ICs1MzQyLDcgQEAKICAgICAg
ICAgICAgICdkb20vSWNvblVSTC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmgnLAog
ICAgICAgICAgICAgJ2RvbS9LZXlib2FyZEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnZG9tL01l
bW9yeUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwu
Y3BwJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUNoYW5uZWwuaCcsCiAgICAgICAgICAgICAn
ZG9tL01lc3NhZ2VFdmVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagppbmRleCBlZWQ4NTQxOTcyZmFhYzgxOTE0OTEwZjQ2ZjUwMTUxZDM4MWNl
YTdjLi44NTY2YTA4ZmFjNTI5NjUwMWIzNmRhMjI5N2FkMGE1YWNiYjcyYzczIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTExOTEsNiArNTEx
OTEsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cTWVzc2FnZUNoYW5uZWwuY3BwIgogCQkJCT4K
IAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYWNiMGNiMDA1NDhhMjljMjk1NjYxNDA2NTM1
ZmVjZjU3MTQ5MDhlLi5kYWM0NTU4M2U3ZjBkYTA5MmYwMDgwMjU2MDlhNjYxYTkxMjdjODFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNDI4LDYgKzE0MjgsNyBAQAogCQk0RjE1MzRERTExQjUzMkVDMDAyMUZEODYgLyogRWRp
dGluZ0JlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0RjE1MzRERDExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYxNTM0RTAxMUI1
MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyog
RWRpdGluZ0JlaGF2aW9yVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQy
MDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFB
MyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYyRDIwNTMxMkVB
RTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCAqLzsgfTsKIAkJNEYzMjg5QjUxMUE0
MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlCMzExQTQyQUFCMDA1QUJFN0UgLyogSW5z
cGVjdG9yVmFsdWVzLmNwcCAqLzsgfTsKIAkJNEYzMjg5QjYxMUE0MkFBQjAwNUFCRTdFIC8qIElu
c3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NTAxLDYgKzg1
MDIsNyBAQAogCQk0RjE1MzRERDExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjE1MzRERjExQjUzMzAyMDAyMUZEODYgLyogRWRp
dGluZ0JlaGF2aW9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRp
dGluZ0JlaGF2aW9yVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIw
NTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3
NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNwZWN0b3JBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRG
MzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3Rv
clZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JWYWx1
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDE0LDYgKzIxNDE2LDcgQEAK
IAkJCQlCQzlBNjE0NDE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9kb21fZXhjZXB0aW9ucy5wbCAq
LywKIAkJCQlCQzlBNjE0NTE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9ldmVudF9mYWN0b3J5LnBs
ICovLAogCQkJCUJDOUE2MTQ2MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX25hbWVzLnBsICovLAor
CQkJCTRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAq
LywKIAkJCQlFMUFERUNDRDBFNzZBRDhCMDA0QTFBNUUgLyogTWVzc2FnZUNoYW5uZWwuY3BwICov
LAogCQkJCUUxQURFQ0NDMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5oICovLAog
CQkJCUUxQURFQ0QwMEU3NkFEQUIwMDRBMUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5pZGwgKi8sCkBA
IC0yNTE0Miw2ICsyNTE0NSw3IEBACiAJCQkJQ0U3QjJEQjMxNTg2QUJBRDAwOThCM0ZBIC8qIEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3QjJEQjUx
NTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTA5ODdDMjcxNTdENjc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckdsb2JhbENv
bnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFBMyAvKiBN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA1MDhhOTM3MDA0NjBmMDEyMTEwOWQ1
ZmVlMmE2OGVhOThmOTJkZmZmLi4yZDkyYmI0NTViMzIyODIzYmU2ZTEwNDAyMmU3MTUyZGU4MWQ4
OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFi
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaApA
QCAtNTQsNiArNTQsMTIgQEAgcHVibGljOgogICAgICAgICB3ZWFrQ2xlYXIobV93cmFwcGVyLCB3
cmFwcGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlPYmpl
Y3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9N
KTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1fd3JhcHBlcik7Cisg
ICAgfQorCiBwcml2YXRlOgogICAgIEpTQzo6V2VhazxKU0RPTVdyYXBwZXI+IG1fd3JhcHBlcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFi
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCmluZGV4
IDg1MDk5NGFiYjcxZjJjZThhNDZkNWRmN2IzNTZhZThmNzgyY2ZhYTYuLjFjMjgyMzIxNjE1YWRm
ODg2MTc5NDhlYjNiMjA3NTBkNzBmYzlkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdFdyYXBwYWJsZS5oCkBAIC01Miw2ICs1MiwxMiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyV3JhcHBlcigpIHsgbV93cmFwcGVyID0gMDsgfQogCisgICAgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAg
IHsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9y
dFBvaW50ZXIobV93cmFwcGVyLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgfQor
CiBwcml2YXRlOgogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KiBtX3dyYXBwZXI7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKaW5kZXggNzRjZTA3OWE0NzMzMWY1
ZTQyN2I1MWZlZTljZjBiYzM5NDk5NzUzOC4uNTU5Y2ZlNjYxZDg3MDMwN2Y1Y2JiOGFmYTZhZTk0
NzkxNDQ0NzJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0x
MTUsNiArMTE2LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dTdHlsZSgpOwogI2VuZGlmCiAg
ICAgCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0
T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgICAgIGlm
IChtX2lzTXV0YWJsZSkKKyAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydFBvaW50
ZXIobV9tdXRhYmxlUHJvcGVydHlWZWN0b3IsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsK
KyAgICB9CisKIHByaXZhdGU6CiAgICAgU3R5bGVQcm9wZXJ0eVNldChDU1NQYXJzZXJNb2RlKTsK
ICAgICBTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNp
Z25lZCBjb3VudCwgQ1NTUGFyc2VyTW9kZSwgYm9vbCBtYWtlTXV0YWJsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuaAppbmRleCBiZThjNzhlNGQ1ZjEwNTY3ZDRlNTU5YmFiZmJmZTYwZjkx
NmZmZTNjLi41ZjU1YzdiZWI0OGQwNDIyMmE1NjA3MWE1ZGE5MDc3YjIyMTlmMjVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTk5LDYgKzk5LDE0IEBAIHB1YmxpYzoKICAgICBO
b2RlKiB0cmF2ZXJzZU5leHROb2RlKCkgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VOZXh0Tm9k
ZShjb25zdCBOb2RlKiBzdGF5V2l0aGluKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAor
ICAgIHsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgICAgIE5vZGU6OnJlcG9ydE1lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJ
bnN0cnVtZW50ZWRQb2ludGVyKG1fZmlyc3RDaGlsZCk7CisgICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobV9sYXN0Q2hpbGQpOworICAgIH0KKwogcHJv
dGVjdGVkOgogICAgIENvbnRhaW5lck5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0g
Q3JlYXRlQ29udGFpbmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggZGUzZjBjNWFmMTRlMDUw
NmU2MTE1YzlmZGQ2OTg4NjVhOWIzMDgzYi4uNmM1MmE2MDNjYWE4YjkxN2IyOGUwMzZlZDgzZTA2
ZDU1Y2VlMDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00MjEsNiArNDIxLDE0IEBAIHB1Ymxp
YzoKICAgICBJbnRTaXplIHNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoKSBjb25zdDsKICAgICB2b2lk
IHNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYpOwogCisgICAgdmlydHVh
bCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJ
bmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgQ29udGFpbmVy
Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIG1lbW9y
eU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZE9iamVjdChtX3RhZ05hbWUpOworICAgICAg
ICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRl
RGF0YS5nZXQoKSk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUg
dHlwZSkKICAgICAgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCB0eXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCA4YjFiMzE4ZmU5OWRlNGIyMWU4
ZmRmNjE2YmVhMGU1OWJkMmVmZjM1Li45MGYxYjkxZGYwZjU1NDcwZjY3MWQ0NDQ2NDQwNjMyMzFk
Zjg1OTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaApAQCAt
MjcsNiArMjcsNyBAQAogI2RlZmluZSBFbGVtZW50QXR0cmlidXRlRGF0YV9oCiAKICNpbmNsdWRl
ICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgog
I2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgpAQCAtOTksNiArMTAwLDE2IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPEF0dHI+IGF0dHJJZkV4aXN0cyhFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIFBhc3NSZWZQdHI8QXR0cj4gZW5zdXJlQXR0cihFbGVtZW50KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgbWVtb3J5T2Jq
ZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkRP
TSk7CisgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIo
bV9pbmxpbmVTdHlsZURlY2wuZ2V0KCkpOworICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRJbnN0cnVtZW50ZWRQb2ludGVyKG1fYXR0cmlidXRlU3R5bGUuZ2V0KCkpOworICAgICAgICBt
ZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9jbGFzc05hbWVzKTsKKyAgICAgICAgbWVt
b3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0KG1faWRGb3JTdHlsZVJlc29sdXRpb24pOworICAg
ICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3QobV9hdHRyaWJ1dGVzKTsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEVsZW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNz
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01l
bW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1l
bnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMGU3YTQ3MGZlMWJhNDAyZDA1YWM1ZGFlNjcxODFjMmUy
ODU1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lbW9yeUluc3RydW1lbnRhdGlv
bl9oCisjZGVmaW5lIE1lbW9yeUluc3RydW1lbnRhdGlvbl9oCisKKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lbW9yeU9iamVjdEluZm87CisKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbiB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+TWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkgeyB9CisKKyAg
ICBlbnVtIE9iamVjdFR5cGUgeworICAgICAgICBPdGhlciwKKyAgICAgICAgRE9NLAorICAgICAg
ICBDU1MsCisgICAgICAgIExhc3RUeXBlRW50cnkKKyAgICB9OworCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHZvaWQgcmVwb3J0SW5zdHJ1bWVudGVkT2JqZWN0KGNvbnN0IFQmKTsKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCByZXBvcnRPYmplY3QoY29uc3QgVCYpIHsgfQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIHJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIoY29u
c3QgVCopOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIHJlcG9ydFBvaW50ZXIoY29u
c3QgVCogb2JqZWN0LCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCisgICAgeworICAgICAgICBpZiAo
IW9iamVjdCB8fCB2aXNpdGVkKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBzaXplb2YoVCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKKworICAgIHZpcnR1YWwgdm9p
ZCBjb3VudE9iamVjdFNpemUoT2JqZWN0VHlwZSwgc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHZpc2l0ZWQoY29uc3Qgdm9pZCopID0gMDsKK307CisKK2NsYXNzIE1lbW9yeU9iamVjdElu
Zm8geworcHVibGljOgorICAgIE1lbW9yeU9iamVjdEluZm8oTWVtb3J5SW5zdHJ1bWVudGF0aW9u
KiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCisgICAgICAgIDogbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24obWVtb3J5SW5zdHJ1bWVudGF0aW9uKQorICAgICAgICAsIG1fb2JqZWN0VHlwZShNZW1vcnlJ
bnN0cnVtZW50YXRpb246Ok90aGVyKQorICAgICAgICAsIG1fb2JqZWN0U2l6ZSgwKQorICAgICB7
IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgorICAgIHZvaWQgcmVwb3J0SW5zdHJ1bWVu
dGVkUG9pbnRlcihjb25zdCBQKiBtZW1iZXJQb2ludGVyKQorICAgIHsKKyAgICAgICAgbV9tZW1v
cnlJbnN0cnVtZW50YXRpb24tPnJlcG9ydEluc3RydW1lbnRlZFBvaW50ZXIobWVtYmVyUG9pbnRl
cik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFA+CisgICAgdm9pZCByZXBvcnRQ
b2ludGVyKGNvbnN0IFAqIHBvaW50ZXIsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T2JqZWN0VHlw
ZSBvYmplY3RUeXBlKQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJl
cG9ydFBvaW50ZXIocG9pbnRlciwgb2JqZWN0VHlwZSk7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZXBvcnRJbnN0cnVtZW50ZWRPYmplY3QoY29uc3QgVCYg
bWVtYmVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPnJl
cG9ydEluc3RydW1lbnRlZE9iamVjdChtZW1iZXJPYmplY3QpOworICAgIH0KKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0T2JqZWN0KGNvbnN0IFQmIG9iamVjdCkg
eyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+cmVwb3J0T2JqZWN0KG9iamVjdCk7IH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVwb3J0T2JqZWN0SW5mbyhjb25zdCBU
KiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RUeXBlIG9iamVjdFR5cGUpCisgICAgewor
ICAgICAgICBpZiAobV9vYmplY3RUeXBlICE9IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3RoZXIp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fb2JqZWN0VHlwZSA9IG9iamVjdFR5cGU7
CisgICAgICAgIG1fb2JqZWN0U2l6ZSA9IHNpemVvZihUKTsKKyAgICB9CisKKyAgICBNZW1vcnlJ
bnN0cnVtZW50YXRpb246Ok9iamVjdFR5cGUgb2JqZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b2JqZWN0VHlwZTsgfQorICAgIHNpemVfdCBvYmplY3RTaXplKCkgY29uc3QgeyByZXR1cm4gbV9v
YmplY3RTaXplOyB9CisKKyBwcml2YXRlOgorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9t
ZW1vcnlJbnN0cnVtZW50YXRpb247CisgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RU
eXBlIG1fb2JqZWN0VHlwZTsKKyAgICBzaXplX3QgbV9vYmplY3RTaXplOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0SW5zdHJ1
bWVudGVkUG9pbnRlcihjb25zdCBUKiBjb25zdCBvYmplY3QpCit7CisgICAgaWYgKCFvYmplY3Qg
fHwgdmlzaXRlZChvYmplY3QpKQorICAgICAgICByZXR1cm47CisgICAgTWVtb3J5T2JqZWN0SW5m
byBtZW1vcnlPYmplY3RJbmZvKHRoaXMpOworICAgIG9iamVjdC0+cmVwb3J0TWVtb3J5VXNhZ2Uo
Jm1lbW9yeU9iamVjdEluZm8pOworICAgIGNvdW50T2JqZWN0U2l6ZShtZW1vcnlPYmplY3RJbmZv
Lm9iamVjdFR5cGUoKSwgbWVtb3J5T2JqZWN0SW5mby5vYmplY3RTaXplKCkpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydEluc3Ry
dW1lbnRlZE9iamVjdChjb25zdCBUJiBvYmplY3QpCit7CisgICAgaWYgKHZpc2l0ZWQoJm9iamVj
dCkpCisgICAgICAgIHJldHVybjsKKyAgICBNZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdElu
Zm8odGhpcyk7CisgICAgb2JqZWN0LnJlcG9ydE1lbW9yeVVzYWdlKCZtZW1vcnlPYmplY3RJbmZv
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIWRlZmluZWQoTWVt
b3J5SW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMjRjNjE1ODc3ZjEyMGE2
YmI1NjJhNTJkYThjODQ4ZWY1NTdjNTM3OC4uNzQ0NmNmYTA0MDExMzJkOTZjNGU3NTY2MzFkNDNl
NWE4NGJlNmVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjc4NSw2ICsyNzg1LDE2IEBAIHZvaWQg
Tm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCit2b2lkIE5vZGU6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0T2JqZWN0SW5mbyh0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkRPTSk7CisgICAgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJO
b2RlPjo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgU2NyaXB0V3Jh
cHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBtZW1vcnlP
YmplY3RJbmZvLT5yZXBvcnRQb2ludGVyKG1fZG9jdW1lbnQsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6RE9NKTsKKyAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVy
KG1fbmV4dCk7CisgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRl
cihtX3ByZXZpb3VzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaWZuZGVmIE5E
RUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggZThmZGUzMDAyMDU5ZmYyNzM1NThhMzdiODZlZGVjOWY3NDFm
YTU1Yy4uYzljMjY3NGQyN2M1Y2MxZTMwNDhmMGY1MzAzNzdlYzM2MWQ2OTFiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRl
ICJLVVJMSGFzaC5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCisjaW5jbHVkZSAiTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNp
bmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUcmVlU2hhcmVkLmgiCkBAIC02
NDgsNiArNjQ5LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQo
KSBjb25zdDsKICAgICBzaXplX3QgbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbigpIGNv
bnN0OwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBlbnVtIE5vZGVGbGFncyB7CiAgICAgICAgIElz
VGV4dEZsYWcgPSAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKaW5kZXggNjM2YjJhNTE1
MGM5ZTk4N2MwMjdlNzU2OTc5MmQ5YmFjMzRhODllOS4uMTkwN2I4Nzc0YjY3Y2UxOTA4NWU5Y2E2
Y2Y1ZDM5ZmQ0YzNiNDc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmll
ZE5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCkBAIC0yMSw2
ICsyMSw4IEBACiAjaWZuZGVmIFF1YWxpZmllZE5hbWVfaAogI2RlZmluZSBRdWFsaWZpZWROYW1l
X2gKIAorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorCiAjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNDgsNiArNTAsMTQgQEAgcHVibGljOgogICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2U7CiAgICAgICAgIG11dGFibGUgQXRvbWlj
U3RyaW5nIG1fbG9jYWxOYW1lVXBwZXI7CiAKKyAgICAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJl
cG9ydE9iamVjdChtX3ByZWZpeCk7CisgICAgICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBv
cnRPYmplY3QobV9sb2NhbE5hbWUpOworICAgICAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVw
b3J0T2JqZWN0KG1fbmFtZXNwYWNlKTsKKyAgICAgICAgICAgIG1lbW9yeU9iamVjdEluZm8tPnJl
cG9ydE9iamVjdChtX2xvY2FsTmFtZVVwcGVyKTsKKyAgICAgICAgfQogICAgIHByaXZhdGU6CiAg
ICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkpCiAgICAgICAgICAgICA6IG1fcHJlZml4KHByZWZpeCkKQEAgLTkyLDYgKzEwMiwxMSBAQCBw
dWJsaWM6CiAgICAgLy8gSW5pdCByb3V0aW5lIGZvciBnbG9iYWxzCiAgICAgc3RhdGljIHZvaWQg
aW5pdCgpOwogICAgIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKKyAgICB7CisgICAgICAgIG1lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydE9iamVjdEluZm8odGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpET00pOwor
ICAgICAgICBtZW1vcnlPYmplY3RJbmZvLT5yZXBvcnRJbnN0cnVtZW50ZWRQb2ludGVyKG1faW1w
bCk7CisgICAgfQogcHJpdmF0ZToKICAgICB2b2lkIGluaXQoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSk7CiAgICAgdm9pZCByZWYoKSBjb25zdCB7IG1faW1wbC0+cmVmKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
CmluZGV4IDBmYjJhYWMzM2FhNTExNWM0MWJjNTEwYTIyOTE4ODBlNjEwYTNhMzQuLmUzOTY1NDIx
YTliNDk0OWU4NGE3YTczYjhmYTc1ZjAxODkwM2I5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNDQsNiArNDQsNyBAQAog
I2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIk1lbW9yeVVzYWdlU3VwcG9ydC5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC03Nyw2ICs3OCwxMSBAQCBzdGF0aWMgY29uc3Qg
Y2hhciBjYWNoZWRYc2xTdHlsZVNoZWV0c1tdID0gIkNhY2hlZFhzbFN0eWxlU2hlZXRzIjsKIHN0
YXRpYyBjb25zdCBjaGFyIGNhY2hlZEZvbnRzW10gPSAiQ2FjaGVkRm9udHMiOwogc3RhdGljIGNv
bnN0IGNoYXIgcmVuZGVyVHJlZVVzZWRbXSA9ICJSZW5kZXJUcmVlVXNlZCI7CiBzdGF0aWMgY29u
c3QgY2hhciByZW5kZXJUcmVlQWxsb2NhdGVkW10gPSAiUmVuZGVyVHJlZUFsbG9jYXRlZCI7CisK
K3N0YXRpYyBjb25zdCBjaGFyIGRvbVtdID0gIkRPTSI7CitzdGF0aWMgY29uc3QgY2hhciBkb21U
cmVlT3RoZXJbXSA9ICJET01UcmVlT3RoZXIiOworc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZURP
TVtdID0gIkRPTVRyZWVET00iOworc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZUNTU1tdID0gIkRP
TVRyZWVDU1MiOwogfQogCiBuYW1lc3BhY2UgewpAQCAtMTc3LDEwICsxODMsNiBAQCBwcml2YXRl
OgogICAgICAgICBjb2xsZWN0TGlzdGVuZXJzSW5mbyhub2RlKTsKICAgICB9CiAKLSAgICB2b2lk
IGNvbGxlY3RDaGFyYWN0ZXJEYXRhKE5vZGUqKQotICAgIHsKLSAgICB9Ci0KICAgICB2b2lkIGNv
bGxlY3ROb2RlTmFtZUluZm8oTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIFN0cmluZyBuYW1l
ID0gbm9kZU5hbWUobm9kZSk7CkBAIC0zNzIsMTMgKzM3NCw5MyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVuZGVyVHJlZUluZm8oUGFnZSogcGFnZSkKICAgICBy
ZXR1cm4gcmVuZGVyVHJlZUFsbG9jYXRlZC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFk
ZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4q
IGFycmF5LCBjb25zdCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYyYgc3RhdGlzdGljLCBjb25z
dCBjaGFyKiBuYW1lKQorc3RhdGljIHZvaWQgYWRkTWVtb3J5QmxvY2tGb3IoVHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogYXJyYXksIHNpemVfdCBzaXplLCBjb25zdCBj
aGFyKiBuYW1lKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVzdWx0ID0g
SW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUobmFtZSk7Ci0gICAgcmVzdWx0
LT5zZXRTaXplKHN0YXRpc3RpYy5zaXplKTsKKyAgICByZXN1bHQtPnNldFNpemUoc2l6ZSk7CiAg
ICAgYXJyYXktPmFkZEl0ZW0ocmVzdWx0KTsKIH0KIAorbmFtZXNwYWNlIHsKKworY2xhc3MgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSW1wbCA6IHB1YmxpYyBNZW1vcnlJbnN0cnVtZW50YXRpb24gewor
cHVibGljOgorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwoKQorICAgIHsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBMYXN0VHlwZUVudHJ5OyArK2kpCisgICAgICAgICAgICBtX3Rv
dGFsU2l6ZXNbaV0gPSAwOworICAgIH0KKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+IGR1bXBTdGF0aXN0aWNzKCkKKyAgICB7CisgICAgICAgIHNpemVfdCB0b3RhbFNpemUg
PSAwOworICAgICAgICBmb3IgKGludCBpID0gT3RoZXI7IGkgPCBMYXN0VHlwZUVudHJ5OyArK2kp
CisgICAgICAgICAgICB0b3RhbFNpemUgKz0gbV90b3RhbFNpemVzW2ldOworCisgICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gZG9tQ2hpbGRy
ZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsK
KyAgICAgICAgYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXpl
c1tPdGhlcl0sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZU90aGVyKTsKKyAgICAgICAgYWRkTWVt
b3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIG1fdG90YWxTaXplc1tET01dLCBNZW1vcnlC
bG9ja05hbWU6OmRvbVRyZWVET00pOworICAgICAgICBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGls
ZHJlbi5nZXQoKSwgbV90b3RhbFNpemVzW0NTU10sIE1lbW9yeUJsb2NrTmFtZTo6ZG9tVHJlZUNT
Uyk7CisKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb20gPSBJbnNwZWN0
b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05hbWU6OmRvbSk7Cisg
ICAgICAgIGRvbS0+c2V0U2l6ZSh0b3RhbFNpemUpOworICAgICAgICBkb20tPnNldENoaWxkcmVu
KGRvbUNoaWxkcmVuLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiBkb20ucmVsZWFzZSgpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRPYmplY3RTaXplKE9iamVj
dFR5cGUgb2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBBU1NFUlQob2Jq
ZWN0VHlwZSA+PSAwICYmIG9iamVjdFR5cGUgPCBMYXN0VHlwZUVudHJ5KTsKKyAgICAgICAgbV90
b3RhbFNpemVzW29iamVjdFR5cGVdICs9IHNpemU7CisgICAgfQorCisgICAgdmlydHVhbCBib29s
IHZpc2l0ZWQoY29uc3Qgdm9pZCogb2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3Zp
c2l0ZWRPYmplY3RzLmFkZChvYmplY3QpLmlzTmV3RW50cnk7CisgICAgfQorICAgIHNpemVfdCBt
X3RvdGFsU2l6ZXNbTGFzdFR5cGVFbnRyeV07CisgICAgdHlwZWRlZiBIYXNoU2V0PGNvbnN0IHZv
aWQqPiBWaXNpdGVkT2JqZWN0czsKKyAgICBWaXNpdGVkT2JqZWN0cyBtX3Zpc2l0ZWRPYmplY3Rz
OworfTsKKworY2xhc3MgRE9NVHJlZXNJdGVyYXRvciA6IHB1YmxpYyBET01XcmFwcGVyVmlzaXRv
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRE9NVHJlZXNJdGVyYXRvcihQYWdlKiBwYWdlKSA6
IG1fcGFnZShwYWdlKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdE5vZGUoTm9kZSogbm9k
ZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50
KCktPmZyYW1lKCkgJiYgbV9wYWdlICE9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPnBhZ2Uo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLnJlcG9y
dEluc3RydW1lbnRlZFBvaW50ZXIobm9kZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZp
c2l0SlNFeHRlcm5hbFN0cmluZyhTdHJpbmdJbXBsKikgeyB9CisKKyAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2NrPiBkdW1wU3RhdGlzdGljcygpIHsgcmV0dXJuIG1fZG9tTWVtb3J5
VXNhZ2UuZHVtcFN0YXRpc3RpY3MoKTsgfQorCitwcml2YXRlOgorICAgIFBhZ2UqIG1fcGFnZTsK
KyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsIG1fZG9tTWVtb3J5VXNhZ2U7Cit9OworCit9
CisKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb21UcmVlSW5mbyhQ
YWdlKiBwYWdlKQoreworICAgIERPTVRyZWVzSXRlcmF0b3IgZG9tVHJlZXNJdGVyYXRvcihwYWdl
KTsKKyAgICBTY3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJzKCZkb21UcmVlc0l0ZXJh
dG9yKTsKKworICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRo
ZSBtYWluIGZyYW1lIGFyZSBhY2NvdW50ZWQuCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdl
LT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KCkpIHsKKyAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKKyAg
ICAgICAgICAgIGRvbVRyZWVzSXRlcmF0b3IudmlzaXROb2RlKGRvYyk7CisgICAgfQorCisgICAg
cmV0dXJuIGRvbVRyZWVzSXRlcmF0b3IuZHVtcFN0YXRpc3RpY3MoKTsKK30KKwogc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygpCiB7CiAgICAg
TWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3Mgc3RhdHMgPSBtZW1vcnlDYWNoZSgpLT5nZXRTdGF0aXN0
aWNzKCk7CkBAIC0zOTEsMTIgKzQ3MywxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz4gbWVtb3J5Q2FjaGVJbmZvKCkKICAgICBtZW1vcnlDYWNoZVN0YXRzLT5zZXRT
aXplKHRvdGFsU2l6ZSk7CiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
ck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1l
bW9yeUJsb2NrPjo6Y3JlYXRlKCk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0
KCksIHN0YXRzLmltYWdlcywgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRJbWFnZXMpOwotICAgIGFk
ZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBzdGF0cy5jc3NTdHlsZVNoZWV0cywgTWVt
b3J5QmxvY2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tG
b3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVk
U2NyaXB0cyk7Ci0gICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnhz
bFN0eWxlU2hlZXRzLCBNZW1vcnlCbG9ja05hbWU6OmNhY2hlZFhzbFN0eWxlU2hlZXRzKTsKLSAg
ICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuZm9udHMsIE1lbW9yeUJs
b2NrTmFtZTo6Y2FjaGVkRm9udHMpOwotICAgIG1lbW9yeUNhY2hlU3RhdHMtPnNldENoaWxkcmVu
KGNoaWxkcmVuKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMu
aW1hZ2VzLnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkSW1hZ2VzKTsKKyAgICBhZGRNZW1v
cnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3RhdHMuY3NzU3R5bGVTaGVldHMuc2l6ZSwgTWVt
b3J5QmxvY2tOYW1lOjpjYWNoZWRDc3NTdHlsZVNoZWV0cyk7CisgICAgYWRkTWVtb3J5QmxvY2tG
b3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLnNjcmlwdHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpj
YWNoZWRTY3JpcHRzKTsKKyAgICBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgc3Rh
dHMueHNsU3R5bGVTaGVldHMuc2l6ZSwgTWVtb3J5QmxvY2tOYW1lOjpjYWNoZWRYc2xTdHlsZVNo
ZWV0cyk7CisgICAgYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIHN0YXRzLmZvbnRz
LnNpemUsIE1lbW9yeUJsb2NrTmFtZTo6Y2FjaGVkRm9udHMpOworICAgIG1lbW9yeUNhY2hlU3Rh
dHMtPnNldENoaWxkcmVuKGNoaWxkcmVuLmdldCgpKTsKICAgICByZXR1cm4gbWVtb3J5Q2FjaGVT
dGF0cy5yZWxlYXNlKCk7CiB9CiAKQEAgLTQxMyw2ICs0OTUsNyBAQCB2b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVm
UHRyPElucwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGluc3BlY3RvckRhdGEoKSk7CiAgICAgY2hp
bGRyZW4tPmFkZEl0ZW0obWVtb3J5Q2FjaGVJbmZvKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVt
KHJlbmRlclRyZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/
CisgICAgY2hpbGRyZW4tPmFkZEl0ZW0oZG9tVHJlZUluZm8obV9wYWdlKSk7IC8vIFRPRE86IGNv
bGxlY3QgZm9yIGFsbCBwYWdlcz8KICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJlbihjaGls
ZHJlbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFy
ZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRleCAyZWJkYjFk
MWM1OTc4ZDFmMGM3ZWYzMmZkY2I0ZGMzNjBmZmM1MmY0Li42YzQxNTRlZGU3YWM5NzI4MmI1NDc2
OTU4MzkzM2JmNDY2M2YxNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
cmVlU2hhcmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCkBA
IC0xMTEsNiArMTExLDEyIEBAIHB1YmxpYzoKICAgICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1
bmN0aW9uOwogI2VuZGlmCiAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgeworICAgICAgICBtZW1vcnlPYmpl
Y3RJbmZvLT5yZXBvcnRPYmplY3RJbmZvKHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9N
KTsKKyAgICAgICAgbWVtb3J5T2JqZWN0SW5mby0+cmVwb3J0SW5zdHJ1bWVudGVkUG9pbnRlciht
X3BhcmVudCk7CisgICAgfQorCiBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBmcmllbmQg
dm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50Tm9kZVR5cGU+Kik7CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGRmNTg3OTQzOTQ1OTNkYzBiZGVkZGFiYzU5YTViNWY5ZWY4ODQ5NDku
LmVhOGEzNDE3YTliODJjMDZjZDM3OWQ3NzMzNzMwZmUxYmE1MmUyYWEgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBhcnRpYWxseSBpbnN0cnVt
ZW50IERPTSBUcmVlIG5hdGl2ZSBtZW1vcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTU2OAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBNZW1v
cnlJbnN0cnVtZW50YXRpb24gY2xhc3MgdGhhdCBjb3VudHMgYWxsIHZpc2l0ZWQKKyAgICAgICAg
b2JqZWN0cyBhbmQgY2FsbHMgcmVwb3J0TWVtb3J5VXNhZ2UuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvbmF0aXZlLW1lbW9yeS1z
bmFwc2hvdC5odG1sOgorCiAyMDEyLTA2LTIxICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBwZXJmLXRlc3QgZm9yIGlubmVySFRNTCBzZXR0ZXIg
Zm9yIGEgbGFyZ2UgRE9NIHRyZWUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvaW5zcGVj
dG9yL25hdGl2ZS1tZW1vcnktc25hcHNob3QuaHRtbAppbmRleCAyYWUwNWJhNTdmNzViNGVmM2E4
ODY3Yjg3ZTMzZDQ1MGExMDRkMjU5Li4zODY1M2E3NDIyNDk3MmU0MDliZWNjMWUzZmIwNDQ3ZTc5
YWE1MmMwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci9uYXRpdmUtbWVt
b3J5LXNuYXBzaG90Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9pbnNwZWN0b3IvbmF0aXZl
LW1lbW9yeS1zbmFwc2hvdC5odG1sCkBAIC0xLDUgKzEsMTcgQEAKIDxodG1sPgogPGhlYWQ+Cisg
IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgc3BhbiB7CisgICAgICBjb2xvcjpyZWQ7Cisg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICBoZWlnaHQ6IDIwcHg7CisgICAgfQorICAgIGRpdiB7
CisgICAgICBjb2xvcjpibHVlOworICAgICAgd2lkdGg6IDUwcHg7CisgICAgICBoZWlnaHQ6IDEw
cHg7CisgICAgfQorICA8L3N0eWxlPgogICA8c2NyaXB0IHNyYz0iLi4vLi4vTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgogICA8c2Ny
aXB0IHNyYz0icGVyZm9ybWFuY2UtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgpAQCAtMzks
OCArNTEsMTIgQEAgZnVuY3Rpb24gY3JlYXRlRE9NVHJlZShlbGVtZW50c0NvdW50KQogewogICAg
IHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RUcmVlUm9vdCIpOwogCi0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50c0NvdW50OyArK2kpCi0gICAgICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGVsZW1lbnRzQ291bnQ7ICsraSkgeworICAgICAgICB2YXIgc3BhbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgc3Bhbi5pZCA9ICJzcGFuXyIg
KyBpOworICAgICAgICBzcGFuLnN0eWxlLndpZHRoID0gIjEwcHgiOworICAgICAgICByb290LmFw
cGVuZENoaWxkKHNwYW4pOworICAgIH0KIAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVu
dHNDb3VudDsgKytpKQogICAgICAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpKTsK
</data>
<flag name="review"
          id="156923"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>