<?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>110050</bug_id>
          
          <creation_ts>2013-02-16 23:50:06 -0800</creation_ts>
          <short_desc>AX: cellForColumnAndRow fails for tables with hidden table cells</short_desc>
          <delta_ts>2013-03-04 23:16:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jdiggs</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>834947</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-16 23:50:06 -0800</bug_when>
    <thetext>If a table has cells hidden in a row, then the cellForColumnAndRow method fails because of discrepancies between how table children are created and how cellForRowAndColumn is implemented.

This causes VoiceOver to be unable to navigate certain tables.

Here&apos;s an example

&lt;table id=&quot;table&quot; border=1&gt;
  &lt;thead&gt;&lt;th hidden&gt;header 1&lt;/th&gt;&lt;th hidden&gt;header 2&lt;/th&gt;&lt;/thead&gt;
  &lt;tr&gt;&lt;td&gt;foo&lt;/td&gt;&lt;td&gt;bar&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838601</commentid>
    <comment_count>1</comment_count>
      <attachid>189561</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-21 11:10:05 -0800</bug_when>
    <thetext>Created attachment 189561
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838602</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-21 11:10:50 -0800</bug_when>
    <thetext>rdar://13207279</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838608</commentid>
    <comment_count>3</comment_count>
      <attachid>189561</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-21 11:14:02 -0800</bug_when>
    <thetext>Comment on attachment 189561
patch

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

&gt; Source/WebCore/accessibility/AccessibilityARIAGrid.cpp:-135
&gt; -AccessibilityTableCell* AccessibilityARIAGrid::cellForColumnAndRow(unsigned column, unsigned row)

this code was moved to AccessibilityTable::cellForColAndRow and cleaned up a tad

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:349
&gt; +    RenderTableSection* tableSection = table-&gt;topSection();

use topSection instead of header as suggested in the FIXME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838614</commentid>
    <comment_count>4</comment_count>
      <attachid>189561</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 11:19:14 -0800</bug_when>
    <thetext>Comment on attachment 189561
patch

Attachment 189561 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16700151</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838617</commentid>
    <comment_count>5</comment_count>
      <attachid>189561</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 11:20:55 -0800</bug_when>
    <thetext>Comment on attachment 189561
patch

Attachment 189561 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16692212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838619</commentid>
    <comment_count>6</comment_count>
      <attachid>189561</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-21 11:21:26 -0800</bug_when>
    <thetext>Comment on attachment 189561
patch

Attachment 189561 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16699181</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838629</commentid>
    <comment_count>7</comment_count>
      <attachid>189564</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-21 11:29:31 -0800</bug_when>
    <thetext>Created attachment 189564
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838633</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 11:31:48 -0800</bug_when>
    <thetext>Attachment 189564 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/accessibility/table-with-hidden-head-section-expected.txt&apos;, u&apos;LayoutTests/accessibility/table-with-hidden-head-section.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGrid.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGrid.h&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridCell.h&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.h&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableCell.h&apos;, u&apos;Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceTable.cpp&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Source/WebCore/rendering/RenderTableSection.h&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/src/WebAccessibilityObject.cpp&apos;]&quot; exit_code: 1
Source/WebCore/ChangeLog:45:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838636</commentid>
    <comment_count>9</comment_count>
      <attachid>189564</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-21 11:35:28 -0800</bug_when>
    <thetext>Comment on attachment 189564
patch

Attachment 189564 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16701117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838647</commentid>
    <comment_count>10</comment_count>
      <attachid>189567</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-21 11:48:19 -0800</bug_when>
    <thetext>Created attachment 189567
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838664</commentid>
    <comment_count>11</comment_count>
      <attachid>189561</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-02-21 12:05:10 -0800</bug_when>
    <thetext>Comment on attachment 189561
patch

Looks like a good refactoring, much cleaner

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

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:513
&gt; +        for (unsigned colIndexCounter = children.size(); colIndexCounter &gt; 0; --colIndexCounter) {

This loop could start at min(children.size(), column)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838692</commentid>
    <comment_count>12</comment_count>
      <attachid>189567</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 12:23:15 -0800</bug_when>
    <thetext>Comment on attachment 189567
patch

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

New failing tests:
accessibility/table-with-hidden-head-section.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838747</commentid>
    <comment_count>13</comment_count>
      <attachid>189585</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-21 13:09:54 -0800</bug_when>
    <thetext>Created attachment 189585
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838752</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 13:12:03 -0800</bug_when>
    <thetext>Attachment 189585 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/accessibility/table-with-hidden-head-section-expected.txt&apos;, u&apos;LayoutTests/accessibility/table-with-hidden-head-section.html&apos;, u&apos;LayoutTests/platform/chromium/TestExpectations&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGrid.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGrid.h&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityARIAGridCell.h&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTable.h&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableCell.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityTableCell.h&apos;, u&apos;Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceTable.cpp&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Source/WebCore/rendering/RenderTableSection.h&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/src/WebAccessibilityObject.cpp&apos;]&quot; exit_code: 1
LayoutTests/platform/chromium/TestExpectations:1460:  expecting &quot;[&quot;, &quot;#&quot;, or end of line instead of &quot;[Skip]&quot;  [test/expectations] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838754</commentid>
    <comment_count>15</comment_count>
      <attachid>189586</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-21 13:12:56 -0800</bug_when>
    <thetext>Created attachment 189586
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838760</commentid>
    <comment_count>16</comment_count>
      <attachid>189586</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-21 13:21:29 -0800</bug_when>
    <thetext>Comment on attachment 189586
patch

Attachment 189586 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16697275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838761</commentid>
    <comment_count>17</comment_count>
      <attachid>189586</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-21 13:21:46 -0800</bug_when>
    <thetext>Comment on attachment 189586
patch

Attachment 189586 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16695302</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838764</commentid>
    <comment_count>18</comment_count>
      <attachid>189589</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-21 13:23:15 -0800</bug_when>
    <thetext>Created attachment 189589
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838771</commentid>
    <comment_count>19</comment_count>
      <attachid>189589</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-21 13:29:45 -0800</bug_when>
    <thetext>Comment on attachment 189589
patch

Attachment 189589 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16691300</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838774</commentid>
    <comment_count>20</comment_count>
      <attachid>189589</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-21 13:31:24 -0800</bug_when>
    <thetext>Comment on attachment 189589
patch

Attachment 189589 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16701196</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838779</commentid>
    <comment_count>21</comment_count>
      <attachid>189592</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-21 13:37:02 -0800</bug_when>
    <thetext>Created attachment 189592
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839162</commentid>
    <comment_count>22</comment_count>
      <attachid>189592</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-21 19:57:33 -0800</bug_when>
    <thetext>Comment on attachment 189592
patch

Attachment 189592 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16693519

New failing tests:
accessibility/table-attributes.html
accessibility/aria-tables.html
accessibility/table-sections.html
platform/mac/accessibility/aria-table-with-colspan-cells.html
accessibility/table-cell-for-column-and-row-crash.html
accessibility/table-cells.html
platform/mac/accessibility/table-multi-bodies.html
accessibility/table-cell-spans.html
accessibility/table-with-hidden-head-section.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839413</commentid>
    <comment_count>23</comment_count>
      <attachid>189592</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-22 02:31:48 -0800</bug_when>
    <thetext>Comment on attachment 189592
patch

Attachment 189592 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16695745

New failing tests:
accessibility/table-attributes.html
accessibility/aria-tables.html
accessibility/table-sections.html
platform/mac/accessibility/aria-table-with-colspan-cells.html
accessibility/table-cell-for-column-and-row-crash.html
accessibility/table-cells.html
platform/mac/accessibility/table-multi-bodies.html
accessibility/table-cell-spans.html
accessibility/table-with-hidden-head-section.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839434</commentid>
    <comment_count>24</comment_count>
      <attachid>189592</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-02-22 03:41:34 -0800</bug_when>
    <thetext>Comment on attachment 189592
patch

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

&gt; Source/WebCore/ChangeLog:216
&gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r143633

This line seems to have slipped by in the patch

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:513
&gt; +        for (unsigned colIndexCounter = std::min(static_cast&lt;unsigned&gt;(children.size()), column); colIndexCounter &gt; 0; --colIndexCounter) {

I think this should actually be std::min(static_cast&lt;unsigned&gt;(children.size()), column + 1). Otherwise you won&apos;t ever enter the loop when you ask for column 0, even if children.size() &gt; 0

This might be the reason why those tests are failing with the current patch, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839600</commentid>
    <comment_count>25</comment_count>
      <attachid>189774</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-22 08:35:35 -0800</bug_when>
    <thetext>Created attachment 189774
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846803</commentid>
    <comment_count>26</comment_count>
      <attachid>189774</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-04 13:40:16 -0800</bug_when>
    <thetext>Comment on attachment 189774
patch

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

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:348
&gt;      // go through all the available sections to pull out the rows
&gt;      // and add them as children

Any interest in capitalization/punctuation-izing this nearby comment that you didn&apos;t change?

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:370
&gt; +            // we need to check every cell for a new row, because cell spans
&gt; +            // can cause us to mess rows if we just check the first column

s/mess/miss/? Capitals, punctuation, etc. (I realize you just moved this, but might as well fix it)

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:374
&gt; +            row-&gt;setRowIndex((int)m_rows.size());

You&apos;re static_casting elsewhere.

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:-512
&gt; -    if (!m_renderer || !m_renderer-&gt;isTable())

Where&apos;d this go/why don&apos;t we need it anymore?

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:509
&gt; +    for (unsigned rowIndexCounter = row + 1; rowIndexCounter &gt; 0; --rowIndexCounter) {
&gt; +        unsigned rowIndex = rowIndexCounter - 1;

Why not just make rowIndexCounter rowIndex and make the values match up? I don&apos;t see it being used elsewhere. What&apos;s going on here?

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:514
&gt; +        for (unsigned colIndexCounter = std::min(static_cast&lt;unsigned&gt;(children.size()), column + 1); colIndexCounter &gt; 0; --colIndexCounter) {
&gt; +            unsigned colIndex = colIndexCounter - 1;

Ditto.

&gt; Source/WebCore/rendering/RenderTableSection.h:156
&gt; +    // Used by accessibility.

Do we usually add comments like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846965</commentid>
    <comment_count>27</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-04 16:08:24 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 189774 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189774&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:348
&gt; &gt;      // go through all the available sections to pull out the rows
&gt; &gt;      // and add them as children
&gt; 
&gt; Any interest in capitalization/punctuation-izing this nearby comment that you didn&apos;t change?
&gt; 

Will do

&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:370
&gt; &gt; +            // we need to check every cell for a new row, because cell spans
&gt; &gt; +            // can cause us to mess rows if we just check the first column
&gt; 
&gt; s/mess/miss/? Capitals, punctuation, etc. (I realize you just moved this, but might as well fix it)

Will do

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:374
&gt; &gt; +            row-&gt;setRowIndex((int)m_rows.size());
&gt; 
&gt; You&apos;re static_casting elsewhere.
&gt; 

Will do


&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:-512
&gt; &gt; -    if (!m_renderer || !m_renderer-&gt;isTable())
&gt; 
&gt; Where&apos;d this go/why don&apos;t we need it anymore?
&gt; 

We&apos;re no longer accessing the render table directly in this method so we don&apos;t need to verify that it still has a renderer or a table, we&apos;ll be relying solely on the internal structure we built up for accessibility.

&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:509
&gt; &gt; +    for (unsigned rowIndexCounter = row + 1; rowIndexCounter &gt; 0; --rowIndexCounter) {
&gt; &gt; +        unsigned rowIndex = rowIndexCounter - 1;
&gt; 
&gt; Why not just make rowIndexCounter rowIndex and make the values match up? I don&apos;t see it being used elsewhere. What&apos;s going on here?

We have to go backwards in this counter, but I want to use an unsigned int since i&apos;ll be comparing this number against other unsigned ints. 
Hence, I wouldn&apos;t be able to reach the 0th index without doing this trickery.

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:514
&gt; &gt; +        for (unsigned colIndexCounter = std::min(static_cast&lt;unsigned&gt;(children.size()), column + 1); colIndexCounter &gt; 0; --colIndexCounter) {
&gt; &gt; +            unsigned colIndex = colIndexCounter - 1;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderTableSection.h:156
&gt; &gt; +    // Used by accessibility.
&gt; 
&gt; Do we usually add comments like this?

In some places, if you don&apos;t think it&apos;s necessary, I will remove

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846971</commentid>
    <comment_count>28</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-04 16:10:39 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:509
&gt; &gt; &gt; +    for (unsigned rowIndexCounter = row + 1; rowIndexCounter &gt; 0; --rowIndexCounter) {
&gt; &gt; &gt; +        unsigned rowIndex = rowIndexCounter - 1;
&gt; &gt; 
&gt; &gt; Why not just make rowIndexCounter rowIndex and make the values match up? I don&apos;t see it being used elsewhere. What&apos;s going on here?
&gt; 
&gt; We have to go backwards in this counter, but I want to use an unsigned int since i&apos;ll be comparing this number against other unsigned ints. 
&gt; Hence, I wouldn&apos;t be able to reach the 0th index without doing this trickery.

A very good reason :)

&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:514
&gt; &gt; &gt; +        for (unsigned colIndexCounter = std::min(static_cast&lt;unsigned&gt;(children.size()), column + 1); colIndexCounter &gt; 0; --colIndexCounter) {
&gt; &gt; &gt; +            unsigned colIndex = colIndexCounter - 1;
&gt; &gt; 
&gt; &gt; Ditto.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/RenderTableSection.h:156
&gt; &gt; &gt; +    // Used by accessibility.
&gt; &gt; 
&gt; &gt; Do we usually add comments like this?
&gt; 
&gt; In some places, if you don&apos;t think it&apos;s necessary, I will remove

I don&apos;t think it&apos;s necessary. It&apos;s up to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847314</commentid>
    <comment_count>29</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-04 23:16:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/144727</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189561</attachid>
            <date>2013-02-21 11:10:05 -0800</date>
            <delta_ts>2013-02-21 12:05:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25184</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEzLTAyLTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1
bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSB0YWJsZSBoYWQg
aGlkZGVuIGNlbGxzLCB0aGVuIGFjY2Vzc2liaWxpdHkgY29kZSB3YXMgYmVpbmcgY29uZnVzZWQg
aW4gYSBmZXcgd2F5cy4KKyAgICAgICAgMSkgVGhlIGNlbGxGb3JDb2x1bW5BbmRSb3cgbWV0aG9k
IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgaW5mb3JtYXRpb24gc2luY2UgdGhhdCB3YXMKKyAgICAg
ICAgICAgdXNpbmcgdGhlIFJlbmRlclRhYmxlU2VjdGlvbiB0byByZXRyaWV2ZSBhIGNlbGwsIHdo
aWNoIGRpZCBub3QgaGF2ZSB0aGUgc2FtZSBkYXRhIGFzIHRoZSBBWFRhYmxlCisgICAgICAgIDIp
IFRoZSB3YXkgd2Ugd2VyZSBhZGRpbmcgY2hpbGRyZW4gbWFkZSBpdCBpbXBvc3NpYmxlIHRvIGRl
dGVybWluZSBjb2x1bW4gYW5kIHJvdyByYW5nZSBiZWNhdXNlIHdlIAorICAgICAgICAgICB3b3Vs
ZCBza2lwIHJvd3MgdGhhdCBoYWQgaGlkZGVuIGNoaWxkcmVuCisgICAgICAgIDMpIEFjY2Vzc2li
aWxpdHlBUklBR3JpZCBhbmQgQWNjZXNzaWJpbGl0eVRhYmxlIHdlcmUgdXNpbmcgZGlmZmVyZW50
IG1ldGhvZHMgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cKKworICAgICAgICBUaGUgZml4IGRvZXMg
YSBmZXcgdGhpbmdzIHRvIG1ha2UgdGhpbmdzIHJpZ2h0OgorICAgICAgICAxKSBBbHdheXMgYWRk
IGFuIGFjY2Vzc2liaWxpdHkgcm93LCBldmVuIGlmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGNlbGxz
IGluIHRoYXQgcm93LgorICAgICAgICAyKSBIYXZlIG9uZSBtZXRob2QgZm9yIEFYVGFibGUgYW5k
IEFYQVJJQUdyaWQgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cuCisgICAgICAgIDMpIENoYW5nZSBj
ZWxsRm9yQ29sdW1uQW5kUm93IHRvIHF1ZXJ5IHRoZSBhY2Nlc3NpYmlsaXR5IGNoaWxkcmVuIHJh
dGhlciB0aGFuIHRoZSBSZW5kZXJUYWJsZVNlY3Rpb24gaW4gZGV0ZXJtaW5pbmcgdGhlIHJvdywg
Y29sIGluZm8uCisgICAgICAgIDQpIGNlbGxGb3JDb2x1bW5BbmRSb3cgc2hvdWxkIHVzZSB1bnNp
Z25lZCB2YWx1ZXMgaW5zdGVhZCBvZiBpbnQgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmg6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5QVJJQUdyaWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JD
b2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUYWJsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKFJlbmRl
clRhYmxlU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OnJv
d1JlbmRlcmVyQXQpOgorCiAyMDEzLTAyLTIxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFp
eEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlk
IGdyb3d0aCBkdXJpbmcgYXV0byBwbGFjZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHJldmlzaW9u
IDE0MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDUwICsxMzIsNCBAQAogICAgICAgICBt
X2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwogfQogICAgIAotQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjZWxsRm9yQ29sdW1uQW5k
Um93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQotewotICAgIGlmICghbV9yZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2Fy
eSgpOwotICAgIAotICAgIGlmIChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaW50IGludFJvdyA9IChpbnQp
cm93OwotICAgIGludCBpbnRDb2x1bW4gPSAoaW50KWNvbHVtbjsKLQotICAgIHBhaXI8aW50LCBp
bnQ+IGNvbHVtblJhbmdlOwotICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOwotICAgIAotICAg
IC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVzaXJl
ZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cwotICAgIC8vIGluIGEgcHJldmlvdXMgcm93
LgotICAgIGZvciAoOyBpbnRSb3cgPj0gMDsgLS1pbnRSb3cpIHsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogdGFibGVSb3cgPSBtX3Jvd3NbaW50Um93XS5nZXQoKTsKLSAgICAgICAgaWYg
KCF0YWJsZVJvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gdGFibGVSb3ctPmNoaWxkcmVuKCk7
Ci0gICAgICAgIHVuc2lnbmVkIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4uc2l6ZSgpOwotICAg
ICAgICAKLSAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2Ug
aGF2ZSB0byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKLSAgICAgICAgLy8gY2VsbCB0
byBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBrID0gMDsgayA8IGNoaWxkcmVuTGVuZ3RoOyArK2spIHsKLSAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5ba10uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAo
IWNoaWxkLT5pc1RhYmxlQ2VsbCgpKSAKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsQ2hp
bGQgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oY2hpbGQpOwotICAgICAg
ICAgICAgdGFibGVDZWxsQ2hpbGQtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwotICAg
ICAgICAgICAgdGFibGVDZWxsQ2hpbGQtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoKGludENvbHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAm
JiBpbnRDb2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpKQot
ICAgICAgICAgICAgICAgICYmIChpbnRSb3cgPj0gcm93UmFuZ2UuZmlyc3QgJiYgaW50Um93IDwg
KHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRhYmxlQ2VsbENoaWxkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19
Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJKHJldmlzaW9uIDE0
MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDYgQEAKICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGRyZW4oKTsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwqIGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cp
OwotCiBwcml2YXRlOgogICAgIC8vIEFSSUEgdHJlZWdyaWRzIGFuZCBncmlkcyBzdXBwb3J0IHNl
bGVjdGVkIHJvd3MuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyBy
ZXR1cm4gdHJ1ZTsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAkocmV2aXNpb24gMTQz
NjE5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQAogICAgIHJldHVybiBw
YXJlbnQ7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4
UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsOjpyb3dJbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2Up
CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25v
cmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgICByb3dSYW5n
ZS5zZWNvbmQgPSAxOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVt
bkluZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiYgY29sdW1uUmFuZ2UpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGwuaAkocmV2aXNpb24gMTQzNjE5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkg
QEAKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKCk7CiAgICAgCiAgICAg
Ly8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiBjZWxsCi0gICAg
dmlydHVhbCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJv
d1JhbmdlKTsKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBz
cGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwg
aW50PiYgY29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpOwogICAgIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5jcHAJKHJldmlzaW9uIDE0MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDUxICszNDYs
NDIgQEAKIAogICAgIC8vIGdvIHRocm91Z2ggYWxsIHRoZSBhdmFpbGFibGUgc2VjdGlvbnMgdG8g
cHVsbCBvdXQgdGhlIHJvd3MKICAgICAvLyBhbmQgYWRkIHRoZW0gYXMgY2hpbGRyZW4KLSAgICAv
LyBGSVhNRTogVGhpcyB3aWxsIHNraXAgYSB0YWJsZSB3aXRoIGp1c3QgYSB0Zm9vdC4gU2hvdWxk
IGZpeCBieSB1c2luZyBSZW5kZXJUYWJsZTo6dG9wU2VjdGlvbi4KLSAgICBSZW5kZXJUYWJsZVNl
Y3Rpb24qIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5oZWFkZXIoKTsKKyAgICBSZW5kZXJUYWJsZVNl
Y3Rpb24qIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT50b3BTZWN0aW9uKCk7CiAgICAgaWYgKCF0YWJs
ZVNlY3Rpb24pCi0gICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5maXJzdEJvZHkoKTsKLSAg
ICAKLSAgICBpZiAoIXRhYmxlU2VjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJl
bmRlclRhYmxlU2VjdGlvbiogaW5pdGlhbFRhYmxlU2VjdGlvbiA9IHRhYmxlU2VjdGlvbjsKLSAg
ICAKICAgICB3aGlsZSAodGFibGVTZWN0aW9uKSB7CiAgICAgICAgIAogICAgICAgICBIYXNoU2V0
PEFjY2Vzc2liaWxpdHlPYmplY3QqPiBhcHBlbmRlZFJvd3M7Ci0KICAgICAgICAgdW5zaWduZWQg
bnVtUm93cyA9IHRhYmxlU2VjdGlvbi0+bnVtUm93cygpOwotICAgICAgICB1bnNpZ25lZCBudW1D
b2xzID0gdGFibGVTZWN0aW9uLT5udW1Db2x1bW5zKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
cm93SW5kZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHsKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7ICsrY29s
SW5kZXgpIHsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNl
bGwqIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQocm93SW5kZXgsIGNvbEluZGV4
KTsKLSAgICAgICAgICAgICAgICBpZiAoIWNlbGwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHJvd09iamVjdCA9IGF4Q2FjaGUtPmdldE9yQ3JlYXRlKGNlbGwtPnBhcmVudCgpKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIXJvd09iamVjdC0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5VGFibGVSb3cqIHJvdyA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJv
dyo+KHJvd09iamVjdCk7Ci0gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBldmVy
eSBjZWxsIGZvciBhIG5ldyByb3csIGJlY2F1c2UgY2VsbCBzcGFucwotICAgICAgICAgICAgICAg
IC8vIGNhbiBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3Qg
Y29sdW1uCi0gICAgICAgICAgICAgICAgaWYgKGFwcGVuZGVkUm93cy5jb250YWlucyhyb3cpKQot
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICByb3ctPnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7ICAgICAgICAKLSAg
ICAgICAgICAgICAgICBtX3Jvd3MuYXBwZW5kKHJvdyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFy
b3ctPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jaGls
ZHJlbi5hcHBlbmQocm93KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyVGFibGVS
b3cqIHJlbmRlclJvdyA9IHRhYmxlU2VjdGlvbi0+cm93UmVuZGVyZXJBdChyb3dJbmRleCk7Cisg
ICAgICAgICAgICBpZiAoIXJlbmRlclJvdykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0ID0g
YXhDYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyUm93KTsKKyAgICAgICAgICAgIGlmICghcm93T2Jq
ZWN0LT5pc1RhYmxlUm93KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlUm93Kj4ocm93T2JqZWN0KTsKKyAgICAgICAgICAgIC8vIHdlIG5l
ZWQgdG8gY2hlY2sgZXZlcnkgY2VsbCBmb3IgYSBuZXcgcm93LCBiZWNhdXNlIGNlbGwgc3BhbnMK
KyAgICAgICAgICAgIC8vIGNhbiBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVj
ayB0aGUgZmlyc3QgY29sdW1uCisgICAgICAgICAgICBpZiAoYXBwZW5kZWRSb3dzLmNvbnRhaW5z
KHJvdykpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHJvdy0+c2V0Um93SW5kZXgoKGludCltX3Jvd3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIG1f
cm93cy5hcHBlbmQocm93KTsKKyAgICAgICAgICAgIGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpCisgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsKICNpZiBQ
TEFURk9STShHVEspCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBt
X2NoaWxkcmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CiAjZW5kaWYK
LSAgICAgICAgICAgICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CiAgICAgICAgIH0KLSAgICAgICAgCisg
ICAgCiAgICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5zZWN0aW9uQmVsb3codGFibGVTZWN0
aW9uLCBTa2lwRW1wdHlTZWN0aW9ucyk7CiAgICAgfQogICAgIApAQCAtNTA5LDc2ICs1MDAsMzYg
QEAKIAogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9y
Q29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewotICAgIGlmICgh
bV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZSgpKQorICAgIHVwZGF0ZUNoaWxkcmVu
SWZOZWNlc3NhcnkoKTsKKyAgICBpZiAoY29sdW1uID49IGNvbHVtbkNvdW50KCkgfHwgcm93ID49
IHJvd0NvdW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIHVwZGF0ZUNoaWxkcmVu
SWZOZWNlc3NhcnkoKTsKLSAgICAKLSAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0b1JlbmRlclRh
YmxlKG1fcmVuZGVyZXIpOwotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRhYmxlIHdp
dGgganVzdCBhIHRmb290LiBTaG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0b3BTZWN0
aW9uLgotICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPmhlYWRl
cigpOwotICAgIGlmICghdGFibGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJs
ZS0+Zmlyc3RCb2R5KCk7Ci0gICAgCi0gICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gMDsKLSAg
ICB1bnNpZ25lZCByb3dDb3VudCA9IDA7Ci0gICAgdW5zaWduZWQgcm93T2Zmc2V0ID0gMDsKLSAg
ICB3aGlsZSAodGFibGVTZWN0aW9uKSB7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBudW1S
b3dzID0gdGFibGVTZWN0aW9uLT5udW1Sb3dzKCk7Ci0gICAgICAgIHVuc2lnbmVkIG51bUNvbHMg
PSB0YWJsZVNlY3Rpb24tPm51bUNvbHVtbnMoKTsKLSAgICAgICAgCi0gICAgICAgIHJvd0NvdW50
ICs9IG51bVJvd3M7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBzZWN0aW9uU3BlY2lmaWNS
b3cgPSByb3cgLSByb3dPZmZzZXQ7ICAgICAgICAgICAgCi0gICAgICAgIGlmIChyb3cgPCByb3dD
b3VudCAmJiBjb2x1bW4gPCBudW1Db2xzICYmIHNlY3Rpb25TcGVjaWZpY1JvdyA8IG51bVJvd3Mp
IHsKLSAgICAgICAgICAgIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQoc2VjdGlv
blNwZWNpZmljUm93LCBjb2x1bW4pOworICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2gg
dGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVzaXJlZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0
cyBpbiBhIHByZXZpb3VzIHJvdy4KKyAgICBmb3IgKHVuc2lnbmVkIHJvd0luZGV4Q291bnRlciA9
IHJvdyArIDE7IHJvd0luZGV4Q291bnRlciA+IDA7IC0tcm93SW5kZXhDb3VudGVyKSB7CisgICAg
ICAgIHVuc2lnbmVkIHJvd0luZGV4ID0gcm93SW5kZXhDb3VudGVyIC0gMTsKKyAgICAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gbV9yb3dzW3Jvd0luZGV4XS0+Y2hp
bGRyZW4oKTsKKyAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywg
d2UgaGF2ZSB0byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKKyAgICAgICAgLy8gY2Vs
bCB0byBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBjb2xJbmRleENvdW50ZXIgPSBjaGlsZHJlbi5zaXplKCk7IGNvbEluZGV4Q291bnRlciA+
IDA7IC0tY29sSW5kZXhDb3VudGVyKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjb2xJbmRleCA9
IGNvbEluZGV4Q291bnRlciAtIDE7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
aGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChjaGls
ZC0+aXNUYWJsZUNlbGwoKSk7CisgICAgICAgICAgICBpZiAoIWNoaWxkLT5pc1RhYmxlQ2VsbCgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICAv
LyB3ZSBkaWRuJ3QgZmluZCB0aGUgY2VsbCwgd2hpY2ggbWVhbnMgdGhlcmUncyBzcGFubmluZyBo
YXBwZW5pbmcKLSAgICAgICAgICAgIC8vIHNlYXJjaCBiYWNrd2FyZHMgdG8gZmluZCB0aGUgc3Bh
bm5pbmcgY2VsbAotICAgICAgICAgICAgaWYgKCFjZWxsKSB7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgLy8gZmlyc3QgdHJ5IHJvd3MKLSAgICAgICAgICAgICAgICBmb3IgKGlu
dCB0ZXN0Um93ID0gc2VjdGlvblNwZWNpZmljUm93IC0gMTsgdGVzdFJvdyA+PSAwOyAtLXRlc3RS
b3cpIHsKLSAgICAgICAgICAgICAgICAgICAgY2VsbCA9IHRhYmxlU2VjdGlvbi0+cHJpbWFyeUNl
bGxBdCh0ZXN0Um93LCBjb2x1bW4pOwotICAgICAgICAgICAgICAgICAgICAvLyBjZWxsIG92ZXJs
YXBwZWQuIHVzZSB0aGlzIG9uZQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWNlbGwgfHwg
Y2VsbC0+cm93U3BhbigpID49IDEpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbCAmJiAo
KGNlbGwtPnJvd0luZGV4KCkgKyAoY2VsbC0+cm93U3BhbigpIC0gMSkpID49IHNlY3Rpb25TcGVj
aWZpY1JvdykpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2VsbCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGlmICghY2VsbCkgewotICAgICAgICAgICAgICAgICAgICAvLyB0cnkgY29s
cwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB0ZXN0Q29sID0gY29sdW1uIC0gMTsgdGVz
dENvbCA+PSAwOyAtLXRlc3RDb2wpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwgPSB0
YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQoc2VjdGlvblNwZWNpZmljUm93LCB0ZXN0Q29sKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNlbGwgb3ZlcmxhcHBlZC4gdXNlIHRoaXMgb25l
Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWNlbGwgfHwgY2VsbC0+cm93U3Bhbigp
ID49IDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwgJiYgKChjZWxsLT5jb2wo
KSArIChjZWxsLT5jb2xTcGFuKCkgLSAxKSkgPj0gY29sdW1uKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwgPSAwOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOworICAgICAgICAg
ICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOworICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsQ2hpbGQgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGVDZWxsKj4oY2hpbGQpOworICAgICAgICAgICAgdGFibGVDZWxsQ2hpbGQtPmNvbHVt
bkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOworICAgICAgICAgICAgdGFibGVDZWxsQ2hpbGQtPnJv
d0luZGV4UmFuZ2Uocm93UmFuZ2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoKGNv
bHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAmJiBjb2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3Qg
KyBjb2x1bW5SYW5nZS5zZWNvbmQpKQorICAgICAgICAgICAgICAgICYmIChyb3cgPj0gcm93UmFu
Z2UuZmlyc3QgJiYgcm93IDwgKHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbENoaWxkOwogICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpZiAoY2VsbCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAg
ICAgcm93T2Zmc2V0ICs9IG51bVJvd3M7Ci0gICAgICAgIC8vIHdlIGRpZG4ndCBmaW5kIGFueXRo
aW5nIGJldHdlZW4gdGhlIHJvd3Mgd2Ugc2hvdWxkIGhhdmUKLSAgICAgICAgaWYgKHJvdyA8IHJv
d0NvdW50KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxl
LT5zZWN0aW9uQmVsb3codGFibGVTZWN0aW9uLCBTa2lwRW1wdHlTZWN0aW9ucyk7CiAgICAgfQog
ICAgIAotICAgIGlmICghY2VsbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY2VsbE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
Y2VsbCk7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY2VsbE9iamVjdC0+
aXNUYWJsZUNlbGwoKSk7Ci0gICAgCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwqPihjZWxsT2JqZWN0KTsKKyAgICByZXR1cm4gMDsKIH0KIAogQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb2xlVmFsdWUoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCShy
ZXZpc2lvbiAxNDM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw7CitjbGFzcyBSZW5kZXJU
YWJsZVNlY3Rpb247CiAgICAgCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGUgOiBwdWJsaWMgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiAKQEAgLTY3LDcgKzY4LDcgQEAKICAgICAKICAgICAv
LyBhbGwgdGhlIGNlbGxzIGluIHRoZSB0YWJsZQogICAgIHZvaWQgY2VsbHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBj
ZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKKyAgICBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVt
biwgdW5zaWduZWQgcm93KTsKICAgICAKICAgICB2b2lkIGNvbHVtbkhlYWRlcnMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCByb3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiAxNDM2MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICByZXR1cm4gQ2VsbFJvbGU7
CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UocGFp
cjxpbnQsIGludD4mIHJvd1JhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJ
bmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpCiB7CiAgICAgaWYg
KCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgICByZXR1
cm47CkBAIC0xMTcsMTEgKzExNyw3IEBACiAgICAgaWYgKCF0YWJsZSB8fCAhc2VjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFRoaXMgd2lsbCBza2lwIGEgdGFibGUgd2l0
aCBqdXN0IGEgdGZvb3QuIFNob3VsZCBmaXggYnkgdXNpbmcgUmVuZGVyVGFibGU6OnRvcFNlY3Rp
b24uCi0gICAgUmVuZGVyVGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+aGVhZGVy
KCk7Ci0gICAgaWYgKCF0YWJsZVNlY3Rpb24pCi0gICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxl
LT5maXJzdEJvZHkoKTsKLSAgICAKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlv
biA9IHRhYmxlLT50b3BTZWN0aW9uKCk7ICAgIAogICAgIHVuc2lnbmVkIHJvd09mZnNldCA9IDA7
CiAgICAgd2hpbGUgKHRhYmxlU2VjdGlvbikgewogICAgICAgICBpZiAodGFibGVTZWN0aW9uID09
IHNlY3Rpb24pCkBAIC0xMzMsNyArMTI5LDcgQEAKICAgICByb3dSYW5nZS5maXJzdCArPSByb3dP
ZmZzZXQ7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4
UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1u
UmFuZ2UpCiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlQ2Vs
bCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAkocmV2aXNpb24gMTQzNjE5KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDkgQEAKICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJs
ZUNlbGwoKSBjb25zdDsKICAgICAKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24g
YW5kIHJvdyBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWly
PGludCwgaW50PiYgcm93UmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpOwogICAgIC8vIGZpbGxzIGluIHRoZSBz
dGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCBj
b2x1bW5JbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiBjb2x1bW5SYW5nZSk7CisgICAgdmlydHVh
bCB2b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5S
YW5nZSk7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnRUYWJsZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0JKHJldmlzaW9uIDE0MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzcwLDEyICsyMzcwLDEyIEBACiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc1Rh
YmxlQ2VsbCgpKSB7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIHBh
aXI8aW50LCBpbnQ+IHJvd1JhbmdlOworICAgICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IHJvd1JhbmdlOwogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbCo+KG1fb2JqZWN0KS0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2Uocm93UmFuZ2UuZmlyc3Qs
IHJvd1JhbmdlLnNlY29uZCldOwogICAgICAgICB9CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0
ZV0pIHsKLSAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOworICAgICAgICAg
ICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fb2JqZWN0KS0+Y29sdW1uSW5kZXhS
YW5nZShjb2x1bW5SYW5nZSk7CiAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
UmFuZ2U6TlNNYWtlUmFuZ2UoY29sdW1uUmFuZ2UuZmlyc3QsIGNvbHVtblJhbmdlLnNlY29uZCld
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5oCShyZXZpc2lvbiAxNDM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsOSBA
QAogICAgICAgICByZXR1cm4gYy5wcmltYXJ5Q2VsbCgpOwogICAgIH0KIAorICAgIC8vIFVzZWQg
YnkgYWNjZXNzaWJpbGl0eS4KKyAgICBSZW5kZXJUYWJsZVJvdyogcm93UmVuZGVyZXJBdCh1bnNp
Z25lZCByb3cpIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZFtyb3ddLnJvd1JlbmRlcmVyOyB9CisKICAg
ICB2b2lkIGFwcGVuZENvbHVtbih1bnNpZ25lZCBwb3MpOwogICAgIHZvaWQgc3BsaXRDb2x1bW4o
dW5zaWduZWQgcG9zLCB1bnNpZ25lZCBmaXJzdCk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzYy
MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDEzLTAyLTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisK
KyAgICAgICAgQVg6IGNlbGxGb3JDb2x1bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhp
ZGRlbiB0YWJsZSBjZWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1o
aWRkZW4taGVhZC1zZWN0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTIxICBKdWxpZW4gQ2hh
ZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlv
dXRdIEltcGxlbWVudCBncmlkIGdyb3d0aCBkdXJpbmcgYXV0byBwbGFjZW1lbnQKSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorVGhpcyB0ZXN0cyB0
aGF0IGNlbGxGb3JSb3dBbmRDb2x1bW4gd29yayBhcyBleHBlY3RlZCB3aGVuIGNlbGxzIGFyZSBo
aWRkZW4gaW4gc2VjdGlvbnMgYW5kIHJvd3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCisKK1RhYmxlMSBoYXMgYSBoaWRkZW4gZmlyc3Qgcm93LiBWZXJpZnkgYWNjZXNzaW5nIGNl
bGxzIHdvcmtzIGFzIGV4cGVjdGVkLgorUEFTUyB0YWJsZTEucm93Q291bnQgaXMgMgorUEFTUyAh
dGFibGUxY2VsbDEgfHwgIXRhYmxlMWNlbGwxLmlzVmFsaWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTFj
ZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgndGFibGUxY2VsbCcpKSBpcyB0cnVlCitQQVNTIHRhYmxlMWNlbGwyLnJvd0luZGV4UmFuZ2Uo
KSBpcyAnezEsIDF9JworUEFTUyB0YWJsZTFjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkgaXMgJ3sw
LCAxfScKKworVGFibGUyIGhhcyBhIGhpZGRlbiBmaXJzdCBzZWN0aW9uLiBWZXJpZnkgYWNjZXNz
aW5nIGNlbGxzIHdvcmtzIGFzIGV4cGVjdGVkLgorUEFTUyB0YWJsZTIucm93Q291bnQgaXMgMgor
UEFTUyAhdGFibGUyY2VsbDEgfHwgIXRhYmxlMmNlbGwxLmlzVmFsaWQgaXMgdHJ1ZQorUEFTUyB0
YWJsZTJjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgndGFibGUyY2VsbCcpKSBpcyB0cnVlCitQQVNTIHRhYmxlMmNlbGwyLnJvd0luZGV4
UmFuZ2UoKSBpcyAnezEsIDF9JworUEFTUyB0YWJsZTJjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkg
aXMgJ3swLCAxfScKKworVGFibGUzIG9ubHkgaGFzIGEgZm9vdGVyIHNlY3Rpb24uCitQQVNTIHRh
YmxlMy5yb3dDb3VudCBpcyAzCitQQVNTICF0YWJsZTNjZWxsMSB8fCAhdGFibGUzY2VsbDEuaXNW
YWxpZCBpcyB0cnVlCitQQVNTIHRhYmxlM2NlbGwyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsZTNjZWxsJykpIGlzIHRydWUKK1BBU1Mg
dGFibGUzY2VsbDIucm93SW5kZXhSYW5nZSgpIGlzICd7MiwgMX0nCitQQVNTIHRhYmxlM2NlbGwy
LmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAnezAsIDF9JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1o
aWRkZW4taGVhZC1zZWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9ImNvbnRlbnQi
PgorCis8IS0tIEZpcnN0IHJvdyBpcyBoaWRkZW4gLS0+Cis8dGFibGUgaWQ9InRhYmxlMSIgYm9y
ZGVyPTE+CisgIDx0cj48dGggaGlkZGVuPmhlYWRlciAxPC90aD48dGggaGlkZGVuPmhlYWRlciAy
PC90aD48L3RyPgorICA8dHI+PHRkIGlkPSJ0YWJsZTFjZWxsIj5mb288L3RkPjx0ZD5iYXI8L3Rk
PjwvdHI+Cis8L3RhYmxlPgorCis8IS0tIEZpcnN0IHNlY3Rpb24gaXMgaGlkZGVuIC0tPgorPHRh
YmxlIGlkPSJ0YWJsZTIiIGJvcmRlcj0xPgorICA8dGhlYWQ+PHRoIGhpZGRlbj5oZWFkZXIgMTwv
dGg+PHRoIGhpZGRlbj5oZWFkZXIgMjwvdGg+PC90aGVhZD4KKyAgPHRyPjx0ZCBpZD0idGFibGUy
Y2VsbCI+Zm9vPC90ZD48dGQ+YmFyPC90ZD48L3RyPgorPC90YWJsZT4KKworPCEtLSBGaXJzdCBh
bmQgbWlkZGxlIHNlY3Rpb24gaXMgaGlkZGVuIC0tPgorPHRhYmxlIGlkPSJ0YWJsZTMiIGJvcmRl
cj0xPgorICA8dGhlYWQ+PHRyPjx0aCBoaWRkZW4+aGVhZGVyIDE8L3RoPjx0aCBoaWRkZW4+aGVh
ZGVyIDI8L3RoPjwvdHI+PC90aGVhZD4KKyAgPHRyPjx0ZCBoaWRkZW4+Zm9vPC90ZD48dGQgaGlk
ZGVuPmJhcjwvdGQ+PC90cj4KKyAgPHRmb290Pjx0cj48dGQgaWQ9InRhYmxlM2NlbGwiPmZvb3Q8
L3RkPjx0ZD5mb290PC90ZD48L3RyPjwvdGZvb3Q+Cis8L3RhYmxlPgorCis8L2Rpdj4KKworPHNj
cmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgY2VsbEZvclJvd0FuZENv
bHVtbiB3b3JrIGFzIGV4cGVjdGVkIHdoZW4gY2VsbHMgYXJlIGhpZGRlbiBpbiBzZWN0aW9ucyBh
bmQgcm93cy4iKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KworICAgICAgICBkZWJ1ZygiXG5UYWJsZTEgaGFzIGEgaGlkZGVuIGZpcnN0IHJvdy4gVmVyaWZ5
IGFjY2Vzc2luZyBjZWxscyB3b3JrcyBhcyBleHBlY3RlZC4iKTsKKyAgICAgICAgdmFyIHRhYmxl
MSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGUx
Iik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTEucm93Q291bnQiLCAiMiIpOworICAgICAgICB2
YXIgdGFibGUxY2VsbDEgPSB0YWJsZTEuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKTsKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCIhdGFibGUxY2VsbDEgfHwgIXRhYmxlMWNlbGwxLmlzVmFsaWQiKTsK
KyAgICAgICAgdmFyIHRhYmxlMWNlbGwyID0gdGFibGUxLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwg
MSk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGFibGUxY2VsbDIuaXNFcXVhbChhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxlMWNlbGwnKSkiKTsKKyAg
ICAgICAgc2hvdWxkQmUoInRhYmxlMWNlbGwyLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDF9JyIp
OworICAgICAgICBzaG91bGRCZSgidGFibGUxY2VsbDIuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7
MCwgMX0nIik7CisKKyAgICAgICAgZGVidWcoIlxuVGFibGUyIGhhcyBhIGhpZGRlbiBmaXJzdCBz
ZWN0aW9uLiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdvcmtzIGFzIGV4cGVjdGVkLiIpOworICAg
ICAgICB2YXIgdGFibGUyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJ0YWJsZTIiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlMi5yb3dDb3VudCIsICIy
Iik7CisgICAgICAgIHZhciB0YWJsZTJjZWxsMSA9IHRhYmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93
KDAsIDApOworICAgICAgICBzaG91bGRCZVRydWUoIiF0YWJsZTJjZWxsMSB8fCAhdGFibGUyY2Vs
bDEuaXNWYWxpZCIpOworICAgICAgICB2YXIgdGFibGUyY2VsbDIgPSB0YWJsZTIuY2VsbEZvckNv
bHVtbkFuZFJvdygwLCAxKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0YWJsZTJjZWxsMi5pc0Vx
dWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUy
Y2VsbCcpKSIpOworICAgICAgICBzaG91bGRCZSgidGFibGUyY2VsbDIucm93SW5kZXhSYW5nZSgp
IiwgIid7MSwgMX0nIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTJjZWxsMi5jb2x1bW5JbmRl
eFJhbmdlKCkiLCAiJ3swLCAxfSciKTsKKworICAgICAgICBkZWJ1ZygiXG5UYWJsZTMgb25seSBo
YXMgYSBmb290ZXIgc2VjdGlvbi4iKTsKKyAgICAgICAgdmFyIHRhYmxlMyA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGUzIik7CisgICAgICAgIHNo
b3VsZEJlKCJ0YWJsZTMucm93Q291bnQiLCAiMyIpOworICAgICAgICB2YXIgdGFibGUzY2VsbDEg
PSB0YWJsZTMuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCIhdGFibGUzY2VsbDEgfHwgIXRhYmxlM2NlbGwxLmlzVmFsaWQiKTsKKyAgICAgICAgdmFyIHRh
YmxlM2NlbGwyID0gdGFibGUzLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMik7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZSgidGFibGUzY2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxlM2NlbGwnKSkiKTsKKyAgICAgICAgc2hvdWxkQmUo
InRhYmxlM2NlbGwyLnJvd0luZGV4UmFuZ2UoKSIsICInezIsIDF9JyIpOworICAgICAgICBzaG91
bGRCZSgidGFibGUzY2VsbDIuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MCwgMX0nIik7CisgICAg
ICAKKyAgICAgICAgLy8gQ2xlYXIgdGhlIEhUTUwgZm9yIGJldHRlciByZXN1bHRzLgorICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLmlubmVySFRNTCA9ICIiOyAgCisg
ICAgfQorCisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>
<flag name="commit-queue"
          id="210012"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189564</attachid>
            <date>2013-02-21 11:29:31 -0800</date>
            <delta_ts>2013-02-21 11:48:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30039</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAyLTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1
bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSB0YWJsZSBoYWQg
aGlkZGVuIGNlbGxzLCB0aGVuIGFjY2Vzc2liaWxpdHkgY29kZSB3YXMgYmVpbmcgY29uZnVzZWQg
aW4gYSBmZXcgd2F5cy4KKyAgICAgICAgMSkgVGhlIGNlbGxGb3JDb2x1bW5BbmRSb3cgbWV0aG9k
IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgaW5mb3JtYXRpb24gc2luY2UgdGhhdCB3YXMKKyAgICAg
ICAgICAgdXNpbmcgdGhlIFJlbmRlclRhYmxlU2VjdGlvbiB0byByZXRyaWV2ZSBhIGNlbGwsIHdo
aWNoIGRpZCBub3QgaGF2ZSB0aGUgc2FtZSBkYXRhIGFzIHRoZSBBWFRhYmxlCisgICAgICAgIDIp
IFRoZSB3YXkgd2Ugd2VyZSBhZGRpbmcgY2hpbGRyZW4gbWFkZSBpdCBpbXBvc3NpYmxlIHRvIGRl
dGVybWluZSBjb2x1bW4gYW5kIHJvdyByYW5nZSBiZWNhdXNlIHdlIAorICAgICAgICAgICB3b3Vs
ZCBza2lwIHJvd3MgdGhhdCBoYWQgaGlkZGVuIGNoaWxkcmVuCisgICAgICAgIDMpIEFjY2Vzc2li
aWxpdHlBUklBR3JpZCBhbmQgQWNjZXNzaWJpbGl0eVRhYmxlIHdlcmUgdXNpbmcgZGlmZmVyZW50
IG1ldGhvZHMgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cKKworICAgICAgICBUaGUgZml4IGRvZXMg
YSBmZXcgdGhpbmdzIHRvIG1ha2UgdGhpbmdzIHJpZ2h0OgorICAgICAgICAxKSBBbHdheXMgYWRk
IGFuIGFjY2Vzc2liaWxpdHkgcm93LCBldmVuIGlmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGNlbGxz
IGluIHRoYXQgcm93LgorICAgICAgICAyKSBIYXZlIG9uZSBtZXRob2QgZm9yIEFYVGFibGUgYW5k
IEFYQVJJQUdyaWQgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cuCisgICAgICAgIDMpIENoYW5nZSBj
ZWxsRm9yQ29sdW1uQW5kUm93IHRvIHF1ZXJ5IHRoZSBhY2Nlc3NpYmlsaXR5IGNoaWxkcmVuIHJh
dGhlciB0aGFuIHRoZSBSZW5kZXJUYWJsZVNlY3Rpb24gaW4gZGV0ZXJtaW5pbmcgdGhlIHJvdywg
Y29sIGluZm8uCisgICAgICAgIDQpIGNlbGxGb3JDb2x1bW5BbmRSb3cgc2hvdWxkIHVzZSB1bnNp
Z25lZCB2YWx1ZXMgaW5zdGVhZCBvZiBpbnQgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmg6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5QVJJQUdyaWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JD
b2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUYWJsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJs
ZS5jcHAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmg6CisgICAgICAg
IChSZW5kZXJUYWJsZVNlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0
aW9uOjpyb3dSZW5kZXJlckF0KToKKwogMjAxMy0wMi0yMSAgSnVsaWVuIENoYWZmcmFpeCAgPGpj
aGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBJbXBsZW1l
bnQgZ3JpZCBncm93dGggZHVyaW5nIGF1dG8gcGxhY2VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCShy
ZXZpc2lvbiAxNDM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw1MCArMTMyLDQgQEAKICAg
ICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoaGVhZGVyQ29udGFpbmVyT2JqZWN0KTsKIH0KICAgICAK
LUFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y2VsbEZvckNv
bHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdykKLXsKLSAgICBpZiAoIW1f
cmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHVwZGF0ZUNoaWxkcmVuSWZO
ZWNlc3NhcnkoKTsKLSAgICAKLSAgICBpZiAoY29sdW1uID49IGNvbHVtbkNvdW50KCkgfHwgcm93
ID49IHJvd0NvdW50KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGludCBpbnRSb3cg
PSAoaW50KXJvdzsKLSAgICBpbnQgaW50Q29sdW1uID0gKGludCljb2x1bW47Ci0KLSAgICBwYWly
PGludCwgaW50PiBjb2x1bW5SYW5nZTsKLSAgICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsKLSAg
ICAKLSAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSByb3dzIGluIGNhc2UgdGhl
IGRlc2lyZWQgY2VsbCBoYXMgYSByb3dzcGFuIGFuZCBleGlzdHMKLSAgICAvLyBpbiBhIHByZXZp
b3VzIHJvdy4KLSAgICBmb3IgKDsgaW50Um93ID49IDA7IC0taW50Um93KSB7Ci0gICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHRhYmxlUm93ID0gbV9yb3dzW2ludFJvd10uZ2V0KCk7Ci0gICAg
ICAgIGlmICghdGFibGVSb3cpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAg
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHRhYmxlUm93LT5jaGls
ZHJlbigpOwotICAgICAgICB1bnNpZ25lZCBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLnNpemUo
KTsKLSAgICAgICAgCi0gICAgICAgIC8vIFNpbmNlIHNvbWUgY2VsbHMgbWF5IGhhdmUgY29sc3Bh
bnMsIHdlIGhhdmUgdG8gY2hlY2sgdGhlIGFjdHVhbCByYW5nZSBvZiBlYWNoCi0gICAgICAgIC8v
IGNlbGwgdG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSByaWdodCBvbmUuCi0gICAgICAgIGZvciAo
dW5zaWduZWQgayA9IDA7IGsgPCBjaGlsZHJlbkxlbmd0aDsgKytrKSB7Ci0gICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCA9IGNoaWxkcmVuW2tdLmdldCgpOwotICAgICAgICAg
ICAgaWYgKCFjaGlsZC0+aXNUYWJsZUNlbGwoKSkgCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIHRhYmxl
Q2VsbENoaWxkID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KGNoaWxkKTsK
LSAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxkLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdl
KTsKLSAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxkLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKChpbnRDb2x1bW4gPj0gY29sdW1uUmFuZ2Uu
Zmlyc3QgJiYgaW50Q29sdW1uIDwgKGNvbHVtblJhbmdlLmZpcnN0ICsgY29sdW1uUmFuZ2Uuc2Vj
b25kKSkKLSAgICAgICAgICAgICAgICAmJiAoaW50Um93ID49IHJvd1JhbmdlLmZpcnN0ICYmIGlu
dFJvdyA8IChyb3dSYW5nZS5maXJzdCArIHJvd1JhbmdlLnNlY29uZCkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0YWJsZUNlbGxDaGlsZDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biAwOwotfQotICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCShyZXZp
c2lvbiAxNDM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw2IEBACiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsKiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWdu
ZWQgcm93KTsKLQogcHJpdmF0ZToKICAgICAvLyBBUklBIHRyZWVncmlkcyBhbmQgZ3JpZHMgc3Vw
cG9ydCBzZWxlY3RlZCByb3dzLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlbGVjdGVkUm93
cygpIHsgcmV0dXJuIHRydWU7IH0gICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAJKHJldmlz
aW9uIDE0MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAKICAgICBy
ZXR1cm4gcGFyZW50OwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpy
b3dJbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSkKK3ZvaWQgQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJv
d1JhbmdlKQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVj
dFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQpAQCAtMTAwLDcgKzEwMCw3IEBACiAgICAg
cm93UmFuZ2Uuc2Vjb25kID0gMTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
Ojpjb2x1bW5JbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiBjb2x1bW5SYW5nZSkKK3ZvaWQgQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4mIGNvbHVtblJhbmdlKQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsLmgJKHJldmlzaW9uIDE0MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw5
ICs0Miw5IEBACiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbCgpOwogICAg
IAogICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgY2Vs
bAotICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5n
ZSk7CisgICAgdmlydHVhbCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+JiByb3dSYW5nZSk7CiAgICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBj
b2x1bW4gc3BhbiBvZiBjZWxsCi0gICAgdmlydHVhbCB2b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFp
cjxpbnQsIGludD4mIGNvbHVtblJhbmdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sdW1uSW5kZXhS
YW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdlKTsKICAgICAKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRhYmxlKCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCShyZXZpc2lvbiAxNDM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw1
MSArMzQ2LDQyIEBACiAKICAgICAvLyBnbyB0aHJvdWdoIGFsbCB0aGUgYXZhaWxhYmxlIHNlY3Rp
b25zIHRvIHB1bGwgb3V0IHRoZSByb3dzCiAgICAgLy8gYW5kIGFkZCB0aGVtIGFzIGNoaWxkcmVu
Ci0gICAgLy8gRklYTUU6IFRoaXMgd2lsbCBza2lwIGEgdGFibGUgd2l0aCBqdXN0IGEgdGZvb3Qu
IFNob3VsZCBmaXggYnkgdXNpbmcgUmVuZGVyVGFibGU6OnRvcFNlY3Rpb24uCi0gICAgUmVuZGVy
VGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+aGVhZGVyKCk7CisgICAgUmVuZGVy
VGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+dG9wU2VjdGlvbigpOwogICAgIGlm
ICghdGFibGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+Zmlyc3RCb2R5
KCk7Ci0gICAgCi0gICAgaWYgKCF0YWJsZVNlY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGluaXRpYWxUYWJsZVNlY3Rpb24gPSB0YWJsZVNlY3Rp
b247Ci0gICAgCiAgICAgd2hpbGUgKHRhYmxlU2VjdGlvbikgewogICAgICAgICAKICAgICAgICAg
SGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gYXBwZW5kZWRSb3dzOwotCiAgICAgICAgIHVu
c2lnbmVkIG51bVJvd3MgPSB0YWJsZVNlY3Rpb24tPm51bVJvd3MoKTsKLSAgICAgICAgdW5zaWdu
ZWQgbnVtQ29scyA9IHRhYmxlU2VjdGlvbi0+bnVtQ29sdW1ucygpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7Ci0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbEluZGV4ID0gMDsgY29sSW5kZXggPCBudW1Db2xz
OyArK2NvbEluZGV4KSB7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgUmVuZGVy
VGFibGVDZWxsKiBjZWxsID0gdGFibGVTZWN0aW9uLT5wcmltYXJ5Q2VsbEF0KHJvd0luZGV4LCBj
b2xJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjZWxsKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiByb3dPYmplY3QgPSBheENhY2hlLT5nZXRPckNyZWF0ZShjZWxsLT5wYXJlbnQo
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyb3dPYmplY3QtPmlzVGFibGVSb3coKSkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eVRhYmxlUm93KiByb3cgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGVSb3cqPihyb3dPYmplY3QpOwotICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gY2hl
Y2sgZXZlcnkgY2VsbCBmb3IgYSBuZXcgcm93LCBiZWNhdXNlIGNlbGwgc3BhbnMKLSAgICAgICAg
ICAgICAgICAvLyBjYW4gY2F1c2UgdXMgdG8gbWVzcyByb3dzIGlmIHdlIGp1c3QgY2hlY2sgdGhl
IGZpcnN0IGNvbHVtbgotICAgICAgICAgICAgICAgIGlmIChhcHBlbmRlZFJvd3MuY29udGFpbnMo
cm93KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgcm93LT5zZXRSb3dJbmRleCgoaW50KW1fcm93cy5zaXplKCkpOyAgICAg
ICAgCi0gICAgICAgICAgICAgICAgbV9yb3dzLmFwcGVuZChyb3cpOwotICAgICAgICAgICAgICAg
IGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAgICAgICAgICAg
IG1fY2hpbGRyZW4uYXBwZW5kKHJvdyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlbmRl
clRhYmxlUm93KiByZW5kZXJSb3cgPSB0YWJsZVNlY3Rpb24tPnJvd1JlbmRlcmVyQXQocm93SW5k
ZXgpOworICAgICAgICAgICAgaWYgKCFyZW5kZXJSb3cpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvd09i
amVjdCA9IGF4Q2FjaGUtPmdldE9yQ3JlYXRlKHJlbmRlclJvdyk7CisgICAgICAgICAgICBpZiAo
IXJvd09iamVjdC0+aXNUYWJsZVJvdygpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVSb3cqIHJvdyA9IHN0YXRp
Y19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdyo+KHJvd09iamVjdCk7CisgICAgICAgICAgICAv
LyB3ZSBuZWVkIHRvIGNoZWNrIGV2ZXJ5IGNlbGwgZm9yIGEgbmV3IHJvdywgYmVjYXVzZSBjZWxs
IHNwYW5zCisgICAgICAgICAgICAvLyBjYW4gY2F1c2UgdXMgdG8gbWVzcyByb3dzIGlmIHdlIGp1
c3QgY2hlY2sgdGhlIGZpcnN0IGNvbHVtbgorICAgICAgICAgICAgaWYgKGFwcGVuZGVkUm93cy5j
b250YWlucyhyb3cpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisg
ICAgICAgICAgICByb3ctPnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7CisgICAgICAg
ICAgICBtX3Jvd3MuYXBwZW5kKHJvdyk7CisgICAgICAgICAgICBpZiAoIXJvdy0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQorICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdyk7
CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93LT5jaGlsZHJlbigpKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOwog
I2VuZGlmCi0gICAgICAgICAgICAgICAgYXBwZW5kZWRSb3dzLmFkZChyb3cpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYXBwZW5kZWRSb3dzLmFkZChyb3cpOwogICAgICAgICB9Ci0gICAg
ICAgIAorICAgIAogICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+c2VjdGlvbkJlbG93KHRh
YmxlU2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlvbnMpOwogICAgIH0KICAgICAKQEAgLTUwOSw3NiAr
NTAwLDM2IEBACiAKIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6
Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdykKIHsKLSAg
ICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGUoKSkKKyAgICB1cGRhdGVD
aGlsZHJlbklmTmVjZXNzYXJ5KCk7CisgICAgaWYgKGNvbHVtbiA+PSBjb2x1bW5Db3VudCgpIHx8
IHJvdyA+PSByb3dDb3VudCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICB1cGRhdGVD
aGlsZHJlbklmTmVjZXNzYXJ5KCk7Ci0gICAgCi0gICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdG9S
ZW5kZXJUYWJsZShtX3JlbmRlcmVyKTsKLSAgICAvLyBGSVhNRTogVGhpcyB3aWxsIHNraXAgYSB0
YWJsZSB3aXRoIGp1c3QgYSB0Zm9vdC4gU2hvdWxkIGZpeCBieSB1c2luZyBSZW5kZXJUYWJsZTo6
dG9wU2VjdGlvbi4KLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlvbiA9IHRhYmxl
LT5oZWFkZXIoKTsKLSAgICBpZiAoIXRhYmxlU2VjdGlvbikKLSAgICAgICAgdGFibGVTZWN0aW9u
ID0gdGFibGUtPmZpcnN0Qm9keSgpOwotICAgIAotICAgIFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9
IDA7Ci0gICAgdW5zaWduZWQgcm93Q291bnQgPSAwOwotICAgIHVuc2lnbmVkIHJvd09mZnNldCA9
IDA7Ci0gICAgd2hpbGUgKHRhYmxlU2VjdGlvbikgewotICAgICAgICAKLSAgICAgICAgdW5zaWdu
ZWQgbnVtUm93cyA9IHRhYmxlU2VjdGlvbi0+bnVtUm93cygpOwotICAgICAgICB1bnNpZ25lZCBu
dW1Db2xzID0gdGFibGVTZWN0aW9uLT5udW1Db2x1bW5zKCk7Ci0gICAgICAgIAotICAgICAgICBy
b3dDb3VudCArPSBudW1Sb3dzOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgc2VjdGlvblNw
ZWNpZmljUm93ID0gcm93IC0gcm93T2Zmc2V0OyAgICAgICAgICAgIAotICAgICAgICBpZiAocm93
IDwgcm93Q291bnQgJiYgY29sdW1uIDwgbnVtQ29scyAmJiBzZWN0aW9uU3BlY2lmaWNSb3cgPCBu
dW1Sb3dzKSB7Ci0gICAgICAgICAgICBjZWxsID0gdGFibGVTZWN0aW9uLT5wcmltYXJ5Q2VsbEF0
KHNlY3Rpb25TcGVjaWZpY1JvdywgY29sdW1uKTsKKyAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0
aHJvdWdoIHRoZSByb3dzIGluIGNhc2UgdGhlIGRlc2lyZWQgY2VsbCBoYXMgYSByb3dzcGFuIGFu
ZCBleGlzdHMgaW4gYSBwcmV2aW91cyByb3cuCisgICAgZm9yICh1bnNpZ25lZCByb3dJbmRleENv
dW50ZXIgPSByb3cgKyAxOyByb3dJbmRleENvdW50ZXIgPiAwOyAtLXJvd0luZGV4Q291bnRlcikg
eworICAgICAgICB1bnNpZ25lZCByb3dJbmRleCA9IHJvd0luZGV4Q291bnRlciAtIDE7CisgICAg
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IG1fcm93c1tyb3dJbmRl
eF0tPmNoaWxkcmVuKCk7CisgICAgICAgIC8vIFNpbmNlIHNvbWUgY2VsbHMgbWF5IGhhdmUgY29s
c3BhbnMsIHdlIGhhdmUgdG8gY2hlY2sgdGhlIGFjdHVhbCByYW5nZSBvZiBlYWNoCisgICAgICAg
IC8vIGNlbGwgdG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSByaWdodCBvbmUuCisgICAgICAgIGZv
ciAodW5zaWduZWQgY29sSW5kZXhDb3VudGVyID0gY2hpbGRyZW4uc2l6ZSgpOyBjb2xJbmRleENv
dW50ZXIgPiAwOyAtLWNvbEluZGV4Q291bnRlcikgeworICAgICAgICAgICAgdW5zaWduZWQgY29s
SW5kZXggPSBjb2xJbmRleENvdW50ZXIgLSAxOworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY2hpbGQgPSBjaGlsZHJlbltjb2xJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBBU1NF
UlQoY2hpbGQtPmlzVGFibGVDZWxsKCkpOworICAgICAgICAgICAgaWYgKCFjaGlsZC0+aXNUYWJs
ZUNlbGwoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgLy8gd2UgZGlkbid0IGZpbmQgdGhlIGNlbGwsIHdoaWNoIG1lYW5zIHRoZXJlJ3Mgc3Bh
bm5pbmcgaGFwcGVuaW5nCi0gICAgICAgICAgICAvLyBzZWFyY2ggYmFja3dhcmRzIHRvIGZpbmQg
dGhlIHNwYW5uaW5nIGNlbGwKLSAgICAgICAgICAgIGlmICghY2VsbCkgewotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIC8vIGZpcnN0IHRyeSByb3dzCi0gICAgICAgICAgICAgICAg
Zm9yIChpbnQgdGVzdFJvdyA9IHNlY3Rpb25TcGVjaWZpY1JvdyAtIDE7IHRlc3RSb3cgPj0gMDsg
LS10ZXN0Um93KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnBy
aW1hcnlDZWxsQXQodGVzdFJvdywgY29sdW1uKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gY2Vs
bCBvdmVybGFwcGVkLiB1c2UgdGhpcyBvbmUKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFj
ZWxsIHx8IGNlbGwtPnJvd1NwYW4oKSA+PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNl
bGwgJiYgKChjZWxsLT5yb3dJbmRleCgpICsgKGNlbGwtPnJvd1NwYW4oKSAtIDEpKSA+PSBzZWN0
aW9uU3BlY2lmaWNSb3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNlbGwgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAoIWNlbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8g
dHJ5IGNvbHMKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgdGVzdENvbCA9IGNvbHVtbiAt
IDE7IHRlc3RDb2wgPj0gMDsgLS10ZXN0Q29sKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
ZWxsID0gdGFibGVTZWN0aW9uLT5wcmltYXJ5Q2VsbEF0KHNlY3Rpb25TcGVjaWZpY1JvdywgdGVz
dENvbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjZWxsIG92ZXJsYXBwZWQuIHVzZSB0
aGlzIG9uZQotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFjZWxsIHx8IGNlbGwtPnJv
d1NwYW4oKSA+PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsICYmICgoY2Vs
bC0+Y29sKCkgKyAoY2VsbC0+Y29sU3BhbigpIC0gMSkpID49IGNvbHVtbikpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjZWxsID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKKyAg
ICAgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKKyAgICAgICAgICAg
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIHRhYmxlQ2VsbENoaWxkID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KGNoaWxkKTsKKyAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxk
LT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKKyAgICAgICAgICAgIHRhYmxlQ2VsbENo
aWxkLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKChjb2x1bW4gPj0gY29sdW1uUmFuZ2UuZmlyc3QgJiYgY29sdW1uIDwgKGNvbHVtblJhbmdl
LmZpcnN0ICsgY29sdW1uUmFuZ2Uuc2Vjb25kKSkKKyAgICAgICAgICAgICAgICAmJiAocm93ID49
IHJvd1JhbmdlLmZpcnN0ICYmIHJvdyA8IChyb3dSYW5nZS5maXJzdCArIHJvd1JhbmdlLnNlY29u
ZCkpKQorICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZUNlbGxDaGlsZDsKICAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgaWYgKGNlbGwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Ci0gICAgICAgIHJvd09mZnNldCArPSBudW1Sb3dzOwotICAgICAgICAvLyB3ZSBkaWRuJ3QgZmlu
ZCBhbnl0aGluZyBiZXR3ZWVuIHRoZSByb3dzIHdlIHNob3VsZCBoYXZlCi0gICAgICAgIGlmIChy
b3cgPCByb3dDb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB0YWJsZVNlY3Rpb24g
PSB0YWJsZS0+c2VjdGlvbkJlbG93KHRhYmxlU2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlvbnMpOwog
ICAgIH0KICAgICAKLSAgICBpZiAoIWNlbGwpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGNlbGxPYmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKGNlbGwpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNlbGxP
YmplY3QtPmlzVGFibGVDZWxsKCkpOwotICAgIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsKj4oY2VsbE9iamVjdCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIEFj
Y2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZTo6cm9sZVZhbHVlKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuaAkocmV2aXNpb24gMTQzNjE5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOworY2xhc3Mg
UmVuZGVyVGFibGVTZWN0aW9uOwogICAgIAogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlIDogcHVi
bGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgewogCkBAIC02Nyw3ICs2OCw3IEBACiAgICAg
CiAgICAgLy8gYWxsIHRoZSBjZWxscyBpbiB0aGUgdGFibGUKICAgICB2b2lkIGNlbGxzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbCogY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7
CisgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25l
ZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CiAgICAgCiAgICAgdm9pZCBjb2x1bW5IZWFkZXJzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIHZvaWQgcm93SGVhZGVycyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAkocmV2aXNpb24gMTQz
NjE5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgcmV0dXJuIENl
bGxSb2xlOwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJh
bmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSkKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bDo6cm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKQogewog
ICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE3LDExICsxMTcsNyBAQAogICAgIGlmICghdGFibGUgfHwgIXNlY3Rp
b24pCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRh
YmxlIHdpdGgganVzdCBhIHRmb290LiBTaG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0
b3BTZWN0aW9uLgotICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUt
PmhlYWRlcigpOwotICAgIGlmICghdGFibGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24g
PSB0YWJsZS0+Zmlyc3RCb2R5KCk7Ci0gICAgCisgICAgUmVuZGVyVGFibGVTZWN0aW9uKiB0YWJs
ZVNlY3Rpb24gPSB0YWJsZS0+dG9wU2VjdGlvbigpOyAgICAKICAgICB1bnNpZ25lZCByb3dPZmZz
ZXQgPSAwOwogICAgIHdoaWxlICh0YWJsZVNlY3Rpb24pIHsKICAgICAgICAgaWYgKHRhYmxlU2Vj
dGlvbiA9PSBzZWN0aW9uKQpAQCAtMTMzLDcgKzEyOSw3IEBACiAgICAgcm93UmFuZ2UuZmlyc3Qg
Kz0gcm93T2Zmc2V0OwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1
bW5JbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiBjb2x1bW5SYW5nZSkKK3ZvaWQgQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4m
IGNvbHVtblJhbmdlKQogewogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNU
YWJsZUNlbGwoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgJKHJldmlzaW9uIDE0
MzYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBACiAgICAgdmlydHVhbCBib29s
IGlzVGFibGVDZWxsKCkgY29uc3Q7CiAgICAgCiAgICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxv
Y2F0aW9uIGFuZCByb3cgc3BhbiBvZiBjZWxsCi0gICAgdmlydHVhbCB2b2lkIHJvd0luZGV4UmFu
Z2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhS
YW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKTsKICAgICAvLyBmaWxscyBp
biB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFs
IHZvaWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgY29sdW1uUmFuZ2UpOworICAg
IHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYg
Y29sdW1uUmFuZ2UpOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVRhYmxlLmNwcAkocmV2aXNpb24gMTQzNjE5KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBACiB7CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bCogYXhDZWxsID0gY2VsbEF0SW5kZXgodGFibGUsIGluZGV4KTsKICAgICBpZiAoYXhDZWxsKSB7
Ci0gICAgICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOworICAgICAgICBwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CiAgICAgICAgIGF4Q2VsbC0+Y29sdW1uSW5kZXhS
YW5nZShjb2x1bW5SYW5nZSk7CiAgICAgICAgIHJldHVybiBjb2x1bW5SYW5nZS5maXJzdDsKICAg
ICB9CkBAIC0xMjYsNyArMTI2LDcgQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBh
eENlbGwgPSBjZWxsQXRJbmRleCh0YWJsZSwgaW5kZXgpOwogICAgIGlmIChheENlbGwpIHsKLSAg
ICAgICAgcGFpcjxpbnQsIGludD4gcm93UmFuZ2U7CisgICAgICAgIHBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiByb3dSYW5nZTsKICAgICAgICAgYXhDZWxsLT5yb3dJbmRleFJhbmdlKHJvd1Jhbmdl
KTsKICAgICAgICAgcmV0dXJuIHJvd1JhbmdlLmZpcnN0OwogICAgIH0KQEAgLTE1Myw3ICsxNTMs
NyBAQAogewogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGwodGFibGUs
IHJvdywgY29sdW1uKTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAgIHBhaXI8aW50LCBpbnQ+
IGNvbHVtblJhbmdlOworICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFu
Z2U7CiAgICAgICAgIGF4Q2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAg
ICAgIHJldHVybiBjb2x1bW5SYW5nZS5zZWNvbmQ7CiAgICAgfQpAQCAtMTY0LDcgKzE2NCw3IEBA
CiB7CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0gY2VsbCh0YWJsZSwgcm93
LCBjb2x1bW4pOwogICAgIGlmIChheENlbGwpIHsKLSAgICAgICAgcGFpcjxpbnQsIGludD4gcm93
UmFuZ2U7CisgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKICAgICAg
ICAgYXhDZWxsLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICAgICAgcmV0dXJuIHJvd1Jh
bmdlLnNlY29uZDsKICAgICB9CkBAIC0xNzksNyArMTc5LDcgQEAKICAgICAgICAgc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4oYWNjVGFibGUpLT5jb2x1bW5IZWFkZXJzKGFsbENvbHVt
bkhlYWRlcnMpOwogICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGFsbENvbHVtbkhlYWRl
cnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY29sdW1uQ291bnQ7
ICsraykgewotICAgICAgICAgICAgcGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7CisgICAgICAg
ICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CiAgICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbCo+KGFsbENvbHVtbkhlYWRlcnMuYXQoaykuZ2V0KCkpOwogICAgICAgICAgICAgY2Vs
bC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgICAgICAgICBpZiAoY29sdW1u
UmFuZ2UuZmlyc3QgPD0gY29sdW1uICYmIGNvbHVtbiA8IGNvbHVtblJhbmdlLmZpcnN0ICsgY29s
dW1uUmFuZ2Uuc2Vjb25kKQpAQCAtMTk3LDcgKzE5Nyw3IEBACiAgICAgICAgIHN0YXRpY19jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZSo+KGFjY1RhYmxlKS0+cm93SGVhZGVycyhhbGxSb3dIZWFkZXJz
KTsKICAgICAgICAgdW5zaWduZWQgcm93Q291bnQgPSBhbGxSb3dIZWFkZXJzLnNpemUoKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IHJvd0NvdW50OyArK2spIHsKLSAgICAgICAg
ICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOworICAgICAgICAgICAgcGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IHJvd1JhbmdlOwogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCog
Y2VsbCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihhbGxSb3dIZWFkZXJz
LmF0KGspLmdldCgpKTsKICAgICAgICAgICAgIGNlbGwtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2Up
OwogICAgICAgICAgICAgaWYgKHJvd1JhbmdlLmZpcnN0IDw9IHJvdyAmJiByb3cgPCByb3dSYW5n
ZS5maXJzdCArIHJvd1JhbmdlLnNlY29uZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAxNDM2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjM3MCwxMiArMjM3MCwxMiBAQAogICAgIAogICAgIGlmIChtX29iamVjdC0+
aXNUYWJsZUNlbGwoKSkgewogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAg
ICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsKKyAgICAgICAgICAgIHBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiByb3dSYW5nZTsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwqPihtX29iamVjdCktPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwogICAgICAgICAg
ICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHJvd1JhbmdlLmZp
cnN0LCByb3dSYW5nZS5zZWNvbmQpXTsKICAgICAgICAgfQogICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4UmFuZ2VBdHRy
aWJ1dGVdKSB7Ci0gICAgICAgICAgICBwYWlyPGludCwgaW50PiBjb2x1bW5SYW5nZTsKKyAgICAg
ICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAgICAgICAgICAg
IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihtX29iamVjdCktPmNvbHVtbklu
ZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVl
V2l0aFJhbmdlOk5TTWFrZVJhbmdlKGNvbHVtblJhbmdlLmZpcnN0LCBjb2x1bW5SYW5nZS5zZWNv
bmQpXTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uaAkocmV2aXNpb24gMTQzNjE5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUz
LDkgQEAKICAgICAgICAgcmV0dXJuIGMucHJpbWFyeUNlbGwoKTsKICAgICB9CiAKKyAgICAvLyBV
c2VkIGJ5IGFjY2Vzc2liaWxpdHkuCisgICAgUmVuZGVyVGFibGVSb3cqIHJvd1JlbmRlcmVyQXQo
dW5zaWduZWQgcm93KSBjb25zdCB7IHJldHVybiBtX2dyaWRbcm93XS5yb3dSZW5kZXJlcjsgfQor
CiAgICAgdm9pZCBhcHBlbmRDb2x1bW4odW5zaWduZWQgcG9zKTsKICAgICB2b2lkIHNwbGl0Q29s
dW1uKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgZmlyc3QpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gMTQzNjMyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMi0yMSAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBjZWxsRm9y
Q29sdW1uQW5kUm93IGZhaWxzIGZvciB0YWJsZXMgd2l0aCBoaWRkZW4gdGFibGUgY2VsbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDA1MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpjZWxsQ29sdW1uSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0OjpjZWxsQ29sdW1uU3Bhbik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmNlbGxSb3dJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmNlbGxSb3dTcGFuKToKKwogMjAxMy0wMi0yMSAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBHZXQgcmlk
IG9mIHBhcnNlZFVSTCBpbiB1aVNvdXJjZUNvZGUsIHVzZSBuYW1lIGFuZCBwYXRoIGZvciBkaXNw
bGF5TmFtZSBpbnN0ZWFkLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDE0MzYxOSkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OTksNyArODk5LDcgQEAKICAgICBpZiAoIW1fcHJpdmF0ZS0+aXNUYWJs
ZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJh
bmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAgICBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9wcml2YXRlLmdldCgp
KS0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgcmV0dXJuIGNvbHVtblJhbmdl
LmZpcnN0OwogfQpAQCAtOTEyLDcgKzkxMiw3IEBACiAgICAgaWYgKCFtX3ByaXZhdGUtPmlzVGFi
bGVDZWxsKCkpCiAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBwYWlyPGludCwgaW50PiBjb2x1bW5S
YW5nZTsKKyAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CiAgICAgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fcHJpdmF0ZS5nZXQo
KSktPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgIHJldHVybiBjb2x1bW5SYW5n
ZS5zZWNvbmQ7CiB9CkBAIC05MjUsNyArOTI1LDcgQEAKICAgICBpZiAoIW1fcHJpdmF0ZS0+aXNU
YWJsZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50LCBpbnQ+IHJvd1Jh
bmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKICAgICBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9wcml2YXRlLmdldCgpKS0+
cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CiAgICAgcmV0dXJuIHJvd1JhbmdlLmZpcnN0OwogfQpA
QCAtOTM4LDcgKzkzOCw3IEBACiAgICAgaWYgKCFtX3ByaXZhdGUtPmlzVGFibGVDZWxsKCkpCiAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsKKyAgICBwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fcHJpdmF0ZS5nZXQoKSktPnJvd0luZGV4UmFuZ2Uo
cm93UmFuZ2UpOwogICAgIHJldHVybiByb3dSYW5nZS5zZWNvbmQ7CiB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNDM2MjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxMy0wMi0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBw
bGUuY29tPgorCisgICAgICAgIEFYOiBjZWxsRm9yQ29sdW1uQW5kUm93IGZhaWxzIGZvciB0YWJs
ZXMgd2l0aCBoaWRkZW4gdGFibGUgY2VsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMDA1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFk
LXNlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Rh
YmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMy0wMi0yMSAg
SnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ1NT
IEdyaWQgTGF5b3V0XSBJbXBsZW1lbnQgZ3JpZCBncm93dGggZHVyaW5nIGF1dG8gcGxhY2VtZW50
CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQt
c2VjdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFk
LXNlY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKK1Ro
aXMgdGVzdHMgdGhhdCBjZWxsRm9yUm93QW5kQ29sdW1uIHdvcmsgYXMgZXhwZWN0ZWQgd2hlbiBj
ZWxscyBhcmUgaGlkZGVuIGluIHNlY3Rpb25zIGFuZCByb3dzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworCitUYWJsZTEgaGFzIGEgaGlkZGVuIGZpcnN0IHJvdy4gVmVyaWZ5IGFj
Y2Vzc2luZyBjZWxscyB3b3JrcyBhcyBleHBlY3RlZC4KK1BBU1MgdGFibGUxLnJvd0NvdW50IGlz
IDIKK1BBU1MgIXRhYmxlMWNlbGwxIHx8ICF0YWJsZTFjZWxsMS5pc1ZhbGlkIGlzIHRydWUKK1BB
U1MgdGFibGUxY2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ3RhYmxlMWNlbGwnKSkgaXMgdHJ1ZQorUEFTUyB0YWJsZTFjZWxsMi5yb3dJ
bmRleFJhbmdlKCkgaXMgJ3sxLCAxfScKK1BBU1MgdGFibGUxY2VsbDIuY29sdW1uSW5kZXhSYW5n
ZSgpIGlzICd7MCwgMX0nCisKK1RhYmxlMiBoYXMgYSBoaWRkZW4gZmlyc3Qgc2VjdGlvbi4gVmVy
aWZ5IGFjY2Vzc2luZyBjZWxscyB3b3JrcyBhcyBleHBlY3RlZC4KK1BBU1MgdGFibGUyLnJvd0Nv
dW50IGlzIDIKK1BBU1MgIXRhYmxlMmNlbGwxIHx8ICF0YWJsZTJjZWxsMS5pc1ZhbGlkIGlzIHRy
dWUKK1BBU1MgdGFibGUyY2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxlMmNlbGwnKSkgaXMgdHJ1ZQorUEFTUyB0YWJsZTJjZWxs
Mi5yb3dJbmRleFJhbmdlKCkgaXMgJ3sxLCAxfScKK1BBU1MgdGFibGUyY2VsbDIuY29sdW1uSW5k
ZXhSYW5nZSgpIGlzICd7MCwgMX0nCisKK1RhYmxlMyBvbmx5IGhhcyBhIGZvb3RlciBzZWN0aW9u
LgorUEFTUyB0YWJsZTMucm93Q291bnQgaXMgMworUEFTUyAhdGFibGUzY2VsbDEgfHwgIXRhYmxl
M2NlbGwxLmlzVmFsaWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTNjZWxsMi5pc0VxdWFsKGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUzY2VsbCcpKSBpcyB0
cnVlCitQQVNTIHRhYmxlM2NlbGwyLnJvd0luZGV4UmFuZ2UoKSBpcyAnezIsIDF9JworUEFTUyB0
YWJsZTNjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkgaXMgJ3swLCAxfScKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1z
ZWN0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8ZGl2IGlk
PSJjb250ZW50Ij4KKworPCEtLSBGaXJzdCByb3cgaXMgaGlkZGVuIC0tPgorPHRhYmxlIGlkPSJ0
YWJsZTEiIGJvcmRlcj0xPgorICA8dHI+PHRoIGhpZGRlbj5oZWFkZXIgMTwvdGg+PHRoIGhpZGRl
bj5oZWFkZXIgMjwvdGg+PC90cj4KKyAgPHRyPjx0ZCBpZD0idGFibGUxY2VsbCI+Zm9vPC90ZD48
dGQ+YmFyPC90ZD48L3RyPgorPC90YWJsZT4KKworPCEtLSBGaXJzdCBzZWN0aW9uIGlzIGhpZGRl
biAtLT4KKzx0YWJsZSBpZD0idGFibGUyIiBib3JkZXI9MT4KKyAgPHRoZWFkPjx0aCBoaWRkZW4+
aGVhZGVyIDE8L3RoPjx0aCBoaWRkZW4+aGVhZGVyIDI8L3RoPjwvdGhlYWQ+CisgIDx0cj48dGQg
aWQ9InRhYmxlMmNlbGwiPmZvbzwvdGQ+PHRkPmJhcjwvdGQ+PC90cj4KKzwvdGFibGU+CisKKzwh
LS0gRmlyc3QgYW5kIG1pZGRsZSBzZWN0aW9uIGlzIGhpZGRlbiAtLT4KKzx0YWJsZSBpZD0idGFi
bGUzIiBib3JkZXI9MT4KKyAgPHRoZWFkPjx0cj48dGggaGlkZGVuPmhlYWRlciAxPC90aD48dGgg
aGlkZGVuPmhlYWRlciAyPC90aD48L3RyPjwvdGhlYWQ+CisgIDx0cj48dGQgaGlkZGVuPmZvbzwv
dGQ+PHRkIGhpZGRlbj5iYXI8L3RkPjwvdHI+CisgIDx0Zm9vdD48dHI+PHRkIGlkPSJ0YWJsZTNj
ZWxsIj5mb290PC90ZD48dGQ+Zm9vdDwvdGQ+PC90cj48L3Rmb290PgorPC90YWJsZT4KKworPC9k
aXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGNlbGxG
b3JSb3dBbmRDb2x1bW4gd29yayBhcyBleHBlY3RlZCB3aGVuIGNlbGxzIGFyZSBoaWRkZW4gaW4g
c2VjdGlvbnMgYW5kIHJvd3MuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKSB7CisKKyAgICAgICAgZGVidWcoIlxuVGFibGUxIGhhcyBhIGhpZGRlbiBmaXJzdCBy
b3cuIFZlcmlmeSBhY2Nlc3NpbmcgY2VsbHMgd29ya3MgYXMgZXhwZWN0ZWQuIik7CisgICAgICAg
IHZhciB0YWJsZTEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoInRhYmxlMSIpOworICAgICAgICBzaG91bGRCZSgidGFibGUxLnJvd0NvdW50IiwgIjIiKTsK
KyAgICAgICAgdmFyIHRhYmxlMWNlbGwxID0gdGFibGUxLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwg
MCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIXRhYmxlMWNlbGwxIHx8ICF0YWJsZTFjZWxsMS5p
c1ZhbGlkIik7CisgICAgICAgIHZhciB0YWJsZTFjZWxsMiA9IHRhYmxlMS5jZWxsRm9yQ29sdW1u
QW5kUm93KDAsIDEpOworICAgICAgICBzaG91bGRCZVRydWUoInRhYmxlMWNlbGwyLmlzRXF1YWwo
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsZTFjZWxs
JykpIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTFjZWxsMi5yb3dJbmRleFJhbmdlKCkiLCAi
J3sxLCAxfSciKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlMWNlbGwyLmNvbHVtbkluZGV4UmFu
Z2UoKSIsICInezAsIDF9JyIpOworCisgICAgICAgIGRlYnVnKCJcblRhYmxlMiBoYXMgYSBoaWRk
ZW4gZmlyc3Qgc2VjdGlvbi4gVmVyaWZ5IGFjY2Vzc2luZyBjZWxscyB3b3JrcyBhcyBleHBlY3Rl
ZC4iKTsKKyAgICAgICAgdmFyIHRhYmxlMiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgidGFibGUyIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTIucm93
Q291bnQiLCAiMiIpOworICAgICAgICB2YXIgdGFibGUyY2VsbDEgPSB0YWJsZTIuY2VsbEZvckNv
bHVtbkFuZFJvdygwLCAwKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIhdGFibGUyY2VsbDEgfHwg
IXRhYmxlMmNlbGwxLmlzVmFsaWQiKTsKKyAgICAgICAgdmFyIHRhYmxlMmNlbGwyID0gdGFibGUy
LmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMSk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGFibGUy
Y2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ3RhYmxlMmNlbGwnKSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlMmNlbGwyLnJvd0lu
ZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworICAgICAgICBzaG91bGRCZSgidGFibGUyY2VsbDIu
Y29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MCwgMX0nIik7CisKKyAgICAgICAgZGVidWcoIlxuVGFi
bGUzIG9ubHkgaGFzIGEgZm9vdGVyIHNlY3Rpb24uIik7CisgICAgICAgIHZhciB0YWJsZTMgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlMyIpOwor
ICAgICAgICBzaG91bGRCZSgidGFibGUzLnJvd0NvdW50IiwgIjMiKTsKKyAgICAgICAgdmFyIHRh
YmxlM2NlbGwxID0gdGFibGUzLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCk7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiIXRhYmxlM2NlbGwxIHx8ICF0YWJsZTNjZWxsMS5pc1ZhbGlkIik7CisgICAg
ICAgIHZhciB0YWJsZTNjZWxsMiA9IHRhYmxlMy5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDIpOwor
ICAgICAgICBzaG91bGRCZVRydWUoInRhYmxlM2NlbGwyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsZTNjZWxsJykpIik7CisgICAgICAg
IHNob3VsZEJlKCJ0YWJsZTNjZWxsMi5yb3dJbmRleFJhbmdlKCkiLCAiJ3syLCAxfSciKTsKKyAg
ICAgICAgc2hvdWxkQmUoInRhYmxlM2NlbGwyLmNvbHVtbkluZGV4UmFuZ2UoKSIsICInezAsIDF9
JyIpOworICAgICAgCisgICAgICAgIC8vIENsZWFyIHRoZSBIVE1MIGZvciBiZXR0ZXIgcmVzdWx0
cy4KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5pbm5lckhUTUwg
PSAiIjsgIAorICAgIH0KKworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>
<flag name="commit-queue"
          id="210016"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189567</attachid>
            <date>2013-02-21 11:48:19 -0800</date>
            <delta_ts>2013-02-21 13:09:54 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31022</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzYzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAyLTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1
bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSB0YWJsZSBoYWQg
aGlkZGVuIGNlbGxzLCB0aGVuIGFjY2Vzc2liaWxpdHkgY29kZSB3YXMgYmVpbmcgY29uZnVzZWQg
aW4gYSBmZXcgd2F5cy4KKyAgICAgICAgMSkgVGhlIGNlbGxGb3JDb2x1bW5BbmRSb3cgbWV0aG9k
IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgaW5mb3JtYXRpb24gc2luY2UgdGhhdCB3YXMKKyAgICAg
ICAgICAgdXNpbmcgdGhlIFJlbmRlclRhYmxlU2VjdGlvbiB0byByZXRyaWV2ZSBhIGNlbGwsIHdo
aWNoIGRpZCBub3QgaGF2ZSB0aGUgc2FtZSBkYXRhIGFzIHRoZSBBWFRhYmxlCisgICAgICAgIDIp
IFRoZSB3YXkgd2Ugd2VyZSBhZGRpbmcgY2hpbGRyZW4gbWFkZSBpdCBpbXBvc3NpYmxlIHRvIGRl
dGVybWluZSBjb2x1bW4gYW5kIHJvdyByYW5nZSBiZWNhdXNlIHdlIAorICAgICAgICAgICB3b3Vs
ZCBza2lwIHJvd3MgdGhhdCBoYWQgaGlkZGVuIGNoaWxkcmVuCisgICAgICAgIDMpIEFjY2Vzc2li
aWxpdHlBUklBR3JpZCBhbmQgQWNjZXNzaWJpbGl0eVRhYmxlIHdlcmUgdXNpbmcgZGlmZmVyZW50
IG1ldGhvZHMgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cKKworICAgICAgICBUaGUgZml4IGRvZXMg
YSBmZXcgdGhpbmdzIHRvIG1ha2UgdGhpbmdzIHJpZ2h0OgorICAgICAgICAxKSBBbHdheXMgYWRk
IGFuIGFjY2Vzc2liaWxpdHkgcm93LCBldmVuIGlmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGNlbGxz
IGluIHRoYXQgcm93LgorICAgICAgICAyKSBIYXZlIG9uZSBtZXRob2QgZm9yIEFYVGFibGUgYW5k
IEFYQVJJQUdyaWQgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cuCisgICAgICAgIDMpIENoYW5nZSBj
ZWxsRm9yQ29sdW1uQW5kUm93IHRvIHF1ZXJ5IHRoZSBhY2Nlc3NpYmlsaXR5IGNoaWxkcmVuIHJh
dGhlciB0aGFuIHRoZSBSZW5kZXJUYWJsZVNlY3Rpb24gaW4gZGV0ZXJtaW5pbmcgdGhlIHJvdywg
Y29sIGluZm8uCisgICAgICAgIDQpIGNlbGxGb3JDb2x1bW5BbmRSb3cgc2hvdWxkIHVzZSB1bnNp
Z25lZCB2YWx1ZXMgaW5zdGVhZCBvZiBpbnQgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmg6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5QVJJQUdyaWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JD
b2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUYWJsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwOgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZVRhYmxlR2V0Q29sdW1uQXRJbmRleCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
VGFibGVHZXRSb3dBdEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENv
bHVtbkV4dGVudEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVu
dEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhlYWRlcik6Cisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dIZWFkZXIpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgor
ICAgICAgICAoUmVuZGVyVGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6cm93UmVuZGVyZXJBdCk6CisKIDIwMTMtMDItMjEgIFZpdmVrIEdhbGF0YWdl
ICA8dml2ZWsudmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0pTIEJpbmRpbmddIFNjcmlwdE9i
amVjdCBkZWZhdWx0IGNvbnN0cnVjdG9yIHNob3VsZCBpbml0aWFsaXplIHRoZSBTY3JpcHQgU3Rh
dGUgdG8gMApAQCAtMTE0LDYgKzE2OSw3IEBACiAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuaDoKICAgICAgICAgKFJlbmRlckxheWVyTW9kZWxPYmplY3QpOgogCis+
Pj4+Pj4+IC5yMTQzNjMzCiAyMDEzLTAyLTIxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFp
eEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlk
IGdyb3d0aCBkdXJpbmcgYXV0byBwbGFjZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHJldmlzaW9u
IDE0MzYzMykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDUwICsxMzIsNCBAQAogICAgICAgICBt
X2NoaWxkcmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwogfQogICAgIAotQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjZWxsRm9yQ29sdW1uQW5k
Um93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQotewotICAgIGlmICghbV9yZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2Fy
eSgpOwotICAgIAotICAgIGlmIChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaW50IGludFJvdyA9IChpbnQp
cm93OwotICAgIGludCBpbnRDb2x1bW4gPSAoaW50KWNvbHVtbjsKLQotICAgIHBhaXI8aW50LCBp
bnQ+IGNvbHVtblJhbmdlOwotICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOwotICAgIAotICAg
IC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVzaXJl
ZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cwotICAgIC8vIGluIGEgcHJldmlvdXMgcm93
LgotICAgIGZvciAoOyBpbnRSb3cgPj0gMDsgLS1pbnRSb3cpIHsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogdGFibGVSb3cgPSBtX3Jvd3NbaW50Um93XS5nZXQoKTsKLSAgICAgICAgaWYg
KCF0YWJsZVJvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gdGFibGVSb3ctPmNoaWxkcmVuKCk7
Ci0gICAgICAgIHVuc2lnbmVkIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4uc2l6ZSgpOwotICAg
ICAgICAKLSAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2Ug
aGF2ZSB0byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKLSAgICAgICAgLy8gY2VsbCB0
byBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBrID0gMDsgayA8IGNoaWxkcmVuTGVuZ3RoOyArK2spIHsKLSAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5ba10uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAo
IWNoaWxkLT5pc1RhYmxlQ2VsbCgpKSAKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsQ2hp
bGQgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oY2hpbGQpOwotICAgICAg
ICAgICAgdGFibGVDZWxsQ2hpbGQtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwotICAg
ICAgICAgICAgdGFibGVDZWxsQ2hpbGQtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoKGludENvbHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAm
JiBpbnRDb2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpKQot
ICAgICAgICAgICAgICAgICYmIChpbnRSb3cgPj0gcm93UmFuZ2UuZmlyc3QgJiYgaW50Um93IDwg
KHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRhYmxlQ2VsbENoaWxkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19
Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJKHJldmlzaW9uIDE0
MzYzMykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDYgQEAKICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGRyZW4oKTsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwqIGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cp
OwotCiBwcml2YXRlOgogICAgIC8vIEFSSUEgdHJlZWdyaWRzIGFuZCBncmlkcyBzdXBwb3J0IHNl
bGVjdGVkIHJvd3MuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyBy
ZXR1cm4gdHJ1ZTsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAkocmV2aXNpb24gMTQz
NjMzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQAogICAgIHJldHVybiBw
YXJlbnQ7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4
UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsOjpyb3dJbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2Up
CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25v
cmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgICByb3dSYW5n
ZS5zZWNvbmQgPSAxOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVt
bkluZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiYgY29sdW1uUmFuZ2UpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGwuaAkocmV2aXNpb24gMTQzNjMzKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkg
QEAKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKCk7CiAgICAgCiAgICAg
Ly8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiBjZWxsCi0gICAg
dmlydHVhbCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJv
d1JhbmdlKTsKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBz
cGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwg
aW50PiYgY29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpOwogICAgIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5jcHAJKHJldmlzaW9uIDE0MzYzMykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDUxICszNDYs
NDIgQEAKIAogICAgIC8vIGdvIHRocm91Z2ggYWxsIHRoZSBhdmFpbGFibGUgc2VjdGlvbnMgdG8g
cHVsbCBvdXQgdGhlIHJvd3MKICAgICAvLyBhbmQgYWRkIHRoZW0gYXMgY2hpbGRyZW4KLSAgICAv
LyBGSVhNRTogVGhpcyB3aWxsIHNraXAgYSB0YWJsZSB3aXRoIGp1c3QgYSB0Zm9vdC4gU2hvdWxk
IGZpeCBieSB1c2luZyBSZW5kZXJUYWJsZTo6dG9wU2VjdGlvbi4KLSAgICBSZW5kZXJUYWJsZVNl
Y3Rpb24qIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5oZWFkZXIoKTsKKyAgICBSZW5kZXJUYWJsZVNl
Y3Rpb24qIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT50b3BTZWN0aW9uKCk7CiAgICAgaWYgKCF0YWJs
ZVNlY3Rpb24pCi0gICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5maXJzdEJvZHkoKTsKLSAg
ICAKLSAgICBpZiAoIXRhYmxlU2VjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJl
bmRlclRhYmxlU2VjdGlvbiogaW5pdGlhbFRhYmxlU2VjdGlvbiA9IHRhYmxlU2VjdGlvbjsKLSAg
ICAKICAgICB3aGlsZSAodGFibGVTZWN0aW9uKSB7CiAgICAgICAgIAogICAgICAgICBIYXNoU2V0
PEFjY2Vzc2liaWxpdHlPYmplY3QqPiBhcHBlbmRlZFJvd3M7Ci0KICAgICAgICAgdW5zaWduZWQg
bnVtUm93cyA9IHRhYmxlU2VjdGlvbi0+bnVtUm93cygpOwotICAgICAgICB1bnNpZ25lZCBudW1D
b2xzID0gdGFibGVTZWN0aW9uLT5udW1Db2x1bW5zKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
cm93SW5kZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHsKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7ICsrY29s
SW5kZXgpIHsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNl
bGwqIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQocm93SW5kZXgsIGNvbEluZGV4
KTsKLSAgICAgICAgICAgICAgICBpZiAoIWNlbGwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHJvd09iamVjdCA9IGF4Q2FjaGUtPmdldE9yQ3JlYXRlKGNlbGwtPnBhcmVudCgpKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIXJvd09iamVjdC0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5VGFibGVSb3cqIHJvdyA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJv
dyo+KHJvd09iamVjdCk7Ci0gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBldmVy
eSBjZWxsIGZvciBhIG5ldyByb3csIGJlY2F1c2UgY2VsbCBzcGFucwotICAgICAgICAgICAgICAg
IC8vIGNhbiBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3Qg
Y29sdW1uCi0gICAgICAgICAgICAgICAgaWYgKGFwcGVuZGVkUm93cy5jb250YWlucyhyb3cpKQot
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICByb3ctPnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7ICAgICAgICAKLSAg
ICAgICAgICAgICAgICBtX3Jvd3MuYXBwZW5kKHJvdyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFy
b3ctPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jaGls
ZHJlbi5hcHBlbmQocm93KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyVGFibGVS
b3cqIHJlbmRlclJvdyA9IHRhYmxlU2VjdGlvbi0+cm93UmVuZGVyZXJBdChyb3dJbmRleCk7Cisg
ICAgICAgICAgICBpZiAoIXJlbmRlclJvdykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0ID0g
YXhDYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyUm93KTsKKyAgICAgICAgICAgIGlmICghcm93T2Jq
ZWN0LT5pc1RhYmxlUm93KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlUm93Kj4ocm93T2JqZWN0KTsKKyAgICAgICAgICAgIC8vIHdlIG5l
ZWQgdG8gY2hlY2sgZXZlcnkgY2VsbCBmb3IgYSBuZXcgcm93LCBiZWNhdXNlIGNlbGwgc3BhbnMK
KyAgICAgICAgICAgIC8vIGNhbiBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVj
ayB0aGUgZmlyc3QgY29sdW1uCisgICAgICAgICAgICBpZiAoYXBwZW5kZWRSb3dzLmNvbnRhaW5z
KHJvdykpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHJvdy0+c2V0Um93SW5kZXgoKGludCltX3Jvd3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIG1f
cm93cy5hcHBlbmQocm93KTsKKyAgICAgICAgICAgIGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpCisgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsKICNpZiBQ
TEFURk9STShHVEspCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBt
X2NoaWxkcmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CiAjZW5kaWYK
LSAgICAgICAgICAgICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CiAgICAgICAgIH0KLSAgICAgICAgCisg
ICAgCiAgICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5zZWN0aW9uQmVsb3codGFibGVTZWN0
aW9uLCBTa2lwRW1wdHlTZWN0aW9ucyk7CiAgICAgfQogICAgIApAQCAtNTA5LDc2ICs1MDAsMzYg
QEAKIAogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9y
Q29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewotICAgIGlmICgh
bV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZSgpKQorICAgIHVwZGF0ZUNoaWxkcmVu
SWZOZWNlc3NhcnkoKTsKKyAgICBpZiAoY29sdW1uID49IGNvbHVtbkNvdW50KCkgfHwgcm93ID49
IHJvd0NvdW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIHVwZGF0ZUNoaWxkcmVu
SWZOZWNlc3NhcnkoKTsKLSAgICAKLSAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0b1JlbmRlclRh
YmxlKG1fcmVuZGVyZXIpOwotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRhYmxlIHdp
dGgganVzdCBhIHRmb290LiBTaG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0b3BTZWN0
aW9uLgotICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPmhlYWRl
cigpOwotICAgIGlmICghdGFibGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJs
ZS0+Zmlyc3RCb2R5KCk7Ci0gICAgCi0gICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gMDsKLSAg
ICB1bnNpZ25lZCByb3dDb3VudCA9IDA7Ci0gICAgdW5zaWduZWQgcm93T2Zmc2V0ID0gMDsKLSAg
ICB3aGlsZSAodGFibGVTZWN0aW9uKSB7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBudW1S
b3dzID0gdGFibGVTZWN0aW9uLT5udW1Sb3dzKCk7Ci0gICAgICAgIHVuc2lnbmVkIG51bUNvbHMg
PSB0YWJsZVNlY3Rpb24tPm51bUNvbHVtbnMoKTsKLSAgICAgICAgCi0gICAgICAgIHJvd0NvdW50
ICs9IG51bVJvd3M7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBzZWN0aW9uU3BlY2lmaWNS
b3cgPSByb3cgLSByb3dPZmZzZXQ7ICAgICAgICAgICAgCi0gICAgICAgIGlmIChyb3cgPCByb3dD
b3VudCAmJiBjb2x1bW4gPCBudW1Db2xzICYmIHNlY3Rpb25TcGVjaWZpY1JvdyA8IG51bVJvd3Mp
IHsKLSAgICAgICAgICAgIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQoc2VjdGlv
blNwZWNpZmljUm93LCBjb2x1bW4pOworICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2gg
dGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVzaXJlZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0
cyBpbiBhIHByZXZpb3VzIHJvdy4KKyAgICBmb3IgKHVuc2lnbmVkIHJvd0luZGV4Q291bnRlciA9
IHJvdyArIDE7IHJvd0luZGV4Q291bnRlciA+IDA7IC0tcm93SW5kZXhDb3VudGVyKSB7CisgICAg
ICAgIHVuc2lnbmVkIHJvd0luZGV4ID0gcm93SW5kZXhDb3VudGVyIC0gMTsKKyAgICAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gbV9yb3dzW3Jvd0luZGV4XS0+Y2hp
bGRyZW4oKTsKKyAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywg
d2UgaGF2ZSB0byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKKyAgICAgICAgLy8gY2Vs
bCB0byBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBjb2xJbmRleENvdW50ZXIgPSBjaGlsZHJlbi5zaXplKCk7IGNvbEluZGV4Q291bnRlciA+
IDA7IC0tY29sSW5kZXhDb3VudGVyKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjb2xJbmRleCA9
IGNvbEluZGV4Q291bnRlciAtIDE7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
aGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChjaGls
ZC0+aXNUYWJsZUNlbGwoKSk7CisgICAgICAgICAgICBpZiAoIWNoaWxkLT5pc1RhYmxlQ2VsbCgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICAv
LyB3ZSBkaWRuJ3QgZmluZCB0aGUgY2VsbCwgd2hpY2ggbWVhbnMgdGhlcmUncyBzcGFubmluZyBo
YXBwZW5pbmcKLSAgICAgICAgICAgIC8vIHNlYXJjaCBiYWNrd2FyZHMgdG8gZmluZCB0aGUgc3Bh
bm5pbmcgY2VsbAotICAgICAgICAgICAgaWYgKCFjZWxsKSB7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgLy8gZmlyc3QgdHJ5IHJvd3MKLSAgICAgICAgICAgICAgICBmb3IgKGlu
dCB0ZXN0Um93ID0gc2VjdGlvblNwZWNpZmljUm93IC0gMTsgdGVzdFJvdyA+PSAwOyAtLXRlc3RS
b3cpIHsKLSAgICAgICAgICAgICAgICAgICAgY2VsbCA9IHRhYmxlU2VjdGlvbi0+cHJpbWFyeUNl
bGxBdCh0ZXN0Um93LCBjb2x1bW4pOwotICAgICAgICAgICAgICAgICAgICAvLyBjZWxsIG92ZXJs
YXBwZWQuIHVzZSB0aGlzIG9uZQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWNlbGwgfHwg
Y2VsbC0+cm93U3BhbigpID49IDEpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbCAmJiAo
KGNlbGwtPnJvd0luZGV4KCkgKyAoY2VsbC0+cm93U3BhbigpIC0gMSkpID49IHNlY3Rpb25TcGVj
aWZpY1JvdykpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2VsbCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGlmICghY2VsbCkgewotICAgICAgICAgICAgICAgICAgICAvLyB0cnkgY29s
cwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB0ZXN0Q29sID0gY29sdW1uIC0gMTsgdGVz
dENvbCA+PSAwOyAtLXRlc3RDb2wpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwgPSB0
YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQoc2VjdGlvblNwZWNpZmljUm93LCB0ZXN0Q29sKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNlbGwgb3ZlcmxhcHBlZC4gdXNlIHRoaXMgb25l
Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWNlbGwgfHwgY2VsbC0+cm93U3Bhbigp
ID49IDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwgJiYgKChjZWxsLT5jb2wo
KSArIChjZWxsLT5jb2xTcGFuKCkgLSAxKSkgPj0gY29sdW1uKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwgPSAwOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOworICAgICAgICAg
ICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOworICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsQ2hpbGQgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGVDZWxsKj4oY2hpbGQpOworICAgICAgICAgICAgdGFibGVDZWxsQ2hpbGQtPmNvbHVt
bkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOworICAgICAgICAgICAgdGFibGVDZWxsQ2hpbGQtPnJv
d0luZGV4UmFuZ2Uocm93UmFuZ2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoKGNv
bHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAmJiBjb2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3Qg
KyBjb2x1bW5SYW5nZS5zZWNvbmQpKQorICAgICAgICAgICAgICAgICYmIChyb3cgPj0gcm93UmFu
Z2UuZmlyc3QgJiYgcm93IDwgKHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbENoaWxkOwogICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpZiAoY2VsbCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAg
ICAgcm93T2Zmc2V0ICs9IG51bVJvd3M7Ci0gICAgICAgIC8vIHdlIGRpZG4ndCBmaW5kIGFueXRo
aW5nIGJldHdlZW4gdGhlIHJvd3Mgd2Ugc2hvdWxkIGhhdmUKLSAgICAgICAgaWYgKHJvdyA8IHJv
d0NvdW50KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxl
LT5zZWN0aW9uQmVsb3codGFibGVTZWN0aW9uLCBTa2lwRW1wdHlTZWN0aW9ucyk7CiAgICAgfQog
ICAgIAotICAgIGlmICghY2VsbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY2VsbE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
Y2VsbCk7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY2VsbE9iamVjdC0+
aXNUYWJsZUNlbGwoKSk7Ci0gICAgCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwqPihjZWxsT2JqZWN0KTsKKyAgICByZXR1cm4gMDsKIH0KIAogQWNjZXNzaWJp
bGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb2xlVmFsdWUoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCShy
ZXZpc2lvbiAxNDM2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw7CitjbGFzcyBSZW5kZXJU
YWJsZVNlY3Rpb247CiAgICAgCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGUgOiBwdWJsaWMgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiAKQEAgLTY3LDcgKzY4LDcgQEAKICAgICAKICAgICAv
LyBhbGwgdGhlIGNlbGxzIGluIHRoZSB0YWJsZQogICAgIHZvaWQgY2VsbHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBj
ZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKKyAgICBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVt
biwgdW5zaWduZWQgcm93KTsKICAgICAKICAgICB2b2lkIGNvbHVtbkhlYWRlcnMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCByb3dIZWFkZXJzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiAxNDM2MzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICByZXR1cm4gQ2VsbFJvbGU7
CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UocGFp
cjxpbnQsIGludD4mIHJvd1JhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJ
bmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpCiB7CiAgICAgaWYg
KCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgICByZXR1
cm47CkBAIC0xMTcsMTEgKzExNyw3IEBACiAgICAgaWYgKCF0YWJsZSB8fCAhc2VjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFRoaXMgd2lsbCBza2lwIGEgdGFibGUgd2l0
aCBqdXN0IGEgdGZvb3QuIFNob3VsZCBmaXggYnkgdXNpbmcgUmVuZGVyVGFibGU6OnRvcFNlY3Rp
b24uCi0gICAgUmVuZGVyVGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+aGVhZGVy
KCk7Ci0gICAgaWYgKCF0YWJsZVNlY3Rpb24pCi0gICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxl
LT5maXJzdEJvZHkoKTsKLSAgICAKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlv
biA9IHRhYmxlLT50b3BTZWN0aW9uKCk7ICAgIAogICAgIHVuc2lnbmVkIHJvd09mZnNldCA9IDA7
CiAgICAgd2hpbGUgKHRhYmxlU2VjdGlvbikgewogICAgICAgICBpZiAodGFibGVTZWN0aW9uID09
IHNlY3Rpb24pCkBAIC0xMzMsNyArMTI5LDcgQEAKICAgICByb3dSYW5nZS5maXJzdCArPSByb3dP
ZmZzZXQ7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4
UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1u
UmFuZ2UpCiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlQ2Vs
bCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAkocmV2aXNpb24gMTQzNjMzKQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDkgQEAKICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJs
ZUNlbGwoKSBjb25zdDsKICAgICAKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24g
YW5kIHJvdyBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWly
PGludCwgaW50PiYgcm93UmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpOwogICAgIC8vIGZpbGxzIGluIHRoZSBz
dGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCBj
b2x1bW5JbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiBjb2x1bW5SYW5nZSk7CisgICAgdmlydHVh
bCB2b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5S
YW5nZSk7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnRUYWJsZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGFibGUuY3BwCShyZXZpc2lvbiAxNDM2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTUsNyArMTE1LDcgQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENl
bGwgPSBjZWxsQXRJbmRleCh0YWJsZSwgaW5kZXgpOwogICAgIGlmIChheENlbGwpIHsKLSAgICAg
ICAgcGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7CisgICAgICAgIHBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBjb2x1bW5SYW5nZTsKICAgICAgICAgYXhDZWxsLT5jb2x1bW5JbmRleFJhbmdlKGNv
bHVtblJhbmdlKTsKICAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlLmZpcnN0OwogICAgIH0KQEAg
LTEyNiw3ICsxMjYsNyBAQAogewogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9
IGNlbGxBdEluZGV4KHRhYmxlLCBpbmRleCk7CiAgICAgaWYgKGF4Q2VsbCkgewotICAgICAgICBw
YWlyPGludCwgaW50PiByb3dSYW5nZTsKKyAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IHJvd1JhbmdlOwogICAgICAgICBheENlbGwtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwogICAg
ICAgICByZXR1cm4gcm93UmFuZ2UuZmlyc3Q7CiAgICAgfQpAQCAtMTUzLDcgKzE1Myw3IEBACiB7
CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0gY2VsbCh0YWJsZSwgcm93LCBj
b2x1bW4pOwogICAgIGlmIChheENlbGwpIHsKLSAgICAgICAgcGFpcjxpbnQsIGludD4gY29sdW1u
UmFuZ2U7CisgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAg
ICAgICAgYXhDZWxsLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKICAgICAgICAgcmV0
dXJuIGNvbHVtblJhbmdlLnNlY29uZDsKICAgICB9CkBAIC0xNjQsNyArMTY0LDcgQEAKIHsKICAg
ICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENlbGwgPSBjZWxsKHRhYmxlLCByb3csIGNvbHVt
bik7CiAgICAgaWYgKGF4Q2VsbCkgewotICAgICAgICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsK
KyAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwogICAgICAgICBheENl
bGwtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwogICAgICAgICByZXR1cm4gcm93UmFuZ2Uuc2Vj
b25kOwogICAgIH0KQEAgLTE3OSwxMCArMTc5LDEwIEBACiAgICAgICAgIHN0YXRpY19jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZSo+KGFjY1RhYmxlKS0+Y29sdW1uSGVhZGVycyhhbGxDb2x1bW5IZWFk
ZXJzKTsKICAgICAgICAgdW5zaWduZWQgY29sdW1uQ291bnQgPSBhbGxDb2x1bW5IZWFkZXJzLnNp
emUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNvbHVtbkNvdW50OyArK2sp
IHsKLSAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOworICAgICAgICAgICAg
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwqPihhbGxDb2x1bW5IZWFkZXJzLmF0KGspLmdldCgpKTsKICAgICAgICAgICAgIGNlbGwtPmNv
bHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwotICAgICAgICAgICAgaWYgKGNvbHVtblJhbmdl
LmZpcnN0IDw9IGNvbHVtbiAmJiBjb2x1bW4gPCBjb2x1bW5SYW5nZS5maXJzdCArIGNvbHVtblJh
bmdlLnNlY29uZCkKKyAgICAgICAgICAgIGlmIChjb2x1bW5SYW5nZS5maXJzdCA8PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oY29sdW1uKSAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29sdW1uKSA8
IGNvbHVtblJhbmdlLmZpcnN0ICsgY29sdW1uUmFuZ2Uuc2Vjb25kKQogICAgICAgICAgICAgICAg
IHJldHVybiBhbGxDb2x1bW5IZWFkZXJzW2tdLT53cmFwcGVyKCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xOTcsMTAgKzE5NywxMCBAQAogICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGUqPihhY2NUYWJsZSktPnJvd0hlYWRlcnMoYWxsUm93SGVhZGVycyk7CiAgICAgICAgIHVu
c2lnbmVkIHJvd0NvdW50ID0gYWxsUm93SGVhZGVycy5zaXplKCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgayA9IDA7IGsgPCByb3dDb3VudDsgKytrKSB7Ci0gICAgICAgICAgICBwYWlyPGludCwg
aW50PiByb3dSYW5nZTsKKyAgICAgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dS
YW5nZTsKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGNlbGwgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oYWxsUm93SGVhZGVycy5hdChrKS5nZXQoKSk7
CiAgICAgICAgICAgICBjZWxsLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKLSAgICAgICAgICAg
IGlmIChyb3dSYW5nZS5maXJzdCA8PSByb3cgJiYgcm93IDwgcm93UmFuZ2UuZmlyc3QgKyByb3dS
YW5nZS5zZWNvbmQpCisgICAgICAgICAgICBpZiAocm93UmFuZ2UuZmlyc3QgPD0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHJvdykgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJvdykgPCByb3dSYW5n
ZS5maXJzdCArIHJvd1JhbmdlLnNlY29uZCkKICAgICAgICAgICAgICAgICByZXR1cm4gYWxsUm93
SGVhZGVyc1trXS0+d3JhcHBlcigpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlzaW9uIDE0MzYzMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcwLDEyICsyMzcwLDEyIEBACiAgICAgCiAgICAg
aWYgKG1fb2JqZWN0LT5pc1RhYmxlQ2VsbCgpKSB7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZV0p
IHsKLSAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOworICAgICAgICAgICAgcGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fb2JqZWN0KS0+cm93SW5kZXhSYW5nZShyb3dSYW5n
ZSk7CiAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFu
Z2Uocm93UmFuZ2UuZmlyc3QsIHJvd1JhbmdlLnNlY29uZCldOwogICAgICAgICB9CiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1u
SW5kZXhSYW5nZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVt
blJhbmdlOworICAgICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdl
OwogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fb2Jq
ZWN0KS0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgICAgICAgICByZXR1cm4g
W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoY29sdW1uUmFuZ2UuZmlyc3QsIGNv
bHVtblJhbmdlLnNlY29uZCldOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCShyZXZpc2lvbiAxNDM2MzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1Myw2ICsxNTMsOSBAQAogICAgICAgICByZXR1cm4gYy5wcmltYXJ5Q2VsbCgpOwogICAg
IH0KIAorICAgIC8vIFVzZWQgYnkgYWNjZXNzaWJpbGl0eS4KKyAgICBSZW5kZXJUYWJsZVJvdyog
cm93UmVuZGVyZXJBdCh1bnNpZ25lZCByb3cpIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZFtyb3ddLnJv
d1JlbmRlcmVyOyB9CisKICAgICB2b2lkIGFwcGVuZENvbHVtbih1bnNpZ25lZCBwb3MpOwogICAg
IHZvaWQgc3BsaXRDb2x1bW4odW5zaWduZWQgcG9zLCB1bnNpZ25lZCBmaXJzdCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDM2MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDEzLTAyLTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQVg6IGNlbGxGb3JDb2x1bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0
YWJsZSBjZWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEwMDUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNlbGxDb2x1bW5JbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNlbGxDb2x1bW5TcGFuKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2VsbFJvd0luZGV4KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2VsbFJvd1NwYW4pOgorCiAyMDEzLTAyLTIxICBW
c2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEdldCByaWQgb2YgcGFyc2VkVVJMIGluIHVpU291cmNlQ29kZSwgdXNlIG5hbWUgYW5k
IHBhdGggZm9yIGRpc3BsYXlOYW1lIGluc3RlYWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24g
MTQzNjE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5OSw3ICs4OTksNyBAQAogICAgIGlmICghbV9w
cml2YXRlLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgIHJldHVybiAwOwogCi0gICAgcGFpcjxpbnQs
IGludD4gY29sdW1uUmFuZ2U7CisgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJh
bmdlOwogICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPiht
X3ByaXZhdGUuZ2V0KCkpLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKICAgICByZXR1
cm4gY29sdW1uUmFuZ2UuZmlyc3Q7CiB9CkBAIC05MTIsNyArOTEyLDcgQEAKICAgICBpZiAoIW1f
cHJpdmF0ZS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50
LCBpbnQ+IGNvbHVtblJhbmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5S
YW5nZTsKICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4o
bV9wcml2YXRlLmdldCgpKS0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgcmV0
dXJuIGNvbHVtblJhbmdlLnNlY29uZDsKIH0KQEAgLTkyNSw3ICs5MjUsNyBAQAogICAgIGlmICgh
bV9wcml2YXRlLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgIHJldHVybiAwOwogCi0gICAgcGFpcjxp
bnQsIGludD4gcm93UmFuZ2U7CisgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1Jhbmdl
OwogICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihtX3By
aXZhdGUuZ2V0KCkpLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICByZXR1cm4gcm93UmFu
Z2UuZmlyc3Q7CiB9CkBAIC05MzgsNyArOTM4LDcgQEAKICAgICBpZiAoIW1fcHJpdmF0ZS0+aXNU
YWJsZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50LCBpbnQ+IHJvd1Jh
bmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKICAgICBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9wcml2YXRlLmdldCgpKS0+
cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CiAgICAgcmV0dXJuIHJvd1JhbmdlLnNlY29uZDsKIH0K
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0MzYyMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTIxICBDaHJpcyBGbGVpemFjaCAg
PGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1bW5BbmRSb3cg
ZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXdp
dGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWw6IEFkZGVkLgor
CiAyMDEzLTAyLTIxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGdyb3d0aCBkdXJpbmcg
YXV0byBwbGFjZW1lbnQKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0
aC1oaWRkZW4taGVhZC1zZWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdp
dGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGNlbGxGb3JSb3dBbmRDb2x1bW4gd29yayBhcyBl
eHBlY3RlZCB3aGVuIGNlbGxzIGFyZSBoaWRkZW4gaW4gc2VjdGlvbnMgYW5kIHJvd3MuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1RhYmxlMSBoYXMgYSBoaWRkZW4gZmlyc3Qg
cm93LiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdvcmtzIGFzIGV4cGVjdGVkLgorUEFTUyB0YWJs
ZTEucm93Q291bnQgaXMgMgorUEFTUyAhdGFibGUxY2VsbDEgfHwgIXRhYmxlMWNlbGwxLmlzVmFs
aWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTFjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUxY2VsbCcpKSBpcyB0cnVlCitQQVNTIHRh
YmxlMWNlbGwyLnJvd0luZGV4UmFuZ2UoKSBpcyAnezEsIDF9JworUEFTUyB0YWJsZTFjZWxsMi5j
b2x1bW5JbmRleFJhbmdlKCkgaXMgJ3swLCAxfScKKworVGFibGUyIGhhcyBhIGhpZGRlbiBmaXJz
dCBzZWN0aW9uLiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdvcmtzIGFzIGV4cGVjdGVkLgorUEFT
UyB0YWJsZTIucm93Q291bnQgaXMgMgorUEFTUyAhdGFibGUyY2VsbDEgfHwgIXRhYmxlMmNlbGwx
LmlzVmFsaWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTJjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUyY2VsbCcpKSBpcyB0cnVlCitQ
QVNTIHRhYmxlMmNlbGwyLnJvd0luZGV4UmFuZ2UoKSBpcyAnezEsIDF9JworUEFTUyB0YWJsZTJj
ZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkgaXMgJ3swLCAxfScKKworVGFibGUzIG9ubHkgaGFzIGEg
Zm9vdGVyIHNlY3Rpb24uCitQQVNTIHRhYmxlMy5yb3dDb3VudCBpcyAzCitQQVNTICF0YWJsZTNj
ZWxsMSB8fCAhdGFibGUzY2VsbDEuaXNWYWxpZCBpcyB0cnVlCitQQVNTIHRhYmxlM2NlbGwyLmlz
RXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJs
ZTNjZWxsJykpIGlzIHRydWUKK1BBU1MgdGFibGUzY2VsbDIucm93SW5kZXhSYW5nZSgpIGlzICd7
MiwgMX0nCitQQVNTIHRhYmxlM2NlbGwyLmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAnezAsIDF9Jwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRo
LWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9k
eSI+CisKKzxkaXYgaWQ9ImNvbnRlbnQiPgorCis8IS0tIEZpcnN0IHJvdyBpcyBoaWRkZW4gLS0+
Cis8dGFibGUgaWQ9InRhYmxlMSIgYm9yZGVyPTE+CisgIDx0cj48dGggaGlkZGVuPmhlYWRlciAx
PC90aD48dGggaGlkZGVuPmhlYWRlciAyPC90aD48L3RyPgorICA8dHI+PHRkIGlkPSJ0YWJsZTFj
ZWxsIj5mb288L3RkPjx0ZD5iYXI8L3RkPjwvdHI+Cis8L3RhYmxlPgorCis8IS0tIEZpcnN0IHNl
Y3Rpb24gaXMgaGlkZGVuIC0tPgorPHRhYmxlIGlkPSJ0YWJsZTIiIGJvcmRlcj0xPgorICA8dGhl
YWQ+PHRoIGhpZGRlbj5oZWFkZXIgMTwvdGg+PHRoIGhpZGRlbj5oZWFkZXIgMjwvdGg+PC90aGVh
ZD4KKyAgPHRyPjx0ZCBpZD0idGFibGUyY2VsbCI+Zm9vPC90ZD48dGQ+YmFyPC90ZD48L3RyPgor
PC90YWJsZT4KKworPCEtLSBGaXJzdCBhbmQgbWlkZGxlIHNlY3Rpb24gaXMgaGlkZGVuIC0tPgor
PHRhYmxlIGlkPSJ0YWJsZTMiIGJvcmRlcj0xPgorICA8dGhlYWQ+PHRyPjx0aCBoaWRkZW4+aGVh
ZGVyIDE8L3RoPjx0aCBoaWRkZW4+aGVhZGVyIDI8L3RoPjwvdHI+PC90aGVhZD4KKyAgPHRyPjx0
ZCBoaWRkZW4+Zm9vPC90ZD48dGQgaGlkZGVuPmJhcjwvdGQ+PC90cj4KKyAgPHRmb290Pjx0cj48
dGQgaWQ9InRhYmxlM2NlbGwiPmZvb3Q8L3RkPjx0ZD5mb290PC90ZD48L3RyPjwvdGZvb3Q+Cis8
L3RhYmxlPgorCis8L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgY2VsbEZvclJvd0FuZENvbHVtbiB3b3JrIGFzIGV4cGVjdGVkIHdoZW4gY2VsbHMg
YXJlIGhpZGRlbiBpbiBzZWN0aW9ucyBhbmQgcm93cy4iKTsKKworICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgICAgICBkZWJ1ZygiXG5UYWJsZTEgaGFzIGEg
aGlkZGVuIGZpcnN0IHJvdy4gVmVyaWZ5IGFjY2Vzc2luZyBjZWxscyB3b3JrcyBhcyBleHBlY3Rl
ZC4iKTsKKyAgICAgICAgdmFyIHRhYmxlMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgidGFibGUxIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTEucm93
Q291bnQiLCAiMiIpOworICAgICAgICB2YXIgdGFibGUxY2VsbDEgPSB0YWJsZTEuY2VsbEZvckNv
bHVtbkFuZFJvdygwLCAwKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIhdGFibGUxY2VsbDEgfHwg
IXRhYmxlMWNlbGwxLmlzVmFsaWQiKTsKKyAgICAgICAgdmFyIHRhYmxlMWNlbGwyID0gdGFibGUx
LmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMSk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGFibGUx
Y2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ3RhYmxlMWNlbGwnKSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlMWNlbGwyLnJvd0lu
ZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworICAgICAgICBzaG91bGRCZSgidGFibGUxY2VsbDIu
Y29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MCwgMX0nIik7CisKKyAgICAgICAgZGVidWcoIlxuVGFi
bGUyIGhhcyBhIGhpZGRlbiBmaXJzdCBzZWN0aW9uLiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdv
cmtzIGFzIGV4cGVjdGVkLiIpOworICAgICAgICB2YXIgdGFibGUyID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZTIiKTsKKyAgICAgICAgc2hvdWxk
QmUoInRhYmxlMi5yb3dDb3VudCIsICIyIik7CisgICAgICAgIHZhciB0YWJsZTJjZWxsMSA9IHRh
YmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApOworICAgICAgICBzaG91bGRCZVRydWUoIiF0
YWJsZTJjZWxsMSB8fCAhdGFibGUyY2VsbDEuaXNWYWxpZCIpOworICAgICAgICB2YXIgdGFibGUy
Y2VsbDIgPSB0YWJsZTIuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAxKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJ0YWJsZTJjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgndGFibGUyY2VsbCcpKSIpOworICAgICAgICBzaG91bGRCZSgidGFi
bGUyY2VsbDIucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMX0nIik7CisgICAgICAgIHNob3VsZEJl
KCJ0YWJsZTJjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkiLCAiJ3swLCAxfSciKTsKKworICAgICAg
ICBkZWJ1ZygiXG5UYWJsZTMgb25seSBoYXMgYSBmb290ZXIgc2VjdGlvbi4iKTsKKyAgICAgICAg
dmFyIHRhYmxlMyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgidGFibGUzIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTMucm93Q291bnQiLCAiMyIpOwor
ICAgICAgICB2YXIgdGFibGUzY2VsbDEgPSB0YWJsZTMuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAw
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIhdGFibGUzY2VsbDEgfHwgIXRhYmxlM2NlbGwxLmlz
VmFsaWQiKTsKKyAgICAgICAgdmFyIHRhYmxlM2NlbGwyID0gdGFibGUzLmNlbGxGb3JDb2x1bW5B
bmRSb3coMCwgMik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGFibGUzY2VsbDIuaXNFcXVhbChh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxlM2NlbGwn
KSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlM2NlbGwyLnJvd0luZGV4UmFuZ2UoKSIsICIn
ezIsIDF9JyIpOworICAgICAgICBzaG91bGRCZSgidGFibGUzY2VsbDIuY29sdW1uSW5kZXhSYW5n
ZSgpIiwgIid7MCwgMX0nIik7CisgICAgICAKKyAgICAgICAgLy8gQ2xlYXIgdGhlIEhUTUwgZm9y
IGJldHRlciByZXN1bHRzLgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVu
dCIpLmlubmVySFRNTCA9ICIiOyAgCisgICAgfQorCisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwo=
</data>
<flag name="commit-queue"
          id="210038"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189585</attachid>
            <date>2013-02-21 13:09:54 -0800</date>
            <delta_ts>2013-02-21 13:12:56 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31892</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAyLTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1
bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSB0YWJsZSBoYWQg
aGlkZGVuIGNlbGxzLCB0aGVuIGFjY2Vzc2liaWxpdHkgY29kZSB3YXMgYmVpbmcgY29uZnVzZWQg
aW4gYSBmZXcgd2F5cy4KKyAgICAgICAgMSkgVGhlIGNlbGxGb3JDb2x1bW5BbmRSb3cgbWV0aG9k
IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgaW5mb3JtYXRpb24gc2luY2UgdGhhdCB3YXMKKyAgICAg
ICAgICAgdXNpbmcgdGhlIFJlbmRlclRhYmxlU2VjdGlvbiB0byByZXRyaWV2ZSBhIGNlbGwsIHdo
aWNoIGRpZCBub3QgaGF2ZSB0aGUgc2FtZSBkYXRhIGFzIHRoZSBBWFRhYmxlCisgICAgICAgIDIp
IFRoZSB3YXkgd2Ugd2VyZSBhZGRpbmcgY2hpbGRyZW4gbWFkZSBpdCBpbXBvc3NpYmxlIHRvIGRl
dGVybWluZSBjb2x1bW4gYW5kIHJvdyByYW5nZSBiZWNhdXNlIHdlIAorICAgICAgICAgICB3b3Vs
ZCBza2lwIHJvd3MgdGhhdCBoYWQgaGlkZGVuIGNoaWxkcmVuCisgICAgICAgIDMpIEFjY2Vzc2li
aWxpdHlBUklBR3JpZCBhbmQgQWNjZXNzaWJpbGl0eVRhYmxlIHdlcmUgdXNpbmcgZGlmZmVyZW50
IG1ldGhvZHMgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cKKworICAgICAgICBUaGUgZml4IGRvZXMg
YSBmZXcgdGhpbmdzIHRvIG1ha2UgdGhpbmdzIHJpZ2h0OgorICAgICAgICAxKSBBbHdheXMgYWRk
IGFuIGFjY2Vzc2liaWxpdHkgcm93LCBldmVuIGlmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGNlbGxz
IGluIHRoYXQgcm93LgorICAgICAgICAyKSBIYXZlIG9uZSBtZXRob2QgZm9yIEFYVGFibGUgYW5k
IEFYQVJJQUdyaWQgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cuCisgICAgICAgIDMpIENoYW5nZSBj
ZWxsRm9yQ29sdW1uQW5kUm93IHRvIHF1ZXJ5IHRoZSBhY2Nlc3NpYmlsaXR5IGNoaWxkcmVuIHJh
dGhlciB0aGFuIHRoZSBSZW5kZXJUYWJsZVNlY3Rpb24gaW4gZGV0ZXJtaW5pbmcgdGhlIHJvdywg
Y29sIGluZm8uCisgICAgICAgIDQpIGNlbGxGb3JDb2x1bW5BbmRSb3cgc2hvdWxkIHVzZSB1bnNp
Z25lZCB2YWx1ZXMgaW5zdGVhZCBvZiBpbnQgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmg6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5QVJJQUdyaWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JD
b2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUYWJsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwOgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZVRhYmxlR2V0Q29sdW1uQXRJbmRleCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
VGFibGVHZXRSb3dBdEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENv
bHVtbkV4dGVudEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVu
dEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhlYWRlcik6Cisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dIZWFkZXIpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgor
ICAgICAgICAoUmVuZGVyVGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6cm93UmVuZGVyZXJBdCk6CisKIDIwMTMtMDItMTkgIE1hcmsgSGFobmVuYmVy
ZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IE5l
ZWQgYSB3YXkgdG8gdXNlIHRoZSBPYmplY3RpdmUtQyBKYXZhU2NyaXB0IEFQSSB3aXRoIFdlYktp
dApAQCAtMTU4LDYgKzIxMyw3IEBACiAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuaDoKICAgICAgICAgKFJlbmRlckxheWVyTW9kZWxPYmplY3QpOgogCis+Pj4+Pj4+
IC5yMTQzNjMzCiAyMDEzLTAyLTIxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGdyb3d0
aCBkdXJpbmcgYXV0byBwbGFjZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHJldmlzaW9uIDE0MzYz
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDUwICsxMzIsNCBAQAogICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwogfQogICAgIAotQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQotewotICAgIGlmICghbV9yZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwot
ICAgIAotICAgIGlmIChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaW50IGludFJvdyA9IChpbnQpcm93Owot
ICAgIGludCBpbnRDb2x1bW4gPSAoaW50KWNvbHVtbjsKLQotICAgIHBhaXI8aW50LCBpbnQ+IGNv
bHVtblJhbmdlOwotICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOwotICAgIAotICAgIC8vIEl0
ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVzaXJlZCBjZWxs
IGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cwotICAgIC8vIGluIGEgcHJldmlvdXMgcm93LgotICAg
IGZvciAoOyBpbnRSb3cgPj0gMDsgLS1pbnRSb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogdGFibGVSb3cgPSBtX3Jvd3NbaW50Um93XS5nZXQoKTsKLSAgICAgICAgaWYgKCF0YWJs
ZVJvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gdGFibGVSb3ctPmNoaWxkcmVuKCk7Ci0gICAg
ICAgIHVuc2lnbmVkIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgICAgICAK
LSAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2ZSB0
byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKLSAgICAgICAgLy8gY2VsbCB0byBkZXRl
cm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBrID0g
MDsgayA8IGNoaWxkcmVuTGVuZ3RoOyArK2spIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoaWxkID0gY2hpbGRyZW5ba10uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWNoaWxk
LT5pc1RhYmxlQ2VsbCgpKSAKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsQ2hpbGQgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oY2hpbGQpOwotICAgICAgICAgICAg
dGFibGVDZWxsQ2hpbGQtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwotICAgICAgICAg
ICAgdGFibGVDZWxsQ2hpbGQtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoKGludENvbHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAmJiBpbnRD
b2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpKQotICAgICAg
ICAgICAgICAgICYmIChpbnRSb3cgPj0gcm93UmFuZ2UuZmlyc3QgJiYgaW50Um93IDwgKHJvd1Jh
bmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRh
YmxlQ2VsbENoaWxkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0gICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJKHJldmlzaW9uIDE0MzYzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDYgQEAKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGRyZW4oKTsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
IGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwotCiBw
cml2YXRlOgogICAgIC8vIEFSSUEgdHJlZWdyaWRzIGFuZCBncmlkcyBzdXBwb3J0IHNlbGVjdGVk
IHJvd3MuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyByZXR1cm4g
dHJ1ZTsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAkocmV2aXNpb24gMTQzNjM3KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQAogICAgIHJldHVybiBwYXJlbnQ7
CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2Uo
cGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
Ojpyb3dJbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpCiB7CiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CiAgICAgaWYgKCFwYXJlbnQpCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgICByb3dSYW5nZS5zZWNv
bmQgPSAxOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4
UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29s
dW1uUmFuZ2UpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAko
cmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAKICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKCk7CiAgICAgCiAgICAgLy8gZmls
bHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiBjZWxsCi0gICAgdmlydHVh
bCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1Jhbmdl
KTsKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9m
IGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYg
Y29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5j
cHAJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpAQCAtMzQ2LDUxICszNDcsNDIgQEAKIAogICAgIC8vIGdv
IHRocm91Z2ggYWxsIHRoZSBhdmFpbGFibGUgc2VjdGlvbnMgdG8gcHVsbCBvdXQgdGhlIHJvd3MK
ICAgICAvLyBhbmQgYWRkIHRoZW0gYXMgY2hpbGRyZW4KLSAgICAvLyBGSVhNRTogVGhpcyB3aWxs
IHNraXAgYSB0YWJsZSB3aXRoIGp1c3QgYSB0Zm9vdC4gU2hvdWxkIGZpeCBieSB1c2luZyBSZW5k
ZXJUYWJsZTo6dG9wU2VjdGlvbi4KLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlv
biA9IHRhYmxlLT5oZWFkZXIoKTsKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlv
biA9IHRhYmxlLT50b3BTZWN0aW9uKCk7CiAgICAgaWYgKCF0YWJsZVNlY3Rpb24pCi0gICAgICAg
IHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5maXJzdEJvZHkoKTsKLSAgICAKLSAgICBpZiAoIXRhYmxl
U2VjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJlbmRlclRhYmxlU2VjdGlvbiog
aW5pdGlhbFRhYmxlU2VjdGlvbiA9IHRhYmxlU2VjdGlvbjsKLSAgICAKICAgICB3aGlsZSAodGFi
bGVTZWN0aW9uKSB7CiAgICAgICAgIAogICAgICAgICBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmpl
Y3QqPiBhcHBlbmRlZFJvd3M7Ci0KICAgICAgICAgdW5zaWduZWQgbnVtUm93cyA9IHRhYmxlU2Vj
dGlvbi0+bnVtUm93cygpOwotICAgICAgICB1bnNpZ25lZCBudW1Db2xzID0gdGFibGVTZWN0aW9u
LT5udW1Db2x1bW5zKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgcm93SW5kZXggPSAwOyByb3dJ
bmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
Y29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7ICsrY29sSW5kZXgpIHsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSB0YWJsZVNl
Y3Rpb24tPnByaW1hcnlDZWxsQXQocm93SW5kZXgsIGNvbEluZGV4KTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNlbGwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvd09iamVjdCA9IGF4
Q2FjaGUtPmdldE9yQ3JlYXRlKGNlbGwtPnBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICBpZiAo
IXJvd09iamVjdC0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVSb3cq
IHJvdyA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdyo+KHJvd09iamVjdCk7Ci0g
ICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBldmVyeSBjZWxsIGZvciBhIG5ldyBy
b3csIGJlY2F1c2UgY2VsbCBzcGFucwotICAgICAgICAgICAgICAgIC8vIGNhbiBjYXVzZSB1cyB0
byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3QgY29sdW1uCi0gICAgICAgICAg
ICAgICAgaWYgKGFwcGVuZGVkUm93cy5jb250YWlucyhyb3cpKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByb3ctPnNldFJv
d0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7ICAgICAgICAKLSAgICAgICAgICAgICAgICBtX3Jv
d3MuYXBwZW5kKHJvdyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyb3ctPmFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyVGFibGVSb3cqIHJlbmRlclJvdyA9IHRh
YmxlU2VjdGlvbi0+cm93UmVuZGVyZXJBdChyb3dJbmRleCk7CisgICAgICAgICAgICBpZiAoIXJl
bmRlclJvdykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0ID0gYXhDYWNoZS0+Z2V0T3JDcmVh
dGUocmVuZGVyUm93KTsKKyAgICAgICAgICAgIGlmICghcm93T2JqZWN0LT5pc1RhYmxlUm93KCkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Um93Kj4ocm93T2JqZWN0KTsKKyAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gY2hlY2sgZXZlcnkg
Y2VsbCBmb3IgYSBuZXcgcm93LCBiZWNhdXNlIGNlbGwgc3BhbnMKKyAgICAgICAgICAgIC8vIGNh
biBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3QgY29sdW1u
CisgICAgICAgICAgICBpZiAoYXBwZW5kZWRSb3dzLmNvbnRhaW5zKHJvdykpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJvdy0+c2V0Um93SW5k
ZXgoKGludCltX3Jvd3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIG1fcm93cy5hcHBlbmQocm93KTsK
KyAgICAgICAgICAgIGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAg
ICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsKICNpZiBQTEFURk9STShHVEspCi0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChy
b3ctPmNoaWxkcmVuKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fY2hp
bGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBh
cHBlbmRlZFJvd3MuYWRkKHJvdyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBhcHBlbmRl
ZFJvd3MuYWRkKHJvdyk7CiAgICAgICAgIH0KLSAgICAgICAgCisgICAgCiAgICAgICAgIHRhYmxl
U2VjdGlvbiA9IHRhYmxlLT5zZWN0aW9uQmVsb3codGFibGVTZWN0aW9uLCBTa2lwRW1wdHlTZWN0
aW9ucyk7CiAgICAgfQogICAgIApAQCAtNTA5LDc2ICs1MDEsMzYgQEAKIAogQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2ln
bmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewotICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9y
ZW5kZXJlci0+aXNUYWJsZSgpKQorICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKKyAg
ICBpZiAoY29sdW1uID49IGNvbHVtbkNvdW50KCkgfHwgcm93ID49IHJvd0NvdW50KCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIAotICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAg
ICAKLSAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0b1JlbmRlclRhYmxlKG1fcmVuZGVyZXIpOwot
ICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRhYmxlIHdpdGgganVzdCBhIHRmb290LiBT
aG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0b3BTZWN0aW9uLgotICAgIFJlbmRlclRh
YmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPmhlYWRlcigpOwotICAgIGlmICghdGFi
bGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+Zmlyc3RCb2R5KCk7Ci0g
ICAgCi0gICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gMDsKLSAgICB1bnNpZ25lZCByb3dDb3Vu
dCA9IDA7Ci0gICAgdW5zaWduZWQgcm93T2Zmc2V0ID0gMDsKLSAgICB3aGlsZSAodGFibGVTZWN0
aW9uKSB7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0gdGFibGVTZWN0aW9u
LT5udW1Sb3dzKCk7Ci0gICAgICAgIHVuc2lnbmVkIG51bUNvbHMgPSB0YWJsZVNlY3Rpb24tPm51
bUNvbHVtbnMoKTsKLSAgICAgICAgCi0gICAgICAgIHJvd0NvdW50ICs9IG51bVJvd3M7Ci0gICAg
ICAgIAotICAgICAgICB1bnNpZ25lZCBzZWN0aW9uU3BlY2lmaWNSb3cgPSByb3cgLSByb3dPZmZz
ZXQ7ICAgICAgICAgICAgCi0gICAgICAgIGlmIChyb3cgPCByb3dDb3VudCAmJiBjb2x1bW4gPCBu
dW1Db2xzICYmIHNlY3Rpb25TcGVjaWZpY1JvdyA8IG51bVJvd3MpIHsKLSAgICAgICAgICAgIGNl
bGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQoc2VjdGlvblNwZWNpZmljUm93LCBjb2x1
bW4pOworICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0
aGUgZGVzaXJlZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cyBpbiBhIHByZXZpb3VzIHJv
dy4KKyAgICBmb3IgKHVuc2lnbmVkIHJvd0luZGV4Q291bnRlciA9IHJvdyArIDE7IHJvd0luZGV4
Q291bnRlciA+IDA7IC0tcm93SW5kZXhDb3VudGVyKSB7CisgICAgICAgIHVuc2lnbmVkIHJvd0lu
ZGV4ID0gcm93SW5kZXhDb3VudGVyIC0gMTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIGNoaWxkcmVuID0gbV9yb3dzW3Jvd0luZGV4XS0+Y2hpbGRyZW4oKTsKKyAgICAgICAg
Ly8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2ZSB0byBjaGVjayB0
aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKKyAgICAgICAgLy8gY2VsbCB0byBkZXRlcm1pbmUgd2hp
Y2ggaXMgdGhlIHJpZ2h0IG9uZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBjb2xJbmRleENvdW50
ZXIgPSBtaW4oY2hpbGRyZW4uc2l6ZSgpLCBjb2x1bW4pOyBjb2xJbmRleENvdW50ZXIgPiAwOyAt
LWNvbEluZGV4Q291bnRlcikgeworICAgICAgICAgICAgdW5zaWduZWQgY29sSW5kZXggPSBjb2xJ
bmRleENvdW50ZXIgLSAxOworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQg
PSBjaGlsZHJlbltjb2xJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBBU1NFUlQoY2hpbGQtPmlz
VGFibGVDZWxsKCkpOworICAgICAgICAgICAgaWYgKCFjaGlsZC0+aXNUYWJsZUNlbGwoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gd2Ug
ZGlkbid0IGZpbmQgdGhlIGNlbGwsIHdoaWNoIG1lYW5zIHRoZXJlJ3Mgc3Bhbm5pbmcgaGFwcGVu
aW5nCi0gICAgICAgICAgICAvLyBzZWFyY2ggYmFja3dhcmRzIHRvIGZpbmQgdGhlIHNwYW5uaW5n
IGNlbGwKLSAgICAgICAgICAgIGlmICghY2VsbCkgewotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIC8vIGZpcnN0IHRyeSByb3dzCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgdGVz
dFJvdyA9IHNlY3Rpb25TcGVjaWZpY1JvdyAtIDE7IHRlc3RSb3cgPj0gMDsgLS10ZXN0Um93KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQo
dGVzdFJvdywgY29sdW1uKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gY2VsbCBvdmVybGFwcGVk
LiB1c2UgdGhpcyBvbmUKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFjZWxsIHx8IGNlbGwt
PnJvd1NwYW4oKSA+PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwgJiYgKChjZWxs
LT5yb3dJbmRleCgpICsgKGNlbGwtPnJvd1NwYW4oKSAtIDEpKSA+PSBzZWN0aW9uU3BlY2lmaWNS
b3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNlbGwgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBpZiAoIWNlbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IGNvbHMKLSAg
ICAgICAgICAgICAgICAgICAgZm9yIChpbnQgdGVzdENvbCA9IGNvbHVtbiAtIDE7IHRlc3RDb2wg
Pj0gMDsgLS10ZXN0Q29sKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjZWxsID0gdGFibGVT
ZWN0aW9uLT5wcmltYXJ5Q2VsbEF0KHNlY3Rpb25TcGVjaWZpY1JvdywgdGVzdENvbCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZWxsIG92ZXJsYXBwZWQuIHVzZSB0aGlzIG9uZQotICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFjZWxsIHx8IGNlbGwtPnJvd1NwYW4oKSA+PSAx
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsICYmICgoY2VsbC0+Y29sKCkgKyAo
Y2VsbC0+Y29sU3BhbigpIC0gMSkpID49IGNvbHVtbikpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjZWxsID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKKyAgICAgICAgICAgIHBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwqIHRhYmxlQ2VsbENoaWxkID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbCo+KGNoaWxkKTsKKyAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxkLT5jb2x1bW5JbmRl
eFJhbmdlKGNvbHVtblJhbmdlKTsKKyAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxkLT5yb3dJbmRl
eFJhbmdlKHJvd1JhbmdlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKChjb2x1bW4g
Pj0gY29sdW1uUmFuZ2UuZmlyc3QgJiYgY29sdW1uIDwgKGNvbHVtblJhbmdlLmZpcnN0ICsgY29s
dW1uUmFuZ2Uuc2Vjb25kKSkKKyAgICAgICAgICAgICAgICAmJiAocm93ID49IHJvd1JhbmdlLmZp
cnN0ICYmIHJvdyA8IChyb3dSYW5nZS5maXJzdCArIHJvd1JhbmdlLnNlY29uZCkpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0YWJsZUNlbGxDaGlsZDsKICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgaWYgKGNlbGwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIHJv
d09mZnNldCArPSBudW1Sb3dzOwotICAgICAgICAvLyB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZyBi
ZXR3ZWVuIHRoZSByb3dzIHdlIHNob3VsZCBoYXZlCi0gICAgICAgIGlmIChyb3cgPCByb3dDb3Vu
dCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+c2Vj
dGlvbkJlbG93KHRhYmxlU2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlvbnMpOwogICAgIH0KICAgICAK
LSAgICBpZiAoIWNlbGwpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNlbGxPYmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGNlbGwp
OwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNlbGxPYmplY3QtPmlzVGFi
bGVDZWxsKCkpOwotICAgIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsKj4oY2VsbE9iamVjdCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIEFjY2Vzc2liaWxpdHlS
b2xlIEFjY2Vzc2liaWxpdHlUYWJsZTo6cm9sZVZhbHVlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAkocmV2aXNp
b24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOworY2xhc3MgUmVuZGVyVGFibGVT
ZWN0aW9uOwogICAgIAogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlIDogcHVibGljIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QgewogCkBAIC02Nyw3ICs2OCw3IEBACiAgICAgCiAgICAgLy8gYWxs
IHRoZSBjZWxscyBpbiB0aGUgdGFibGUKICAgICB2b2lkIGNlbGxzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZv
ckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CisgICAgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVu
c2lnbmVkIHJvdyk7CiAgICAgCiAgICAgdm9pZCBjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOwogICAgIHZvaWQgcm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAkocmV2aXNpb24gMTQzNjM3KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgcmV0dXJuIENlbGxSb2xlOwogfQog
ICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKHBhaXI8aW50
LCBpbnQ+JiByb3dSYW5nZSkKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhS
YW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKQogewogICAgIGlmICghbV9y
ZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTE3LDExICsxMTcsNyBAQAogICAgIGlmICghdGFibGUgfHwgIXNlY3Rpb24pCiAgICAgICAg
IHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRhYmxlIHdpdGgganVz
dCBhIHRmb290LiBTaG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0b3BTZWN0aW9uLgot
ICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPmhlYWRlcigpOwot
ICAgIGlmICghdGFibGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+Zmly
c3RCb2R5KCk7Ci0gICAgCisgICAgUmVuZGVyVGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24gPSB0
YWJsZS0+dG9wU2VjdGlvbigpOyAgICAKICAgICB1bnNpZ25lZCByb3dPZmZzZXQgPSAwOwogICAg
IHdoaWxlICh0YWJsZVNlY3Rpb24pIHsKICAgICAgICAgaWYgKHRhYmxlU2VjdGlvbiA9PSBzZWN0
aW9uKQpAQCAtMTMzLDcgKzEyOSw3IEBACiAgICAgcm93UmFuZ2UuZmlyc3QgKz0gcm93T2Zmc2V0
OwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdl
KHBhaXI8aW50LCBpbnQ+JiBjb2x1bW5SYW5nZSkKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdl
KQogewogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgJKHJldmlzaW9uIDE0MzYzNykKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBACiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxs
KCkgY29uc3Q7CiAgICAgCiAgICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBy
b3cgc3BhbiBvZiBjZWxsCi0gICAgdmlydHVhbCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjxpbnQs
IGludD4mIHJvd1JhbmdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKTsKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQg
bG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgY29sdW1u
SW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgY29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9p
ZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2Up
OwogICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50VGFibGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxl
LmNwcAkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE1LDcgKzExNSw3IEBACiB7CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0g
Y2VsbEF0SW5kZXgodGFibGUsIGluZGV4KTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAgIHBh
aXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOworICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4gY29sdW1uUmFuZ2U7CiAgICAgICAgIGF4Q2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5S
YW5nZSk7CiAgICAgICAgIHJldHVybiBjb2x1bW5SYW5nZS5maXJzdDsKICAgICB9CkBAIC0xMjYs
NyArMTI2LDcgQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENlbGwgPSBjZWxs
QXRJbmRleCh0YWJsZSwgaW5kZXgpOwogICAgIGlmIChheENlbGwpIHsKLSAgICAgICAgcGFpcjxp
bnQsIGludD4gcm93UmFuZ2U7CisgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dS
YW5nZTsKICAgICAgICAgYXhDZWxsLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICAgICAg
cmV0dXJuIHJvd1JhbmdlLmZpcnN0OwogICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQAogewogICAg
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGwodGFibGUsIHJvdywgY29sdW1u
KTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdl
OworICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CiAgICAgICAg
IGF4Q2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgICAgIHJldHVybiBj
b2x1bW5SYW5nZS5zZWNvbmQ7CiAgICAgfQpAQCAtMTY0LDcgKzE2NCw3IEBACiB7CiAgICAgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0gY2VsbCh0YWJsZSwgcm93LCBjb2x1bW4pOwog
ICAgIGlmIChheENlbGwpIHsKLSAgICAgICAgcGFpcjxpbnQsIGludD4gcm93UmFuZ2U7CisgICAg
ICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKICAgICAgICAgYXhDZWxsLT5y
b3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICAgICAgcmV0dXJuIHJvd1JhbmdlLnNlY29uZDsK
ICAgICB9CkBAIC0xNzksMTAgKzE3OSwxMCBAQAogICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGUqPihhY2NUYWJsZSktPmNvbHVtbkhlYWRlcnMoYWxsQ29sdW1uSGVhZGVycyk7
CiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gYWxsQ29sdW1uSGVhZGVycy5zaXplKCk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjb2x1bW5Db3VudDsgKytrKSB7Ci0g
ICAgICAgICAgICBwYWlyPGludCwgaW50PiBjb2x1bW5SYW5nZTsKKyAgICAgICAgICAgIHBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAgICAgICAgICAgIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4o
YWxsQ29sdW1uSGVhZGVycy5hdChrKS5nZXQoKSk7CiAgICAgICAgICAgICBjZWxsLT5jb2x1bW5J
bmRleFJhbmdlKGNvbHVtblJhbmdlKTsKLSAgICAgICAgICAgIGlmIChjb2x1bW5SYW5nZS5maXJz
dCA8PSBjb2x1bW4gJiYgY29sdW1uIDwgY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5z
ZWNvbmQpCisgICAgICAgICAgICBpZiAoY29sdW1uUmFuZ2UuZmlyc3QgPD0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbHVtbikgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbHVtbikgPCBjb2x1
bW5SYW5nZS5maXJzdCArIGNvbHVtblJhbmdlLnNlY29uZCkKICAgICAgICAgICAgICAgICByZXR1
cm4gYWxsQ29sdW1uSGVhZGVyc1trXS0+d3JhcHBlcigpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTk3LDEwICsxOTcsMTAgQEAKICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Kj4oYWNjVGFibGUpLT5yb3dIZWFkZXJzKGFsbFJvd0hlYWRlcnMpOwogICAgICAgICB1bnNpZ25l
ZCByb3dDb3VudCA9IGFsbFJvd0hlYWRlcnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGsgPSAwOyBrIDwgcm93Q291bnQ7ICsraykgewotICAgICAgICAgICAgcGFpcjxpbnQsIGludD4g
cm93UmFuZ2U7CisgICAgICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7
CiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KGFsbFJvd0hlYWRlcnMuYXQoaykuZ2V0KCkpOwogICAg
ICAgICAgICAgY2VsbC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7Ci0gICAgICAgICAgICBpZiAo
cm93UmFuZ2UuZmlyc3QgPD0gcm93ICYmIHJvdyA8IHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uu
c2Vjb25kKQorICAgICAgICAgICAgaWYgKHJvd1JhbmdlLmZpcnN0IDw9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyb3cpICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb3cpIDwgcm93UmFuZ2UuZmly
c3QgKyByb3dSYW5nZS5zZWNvbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbFJvd0hlYWRl
cnNba10tPndyYXBwZXIoKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAxNDM2MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjM3MCwxMiArMjM3MCwxMiBAQAogICAgIAogICAgIGlmICht
X29iamVjdC0+aXNUYWJsZUNlbGwoKSkgewogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0g
ICAgICAgICAgICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsKKyAgICAgICAgICAgIHBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGwqPihtX29iamVjdCktPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwog
ICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHJv
d1JhbmdlLmZpcnN0LCByb3dSYW5nZS5zZWNvbmQpXTsKICAgICAgICAgfQogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4
UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBwYWlyPGludCwgaW50PiBjb2x1bW5SYW5n
ZTsKKyAgICAgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihtX29iamVjdCkt
PmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgICAgICAgICAgcmV0dXJuIFtOU1Zh
bHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKGNvbHVtblJhbmdlLmZpcnN0LCBjb2x1bW5S
YW5nZS5zZWNvbmQpXTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTMsNiArMTUzLDkgQEAKICAgICAgICAgcmV0dXJuIGMucHJpbWFyeUNlbGwoKTsKICAgICB9CiAK
KyAgICAvLyBVc2VkIGJ5IGFjY2Vzc2liaWxpdHkuCisgICAgUmVuZGVyVGFibGVSb3cqIHJvd1Jl
bmRlcmVyQXQodW5zaWduZWQgcm93KSBjb25zdCB7IHJldHVybiBtX2dyaWRbcm93XS5yb3dSZW5k
ZXJlcjsgfQorCiAgICAgdm9pZCBhcHBlbmRDb2x1bW4odW5zaWduZWQgcG9zKTsKICAgICB2b2lk
IHNwbGl0Q29sdW1uKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgZmlyc3QpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0w
Mi0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFY
OiBjZWxsRm9yQ29sdW1uQW5kUm93IGZhaWxzIGZvciB0YWJsZXMgd2l0aCBoaWRkZW4gdGFibGUg
Y2VsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDA1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpjZWxsQ29sdW1uSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpjZWxsQ29sdW1uU3Bhbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNlbGxSb3dJbmRleCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNlbGxSb3dTcGFuKToKKwogMjAxMy0wMi0yMSAgVnNldm9s
b2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBHZXQgcmlkIG9mIHBhcnNlZFVSTCBpbiB1aVNvdXJjZUNvZGUsIHVzZSBuYW1lIGFuZCBwYXRo
IGZvciBkaXNwbGF5TmFtZSBpbnN0ZWFkLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDE0MzYz
NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTksNyArODk5LDcgQEAKICAgICBpZiAoIW1fcHJpdmF0
ZS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50LCBpbnQ+
IGNvbHVtblJhbmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsK
ICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9wcml2
YXRlLmdldCgpKS0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgcmV0dXJuIGNv
bHVtblJhbmdlLmZpcnN0OwogfQpAQCAtOTEyLDcgKzkxMiw3IEBACiAgICAgaWYgKCFtX3ByaXZh
dGUtPmlzVGFibGVDZWxsKCkpCiAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBwYWlyPGludCwgaW50
PiBjb2x1bW5SYW5nZTsKKyAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7
CiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fcHJp
dmF0ZS5nZXQoKSktPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgIHJldHVybiBj
b2x1bW5SYW5nZS5zZWNvbmQ7CiB9CkBAIC05MjUsNyArOTI1LDcgQEAKICAgICBpZiAoIW1fcHJp
dmF0ZS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50LCBp
bnQ+IHJvd1JhbmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKICAg
ICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9wcml2YXRl
LmdldCgpKS0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CiAgICAgcmV0dXJuIHJvd1JhbmdlLmZp
cnN0OwogfQpAQCAtOTM4LDcgKzkzOCw3IEBACiAgICAgaWYgKCFtX3ByaXZhdGUtPmlzVGFibGVD
ZWxsKCkpCiAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsK
KyAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fcHJpdmF0ZS5nZXQoKSktPnJvd0lu
ZGV4UmFuZ2Uocm93UmFuZ2UpOwogICAgIHJldHVybiByb3dSYW5nZS5zZWNvbmQ7CiB9CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDM2NDUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMi0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBjZWxsRm9yQ29sdW1uQW5kUm93IGZhaWxz
IGZvciB0YWJsZXMgd2l0aCBoaWRkZW4gdGFibGUgY2VsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDA1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhp
ZGRlbi1oZWFkLXNlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTAyLTIxICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEFwYWNoZSdzIEhh
c2hNYXAuamF2YSB0cmFuc2xhdGVkIGludG8gSmF2YVNjcmlwdCBhcyBhIEpTUmVncmVzcyB0ZXN0
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMJKHJldmlzaW9uIDE0MzYzNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTE0NTEsNiArMTQ1MSw3IEBACiAKIHdl
YmtpdC5vcmcvYi83MzkxMiBhY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtc2VuZHMtbm90aWZp
Y2F0aW9uLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogI3dlYmtpdC5vcmcvYi85ODc4NyBhY2Nlc3Np
YmlsaXR5L2FyaWEtaGlkZGVuLW5lZ2F0ZXMtbm8tdmlzaWJpbGl0eS5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvMTEwNTA4IGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1z
ZWN0aW9uLmh0bWwgW1NraXBdCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVGVzdCBmYWlsdXJlcyB3aXRoIFNr
aWEgR1BVIHJlbmRlcmluZyBvZiBjYW52YXMgMkQKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQt
c2VjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGNlbGxGb3JSb3dBbmRD
b2x1bW4gd29yayBhcyBleHBlY3RlZCB3aGVuIGNlbGxzIGFyZSBoaWRkZW4gaW4gc2VjdGlvbnMg
YW5kIHJvd3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1RhYmxlMSBoYXMg
YSBoaWRkZW4gZmlyc3Qgcm93LiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdvcmtzIGFzIGV4cGVj
dGVkLgorUEFTUyB0YWJsZTEucm93Q291bnQgaXMgMgorUEFTUyAhdGFibGUxY2VsbDEgfHwgIXRh
YmxlMWNlbGwxLmlzVmFsaWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTFjZWxsMi5pc0VxdWFsKGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUxY2VsbCcpKSBp
cyB0cnVlCitQQVNTIHRhYmxlMWNlbGwyLnJvd0luZGV4UmFuZ2UoKSBpcyAnezEsIDF9JworUEFT
UyB0YWJsZTFjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkgaXMgJ3swLCAxfScKKworVGFibGUyIGhh
cyBhIGhpZGRlbiBmaXJzdCBzZWN0aW9uLiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdvcmtzIGFz
IGV4cGVjdGVkLgorUEFTUyB0YWJsZTIucm93Q291bnQgaXMgMgorUEFTUyAhdGFibGUyY2VsbDEg
fHwgIXRhYmxlMmNlbGwxLmlzVmFsaWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTJjZWxsMi5pc0VxdWFs
KGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUyY2Vs
bCcpKSBpcyB0cnVlCitQQVNTIHRhYmxlMmNlbGwyLnJvd0luZGV4UmFuZ2UoKSBpcyAnezEsIDF9
JworUEFTUyB0YWJsZTJjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkgaXMgJ3swLCAxfScKKworVGFi
bGUzIG9ubHkgaGFzIGEgZm9vdGVyIHNlY3Rpb24uCitQQVNTIHRhYmxlMy5yb3dDb3VudCBpcyAz
CitQQVNTICF0YWJsZTNjZWxsMSB8fCAhdGFibGUzY2VsbDEuaXNWYWxpZCBpcyB0cnVlCitQQVNT
IHRhYmxlM2NlbGwyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCd0YWJsZTNjZWxsJykpIGlzIHRydWUKK1BBU1MgdGFibGUzY2VsbDIucm93SW5k
ZXhSYW5nZSgpIGlzICd7MiwgMX0nCitQQVNTIHRhYmxlM2NlbGwyLmNvbHVtbkluZGV4UmFuZ2Uo
KSBpcyAnezAsIDF9JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRk
ZW4taGVhZC1zZWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9ImNvbnRlbnQiPgorCis8IS0tIEZpcnN0IHJv
dyBpcyBoaWRkZW4gLS0+Cis8dGFibGUgaWQ9InRhYmxlMSIgYm9yZGVyPTE+CisgIDx0cj48dGgg
aGlkZGVuPmhlYWRlciAxPC90aD48dGggaGlkZGVuPmhlYWRlciAyPC90aD48L3RyPgorICA8dHI+
PHRkIGlkPSJ0YWJsZTFjZWxsIj5mb288L3RkPjx0ZD5iYXI8L3RkPjwvdHI+Cis8L3RhYmxlPgor
Cis8IS0tIEZpcnN0IHNlY3Rpb24gaXMgaGlkZGVuIC0tPgorPHRhYmxlIGlkPSJ0YWJsZTIiIGJv
cmRlcj0xPgorICA8dGhlYWQ+PHRoIGhpZGRlbj5oZWFkZXIgMTwvdGg+PHRoIGhpZGRlbj5oZWFk
ZXIgMjwvdGg+PC90aGVhZD4KKyAgPHRyPjx0ZCBpZD0idGFibGUyY2VsbCI+Zm9vPC90ZD48dGQ+
YmFyPC90ZD48L3RyPgorPC90YWJsZT4KKworPCEtLSBGaXJzdCBhbmQgbWlkZGxlIHNlY3Rpb24g
aXMgaGlkZGVuIC0tPgorPHRhYmxlIGlkPSJ0YWJsZTMiIGJvcmRlcj0xPgorICA8dGhlYWQ+PHRy
Pjx0aCBoaWRkZW4+aGVhZGVyIDE8L3RoPjx0aCBoaWRkZW4+aGVhZGVyIDI8L3RoPjwvdHI+PC90
aGVhZD4KKyAgPHRyPjx0ZCBoaWRkZW4+Zm9vPC90ZD48dGQgaGlkZGVuPmJhcjwvdGQ+PC90cj4K
KyAgPHRmb290Pjx0cj48dGQgaWQ9InRhYmxlM2NlbGwiPmZvb3Q8L3RkPjx0ZD5mb290PC90ZD48
L3RyPjwvdGZvb3Q+Cis8L3RhYmxlPgorCis8L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgY2VsbEZvclJvd0FuZENvbHVtbiB3b3JrIGFzIGV4cGVj
dGVkIHdoZW4gY2VsbHMgYXJlIGhpZGRlbiBpbiBzZWN0aW9ucyBhbmQgcm93cy4iKTsKKworICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgICAgICBkZWJ1Zygi
XG5UYWJsZTEgaGFzIGEgaGlkZGVuIGZpcnN0IHJvdy4gVmVyaWZ5IGFjY2Vzc2luZyBjZWxscyB3
b3JrcyBhcyBleHBlY3RlZC4iKTsKKyAgICAgICAgdmFyIHRhYmxlMSA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGUxIik7CisgICAgICAgIHNob3Vs
ZEJlKCJ0YWJsZTEucm93Q291bnQiLCAiMiIpOworICAgICAgICB2YXIgdGFibGUxY2VsbDEgPSB0
YWJsZTEuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIh
dGFibGUxY2VsbDEgfHwgIXRhYmxlMWNlbGwxLmlzVmFsaWQiKTsKKyAgICAgICAgdmFyIHRhYmxl
MWNlbGwyID0gdGFibGUxLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMSk7CisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgidGFibGUxY2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxlMWNlbGwnKSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInRh
YmxlMWNlbGwyLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworICAgICAgICBzaG91bGRC
ZSgidGFibGUxY2VsbDIuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MCwgMX0nIik7CisKKyAgICAg
ICAgZGVidWcoIlxuVGFibGUyIGhhcyBhIGhpZGRlbiBmaXJzdCBzZWN0aW9uLiBWZXJpZnkgYWNj
ZXNzaW5nIGNlbGxzIHdvcmtzIGFzIGV4cGVjdGVkLiIpOworICAgICAgICB2YXIgdGFibGUyID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZTIiKTsK
KyAgICAgICAgc2hvdWxkQmUoInRhYmxlMi5yb3dDb3VudCIsICIyIik7CisgICAgICAgIHZhciB0
YWJsZTJjZWxsMSA9IHRhYmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApOworICAgICAgICBz
aG91bGRCZVRydWUoIiF0YWJsZTJjZWxsMSB8fCAhdGFibGUyY2VsbDEuaXNWYWxpZCIpOworICAg
ICAgICB2YXIgdGFibGUyY2VsbDIgPSB0YWJsZTIuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAxKTsK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0YWJsZTJjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUyY2VsbCcpKSIpOworICAgICAg
ICBzaG91bGRCZSgidGFibGUyY2VsbDIucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMX0nIik7Cisg
ICAgICAgIHNob3VsZEJlKCJ0YWJsZTJjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkiLCAiJ3swLCAx
fSciKTsKKworICAgICAgICBkZWJ1ZygiXG5UYWJsZTMgb25seSBoYXMgYSBmb290ZXIgc2VjdGlv
bi4iKTsKKyAgICAgICAgdmFyIHRhYmxlMyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgidGFibGUzIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTMucm93
Q291bnQiLCAiMyIpOworICAgICAgICB2YXIgdGFibGUzY2VsbDEgPSB0YWJsZTMuY2VsbEZvckNv
bHVtbkFuZFJvdygwLCAwKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIhdGFibGUzY2VsbDEgfHwg
IXRhYmxlM2NlbGwxLmlzVmFsaWQiKTsKKyAgICAgICAgdmFyIHRhYmxlM2NlbGwyID0gdGFibGUz
LmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGFibGUz
Y2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ3RhYmxlM2NlbGwnKSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlM2NlbGwyLnJvd0lu
ZGV4UmFuZ2UoKSIsICInezIsIDF9JyIpOworICAgICAgICBzaG91bGRCZSgidGFibGUzY2VsbDIu
Y29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MCwgMX0nIik7CisgICAgICAKKyAgICAgICAgLy8gQ2xl
YXIgdGhlIEhUTUwgZm9yIGJldHRlciByZXN1bHRzLgorICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29udGVudCIpLmlubmVySFRNTCA9ICIiOyAgCisgICAgfQorCisKKzwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189586</attachid>
            <date>2013-02-21 13:12:56 -0800</date>
            <delta_ts>2013-02-21 13:23:15 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31894</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAyLTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1
bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSB0YWJsZSBoYWQg
aGlkZGVuIGNlbGxzLCB0aGVuIGFjY2Vzc2liaWxpdHkgY29kZSB3YXMgYmVpbmcgY29uZnVzZWQg
aW4gYSBmZXcgd2F5cy4KKyAgICAgICAgMSkgVGhlIGNlbGxGb3JDb2x1bW5BbmRSb3cgbWV0aG9k
IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgaW5mb3JtYXRpb24gc2luY2UgdGhhdCB3YXMKKyAgICAg
ICAgICAgdXNpbmcgdGhlIFJlbmRlclRhYmxlU2VjdGlvbiB0byByZXRyaWV2ZSBhIGNlbGwsIHdo
aWNoIGRpZCBub3QgaGF2ZSB0aGUgc2FtZSBkYXRhIGFzIHRoZSBBWFRhYmxlCisgICAgICAgIDIp
IFRoZSB3YXkgd2Ugd2VyZSBhZGRpbmcgY2hpbGRyZW4gbWFkZSBpdCBpbXBvc3NpYmxlIHRvIGRl
dGVybWluZSBjb2x1bW4gYW5kIHJvdyByYW5nZSBiZWNhdXNlIHdlIAorICAgICAgICAgICB3b3Vs
ZCBza2lwIHJvd3MgdGhhdCBoYWQgaGlkZGVuIGNoaWxkcmVuCisgICAgICAgIDMpIEFjY2Vzc2li
aWxpdHlBUklBR3JpZCBhbmQgQWNjZXNzaWJpbGl0eVRhYmxlIHdlcmUgdXNpbmcgZGlmZmVyZW50
IG1ldGhvZHMgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cKKworICAgICAgICBUaGUgZml4IGRvZXMg
YSBmZXcgdGhpbmdzIHRvIG1ha2UgdGhpbmdzIHJpZ2h0OgorICAgICAgICAxKSBBbHdheXMgYWRk
IGFuIGFjY2Vzc2liaWxpdHkgcm93LCBldmVuIGlmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGNlbGxz
IGluIHRoYXQgcm93LgorICAgICAgICAyKSBIYXZlIG9uZSBtZXRob2QgZm9yIEFYVGFibGUgYW5k
IEFYQVJJQUdyaWQgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cuCisgICAgICAgIDMpIENoYW5nZSBj
ZWxsRm9yQ29sdW1uQW5kUm93IHRvIHF1ZXJ5IHRoZSBhY2Nlc3NpYmlsaXR5IGNoaWxkcmVuIHJh
dGhlciB0aGFuIHRoZSBSZW5kZXJUYWJsZVNlY3Rpb24gaW4gZGV0ZXJtaW5pbmcgdGhlIHJvdywg
Y29sIGluZm8uCisgICAgICAgIDQpIGNlbGxGb3JDb2x1bW5BbmRSb3cgc2hvdWxkIHVzZSB1bnNp
Z25lZCB2YWx1ZXMgaW5zdGVhZCBvZiBpbnQgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmg6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5QVJJQUdyaWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JD
b2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUYWJsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwOgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZVRhYmxlR2V0Q29sdW1uQXRJbmRleCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
VGFibGVHZXRSb3dBdEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENv
bHVtbkV4dGVudEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVu
dEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhlYWRlcik6Cisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dIZWFkZXIpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgor
ICAgICAgICAoUmVuZGVyVGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6cm93UmVuZGVyZXJBdCk6CisKIDIwMTMtMDItMTkgIE1hcmsgSGFobmVuYmVy
ZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IE5l
ZWQgYSB3YXkgdG8gdXNlIHRoZSBPYmplY3RpdmUtQyBKYXZhU2NyaXB0IEFQSSB3aXRoIFdlYktp
dApAQCAtMTU4LDYgKzIxMyw3IEBACiAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuaDoKICAgICAgICAgKFJlbmRlckxheWVyTW9kZWxPYmplY3QpOgogCis+Pj4+Pj4+
IC5yMTQzNjMzCiAyMDEzLTAyLTIxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGdyb3d0
aCBkdXJpbmcgYXV0byBwbGFjZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHJldmlzaW9uIDE0MzYz
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDUwICsxMzIsNCBAQAogICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwogfQogICAgIAotQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQotewotICAgIGlmICghbV9yZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwot
ICAgIAotICAgIGlmIChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaW50IGludFJvdyA9IChpbnQpcm93Owot
ICAgIGludCBpbnRDb2x1bW4gPSAoaW50KWNvbHVtbjsKLQotICAgIHBhaXI8aW50LCBpbnQ+IGNv
bHVtblJhbmdlOwotICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOwotICAgIAotICAgIC8vIEl0
ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVzaXJlZCBjZWxs
IGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cwotICAgIC8vIGluIGEgcHJldmlvdXMgcm93LgotICAg
IGZvciAoOyBpbnRSb3cgPj0gMDsgLS1pbnRSb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogdGFibGVSb3cgPSBtX3Jvd3NbaW50Um93XS5nZXQoKTsKLSAgICAgICAgaWYgKCF0YWJs
ZVJvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gdGFibGVSb3ctPmNoaWxkcmVuKCk7Ci0gICAg
ICAgIHVuc2lnbmVkIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgICAgICAK
LSAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2ZSB0
byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKLSAgICAgICAgLy8gY2VsbCB0byBkZXRl
cm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBrID0g
MDsgayA8IGNoaWxkcmVuTGVuZ3RoOyArK2spIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoaWxkID0gY2hpbGRyZW5ba10uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWNoaWxk
LT5pc1RhYmxlQ2VsbCgpKSAKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsQ2hpbGQgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oY2hpbGQpOwotICAgICAgICAgICAg
dGFibGVDZWxsQ2hpbGQtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwotICAgICAgICAg
ICAgdGFibGVDZWxsQ2hpbGQtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoKGludENvbHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAmJiBpbnRD
b2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpKQotICAgICAg
ICAgICAgICAgICYmIChpbnRSb3cgPj0gcm93UmFuZ2UuZmlyc3QgJiYgaW50Um93IDwgKHJvd1Jh
bmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRh
YmxlQ2VsbENoaWxkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0gICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJKHJldmlzaW9uIDE0MzYzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDYgQEAKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGRyZW4oKTsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
IGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwotCiBw
cml2YXRlOgogICAgIC8vIEFSSUEgdHJlZWdyaWRzIGFuZCBncmlkcyBzdXBwb3J0IHNlbGVjdGVk
IHJvd3MuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyByZXR1cm4g
dHJ1ZTsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAkocmV2aXNpb24gMTQzNjM3KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQAogICAgIHJldHVybiBwYXJlbnQ7
CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2Uo
cGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
Ojpyb3dJbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpCiB7CiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CiAgICAgaWYgKCFwYXJlbnQpCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgICByb3dSYW5nZS5zZWNv
bmQgPSAxOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4
UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29s
dW1uUmFuZ2UpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAko
cmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAKICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKCk7CiAgICAgCiAgICAgLy8gZmls
bHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiBjZWxsCi0gICAgdmlydHVh
bCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1Jhbmdl
KTsKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9m
IGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYg
Y29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5j
cHAJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpAQCAtMzQ2LDUxICszNDcsNDIgQEAKIAogICAgIC8vIGdv
IHRocm91Z2ggYWxsIHRoZSBhdmFpbGFibGUgc2VjdGlvbnMgdG8gcHVsbCBvdXQgdGhlIHJvd3MK
ICAgICAvLyBhbmQgYWRkIHRoZW0gYXMgY2hpbGRyZW4KLSAgICAvLyBGSVhNRTogVGhpcyB3aWxs
IHNraXAgYSB0YWJsZSB3aXRoIGp1c3QgYSB0Zm9vdC4gU2hvdWxkIGZpeCBieSB1c2luZyBSZW5k
ZXJUYWJsZTo6dG9wU2VjdGlvbi4KLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlv
biA9IHRhYmxlLT5oZWFkZXIoKTsKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlv
biA9IHRhYmxlLT50b3BTZWN0aW9uKCk7CiAgICAgaWYgKCF0YWJsZVNlY3Rpb24pCi0gICAgICAg
IHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5maXJzdEJvZHkoKTsKLSAgICAKLSAgICBpZiAoIXRhYmxl
U2VjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJlbmRlclRhYmxlU2VjdGlvbiog
aW5pdGlhbFRhYmxlU2VjdGlvbiA9IHRhYmxlU2VjdGlvbjsKLSAgICAKICAgICB3aGlsZSAodGFi
bGVTZWN0aW9uKSB7CiAgICAgICAgIAogICAgICAgICBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmpl
Y3QqPiBhcHBlbmRlZFJvd3M7Ci0KICAgICAgICAgdW5zaWduZWQgbnVtUm93cyA9IHRhYmxlU2Vj
dGlvbi0+bnVtUm93cygpOwotICAgICAgICB1bnNpZ25lZCBudW1Db2xzID0gdGFibGVTZWN0aW9u
LT5udW1Db2x1bW5zKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgcm93SW5kZXggPSAwOyByb3dJ
bmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
Y29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7ICsrY29sSW5kZXgpIHsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSB0YWJsZVNl
Y3Rpb24tPnByaW1hcnlDZWxsQXQocm93SW5kZXgsIGNvbEluZGV4KTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNlbGwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvd09iamVjdCA9IGF4
Q2FjaGUtPmdldE9yQ3JlYXRlKGNlbGwtPnBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICBpZiAo
IXJvd09iamVjdC0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVSb3cq
IHJvdyA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdyo+KHJvd09iamVjdCk7Ci0g
ICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBldmVyeSBjZWxsIGZvciBhIG5ldyBy
b3csIGJlY2F1c2UgY2VsbCBzcGFucwotICAgICAgICAgICAgICAgIC8vIGNhbiBjYXVzZSB1cyB0
byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3QgY29sdW1uCi0gICAgICAgICAg
ICAgICAgaWYgKGFwcGVuZGVkUm93cy5jb250YWlucyhyb3cpKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByb3ctPnNldFJv
d0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7ICAgICAgICAKLSAgICAgICAgICAgICAgICBtX3Jv
d3MuYXBwZW5kKHJvdyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyb3ctPmFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyVGFibGVSb3cqIHJlbmRlclJvdyA9IHRh
YmxlU2VjdGlvbi0+cm93UmVuZGVyZXJBdChyb3dJbmRleCk7CisgICAgICAgICAgICBpZiAoIXJl
bmRlclJvdykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0ID0gYXhDYWNoZS0+Z2V0T3JDcmVh
dGUocmVuZGVyUm93KTsKKyAgICAgICAgICAgIGlmICghcm93T2JqZWN0LT5pc1RhYmxlUm93KCkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Um93Kj4ocm93T2JqZWN0KTsKKyAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gY2hlY2sgZXZlcnkg
Y2VsbCBmb3IgYSBuZXcgcm93LCBiZWNhdXNlIGNlbGwgc3BhbnMKKyAgICAgICAgICAgIC8vIGNh
biBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3QgY29sdW1u
CisgICAgICAgICAgICBpZiAoYXBwZW5kZWRSb3dzLmNvbnRhaW5zKHJvdykpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJvdy0+c2V0Um93SW5k
ZXgoKGludCltX3Jvd3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIG1fcm93cy5hcHBlbmQocm93KTsK
KyAgICAgICAgICAgIGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAg
ICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsKICNpZiBQTEFURk9STShHVEspCi0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChy
b3ctPmNoaWxkcmVuKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fY2hp
bGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBh
cHBlbmRlZFJvd3MuYWRkKHJvdyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBhcHBlbmRl
ZFJvd3MuYWRkKHJvdyk7CiAgICAgICAgIH0KLSAgICAgICAgCisgICAgCiAgICAgICAgIHRhYmxl
U2VjdGlvbiA9IHRhYmxlLT5zZWN0aW9uQmVsb3codGFibGVTZWN0aW9uLCBTa2lwRW1wdHlTZWN0
aW9ucyk7CiAgICAgfQogICAgIApAQCAtNTA5LDc2ICs1MDEsMzYgQEAKIAogQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2ln
bmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewotICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9y
ZW5kZXJlci0+aXNUYWJsZSgpKQorICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKKyAg
ICBpZiAoY29sdW1uID49IGNvbHVtbkNvdW50KCkgfHwgcm93ID49IHJvd0NvdW50KCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIAotICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAg
ICAKLSAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0b1JlbmRlclRhYmxlKG1fcmVuZGVyZXIpOwot
ICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRhYmxlIHdpdGgganVzdCBhIHRmb290LiBT
aG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0b3BTZWN0aW9uLgotICAgIFJlbmRlclRh
YmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPmhlYWRlcigpOwotICAgIGlmICghdGFi
bGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+Zmlyc3RCb2R5KCk7Ci0g
ICAgCi0gICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gMDsKLSAgICB1bnNpZ25lZCByb3dDb3Vu
dCA9IDA7Ci0gICAgdW5zaWduZWQgcm93T2Zmc2V0ID0gMDsKLSAgICB3aGlsZSAodGFibGVTZWN0
aW9uKSB7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0gdGFibGVTZWN0aW9u
LT5udW1Sb3dzKCk7Ci0gICAgICAgIHVuc2lnbmVkIG51bUNvbHMgPSB0YWJsZVNlY3Rpb24tPm51
bUNvbHVtbnMoKTsKLSAgICAgICAgCi0gICAgICAgIHJvd0NvdW50ICs9IG51bVJvd3M7Ci0gICAg
ICAgIAotICAgICAgICB1bnNpZ25lZCBzZWN0aW9uU3BlY2lmaWNSb3cgPSByb3cgLSByb3dPZmZz
ZXQ7ICAgICAgICAgICAgCi0gICAgICAgIGlmIChyb3cgPCByb3dDb3VudCAmJiBjb2x1bW4gPCBu
dW1Db2xzICYmIHNlY3Rpb25TcGVjaWZpY1JvdyA8IG51bVJvd3MpIHsKLSAgICAgICAgICAgIGNl
bGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQoc2VjdGlvblNwZWNpZmljUm93LCBjb2x1
bW4pOworICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0
aGUgZGVzaXJlZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cyBpbiBhIHByZXZpb3VzIHJv
dy4KKyAgICBmb3IgKHVuc2lnbmVkIHJvd0luZGV4Q291bnRlciA9IHJvdyArIDE7IHJvd0luZGV4
Q291bnRlciA+IDA7IC0tcm93SW5kZXhDb3VudGVyKSB7CisgICAgICAgIHVuc2lnbmVkIHJvd0lu
ZGV4ID0gcm93SW5kZXhDb3VudGVyIC0gMTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIGNoaWxkcmVuID0gbV9yb3dzW3Jvd0luZGV4XS0+Y2hpbGRyZW4oKTsKKyAgICAgICAg
Ly8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2ZSB0byBjaGVjayB0
aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKKyAgICAgICAgLy8gY2VsbCB0byBkZXRlcm1pbmUgd2hp
Y2ggaXMgdGhlIHJpZ2h0IG9uZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBjb2xJbmRleENvdW50
ZXIgPSBtaW4oY2hpbGRyZW4uc2l6ZSgpLCBjb2x1bW4pOyBjb2xJbmRleENvdW50ZXIgPiAwOyAt
LWNvbEluZGV4Q291bnRlcikgeworICAgICAgICAgICAgdW5zaWduZWQgY29sSW5kZXggPSBjb2xJ
bmRleENvdW50ZXIgLSAxOworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQg
PSBjaGlsZHJlbltjb2xJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBBU1NFUlQoY2hpbGQtPmlz
VGFibGVDZWxsKCkpOworICAgICAgICAgICAgaWYgKCFjaGlsZC0+aXNUYWJsZUNlbGwoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gd2Ug
ZGlkbid0IGZpbmQgdGhlIGNlbGwsIHdoaWNoIG1lYW5zIHRoZXJlJ3Mgc3Bhbm5pbmcgaGFwcGVu
aW5nCi0gICAgICAgICAgICAvLyBzZWFyY2ggYmFja3dhcmRzIHRvIGZpbmQgdGhlIHNwYW5uaW5n
IGNlbGwKLSAgICAgICAgICAgIGlmICghY2VsbCkgewotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIC8vIGZpcnN0IHRyeSByb3dzCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgdGVz
dFJvdyA9IHNlY3Rpb25TcGVjaWZpY1JvdyAtIDE7IHRlc3RSb3cgPj0gMDsgLS10ZXN0Um93KSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQo
dGVzdFJvdywgY29sdW1uKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gY2VsbCBvdmVybGFwcGVk
LiB1c2UgdGhpcyBvbmUKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFjZWxsIHx8IGNlbGwt
PnJvd1NwYW4oKSA+PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwgJiYgKChjZWxs
LT5yb3dJbmRleCgpICsgKGNlbGwtPnJvd1NwYW4oKSAtIDEpKSA+PSBzZWN0aW9uU3BlY2lmaWNS
b3cpKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNlbGwgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBpZiAoIWNlbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IGNvbHMKLSAg
ICAgICAgICAgICAgICAgICAgZm9yIChpbnQgdGVzdENvbCA9IGNvbHVtbiAtIDE7IHRlc3RDb2wg
Pj0gMDsgLS10ZXN0Q29sKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjZWxsID0gdGFibGVT
ZWN0aW9uLT5wcmltYXJ5Q2VsbEF0KHNlY3Rpb25TcGVjaWZpY1JvdywgdGVzdENvbCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjZWxsIG92ZXJsYXBwZWQuIHVzZSB0aGlzIG9uZQotICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFjZWxsIHx8IGNlbGwtPnJvd1NwYW4oKSA+PSAx
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZWxsICYmICgoY2VsbC0+Y29sKCkgKyAo
Y2VsbC0+Y29sU3BhbigpIC0gMSkpID49IGNvbHVtbikpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjZWxsID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKKyAgICAgICAgICAgIHBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwqIHRhYmxlQ2VsbENoaWxkID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbCo+KGNoaWxkKTsKKyAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxkLT5jb2x1bW5JbmRl
eFJhbmdlKGNvbHVtblJhbmdlKTsKKyAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxkLT5yb3dJbmRl
eFJhbmdlKHJvd1JhbmdlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKChjb2x1bW4g
Pj0gY29sdW1uUmFuZ2UuZmlyc3QgJiYgY29sdW1uIDwgKGNvbHVtblJhbmdlLmZpcnN0ICsgY29s
dW1uUmFuZ2Uuc2Vjb25kKSkKKyAgICAgICAgICAgICAgICAmJiAocm93ID49IHJvd1JhbmdlLmZp
cnN0ICYmIHJvdyA8IChyb3dSYW5nZS5maXJzdCArIHJvd1JhbmdlLnNlY29uZCkpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0YWJsZUNlbGxDaGlsZDsKICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgaWYgKGNlbGwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIHJv
d09mZnNldCArPSBudW1Sb3dzOwotICAgICAgICAvLyB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZyBi
ZXR3ZWVuIHRoZSByb3dzIHdlIHNob3VsZCBoYXZlCi0gICAgICAgIGlmIChyb3cgPCByb3dDb3Vu
dCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+c2Vj
dGlvbkJlbG93KHRhYmxlU2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlvbnMpOwogICAgIH0KICAgICAK
LSAgICBpZiAoIWNlbGwpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNlbGxPYmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGNlbGwp
OwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNlbGxPYmplY3QtPmlzVGFi
bGVDZWxsKCkpOwotICAgIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsKj4oY2VsbE9iamVjdCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIEFjY2Vzc2liaWxpdHlS
b2xlIEFjY2Vzc2liaWxpdHlUYWJsZTo6cm9sZVZhbHVlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAkocmV2aXNp
b24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOworY2xhc3MgUmVuZGVyVGFibGVT
ZWN0aW9uOwogICAgIAogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlIDogcHVibGljIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QgewogCkBAIC02Nyw3ICs2OCw3IEBACiAgICAgCiAgICAgLy8gYWxs
IHRoZSBjZWxscyBpbiB0aGUgdGFibGUKICAgICB2b2lkIGNlbGxzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZv
ckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdyk7CisgICAgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVu
c2lnbmVkIHJvdyk7CiAgICAgCiAgICAgdm9pZCBjb2x1bW5IZWFkZXJzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOwogICAgIHZvaWQgcm93SGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAkocmV2aXNpb24gMTQzNjM3KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgcmV0dXJuIENlbGxSb2xlOwogfQog
ICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKHBhaXI8aW50
LCBpbnQ+JiByb3dSYW5nZSkKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhS
YW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKQogewogICAgIGlmICghbV9y
ZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTE3LDExICsxMTcsNyBAQAogICAgIGlmICghdGFibGUgfHwgIXNlY3Rpb24pCiAgICAgICAg
IHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRhYmxlIHdpdGgganVz
dCBhIHRmb290LiBTaG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0b3BTZWN0aW9uLgot
ICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPmhlYWRlcigpOwot
ICAgIGlmICghdGFibGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+Zmly
c3RCb2R5KCk7Ci0gICAgCisgICAgUmVuZGVyVGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24gPSB0
YWJsZS0+dG9wU2VjdGlvbigpOyAgICAKICAgICB1bnNpZ25lZCByb3dPZmZzZXQgPSAwOwogICAg
IHdoaWxlICh0YWJsZVNlY3Rpb24pIHsKICAgICAgICAgaWYgKHRhYmxlU2VjdGlvbiA9PSBzZWN0
aW9uKQpAQCAtMTMzLDcgKzEyOSw3IEBACiAgICAgcm93UmFuZ2UuZmlyc3QgKz0gcm93T2Zmc2V0
OwogfQogICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdl
KHBhaXI8aW50LCBpbnQ+JiBjb2x1bW5SYW5nZSkKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdl
KQogewogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgJKHJldmlzaW9uIDE0MzYzNykKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBACiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxs
KCkgY29uc3Q7CiAgICAgCiAgICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBy
b3cgc3BhbiBvZiBjZWxsCi0gICAgdmlydHVhbCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjxpbnQs
IGludD4mIHJvd1JhbmdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4mIHJvd1JhbmdlKTsKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQg
bG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgY29sdW1u
SW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgY29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9p
ZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2Up
OwogICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50VGFibGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxl
LmNwcAkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE1LDcgKzExNSw3IEBACiB7CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0g
Y2VsbEF0SW5kZXgodGFibGUsIGluZGV4KTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAgIHBh
aXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOworICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4gY29sdW1uUmFuZ2U7CiAgICAgICAgIGF4Q2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5S
YW5nZSk7CiAgICAgICAgIHJldHVybiBjb2x1bW5SYW5nZS5maXJzdDsKICAgICB9CkBAIC0xMjYs
NyArMTI2LDcgQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENlbGwgPSBjZWxs
QXRJbmRleCh0YWJsZSwgaW5kZXgpOwogICAgIGlmIChheENlbGwpIHsKLSAgICAgICAgcGFpcjxp
bnQsIGludD4gcm93UmFuZ2U7CisgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dS
YW5nZTsKICAgICAgICAgYXhDZWxsLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICAgICAg
cmV0dXJuIHJvd1JhbmdlLmZpcnN0OwogICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQAogewogICAg
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGwodGFibGUsIHJvdywgY29sdW1u
KTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdl
OworICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CiAgICAgICAg
IGF4Q2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgICAgIHJldHVybiBj
b2x1bW5SYW5nZS5zZWNvbmQ7CiAgICAgfQpAQCAtMTY0LDcgKzE2NCw3IEBACiB7CiAgICAgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0gY2VsbCh0YWJsZSwgcm93LCBjb2x1bW4pOwog
ICAgIGlmIChheENlbGwpIHsKLSAgICAgICAgcGFpcjxpbnQsIGludD4gcm93UmFuZ2U7CisgICAg
ICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKICAgICAgICAgYXhDZWxsLT5y
b3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICAgICAgcmV0dXJuIHJvd1JhbmdlLnNlY29uZDsK
ICAgICB9CkBAIC0xNzksMTAgKzE3OSwxMCBAQAogICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGUqPihhY2NUYWJsZSktPmNvbHVtbkhlYWRlcnMoYWxsQ29sdW1uSGVhZGVycyk7
CiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gYWxsQ29sdW1uSGVhZGVycy5zaXplKCk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjb2x1bW5Db3VudDsgKytrKSB7Ci0g
ICAgICAgICAgICBwYWlyPGludCwgaW50PiBjb2x1bW5SYW5nZTsKKyAgICAgICAgICAgIHBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAgICAgICAgICAgIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4o
YWxsQ29sdW1uSGVhZGVycy5hdChrKS5nZXQoKSk7CiAgICAgICAgICAgICBjZWxsLT5jb2x1bW5J
bmRleFJhbmdlKGNvbHVtblJhbmdlKTsKLSAgICAgICAgICAgIGlmIChjb2x1bW5SYW5nZS5maXJz
dCA8PSBjb2x1bW4gJiYgY29sdW1uIDwgY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5z
ZWNvbmQpCisgICAgICAgICAgICBpZiAoY29sdW1uUmFuZ2UuZmlyc3QgPD0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGNvbHVtbikgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbHVtbikgPCBjb2x1
bW5SYW5nZS5maXJzdCArIGNvbHVtblJhbmdlLnNlY29uZCkKICAgICAgICAgICAgICAgICByZXR1
cm4gYWxsQ29sdW1uSGVhZGVyc1trXS0+d3JhcHBlcigpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTk3LDEwICsxOTcsMTAgQEAKICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Kj4oYWNjVGFibGUpLT5yb3dIZWFkZXJzKGFsbFJvd0hlYWRlcnMpOwogICAgICAgICB1bnNpZ25l
ZCByb3dDb3VudCA9IGFsbFJvd0hlYWRlcnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGsgPSAwOyBrIDwgcm93Q291bnQ7ICsraykgewotICAgICAgICAgICAgcGFpcjxpbnQsIGludD4g
cm93UmFuZ2U7CisgICAgICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7
CiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KGFsbFJvd0hlYWRlcnMuYXQoaykuZ2V0KCkpOwogICAg
ICAgICAgICAgY2VsbC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7Ci0gICAgICAgICAgICBpZiAo
cm93UmFuZ2UuZmlyc3QgPD0gcm93ICYmIHJvdyA8IHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uu
c2Vjb25kKQorICAgICAgICAgICAgaWYgKHJvd1JhbmdlLmZpcnN0IDw9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyb3cpICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb3cpIDwgcm93UmFuZ2UuZmly
c3QgKyByb3dSYW5nZS5zZWNvbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbFJvd0hlYWRl
cnNba10tPndyYXBwZXIoKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAxNDM2MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjM3MCwxMiArMjM3MCwxMiBAQAogICAgIAogICAgIGlmICht
X29iamVjdC0+aXNUYWJsZUNlbGwoKSkgewogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0g
ICAgICAgICAgICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsKKyAgICAgICAgICAgIHBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGwqPihtX29iamVjdCktPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwog
ICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHJv
d1JhbmdlLmZpcnN0LCByb3dSYW5nZS5zZWNvbmQpXTsKICAgICAgICAgfQogICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4
UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBwYWlyPGludCwgaW50PiBjb2x1bW5SYW5n
ZTsKKyAgICAgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihtX29iamVjdCkt
PmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgICAgICAgICAgcmV0dXJuIFtOU1Zh
bHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKGNvbHVtblJhbmdlLmZpcnN0LCBjb2x1bW5S
YW5nZS5zZWNvbmQpXTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTMsNiArMTUzLDkgQEAKICAgICAgICAgcmV0dXJuIGMucHJpbWFyeUNlbGwoKTsKICAgICB9CiAK
KyAgICAvLyBVc2VkIGJ5IGFjY2Vzc2liaWxpdHkuCisgICAgUmVuZGVyVGFibGVSb3cqIHJvd1Jl
bmRlcmVyQXQodW5zaWduZWQgcm93KSBjb25zdCB7IHJldHVybiBtX2dyaWRbcm93XS5yb3dSZW5k
ZXJlcjsgfQorCiAgICAgdm9pZCBhcHBlbmRDb2x1bW4odW5zaWduZWQgcG9zKTsKICAgICB2b2lk
IHNwbGl0Q29sdW1uKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgZmlyc3QpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0w
Mi0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFY
OiBjZWxsRm9yQ29sdW1uQW5kUm93IGZhaWxzIGZvciB0YWJsZXMgd2l0aCBoaWRkZW4gdGFibGUg
Y2VsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDA1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpjZWxsQ29sdW1uSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpjZWxsQ29sdW1uU3Bhbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNlbGxSb3dJbmRleCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNlbGxSb3dTcGFuKToKKwogMjAxMy0wMi0yMSAgVnNldm9s
b2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBHZXQgcmlkIG9mIHBhcnNlZFVSTCBpbiB1aVNvdXJjZUNvZGUsIHVzZSBuYW1lIGFuZCBwYXRo
IGZvciBkaXNwbGF5TmFtZSBpbnN0ZWFkLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDE0MzYz
NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTksNyArODk5LDcgQEAKICAgICBpZiAoIW1fcHJpdmF0
ZS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50LCBpbnQ+
IGNvbHVtblJhbmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsK
ICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9wcml2
YXRlLmdldCgpKS0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgcmV0dXJuIGNv
bHVtblJhbmdlLmZpcnN0OwogfQpAQCAtOTEyLDcgKzkxMiw3IEBACiAgICAgaWYgKCFtX3ByaXZh
dGUtPmlzVGFibGVDZWxsKCkpCiAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBwYWlyPGludCwgaW50
PiBjb2x1bW5SYW5nZTsKKyAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7
CiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fcHJp
dmF0ZS5nZXQoKSktPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgIHJldHVybiBj
b2x1bW5SYW5nZS5zZWNvbmQ7CiB9CkBAIC05MjUsNyArOTI1LDcgQEAKICAgICBpZiAoIW1fcHJp
dmF0ZS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50LCBp
bnQ+IHJvd1JhbmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKICAg
ICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9wcml2YXRl
LmdldCgpKS0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CiAgICAgcmV0dXJuIHJvd1JhbmdlLmZp
cnN0OwogfQpAQCAtOTM4LDcgKzkzOCw3IEBACiAgICAgaWYgKCFtX3ByaXZhdGUtPmlzVGFibGVD
ZWxsKCkpCiAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsK
KyAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fcHJpdmF0ZS5nZXQoKSktPnJvd0lu
ZGV4UmFuZ2Uocm93UmFuZ2UpOwogICAgIHJldHVybiByb3dSYW5nZS5zZWNvbmQ7CiB9CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDM2NDUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMi0yMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBjZWxsRm9yQ29sdW1uQW5kUm93IGZhaWxz
IGZvciB0YWJsZXMgd2l0aCBoaWRkZW4gdGFibGUgY2VsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDA1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhp
ZGRlbi1oZWFkLXNlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTAyLTIxICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEFwYWNoZSdzIEhh
c2hNYXAuamF2YSB0cmFuc2xhdGVkIGludG8gSmF2YVNjcmlwdCBhcyBhIEpTUmVncmVzcyB0ZXN0
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMJKHJldmlzaW9uIDE0MzYzNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTE0NTEsNiArMTQ1MSw3IEBACiAKIHdl
YmtpdC5vcmcvYi83MzkxMiBhY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtc2VuZHMtbm90aWZp
Y2F0aW9uLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogI3dlYmtpdC5vcmcvYi85ODc4NyBhY2Nlc3Np
YmlsaXR5L2FyaWEtaGlkZGVuLW5lZ2F0ZXMtbm8tdmlzaWJpbGl0eS5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvMTEwNTA4IGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1z
ZWN0aW9uLmh0bWwgWyBTa2lwIF0KIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBUZXN0IGZhaWx1cmVzIHdpdGgg
U2tpYSBHUFUgcmVuZGVyaW5nIG9mIGNhbnZhcyAyRApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVh
ZC1zZWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACitUaGlzIHRlc3RzIHRoYXQgY2VsbEZvclJvd0Fu
ZENvbHVtbiB3b3JrIGFzIGV4cGVjdGVkIHdoZW4gY2VsbHMgYXJlIGhpZGRlbiBpbiBzZWN0aW9u
cyBhbmQgcm93cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworVGFibGUxIGhh
cyBhIGhpZGRlbiBmaXJzdCByb3cuIFZlcmlmeSBhY2Nlc3NpbmcgY2VsbHMgd29ya3MgYXMgZXhw
ZWN0ZWQuCitQQVNTIHRhYmxlMS5yb3dDb3VudCBpcyAyCitQQVNTICF0YWJsZTFjZWxsMSB8fCAh
dGFibGUxY2VsbDEuaXNWYWxpZCBpcyB0cnVlCitQQVNTIHRhYmxlMWNlbGwyLmlzRXF1YWwoYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsZTFjZWxsJykp
IGlzIHRydWUKK1BBU1MgdGFibGUxY2VsbDIucm93SW5kZXhSYW5nZSgpIGlzICd7MSwgMX0nCitQ
QVNTIHRhYmxlMWNlbGwyLmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAnezAsIDF9JworCitUYWJsZTIg
aGFzIGEgaGlkZGVuIGZpcnN0IHNlY3Rpb24uIFZlcmlmeSBhY2Nlc3NpbmcgY2VsbHMgd29ya3Mg
YXMgZXhwZWN0ZWQuCitQQVNTIHRhYmxlMi5yb3dDb3VudCBpcyAyCitQQVNTICF0YWJsZTJjZWxs
MSB8fCAhdGFibGUyY2VsbDEuaXNWYWxpZCBpcyB0cnVlCitQQVNTIHRhYmxlMmNlbGwyLmlzRXF1
YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsZTJj
ZWxsJykpIGlzIHRydWUKK1BBU1MgdGFibGUyY2VsbDIucm93SW5kZXhSYW5nZSgpIGlzICd7MSwg
MX0nCitQQVNTIHRhYmxlMmNlbGwyLmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAnezAsIDF9JworCitU
YWJsZTMgb25seSBoYXMgYSBmb290ZXIgc2VjdGlvbi4KK1BBU1MgdGFibGUzLnJvd0NvdW50IGlz
IDMKK1BBU1MgIXRhYmxlM2NlbGwxIHx8ICF0YWJsZTNjZWxsMS5pc1ZhbGlkIGlzIHRydWUKK1BB
U1MgdGFibGUzY2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ3RhYmxlM2NlbGwnKSkgaXMgdHJ1ZQorUEFTUyB0YWJsZTNjZWxsMi5yb3dJ
bmRleFJhbmdlKCkgaXMgJ3syLCAxfScKK1BBU1MgdGFibGUzY2VsbDIuY29sdW1uSW5kZXhSYW5n
ZSgpIGlzICd7MCwgMX0nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhp
ZGRlbi1oZWFkLXNlY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rp
b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IGlkPSJib2R5Ij4KKworPGRpdiBpZD0iY29udGVudCI+CisKKzwhLS0gRmlyc3Qg
cm93IGlzIGhpZGRlbiAtLT4KKzx0YWJsZSBpZD0idGFibGUxIiBib3JkZXI9MT4KKyAgPHRyPjx0
aCBoaWRkZW4+aGVhZGVyIDE8L3RoPjx0aCBoaWRkZW4+aGVhZGVyIDI8L3RoPjwvdHI+CisgIDx0
cj48dGQgaWQ9InRhYmxlMWNlbGwiPmZvbzwvdGQ+PHRkPmJhcjwvdGQ+PC90cj4KKzwvdGFibGU+
CisKKzwhLS0gRmlyc3Qgc2VjdGlvbiBpcyBoaWRkZW4gLS0+Cis8dGFibGUgaWQ9InRhYmxlMiIg
Ym9yZGVyPTE+CisgIDx0aGVhZD48dGggaGlkZGVuPmhlYWRlciAxPC90aD48dGggaGlkZGVuPmhl
YWRlciAyPC90aD48L3RoZWFkPgorICA8dHI+PHRkIGlkPSJ0YWJsZTJjZWxsIj5mb288L3RkPjx0
ZD5iYXI8L3RkPjwvdHI+Cis8L3RhYmxlPgorCis8IS0tIEZpcnN0IGFuZCBtaWRkbGUgc2VjdGlv
biBpcyBoaWRkZW4gLS0+Cis8dGFibGUgaWQ9InRhYmxlMyIgYm9yZGVyPTE+CisgIDx0aGVhZD48
dHI+PHRoIGhpZGRlbj5oZWFkZXIgMTwvdGg+PHRoIGhpZGRlbj5oZWFkZXIgMjwvdGg+PC90cj48
L3RoZWFkPgorICA8dHI+PHRkIGhpZGRlbj5mb288L3RkPjx0ZCBoaWRkZW4+YmFyPC90ZD48L3Ry
PgorICA8dGZvb3Q+PHRyPjx0ZCBpZD0idGFibGUzY2VsbCI+Zm9vdDwvdGQ+PHRkPmZvb3Q8L3Rk
PjwvdHI+PC90Zm9vdD4KKzwvdGFibGU+CisKKzwvZGl2PgorCis8c2NyaXB0PgorCisgICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBjZWxsRm9yUm93QW5kQ29sdW1uIHdvcmsgYXMgZXhw
ZWN0ZWQgd2hlbiBjZWxscyBhcmUgaGlkZGVuIGluIHNlY3Rpb25zIGFuZCByb3dzLiIpOworCisg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgIGRlYnVn
KCJcblRhYmxlMSBoYXMgYSBoaWRkZW4gZmlyc3Qgcm93LiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxz
IHdvcmtzIGFzIGV4cGVjdGVkLiIpOworICAgICAgICB2YXIgdGFibGUxID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZTEiKTsKKyAgICAgICAgc2hv
dWxkQmUoInRhYmxlMS5yb3dDb3VudCIsICIyIik7CisgICAgICAgIHZhciB0YWJsZTFjZWxsMSA9
IHRhYmxlMS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApOworICAgICAgICBzaG91bGRCZVRydWUo
IiF0YWJsZTFjZWxsMSB8fCAhdGFibGUxY2VsbDEuaXNWYWxpZCIpOworICAgICAgICB2YXIgdGFi
bGUxY2VsbDIgPSB0YWJsZTEuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAxKTsKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCJ0YWJsZTFjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUxY2VsbCcpKSIpOworICAgICAgICBzaG91bGRCZSgi
dGFibGUxY2VsbDIucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMX0nIik7CisgICAgICAgIHNob3Vs
ZEJlKCJ0YWJsZTFjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkiLCAiJ3swLCAxfSciKTsKKworICAg
ICAgICBkZWJ1ZygiXG5UYWJsZTIgaGFzIGEgaGlkZGVuIGZpcnN0IHNlY3Rpb24uIFZlcmlmeSBh
Y2Nlc3NpbmcgY2VsbHMgd29ya3MgYXMgZXhwZWN0ZWQuIik7CisgICAgICAgIHZhciB0YWJsZTIg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlMiIp
OworICAgICAgICBzaG91bGRCZSgidGFibGUyLnJvd0NvdW50IiwgIjIiKTsKKyAgICAgICAgdmFy
IHRhYmxlMmNlbGwxID0gdGFibGUyLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCk7CisgICAgICAg
IHNob3VsZEJlVHJ1ZSgiIXRhYmxlMmNlbGwxIHx8ICF0YWJsZTJjZWxsMS5pc1ZhbGlkIik7Cisg
ICAgICAgIHZhciB0YWJsZTJjZWxsMiA9IHRhYmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDEp
OworICAgICAgICBzaG91bGRCZVRydWUoInRhYmxlMmNlbGwyLmlzRXF1YWwoYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsZTJjZWxsJykpIik7CisgICAg
ICAgIHNob3VsZEJlKCJ0YWJsZTJjZWxsMi5yb3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAxfSciKTsK
KyAgICAgICAgc2hvdWxkQmUoInRhYmxlMmNlbGwyLmNvbHVtbkluZGV4UmFuZ2UoKSIsICInezAs
IDF9JyIpOworCisgICAgICAgIGRlYnVnKCJcblRhYmxlMyBvbmx5IGhhcyBhIGZvb3RlciBzZWN0
aW9uLiIpOworICAgICAgICB2YXIgdGFibGUzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZTMiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlMy5y
b3dDb3VudCIsICIzIik7CisgICAgICAgIHZhciB0YWJsZTNjZWxsMSA9IHRhYmxlMy5jZWxsRm9y
Q29sdW1uQW5kUm93KDAsIDApOworICAgICAgICBzaG91bGRCZVRydWUoIiF0YWJsZTNjZWxsMSB8
fCAhdGFibGUzY2VsbDEuaXNWYWxpZCIpOworICAgICAgICB2YXIgdGFibGUzY2VsbDIgPSB0YWJs
ZTMuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAyKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0YWJs
ZTNjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgndGFibGUzY2VsbCcpKSIpOworICAgICAgICBzaG91bGRCZSgidGFibGUzY2VsbDIucm93
SW5kZXhSYW5nZSgpIiwgIid7MiwgMX0nIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTNjZWxs
Mi5jb2x1bW5JbmRleFJhbmdlKCkiLCAiJ3swLCAxfSciKTsKKyAgICAgIAorICAgICAgICAvLyBD
bGVhciB0aGUgSFRNTCBmb3IgYmV0dGVyIHJlc3VsdHMuCisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb250ZW50IikuaW5uZXJIVE1MID0gIiI7ICAKKyAgICB9CisKKworPC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>
<flag name="commit-queue"
          id="210055"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189589</attachid>
            <date>2013-02-21 13:23:15 -0800</date>
            <delta_ts>2013-02-21 13:37:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31740</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAyLTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1
bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSB0YWJsZSBoYWQg
aGlkZGVuIGNlbGxzLCB0aGVuIGFjY2Vzc2liaWxpdHkgY29kZSB3YXMgYmVpbmcgY29uZnVzZWQg
aW4gYSBmZXcgd2F5cy4KKyAgICAgICAgMSkgVGhlIGNlbGxGb3JDb2x1bW5BbmRSb3cgbWV0aG9k
IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgaW5mb3JtYXRpb24gc2luY2UgdGhhdCB3YXMKKyAgICAg
ICAgICAgdXNpbmcgdGhlIFJlbmRlclRhYmxlU2VjdGlvbiB0byByZXRyaWV2ZSBhIGNlbGwsIHdo
aWNoIGRpZCBub3QgaGF2ZSB0aGUgc2FtZSBkYXRhIGFzIHRoZSBBWFRhYmxlCisgICAgICAgIDIp
IFRoZSB3YXkgd2Ugd2VyZSBhZGRpbmcgY2hpbGRyZW4gbWFkZSBpdCBpbXBvc3NpYmxlIHRvIGRl
dGVybWluZSBjb2x1bW4gYW5kIHJvdyByYW5nZSBiZWNhdXNlIHdlIAorICAgICAgICAgICB3b3Vs
ZCBza2lwIHJvd3MgdGhhdCBoYWQgaGlkZGVuIGNoaWxkcmVuCisgICAgICAgIDMpIEFjY2Vzc2li
aWxpdHlBUklBR3JpZCBhbmQgQWNjZXNzaWJpbGl0eVRhYmxlIHdlcmUgdXNpbmcgZGlmZmVyZW50
IG1ldGhvZHMgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cKKworICAgICAgICBUaGUgZml4IGRvZXMg
YSBmZXcgdGhpbmdzIHRvIG1ha2UgdGhpbmdzIHJpZ2h0OgorICAgICAgICAxKSBBbHdheXMgYWRk
IGFuIGFjY2Vzc2liaWxpdHkgcm93LCBldmVuIGlmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGNlbGxz
IGluIHRoYXQgcm93LgorICAgICAgICAyKSBIYXZlIG9uZSBtZXRob2QgZm9yIEFYVGFibGUgYW5k
IEFYQVJJQUdyaWQgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cuCisgICAgICAgIDMpIENoYW5nZSBj
ZWxsRm9yQ29sdW1uQW5kUm93IHRvIHF1ZXJ5IHRoZSBhY2Nlc3NpYmlsaXR5IGNoaWxkcmVuIHJh
dGhlciB0aGFuIHRoZSBSZW5kZXJUYWJsZVNlY3Rpb24gaW4gZGV0ZXJtaW5pbmcgdGhlIHJvdywg
Y29sIGluZm8uCisgICAgICAgIDQpIGNlbGxGb3JDb2x1bW5BbmRSb3cgc2hvdWxkIHVzZSB1bnNp
Z25lZCB2YWx1ZXMgaW5zdGVhZCBvZiBpbnQgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmg6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5QVJJQUdyaWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JD
b2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUYWJsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwOgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZVRhYmxlR2V0Q29sdW1uQXRJbmRleCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
VGFibGVHZXRSb3dBdEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENv
bHVtbkV4dGVudEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVu
dEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhlYWRlcik6Cisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dIZWFkZXIpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgor
ICAgICAgICAoUmVuZGVyVGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6cm93UmVuZGVyZXJBdCk6CisKIDIwMTMtMDItMTkgIE1hcmsgSGFobmVuYmVy
ZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IE5l
ZWQgYSB3YXkgdG8gdXNlIHRoZSBPYmplY3RpdmUtQyBKYXZhU2NyaXB0IEFQSSB3aXRoIFdlYktp
dApAQCAtMTU4LDYgKzIxMyw3IEBACiAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuaDoKICAgICAgICAgKFJlbmRlckxheWVyTW9kZWxPYmplY3QpOgogCis+Pj4+Pj4+
IC5yMTQzNjMzCiAyMDEzLTAyLTIxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGdyb3d0
aCBkdXJpbmcgYXV0byBwbGFjZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHJldmlzaW9uIDE0MzYz
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDUwICsxMzIsNCBAQAogICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwogfQogICAgIAotQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQotewotICAgIGlmICghbV9yZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwot
ICAgIAotICAgIGlmIChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaW50IGludFJvdyA9IChpbnQpcm93Owot
ICAgIGludCBpbnRDb2x1bW4gPSAoaW50KWNvbHVtbjsKLQotICAgIHBhaXI8aW50LCBpbnQ+IGNv
bHVtblJhbmdlOwotICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOwotICAgIAotICAgIC8vIEl0
ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVzaXJlZCBjZWxs
IGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cwotICAgIC8vIGluIGEgcHJldmlvdXMgcm93LgotICAg
IGZvciAoOyBpbnRSb3cgPj0gMDsgLS1pbnRSb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogdGFibGVSb3cgPSBtX3Jvd3NbaW50Um93XS5nZXQoKTsKLSAgICAgICAgaWYgKCF0YWJs
ZVJvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gdGFibGVSb3ctPmNoaWxkcmVuKCk7Ci0gICAg
ICAgIHVuc2lnbmVkIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgICAgICAK
LSAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2ZSB0
byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKLSAgICAgICAgLy8gY2VsbCB0byBkZXRl
cm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBrID0g
MDsgayA8IGNoaWxkcmVuTGVuZ3RoOyArK2spIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoaWxkID0gY2hpbGRyZW5ba10uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWNoaWxk
LT5pc1RhYmxlQ2VsbCgpKSAKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsQ2hpbGQgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oY2hpbGQpOwotICAgICAgICAgICAg
dGFibGVDZWxsQ2hpbGQtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwotICAgICAgICAg
ICAgdGFibGVDZWxsQ2hpbGQtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoKGludENvbHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAmJiBpbnRD
b2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpKQotICAgICAg
ICAgICAgICAgICYmIChpbnRSb3cgPj0gcm93UmFuZ2UuZmlyc3QgJiYgaW50Um93IDwgKHJvd1Jh
bmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRh
YmxlQ2VsbENoaWxkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0gICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJKHJldmlzaW9uIDE0MzYzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDYgQEAKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGRyZW4oKTsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
IGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwotCiBw
cml2YXRlOgogICAgIC8vIEFSSUEgdHJlZWdyaWRzIGFuZCBncmlkcyBzdXBwb3J0IHNlbGVjdGVk
IHJvd3MuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyByZXR1cm4g
dHJ1ZTsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAkocmV2aXNpb24gMTQzNjM3KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQAogICAgIHJldHVybiBwYXJlbnQ7
CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2Uo
cGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
Ojpyb3dJbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpCiB7CiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CiAgICAgaWYgKCFwYXJlbnQpCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgICByb3dSYW5nZS5zZWNv
bmQgPSAxOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4
UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29s
dW1uUmFuZ2UpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAko
cmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAKICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKCk7CiAgICAgCiAgICAgLy8gZmls
bHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiBjZWxsCi0gICAgdmlydHVh
bCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1Jhbmdl
KTsKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9m
IGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYg
Y29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5j
cHAJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDUxICszNDYsNDIgQEAK
IAogICAgIC8vIGdvIHRocm91Z2ggYWxsIHRoZSBhdmFpbGFibGUgc2VjdGlvbnMgdG8gcHVsbCBv
dXQgdGhlIHJvd3MKICAgICAvLyBhbmQgYWRkIHRoZW0gYXMgY2hpbGRyZW4KLSAgICAvLyBGSVhN
RTogVGhpcyB3aWxsIHNraXAgYSB0YWJsZSB3aXRoIGp1c3QgYSB0Zm9vdC4gU2hvdWxkIGZpeCBi
eSB1c2luZyBSZW5kZXJUYWJsZTo6dG9wU2VjdGlvbi4KLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24q
IHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5oZWFkZXIoKTsKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24q
IHRhYmxlU2VjdGlvbiA9IHRhYmxlLT50b3BTZWN0aW9uKCk7CiAgICAgaWYgKCF0YWJsZVNlY3Rp
b24pCi0gICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5maXJzdEJvZHkoKTsKLSAgICAKLSAg
ICBpZiAoIXRhYmxlU2VjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJlbmRlclRh
YmxlU2VjdGlvbiogaW5pdGlhbFRhYmxlU2VjdGlvbiA9IHRhYmxlU2VjdGlvbjsKLSAgICAKICAg
ICB3aGlsZSAodGFibGVTZWN0aW9uKSB7CiAgICAgICAgIAogICAgICAgICBIYXNoU2V0PEFjY2Vz
c2liaWxpdHlPYmplY3QqPiBhcHBlbmRlZFJvd3M7Ci0KICAgICAgICAgdW5zaWduZWQgbnVtUm93
cyA9IHRhYmxlU2VjdGlvbi0+bnVtUm93cygpOwotICAgICAgICB1bnNpZ25lZCBudW1Db2xzID0g
dGFibGVTZWN0aW9uLT5udW1Db2x1bW5zKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgcm93SW5k
ZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7ICsrY29sSW5kZXgp
IHsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNl
bGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQocm93SW5kZXgsIGNvbEluZGV4KTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNlbGwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJv
d09iamVjdCA9IGF4Q2FjaGUtPmdldE9yQ3JlYXRlKGNlbGwtPnBhcmVudCgpKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIXJvd09iamVjdC0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5VGFibGVSb3cqIHJvdyA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdyo+KHJv
d09iamVjdCk7Ci0gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBldmVyeSBjZWxs
IGZvciBhIG5ldyByb3csIGJlY2F1c2UgY2VsbCBzcGFucwotICAgICAgICAgICAgICAgIC8vIGNh
biBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3QgY29sdW1u
Ci0gICAgICAgICAgICAgICAgaWYgKGFwcGVuZGVkUm93cy5jb250YWlucyhyb3cpKQotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICByb3ctPnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7ICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX3Jvd3MuYXBwZW5kKHJvdyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyb3ctPmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5h
cHBlbmQocm93KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyVGFibGVSb3cqIHJl
bmRlclJvdyA9IHRhYmxlU2VjdGlvbi0+cm93UmVuZGVyZXJBdChyb3dJbmRleCk7CisgICAgICAg
ICAgICBpZiAoIXJlbmRlclJvdykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0ID0gYXhDYWNo
ZS0+Z2V0T3JDcmVhdGUocmVuZGVyUm93KTsKKyAgICAgICAgICAgIGlmICghcm93T2JqZWN0LT5p
c1RhYmxlUm93KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlUm93Kj4ocm93T2JqZWN0KTsKKyAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8g
Y2hlY2sgZXZlcnkgY2VsbCBmb3IgYSBuZXcgcm93LCBiZWNhdXNlIGNlbGwgc3BhbnMKKyAgICAg
ICAgICAgIC8vIGNhbiBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUg
Zmlyc3QgY29sdW1uCisgICAgICAgICAgICBpZiAoYXBwZW5kZWRSb3dzLmNvbnRhaW5zKHJvdykp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJv
dy0+c2V0Um93SW5kZXgoKGludCltX3Jvd3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIG1fcm93cy5h
cHBlbmQocm93KTsKKyAgICAgICAgICAgIGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkpCisgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsKICNpZiBQTEFURk9S
TShHVEspCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CiAjZW5kaWYKLSAgICAg
ICAgICAgICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CiAgICAgICAgIH0KLSAgICAgICAgCisgICAgCiAg
ICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5zZWN0aW9uQmVsb3codGFibGVTZWN0aW9uLCBT
a2lwRW1wdHlTZWN0aW9ucyk7CiAgICAgfQogICAgIApAQCAtNTA5LDc2ICs1MDAsMzYgQEAKIAog
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1u
QW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewotICAgIGlmICghbV9yZW5k
ZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZSgpKQorICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKTsKKyAgICBpZiAoY29sdW1uID49IGNvbHVtbkNvdW50KCkgfHwgcm93ID49IHJvd0Nv
dW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKTsKLSAgICAKLSAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0b1JlbmRlclRhYmxlKG1f
cmVuZGVyZXIpOwotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRhYmxlIHdpdGgganVz
dCBhIHRmb290LiBTaG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0b3BTZWN0aW9uLgot
ICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPmhlYWRlcigpOwot
ICAgIGlmICghdGFibGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+Zmly
c3RCb2R5KCk7Ci0gICAgCi0gICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gMDsKLSAgICB1bnNp
Z25lZCByb3dDb3VudCA9IDA7Ci0gICAgdW5zaWduZWQgcm93T2Zmc2V0ID0gMDsKLSAgICB3aGls
ZSAodGFibGVTZWN0aW9uKSB7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0g
dGFibGVTZWN0aW9uLT5udW1Sb3dzKCk7Ci0gICAgICAgIHVuc2lnbmVkIG51bUNvbHMgPSB0YWJs
ZVNlY3Rpb24tPm51bUNvbHVtbnMoKTsKLSAgICAgICAgCi0gICAgICAgIHJvd0NvdW50ICs9IG51
bVJvd3M7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBzZWN0aW9uU3BlY2lmaWNSb3cgPSBy
b3cgLSByb3dPZmZzZXQ7ICAgICAgICAgICAgCi0gICAgICAgIGlmIChyb3cgPCByb3dDb3VudCAm
JiBjb2x1bW4gPCBudW1Db2xzICYmIHNlY3Rpb25TcGVjaWZpY1JvdyA8IG51bVJvd3MpIHsKLSAg
ICAgICAgICAgIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQoc2VjdGlvblNwZWNp
ZmljUm93LCBjb2x1bW4pOworICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJv
d3MgaW4gY2FzZSB0aGUgZGVzaXJlZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cyBpbiBh
IHByZXZpb3VzIHJvdy4KKyAgICBmb3IgKHVuc2lnbmVkIHJvd0luZGV4Q291bnRlciA9IHJvdyAr
IDE7IHJvd0luZGV4Q291bnRlciA+IDA7IC0tcm93SW5kZXhDb3VudGVyKSB7CisgICAgICAgIHVu
c2lnbmVkIHJvd0luZGV4ID0gcm93SW5kZXhDb3VudGVyIC0gMTsKKyAgICAgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gbV9yb3dzW3Jvd0luZGV4XS0+Y2hpbGRyZW4o
KTsKKyAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2
ZSB0byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKKyAgICAgICAgLy8gY2VsbCB0byBk
ZXRlcm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBj
b2xJbmRleENvdW50ZXIgPSBzdGQ6Om1pbihjaGlsZHJlbi5zaXplKCksIGNvbHVtbik7IGNvbElu
ZGV4Q291bnRlciA+IDA7IC0tY29sSW5kZXhDb3VudGVyKSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBjb2xJbmRleCA9IGNvbEluZGV4Q291bnRlciAtIDE7CisgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjaGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5nZXQoKTsKKyAgICAgICAgICAg
IEFTU0VSVChjaGlsZC0+aXNUYWJsZUNlbGwoKSk7CisgICAgICAgICAgICBpZiAoIWNoaWxkLT5p
c1RhYmxlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICAvLyB3ZSBkaWRuJ3QgZmluZCB0aGUgY2VsbCwgd2hpY2ggbWVhbnMgdGhlcmUn
cyBzcGFubmluZyBoYXBwZW5pbmcKLSAgICAgICAgICAgIC8vIHNlYXJjaCBiYWNrd2FyZHMgdG8g
ZmluZCB0aGUgc3Bhbm5pbmcgY2VsbAotICAgICAgICAgICAgaWYgKCFjZWxsKSB7Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gZmlyc3QgdHJ5IHJvd3MKLSAgICAgICAgICAg
ICAgICBmb3IgKGludCB0ZXN0Um93ID0gc2VjdGlvblNwZWNpZmljUm93IC0gMTsgdGVzdFJvdyA+
PSAwOyAtLXRlc3RSb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgY2VsbCA9IHRhYmxlU2VjdGlv
bi0+cHJpbWFyeUNlbGxBdCh0ZXN0Um93LCBjb2x1bW4pOwotICAgICAgICAgICAgICAgICAgICAv
LyBjZWxsIG92ZXJsYXBwZWQuIHVzZSB0aGlzIG9uZQotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIWNlbGwgfHwgY2VsbC0+cm93U3BhbigpID49IDEpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoY2VsbCAmJiAoKGNlbGwtPnJvd0luZGV4KCkgKyAoY2VsbC0+cm93U3BhbigpIC0gMSkpID49
IHNlY3Rpb25TcGVjaWZpY1JvdykpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2VsbCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIGlmICghY2VsbCkgewotICAgICAgICAgICAgICAgICAg
ICAvLyB0cnkgY29scwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB0ZXN0Q29sID0gY29s
dW1uIC0gMTsgdGVzdENvbCA+PSAwOyAtLXRlc3RDb2wpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQoc2VjdGlvblNwZWNpZmljUm93
LCB0ZXN0Q29sKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNlbGwgb3ZlcmxhcHBlZC4g
dXNlIHRoaXMgb25lCi0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWNlbGwgfHwgY2Vs
bC0+cm93U3BhbigpID49IDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwgJiYg
KChjZWxsLT5jb2woKSArIChjZWxsLT5jb2xTcGFuKCkgLSAxKSkgPj0gY29sdW1uKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNl
bGwgPSAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdl
OworICAgICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOworICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsQ2hpbGQgPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oY2hpbGQpOworICAgICAgICAgICAgdGFibGVDZWxs
Q2hpbGQtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOworICAgICAgICAgICAgdGFibGVD
ZWxsQ2hpbGQtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoKGNvbHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAmJiBjb2x1bW4gPCAoY29sdW1u
UmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpKQorICAgICAgICAgICAgICAgICYmIChy
b3cgPj0gcm93UmFuZ2UuZmlyc3QgJiYgcm93IDwgKHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uu
c2Vjb25kKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbENoaWxkOwogICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoY2VsbCkKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKLSAgICAgICAgcm93T2Zmc2V0ICs9IG51bVJvd3M7Ci0gICAgICAgIC8vIHdlIGRpZG4n
dCBmaW5kIGFueXRoaW5nIGJldHdlZW4gdGhlIHJvd3Mgd2Ugc2hvdWxkIGhhdmUKLSAgICAgICAg
aWYgKHJvdyA8IHJvd0NvdW50KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRhYmxlU2Vj
dGlvbiA9IHRhYmxlLT5zZWN0aW9uQmVsb3codGFibGVTZWN0aW9uLCBTa2lwRW1wdHlTZWN0aW9u
cyk7CiAgICAgfQogICAgIAotICAgIGlmICghY2VsbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2VsbE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUoY2VsbCk7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
Y2VsbE9iamVjdC0+aXNUYWJsZUNlbGwoKSk7Ci0gICAgCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihjZWxsT2JqZWN0KTsKKyAgICByZXR1cm4gMDsKIH0K
IAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb2xlVmFsdWUoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5oCShyZXZpc2lvbiAxNDM2MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw7Citj
bGFzcyBSZW5kZXJUYWJsZVNlY3Rpb247CiAgICAgCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGUg
OiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiAKQEAgLTY3LDcgKzY4LDcgQEAK
ICAgICAKICAgICAvLyBhbGwgdGhlIGNlbGxzIGluIHRoZSB0YWJsZQogICAgIHZvaWQgY2VsbHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsKiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQg
cm93KTsKKyAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KTsKICAgICAKICAgICB2b2lkIGNvbHVtbkhlYWRl
cnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCByb3dIZWFkZXJzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCShyZXZpc2lv
biAxNDM2MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICByZXR1
cm4gQ2VsbFJvbGU7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0lu
ZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpyb3dJbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2Up
CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMTcsMTEgKzExNyw3IEBACiAgICAgaWYgKCF0YWJsZSB8fCAh
c2VjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFRoaXMgd2lsbCBza2lw
IGEgdGFibGUgd2l0aCBqdXN0IGEgdGZvb3QuIFNob3VsZCBmaXggYnkgdXNpbmcgUmVuZGVyVGFi
bGU6OnRvcFNlY3Rpb24uCi0gICAgUmVuZGVyVGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24gPSB0
YWJsZS0+aGVhZGVyKCk7Ci0gICAgaWYgKCF0YWJsZVNlY3Rpb24pCi0gICAgICAgIHRhYmxlU2Vj
dGlvbiA9IHRhYmxlLT5maXJzdEJvZHkoKTsKLSAgICAKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24q
IHRhYmxlU2VjdGlvbiA9IHRhYmxlLT50b3BTZWN0aW9uKCk7ICAgIAogICAgIHVuc2lnbmVkIHJv
d09mZnNldCA9IDA7CiAgICAgd2hpbGUgKHRhYmxlU2VjdGlvbikgewogICAgICAgICBpZiAodGFi
bGVTZWN0aW9uID09IHNlY3Rpb24pCkBAIC0xMzMsNyArMTI5LDcgQEAKICAgICByb3dSYW5nZS5m
aXJzdCArPSByb3dPZmZzZXQ7CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6
OmNvbHVtbkluZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiYgY29sdW1uUmFuZ2UpCiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVy
LT5pc1RhYmxlQ2VsbCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAkocmV2aXNp
b24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDkgQEAKICAgICB2aXJ0dWFs
IGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdDsKICAgICAKICAgICAvLyBmaWxscyBpbiB0aGUgc3Rh
cnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgcm93SW5k
ZXhSYW5nZShwYWlyPGludCwgaW50PiYgcm93UmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCByb3dJ
bmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpOwogICAgIC8vIGZp
bGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgY2VsbAotICAgIHZp
cnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiBjb2x1bW5SYW5nZSk7
CisgICAgdmlydHVhbCB2b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+JiBjb2x1bW5SYW5nZSk7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnRUYWJsZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGFibGUuY3BwCShyZXZpc2lvbiAxNDM2MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsKiBheENlbGwgPSBjZWxsQXRJbmRleCh0YWJsZSwgaW5kZXgpOwogICAgIGlmIChheENl
bGwpIHsKLSAgICAgICAgcGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7CisgICAgICAgIHBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAgICAgICAgYXhDZWxsLT5jb2x1bW5J
bmRleFJhbmdlKGNvbHVtblJhbmdlKTsKICAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlLmZpcnN0
OwogICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQAogewogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwqIGF4Q2VsbCA9IGNlbGxBdEluZGV4KHRhYmxlLCBpbmRleCk7CiAgICAgaWYgKGF4Q2VsbCkg
ewotICAgICAgICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsKKyAgICAgICAgcGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwogICAgICAgICBheENlbGwtPnJvd0luZGV4UmFuZ2Uocm93
UmFuZ2UpOwogICAgICAgICByZXR1cm4gcm93UmFuZ2UuZmlyc3Q7CiAgICAgfQpAQCAtMTUzLDcg
KzE1Myw3IEBACiB7CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0gY2VsbCh0
YWJsZSwgcm93LCBjb2x1bW4pOwogICAgIGlmIChheENlbGwpIHsKLSAgICAgICAgcGFpcjxpbnQs
IGludD4gY29sdW1uUmFuZ2U7CisgICAgICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1
bW5SYW5nZTsKICAgICAgICAgYXhDZWxsLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsK
ICAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlLnNlY29uZDsKICAgICB9CkBAIC0xNjQsNyArMTY0
LDcgQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENlbGwgPSBjZWxsKHRhYmxl
LCByb3csIGNvbHVtbik7CiAgICAgaWYgKGF4Q2VsbCkgewotICAgICAgICBwYWlyPGludCwgaW50
PiByb3dSYW5nZTsKKyAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwog
ICAgICAgICBheENlbGwtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwogICAgICAgICByZXR1cm4g
cm93UmFuZ2Uuc2Vjb25kOwogICAgIH0KQEAgLTE3OSwxMCArMTc5LDEwIEBACiAgICAgICAgIHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KGFjY1RhYmxlKS0+Y29sdW1uSGVhZGVycyhh
bGxDb2x1bW5IZWFkZXJzKTsKICAgICAgICAgdW5zaWduZWQgY29sdW1uQ291bnQgPSBhbGxDb2x1
bW5IZWFkZXJzLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNvbHVt
bkNvdW50OyArK2spIHsKLSAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOwor
ICAgICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGwqPihhbGxDb2x1bW5IZWFkZXJzLmF0KGspLmdldCgpKTsKICAgICAgICAg
ICAgIGNlbGwtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwotICAgICAgICAgICAgaWYg
KGNvbHVtblJhbmdlLmZpcnN0IDw9IGNvbHVtbiAmJiBjb2x1bW4gPCBjb2x1bW5SYW5nZS5maXJz
dCArIGNvbHVtblJhbmdlLnNlY29uZCkKKyAgICAgICAgICAgIGlmIChjb2x1bW5SYW5nZS5maXJz
dCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29sdW1uKSAmJiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY29sdW1uKSA8IGNvbHVtblJhbmdlLmZpcnN0ICsgY29sdW1uUmFuZ2Uuc2Vjb25kKQogICAg
ICAgICAgICAgICAgIHJldHVybiBhbGxDb2x1bW5IZWFkZXJzW2tdLT53cmFwcGVyKCk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0xOTcsMTAgKzE5NywxMCBAQAogICAgICAgICBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5VGFibGUqPihhY2NUYWJsZSktPnJvd0hlYWRlcnMoYWxsUm93SGVhZGVycyk7
CiAgICAgICAgIHVuc2lnbmVkIHJvd0NvdW50ID0gYWxsUm93SGVhZGVycy5zaXplKCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCByb3dDb3VudDsgKytrKSB7Ci0gICAgICAgICAg
ICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsKKyAgICAgICAgICAgIHBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiByb3dSYW5nZTsKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGNl
bGwgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oYWxsUm93SGVhZGVycy5h
dChrKS5nZXQoKSk7CiAgICAgICAgICAgICBjZWxsLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsK
LSAgICAgICAgICAgIGlmIChyb3dSYW5nZS5maXJzdCA8PSByb3cgJiYgcm93IDwgcm93UmFuZ2Uu
Zmlyc3QgKyByb3dSYW5nZS5zZWNvbmQpCisgICAgICAgICAgICBpZiAocm93UmFuZ2UuZmlyc3Qg
PD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJvdykgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJv
dykgPCByb3dSYW5nZS5maXJzdCArIHJvd1JhbmdlLnNlY29uZCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gYWxsUm93SGVhZGVyc1trXS0+d3JhcHBlcigpOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlzaW9uIDE0MzYz
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcwLDEyICsyMzcwLDEyIEBA
CiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYmxlQ2VsbCgpKSB7CiAgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5n
ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOworICAg
ICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fb2JqZWN0KS0+cm93SW5kZXhS
YW5nZShyb3dSYW5nZSk7CiAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6TlNNYWtlUmFuZ2Uocm93UmFuZ2UuZmlyc3QsIHJvd1JhbmdlLnNlY29uZCldOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIHBhaXI8aW50
LCBpbnQ+IGNvbHVtblJhbmdlOworICAgICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IGNvbHVtblJhbmdlOwogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbCo+KG1fb2JqZWN0KS0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgICAg
ICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoY29sdW1uUmFu
Z2UuZmlyc3QsIGNvbHVtblJhbmdlLnNlY29uZCldOwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCShyZXZpc2lvbiAxNDM2
MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsOSBAQAogICAgICAgICByZXR1cm4gYy5wcmltYXJ5
Q2VsbCgpOwogICAgIH0KIAorICAgIC8vIFVzZWQgYnkgYWNjZXNzaWJpbGl0eS4KKyAgICBSZW5k
ZXJUYWJsZVJvdyogcm93UmVuZGVyZXJBdCh1bnNpZ25lZCByb3cpIGNvbnN0IHsgcmV0dXJuIG1f
Z3JpZFtyb3ddLnJvd1JlbmRlcmVyOyB9CisKICAgICB2b2lkIGFwcGVuZENvbHVtbih1bnNpZ25l
ZCBwb3MpOwogICAgIHZvaWQgc3BsaXRDb2x1bW4odW5zaWduZWQgcG9zLCB1bnNpZ25lZCBmaXJz
dCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDM2MzcpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDEzLTAyLTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5j
b20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3
aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNlbGxDb2x1bW5JbmRleCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNlbGxDb2x1bW5TcGFuKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2VsbFJvd0luZGV4KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2VsbFJvd1NwYW4pOgorCiAy
MDEzLTAyLTIxICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEdldCByaWQgb2YgcGFyc2VkVVJMIGluIHVpU291cmNlQ29kZSwg
dXNlIG5hbWUgYW5kIHBhdGggZm9yIGRpc3BsYXlOYW1lIGluc3RlYWQuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5OSw3ICs4OTksNyBAQAog
ICAgIGlmICghbV9wcml2YXRlLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgIHJldHVybiAwOwogCi0g
ICAgcGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7CisgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGNvbHVtblJhbmdlOwogICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwqPihtX3ByaXZhdGUuZ2V0KCkpLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdl
KTsKICAgICByZXR1cm4gY29sdW1uUmFuZ2UuZmlyc3Q7CiB9CkBAIC05MTIsNyArOTEyLDcgQEAK
ICAgICBpZiAoIW1fcHJpdmF0ZS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBjb2x1bW5SYW5nZTsKICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsKj4obV9wcml2YXRlLmdldCgpKS0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5n
ZSk7CiAgICAgcmV0dXJuIGNvbHVtblJhbmdlLnNlY29uZDsKIH0KQEAgLTkyNSw3ICs5MjUsNyBA
QAogICAgIGlmICghbV9wcml2YXRlLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgIHJldHVybiAwOwog
Ci0gICAgcGFpcjxpbnQsIGludD4gcm93UmFuZ2U7CisgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IHJvd1JhbmdlOwogICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwqPihtX3ByaXZhdGUuZ2V0KCkpLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICBy
ZXR1cm4gcm93UmFuZ2UuZmlyc3Q7CiB9CkBAIC05MzgsNyArOTM4LDcgQEAKICAgICBpZiAoIW1f
cHJpdmF0ZS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50
LCBpbnQ+IHJvd1JhbmdlOworICAgIHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsK
ICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9wcml2
YXRlLmdldCgpKS0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CiAgICAgcmV0dXJuIHJvd1Jhbmdl
LnNlY29uZDsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzY0NSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAyLTIxICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JD
b2x1bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6
CisKIDIwMTMtMDItMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgQXBhY2hlJ3MgSGFzaE1hcC5qYXZhIHRyYW5zbGF0ZWQgaW50byBKYXZhU2NyaXB0IGFz
IGEgSlNSZWdyZXNzIHRlc3QKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTQzNjM3KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTQ1MSw2
ICsxNDUxLDcgQEAKIAogd2Via2l0Lm9yZy9iLzczOTEyIGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVj
a2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAjd2Via2l0Lm9y
Zy9iLzk4Nzg3IGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4tbmVnYXRlcy1uby12aXNpYmlsaXR5
Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMTA1MDggYWNjZXNzaWJpbGl0eS90YWJsZS13
aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRtbCBbIFNraXAgXQogCiAjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRl
c3QgZmFpbHVyZXMgd2l0aCBTa2lhIEdQVSByZW5kZXJpbmcgb2YgY2FudmFzIDJECkluZGV4OiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJs
ZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKK1RoaXMgdGVzdHMg
dGhhdCBjZWxsRm9yUm93QW5kQ29sdW1uIHdvcmsgYXMgZXhwZWN0ZWQgd2hlbiBjZWxscyBhcmUg
aGlkZGVuIGluIHNlY3Rpb25zIGFuZCByb3dzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworCitUYWJsZTEgaGFzIGEgaGlkZGVuIGZpcnN0IHJvdy4gVmVyaWZ5IGFjY2Vzc2luZyBj
ZWxscyB3b3JrcyBhcyBleHBlY3RlZC4KK1BBU1MgdGFibGUxLnJvd0NvdW50IGlzIDIKK1BBU1Mg
IXRhYmxlMWNlbGwxIHx8ICF0YWJsZTFjZWxsMS5pc1ZhbGlkIGlzIHRydWUKK1BBU1MgdGFibGUx
Y2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ3RhYmxlMWNlbGwnKSkgaXMgdHJ1ZQorUEFTUyB0YWJsZTFjZWxsMi5yb3dJbmRleFJhbmdl
KCkgaXMgJ3sxLCAxfScKK1BBU1MgdGFibGUxY2VsbDIuY29sdW1uSW5kZXhSYW5nZSgpIGlzICd7
MCwgMX0nCisKK1RhYmxlMiBoYXMgYSBoaWRkZW4gZmlyc3Qgc2VjdGlvbi4gVmVyaWZ5IGFjY2Vz
c2luZyBjZWxscyB3b3JrcyBhcyBleHBlY3RlZC4KK1BBU1MgdGFibGUyLnJvd0NvdW50IGlzIDIK
K1BBU1MgIXRhYmxlMmNlbGwxIHx8ICF0YWJsZTJjZWxsMS5pc1ZhbGlkIGlzIHRydWUKK1BBU1Mg
dGFibGUyY2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ3RhYmxlMmNlbGwnKSkgaXMgdHJ1ZQorUEFTUyB0YWJsZTJjZWxsMi5yb3dJbmRl
eFJhbmdlKCkgaXMgJ3sxLCAxfScKK1BBU1MgdGFibGUyY2VsbDIuY29sdW1uSW5kZXhSYW5nZSgp
IGlzICd7MCwgMX0nCisKK1RhYmxlMyBvbmx5IGhhcyBhIGZvb3RlciBzZWN0aW9uLgorUEFTUyB0
YWJsZTMucm93Q291bnQgaXMgMworUEFTUyAhdGFibGUzY2VsbDEgfHwgIXRhYmxlM2NlbGwxLmlz
VmFsaWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTNjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUzY2VsbCcpKSBpcyB0cnVlCitQQVNT
IHRhYmxlM2NlbGwyLnJvd0luZGV4UmFuZ2UoKSBpcyAnezIsIDF9JworUEFTUyB0YWJsZTNjZWxs
Mi5jb2x1bW5JbmRleFJhbmdlKCkgaXMgJ3swLCAxfScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgt
aGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8ZGl2IGlkPSJjb250ZW50
Ij4KKworPCEtLSBGaXJzdCByb3cgaXMgaGlkZGVuIC0tPgorPHRhYmxlIGlkPSJ0YWJsZTEiIGJv
cmRlcj0xPgorICA8dHI+PHRoIGhpZGRlbj5oZWFkZXIgMTwvdGg+PHRoIGhpZGRlbj5oZWFkZXIg
MjwvdGg+PC90cj4KKyAgPHRyPjx0ZCBpZD0idGFibGUxY2VsbCI+Zm9vPC90ZD48dGQ+YmFyPC90
ZD48L3RyPgorPC90YWJsZT4KKworPCEtLSBGaXJzdCBzZWN0aW9uIGlzIGhpZGRlbiAtLT4KKzx0
YWJsZSBpZD0idGFibGUyIiBib3JkZXI9MT4KKyAgPHRoZWFkPjx0aCBoaWRkZW4+aGVhZGVyIDE8
L3RoPjx0aCBoaWRkZW4+aGVhZGVyIDI8L3RoPjwvdGhlYWQ+CisgIDx0cj48dGQgaWQ9InRhYmxl
MmNlbGwiPmZvbzwvdGQ+PHRkPmJhcjwvdGQ+PC90cj4KKzwvdGFibGU+CisKKzwhLS0gRmlyc3Qg
YW5kIG1pZGRsZSBzZWN0aW9uIGlzIGhpZGRlbiAtLT4KKzx0YWJsZSBpZD0idGFibGUzIiBib3Jk
ZXI9MT4KKyAgPHRoZWFkPjx0cj48dGggaGlkZGVuPmhlYWRlciAxPC90aD48dGggaGlkZGVuPmhl
YWRlciAyPC90aD48L3RyPjwvdGhlYWQ+CisgIDx0cj48dGQgaGlkZGVuPmZvbzwvdGQ+PHRkIGhp
ZGRlbj5iYXI8L3RkPjwvdHI+CisgIDx0Zm9vdD48dHI+PHRkIGlkPSJ0YWJsZTNjZWxsIj5mb290
PC90ZD48dGQ+Zm9vdDwvdGQ+PC90cj48L3Rmb290PgorPC90YWJsZT4KKworPC9kaXY+CisKKzxz
Y3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGNlbGxGb3JSb3dBbmRD
b2x1bW4gd29yayBhcyBleHBlY3RlZCB3aGVuIGNlbGxzIGFyZSBoaWRkZW4gaW4gc2VjdGlvbnMg
YW5kIHJvd3MuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7
CisKKyAgICAgICAgZGVidWcoIlxuVGFibGUxIGhhcyBhIGhpZGRlbiBmaXJzdCByb3cuIFZlcmlm
eSBhY2Nlc3NpbmcgY2VsbHMgd29ya3MgYXMgZXhwZWN0ZWQuIik7CisgICAgICAgIHZhciB0YWJs
ZTEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxl
MSIpOworICAgICAgICBzaG91bGRCZSgidGFibGUxLnJvd0NvdW50IiwgIjIiKTsKKyAgICAgICAg
dmFyIHRhYmxlMWNlbGwxID0gdGFibGUxLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCk7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiIXRhYmxlMWNlbGwxIHx8ICF0YWJsZTFjZWxsMS5pc1ZhbGlkIik7
CisgICAgICAgIHZhciB0YWJsZTFjZWxsMiA9IHRhYmxlMS5jZWxsRm9yQ29sdW1uQW5kUm93KDAs
IDEpOworICAgICAgICBzaG91bGRCZVRydWUoInRhYmxlMWNlbGwyLmlzRXF1YWwoYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsZTFjZWxsJykpIik7Cisg
ICAgICAgIHNob3VsZEJlKCJ0YWJsZTFjZWxsMi5yb3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAxfSci
KTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlMWNlbGwyLmNvbHVtbkluZGV4UmFuZ2UoKSIsICIn
ezAsIDF9JyIpOworCisgICAgICAgIGRlYnVnKCJcblRhYmxlMiBoYXMgYSBoaWRkZW4gZmlyc3Qg
c2VjdGlvbi4gVmVyaWZ5IGFjY2Vzc2luZyBjZWxscyB3b3JrcyBhcyBleHBlY3RlZC4iKTsKKyAg
ICAgICAgdmFyIHRhYmxlMiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgidGFibGUyIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTIucm93Q291bnQiLCAi
MiIpOworICAgICAgICB2YXIgdGFibGUyY2VsbDEgPSB0YWJsZTIuY2VsbEZvckNvbHVtbkFuZFJv
dygwLCAwKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIhdGFibGUyY2VsbDEgfHwgIXRhYmxlMmNl
bGwxLmlzVmFsaWQiKTsKKyAgICAgICAgdmFyIHRhYmxlMmNlbGwyID0gdGFibGUyLmNlbGxGb3JD
b2x1bW5BbmRSb3coMCwgMSk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGFibGUyY2VsbDIuaXNF
cXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxl
MmNlbGwnKSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlMmNlbGwyLnJvd0luZGV4UmFuZ2Uo
KSIsICInezEsIDF9JyIpOworICAgICAgICBzaG91bGRCZSgidGFibGUyY2VsbDIuY29sdW1uSW5k
ZXhSYW5nZSgpIiwgIid7MCwgMX0nIik7CisKKyAgICAgICAgZGVidWcoIlxuVGFibGUzIG9ubHkg
aGFzIGEgZm9vdGVyIHNlY3Rpb24uIik7CisgICAgICAgIHZhciB0YWJsZTMgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlMyIpOworICAgICAgICBz
aG91bGRCZSgidGFibGUzLnJvd0NvdW50IiwgIjMiKTsKKyAgICAgICAgdmFyIHRhYmxlM2NlbGwx
ID0gdGFibGUzLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCk7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiIXRhYmxlM2NlbGwxIHx8ICF0YWJsZTNjZWxsMS5pc1ZhbGlkIik7CisgICAgICAgIHZhciB0
YWJsZTNjZWxsMiA9IHRhYmxlMy5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDIpOworICAgICAgICBz
aG91bGRCZVRydWUoInRhYmxlM2NlbGwyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsZTNjZWxsJykpIik7CisgICAgICAgIHNob3VsZEJl
KCJ0YWJsZTNjZWxsMi5yb3dJbmRleFJhbmdlKCkiLCAiJ3syLCAxfSciKTsKKyAgICAgICAgc2hv
dWxkQmUoInRhYmxlM2NlbGwyLmNvbHVtbkluZGV4UmFuZ2UoKSIsICInezAsIDF9JyIpOworICAg
ICAgCisgICAgICAgIC8vIENsZWFyIHRoZSBIVE1MIGZvciBiZXR0ZXIgcmVzdWx0cy4KKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5pbm5lckhUTUwgPSAiIjsgIAor
ICAgIH0KKworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>
<flag name="commit-queue"
          id="210059"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189592</attachid>
            <date>2013-02-21 13:37:02 -0800</date>
            <delta_ts>2013-02-22 08:35:35 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31763</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAyLTIxICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1
bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSB0YWJsZSBoYWQg
aGlkZGVuIGNlbGxzLCB0aGVuIGFjY2Vzc2liaWxpdHkgY29kZSB3YXMgYmVpbmcgY29uZnVzZWQg
aW4gYSBmZXcgd2F5cy4KKyAgICAgICAgMSkgVGhlIGNlbGxGb3JDb2x1bW5BbmRSb3cgbWV0aG9k
IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgaW5mb3JtYXRpb24gc2luY2UgdGhhdCB3YXMKKyAgICAg
ICAgICAgdXNpbmcgdGhlIFJlbmRlclRhYmxlU2VjdGlvbiB0byByZXRyaWV2ZSBhIGNlbGwsIHdo
aWNoIGRpZCBub3QgaGF2ZSB0aGUgc2FtZSBkYXRhIGFzIHRoZSBBWFRhYmxlCisgICAgICAgIDIp
IFRoZSB3YXkgd2Ugd2VyZSBhZGRpbmcgY2hpbGRyZW4gbWFkZSBpdCBpbXBvc3NpYmxlIHRvIGRl
dGVybWluZSBjb2x1bW4gYW5kIHJvdyByYW5nZSBiZWNhdXNlIHdlIAorICAgICAgICAgICB3b3Vs
ZCBza2lwIHJvd3MgdGhhdCBoYWQgaGlkZGVuIGNoaWxkcmVuCisgICAgICAgIDMpIEFjY2Vzc2li
aWxpdHlBUklBR3JpZCBhbmQgQWNjZXNzaWJpbGl0eVRhYmxlIHdlcmUgdXNpbmcgZGlmZmVyZW50
IG1ldGhvZHMgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cKKworICAgICAgICBUaGUgZml4IGRvZXMg
YSBmZXcgdGhpbmdzIHRvIG1ha2UgdGhpbmdzIHJpZ2h0OgorICAgICAgICAxKSBBbHdheXMgYWRk
IGFuIGFjY2Vzc2liaWxpdHkgcm93LCBldmVuIGlmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGNlbGxz
IGluIHRoYXQgcm93LgorICAgICAgICAyKSBIYXZlIG9uZSBtZXRob2QgZm9yIEFYVGFibGUgYW5k
IEFYQVJJQUdyaWQgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cuCisgICAgICAgIDMpIENoYW5nZSBj
ZWxsRm9yQ29sdW1uQW5kUm93IHRvIHF1ZXJ5IHRoZSBhY2Nlc3NpYmlsaXR5IGNoaWxkcmVuIHJh
dGhlciB0aGFuIHRoZSBSZW5kZXJUYWJsZVNlY3Rpb24gaW4gZGV0ZXJtaW5pbmcgdGhlIHJvdywg
Y29sIGluZm8uCisgICAgICAgIDQpIGNlbGxGb3JDb2x1bW5BbmRSb3cgc2hvdWxkIHVzZSB1bnNp
Z25lZCB2YWx1ZXMgaW5zdGVhZCBvZiBpbnQgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmg6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5QVJJQUdyaWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JD
b2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUYWJsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwOgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZVRhYmxlR2V0Q29sdW1uQXRJbmRleCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
VGFibGVHZXRSb3dBdEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENv
bHVtbkV4dGVudEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVu
dEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhlYWRlcik6Cisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dIZWFkZXIpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgor
ICAgICAgICAoUmVuZGVyVGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6cm93UmVuZGVyZXJBdCk6CisKIDIwMTMtMDItMTkgIE1hcmsgSGFobmVuYmVy
ZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IE5l
ZWQgYSB3YXkgdG8gdXNlIHRoZSBPYmplY3RpdmUtQyBKYXZhU2NyaXB0IEFQSSB3aXRoIFdlYktp
dApAQCAtMTU4LDYgKzIxMyw3IEBACiAgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuaDoKICAgICAgICAgKFJlbmRlckxheWVyTW9kZWxPYmplY3QpOgogCis+Pj4+Pj4+
IC5yMTQzNjMzCiAyMDEzLTAyLTIxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEltcGxlbWVudCBncmlkIGdyb3d0
aCBkdXJpbmcgYXV0byBwbGFjZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAJKHJldmlzaW9uIDE0MzYz
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDUwICsxMzIsNCBAQAogICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChoZWFkZXJDb250YWluZXJPYmplY3QpOwogfQogICAgIAotQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQotewotICAgIGlmICghbV9yZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwot
ICAgIAotICAgIGlmIChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaW50IGludFJvdyA9IChpbnQpcm93Owot
ICAgIGludCBpbnRDb2x1bW4gPSAoaW50KWNvbHVtbjsKLQotICAgIHBhaXI8aW50LCBpbnQ+IGNv
bHVtblJhbmdlOwotICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOwotICAgIAotICAgIC8vIEl0
ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVzaXJlZCBjZWxs
IGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cwotICAgIC8vIGluIGEgcHJldmlvdXMgcm93LgotICAg
IGZvciAoOyBpbnRSb3cgPj0gMDsgLS1pbnRSb3cpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogdGFibGVSb3cgPSBtX3Jvd3NbaW50Um93XS5nZXQoKTsKLSAgICAgICAgaWYgKCF0YWJs
ZVJvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gdGFibGVSb3ctPmNoaWxkcmVuKCk7Ci0gICAg
ICAgIHVuc2lnbmVkIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgICAgICAK
LSAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2ZSB0
byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKLSAgICAgICAgLy8gY2VsbCB0byBkZXRl
cm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBrID0g
MDsgayA8IGNoaWxkcmVuTGVuZ3RoOyArK2spIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoaWxkID0gY2hpbGRyZW5ba10uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWNoaWxk
LT5pc1RhYmxlQ2VsbCgpKSAKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsQ2hpbGQgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4oY2hpbGQpOwotICAgICAgICAgICAg
dGFibGVDZWxsQ2hpbGQtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwotICAgICAgICAg
ICAgdGFibGVDZWxsQ2hpbGQtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoKGludENvbHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAmJiBpbnRD
b2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpKQotICAgICAg
ICAgICAgICAgICYmIChpbnRSb3cgPj0gcm93UmFuZ2UuZmlyc3QgJiYgaW50Um93IDwgKHJvd1Jh
bmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRh
YmxlQ2VsbENoaWxkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0gICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJKHJldmlzaW9uIDE0MzYzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDYgQEAKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGRyZW4oKTsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
IGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwotCiBw
cml2YXRlOgogICAgIC8vIEFSSUEgdHJlZWdyaWRzIGFuZCBncmlkcyBzdXBwb3J0IHNlbGVjdGVk
IHJvd3MuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgeyByZXR1cm4g
dHJ1ZTsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAkocmV2aXNpb24gMTQzNjM3KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQAogICAgIHJldHVybiBwYXJlbnQ7
CiB9CiAgICAgCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2Uo
cGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
Ojpyb3dJbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpCiB7CiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7
CiAgICAgaWYgKCFwYXJlbnQpCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgICByb3dSYW5nZS5zZWNv
bmQgPSAxOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4
UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKQordm9pZCBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgY29s
dW1uUmFuZ2UpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7CiAgICAgaWYgKCFwYXJlbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAko
cmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAKICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKCk7CiAgICAgCiAgICAgLy8gZmls
bHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiBjZWxsCi0gICAgdmlydHVh
bCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIHJvd1JhbmdlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHJvd1Jhbmdl
KTsKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9m
IGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYg
Y29sdW1uUmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50VGFibGUoKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5j
cHAJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDUxICszNDYsNDIgQEAK
IAogICAgIC8vIGdvIHRocm91Z2ggYWxsIHRoZSBhdmFpbGFibGUgc2VjdGlvbnMgdG8gcHVsbCBv
dXQgdGhlIHJvd3MKICAgICAvLyBhbmQgYWRkIHRoZW0gYXMgY2hpbGRyZW4KLSAgICAvLyBGSVhN
RTogVGhpcyB3aWxsIHNraXAgYSB0YWJsZSB3aXRoIGp1c3QgYSB0Zm9vdC4gU2hvdWxkIGZpeCBi
eSB1c2luZyBSZW5kZXJUYWJsZTo6dG9wU2VjdGlvbi4KLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24q
IHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5oZWFkZXIoKTsKKyAgICBSZW5kZXJUYWJsZVNlY3Rpb24q
IHRhYmxlU2VjdGlvbiA9IHRhYmxlLT50b3BTZWN0aW9uKCk7CiAgICAgaWYgKCF0YWJsZVNlY3Rp
b24pCi0gICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5maXJzdEJvZHkoKTsKLSAgICAKLSAg
ICBpZiAoIXRhYmxlU2VjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFJlbmRlclRh
YmxlU2VjdGlvbiogaW5pdGlhbFRhYmxlU2VjdGlvbiA9IHRhYmxlU2VjdGlvbjsKLSAgICAKICAg
ICB3aGlsZSAodGFibGVTZWN0aW9uKSB7CiAgICAgICAgIAogICAgICAgICBIYXNoU2V0PEFjY2Vz
c2liaWxpdHlPYmplY3QqPiBhcHBlbmRlZFJvd3M7Ci0KICAgICAgICAgdW5zaWduZWQgbnVtUm93
cyA9IHRhYmxlU2VjdGlvbi0+bnVtUm93cygpOwotICAgICAgICB1bnNpZ25lZCBudW1Db2xzID0g
dGFibGVTZWN0aW9uLT5udW1Db2x1bW5zKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgcm93SW5k
ZXggPSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IG51bUNvbHM7ICsrY29sSW5kZXgp
IHsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIGNl
bGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQocm93SW5kZXgsIGNvbEluZGV4KTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNlbGwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJv
d09iamVjdCA9IGF4Q2FjaGUtPmdldE9yQ3JlYXRlKGNlbGwtPnBhcmVudCgpKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIXJvd09iamVjdC0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5VGFibGVSb3cqIHJvdyA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdyo+KHJv
d09iamVjdCk7Ci0gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBldmVyeSBjZWxs
IGZvciBhIG5ldyByb3csIGJlY2F1c2UgY2VsbCBzcGFucwotICAgICAgICAgICAgICAgIC8vIGNh
biBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3QgY29sdW1u
Ci0gICAgICAgICAgICAgICAgaWYgKGFwcGVuZGVkUm93cy5jb250YWlucyhyb3cpKQotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICByb3ctPnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7ICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX3Jvd3MuYXBwZW5kKHJvdyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyb3ctPmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5h
cHBlbmQocm93KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVuZGVyVGFibGVSb3cqIHJl
bmRlclJvdyA9IHRhYmxlU2VjdGlvbi0+cm93UmVuZGVyZXJBdChyb3dJbmRleCk7CisgICAgICAg
ICAgICBpZiAoIXJlbmRlclJvdykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0ID0gYXhDYWNo
ZS0+Z2V0T3JDcmVhdGUocmVuZGVyUm93KTsKKyAgICAgICAgICAgIGlmICghcm93T2JqZWN0LT5p
c1RhYmxlUm93KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlUm93Kj4ocm93T2JqZWN0KTsKKyAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8g
Y2hlY2sgZXZlcnkgY2VsbCBmb3IgYSBuZXcgcm93LCBiZWNhdXNlIGNlbGwgc3BhbnMKKyAgICAg
ICAgICAgIC8vIGNhbiBjYXVzZSB1cyB0byBtZXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUg
Zmlyc3QgY29sdW1uCisgICAgICAgICAgICBpZiAoYXBwZW5kZWRSb3dzLmNvbnRhaW5zKHJvdykp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJv
dy0+c2V0Um93SW5kZXgoKGludCltX3Jvd3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIG1fcm93cy5h
cHBlbmQocm93KTsKKyAgICAgICAgICAgIGlmICghcm93LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkpCisgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93KTsKICNpZiBQTEFURk9S
TShHVEspCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChyb3ctPmNoaWxkcmVuKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CiAjZW5kaWYKLSAgICAg
ICAgICAgICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CiAgICAgICAgIH0KLSAgICAgICAgCisgICAgCiAg
ICAgICAgIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5zZWN0aW9uQmVsb3codGFibGVTZWN0aW9uLCBT
a2lwRW1wdHlTZWN0aW9ucyk7CiAgICAgfQogICAgIApAQCAtNTA5LDc2ICs1MDAsMzYgQEAKIAog
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1u
QW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewotICAgIGlmICghbV9yZW5k
ZXJlciB8fCAhbV9yZW5kZXJlci0+aXNUYWJsZSgpKQorICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKTsKKyAgICBpZiAoY29sdW1uID49IGNvbHVtbkNvdW50KCkgfHwgcm93ID49IHJvd0Nv
dW50KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKTsKLSAgICAKLSAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0b1JlbmRlclRhYmxlKG1f
cmVuZGVyZXIpOwotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRhYmxlIHdpdGgganVz
dCBhIHRmb290LiBTaG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0b3BTZWN0aW9uLgot
ICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPmhlYWRlcigpOwot
ICAgIGlmICghdGFibGVTZWN0aW9uKQotICAgICAgICB0YWJsZVNlY3Rpb24gPSB0YWJsZS0+Zmly
c3RCb2R5KCk7Ci0gICAgCi0gICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gMDsKLSAgICB1bnNp
Z25lZCByb3dDb3VudCA9IDA7Ci0gICAgdW5zaWduZWQgcm93T2Zmc2V0ID0gMDsKLSAgICB3aGls
ZSAodGFibGVTZWN0aW9uKSB7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0g
dGFibGVTZWN0aW9uLT5udW1Sb3dzKCk7Ci0gICAgICAgIHVuc2lnbmVkIG51bUNvbHMgPSB0YWJs
ZVNlY3Rpb24tPm51bUNvbHVtbnMoKTsKLSAgICAgICAgCi0gICAgICAgIHJvd0NvdW50ICs9IG51
bVJvd3M7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBzZWN0aW9uU3BlY2lmaWNSb3cgPSBy
b3cgLSByb3dPZmZzZXQ7ICAgICAgICAgICAgCi0gICAgICAgIGlmIChyb3cgPCByb3dDb3VudCAm
JiBjb2x1bW4gPCBudW1Db2xzICYmIHNlY3Rpb25TcGVjaWZpY1JvdyA8IG51bVJvd3MpIHsKLSAg
ICAgICAgICAgIGNlbGwgPSB0YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQoc2VjdGlvblNwZWNp
ZmljUm93LCBjb2x1bW4pOworICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJv
d3MgaW4gY2FzZSB0aGUgZGVzaXJlZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cyBpbiBh
IHByZXZpb3VzIHJvdy4KKyAgICBmb3IgKHVuc2lnbmVkIHJvd0luZGV4Q291bnRlciA9IHJvdyAr
IDE7IHJvd0luZGV4Q291bnRlciA+IDA7IC0tcm93SW5kZXhDb3VudGVyKSB7CisgICAgICAgIHVu
c2lnbmVkIHJvd0luZGV4ID0gcm93SW5kZXhDb3VudGVyIC0gMTsKKyAgICAgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gbV9yb3dzW3Jvd0luZGV4XS0+Y2hpbGRyZW4o
KTsKKyAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2
ZSB0byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKKyAgICAgICAgLy8gY2VsbCB0byBk
ZXRlcm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBj
b2xJbmRleENvdW50ZXIgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hpbGRyZW4u
c2l6ZSgpKSwgY29sdW1uKTsgY29sSW5kZXhDb3VudGVyID4gMDsgLS1jb2xJbmRleENvdW50ZXIp
IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbEluZGV4ID0gY29sSW5kZXhDb3VudGVyIC0gMTsK
KyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5k
ZXhdLmdldCgpOworICAgICAgICAgICAgQVNTRVJUKGNoaWxkLT5pc1RhYmxlQ2VsbCgpKTsKKyAg
ICAgICAgICAgIGlmICghY2hpbGQtPmlzVGFibGVDZWxsKCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIHdlIGRpZG4ndCBmaW5kIHRoZSBj
ZWxsLCB3aGljaCBtZWFucyB0aGVyZSdzIHNwYW5uaW5nIGhhcHBlbmluZwotICAgICAgICAgICAg
Ly8gc2VhcmNoIGJhY2t3YXJkcyB0byBmaW5kIHRoZSBzcGFubmluZyBjZWxsCi0gICAgICAgICAg
ICBpZiAoIWNlbGwpIHsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBmaXJz
dCB0cnkgcm93cwotICAgICAgICAgICAgICAgIGZvciAoaW50IHRlc3RSb3cgPSBzZWN0aW9uU3Bl
Y2lmaWNSb3cgLSAxOyB0ZXN0Um93ID49IDA7IC0tdGVzdFJvdykgewotICAgICAgICAgICAgICAg
ICAgICBjZWxsID0gdGFibGVTZWN0aW9uLT5wcmltYXJ5Q2VsbEF0KHRlc3RSb3csIGNvbHVtbik7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIGNlbGwgb3ZlcmxhcHBlZC4gdXNlIHRoaXMgb25lCi0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghY2VsbCB8fCBjZWxsLT5yb3dTcGFuKCkgPj0gMSk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsICYmICgoY2VsbC0+cm93SW5kZXgoKSArIChj
ZWxsLT5yb3dTcGFuKCkgLSAxKSkgPj0gc2VjdGlvblNwZWNpZmljUm93KSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjZWxsID0gMDsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKCFjZWxs
KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHRyeSBjb2xzCi0gICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IHRlc3RDb2wgPSBjb2x1bW4gLSAxOyB0ZXN0Q29sID49IDA7IC0tdGVzdENvbCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgY2VsbCA9IHRhYmxlU2VjdGlvbi0+cHJpbWFyeUNl
bGxBdChzZWN0aW9uU3BlY2lmaWNSb3csIHRlc3RDb2wpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gY2VsbCBvdmVybGFwcGVkLiB1c2UgdGhpcyBvbmUKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghY2VsbCB8fCBjZWxsLT5yb3dTcGFuKCkgPj0gMSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoY2VsbCAmJiAoKGNlbGwtPmNvbCgpICsgKGNlbGwtPmNvbFNwYW4oKSAt
IDEpKSA+PSBjb2x1bW4pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgICAgY2VsbCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CisgICAgICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4gcm93UmFuZ2U7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiB0YWJs
ZUNlbGxDaGlsZCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihjaGlsZCk7
CisgICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5n
ZSk7CisgICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgoY29sdW1uID49IGNvbHVtblJhbmdlLmZp
cnN0ICYmIGNvbHVtbiA8IChjb2x1bW5SYW5nZS5maXJzdCArIGNvbHVtblJhbmdlLnNlY29uZCkp
CisgICAgICAgICAgICAgICAgJiYgKHJvdyA+PSByb3dSYW5nZS5maXJzdCAmJiByb3cgPCAocm93
UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dGFibGVDZWxsQ2hpbGQ7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChjZWxsKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICByb3dPZmZzZXQgKz0gbnVtUm93
czsKLSAgICAgICAgLy8gd2UgZGlkbid0IGZpbmQgYW55dGhpbmcgYmV0d2VlbiB0aGUgcm93cyB3
ZSBzaG91bGQgaGF2ZQotICAgICAgICBpZiAocm93IDwgcm93Q291bnQpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgdGFibGVTZWN0aW9uID0gdGFibGUtPnNlY3Rpb25CZWxvdyh0YWJsZVNl
Y3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKTsKICAgICB9CiAgICAgCi0gICAgaWYgKCFjZWxsKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsT2Jq
ZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjZWxsKTsKLSAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihjZWxsT2JqZWN0LT5pc1RhYmxlQ2VsbCgpKTsKLSAgICAK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KGNlbGxPYmpl
Y3QpOworICAgIHJldHVybiAwOwogfQogCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5
VGFibGU6OnJvbGVWYWx1ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgJKHJldmlzaW9uIDE0MzYzNykKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDsKK2NsYXNzIFJlbmRlclRhYmxlU2VjdGlvbjsKICAgICAKIGNs
YXNzIEFjY2Vzc2liaWxpdHlUYWJsZSA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
IHsKIApAQCAtNjcsNyArNjgsNyBAQAogICAgIAogICAgIC8vIGFsbCB0aGUgY2VsbHMgaW4gdGhl
IHRhYmxlCiAgICAgdm9pZCBjZWxscyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGNlbGxGb3JDb2x1bW5BbmRSb3codW5z
aWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOworICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
IGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwogICAg
IAogICAgIHZvaWQgY29sdW1uSGVhZGVycyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsK
ICAgICB2b2lkIHJvd0hlYWRlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbC5jcHAJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Miw3ICsxMDIsNyBAQAogICAgIHJldHVybiBDZWxsUm9sZTsKIH0KICAgICAKLXZvaWQgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgcm93UmFuZ2Up
Cit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UocGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+JiByb3dSYW5nZSkKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVu
ZGVyZXItPmlzVGFibGVDZWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExNywxMSArMTE3LDcg
QEAKICAgICBpZiAoIXRhYmxlIHx8ICFzZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICAv
LyBGSVhNRTogVGhpcyB3aWxsIHNraXAgYSB0YWJsZSB3aXRoIGp1c3QgYSB0Zm9vdC4gU2hvdWxk
IGZpeCBieSB1c2luZyBSZW5kZXJUYWJsZTo6dG9wU2VjdGlvbi4KLSAgICBSZW5kZXJUYWJsZVNl
Y3Rpb24qIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5oZWFkZXIoKTsKLSAgICBpZiAoIXRhYmxlU2Vj
dGlvbikKLSAgICAgICAgdGFibGVTZWN0aW9uID0gdGFibGUtPmZpcnN0Qm9keSgpOwotICAgIAor
ICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPnRvcFNlY3Rpb24o
KTsgICAgCiAgICAgdW5zaWduZWQgcm93T2Zmc2V0ID0gMDsKICAgICB3aGlsZSAodGFibGVTZWN0
aW9uKSB7CiAgICAgICAgIGlmICh0YWJsZVNlY3Rpb24gPT0gc2VjdGlvbikKQEAgLTEzMyw3ICsx
MjksNyBAQAogICAgIHJvd1JhbmdlLmZpcnN0ICs9IHJvd09mZnNldDsKIH0KICAgICAKLXZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYg
Y29sdW1uUmFuZ2UpCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4UmFu
Z2UocGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkKIHsKICAgICBpZiAoIW1f
cmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVDZWxsKCkpCiAgICAgICAgIHJldHVybjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5oCShyZXZpc2lvbiAxNDM2MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
OSArNDQsOSBAQAogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0OwogICAgIAog
ICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgY2VsbAot
ICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSk7
CisgICAgdmlydHVhbCB2b2lkIHJvd0luZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
JiByb3dSYW5nZSk7CiAgICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1
bW4gc3BhbiBvZiBjZWxsCi0gICAgdmlydHVhbCB2b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFpcjxp
bnQsIGludD4mIGNvbHVtblJhbmdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sdW1uSW5kZXhSYW5n
ZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdlKTsKICAgICAKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFRhYmxlKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
SW50ZXJmYWNlVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAJKHJldmlzaW9uIDE0
MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQAog
ewogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGxBdEluZGV4KHRhYmxl
LCBpbmRleCk7CiAgICAgaWYgKGF4Q2VsbCkgewotICAgICAgICBwYWlyPGludCwgaW50PiBjb2x1
bW5SYW5nZTsKKyAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwog
ICAgICAgICBheENlbGwtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgICAgICBy
ZXR1cm4gY29sdW1uUmFuZ2UuZmlyc3Q7CiAgICAgfQpAQCAtMTI2LDcgKzEyNiw3IEBACiB7CiAg
ICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhDZWxsID0gY2VsbEF0SW5kZXgodGFibGUsIGlu
ZGV4KTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAgIHBhaXI8aW50LCBpbnQ+IHJvd1Jhbmdl
OworICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgICAgIGF4
Q2VsbC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CiAgICAgICAgIHJldHVybiByb3dSYW5nZS5m
aXJzdDsKICAgICB9CkBAIC0xNTMsNyArMTUzLDcgQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsKiBheENlbGwgPSBjZWxsKHRhYmxlLCByb3csIGNvbHVtbik7CiAgICAgaWYgKGF4Q2Vs
bCkgewotICAgICAgICBwYWlyPGludCwgaW50PiBjb2x1bW5SYW5nZTsKKyAgICAgICAgcGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgICAgICBheENlbGwtPmNvbHVtbklu
ZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2Uuc2Vjb25k
OwogICAgIH0KQEAgLTE2NCw3ICsxNjQsNyBAQAogewogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwqIGF4Q2VsbCA9IGNlbGwodGFibGUsIHJvdywgY29sdW1uKTsKICAgICBpZiAoYXhDZWxsKSB7
Ci0gICAgICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOworICAgICAgICBwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgICAgIGF4Q2VsbC0+cm93SW5kZXhSYW5nZShyb3dS
YW5nZSk7CiAgICAgICAgIHJldHVybiByb3dSYW5nZS5zZWNvbmQ7CiAgICAgfQpAQCAtMTc5LDEw
ICsxNzksMTAgQEAKICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4oYWNj
VGFibGUpLT5jb2x1bW5IZWFkZXJzKGFsbENvbHVtbkhlYWRlcnMpOwogICAgICAgICB1bnNpZ25l
ZCBjb2x1bW5Db3VudCA9IGFsbENvbHVtbkhlYWRlcnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGsgPSAwOyBrIDwgY29sdW1uQ291bnQ7ICsraykgewotICAgICAgICAgICAgcGFpcjxp
bnQsIGludD4gY29sdW1uUmFuZ2U7CisgICAgICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4gY29sdW1uUmFuZ2U7CiAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBjZWxs
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KGFsbENvbHVtbkhlYWRlcnMu
YXQoaykuZ2V0KCkpOwogICAgICAgICAgICAgY2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5S
YW5nZSk7Ci0gICAgICAgICAgICBpZiAoY29sdW1uUmFuZ2UuZmlyc3QgPD0gY29sdW1uICYmIGNv
bHVtbiA8IGNvbHVtblJhbmdlLmZpcnN0ICsgY29sdW1uUmFuZ2Uuc2Vjb25kKQorICAgICAgICAg
ICAgaWYgKGNvbHVtblJhbmdlLmZpcnN0IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1bW4p
ICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1bW4pIDwgY29sdW1uUmFuZ2UuZmlyc3QgKyBj
b2x1bW5SYW5nZS5zZWNvbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbENvbHVtbkhlYWRl
cnNba10tPndyYXBwZXIoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5NywxMCArMTk3LDEwIEBA
CiAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KGFjY1RhYmxlKS0+cm93
SGVhZGVycyhhbGxSb3dIZWFkZXJzKTsKICAgICAgICAgdW5zaWduZWQgcm93Q291bnQgPSBhbGxS
b3dIZWFkZXJzLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IHJvd0Nv
dW50OyArK2spIHsKLSAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOworICAgICAg
ICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwogICAgICAgICAgICAgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwqPihhbGxSb3dIZWFkZXJzLmF0KGspLmdldCgpKTsKICAgICAgICAgICAgIGNlbGwtPnJv
d0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAgICAgICAgaWYgKHJvd1JhbmdlLmZpcnN0IDw9
IHJvdyAmJiByb3cgPCByb3dSYW5nZS5maXJzdCArIHJvd1JhbmdlLnNlY29uZCkKKyAgICAgICAg
ICAgIGlmIChyb3dSYW5nZS5maXJzdCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm93KSAmJiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocm93KSA8IHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vj
b25kKQogICAgICAgICAgICAgICAgIHJldHVybiBhbGxSb3dIZWFkZXJzW2tdLT53cmFwcGVyKCk7
CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIzNzAsMTIgKzIzNzAsMTIgQEAKICAgICAKICAgICBpZiAobV9vYmplY3QtPmlzVGFibGVD
ZWxsKCkpIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlSb3dJbmRleFJhbmdlQXR0cmlidXRlXSkgewotICAgICAgICAgICAgcGFpcjxp
bnQsIGludD4gcm93UmFuZ2U7CisgICAgICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
cm93UmFuZ2U7CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
Kj4obV9vYmplY3QpLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKICAgICAgICAgICAgIHJldHVy
biBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZShyb3dSYW5nZS5maXJzdCwgcm93
UmFuZ2Uuc2Vjb25kKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5JbmRleFJhbmdlQXR0cmlidXRlXSkg
ewotICAgICAgICAgICAgcGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7CisgICAgICAgICAgICBw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9vYmplY3QpLT5jb2x1bW5JbmRleFJhbmdl
KGNvbHVtblJhbmdlKTsKICAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5n
ZTpOU01ha2VSYW5nZShjb2x1bW5SYW5nZS5maXJzdCwgY29sdW1uUmFuZ2Uuc2Vjb25kKV07CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmgJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw5IEBACiAg
ICAgICAgIHJldHVybiBjLnByaW1hcnlDZWxsKCk7CiAgICAgfQogCisgICAgLy8gVXNlZCBieSBh
Y2Nlc3NpYmlsaXR5LgorICAgIFJlbmRlclRhYmxlUm93KiByb3dSZW5kZXJlckF0KHVuc2lnbmVk
IHJvdykgY29uc3QgeyByZXR1cm4gbV9ncmlkW3Jvd10ucm93UmVuZGVyZXI7IH0KKwogICAgIHZv
aWQgYXBwZW5kQ29sdW1uKHVuc2lnbmVkIHBvcyk7CiAgICAgdm9pZCBzcGxpdENvbHVtbih1bnNp
Z25lZCBwb3MsIHVuc2lnbmVkIGZpcnN0KTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDItMjEgIENocmlzIEZsZWl6
YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogY2VsbEZvckNvbHVtbkFu
ZFJvdyBmYWlscyBmb3IgdGFibGVzIHdpdGggaGlkZGVuIHRhYmxlIGNlbGxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAwNTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6
Y2VsbENvbHVtbkluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVj
dDo6Y2VsbENvbHVtblNwYW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpjZWxsUm93SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpjZWxsUm93U3Bhbik6CisKIDIwMTMtMDItMjEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZp
a0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogR2V0IHJpZCBvZiBwYXJz
ZWRVUkwgaW4gdWlTb3VyY2VDb2RlLCB1c2UgbmFtZSBhbmQgcGF0aCBmb3IgZGlzcGxheU5hbWUg
aW5zdGVhZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAxNDM2MzcpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODk5LDcgKzg5OSw3IEBACiAgICAgaWYgKCFtX3ByaXZhdGUtPmlzVGFibGVDZWxsKCkp
CiAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBwYWlyPGludCwgaW50PiBjb2x1bW5SYW5nZTsKKyAg
ICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CiAgICAgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fcHJpdmF0ZS5nZXQoKSktPmNvbHVt
bkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgIHJldHVybiBjb2x1bW5SYW5nZS5maXJzdDsK
IH0KQEAgLTkxMiw3ICs5MTIsNyBAQAogICAgIGlmICghbV9wcml2YXRlLT5pc1RhYmxlQ2VsbCgp
KQogICAgICAgIHJldHVybiAwOwogCi0gICAgcGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7Cisg
ICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihtX3ByaXZhdGUuZ2V0KCkpLT5jb2x1
bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKICAgICByZXR1cm4gY29sdW1uUmFuZ2Uuc2Vjb25k
OwogfQpAQCAtOTI1LDcgKzkyNSw3IEBACiAgICAgaWYgKCFtX3ByaXZhdGUtPmlzVGFibGVDZWxs
KCkpCiAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBwYWlyPGludCwgaW50PiByb3dSYW5nZTsKKyAg
ICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fcHJpdmF0ZS5nZXQoKSktPnJvd0luZGV4
UmFuZ2Uocm93UmFuZ2UpOwogICAgIHJldHVybiByb3dSYW5nZS5maXJzdDsKIH0KQEAgLTkzOCw3
ICs5MzgsNyBAQAogICAgIGlmICghbV9wcml2YXRlLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgIHJl
dHVybiAwOwogCi0gICAgcGFpcjxpbnQsIGludD4gcm93UmFuZ2U7CisgICAgcGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwogICAgIHN0YXRpY19jYXN0PFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZUNlbGwqPihtX3ByaXZhdGUuZ2V0KCkpLT5yb3dJbmRleFJhbmdlKHJvd1Jhbmdl
KTsKICAgICByZXR1cm4gcm93UmFuZ2Uuc2Vjb25kOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQz
NjQ1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTMtMDItMjEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
KworICAgICAgICBBWDogY2VsbEZvckNvbHVtbkFuZFJvdyBmYWlscyBmb3IgdGFibGVzIHdpdGgg
aGlkZGVuIHRhYmxlIGNlbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTAwNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9u
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS90YWJsZS13aXRo
LWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMy0wMi0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBBcGFjaGUncyBIYXNoTWFwLmphdmEgdHJhbnNs
YXRlZCBpbnRvIEphdmFTY3JpcHQgYXMgYSBKU1JlZ3Jlc3MgdGVzdApJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNDM2
MzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDUxLDYgKzE0NTEsNyBAQAogCiB3ZWJraXQub3JnL2IvNzM5MTIg
YWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgRmFp
bHVyZSBQYXNzIF0KICN3ZWJraXQub3JnL2IvOTg3ODcgYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRl
bi1uZWdhdGVzLW5vLXZpc2liaWxpdHkuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzExMDUw
OCBhY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi5odG1sIFsgU2tp
cCBdCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICMgVGVzdCBmYWlsdXJlcyB3aXRoIFNraWEgR1BVIHJlbmRlcmlu
ZyBvZiBjYW52YXMgMkQKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0
aC1oaWRkZW4taGVhZC1zZWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdp
dGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGNlbGxGb3JSb3dBbmRDb2x1bW4gd29yayBhcyBl
eHBlY3RlZCB3aGVuIGNlbGxzIGFyZSBoaWRkZW4gaW4gc2VjdGlvbnMgYW5kIHJvd3MuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK1RhYmxlMSBoYXMgYSBoaWRkZW4gZmlyc3Qg
cm93LiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdvcmtzIGFzIGV4cGVjdGVkLgorUEFTUyB0YWJs
ZTEucm93Q291bnQgaXMgMgorUEFTUyAhdGFibGUxY2VsbDEgfHwgIXRhYmxlMWNlbGwxLmlzVmFs
aWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTFjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUxY2VsbCcpKSBpcyB0cnVlCitQQVNTIHRh
YmxlMWNlbGwyLnJvd0luZGV4UmFuZ2UoKSBpcyAnezEsIDF9JworUEFTUyB0YWJsZTFjZWxsMi5j
b2x1bW5JbmRleFJhbmdlKCkgaXMgJ3swLCAxfScKKworVGFibGUyIGhhcyBhIGhpZGRlbiBmaXJz
dCBzZWN0aW9uLiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdvcmtzIGFzIGV4cGVjdGVkLgorUEFT
UyB0YWJsZTIucm93Q291bnQgaXMgMgorUEFTUyAhdGFibGUyY2VsbDEgfHwgIXRhYmxlMmNlbGwx
LmlzVmFsaWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTJjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUyY2VsbCcpKSBpcyB0cnVlCitQ
QVNTIHRhYmxlMmNlbGwyLnJvd0luZGV4UmFuZ2UoKSBpcyAnezEsIDF9JworUEFTUyB0YWJsZTJj
ZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkgaXMgJ3swLCAxfScKKworVGFibGUzIG9ubHkgaGFzIGEg
Zm9vdGVyIHNlY3Rpb24uCitQQVNTIHRhYmxlMy5yb3dDb3VudCBpcyAzCitQQVNTICF0YWJsZTNj
ZWxsMSB8fCAhdGFibGUzY2VsbDEuaXNWYWxpZCBpcyB0cnVlCitQQVNTIHRhYmxlM2NlbGwyLmlz
RXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJs
ZTNjZWxsJykpIGlzIHRydWUKK1BBU1MgdGFibGUzY2VsbDIucm93SW5kZXhSYW5nZSgpIGlzICd7
MiwgMX0nCitQQVNTIHRhYmxlM2NlbGwyLmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAnezAsIDF9Jwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRo
LWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9k
eSI+CisKKzxkaXYgaWQ9ImNvbnRlbnQiPgorCis8IS0tIEZpcnN0IHJvdyBpcyBoaWRkZW4gLS0+
Cis8dGFibGUgaWQ9InRhYmxlMSIgYm9yZGVyPTE+CisgIDx0cj48dGggaGlkZGVuPmhlYWRlciAx
PC90aD48dGggaGlkZGVuPmhlYWRlciAyPC90aD48L3RyPgorICA8dHI+PHRkIGlkPSJ0YWJsZTFj
ZWxsIj5mb288L3RkPjx0ZD5iYXI8L3RkPjwvdHI+Cis8L3RhYmxlPgorCis8IS0tIEZpcnN0IHNl
Y3Rpb24gaXMgaGlkZGVuIC0tPgorPHRhYmxlIGlkPSJ0YWJsZTIiIGJvcmRlcj0xPgorICA8dGhl
YWQ+PHRoIGhpZGRlbj5oZWFkZXIgMTwvdGg+PHRoIGhpZGRlbj5oZWFkZXIgMjwvdGg+PC90aGVh
ZD4KKyAgPHRyPjx0ZCBpZD0idGFibGUyY2VsbCI+Zm9vPC90ZD48dGQ+YmFyPC90ZD48L3RyPgor
PC90YWJsZT4KKworPCEtLSBGaXJzdCBhbmQgbWlkZGxlIHNlY3Rpb24gaXMgaGlkZGVuIC0tPgor
PHRhYmxlIGlkPSJ0YWJsZTMiIGJvcmRlcj0xPgorICA8dGhlYWQ+PHRyPjx0aCBoaWRkZW4+aGVh
ZGVyIDE8L3RoPjx0aCBoaWRkZW4+aGVhZGVyIDI8L3RoPjwvdHI+PC90aGVhZD4KKyAgPHRyPjx0
ZCBoaWRkZW4+Zm9vPC90ZD48dGQgaGlkZGVuPmJhcjwvdGQ+PC90cj4KKyAgPHRmb290Pjx0cj48
dGQgaWQ9InRhYmxlM2NlbGwiPmZvb3Q8L3RkPjx0ZD5mb290PC90ZD48L3RyPjwvdGZvb3Q+Cis8
L3RhYmxlPgorCis8L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgY2VsbEZvclJvd0FuZENvbHVtbiB3b3JrIGFzIGV4cGVjdGVkIHdoZW4gY2VsbHMg
YXJlIGhpZGRlbiBpbiBzZWN0aW9ucyBhbmQgcm93cy4iKTsKKworICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgICAgICBkZWJ1ZygiXG5UYWJsZTEgaGFzIGEg
aGlkZGVuIGZpcnN0IHJvdy4gVmVyaWZ5IGFjY2Vzc2luZyBjZWxscyB3b3JrcyBhcyBleHBlY3Rl
ZC4iKTsKKyAgICAgICAgdmFyIHRhYmxlMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgidGFibGUxIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTEucm93
Q291bnQiLCAiMiIpOworICAgICAgICB2YXIgdGFibGUxY2VsbDEgPSB0YWJsZTEuY2VsbEZvckNv
bHVtbkFuZFJvdygwLCAwKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIhdGFibGUxY2VsbDEgfHwg
IXRhYmxlMWNlbGwxLmlzVmFsaWQiKTsKKyAgICAgICAgdmFyIHRhYmxlMWNlbGwyID0gdGFibGUx
LmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMSk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGFibGUx
Y2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ3RhYmxlMWNlbGwnKSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlMWNlbGwyLnJvd0lu
ZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworICAgICAgICBzaG91bGRCZSgidGFibGUxY2VsbDIu
Y29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MCwgMX0nIik7CisKKyAgICAgICAgZGVidWcoIlxuVGFi
bGUyIGhhcyBhIGhpZGRlbiBmaXJzdCBzZWN0aW9uLiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdv
cmtzIGFzIGV4cGVjdGVkLiIpOworICAgICAgICB2YXIgdGFibGUyID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZTIiKTsKKyAgICAgICAgc2hvdWxk
QmUoInRhYmxlMi5yb3dDb3VudCIsICIyIik7CisgICAgICAgIHZhciB0YWJsZTJjZWxsMSA9IHRh
YmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApOworICAgICAgICBzaG91bGRCZVRydWUoIiF0
YWJsZTJjZWxsMSB8fCAhdGFibGUyY2VsbDEuaXNWYWxpZCIpOworICAgICAgICB2YXIgdGFibGUy
Y2VsbDIgPSB0YWJsZTIuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAxKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJ0YWJsZTJjZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgndGFibGUyY2VsbCcpKSIpOworICAgICAgICBzaG91bGRCZSgidGFi
bGUyY2VsbDIucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMX0nIik7CisgICAgICAgIHNob3VsZEJl
KCJ0YWJsZTJjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkiLCAiJ3swLCAxfSciKTsKKworICAgICAg
ICBkZWJ1ZygiXG5UYWJsZTMgb25seSBoYXMgYSBmb290ZXIgc2VjdGlvbi4iKTsKKyAgICAgICAg
dmFyIHRhYmxlMyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgidGFibGUzIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTMucm93Q291bnQiLCAiMyIpOwor
ICAgICAgICB2YXIgdGFibGUzY2VsbDEgPSB0YWJsZTMuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAw
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIhdGFibGUzY2VsbDEgfHwgIXRhYmxlM2NlbGwxLmlz
VmFsaWQiKTsKKyAgICAgICAgdmFyIHRhYmxlM2NlbGwyID0gdGFibGUzLmNlbGxGb3JDb2x1bW5B
bmRSb3coMCwgMik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidGFibGUzY2VsbDIuaXNFcXVhbChh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxlM2NlbGwn
KSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlM2NlbGwyLnJvd0luZGV4UmFuZ2UoKSIsICIn
ezIsIDF9JyIpOworICAgICAgICBzaG91bGRCZSgidGFibGUzY2VsbDIuY29sdW1uSW5kZXhSYW5n
ZSgpIiwgIid7MCwgMX0nIik7CisgICAgICAKKyAgICAgICAgLy8gQ2xlYXIgdGhlIEhUTUwgZm9y
IGJldHRlciByZXN1bHRzLgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVu
dCIpLmlubmVySFRNTCA9ICIiOyAgCisgICAgfQorCisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwo=
</data>
<flag name="commit-queue"
          id="210158"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189774</attachid>
            <date>2013-02-22 08:35:35 -0800</date>
            <delta_ts>2013-03-04 16:10:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31448</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzczMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAyLTIyICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlbGxGb3JDb2x1
bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhpZGRlbiB0YWJsZSBjZWxscworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSB0YWJsZSBoYWQg
aGlkZGVuIGNlbGxzLCB0aGVuIGFjY2Vzc2liaWxpdHkgY29kZSB3YXMgYmVpbmcgY29uZnVzZWQg
aW4gYSBmZXcgd2F5cy4KKyAgICAgICAgMSkgVGhlIGNlbGxGb3JDb2x1bW5BbmRSb3cgbWV0aG9k
IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgaW5mb3JtYXRpb24gc2luY2UgdGhhdCB3YXMKKyAgICAg
ICAgICAgdXNpbmcgdGhlIFJlbmRlclRhYmxlU2VjdGlvbiB0byByZXRyaWV2ZSBhIGNlbGwsIHdo
aWNoIGRpZCBub3QgaGF2ZSB0aGUgc2FtZSBkYXRhIGFzIHRoZSBBWFRhYmxlCisgICAgICAgIDIp
IFRoZSB3YXkgd2Ugd2VyZSBhZGRpbmcgY2hpbGRyZW4gbWFkZSBpdCBpbXBvc3NpYmxlIHRvIGRl
dGVybWluZSBjb2x1bW4gYW5kIHJvdyByYW5nZSBiZWNhdXNlIHdlIAorICAgICAgICAgICB3b3Vs
ZCBza2lwIHJvd3MgdGhhdCBoYWQgaGlkZGVuIGNoaWxkcmVuCisgICAgICAgIDMpIEFjY2Vzc2li
aWxpdHlBUklBR3JpZCBhbmQgQWNjZXNzaWJpbGl0eVRhYmxlIHdlcmUgdXNpbmcgZGlmZmVyZW50
IG1ldGhvZHMgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cKKworICAgICAgICBUaGUgZml4IGRvZXMg
YSBmZXcgdGhpbmdzIHRvIG1ha2UgdGhpbmdzIHJpZ2h0OgorICAgICAgICAxKSBBbHdheXMgYWRk
IGFuIGFjY2Vzc2liaWxpdHkgcm93LCBldmVuIGlmIHRoZXJlIGFyZSBubyB2aXNpYmxlIGNlbGxz
IGluIHRoYXQgcm93LgorICAgICAgICAyKSBIYXZlIG9uZSBtZXRob2QgZm9yIEFYVGFibGUgYW5k
IEFYQVJJQUdyaWQgZm9yIGNlbGxGb3JDb2x1bW5BbmRSb3cuCisgICAgICAgIDMpIENoYW5nZSBj
ZWxsRm9yQ29sdW1uQW5kUm93IHRvIHF1ZXJ5IHRoZSBhY2Nlc3NpYmlsaXR5IGNoaWxkcmVuIHJh
dGhlciB0aGFuIHRoZSBSZW5kZXJUYWJsZVNlY3Rpb24gaW4gZGV0ZXJtaW5pbmcgdGhlIHJvdywg
Y29sIGluZm8uCisgICAgICAgIDQpIGNlbGxGb3JDb2x1bW5BbmRSb3cgc2hvdWxkIHVzZSB1bnNp
Z25lZCB2YWx1ZXMgaW5zdGVhZCBvZiBpbnQgdmFsdWVzLgorCisgICAgICAgIFRlc3Q6IGFjY2Vz
c2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmg6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5QVJJQUdyaWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JD
b2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUYWJsZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwOgorICAgICAgICAod2Via2l0QWNj
ZXNzaWJsZVRhYmxlR2V0Q29sdW1uQXRJbmRleCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxl
VGFibGVHZXRSb3dBdEluZGV4KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENv
bHVtbkV4dGVudEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVu
dEF0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhlYWRlcik6Cisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVHZXRSb3dIZWFkZXIpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgor
ICAgICAgICAoUmVuZGVyVGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6cm93UmVuZGVyZXJBdCk6CisKIDIwMTMtMDItMjIgIEFuZHJleSBBZGFpa2lu
ICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0NhbnZh
c10gZG8gbm8gc2hvdyBhIHNpbmdsZSBmcmFtZSBub2RlIGluIGRhdGEgZ3JpZApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcAkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNTAgKzEz
Miw0IEBACiAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGhlYWRlckNvbnRhaW5lck9iamVjdCk7
CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6
OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpCi17Ci0g
ICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICB1cGRhdGVD
aGlsZHJlbklmTmVjZXNzYXJ5KCk7Ci0gICAgCi0gICAgaWYgKGNvbHVtbiA+PSBjb2x1bW5Db3Vu
dCgpIHx8IHJvdyA+PSByb3dDb3VudCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBp
bnQgaW50Um93ID0gKGludClyb3c7Ci0gICAgaW50IGludENvbHVtbiA9IChpbnQpY29sdW1uOwot
Ci0gICAgcGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7Ci0gICAgcGFpcjxpbnQsIGludD4gcm93
UmFuZ2U7Ci0gICAgCi0gICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhyb3VnaCB0aGUgcm93cyBp
biBjYXNlIHRoZSBkZXNpcmVkIGNlbGwgaGFzIGEgcm93c3BhbiBhbmQgZXhpc3RzCi0gICAgLy8g
aW4gYSBwcmV2aW91cyByb3cuCi0gICAgZm9yICg7IGludFJvdyA+PSAwOyAtLWludFJvdykgewot
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YWJsZVJvdyA9IG1fcm93c1tpbnRSb3ddLmdl
dCgpOwotICAgICAgICBpZiAoIXRhYmxlUm93KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSB0YWJs
ZVJvdy0+Y2hpbGRyZW4oKTsKLSAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5MZW5ndGggPSBjaGls
ZHJlbi5zaXplKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBTaW5jZSBzb21lIGNlbGxzIG1heSBo
YXZlIGNvbHNwYW5zLCB3ZSBoYXZlIHRvIGNoZWNrIHRoZSBhY3R1YWwgcmFuZ2Ugb2YgZWFjaAot
ICAgICAgICAvLyBjZWxsIHRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgcmlnaHQgb25lLgotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hpbGRyZW5MZW5ndGg7ICsraykgewotICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBjaGlsZHJlbltrXS5nZXQoKTsK
LSAgICAgICAgICAgIGlmICghY2hpbGQtPmlzVGFibGVDZWxsKCkpIAotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsKiB0YWJsZUNlbGxDaGlsZCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
PihjaGlsZCk7Ci0gICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC0+Y29sdW1uSW5kZXhSYW5nZShj
b2x1bW5SYW5nZSk7Ci0gICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC0+cm93SW5kZXhSYW5nZShy
b3dSYW5nZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICgoaW50Q29sdW1uID49IGNv
bHVtblJhbmdlLmZpcnN0ICYmIGludENvbHVtbiA8IChjb2x1bW5SYW5nZS5maXJzdCArIGNvbHVt
blJhbmdlLnNlY29uZCkpCi0gICAgICAgICAgICAgICAgJiYgKGludFJvdyA+PSByb3dSYW5nZS5m
aXJzdCAmJiBpbnRSb3cgPCAocm93UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdGFibGVDZWxsQ2hpbGQ7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gMDsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWQuaAkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNiBAQAog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOwogICAgIAotICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1
bW4sIHVuc2lnbmVkIHJvdyk7Ci0KIHByaXZhdGU6CiAgICAgLy8gQVJJQSB0cmVlZ3JpZHMgYW5k
IGdyaWRzIHN1cHBvcnQgc2VsZWN0ZWQgcm93cy4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNT
ZWxlY3RlZFJvd3MoKSB7IHJldHVybiB0cnVlOyB9ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwu
Y3BwCShyZXZpc2lvbiAxNDM2MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3
IEBACiAgICAgcmV0dXJuIHBhcmVudDsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cm93SW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgcm93UmFuZ2UpCit2b2lkIEFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+JiByb3dSYW5nZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBw
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkKQEAgLTEwMCw3ICsxMDAs
NyBAQAogICAgIHJvd1JhbmdlLnNlY29uZCA9IDE7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgY29sdW1uUmFuZ2Up
Cit2b2lkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UocGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICBpZiAoIXBhcmVudCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Q2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbC5oCShyZXZpc2lvbiAxNDM2MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOSArNDIsOSBAQAogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGwoKTsKICAgICAKICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBz
cGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShwYWlyPGludCwgaW50
PiYgcm93UmFuZ2UpOworICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdlKHBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpOwogICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2Nh
dGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRl
eFJhbmdlKHBhaXI8aW50LCBpbnQ+JiBjb2x1bW5SYW5nZSk7CisgICAgdmlydHVhbCB2b2lkIGNv
bHVtbkluZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSk7CiAg
ICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRU
YWJsZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDYsNTEgKzM0Niw0MiBAQAogCiAgICAgLy8gZ28gdGhyb3VnaCBhbGwgdGhlIGF2YWls
YWJsZSBzZWN0aW9ucyB0byBwdWxsIG91dCB0aGUgcm93cwogICAgIC8vIGFuZCBhZGQgdGhlbSBh
cyBjaGlsZHJlbgotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgc2tpcCBhIHRhYmxlIHdpdGgganVz
dCBhIHRmb290LiBTaG91bGQgZml4IGJ5IHVzaW5nIFJlbmRlclRhYmxlOjp0b3BTZWN0aW9uLgot
ICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPmhlYWRlcigpOwor
ICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUtPnRvcFNlY3Rpb24o
KTsKICAgICBpZiAoIXRhYmxlU2VjdGlvbikKLSAgICAgICAgdGFibGVTZWN0aW9uID0gdGFibGUt
PmZpcnN0Qm9keSgpOwotICAgIAotICAgIGlmICghdGFibGVTZWN0aW9uKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBpbml0aWFsVGFibGVTZWN0aW9uID0g
dGFibGVTZWN0aW9uOwotICAgIAogICAgIHdoaWxlICh0YWJsZVNlY3Rpb24pIHsKICAgICAgICAg
CiAgICAgICAgIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+IGFwcGVuZGVkUm93czsKLQog
ICAgICAgICB1bnNpZ25lZCBudW1Sb3dzID0gdGFibGVTZWN0aW9uLT5udW1Sb3dzKCk7Ci0gICAg
ICAgIHVuc2lnbmVkIG51bUNvbHMgPSB0YWJsZVNlY3Rpb24tPm51bUNvbHVtbnMoKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgbnVtUm93czsgKytyb3dJ
bmRleCkgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb2xJbmRleCA9IDA7IGNvbEluZGV4
IDwgbnVtQ29sczsgKytjb2xJbmRleCkgewotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9IHRhYmxlU2VjdGlvbi0+cHJpbWFyeUNlbGxBdChy
b3dJbmRleCwgY29sSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICghY2VsbCkKLSAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0ID0gYXhDYWNoZS0+Z2V0T3JDcmVhdGUoY2Vs
bC0+cGFyZW50KCkpOwotICAgICAgICAgICAgICAgIGlmICghcm93T2JqZWN0LT5pc1RhYmxlUm93
KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogcm93ID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlUm93Kj4ocm93T2JqZWN0KTsKLSAgICAgICAgICAgICAgICAvLyB3ZSBu
ZWVkIHRvIGNoZWNrIGV2ZXJ5IGNlbGwgZm9yIGEgbmV3IHJvdywgYmVjYXVzZSBjZWxsIHNwYW5z
Ci0gICAgICAgICAgICAgICAgLy8gY2FuIGNhdXNlIHVzIHRvIG1lc3Mgcm93cyBpZiB3ZSBqdXN0
IGNoZWNrIHRoZSBmaXJzdCBjb2x1bW4KLSAgICAgICAgICAgICAgICBpZiAoYXBwZW5kZWRSb3dz
LmNvbnRhaW5zKHJvdykpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIHJvdy0+c2V0Um93SW5kZXgoKGludCltX3Jvd3Muc2l6
ZSgpKTsgICAgICAgIAotICAgICAgICAgICAgICAgIG1fcm93cy5hcHBlbmQocm93KTsKLSAgICAg
ICAgICAgICAgICBpZiAoIXJvdy0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAg
ICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb3cpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBSZW5kZXJUYWJsZVJvdyogcmVuZGVyUm93ID0gdGFibGVTZWN0aW9uLT5yb3dSZW5kZXJl
ckF0KHJvd0luZGV4KTsKKyAgICAgICAgICAgIGlmICghcmVuZGVyUm93KQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiByb3dPYmplY3QgPSBheENhY2hlLT5nZXRPckNyZWF0ZShyZW5kZXJSb3cpOworICAgICAg
ICAgICAgaWYgKCFyb3dPYmplY3QtPmlzVGFibGVSb3coKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBy
b3cgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3cqPihyb3dPYmplY3QpOworICAg
ICAgICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBldmVyeSBjZWxsIGZvciBhIG5ldyByb3csIGJl
Y2F1c2UgY2VsbCBzcGFucworICAgICAgICAgICAgLy8gY2FuIGNhdXNlIHVzIHRvIG1lc3Mgcm93
cyBpZiB3ZSBqdXN0IGNoZWNrIHRoZSBmaXJzdCBjb2x1bW4KKyAgICAgICAgICAgIGlmIChhcHBl
bmRlZFJvd3MuY29udGFpbnMocm93KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgcm93LT5zZXRSb3dJbmRleCgoaW50KW1fcm93cy5zaXplKCkp
OworICAgICAgICAgICAgbV9yb3dzLmFwcGVuZChyb3cpOworICAgICAgICAgICAgaWYgKCFyb3ct
PmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFw
cGVuZChyb3cpOwogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKHJvdy0+Y2hpbGRyZW4oKSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQocm93LT5jaGls
ZHJlbigpKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGFwcGVuZGVkUm93cy5hZGQocm93KTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZGVkUm93cy5hZGQocm93KTsKICAgICAg
ICAgfQotICAgICAgICAKKyAgICAKICAgICAgICAgdGFibGVTZWN0aW9uID0gdGFibGUtPnNlY3Rp
b25CZWxvdyh0YWJsZVNlY3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKTsKICAgICB9CiAgICAgCkBA
IC01MDksNzYgKzUwMCwzNiBAQAogCiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBBY2Nlc3NpYmls
aXR5VGFibGU6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCBy
b3cpCiB7Ci0gICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1RhYmxlKCkpCisg
ICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOworICAgIGlmIChjb2x1bW4gPj0gY29sdW1u
Q291bnQoKSB8fCByb3cgPj0gcm93Q291bnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0g
ICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwotICAgIAotICAgIFJlbmRlclRhYmxlKiB0
YWJsZSA9IHRvUmVuZGVyVGFibGUobV9yZW5kZXJlcik7Ci0gICAgLy8gRklYTUU6IFRoaXMgd2ls
bCBza2lwIGEgdGFibGUgd2l0aCBqdXN0IGEgdGZvb3QuIFNob3VsZCBmaXggYnkgdXNpbmcgUmVu
ZGVyVGFibGU6OnRvcFNlY3Rpb24uCi0gICAgUmVuZGVyVGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rp
b24gPSB0YWJsZS0+aGVhZGVyKCk7Ci0gICAgaWYgKCF0YWJsZVNlY3Rpb24pCi0gICAgICAgIHRh
YmxlU2VjdGlvbiA9IHRhYmxlLT5maXJzdEJvZHkoKTsKLSAgICAKLSAgICBSZW5kZXJUYWJsZUNl
bGwqIGNlbGwgPSAwOwotICAgIHVuc2lnbmVkIHJvd0NvdW50ID0gMDsKLSAgICB1bnNpZ25lZCBy
b3dPZmZzZXQgPSAwOwotICAgIHdoaWxlICh0YWJsZVNlY3Rpb24pIHsKLSAgICAgICAgCi0gICAg
ICAgIHVuc2lnbmVkIG51bVJvd3MgPSB0YWJsZVNlY3Rpb24tPm51bVJvd3MoKTsKLSAgICAgICAg
dW5zaWduZWQgbnVtQ29scyA9IHRhYmxlU2VjdGlvbi0+bnVtQ29sdW1ucygpOwotICAgICAgICAK
LSAgICAgICAgcm93Q291bnQgKz0gbnVtUm93czsKLSAgICAgICAgCi0gICAgICAgIHVuc2lnbmVk
IHNlY3Rpb25TcGVjaWZpY1JvdyA9IHJvdyAtIHJvd09mZnNldDsgICAgICAgICAgICAKLSAgICAg
ICAgaWYgKHJvdyA8IHJvd0NvdW50ICYmIGNvbHVtbiA8IG51bUNvbHMgJiYgc2VjdGlvblNwZWNp
ZmljUm93IDwgbnVtUm93cykgewotICAgICAgICAgICAgY2VsbCA9IHRhYmxlU2VjdGlvbi0+cHJp
bWFyeUNlbGxBdChzZWN0aW9uU3BlY2lmaWNSb3csIGNvbHVtbik7CisgICAgLy8gSXRlcmF0ZSBi
YWNrd2FyZHMgdGhyb3VnaCB0aGUgcm93cyBpbiBjYXNlIHRoZSBkZXNpcmVkIGNlbGwgaGFzIGEg
cm93c3BhbiBhbmQgZXhpc3RzIGluIGEgcHJldmlvdXMgcm93LgorICAgIGZvciAodW5zaWduZWQg
cm93SW5kZXhDb3VudGVyID0gcm93ICsgMTsgcm93SW5kZXhDb3VudGVyID4gMDsgLS1yb3dJbmRl
eENvdW50ZXIpIHsKKyAgICAgICAgdW5zaWduZWQgcm93SW5kZXggPSByb3dJbmRleENvdW50ZXIg
LSAxOworICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSBtX3Jv
d3Nbcm93SW5kZXhdLT5jaGlsZHJlbigpOworICAgICAgICAvLyBTaW5jZSBzb21lIGNlbGxzIG1h
eSBoYXZlIGNvbHNwYW5zLCB3ZSBoYXZlIHRvIGNoZWNrIHRoZSBhY3R1YWwgcmFuZ2Ugb2YgZWFj
aAorICAgICAgICAvLyBjZWxsIHRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgcmlnaHQgb25lLgor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbEluZGV4Q291bnRlciA9IHN0ZDo6bWluKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjaGlsZHJlbi5zaXplKCkpLCBjb2x1bW4gKyAxKTsgY29sSW5kZXhDb3Vu
dGVyID4gMDsgLS1jb2xJbmRleENvdW50ZXIpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbElu
ZGV4ID0gY29sSW5kZXhDb3VudGVyIC0gMTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhdLmdldCgpOworICAgICAgICAgICAgQVNTRVJU
KGNoaWxkLT5pc1RhYmxlQ2VsbCgpKTsKKyAgICAgICAgICAgIGlmICghY2hpbGQtPmlzVGFibGVD
ZWxsKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIHdlIGRpZG4ndCBmaW5kIHRoZSBjZWxsLCB3aGljaCBtZWFucyB0aGVyZSdzIHNwYW5u
aW5nIGhhcHBlbmluZwotICAgICAgICAgICAgLy8gc2VhcmNoIGJhY2t3YXJkcyB0byBmaW5kIHRo
ZSBzcGFubmluZyBjZWxsCi0gICAgICAgICAgICBpZiAoIWNlbGwpIHsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAvLyBmaXJzdCB0cnkgcm93cwotICAgICAgICAgICAgICAgIGZv
ciAoaW50IHRlc3RSb3cgPSBzZWN0aW9uU3BlY2lmaWNSb3cgLSAxOyB0ZXN0Um93ID49IDA7IC0t
dGVzdFJvdykgewotICAgICAgICAgICAgICAgICAgICBjZWxsID0gdGFibGVTZWN0aW9uLT5wcmlt
YXJ5Q2VsbEF0KHRlc3RSb3csIGNvbHVtbik7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGNlbGwg
b3ZlcmxhcHBlZC4gdXNlIHRoaXMgb25lCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghY2Vs
bCB8fCBjZWxsLT5yb3dTcGFuKCkgPj0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjZWxs
ICYmICgoY2VsbC0+cm93SW5kZXgoKSArIChjZWxsLT5yb3dTcGFuKCkgLSAxKSkgPj0gc2VjdGlv
blNwZWNpZmljUm93KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBjZWxsID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgaWYgKCFjZWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHRy
eSBjb2xzCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHRlc3RDb2wgPSBjb2x1bW4gLSAx
OyB0ZXN0Q29sID49IDA7IC0tdGVzdENvbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2Vs
bCA9IHRhYmxlU2VjdGlvbi0+cHJpbWFyeUNlbGxBdChzZWN0aW9uU3BlY2lmaWNSb3csIHRlc3RD
b2wpOwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2VsbCBvdmVybGFwcGVkLiB1c2UgdGhp
cyBvbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghY2VsbCB8fCBjZWxsLT5yb3dT
cGFuKCkgPj0gMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbCAmJiAoKGNlbGwt
PmNvbCgpICsgKGNlbGwtPmNvbFNwYW4oKSAtIDEpKSA+PSBjb2x1bW4pKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2VsbCA9IDA7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CisgICAg
ICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CisgICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKiB0YWJsZUNlbGxDaGlsZCA9IHN0YXRpY19jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGwqPihjaGlsZCk7CisgICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC0+
Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CisgICAgICAgICAgICB0YWJsZUNlbGxDaGls
ZC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
ICgoY29sdW1uID49IGNvbHVtblJhbmdlLmZpcnN0ICYmIGNvbHVtbiA8IChjb2x1bW5SYW5nZS5m
aXJzdCArIGNvbHVtblJhbmdlLnNlY29uZCkpCisgICAgICAgICAgICAgICAgJiYgKHJvdyA+PSBy
b3dSYW5nZS5maXJzdCAmJiByb3cgPCAocm93UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVDZWxsQ2hpbGQ7CiAgICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGlmIChjZWxsKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAot
ICAgICAgICByb3dPZmZzZXQgKz0gbnVtUm93czsKLSAgICAgICAgLy8gd2UgZGlkbid0IGZpbmQg
YW55dGhpbmcgYmV0d2VlbiB0aGUgcm93cyB3ZSBzaG91bGQgaGF2ZQotICAgICAgICBpZiAocm93
IDwgcm93Q291bnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdGFibGVTZWN0aW9uID0g
dGFibGUtPnNlY3Rpb25CZWxvdyh0YWJsZVNlY3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKTsKICAg
ICB9CiAgICAgCi0gICAgaWYgKCFjZWxsKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsT2JqZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZShjZWxsKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjZWxsT2Jq
ZWN0LT5pc1RhYmxlQ2VsbCgpKTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbCo+KGNlbGxPYmplY3QpOworICAgIHJldHVybiAwOwogfQogCiBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGU6OnJvbGVWYWx1ZSgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmgJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDsKK2NsYXNzIFJl
bmRlclRhYmxlU2VjdGlvbjsKICAgICAKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZSA6IHB1Ymxp
YyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsKIApAQCAtNjcsNyArNjgsNyBAQAogICAgIAog
ICAgIC8vIGFsbCB0aGUgY2VsbHMgaW4gdGhlIHRhYmxlCiAgICAgdm9pZCBjZWxscyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwqIGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwor
ICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQg
Y29sdW1uLCB1bnNpZ25lZCByb3cpOwogICAgIAogICAgIHZvaWQgY29sdW1uSGVhZGVycyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIHJvd0hlYWRlcnMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAJKHJldmlzaW9uIDE0MzYz
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIHJldHVybiBDZWxs
Um9sZTsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5n
ZShwYWlyPGludCwgaW50PiYgcm93UmFuZ2UpCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6
OnJvd0luZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiByb3dSYW5nZSkKIHsKICAg
ICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFibGVDZWxsKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTExNywxMSArMTE3LDcgQEAKICAgICBpZiAoIXRhYmxlIHx8ICFzZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogVGhpcyB3aWxsIHNraXAgYSB0YWJs
ZSB3aXRoIGp1c3QgYSB0Zm9vdC4gU2hvdWxkIGZpeCBieSB1c2luZyBSZW5kZXJUYWJsZTo6dG9w
U2VjdGlvbi4KLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlvbiA9IHRhYmxlLT5o
ZWFkZXIoKTsKLSAgICBpZiAoIXRhYmxlU2VjdGlvbikKLSAgICAgICAgdGFibGVTZWN0aW9uID0g
dGFibGUtPmZpcnN0Qm9keSgpOwotICAgIAorICAgIFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVT
ZWN0aW9uID0gdGFibGUtPnRvcFNlY3Rpb24oKTsgICAgCiAgICAgdW5zaWduZWQgcm93T2Zmc2V0
ID0gMDsKICAgICB3aGlsZSAodGFibGVTZWN0aW9uKSB7CiAgICAgICAgIGlmICh0YWJsZVNlY3Rp
b24gPT0gc2VjdGlvbikKQEAgLTEzMyw3ICsxMjksNyBAQAogICAgIHJvd1JhbmdlLmZpcnN0ICs9
IHJvd09mZnNldDsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1u
SW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgY29sdW1uUmFuZ2UpCit2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2UocGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBj
b2x1bW5SYW5nZSkKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzVGFi
bGVDZWxsKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCShyZXZpc2lvbiAxNDM2
MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOSArNDQsOSBAQAogICAgIHZpcnR1YWwgYm9vbCBp
c1RhYmxlQ2VsbCgpIGNvbnN0OwogICAgIAogICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2Nh
dGlvbiBhbmQgcm93IHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCByb3dJbmRleFJhbmdl
KHBhaXI8aW50LCBpbnQ+JiByb3dSYW5nZSk7CisgICAgdmlydHVhbCB2b2lkIHJvd0luZGV4UmFu
Z2UocGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiByb3dSYW5nZSk7CiAgICAgLy8gZmlsbHMgaW4g
dGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiBjZWxsCi0gICAgdmlydHVhbCB2
b2lkIGNvbHVtbkluZGV4UmFuZ2UocGFpcjxpbnQsIGludD4mIGNvbHVtblJhbmdlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY29sdW1uSW5kZXhSYW5nZShwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNv
bHVtblJhbmdlKTsKICAgICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHBhcmVudFRhYmxlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUYWJsZS5jcHAJKHJldmlzaW9uIDE0MzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNSw3ICsxMTUsNyBAQAogewogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
IGF4Q2VsbCA9IGNlbGxBdEluZGV4KHRhYmxlLCBpbmRleCk7CiAgICAgaWYgKGF4Q2VsbCkgewot
ICAgICAgICBwYWlyPGludCwgaW50PiBjb2x1bW5SYW5nZTsKKyAgICAgICAgcGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgICAgICBheENlbGwtPmNvbHVtbkluZGV4UmFu
Z2UoY29sdW1uUmFuZ2UpOwogICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2UuZmlyc3Q7CiAgICAg
fQpAQCAtMTI2LDcgKzEyNiw3IEBACiB7CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogYXhD
ZWxsID0gY2VsbEF0SW5kZXgodGFibGUsIGluZGV4KTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAg
ICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOworICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4gcm93UmFuZ2U7CiAgICAgICAgIGF4Q2VsbC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7
CiAgICAgICAgIHJldHVybiByb3dSYW5nZS5maXJzdDsKICAgICB9CkBAIC0xNTMsNyArMTUzLDcg
QEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBheENlbGwgPSBjZWxsKHRhYmxlLCBy
b3csIGNvbHVtbik7CiAgICAgaWYgKGF4Q2VsbCkgewotICAgICAgICBwYWlyPGludCwgaW50PiBj
b2x1bW5SYW5nZTsKKyAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdl
OwogICAgICAgICBheENlbGwtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOwogICAgICAg
ICByZXR1cm4gY29sdW1uUmFuZ2Uuc2Vjb25kOwogICAgIH0KQEAgLTE2NCw3ICsxNjQsNyBAQAog
ewogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2VsbCA9IGNlbGwodGFibGUsIHJvdywg
Y29sdW1uKTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAgIHBhaXI8aW50LCBpbnQ+IHJvd1Jh
bmdlOworICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgICAg
IGF4Q2VsbC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CiAgICAgICAgIHJldHVybiByb3dSYW5n
ZS5zZWNvbmQ7CiAgICAgfQpAQCAtMTc5LDEwICsxNzksMTAgQEAKICAgICAgICAgc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4oYWNjVGFibGUpLT5jb2x1bW5IZWFkZXJzKGFsbENvbHVt
bkhlYWRlcnMpOwogICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGFsbENvbHVtbkhlYWRl
cnMuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY29sdW1uQ291bnQ7
ICsraykgewotICAgICAgICAgICAgcGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7CisgICAgICAg
ICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7CiAgICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKiBjZWxsID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbCo+KGFsbENvbHVtbkhlYWRlcnMuYXQoaykuZ2V0KCkpOwogICAgICAgICAgICAgY2Vs
bC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7Ci0gICAgICAgICAgICBpZiAoY29sdW1u
UmFuZ2UuZmlyc3QgPD0gY29sdW1uICYmIGNvbHVtbiA8IGNvbHVtblJhbmdlLmZpcnN0ICsgY29s
dW1uUmFuZ2Uuc2Vjb25kKQorICAgICAgICAgICAgaWYgKGNvbHVtblJhbmdlLmZpcnN0IDw9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1bW4pICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1
bW4pIDwgY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGFsbENvbHVtbkhlYWRlcnNba10tPndyYXBwZXIoKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE5NywxMCArMTk3LDEwIEBACiAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZSo+KGFjY1RhYmxlKS0+cm93SGVhZGVycyhhbGxSb3dIZWFkZXJzKTsKICAgICAg
ICAgdW5zaWduZWQgcm93Q291bnQgPSBhbGxSb3dIZWFkZXJzLnNpemUoKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBrID0gMDsgayA8IHJvd0NvdW50OyArK2spIHsKLSAgICAgICAgICAgIHBhaXI8
aW50LCBpbnQ+IHJvd1JhbmdlOworICAgICAgICAgICAgcGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IHJvd1JhbmdlOwogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogY2VsbCA9IHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihhbGxSb3dIZWFkZXJzLmF0KGspLmdl
dCgpKTsKICAgICAgICAgICAgIGNlbGwtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAg
ICAgICAgaWYgKHJvd1JhbmdlLmZpcnN0IDw9IHJvdyAmJiByb3cgPCByb3dSYW5nZS5maXJzdCAr
IHJvd1JhbmdlLnNlY29uZCkKKyAgICAgICAgICAgIGlmIChyb3dSYW5nZS5maXJzdCA8PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocm93KSAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm93KSA8IHJv
d1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKQogICAgICAgICAgICAgICAgIHJldHVybiBh
bGxSb3dIZWFkZXJzW2tdLT53cmFwcGVyKCk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMTQzNjM3KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzNzAsMTIgKzIzNzAsMTIgQEAKICAgICAK
ICAgICBpZiAobV9vYmplY3QtPmlzVGFibGVDZWxsKCkpIHsKICAgICAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dJbmRleFJhbmdlQXR0cmli
dXRlXSkgewotICAgICAgICAgICAgcGFpcjxpbnQsIGludD4gcm93UmFuZ2U7CisgICAgICAgICAg
ICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7CiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9vYmplY3QpLT5yb3dJbmRleFJhbmdlKHJv
d1JhbmdlKTsKICAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01h
a2VSYW5nZShyb3dSYW5nZS5maXJzdCwgcm93UmFuZ2Uuc2Vjb25kKV07CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlD
b2x1bW5JbmRleFJhbmdlQXR0cmlidXRlXSkgewotICAgICAgICAgICAgcGFpcjxpbnQsIGludD4g
Y29sdW1uUmFuZ2U7CisgICAgICAgICAgICBwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1u
UmFuZ2U7CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4o
bV9vYmplY3QpLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKICAgICAgICAgICAgIHJl
dHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZShjb2x1bW5SYW5nZS5maXJz
dCwgY29sdW1uUmFuZ2Uuc2Vjb25kKV07CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHJldmlzaW9uIDE0MzYzNykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMTUzLDYgKzE1Myw5IEBACiAgICAgICAgIHJldHVybiBjLnByaW1hcnlDZWxsKCk7
CiAgICAgfQogCisgICAgLy8gVXNlZCBieSBhY2Nlc3NpYmlsaXR5LgorICAgIFJlbmRlclRhYmxl
Um93KiByb3dSZW5kZXJlckF0KHVuc2lnbmVkIHJvdykgY29uc3QgeyByZXR1cm4gbV9ncmlkW3Jv
d10ucm93UmVuZGVyZXI7IH0KKwogICAgIHZvaWQgYXBwZW5kQ29sdW1uKHVuc2lnbmVkIHBvcyk7
CiAgICAgdm9pZCBzcGxpdENvbHVtbih1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGZpcnN0KTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzczMSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMDItMjIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBWDogY2VsbEZvckNvbHVtbkFuZFJvdyBmYWlscyBmb3IgdGFibGVzIHdpdGggaGlk
ZGVuIHRhYmxlIGNlbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTAwNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2VsbENvbHVtbkluZGV4KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2VsbENvbHVtblNwYW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjZWxsUm93SW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjZWxsUm93U3Bhbik6CisKIDIwMTMtMDIt
MjIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBbQ2hyb21pdW1dIGFkZCBhIGJyb3dzZXIgdGVzdCBmb3IgZnJhbWVzIG9uIHRp
bWVsaW5lCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTQzNjM3KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg5OSw3ICs4OTksNyBAQAogICAgIGlmICghbV9wcml2YXRlLT5pc1RhYmxlQ2VsbCgpKQog
ICAgICAgIHJldHVybiAwOwogCi0gICAgcGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7CisgICAg
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwogICAgIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihtX3ByaXZhdGUuZ2V0KCkpLT5jb2x1bW5J
bmRleFJhbmdlKGNvbHVtblJhbmdlKTsKICAgICByZXR1cm4gY29sdW1uUmFuZ2UuZmlyc3Q7CiB9
CkBAIC05MTIsNyArOTEyLDcgQEAKICAgICBpZiAoIW1fcHJpdmF0ZS0+aXNUYWJsZUNlbGwoKSkK
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOworICAg
IHBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKICAgICBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9wcml2YXRlLmdldCgpKS0+Y29sdW1u
SW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CiAgICAgcmV0dXJuIGNvbHVtblJhbmdlLnNlY29uZDsK
IH0KQEAgLTkyNSw3ICs5MjUsNyBAQAogICAgIGlmICghbV9wcml2YXRlLT5pc1RhYmxlQ2VsbCgp
KQogICAgICAgIHJldHVybiAwOwogCi0gICAgcGFpcjxpbnQsIGludD4gcm93UmFuZ2U7CisgICAg
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwogICAgIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihtX3ByaXZhdGUuZ2V0KCkpLT5yb3dJbmRleFJh
bmdlKHJvd1JhbmdlKTsKICAgICByZXR1cm4gcm93UmFuZ2UuZmlyc3Q7CiB9CkBAIC05MzgsNyAr
OTM4LDcgQEAKICAgICBpZiAoIW1fcHJpdmF0ZS0+aXNUYWJsZUNlbGwoKSkKICAgICAgICByZXR1
cm4gMDsKIAotICAgIHBhaXI8aW50LCBpbnQ+IHJvd1JhbmdlOworICAgIHBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiByb3dSYW5nZTsKICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGVDZWxsKj4obV9wcml2YXRlLmdldCgpKS0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7
CiAgICAgcmV0dXJuIHJvd1JhbmdlLnNlY29uZDsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Mzcz
MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEzLTAyLTIyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisK
KyAgICAgICAgQVg6IGNlbGxGb3JDb2x1bW5BbmRSb3cgZmFpbHMgZm9yIHRhYmxlcyB3aXRoIGhp
ZGRlbiB0YWJsZSBjZWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEwMDUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1o
aWRkZW4taGVhZC1zZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDItMjIgIFN1ZGFyc2FuYSBOYWdpbmVuaSAg
PHN1ZGFyc2FuYS5uYWdpbmVuaUBpbnRlbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwg
Z2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVj
dGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNDM2MzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUxLDYgKzE0NTEs
NyBAQAogCiB3ZWJraXQub3JnL2IvNzM5MTIgYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNl
bmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgRmFpbHVyZSBQYXNzIF0KICN3ZWJraXQub3JnL2IvOTg3
ODcgYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1uZWdhdGVzLW5vLXZpc2liaWxpdHkuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzExMDUwOCBhY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlk
ZGVuLWhlYWQtc2VjdGlvbi5odG1sIFsgU2tpcCBdCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVGVzdCBmYWls
dXJlcyB3aXRoIFNraWEgR1BVIHJlbmRlcmluZyBvZiBjYW52YXMgMkQKSW5kZXg6IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgt
aGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtaGlkZGVuLWhlYWQtc2VjdGlvbi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAorVGhpcyB0ZXN0cyB0aGF0IGNl
bGxGb3JSb3dBbmRDb2x1bW4gd29yayBhcyBleHBlY3RlZCB3aGVuIGNlbGxzIGFyZSBoaWRkZW4g
aW4gc2VjdGlvbnMgYW5kIHJvd3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisK
K1RhYmxlMSBoYXMgYSBoaWRkZW4gZmlyc3Qgcm93LiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdv
cmtzIGFzIGV4cGVjdGVkLgorUEFTUyB0YWJsZTEucm93Q291bnQgaXMgMgorUEFTUyAhdGFibGUx
Y2VsbDEgfHwgIXRhYmxlMWNlbGwxLmlzVmFsaWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTFjZWxsMi5p
c0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFi
bGUxY2VsbCcpKSBpcyB0cnVlCitQQVNTIHRhYmxlMWNlbGwyLnJvd0luZGV4UmFuZ2UoKSBpcyAn
ezEsIDF9JworUEFTUyB0YWJsZTFjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkgaXMgJ3swLCAxfScK
KworVGFibGUyIGhhcyBhIGhpZGRlbiBmaXJzdCBzZWN0aW9uLiBWZXJpZnkgYWNjZXNzaW5nIGNl
bGxzIHdvcmtzIGFzIGV4cGVjdGVkLgorUEFTUyB0YWJsZTIucm93Q291bnQgaXMgMgorUEFTUyAh
dGFibGUyY2VsbDEgfHwgIXRhYmxlMmNlbGwxLmlzVmFsaWQgaXMgdHJ1ZQorUEFTUyB0YWJsZTJj
ZWxsMi5pc0VxdWFsKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgndGFibGUyY2VsbCcpKSBpcyB0cnVlCitQQVNTIHRhYmxlMmNlbGwyLnJvd0luZGV4UmFuZ2Uo
KSBpcyAnezEsIDF9JworUEFTUyB0YWJsZTJjZWxsMi5jb2x1bW5JbmRleFJhbmdlKCkgaXMgJ3sw
LCAxfScKKworVGFibGUzIG9ubHkgaGFzIGEgZm9vdGVyIHNlY3Rpb24uCitQQVNTIHRhYmxlMy5y
b3dDb3VudCBpcyAzCitQQVNTICF0YWJsZTNjZWxsMSB8fCAhdGFibGUzY2VsbDEuaXNWYWxpZCBp
cyB0cnVlCitQQVNTIHRhYmxlM2NlbGwyLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCd0YWJsZTNjZWxsJykpIGlzIHRydWUKK1BBU1MgdGFibGUz
Y2VsbDIucm93SW5kZXhSYW5nZSgpIGlzICd7MiwgMX0nCitQQVNTIHRhYmxlM2NlbGwyLmNvbHVt
bkluZGV4UmFuZ2UoKSBpcyAnezAsIDF9JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFi
bGUtd2l0aC1oaWRkZW4taGVhZC1zZWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWhpZGRlbi1oZWFkLXNlY3Rpb24uaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1oaWRkZW4t
aGVhZC1zZWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9ImNvbnRlbnQiPgorCis8
IS0tIEZpcnN0IHJvdyBpcyBoaWRkZW4gLS0+Cis8dGFibGUgaWQ9InRhYmxlMSIgYm9yZGVyPTE+
CisgIDx0cj48dGggaGlkZGVuPmhlYWRlciAxPC90aD48dGggaGlkZGVuPmhlYWRlciAyPC90aD48
L3RyPgorICA8dHI+PHRkIGlkPSJ0YWJsZTFjZWxsIj5mb288L3RkPjx0ZD5iYXI8L3RkPjwvdHI+
Cis8L3RhYmxlPgorCis8IS0tIEZpcnN0IHNlY3Rpb24gaXMgaGlkZGVuIC0tPgorPHRhYmxlIGlk
PSJ0YWJsZTIiIGJvcmRlcj0xPgorICA8dGhlYWQ+PHRoIGhpZGRlbj5oZWFkZXIgMTwvdGg+PHRo
IGhpZGRlbj5oZWFkZXIgMjwvdGg+PC90aGVhZD4KKyAgPHRyPjx0ZCBpZD0idGFibGUyY2VsbCI+
Zm9vPC90ZD48dGQ+YmFyPC90ZD48L3RyPgorPC90YWJsZT4KKworPCEtLSBGaXJzdCBhbmQgbWlk
ZGxlIHNlY3Rpb24gaXMgaGlkZGVuIC0tPgorPHRhYmxlIGlkPSJ0YWJsZTMiIGJvcmRlcj0xPgor
ICA8dGhlYWQ+PHRyPjx0aCBoaWRkZW4+aGVhZGVyIDE8L3RoPjx0aCBoaWRkZW4+aGVhZGVyIDI8
L3RoPjwvdHI+PC90aGVhZD4KKyAgPHRyPjx0ZCBoaWRkZW4+Zm9vPC90ZD48dGQgaGlkZGVuPmJh
cjwvdGQ+PC90cj4KKyAgPHRmb290Pjx0cj48dGQgaWQ9InRhYmxlM2NlbGwiPmZvb3Q8L3RkPjx0
ZD5mb290PC90ZD48L3RyPjwvdGZvb3Q+Cis8L3RhYmxlPgorCis8L2Rpdj4KKworPHNjcmlwdD4K
KworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgY2VsbEZvclJvd0FuZENvbHVtbiB3
b3JrIGFzIGV4cGVjdGVkIHdoZW4gY2VsbHMgYXJlIGhpZGRlbiBpbiBzZWN0aW9ucyBhbmQgcm93
cy4iKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAg
ICAgICBkZWJ1ZygiXG5UYWJsZTEgaGFzIGEgaGlkZGVuIGZpcnN0IHJvdy4gVmVyaWZ5IGFjY2Vz
c2luZyBjZWxscyB3b3JrcyBhcyBleHBlY3RlZC4iKTsKKyAgICAgICAgdmFyIHRhYmxlMSA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGUxIik7Cisg
ICAgICAgIHNob3VsZEJlKCJ0YWJsZTEucm93Q291bnQiLCAiMiIpOworICAgICAgICB2YXIgdGFi
bGUxY2VsbDEgPSB0YWJsZTEuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKTsKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCIhdGFibGUxY2VsbDEgfHwgIXRhYmxlMWNlbGwxLmlzVmFsaWQiKTsKKyAgICAg
ICAgdmFyIHRhYmxlMWNlbGwyID0gdGFibGUxLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMSk7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZSgidGFibGUxY2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3RhYmxlMWNlbGwnKSkiKTsKKyAgICAgICAg
c2hvdWxkQmUoInRhYmxlMWNlbGwyLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworICAg
ICAgICBzaG91bGRCZSgidGFibGUxY2VsbDIuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MCwgMX0n
Iik7CisKKyAgICAgICAgZGVidWcoIlxuVGFibGUyIGhhcyBhIGhpZGRlbiBmaXJzdCBzZWN0aW9u
LiBWZXJpZnkgYWNjZXNzaW5nIGNlbGxzIHdvcmtzIGFzIGV4cGVjdGVkLiIpOworICAgICAgICB2
YXIgdGFibGUyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ0YWJsZTIiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxlMi5yb3dDb3VudCIsICIyIik7Cisg
ICAgICAgIHZhciB0YWJsZTJjZWxsMSA9IHRhYmxlMi5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDAp
OworICAgICAgICBzaG91bGRCZVRydWUoIiF0YWJsZTJjZWxsMSB8fCAhdGFibGUyY2VsbDEuaXNW
YWxpZCIpOworICAgICAgICB2YXIgdGFibGUyY2VsbDIgPSB0YWJsZTIuY2VsbEZvckNvbHVtbkFu
ZFJvdygwLCAxKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0YWJsZTJjZWxsMi5pc0VxdWFsKGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgndGFibGUyY2VsbCcp
KSIpOworICAgICAgICBzaG91bGRCZSgidGFibGUyY2VsbDIucm93SW5kZXhSYW5nZSgpIiwgIid7
MSwgMX0nIik7CisgICAgICAgIHNob3VsZEJlKCJ0YWJsZTJjZWxsMi5jb2x1bW5JbmRleFJhbmdl
KCkiLCAiJ3swLCAxfSciKTsKKworICAgICAgICBkZWJ1ZygiXG5UYWJsZTMgb25seSBoYXMgYSBm
b290ZXIgc2VjdGlvbi4iKTsKKyAgICAgICAgdmFyIHRhYmxlMyA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGUzIik7CisgICAgICAgIHNob3VsZEJl
KCJ0YWJsZTMucm93Q291bnQiLCAiMyIpOworICAgICAgICB2YXIgdGFibGUzY2VsbDEgPSB0YWJs
ZTMuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIhdGFi
bGUzY2VsbDEgfHwgIXRhYmxlM2NlbGwxLmlzVmFsaWQiKTsKKyAgICAgICAgdmFyIHRhYmxlM2Nl
bGwyID0gdGFibGUzLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMik7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgidGFibGUzY2VsbDIuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ3RhYmxlM2NlbGwnKSkiKTsKKyAgICAgICAgc2hvdWxkQmUoInRhYmxl
M2NlbGwyLnJvd0luZGV4UmFuZ2UoKSIsICInezIsIDF9JyIpOworICAgICAgICBzaG91bGRCZSgi
dGFibGUzY2VsbDIuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MCwgMX0nIik7CisgICAgICAKKyAg
ICAgICAgLy8gQ2xlYXIgdGhlIEhUTUwgZm9yIGJldHRlciByZXN1bHRzLgorICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLmlubmVySFRNTCA9ICIiOyAgCisgICAgfQor
CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>
<flag name="review"
          id="210299"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>