<?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>73011</bug_id>
          
          <creation_ts>2011-11-23 01:43:45 -0800</creation_ts>
          <short_desc>Change ImageData to reference Uint8ClampedArray rather than CanvasPixelArray</short_desc>
          <delta_ts>2012-04-24 11:47:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://ponder.org.uk/chromeTest/client.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74455</dependson>
    
    <dependson>76803</dependson>
          <blocked>83655</blocked>
    
    <blocked>84741</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antranig Basman">amb26webkit</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>abarth</cc>
    
    <cc>andrew_j_baker2</cc>
    
    <cc>bashi</cc>
    
    <cc>chuck</cc>
    
    <cc>cmarrin</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>kbr</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>ojan</cc>
    
    <cc>oliver</cc>
    
    <cc>pnormand</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>508009</commentid>
    <comment_count>0</comment_count>
    <who name="Antranig Basman">amb26webkit</who>
    <bug_when>2011-11-23 01:43:45 -0800</bug_when>
    <thetext>I reported this issue originally with Chromium and was told to report it here instead: http://code.google.com/p/chromium/issues/detail?id=101378

I can reproduce the error in all versions of Chrome I have tried since Chrome 14 - unfortunately I can&apos;t reproduce the issue in WebKit since nightlies won&apos;t start on my machine (Windows 7, AMD x64) for a reason I can&apos;t determine. The demonstration page referenced is working in Firefox 7 and 8.

What steps will reproduce the problem?
1. Browse to the above URL
2. Type command &quot;sph&quot; in command interpreter at top left

What is the expected result?

A moving pattern of red, yellow and black bands should appear

What happens instead?

Receive a &quot;TypeError&quot; from Chrome - nothing is rendered

Please provide any additional information below. Attach a screenshot if
possible.

The line responsible for the failure is this one (complex.js line 29)
gl.readPixels(0, 0, config.width, config.height, gl.RGBA, gl.UNSIGNED_BYTE, imageData.data);

According to the HTML5 spec, the &quot;data&quot; element of the ImageData structure should be a &quot;Uint8ClampedArray&quot; which one would expect is compatible with the array format read into by gl.readPixels (array of RGBA unsigned bytes). This is the case on recent Firefoxes and the call succeeds. However, on Chrome the type of imageData.data is shown as &quot;CanvasPixelArray&quot; which is not type compatible and the gl.readPixels call fails.

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-putimagedata</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513064</commentid>
    <comment_count>1</comment_count>
    <who name="Andrew J. Baker">andrew_j_baker2</who>
    <bug_when>2011-12-01 13:48:09 -0800</bug_when>
    <thetext>For potential performance improvements to the 2D context as well as 3D, please see my article here... http://hacks.mozilla.org/2011/12/faster-canvas-pixel-manipulation-with-typed-arrays/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528248</commentid>
    <comment_count>2</comment_count>
    <who name="Charles Pritchard">chuck</who>
    <bug_when>2011-12-30 18:06:28 -0800</bug_when>
    <thetext>Patch seems to be available on bug #74455</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529212</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-01-03 17:52:06 -0800</bug_when>
    <thetext>The patch on bug 74455 only adds the Uint8ClampedArray type; it doesn&apos;t wire it up to the Canvas implementation. This bug can depend on that one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534996</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-01-12 11:22:49 -0800</bug_when>
    <thetext>Changing synopsis to be clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599922</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-10 18:53:48 -0700</bug_when>
    <thetext>I&apos;ve begun work on this. It turns out that because the representation of ImageData changes from WTF::ByteArray to Uint8ClampedArray, it&apos;s necessary to change some other methods (ImageBuffer&apos;s getUnmultipliedImageData, getPremultipliedImageData and putByteArray) from ByteArray to Uint8ClampedArray as well, in order to avoid introducing, even temporarily, some extremely inefficient data copies.

The Filter Effects implementation consequently must change simultaneously from ByteArray to Uint8ClampedArray.

After these changes, it&apos;s actually possible to delete ByteArray, JSByteArray and related code from JavaScriptCore!

In order to keep the size of the initial patch manageable, I am planning to leave ByteArray and JSByteArray in the source tree at first, and once this patch lands, immediately follow up with another patch which removes them from the tree and all build systems.

If anyone objects to the plan above due to temporarily incurring technical debt, please follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599937</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-10 19:24:32 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;ve begun work on this. It turns out that because the representation of ImageData changes from WTF::ByteArray to Uint8ClampedArray, it&apos;s necessary to change some other methods (ImageBuffer&apos;s getUnmultipliedImageData, getPremultipliedImageData and putByteArray) from ByteArray to Uint8ClampedArray as well, in order to avoid introducing, even temporarily, some extremely inefficient data copies.
&gt; 
&gt; The Filter Effects implementation consequently must change simultaneously from ByteArray to Uint8ClampedArray.
&gt; 
&gt; After these changes, it&apos;s actually possible to delete ByteArray, JSByteArray and related code from JavaScriptCore!
&gt; 
&gt; In order to keep the size of the initial patch manageable, I am planning to leave ByteArray and JSByteArray in the source tree at first, and once this patch lands, immediately follow up with another patch which removes them from the tree and all build systems.
&gt; 
&gt; If anyone objects to the plan above due to temporarily incurring technical debt, please follow up.

No objections from me, this sounds great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599942</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-10 19:29:13 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; No objections from me, this sounds great!

Thanks; filed and took Bug 83655 for the cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606620</commentid>
    <comment_count>8</comment_count>
      <attachid>138106</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-20 09:14:13 -0700</bug_when>
    <thetext>Created attachment 138106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606636</commentid>
    <comment_count>9</comment_count>
      <attachid>138106</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-20 09:29:36 -0700</bug_when>
    <thetext>Comment on attachment 138106
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:-131
&gt; -    if (rect.x() &lt; 0 || rect.y() &lt; 0 || endx &gt; size.width() || endy &gt; size.height())
&gt; -        memset(data, 0, result-&gt;length());

why is this removed?  Does uint8array zero initialize?  if so we probably want a non-zero initializing version so we can avoid the double fill here.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:343
&gt; +void ImageBufferData::putData(Uint8ClampedArray*&amp; source, const IntSize&amp; sourceSize, const IntRect&amp; sourceRect, const IntPoint&amp; destPoint, const IntSize&amp; size, bool accelerateRendering, bool unmultiplied, float resolutionScale)

Errr, not a change in this patch per se, but why Uint8ClampedArray*&amp;?  why does source  need to be a reference?

&gt; Source/WebCore/platform/graphics/filters/FEBlend.cpp:110
&gt; +        unsigned char alphaA = srcPixelArrayA-&gt;item(pixelOffset + 3);

Just for my own sanity: is item() non-virtual?

&gt; Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp:-249
&gt; -    if (rect.x() &lt; 0
&gt; -        || rect.y() &lt; 0
&gt; -        || rect.maxX() &gt; size.width()
&gt; -        || rect.maxY() &gt; size.height())
&gt; -        memset(data, 0, result-&gt;length());
&gt; -

and again, are we introducing an unnecessary clear and set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606637</commentid>
    <comment_count>10</comment_count>
      <attachid>138106</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-20 09:29:59 -0700</bug_when>
    <thetext>Comment on attachment 138106
Patch

Attachment 138106 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12465245</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606639</commentid>
    <comment_count>11</comment_count>
      <attachid>138106</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-20 09:33:27 -0700</bug_when>
    <thetext>Comment on attachment 138106
Patch

Attachment 138106 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12483207</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606642</commentid>
    <comment_count>12</comment_count>
      <attachid>138106</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-20 09:36:53 -0700</bug_when>
    <thetext>Comment on attachment 138106
Patch

Attachment 138106 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12482216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606643</commentid>
    <comment_count>13</comment_count>
      <attachid>138106</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-20 09:38:03 -0700</bug_when>
    <thetext>Comment on attachment 138106
Patch

Attachment 138106 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12467262</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606645</commentid>
    <comment_count>14</comment_count>
      <attachid>138106</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-04-20 09:39:50 -0700</bug_when>
    <thetext>Comment on attachment 138106
Patch

Attachment 138106 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12479192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606646</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-20 09:40:15 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 138106 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138106&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:-131
&gt; &gt; -    if (rect.x() &lt; 0 || rect.y() &lt; 0 || endx &gt; size.width() || endy &gt; size.height())
&gt; &gt; -        memset(data, 0, result-&gt;length());
&gt; 
&gt; why is this removed?  Does uint8array zero initialize?  if so we probably want a non-zero initializing version so we can avoid the double fill here.

This is briefly mentioned in the ChangeLog. Uint8ClampedArray zero-initializes by virtue of ArrayBuffer always zero-initializing (via tryFastCalloc). I&apos;m somewhat reluctant to introduce a non-zero-initializing variant, because it isn&apos;t clear that there&apos;ll be a performance win (allocation is relatively expensive anyway), and the calling code becomes simpler and more obviously correct when the allocations are zero-initialized.

&gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:343
&gt; &gt; +void ImageBufferData::putData(Uint8ClampedArray*&amp; source, const IntSize&amp; sourceSize, const IntRect&amp; sourceRect, const IntPoint&amp; destPoint, const IntSize&amp; size, bool accelerateRendering, bool unmultiplied, float resolutionScale)
&gt; 
&gt; Errr, not a change in this patch per se, but why Uint8ClampedArray*&amp;?  why does source  need to be a reference?

I&apos;m not sure -- in this case I only made the syntactic change. Would you like me to investigate this further in a follow-up patch?

&gt; &gt; Source/WebCore/platform/graphics/filters/FEBlend.cpp:110
&gt; &gt; +        unsigned char alphaA = srcPixelArrayA-&gt;item(pixelOffset + 3);
&gt; 
&gt; Just for my own sanity: is item() non-virtual?

Yes, it&apos;s non-virtual. It&apos;s defined in all of the concrete typed array view classes, mostly via templates.

&gt; &gt; Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp:-249
&gt; &gt; -    if (rect.x() &lt; 0
&gt; &gt; -        || rect.y() &lt; 0
&gt; &gt; -        || rect.maxX() &gt; size.width()
&gt; &gt; -        || rect.maxY() &gt; size.height())
&gt; &gt; -        memset(data, 0, result-&gt;length());
&gt; &gt; -
&gt; 
&gt; and again, are we introducing an unnecessary clear and set?

As above, Uint8ClampedArray allocations are zeroed, so this check becomes unnecessary.

If any of these answers are unsatisfactory please adjust the review bit. I&apos;ll look into the various EWS failures later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606667</commentid>
    <comment_count>16</comment_count>
      <attachid>138106</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-20 10:06:16 -0700</bug_when>
    <thetext>Comment on attachment 138106
Patch

Attachment 138106 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12470258</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606748</commentid>
    <comment_count>17</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-20 11:38:58 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 138106 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138106&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp:-131
&gt; &gt; &gt; -    if (rect.x() &lt; 0 || rect.y() &lt; 0 || endx &gt; size.width() || endy &gt; size.height())
&gt; &gt; &gt; -        memset(data, 0, result-&gt;length());
&gt; &gt; 
&gt; &gt; why is this removed?  Does uint8array zero initialize?  if so we probably want a non-zero initializing version so we can avoid the double fill here.
&gt; 
&gt; This is briefly mentioned in the ChangeLog. Uint8ClampedArray zero-initializes by virtue of ArrayBuffer always zero-initializing (via tryFastCalloc). I&apos;m somewhat reluctant to introduce a non-zero-initializing variant, because it isn&apos;t clear that there&apos;ll be a performance win (allocation is relatively expensive anyway), and the calling code becomes simpler and more obviously correct when the allocations are zero-initialized.

In the image data from canvas, the allocation time is very low compared to the fill cost.

I&apos;d like to see perf numbers comparing getImageData of an entire canvas a few thousand times before and after this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607124</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-20 18:36:00 -0700</bug_when>
    <thetext>It does look like the mandatory zeroing increases the time of getImageData() by about 10%. Timings for 1000 calls to getImageData against a 1024x1024 canvas:

TOT Chromium:
10180 ms
10322 ms
9990 ms
9966 ms
Average: 10114.5
My build:
10595 ms
10671 ms
11330 ms
11603 ms
11493 ms
Average: 11138.4

I&apos;ll add a createUninitialized() factory method to Uint8ClampedArray and change this patch to use it. In the meantime, I&apos;m submitting another patch just to see if it passes the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607125</commentid>
    <comment_count>19</comment_count>
      <attachid>138212</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-20 18:40:59 -0700</bug_when>
    <thetext>Created attachment 138212
Patch for EWS bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607824</commentid>
    <comment_count>20</comment_count>
      <attachid>138380</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-23 10:42:49 -0700</bug_when>
    <thetext>Created attachment 138380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607825</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-23 10:45:28 -0700</bug_when>
    <thetext>This revised patch adds Uint8ClampedArray::createUninitialized() and uses it throughout the code paths which allocated uninitialized ByteArrays. Oliver, as you suspected, this eliminates the performance regression of the previous patch. 1000 calls to getImageData() now take:

9527 ms
9441 ms
9723 ms
9687 ms
9556 ms
Average: 9586.8

I don&apos;t know exactly why it&apos;s faster than the old code path, but suspect that some work that went into efficiently GC&apos;ing typed arrays might not have been done for the old CanvasPixelArray path.

The new patch also replaces a few manual calls to memset() with zeroFill(), which replaces ByteArray::clear().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607838</commentid>
    <comment_count>22</comment_count>
      <attachid>138380</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-23 10:54:29 -0700</bug_when>
    <thetext>Comment on attachment 138380
Patch

It&apos;s possibly related to some of the inanity JSC had wrt to providing &quot;ByteArray&quot; that claimed to be a &quot;CanvasPixelArray&quot;, woo!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608094</commentid>
    <comment_count>23</comment_count>
      <attachid>138380</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-23 15:33:36 -0700</bug_when>
    <thetext>Comment on attachment 138380
Patch

Rejecting attachment 138380 from commit-queue.

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

Last 500 characters of output:
 LayoutTests/fast/dom/Window/script-tests/postmessage-clone.js
patching file LayoutTests/fast/dom/Window/window-postmessage-clone-expected.txt
patching file LayoutTests/platform/chromium/fast/dom/Window/window-postmessage-clone-expected.txt
patching file LayoutTests/platform/gtk/fast/dom/Window/window-postmessage-clone-expected.txt

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

Full output: http://queues.webkit.org/results/12522045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608143</commentid>
    <comment_count>24</comment_count>
      <attachid>138450</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-23 16:03:06 -0700</bug_when>
    <thetext>Created attachment 138450
Rebased Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608344</commentid>
    <comment_count>25</comment_count>
      <attachid>138450</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-23 20:43:50 -0700</bug_when>
    <thetext>Comment on attachment 138450
Rebased Patch

Clearing flags on attachment: 138450

Committed r114992: &lt;http://trac.webkit.org/changeset/114992&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608345</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-23 20:43:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608807</commentid>
    <comment_count>27</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-04-24 10:24:24 -0700</bug_when>
    <thetext>After this change, a regression test that had not previously failed started failing consistently on the Mac build. The test failing is fast/dom/Window/window-postmessage-clone.html, and the failure is this:

- CONSOLE MESSAGE: line 86: TypeError: No default value
- CONSOLE MESSAGE: line 86: TypeError: No default value

These two lines are part of the expected results and are not showing up any more. This patch is big and there are no per-file-change comments so I can’t guess what aspect of the patch created these new failures. For example, I don’t know the significance of the changes to SerializedScriptValue.cpp and whether these changes would be expected to affect this test.

The test does covers serialization of canvas image data, so I guess it’s not a surprise that the results changed. Can someone with sufficient expertise update the expected results if this is a progression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608818</commentid>
    <comment_count>28</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-24 10:39:45 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; After this change, a regression test that had not previously failed started failing consistently on the Mac build. The test failing is fast/dom/Window/window-postmessage-clone.html, and the failure is this:
&gt; 
&gt; - CONSOLE MESSAGE: line 86: TypeError: No default value
&gt; - CONSOLE MESSAGE: line 86: TypeError: No default value
&gt; 
&gt; These two lines are part of the expected results and are not showing up any more. This patch is big and there are no per-file-change comments so I can’t guess what aspect of the patch created these new failures. For example, I don’t know the significance of the changes to SerializedScriptValue.cpp and whether these changes would be expected to affect this test.
&gt; 
&gt; The test does covers serialization of canvas image data, so I guess it’s not a surprise that the results changed. Can someone with sufficient expertise update the expected results if this is a progression?

Sorry about that -- I tried to update all the expectations appropriately. The failure is almost certainly a progression, not a regression, since the TypeErrors were probably happening because CanvasPixelArray wasn&apos;t cloneable. I&apos;ll file a bug and fix it right away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608900</commentid>
    <comment_count>29</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-24 11:47:05 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; After this change, a regression test that had not previously failed started failing consistently on the Mac build. The test failing is fast/dom/Window/window-postmessage-clone.html, and the failure is this:
&gt; &gt; 
&gt; &gt; - CONSOLE MESSAGE: line 86: TypeError: No default value
&gt; &gt; - CONSOLE MESSAGE: line 86: TypeError: No default value
&gt; &gt; 
&gt; &gt; These two lines are part of the expected results and are not showing up any more. This patch is big and there are no per-file-change comments so I can’t guess what aspect of the patch created these new failures. For example, I don’t know the significance of the changes to SerializedScriptValue.cpp and whether these changes would be expected to affect this test.
&gt; &gt; 
&gt; &gt; The test does covers serialization of canvas image data, so I guess it’s not a surprise that the results changed. Can someone with sufficient expertise update the expected results if this is a progression?
&gt; 
&gt; Sorry about that -- I tried to update all the expectations appropriately. The failure is almost certainly a progression, not a regression, since the TypeErrors were probably happening because CanvasPixelArray wasn&apos;t cloneable. I&apos;ll file a bug and fix it right away.

Layout test issue fixed in https://bugs.webkit.org/show_bug.cgi?id=84741 / http://trac.webkit.org/changeset/115088 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138106</attachid>
            <date>2012-04-20 09:14:13 -0700</date>
            <delta_ts>2012-04-20 18:40:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73011-20120420091412.patch</filename>
            <type>text/plain</type>
            <size>121220</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDMzNjJhNmEzNTY0M2Y5
NDRiOGQ2ZTRhYjllODliYTI3YjM2MWUxNS4uN2I0ZGFjYTA5ZTdiZjcxMjIxZTdkOGJlNDdmOGYz
Yzg1MDljNGU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAxMi0wNC0yMCAgS2Vu
bmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEltYWdlRGF0
YSB0byByZWZlcmVuY2UgVWludDhDbGFtcGVkQXJyYXkgcmF0aGVyIHRoYW4gQ2FudmFzUGl4ZWxB
cnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMw
MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFu
Z2VkIEltYWdlRGF0YSB0byBjb250YWluIFVpbnQ4Q2xhbXBlZEFycmF5IGluc3RlYWQgb2YgQnl0
ZUFycmF5CisgICAgICAgIHBlciBjdXJyZW50IEhUTUw1IHNwZWMuCisKKyAgICAgICAgSW4gb3Jk
ZXIgdG8gYXZvaWQgaW50cm9kdWNpbmcgbGFyZ2UgZGF0YSBjb3BpZXMsIGl0IHdhcyBuZWNlc3Nh
cnkgdG8KKyAgICAgICAgc3dpdGNoIGEgZmV3IG90aGVyIHBsYWNlcyBpbiBXZWJLaXQgdG8gdXNl
IFVpbnQ4Q2xhbXBlZEFycmF5IGF0IHRoZQorICAgICAgICBzYW1lIHRpbWUsIG1vc3Qgbm90YWJs
eSB0aGUgRmlsdGVyRWZmZWN0IGltcGxlbWVudGF0aW9uLCBwb3J0aW9ucyBvZgorICAgICAgICBJ
bWFnZUJ1ZmZlciwgYW5kIGEgY291cGxlIG9mIHBsYWNlcyBpbiB0aGUgaW1hZ2UgZW5jb2RlcnMu
CisKKyAgICAgICAgTm90ZSB0aGF0IFVpbnQ4Q2xhbXBlZEFycmF5IGlzIGFsd2F5cyBhbGxvY2F0
ZWQgemVyby1maWxsZWQsIHdoaWNoCisgICAgICAgIGFsbG93ZWQgbWFudWFsIHplcm9pbmcgY29k
ZSB0byBiZSByZW1vdmVkIGluIGEgZmV3IHBsYWNlcy4KKworICAgICAgICBOb3RlIGFsc28gdGhh
dCB0aGUgY2hhbmdlIGluIG1ldGhvZCBuYW1lIGZyb20gImdldCIgdG8gIml0ZW0iCisgICAgICAg
IG9jY3VycmVkIGJlY2F1c2UgSlNDJ3MgYXV0b2dlbmVyYXRlZCBpbmRleGVkIGdldHRlcnMgcmVm
ZXJlbmNlIGEKKyAgICAgICAgbWV0aG9kIGNhbGxlZCAiaXRlbSIuIElmIGRlc2lyZWQsIGEgY29u
dmVuaWVuY2UgbWV0aG9kIGNvdWxkIGJlCisgICAgICAgIGludHJvZHVjZWQgdG8gYXZvaWQgdGhl
IHJlbmFtaW5ncyBpbiB0aGUgRmlsdGVyRWZmZWN0IGNsYXNzZXMuCisKKyAgICAgICAgV2l0aCB0
aGVzZSBjaGFuZ2VzLCBCeXRlQXJyYXkgYW5kIHNvbWUgY3VzdG9tIGNvZGUgaW4gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgYWN0dWFsbHkgYmVjb21lIHVucmVmZXJlbmNlZCwgYW5kIGNhbiBiZSBk
ZWxldGVkLiBUaGlzIGRlbGV0aW9uIHdpbGwKKyAgICAgICAgYmUgZG9uZSBzZXBhcmF0ZWx5IGlu
IEJ1ZyA4MzY1NSwgdG8ga2VlcCB0aGUgc2l6ZSBvZiB0aGlzIHBhdGNoCisgICAgICAgIG1hbmFn
ZWFibGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVp
bnQ4Y2xhbXBlZGFycmF5Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRh
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJp
YWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRh
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJyaWRnZS9x
dC9xdF9waXhtYXBydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFw
VG9JbWFnZURhdGFNZXRob2Q6Omludm9rZSk6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmg6Cisg
ICAgICAgIChJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhKToK
KyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVtcHR5
SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFj
dEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VG9MdW1pbmFu
Y2VNYXNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRJ
bWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGll
ZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlw
bGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFy
cmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
YXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5oOgorICAgICAgICAoSW1hZ2VCdWZmZXJEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVu
ZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWZmZWN0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXJpdGht
ZXRpY1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVN
YXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RGVzdGluYXRpb25QaXhlbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6ZmFzdFNldEludGVyaW9yUGl4ZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmZhc3RTZXRPdXRlclBpeGVscyk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5oOgorICAgICAgICAoUGFpbnRpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9t
RmlsdGVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0
b21GaWx0ZXI6OmJpbmRQcm9ncmFtQW5kQnVmZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEZFQ3VzdG9tRmlsdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFw
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJveEJsdXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlHZW5lcmljKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKKyAgICAgICAg
KFBsYXRmb3JtQXBwbHlQYXJhbWV0ZXJzKToKKyAgICAgICAgKEZFR2F1c3NpYW5CbHVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjp0b3BMZWZ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6dG9wUm93KToKKyAgICAgICAgKFdl
YkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6dG9wUmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpsZWZ0Q29sdW1uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6aW50ZXJpb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpyaWdodENvbHVtbik6CisgICAgICAgIChX
ZWJDb3JlOjpGRUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OmJvdHRvbUxlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21Sb3cpOgorICAgICAgICAo
V2ViQ29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21SaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpGRUxpZ2h0aW5nOjppbmxpbmVTZXRQaXhlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGlu
Zzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAgKExpZ2h0aW5nRGF0YSk6CisgICAgICAgIChG
RUxpZ2h0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhv
bG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlH
ZW5lcmljKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9n
eS5oOgorICAgICAgICAoUGFpbnRpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVu
Y2U6OmZpbGxSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmg6CisgICAgICAgIChGaWxsUmVnaW9uUGFyYW1ldGVycyk6CisgICAgICAgIChG
RVR1cmJ1bGVuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Zm9yY2VWYWxpZFBy
ZU11bHRpcGxpZWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojphc1Vu
bXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNQcmVt
dWx0aXBsaWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5SW1h
Z2VCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxp
ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBs
aWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRp
cGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0
ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKEZpbHRlckVmZmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVHYXVzc2lhbkJsdXJORU9OLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseU5lb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlQnVmZmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpn
ZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1h
Z2VCdWZmZXJXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZW5jb2RlcnMvc2tpYS9KUEVHSW1hZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpQRUdJbWFnZUVuY29kZXI6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvc2tpYS9QTkdJbWFnZUVuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5H
SW1hZ2VFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWVuY29kZXJz
L3NraWEvV0VCUEltYWdlRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VF
bmNvZGVyOjplbmNvZGUpOgorCiAyMDEyLTA0LTIwICBTYW0gRCAgPGRzYW0yOTEyQGdtYWlsLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEb2VzIG5vdCBoYXZlIHNlYXJjaCBuYXZpZ2F0
aW9uIGJ1dHRvbiBmb3IgZ29pbmcgdGhyb3VnaCBtYXRjaGVzIGluIGVpdGhlciBkaXJlY3Rpb24g
KHByZXYsIG5leHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZkOGYyZmQ0NWI2ZTM1
ZGUzMzEwYWViZDJmYzFkOTFjNmIyZjc2MjIuLmIwMzEzZWRmMjA4ZDE5NGFlZGE0MDgzZTdiZTNj
MDU5NDFlOTM1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMDQtMjAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAg
IENoYW5nZSBJbWFnZURhdGEgdG8gcmVmZXJlbmNlIFVpbnQ4Q2xhbXBlZEFycmF5IHJhdGhlciB0
aGFuIENhbnZhc1BpeGVsQXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczMDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMpOgorCiAyMDEyLTA0
LTIwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggZDJjYTQ3NmM3M2RhODNhMGU1ZjhjYzRm
NzEyMDRhZGFhMDc4NjNjYS4uYjkyODI3NTFmMDM4YWRkNjJiYTM5MzhhMjhjNzliMzFjOGE0OGRj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9t
LmNwcApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKU0ltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkpTVWludDhDbGFtcGVkQXJyYXkuaCIKIAogI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKLSNpbmNs
dWRlIDxydW50aW1lL0pTQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNDcsMTAgKzQ3LDcgQEAgSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VE
YXRhKiBpbWFnZUQKICAgICAKICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMs
IGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhLCBpbWFnZURhdGEpOwogICAgIElkZW50aWZpZXIgZGF0
YU5hbWUoZXhlYywgImRhdGEiKTsKLSAgICBTdHJ1Y3R1cmUqIGNwYVN0cnVjdHVyZSA9IGdldENh
Y2hlZERPTVN0cnVjdHVyZShnbG9iYWxPYmplY3QsICZKU0J5dGVBcnJheTo6c19pbmZvKTsKLSAg
ICBpZiAoIWNwYVN0cnVjdHVyZSkKLSAgICAgICAgY3BhU3RydWN0dXJlID0gY2FjaGVET01TdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LCBKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgJkpTQnl0ZUFycmF5OjpzX2luZm8p
LCAmSlNCeXRlQXJyYXk6OnNfaW5mbyk7Ci0gICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZGF0YU5hbWUsIEpTQnl0ZUFycmF5OjpjcmVhdGUoZXhlYywgY3BhU3RydWN0
dXJlLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRhTmFtZSwgdG9K
UyhpbWFnZURhdGEtPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgZXhlYy0+
aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1hZ2VEYXRhLT5kYXRhKCktPmxlbmd0aCgp
KTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDVkMmQ1MWRkY2E0ZmRh
NWE4ZjMxOWVmMDhlNmRlMzI4ZThiYmVlMjIuLjdjNzE2YzBiYTFlMmY5MWJmNTA2MTJlODM5ZGU0
ZWJlZjNmNDQyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNjMsOCArNjMsOCBAQAogI2luY2x1ZGUgPHJ1bnRp
bWUvUmVnRXhwLmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHBPYmplY3QuaD4KICNpbmNsdWRl
IDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC02MDks
NyArNjA5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT53aWR0aCgp
KTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5oZWlnaHQoKSk7CiAgICAgICAgICAgICAg
ICAgd3JpdGUoZGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGUo
ZGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEoKSwgZGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7Cisg
ICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLT5kYXRhKCksIGRhdGEtPmRhdGEoKS0+
bGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHMoJlJlZ0V4cE9iamVjdDo6c19pbmZvKSkgewpA
QCAtMTQzMCw3ICsxNDMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZXN1
bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICAgICAg
ICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCksIG1fcHRyLCBsZW5ndGgp
OworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSgpLT5kYXRhKCksIG1fcHRyLCBsZW5n
dGgpOwogICAgICAgICAgICAgbV9wdHIgKz0gbGVuZ3RoOwogICAgICAgICAgICAgcmV0dXJuIGdl
dEpTVmFsdWUocmVzdWx0LmdldCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZjYwZDM2NmE4
N2Y2YTFkMTJiNTk0NDg5OWY3OTY2MjEzNTIwZWExYS4uMzk0NjE3YzBhOWZiODdjOGIwYjQwNmJm
MDViZGI3MTdmOTA3MTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSA8
d3RmL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgogI2lu
Y2x1ZGUgIkJsb2IuaCIKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSAiQ2Fu
dmFzUGl4ZWxBcnJheS5oIgogI2luY2x1ZGUgIkRhdGFWaWV3LmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgpAQCAtMTAwNiw3ICsxMDA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW1hZ2VE
YXRhKiBpbWFnZURhdGEgPSBWOEltYWdlRGF0YTo6dG9OYXRpdmUodmFsdWUuQXM8djg6Ok9iamVj
dD4oKSk7CiAgICAgICAgIGlmICghaW1hZ2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBXVEY6OkJ5dGVBcnJheSogcGl4ZWxBcnJheSA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRh
KCk7CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFycmF5ID0gaW1hZ2VEYXRhLT5k
YXRhKCk7CiAgICAgICAgIG1fd3JpdGVyLndyaXRlSW1hZ2VEYXRhKGltYWdlRGF0YS0+d2lkdGgo
KSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgcGl4ZWxBcnJheS0+ZGF0YSgpLCBwaXhlbEFycmF5LT5s
ZW5ndGgoKSk7CiAgICAgfQogCkBAIC0xNTgyLDcgKzE1ODEsNyBAQCBwcml2YXRlOgogICAgICAg
ICBpZiAobV9wb3NpdGlvbiArIHBpeGVsRGF0YUxlbmd0aCA+IG1fbGVuZ3RoKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBJ
bWFnZURhdGE6OmNyZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICAgICAgV1RGOjpC
eXRlQXJyYXkqIHBpeGVsQXJyYXkgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOworICAgICAg
ICBVaW50OENsYW1wZWRBcnJheSogcGl4ZWxBcnJheSA9IGltYWdlRGF0YS0+ZGF0YSgpOwogICAg
ICAgICBBU1NFUlQocGl4ZWxBcnJheSk7CiAgICAgICAgIEFTU0VSVChwaXhlbEFycmF5LT5sZW5n
dGgoKSA+PSBwaXhlbERhdGFMZW5ndGgpOwogICAgICAgICBtZW1jcHkocGl4ZWxBcnJheS0+ZGF0
YSgpLCBtX2J1ZmZlciArIG1fcG9zaXRpb24sIHBpeGVsRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNw
cAppbmRleCBiNDU0OWU0MTY1OWNmYjIxNTExMjI4NGRlMDEyNGVmYTViN2UwNTFiLi4xMmNiNjY4
ZjFmMjExMWVhZDRkZmFmNThlN2M2YzYwMzA3NDFjMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1c3RvbS5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOEltYWdlRGF0YS5o
IgogCi0jaW5jbHVkZSAiVjhDYW52YXNQaXhlbEFycmF5LmgiCisjaW5jbHVkZSAiVjhVaW50OENs
YW1wZWRBcnJheS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzQxLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSW1hZ2VEYXRhKiBpbXBsKQogICAgICAgICByZXR1
cm4gdjg6Ok51bGwoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOElt
YWdlRGF0YTo6d3JhcChpbXBsKTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKSB7Ci0gICAg
ICAgIC8vIENyZWF0ZSBhIFY4IENhbnZhc1BpeGVsQXJyYXkgb2JqZWN0LgorICAgICAgICAvLyBD
cmVhdGUgYSBWOCBVaW50OENsYW1wZWRBcnJheSBvYmplY3QuCiAgICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBwaXhlbEFycmF5ID0gdG9WOChpbXBsLT5kYXRhKCkpOwogICAgICAgICAvLyBT
ZXQgdGhlICJkYXRhIiBwcm9wZXJ0eSBvZiB0aGUgSW1hZ2VEYXRhIG9iamVjdCB0bwogICAgICAg
ICAvLyB0aGUgY3JlYXRlZCB2OCBvYmplY3QsIGVsaW1pbmF0aW5nIHRoZSBDKysgY2FsbGJhY2sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAppbmRleCA5
YzFjZGFkMDIzYzhiMTRlMDk5YTNhMTM5Yzc4ZWI5ZTIxN2RlMTE0Li43ZThkN2E1YjdmNjk3OWRi
YTQzYTIwY2VkYmNmZGI2MzU2YjBjMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCkBAIC05Miw5ICs5Miw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGludCB3aWR0aCA9IGluc3RhbmNlLT53aWR0aCgpOwogICAgICAgICBpbnQgaGVpZ2h0
ID0gaW5zdGFuY2UtPmhlaWdodCgpOwotICAgICAgICBSZWZQdHI8Qnl0ZUFycmF5PiBieXRlQXJy
YXkgPSBCeXRlQXJyYXk6OmNyZWF0ZSh3aWR0aCAqIGhlaWdodCAqIDQpOwotICAgICAgICBjb3B5
UGl4ZWxzKGluc3RhbmNlLT50b0ltYWdlKCksIHdpZHRoLCBoZWlnaHQsIGJ5dGVBcnJheS0+ZGF0
YSgpKTsKLSAgICAgICAgUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpj
cmVhdGUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYnl0ZUFycmF5KTsKKyAgICAgICAgUmVmUHRy
PEltYWdlRGF0YT4gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KSk7CisgICAgICAgIGNvcHlQaXhlbHMoaW5zdGFuY2UtPnRvSW1hZ2UoKSwgd2lkdGgs
IGhlaWdodCwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CiAgICAgICAgIHJldHVybiB0b0pT
KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKSwgaW1hZ2VEYXRhLmdldCgpKTsKICAgICB9CiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURhdGEuY3BwCmluZGV4IGFkMjQxMzY2MzNlY2NlNDI4M2YxY2RjN2Y2NDdlNWI3ODU4
OTc1ZDMuLmRlZTU5ZTRiNWNiYzQ5NjJkNzM3YWM2YWY0YjQ2OTlmYzQzODg5NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAgLTMzLDI0ICszMyw0MSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRT
aXplJiBzaXplKQogeworICAgIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gZGF0YVNpemUg
PSA0OworICAgIGRhdGFTaXplICo9IHNpemUud2lkdGgoKTsKKyAgICBkYXRhU2l6ZSAqPSBzaXpl
LmhlaWdodCgpOworICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJl
dHVybiAwOworCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURhdGEoc2l6ZSkpOwogfQog
Ci1QYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGJ5dGVBcnJheSkKK1Bhc3NSZWZQdHI8SW1hZ2VE
YXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5PiBieXRlQXJyYXkpCiB7CisgICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92
ZXJmbG93PiBkYXRhU2l6ZSA9IDQ7CisgICAgZGF0YVNpemUgKj0gc2l6ZS53aWR0aCgpOworICAg
IGRhdGFTaXplICo9IHNpemUuaGVpZ2h0KCk7CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93
ZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZGF0YVNpemUudW5zYWZlR2V0KCkg
PCAwCisgICAgICAgIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkYXRhU2l6ZS51bnNhZmVHZXQo
KSkgPiBieXRlQXJyYXktPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheSkpOwogfQogCiBJbWFnZURh
dGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDogbV9zaXplKHNpemUpCi0g
ICAgLCBtX2RhdGEoQ2FudmFzUGl4ZWxBcnJheTo6Y3JlYXRlKHNpemUud2lkdGgoKSAqIHNpemUu
aGVpZ2h0KCkgKiA0KSkKKyAgICAsIG1fZGF0YShVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKHNp
emUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0KSkKIHsKIH0KIAotSW1hZ2VEYXRhOjpJbWFn
ZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGJ5dGVBcnJh
eSkKK0ltYWdlRGF0YTo6SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUsIFBhc3NSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IGJ5dGVBcnJheSkKICAgICA6IG1fc2l6ZShzaXplKQotICAgICwg
bV9kYXRhKENhbnZhc1BpeGVsQXJyYXk6OmNyZWF0ZShieXRlQXJyYXkpKQorICAgICwgbV9kYXRh
KGJ5dGVBcnJheSkKIHsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUud2lk
dGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0KSA8PSBtX2RhdGEtPmxlbmd0aCgpKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmgKaW5kZXggMzVkMDhlNzFkMjg0NGYyNWFhNjE5YTM4OTNlNGQy
YzJhMTMwYjJjYy4uNzYxNjg3MDYzYTU1ZTU0NWZiY2RkYzY4ZmIwODkyZjQ5ZTQ5Y2E5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRGF0YS5oCkBAIC0yOSwzMCArMjksMjkgQEAKICNpZm5kZWYgSW1hZ2VE
YXRhX2gKICNkZWZpbmUgSW1hZ2VEYXRhX2gKIAotI2luY2x1ZGUgIkNhbnZhc1BpeGVsQXJyYXku
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEltYWdlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRGF0YT4gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJiwg
UGFzc1JlZlB0cjxCeXRlQXJyYXk+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURhdGE+
IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4pOwog
CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgaW50IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0KICAgICBpbnQgaGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9Ci0gICAgQ2FudmFzUGl4ZWxBcnJheSog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIFVpbnQ4Q2xhbXBlZEFy
cmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgSW1hZ2VEYXRhKGNvbnN0IEludFNpemUmKTsKLSAgICBJbWFnZURhdGEoY29uc3QgSW50U2l6
ZSYsIFBhc3NSZWZQdHI8Qnl0ZUFycmF5Pik7CisgICAgSW1hZ2VEYXRhKGNvbnN0IEludFNpemUm
LCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5Pik7CiAKICAgICBJbnRTaXplIG1fc2l6ZTsK
LSAgICBSZWZQdHI8Q2FudmFzUGl4ZWxBcnJheT4gbV9kYXRhOworICAgIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuaWRsCmluZGV4IGM4NTk0NTQxNzRjMzdjNTE4YjBhYTA2Yjk3MjU4NWYx
NDdmNmY2YzcuLmYyZWEwY2E2YjczNmMyOWE5MzI3YmNkZWM4NGU1Y2E3MmI5MDFiYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRGF0YS5pZGwKQEAgLTM0LDcgKzM0LDcgQEAgbW9kdWxlIGh0bWwgewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyB3aWR0aDsKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGxvbmcgaGVpZ2h0OwogI2lmICFkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQp
IHx8ICFMQU5HVUFHRV9KQVZBU0NSSVBUCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYW52
YXNQaXhlbEFycmF5IGRhdGE7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OENsYW1w
ZWRBcnJheSBkYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggOTJhNmU5
ZTY3MDkzNDQ4Y2NmM2JmYzY3ZmZkMzRkZjM0NGFiOWMzZi4uMmY2YmFhNzliODM4MjY3NjZkMDc5
NzIyMmM3MGFjNzExNTQyODM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC02MiwxMCArNjIsMTQgQEAK
ICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKIAotI2luY2x1
ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisj
aW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRB
cml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+CiAKICNpZiBVU0UoQ0cpCkBAIC0xNzMzLDE0ICsxNzM3LDcgQEAg
R3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdpbmdDb250ZXh0
KCkgY29uc3QKIAogc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVFbXB0eUltYWdl
RGF0YShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVy
Zmxvdz4gZGF0YVNpemUgPSA0OwotICAgIGRhdGFTaXplICo9IHNpemUud2lkdGgoKTsKLSAgICBk
YXRhU2l6ZSAqPSBzaXplLmhlaWdodCgpOwotICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkpCi0gICAgICAgIHJldHVybiAwOwotCiAgICAgUmVmUHRyPEltYWdlRGF0YT4gZGF0YSA9IElt
YWdlRGF0YTo6Y3JlYXRlKHNpemUpOwotICAgIG1lbXNldChkYXRhLT5kYXRhKCktPmRhdGEoKS0+
ZGF0YSgpLCAwLCBkYXRhLT5kYXRhKCktPmRhdGEoKS0+bGVuZ3RoKCkpOwogICAgIHJldHVybiBk
YXRhLnJlbGVhc2UoKTsKIH0KIApAQCAtMTgyOSw3ICsxODI2LDcgQEAgUGFzc1JlZlB0cjxJbWFn
ZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKEltYWdlQnVmZmVy
OjpDb29yZGkKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1h
Z2VEYXRhKGltYWdlRGF0YVJlY3Quc2l6ZSgpKTsKIAotICAgIFJlZlB0cjxCeXRlQXJyYXk+IGJ5
dGVBcnJheSA9IGJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGltYWdlRGF0YVJlY3Qs
IGNvb3JkaW5hdGVTeXN0ZW0pOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYnl0ZUFy
cmF5ID0gYnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VEYXRhUmVjdCwgY29v
cmRpbmF0ZVN5c3RlbSk7CiAgICAgaWYgKCFieXRlQXJyYXkpCiAgICAgICAgIHJldHVybiAwOwog
CkBAIC0xOTAyLDcgKzE4OTksNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0
SW1hZ2VEYXRhKEltYWdlRGF0YSogZGF0YSwgSW1hZ2VCdWZmZXI6OkNvb3JkaQogICAgIEludFJl
Y3Qgc291cmNlUmVjdChkZXN0UmVjdCk7CiAgICAgc291cmNlUmVjdC5tb3ZlKC1kZXN0T2Zmc2V0
KTsKIAotICAgIGJ1ZmZlci0+cHV0Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgZGF0YS0+ZGF0YSgp
LT5kYXRhKCksIEludFNpemUoZGF0YS0+d2lkdGgoKSwgZGF0YS0+aGVpZ2h0KCkpLCBzb3VyY2VS
ZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0KSwgY29vcmRpbmF0ZVN5c3RlbSk7CisgICAgYnVmZmVy
LT5wdXRCeXRlQXJyYXkoVW5tdWx0aXBsaWVkLCBkYXRhLT5kYXRhKCksIEludFNpemUoZGF0YS0+
d2lkdGgoKSwgZGF0YS0+aGVpZ2h0KCkpLCBzb3VyY2VSZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0
KSwgY29vcmRpbmF0ZVN5c3RlbSk7CiAKICAgICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBJbWFn
ZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSkgewogICAgICAgICBGbG9hdFJl
Y3QgZGlydHlSZWN0ID0gZGVzdFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggMDNiYmQwMzYyYjEyZmYw
OGI2M2YwYWY4NDQzYTc4ZTI4OWE4ZDMyOC4uYTI4MmU4MDI3M2UzYjQ1ZmVkNTFlOTc2YzRlOGI0
ZDdiYjkyOTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmV4dHJhY3RJbWFnZURhdGEoSW1hZ2VEYXRhKiBpbWFnZURhdGEsCiAgICAg
aW50IGhlaWdodCA9IGltYWdlRGF0YS0+aGVpZ2h0KCk7CiAgICAgaW50IGRhdGFCeXRlcyA9IHdp
ZHRoICogaGVpZ2h0ICogNDsKICAgICBkYXRhLnJlc2l6ZShkYXRhQnl0ZXMpOwotICAgIGlmICgh
cGFja1BpeGVscyhpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCksCisgICAgaWYgKCFw
YWNrUGl4ZWxzKGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAg
IFNvdXJjZUZvcm1hdFJHQkE4LAogICAgICAgICAgICAgICAgICAgICB3aWR0aCwKICAgICAgICAg
ICAgICAgICAgICAgaGVpZ2h0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGU0YTlmZDg1NzRmMGI0N2U2NmNlOGI1NTZjM2I1YWUz
NzA4Mjk1MjguLmJjM2QzNjEyOTAzYmE5M2U1NGQxZDA2MDk5ZDQxNGE2YzllMjhhNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAg
LTcyLDE2ICs3MiwxNiBAQCB2b2lkIEltYWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENv
bG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkc3RDbwogaW5saW5lIHZvaWQgSW1h
Z2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkKIHsKICAgICBJbnRSZWN0
IGx1bWluYW5jZVJlY3QoSW50UG9pbnQoKSwgaW50ZXJuYWxTaXplKCkpOwotICAgIFJlZlB0cjxC
eXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEobHVtaW5h
bmNlUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5ID0g
Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGx1bWluYW5jZVJlY3QpOwogICAgIAogICAgIHVuc2ln
bmVkIHBpeGVsQXJyYXlMZW5ndGggPSBzcmNQaXhlbEFycmF5LT5sZW5ndGgoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsgcGl4ZWxPZmZzZXQgPCBwaXhlbEFycmF5TGVuZ3Ro
OyBwaXhlbE9mZnNldCArPSA0KSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYSA9IHNyY1BpeGVs
QXJyYXktPmdldChwaXhlbE9mZnNldCArIDMpOworICAgICAgICB1bnNpZ25lZCBjaGFyIGEgPSBz
cmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsT2Zmc2V0ICsgMyk7CiAgICAgICAgIGlmICghYSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB1bnNpZ25lZCBjaGFyIHIgPSBzcmNQaXhlbEFy
cmF5LT5nZXQocGl4ZWxPZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGcgPSBzcmNQaXhl
bEFycmF5LT5nZXQocGl4ZWxPZmZzZXQgKyAxKTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBiID0g
c3JjUGl4ZWxBcnJheS0+Z2V0KHBpeGVsT2Zmc2V0ICsgMik7CisgICAgICAgIHVuc2lnbmVkIGNo
YXIgciA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxPZmZzZXQpOworICAgICAgICB1bnNpZ25l
ZCBjaGFyIGcgPSBzcmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsT2Zmc2V0ICsgMSk7CisgICAgICAg
IHVuc2lnbmVkIGNoYXIgYiA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxPZmZzZXQgKyAyKTsK
ICAgICAgICAgCiAgICAgICAgIGRvdWJsZSBsdW1hID0gKHIgKiAwLjIxMjUgKyBnICogMC43MTU0
ICsgYiAqIDAuMDcyMSkgKiAoKGRvdWJsZSlhIC8gMjU1LjApOwogICAgICAgICBzcmNQaXhlbEFy
cmF5LT5zZXQocGl4ZWxPZmZzZXQgKyAzLCBsdW1hKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGVkODM4N2ZjMzViM2E1MDljMjBjZWEy
ZWZhZjQyNzYwNzA1ZmM2MGEuLmQxOTg4YWI0NzU2MTMxMjc4ZWYxOTVlMzIzMjIzYWIyZGU3OTA5
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aApAQCAtMzgsMTEgKzM4LDExIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckRhdGEuaCIKLSNpbmNsdWRlIDx3
dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTgsMTAgKzk4LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBlbnVtIENvb3JkaW5hdGVTeXN0ZW0geyBM
b2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSwgQmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSB9Owog
Ci0gICAgICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEo
Y29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3Rl
bSkgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRQcmVtdWx0aXBsaWVk
SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmLCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3Jk
aW5hdGVTeXN0ZW0pIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVTeXN0
ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CisgICAgICAgIFBhc3NSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IGdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVj
dCYsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CiAK
LSAgICAgICAgdm9pZCBwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5
KiwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29y
ZGluYXRlU3lzdGVtKTsKKyAgICAgICAgdm9pZCBwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlw
bGllZCwgVWludDhDbGFtcGVkQXJyYXkqLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGlu
YXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pOwogICAgICAgICAKICAgICAgICAg
dm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCAzYjhhOTU2YjBjNjA2
YWQ5MDE1MzgwYTYzOGE3NjhlODlmMzM4MGEwLi4zMGY3N2U4YjgwOGE1NGIyODlkMTkxMTk0MDY4
M2I0YWVmZDRkZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcApAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1clNo
YWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEludFJlY3QgYmx1clJlY3QoSW50UG9pbnQoKSwgdGVtcGxhdGVTaXplKTsKLSAgICBS
ZWZQdHI8Qnl0ZUFycmF5PiBsYXllckRhdGEgPSBtX2xheWVySW1hZ2UtPmdldFVubXVsdGlwbGll
ZEltYWdlRGF0YShibHVyUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBsYXll
ckRhdGEgPSBtX2xheWVySW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShibHVyUmVjdCk7
CiAgICAgYmx1ckxheWVySW1hZ2UobGF5ZXJEYXRhLT5kYXRhKCksIGJsdXJSZWN0LnNpemUoKSwg
Ymx1clJlY3Qud2lkdGgoKSAqIDQpOwogICAgIG1fbGF5ZXJJbWFnZS0+cHV0Qnl0ZUFycmF5KFVu
bXVsdGlwbGllZCwgbGF5ZXJEYXRhLmdldCgpLCBibHVyUmVjdC5zaXplKCksIGJsdXJSZWN0LCBJ
bnRQb2ludCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggYzA2MzE4ZTI1MjUwYjBj
Y2MzOWViOWIxMzNhYjc2OGZjOGVkZGY0NS4uZGMzYjUwZGE4MDExNDQ0ZjdlY2QwZmZjOGEwZTU3
MGFkYzU0NjVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTEzMiwxNyArMTMyLDE0IEBA
IHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0
b3I8aW50PiYgbG9va1VwVGFibGUpCiB9CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVk
PgotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dldF90eXBlKGRhdGEubV9zdXJmYWNlKSA9PSBDQUlS
T19TVVJGQUNFX1RZUEVfSU1BR0UpOwogCi0gICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0ID0g
Qnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAg
IFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CiAgICAgdW5zaWduZWQgY2hh
ciogZGF0YVNyYyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZGF0YS5tX3N1cmZhY2Up
OwogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFEc3QgPSByZXN1bHQtPmRhdGEoKTsKIAotICAgIGlm
IChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IChyZWN0LngoKSArIHJlY3Qud2lkdGgo
KSkgPiBzaXplLndpZHRoKCkgfHwgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSkgPiBzaXplLmhl
aWdodCgpKQotICAgICAgICBtZW1zZXQoZGF0YURzdCwgMCwgcmVzdWx0LT5sZW5ndGgoKSk7Ci0K
ICAgICBpbnQgb3JpZ2lueCA9IHJlY3QueCgpOwogICAgIGludCBkZXN0eCA9IDA7CiAgICAgaWYg
KG9yaWdpbnggPCAwKSB7CkBAIC0xOTAsMTcgKzE4NywxNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJh
eT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0
YSYgZAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVB
cnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0
JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0
JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJldHVybiBnZXRJbWFnZURh
dGE8VW5tdWx0aXBsaWVkPihyZWN0LCBtX2RhdGEsIG1fc2l6ZSk7CiB9CiAKLVBhc3NSZWZQdHI8
Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJ
bnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0
SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplKTsKIH0KIAotdm9p
ZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJh
eSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQordm9p
ZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xh
bXBlZEFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0
ZW0pCiB7CiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9kYXRhLm1fc3VyZmFj
ZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA3ZTkzMGQ1
MjlkYzM3NDI0M2E3NDBiNDBlMWZlNGVmMjAwOGEzZjc2Li4xOTdkOWI0M2E1ZmNmMjUyNDJmZDhm
ZmJhYjk0OThlMzJlNzUxYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQg
SW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0VG9DbGlwLCBjb25zdCBG
bG9hdFJlY3QmIHJlY3QpIGNvCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29u
dGV4dFRvQ2xpcCwgLXJlY3QueCgpLCAtcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKIH0KIAot
UGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVt
KSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVu
bXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVt
IGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dC0+aXNBY2NlbGVy
YXRlZENvbnRleHQoKSkgewogICAgICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0KCktPnBsYXRm
b3JtQ29udGV4dCgpKTsKQEAgLTMxNyw3ICszMTcsNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4g
SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
LAogICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShyZWN0LCBpbnRlcm5hbFNpemUoKSwgbV9jb250
ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCBjb29yZGluYXRlU3lzdGVtID09IExv
Z2ljYWxDb29yZGluYXRlU3lzdGVtID8gbV9yZXNvbHV0aW9uU2NhbGUgOiAxKTsKIH0KIAotUGFz
c1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkg
Y29uc3QKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVt
dWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0g
Y29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBpZiAobV9jb250ZXh0LT5pc0FjY2VsZXJh
dGVkQ29udGV4dCgpKSB7CiAgICAgICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS0+cGxhdGZv
cm1Db250ZXh0KCkpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJ
bWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
CiAgICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHJlY3QsIGludGVybmFsU2l6ZSgpLCBtX2NvbnRl
eHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCBjb29yZGluYXRlU3lzdGVtID09IExv
Z2ljYWxDb29yZGluYXRlU3lzdGVtID8gbV9yZXNvbHV0aW9uU2NhbGUgOiAxKTsKIH0KIAotdm9p
ZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJh
eSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3Jk
aW5hdGVTeXN0ZW0pCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVs
dGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQogewogICAgIGlmICghbV9jb250
ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIG1fZGF0YS5wdXREYXRhKHNv
dXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBpbnRlcm5hbFNpemUoKSwg
bV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlw
bGllZCwgY29vcmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSA/IG1fcmVz
b2x1dGlvblNjYWxlIDogMSk7CkBAIC00NDAsNyArNDQwLDcgQEAgU3RyaW5nIEltYWdlQnVmZmVy
Ojp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5
LCBDb28KICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IHV0aUZyb21NSU1FVHlwZSht
aW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBwcmVt
dWx0aXBsaWVkRGF0YTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxp
ZWREYXRhOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKIAogICAgIGlmIChDRkVx
dWFsKHV0aS5nZXQoKSwganBlZ1VUSSgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCmluZGV4IGRlNDFh
N2RlOTgyMGRjYjYyNDU3OTg3Y2EyYWMwNDk2MTk4YWM2OGQuLjM2NDg4YTdmNzMwMmFkZWU2N2I3
MGE1ZDlmOTFiMjY1ZTA1YWY5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKQEAgLTExNiwxOSArMTE2
LDE3IEBAIHN0YXRpYyB2b2lkIHByZW11bHRpdHBseVNjYW5saW5lKHZvaWQqIGRhdGEsIHNpemVf
dCB0aWxlTnVtYmVyKQogI2VuZGlmIC8vIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RP
UkUpCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEUpCiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJ
bWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNp
emUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSkgY29uc3QKIHsKICAgICBmbG9hdCBhcmVhID0gNC4wZiAqIHJl
Y3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCk7CiAgICAgaWYgKGFyZWEgPiBzdGF0aWNfY2FzdDxm
bG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVhdGUocmVj
dC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiBy
ZWN0LmhlaWdodCgpICogNCk7CiAgICAgdW5zaWduZWQgY2hhciogZGF0YSA9IHJlc3VsdC0+ZGF0
YSgpOwogICAgIAogICAgIGludCBlbmR4ID0gY2VpbGYocmVjdC5tYXhYKCkgKiByZXNvbHV0aW9u
U2NhbGUpOwogICAgIGludCBlbmR5ID0gY2VpbGYocmVjdC5tYXhZKCkgKiByZXNvbHV0aW9uU2Nh
bGUpOwotICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IGVuZHggPiBzaXpl
LndpZHRoKCkgfHwgZW5keSA+IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIG1lbXNldChkYXRhLCAw
LCByZXN1bHQtPmxlbmd0aCgpKTsKICAgICAKICAgICBpbnQgb3JpZ2lueCA9IHJlY3QueCgpOwog
ICAgIGludCBkZXN0eCA9IDA7CkBAIC0zNDIsNyArMzQwLDcgQEAgUGFzc1JlZlB0cjxCeXRlQXJy
YXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRTaXoKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZl
ckRhdGE6OnB1dERhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VT
aXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50
LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5t
dWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCit2b2lkIEltYWdlQnVmZmVyRGF0YTo6
cHV0RGF0YShVaW50OENsYW1wZWRBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVu
bXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewogICAgIEFTU0VSVChzb3VyY2VS
ZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyRGF0YUNHLmgKaW5kZXggNGEwZTc2MTNlMGIwZmIyZDY2YTVmYTY0ZDQ2NmQwZGQzZmQ3MmU2
ZS4uNjIzM2M2YzJjMzE4YjgxMDFjOGZhZGVmZWYxMzMxNjQzMWUzMDA5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFD
Ry5oCkBAIC0yNSwxMCArMjUsMTAgQEAKICAqLwogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNs
dWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogI2lmIChQTEFURk9STShNQUMpICYm
IFVTRShDQSkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fU05PV19MRU9QQVJEKSkKICNkZWZpbmUgV1RGX1VTRV9JT1NVUkZBQ0VfQ0FOVkFT
X0JBQ0tJTkdfU1RPUkUgMQpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgbXV0YWJsZSBk
b3VibGUgbV9sYXN0Rmx1c2hUaW1lOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPEJ5dGVBcnJh
eT4gZ2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29s
IGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpIGNvbnN0OwotICAgIHZvaWQgcHV0RGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvbnN0
IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJl
bmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CisgICAg
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0RGF0YShjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSkgY29uc3Q7CisgICAgdm9pZCBwdXREYXRhKFVpbnQ4Q2xh
bXBlZEFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXpl
JiwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4
IDUzMDYzNmRhOTg2NDcxZGJmYTEzNzE4Y2UyMjNhYjNhOTVkNzk3ZjIuLmFhNzMzZDkwZjE5NjJk
NjRjMDViNzFkNzczZTAyZGEwZGZiMTEzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtMzEsNyArMzEsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAK
LSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFy
cmF5Lmg+CiAKIHR5cGVkZWYgdW5zaWduZWQgY2hhciAoKkJsZW5kVHlwZSkodW5zaWduZWQgY2hh
ciBjb2xvckEsIHVuc2lnbmVkIGNoYXIgY29sb3JCLCB1bnNpZ25lZCBjaGFyIGFscGhhQSwgdW5z
aWduZWQgY2hhciBhbHBoYUIpOwogCkBAIC05NCwyNCArOTQsMjQgQEAgdm9pZCBGRUJsZW5kOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEFTU0VSVChtX21vZGUgPiBGRUJMRU5EX01PREVf
VU5LTk9XTik7CiAgICAgQVNTRVJUKG1fbW9kZSA8PSBGRUJMRU5EX01PREVfTElHSFRFTik7CiAK
LSAgICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQoKTsKKyAgICBVaW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVBy
ZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogICAgIGlmICghZHN0UGl4ZWxBcnJheSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBlZmZlY3RBRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRS
ZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQ
dHI8Qnl0ZUFycmF5PiBzcmNQaXhlbEFycmF5QSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShl
ZmZlY3RBRHJhd2luZ1JlY3QpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4
ZWxBcnJheUEgPSBpbi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsK
IAogICAgIEludFJlY3QgZWZmZWN0QkRyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1
dEltYWdlRGF0YShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIFJlZlB0cjxCeXRlQXJy
YXk+IHNyY1BpeGVsQXJyYXlCID0gaW4yLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RCRHJh
d2luZ1JlY3QpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUIg
PSBpbjItPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEJEcmF3aW5nUmVjdCk7CiAKICAgICB1
bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gc3JjUGl4ZWxBcnJheUEtPmxlbmd0aCgpOwogICAg
IEFTU0VSVChwaXhlbEFycmF5TGVuZ3RoID09IHNyY1BpeGVsQXJyYXlCLT5sZW5ndGgoKSk7CiAg
ICAgZm9yICh1bnNpZ25lZCBwaXhlbE9mZnNldCA9IDA7IHBpeGVsT2Zmc2V0IDwgcGl4ZWxBcnJh
eUxlbmd0aDsgcGl4ZWxPZmZzZXQgKz0gNCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhh
QSA9IHNyY1BpeGVsQXJyYXlBLT5nZXQocGl4ZWxPZmZzZXQgKyAzKTsKLSAgICAgICAgdW5zaWdu
ZWQgY2hhciBhbHBoYUIgPSBzcmNQaXhlbEFycmF5Qi0+Z2V0KHBpeGVsT2Zmc2V0ICsgMyk7Cisg
ICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFBID0gc3JjUGl4ZWxBcnJheUEtPml0ZW0ocGl4ZWxP
ZmZzZXQgKyAzKTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYUIgPSBzcmNQaXhlbEFycmF5
Qi0+aXRlbShwaXhlbE9mZnNldCArIDMpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWwg
PSAwOyBjaGFubmVsIDwgMzsgKytjaGFubmVsKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGNvbG9yQSA9IHNyY1BpeGVsQXJyYXlBLT5nZXQocGl4ZWxPZmZzZXQgKyBjaGFubmVsKTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sb3JCID0gc3JjUGl4ZWxBcnJheUItPmdldChwaXhl
bE9mZnNldCArIGNoYW5uZWwpOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2xvckEgPSBz
cmNQaXhlbEFycmF5QS0+aXRlbShwaXhlbE9mZnNldCArIGNoYW5uZWwpOworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBjb2xvckIgPSBzcmNQaXhlbEFycmF5Qi0+aXRlbShwaXhlbE9mZnNldCAr
IGNoYW5uZWwpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciByZXN1bHQ7CiAKICAgICAgICAg
ICAgIHN3aXRjaCAobV9tb2RlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAppbmRleCAwMGI2MDBhYmRh
YTk4YzU1NTZmOGM1ZmQ1YjhjOGQ1NDY2MTU2NjBkLi5iZDQyMTJkMGI1ODdiNjA1ZDkwNTkwNmRi
ZGQ3ZjkxOTQ1ZWJhOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKQEAgLTMwLDggKzMwLDggQEAK
ICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgog
Ci0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTI1LDE0ICsxMjUsMTQgQEAgaW5saW5lIHZvaWQgbHVtaW5hbmNlKGRvdWJsZSYg
cmVkLCBkb3VibGUmIGdyZWVuLCBkb3VibGUmIGJsdWUsIGRvdWJsZSYgYWxwaGEpCiB9CiAKIHRl
bXBsYXRlPENvbG9yTWF0cml4VHlwZSBmaWx0ZXJUeXBlPgotdm9pZCBlZmZlY3RUeXBlKEJ5dGVB
cnJheSogcGl4ZWxBcnJheSwgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQordm9pZCBlZmZl
Y3RUeXBlKFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFycmF5LCBjb25zdCBWZWN0b3I8ZmxvYXQ+
JiB2YWx1ZXMpCiB7CiAgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHBpeGVsQXJyYXkt
Pmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgcGl4ZWxCeXRlT2Zmc2V0ID0gMDsgcGl4ZWxC
eXRlT2Zmc2V0IDwgcGl4ZWxBcnJheUxlbmd0aDsgcGl4ZWxCeXRlT2Zmc2V0ICs9IDQpIHsKLSAg
ICAgICAgZG91YmxlIHJlZCA9IHBpeGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQpOwotICAg
ICAgICBkb3VibGUgZ3JlZW4gPSBwaXhlbEFycmF5LT5nZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMSk7
Ci0gICAgICAgIGRvdWJsZSBibHVlID0gcGl4ZWxBcnJheS0+Z2V0KHBpeGVsQnl0ZU9mZnNldCAr
IDIpOwotICAgICAgICBkb3VibGUgYWxwaGEgPSBwaXhlbEFycmF5LT5nZXQocGl4ZWxCeXRlT2Zm
c2V0ICsgMyk7CisgICAgICAgIGRvdWJsZSByZWQgPSBwaXhlbEFycmF5LT5pdGVtKHBpeGVsQnl0
ZU9mZnNldCk7CisgICAgICAgIGRvdWJsZSBncmVlbiA9IHBpeGVsQXJyYXktPml0ZW0ocGl4ZWxC
eXRlT2Zmc2V0ICsgMSk7CisgICAgICAgIGRvdWJsZSBibHVlID0gcGl4ZWxBcnJheS0+aXRlbShw
aXhlbEJ5dGVPZmZzZXQgKyAyKTsKKyAgICAgICAgZG91YmxlIGFscGhhID0gcGl4ZWxBcnJheS0+
aXRlbShwaXhlbEJ5dGVPZmZzZXQgKyAzKTsKIAogICAgICAgICBzd2l0Y2ggKGZpbHRlclR5cGUp
IHsKICAgICAgICAgICAgIGNhc2UgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWDoKQEAgLTE2Nyw3
ICsxNjcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVm
ZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4t
PmFic29sdXRlUGFpbnRSZWN0KCkpKTsKIAogICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50
KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBw
aXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJl
Y3QpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IHJlc3VsdElt
YWdlLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VSZWN0KTsKIAogICAgIHN3aXRjaCAo
bV90eXBlKSB7CiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuY3BwCmluZGV4IDhkYjYyZGM0ZDRiZmI1NjZkNzgwYzMyNjE0ZDU2
YjZlY2NmZmJlNjcuLjY1MWJhYzJlMTg1ODM5ZTcwOGZiYjBhZTUxZTdkNzgyMzBmMzhjOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b25lbnRUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1
ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNs
dWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgRkVD
b21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKICAgICBGaWx0ZXJF
ZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKLSAgICBCeXRlQXJyYXkqIHBpeGVsQXJyYXkg
PSBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5
KiBwaXhlbEFycmF5ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAo
IXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQg
RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB1bnNpZ25l
ZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBwaXhlbE9mZnNldCA9IDA7IHBpeGVsT2Zmc2V0IDwgcGl4ZWxBcnJheUxlbmd0aDsgcGl4
ZWxPZmZzZXQgKz0gNCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWwgPSAwOyBjaGFu
bmVsIDwgNDsgKytjaGFubmVsKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwaXhl
bEFycmF5LT5nZXQocGl4ZWxPZmZzZXQgKyBjaGFubmVsKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgYyA9IHBpeGVsQXJyYXktPml0ZW0ocGl4ZWxPZmZzZXQgKyBjaGFubmVsKTsKICAgICAg
ICAgICAgIHBpeGVsQXJyYXktPnNldChwaXhlbE9mZnNldCArIGNoYW5uZWwsIHRhYmxlc1tjaGFu
bmVsXVtjXSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4IDViZTIyZjhl
MjlkZWJhNTg0ZDI0YmExZjJkY2NlODc5ODk0NWFiZmMuLjU3MTAxYWY3ZjA0MzI4ODAxYmYzZWU5
MzE2ZGRmMWM1ODZmYjZiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAot
I2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJy
YXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGFyaXRobWV0aWNTb2Z0d2FyZSh1bnNpZ25lZCBjaGFyKiBzb3VyY2UsIHVu
c2lnbmVkIGNoYXIqIGRlc3QKICAgICBjb21wdXRlQXJpdGhtZXRpY1BpeGVsczwxLCAxLCAxLCAx
Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbEFycmF5TGVuZ3RoLCBrMSwgazIsIGszLCBrNCk7
CiB9CiAKLWlubGluZSB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0d2Fy
ZShCeXRlQXJyYXkqIHNvdXJjZSwgQnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwKK2lubGluZSB2b2lk
IEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShVaW50OENsYW1wZWRBcnJh
eSogc291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sCiAgICAgZmxvYXQgazEs
IGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCiB7CiAgICAgaW50IGxlbmd0aCA9IHNvdXJj
ZS0+bGVuZ3RoKCk7CkBAIC0yMjEsMTIgKzIyMSwxMiBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3Qo
MSk7CiAKICAgICBpZiAobV90eXBlID09IEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMp
IHsKLSAgICAgICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0KCk7CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5
ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgICAgIGlmICghZHN0UGl4
ZWxBcnJheSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBJbnRSZWN0IGVmZmVjdEFE
cmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRl
UGFpbnRSZWN0KCkpOwotICAgICAgICBSZWZQdHI8Qnl0ZUFycmF5PiBzcmNQaXhlbEFycmF5ID0g
aW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEFEcmF3aW5nUmVjdCk7CisgICAgICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheSA9IGluLT5hc1ByZW11bHRpcGxp
ZWRJbWFnZShlZmZlY3RBRHJhd2luZ1JlY3QpOwogCiAgICAgICAgIEludFJlY3QgZWZmZWN0QkRy
YXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpOwogICAgICAgICBpbjItPmNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoZHN0UGl4
ZWxBcnJheSwgZWZmZWN0QkRyYXdpbmdSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAppbmRleCAyNGJhMzA3OGYx
ZTNiZDU4OGM1OTlhMzE4MDQ4NzRiNzFlNjZhM2U3Li40MjY5NWY2YzJiZjg0NmE5NzQzZTg4NTk0
Y2M4NmQ2NDViOWQ5NDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCkBAIC03NCw3ICs3NCw3IEBAIHByb3RlY3Rl
ZDoKIHByaXZhdGU6CiAgICAgRkVDb21wb3NpdGUoRmlsdGVyKiwgY29uc3QgQ29tcG9zaXRlT3Bl
cmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKIAotICAgIGlubGluZSB2
b2lkIHBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3YXJlKEJ5dGVBcnJheSogc291cmNlLCBCeXRlQXJy
YXkqIGRlc3RpbmF0aW9uLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7
CisgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUoVWludDhDbGFtcGVk
QXJyYXkqIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBmbG9hdCBrMSwg
ZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1B
cml0aG1ldGljTmVvbih1bnNpZ25lZCBjaGFyKiBzb3VyY2UsIHVuc2lnbmVkICBjaGFyKiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCwgZmxvYXQqIGtBcnJheSk7CiAKICAg
ICBDb21wb3NpdGVPcGVyYXRpb25UeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3Bw
CmluZGV4IGNkYTVmMTkzZTQ0NWVlNTIxNGE0MWJmYjVhY2M0ZmIxOTkwMGM1MTguLjA2NTFlMmRl
ZDVlMDNjYWUxZWJkODY1NDcyYzhhZGM4NWM3MDZiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4
LmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNp
bmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL1BhcmFsbGVsSm9icy5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJh
eS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIyMywxNCArMjIzLDE0IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIGNoYXIgY2xhbXBSR0JBVmFsdWUoZmxvYXQgY2hhbm5l
bCwgdW5zaWduZWQgY2hhciBtCiB9CiAKIHRlbXBsYXRlPGJvb2wgcHJlc2VydmVBbHBoYVZhbHVl
cz4KLUFMV0FZU19JTkxJTkUgdm9pZCBzZXREZXN0aW5hdGlvblBpeGVscyhCeXRlQXJyYXkqIGlt
YWdlLCBpbnQmIHBpeGVsLCBmbG9hdCogdG90YWxzLCBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFz
LCBCeXRlQXJyYXkqIHNyYykKK0FMV0FZU19JTkxJTkUgdm9pZCBzZXREZXN0aW5hdGlvblBpeGVs
cyhVaW50OENsYW1wZWRBcnJheSogaW1hZ2UsIGludCYgcGl4ZWwsIGZsb2F0KiB0b3RhbHMsIGZs
b2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmMpCiB7CiAgICAg
dW5zaWduZWQgY2hhciBtYXhBbHBoYSA9IHByZXNlcnZlQWxwaGFWYWx1ZXMgPyAyNTUgOiBjbGFt
cFJHQkFWYWx1ZSh0b3RhbHNbM10gLyBkaXZpc29yICsgYmlhcyk7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCAzOyArK2kpCiAgICAgICAgIGltYWdlLT5zZXQocGl4ZWwrKywgY2xhbXBSR0JBVmFs
dWUodG90YWxzW2ldIC8gZGl2aXNvciArIGJpYXMsIG1heEFscGhhKSk7CiAKICAgICBpZiAocHJl
c2VydmVBbHBoYVZhbHVlcykgewotICAgICAgICBpbWFnZS0+c2V0KHBpeGVsLCBzcmMtPmdldChw
aXhlbCkpOworICAgICAgICBpbWFnZS0+c2V0KHBpeGVsLCBzcmMtPml0ZW0ocGl4ZWwpKTsKICAg
ICAgICAgKytwaXhlbDsKICAgICB9IGVsc2UKICAgICAgICAgaW1hZ2UtPnNldChwaXhlbCsrLCBt
YXhBbHBoYSk7CkBAIC0yNjcsMTEgKzI2NywxMSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgRkVDb252
b2x2ZU1hdHJpeDo6ZmFzdFNldEludGVyaW9yUGl4ZWxzKFBhaW50aW5nRGF0YSYgcGFpbnRpbgog
ICAgICAgICAgICAgICAgIHRvdGFsc1szXSA9IDA7CiAKICAgICAgICAgICAgIHdoaWxlIChrZXJu
ZWxWYWx1ZSA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgdG90YWxzWzBdICs9IG1fa2VybmVsTWF0
cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4
ZWxBcnJheS0+Z2V0KGtlcm5lbFBpeGVsKyspKTsKLSAgICAgICAgICAgICAgICB0b3RhbHNbMV0g
Kz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50
aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5nZXQoa2VybmVsUGl4ZWwrKykpOwotICAgICAgICAgICAg
ICAgIHRvdGFsc1syXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2Fz
dDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPmdldChrZXJuZWxQaXhlbCsrKSk7
CisgICAgICAgICAgICAgICAgdG90YWxzWzBdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVl
XSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRlbShr
ZXJuZWxQaXhlbCsrKSk7CisgICAgICAgICAgICAgICAgdG90YWxzWzFdICs9IG1fa2VybmVsTWF0
cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4
ZWxBcnJheS0+aXRlbShrZXJuZWxQaXhlbCsrKSk7CisgICAgICAgICAgICAgICAgdG90YWxzWzJd
ICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWlu
dGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRlbShrZXJuZWxQaXhlbCsrKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFwcmVzZXJ2ZUFscGhhVmFsdWVzKQotICAgICAgICAgICAgICAgICAgICB0b3Rh
bHNbM10gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5nZXQoa2VybmVsUGl4ZWwpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdG90YWxzWzNdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0
YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRlbShrZXJuZWxQ
aXhlbCkpOwogICAgICAgICAgICAgICAgICsra2VybmVsUGl4ZWw7CiAgICAgICAgICAgICAgICAg
LS1rZXJuZWxWYWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoIS0td2lkdGgpIHsKQEAgLTM1MCwx
MiArMzUwLDEyIEBAIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6ZmFzdFNldE91dGVyUGl4ZWxzKFBh
aW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBpbnQgeDEsIGluCiAgICAgICAgICAgICB3aGlsZSAo
a2VybmVsVmFsdWUgPj0gMCkgewogICAgICAgICAgICAgICAgIGludCBwaXhlbEluZGV4ID0gZ2V0
UGl4ZWxWYWx1ZShwYWludGluZ0RhdGEsIGtlcm5lbFBpeGVsWCwga2VybmVsUGl4ZWxZKTsKICAg
ICAgICAgICAgICAgICBpZiAocGl4ZWxJbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHRvdGFsc1swXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxm
bG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPmdldChwaXhlbEluZGV4KSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHRvdGFsc1sxXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0g
KiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPmdldChwaXhl
bEluZGV4ICsgMSkpOwotICAgICAgICAgICAgICAgICAgICB0b3RhbHNbMl0gKz0gbV9rZXJuZWxN
YXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQ
aXhlbEFycmF5LT5nZXQocGl4ZWxJbmRleCArIDIpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90
YWxzWzBdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0
PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbEluZGV4KSk7CisgICAgICAg
ICAgICAgICAgICAgIHRvdGFsc1sxXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBz
dGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxJ
bmRleCArIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxzWzJdICs9IG1fa2VybmVsTWF0
cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4
ZWxBcnJheS0+aXRlbShwaXhlbEluZGV4ICsgMikpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBpZiAoIXByZXNlcnZlQWxwaGFWYWx1ZXMgJiYgcGl4ZWxJbmRleCA+PSAwKQot
ICAgICAgICAgICAgICAgICAgICB0b3RhbHNbM10gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFs
dWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5nZXQo
cGl4ZWxJbmRleCArIDMpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxzWzNdICs9IG1fa2Vy
bmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEu
c3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbEluZGV4ICsgMykpOwogICAgICAgICAgICAgICAgICsr
a2VybmVsUGl4ZWxYOwogICAgICAgICAgICAgICAgIC0ta2VybmVsVmFsdWU7CiAgICAgICAgICAg
ICAgICAgaWYgKCEtLXdpZHRoKSB7CkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBGRUNvbnZvbHZl
TWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVjdCogaW4g
PSBpbnB1dEVmZmVjdCgwKTsKIAotICAgIEJ5dGVBcnJheSogcmVzdWx0SW1hZ2U7CisgICAgVWlu
dDhDbGFtcGVkQXJyYXkqIHJlc3VsdEltYWdlOwogICAgIGlmIChtX3ByZXNlcnZlQWxwaGEpCiAg
ICAgICAgIHJlc3VsdEltYWdlID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAg
ICBlbHNlCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogCiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5nUmVjdCA9IHJlcXVl
c3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogCi0g
ICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheTsKKyAgICBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IHNyY1BpeGVsQXJyYXk7CiAgICAgaWYgKG1fcHJlc2VydmVBbHBoYSkKICAgICAg
ICAgc3JjUGl4ZWxBcnJheSA9IGluLT5hc1VubXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdS
ZWN0KTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCmluZGV4IDM0YmFmNmYxN2UyZjVm
MDI5Njc0Y2QyODI1ODkwNTQzYzFiMzcyNDUuLjI1MDYxM2ZiNDYzODZlYjU1NTVjYWYzOGUyOWY4
YjNlODg2M2VkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCkBAIC04Miw4ICs4Miw4IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgUGFpbnRpbmdEYXRhIHsKLSAgICAgICAgQnl0
ZUFycmF5KiBzcmNQaXhlbEFycmF5OwotICAgICAgICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXk7
CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5OworICAgICAgICBVaW50
OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheTsKICAgICAgICAgaW50IHdpZHRoOwogICAgICAg
ICBpbnQgaGVpZ2h0OwogICAgICAgICBmbG9hdCBiaWFzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApp
bmRleCA4ZmFmZTA0MjBjMTkyOGRiYzExMzdiMzRjOTY5MjJhMDI4OTU3OTE1Li44OTIyM2JiMTli
NTEyNmI5ZTdiNzc2ZWQ4MTdjOTI0NTFjOTU1ZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApA
QCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgogCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorI2luY2x1
ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTk1LDEzICs5NSwxMyBAQCBQYXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBGRUN1c3RvbUZpbHRl
cjo6Y3JlYXRlKEZpbHRlciogZmlsdGVyLCBIb3N0V2luZG93KiBobwogCiB2b2lkIEZFQ3VzdG9t
RmlsdGVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogewotICAgIEJ5dGVBcnJheSogZHN0UGl4
ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xh
bXBlZEFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
KCk7CiAgICAgaWYgKCFkc3RQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKICAgICBGaWx0
ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5n
UmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVt
dWx0aXBsaWVkSW1hZ2UoZWZmZWN0RHJhd2luZ1JlY3QpOworICAgIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gc3JjUGl4ZWxBcnJheSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RE
cmF3aW5nUmVjdCk7CiAgICAgCiAgICAgSW50U2l6ZSBuZXdDb250ZXh0U2l6ZShlZmZlY3REcmF3
aW5nUmVjdC5zaXplKCkpOwogICAgIGJvb2wgaGFkQ29udGV4dCA9IG1fY29udGV4dDsKQEAgLTEy
OSw3ICsxMjksNyBAQCB2b2lkIEZFQ3VzdG9tRmlsdGVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CiAKICAgICBSZWZQdHI8SW1hZ2VEYXRh
PiBpbWFnZURhdGEgPSBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRh
KG1fZHJhd2luZ0J1ZmZlci5nZXQoKSk7Ci0gICAgQnl0ZUFycmF5KiBncHVSZXN1bHQgPSBpbWFn
ZURhdGEtPmRhdGEoKS0+ZGF0YSgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBncHVSZXN1bHQg
PSBpbWFnZURhdGEtPmRhdGEoKTsKICAgICBBU1NFUlQoZ3B1UmVzdWx0LT5sZW5ndGgoKSA9PSBk
c3RQaXhlbEFycmF5LT5sZW5ndGgoKSk7CiAgICAgbWVtY3B5KGRzdFBpeGVsQXJyYXktPmRhdGEo
KSwgZ3B1UmVzdWx0LT5kYXRhKCksIGdwdVJlc3VsdC0+bGVuZ3RoKCkpOwogfQpAQCAtMjA5LDcg
KzIwOSw3IEBAIHZvaWQgRkVDdXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFtUGFyYW1ldGVycygpCiAg
ICAgfQogfQogCi12b2lkIEZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoQnl0
ZUFycmF5KiBzcmNQaXhlbEFycmF5KQordm9pZCBGRUN1c3RvbUZpbHRlcjo6YmluZFByb2dyYW1B
bmRCdWZmZXJzKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5KQogewogICAgIG1fY29u
dGV4dC0+dXNlUHJvZ3JhbShtX3NoYWRlci0+cHJvZ3JhbSgpKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuaAppbmRleCA0OTZmMDQ0YzI4MzNlODNjOTUwYzM2MjA1ZWJiYzY5ZmQzNWQ1ZGQxLi41ZjVm
MDI3NjhmYTFhYzQwZTBjY2I4NWY4MjQwZDdlMjA0OGZjN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5o
CkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKLWNsYXNzIEJ5dGVBcnJheTsKK2NsYXNzIFVpbnQ4Q2xhbXBlZEFycmF5OwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBi
aW5kVmVydGV4QXR0cmlidXRlKGludCBhdHRyaWJ1dGVMb2NhdGlvbiwgdW5zaWduZWQgc2l6ZSwg
dW5zaWduZWQmIG9mZnNldCk7CiAgICAgdm9pZCBiaW5kUHJvZ3JhbU51bWJlclBhcmFtZXRlcnMo
aW50IHVuaWZvcm1Mb2NhdGlvbiwgQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKik7CiAgICAg
dm9pZCBiaW5kUHJvZ3JhbVBhcmFtZXRlcnMoKTsKLSAgICB2b2lkIGJpbmRQcm9ncmFtQW5kQnVm
ZmVycyhCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXkpOworICAgIHZvaWQgYmluZFByb2dyYW1BbmRC
dWZmZXJzKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5KTsKICAgICAKICAgICBIb3N0
V2luZG93KiBtX2hvc3RXaW5kb3c7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCmlu
ZGV4IGIwZWFjNDQ5YTY3MmE0ZTIwZTgyZjlmN2NhZmIyZWM2ZDE2OThiY2YuLjdmNTU0YWE4NDlk
ZDliZDE3MDljZWI4YzExZTUyMTA1NzZmMmYxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAu
Y3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2lu
Y2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KKyNpbmNs
dWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC05NiwxNSArOTYsMTUgQEAgdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBBU1NFUlQobV94Q2hhbm5lbFNlbGVjdG9yICE9IENIQU5ORUxfVU5LTk9X
Tik7CiAgICAgQVNTRVJUKG1feUNoYW5uZWxTZWxlY3RvciAhPSBDSEFOTkVMX1VOS05PV04pOwog
Ci0gICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQ
cmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEludFJlY3QgZWZmZWN0QURyYXdpbmdSZWN0ID0gcmVxdWVzdGVk
UmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgUmVm
UHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheUEgPSBpbi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2Uo
ZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHNyY1Bp
eGVsQXJyYXlBID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEFEcmF3aW5nUmVjdCk7
CiAKICAgICBJbnRSZWN0IGVmZmVjdEJEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5w
dXRJbWFnZURhdGEoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQdHI8Qnl0ZUFy
cmF5PiBzcmNQaXhlbEFycmF5QiA9IGluMi0+YXNVbm11bHRpcGxpZWRJbWFnZShlZmZlY3RCRHJh
d2luZ1JlY3QpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUIg
PSBpbjItPmFzVW5tdWx0aXBsaWVkSW1hZ2UoZWZmZWN0QkRyYXdpbmdSZWN0KTsKIAogICAgIEFT
U0VSVChzcmNQaXhlbEFycmF5QS0+bGVuZ3RoKCkgPT0gc3JjUGl4ZWxBcnJheUItPmxlbmd0aCgp
KTsKIApAQCAtMTE5LDEzICsxMTksMTMgQEAgdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgaW50IGxpbmUgPSB5ICogc3RyaWRlOwogICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IHBhaW50U2l6ZS53aWR0aCgpOyArK3gpIHsKICAgICAgICAg
ICAgIGludCBkc3RJbmRleCA9IGxpbmUgKyB4ICogNDsKLSAgICAgICAgICAgIGludCBzcmNYID0g
eCArIHN0YXRpY19jYXN0PGludD4oc2NhbGVYICogc3JjUGl4ZWxBcnJheUItPmdldChkc3RJbmRl
eCArIG1feENoYW5uZWxTZWxlY3RvciAtIDEpICsgc2NhbGVBZGp1c3RtZW50WCk7Ci0gICAgICAg
ICAgICBpbnQgc3JjWSA9IHkgKyBzdGF0aWNfY2FzdDxpbnQ+KHNjYWxlWSAqIHNyY1BpeGVsQXJy
YXlCLT5nZXQoZHN0SW5kZXggKyBtX3lDaGFubmVsU2VsZWN0b3IgLSAxKSArIHNjYWxlQWRqdXN0
bWVudFkpOworICAgICAgICAgICAgaW50IHNyY1ggPSB4ICsgc3RhdGljX2Nhc3Q8aW50PihzY2Fs
ZVggKiBzcmNQaXhlbEFycmF5Qi0+aXRlbShkc3RJbmRleCArIG1feENoYW5uZWxTZWxlY3RvciAt
IDEpICsgc2NhbGVBZGp1c3RtZW50WCk7CisgICAgICAgICAgICBpbnQgc3JjWSA9IHkgKyBzdGF0
aWNfY2FzdDxpbnQ+KHNjYWxlWSAqIHNyY1BpeGVsQXJyYXlCLT5pdGVtKGRzdEluZGV4ICsgbV95
Q2hhbm5lbFNlbGVjdG9yIC0gMSkgKyBzY2FsZUFkanVzdG1lbnRZKTsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCA0OyArK2NoYW5uZWwpIHsKICAgICAg
ICAgICAgICAgICBpZiAoc3JjWCA8IDAgfHwgc3JjWCA+PSBwYWludFNpemUud2lkdGgoKSB8fCBz
cmNZIDwgMCB8fCBzcmNZID49IHBhaW50U2l6ZS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAg
ICAgZHN0UGl4ZWxBcnJheS0+c2V0KGRzdEluZGV4ICsgY2hhbm5lbCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oMCkpOwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsVmFsdWUgPSBzcmNQaXhlbEFycmF5QS0+Z2V0KHNyY1kg
KiBzdHJpZGUgKyBzcmNYICogNCArIGNoYW5uZWwpOworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIHBpeGVsVmFsdWUgPSBzcmNQaXhlbEFycmF5QS0+aXRlbShzcmNZICogc3RyaWRl
ICsgc3JjWCAqIDQgKyBjaGFubmVsKTsKICAgICAgICAgICAgICAgICAgICAgZHN0UGl4ZWxBcnJh
eS0+c2V0KGRzdEluZGV4ICsgY2hhbm5lbCwgcGl4ZWxWYWx1ZSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4IDNkZDVhMjc2Mzc4Y2Q5MmQx
MDE2N2RhYWY5MTU3MTBlN2RjM2JmNDguLjM0OTk3ZjYxMzQ0NDc2Y2ZhOTE4YjE5NDQ5MWNhOWRk
NzZlNmRjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRl
ICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgRkVEcm9wU2hhZG93
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgLy8gVE9ETzogRGlyZWN0IHBpeGVsIGFj
Y2VzcyB0byBJbWFnZUJ1ZmZlciB3b3VsZCBhdm9pZCBjb3B5aW5nIHRoZSBJbWFnZURhdGEuCiAg
ICAgSW50UmVjdCBzaGFkb3dBcmVhKEludFBvaW50KCksIHJlc3VsdEltYWdlLT5pbnRlcm5hbFNp
emUoKSk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheSA9IHJlc3VsdEltYWdl
LT5nZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKHNoYWRvd0FyZWEpOworICAgIFJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRQcmVtdWx0aXBs
aWVkSW1hZ2VEYXRhKHNoYWRvd0FyZWEpOwogCiAgICAgY29udGV4dFNoYWRvdy5ibHVyTGF5ZXJJ
bWFnZShzcmNQaXhlbEFycmF5LT5kYXRhKCksIHNoYWRvd0FyZWEuc2l6ZSgpLCA0ICogc2hhZG93
QXJlYS5zaXplKCkud2lkdGgoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggMDI3NjQy
YmU3MWE3Nzk0MGMwMzg4NGFiYThmY2Y1ZDEwY2UwZmU2OS4uY2Y0OWZjOGY1ZmIxMmFlYTg3Y2Zl
ZWNkZDk0ODVkMjdiM2JhYTE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTMzLDkgKzMz
LDkgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgogCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9icy5oPgorI2luY2x1ZGUgPHd0Zi9VaW50
OENsYW1wZWRBcnJheS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC04MCw3ICs4MCw3
IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblkoZmxvYXQgeSkKICAgICBt
X3N0ZFkgPSB5OwogfQogCi1pbmxpbmUgdm9pZCBib3hCbHVyKEJ5dGVBcnJheSogc3JjUGl4ZWxB
cnJheSwgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5LAoraW5saW5lIHZvaWQgYm94Qmx1cihVaW50
OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVs
QXJyYXksCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGR4LCBpbnQgZHhMZWZ0LCBpbnQg
ZHhSaWdodCwgaW50IHN0cmlkZSwgaW50IHN0cmlkZUxpbmUsIGludCBlZmZlY3RXaWR0aCwgaW50
IGVmZmVjdEhlaWdodCwgYm9vbCBhbHBoYUltYWdlKQogewogICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgZWZmZWN0SGVpZ2h0OyArK3kpIHsKQEAgLTkwLDE2ICs5MCwxNiBAQCBpbmxpbmUgdm9pZCBi
b3hCbHVyKEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5
LAogICAgICAgICAgICAgLy8gRmlsbCB0aGUga2VybmVsCiAgICAgICAgICAgICBpbnQgbWF4S2Vy
bmVsU2l6ZSA9IG1pbihkeFJpZ2h0LCBlZmZlY3RXaWR0aCk7CiAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG1heEtlcm5lbFNpemU7ICsraSkKLSAgICAgICAgICAgICAgICBzdW0gKz0g
c3JjUGl4ZWxBcnJheS0+Z2V0KGxpbmUgKyBpICogc3RyaWRlICsgY2hhbm5lbCk7CisgICAgICAg
ICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPml0ZW0obGluZSArIGkgKiBzdHJpZGUgKyBj
aGFubmVsKTsKIAogICAgICAgICAgICAgLy8gQmx1cnJpbmcKICAgICAgICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgZWZmZWN0V2lkdGg7ICsreCkgewogICAgICAgICAgICAgICAgIGludCBwaXhl
bEJ5dGVPZmZzZXQgPSBsaW5lICsgeCAqIHN0cmlkZSArIGNoYW5uZWw7CiAgICAgICAgICAgICAg
ICAgZHN0UGl4ZWxBcnJheS0+c2V0KHBpeGVsQnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oc3VtIC8gZHgpKTsKICAgICAgICAgICAgICAgICBpZiAoeCA+PSBkeExlZnQpCi0g
ICAgICAgICAgICAgICAgICAgIHN1bSAtPSBzcmNQaXhlbEFycmF5LT5nZXQocGl4ZWxCeXRlT2Zm
c2V0IC0gZHhMZWZ0ICogc3RyaWRlKTsKKyAgICAgICAgICAgICAgICAgICAgc3VtIC09IHNyY1Bp
eGVsQXJyYXktPml0ZW0ocGl4ZWxCeXRlT2Zmc2V0IC0gZHhMZWZ0ICogc3RyaWRlKTsKICAgICAg
ICAgICAgICAgICBpZiAoeCArIGR4UmlnaHQgPCBlZmZlY3RXaWR0aCkKLSAgICAgICAgICAgICAg
ICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQgKyBkeFJpZ2h0
ICogc3RyaWRlKTsKKyAgICAgICAgICAgICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPml0
ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgZHhSaWdodCAqIHN0cmlkZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoYWxwaGFJbWFnZSkgLy8gU291cmNlIGltYWdlIGlzIGJsYWNrLCBpdCBq
dXN0IGhhcyBkaWZmZXJlbnQgYWxwaGEgdmFsdWVzCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMDcsMTUgKzEwNywxNSBAQCBpbmxpbmUgdm9pZCBib3hCbHVyKEJ5dGVBcnJheSogc3JjUGl4
ZWxBcnJheSwgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5LAogICAgIH0KIH0KIAotaW5saW5lIHZv
aWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlHZW5lcmljKEJ5dGVBcnJheSogc3JjUGl4
ZWxBcnJheSwgQnl0ZUFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwg
dW5zaWduZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSkKK2lubGluZSB2b2lkIEZF
R2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyhVaW50OENsYW1wZWRBcnJheSogc3Jj
UGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtl
cm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKQogewog
ICAgIGludCBzdHJpZGUgPSA0ICogcGFpbnRTaXplLndpZHRoKCk7CiAgICAgaW50IGR4TGVmdCA9
IDA7CiAgICAgaW50IGR4UmlnaHQgPSAwOwogICAgIGludCBkeUxlZnQgPSAwOwogICAgIGludCBk
eVJpZ2h0ID0gMDsKLSAgICBCeXRlQXJyYXkqIHNyYyA9IHNyY1BpeGVsQXJyYXk7Ci0gICAgQnl0
ZUFycmF5KiBkc3QgPSB0bXBQaXhlbEFycmF5OworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmMg
PSBzcmNQaXhlbEFycmF5OworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3QgPSB0bXBQaXhlbEFy
cmF5OwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgICAgaWYgKGtl
cm5lbFNpemVYKSB7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxh
dGZvcm1BcHBseVdvcmtlcihQbGF0Zm9ybUFwcGx5UGFyYW1ldGVycyogcGFyYW1ldGVycykKICNl
bmRpZgogfQogCi1pbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseShCeXRl
QXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQg
a2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpCitp
bmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseShVaW50OENsYW1wZWRBcnJh
eSogc3JjUGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2ln
bmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXpl
KQogewogICAgIGludCBzY2FubGluZSA9IDQgKiBwYWludFNpemUud2lkdGgoKTsKICAgICBpbnQg
ZXh0cmFIZWlnaHQgPSAzICoga2VybmVsU2l6ZVkgKiAwLjVmOwpAQCAtMTg1LDggKzE4NSw4IEBA
IGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5KEJ5dGVBcnJheSogc3Jj
UGl4ZWxBcnJheSwgQnl0ZUFycmF5KiB0CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgICAgICBpbnQgYmxvY2tTaXplID0gKGVuZFkgLSBzdGFydFkpICogc2NhbmxpbmU7
Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zcmNQaXhlbEFycmF5ID0gQnl0ZUFycmF5Ojpj
cmVhdGUoYmxvY2tTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmRzdFBpeGVsQXJy
YXkgPSBCeXRlQXJyYXk6OmNyZWF0ZShibG9ja1NpemUpOworICAgICAgICAgICAgICAgICAgICBw
YXJhbXMuc3JjUGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoYmxvY2tTaXpl
KTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmRzdFBpeGVsQXJyYXkgPSBVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlKGJsb2NrU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIG1lbWNweShw
YXJhbXMuc3JjUGl4ZWxBcnJheS0+ZGF0YSgpLCBzcmNQaXhlbEFycmF5LT5kYXRhKCkgKyBzdGFy
dFkgKiBzY2FubGluZSwgYmxvY2tTaXplKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTI3NSw3
ICsyNzUsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
ewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAotICAgIEJ5dGVBcnJh
eSogc3JjUGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAg
IFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KCk7CiAgICAgaWYgKCFzcmNQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAK
QEAgLTI5Miw4ICsyOTIsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgIGNhbGN1bGF0ZUtlcm5lbFNpemUoZmlsdGVyKCksIGtlcm5lbFNpemVYLCBr
ZXJuZWxTaXplWSwgbV9zdGRYLCBtX3N0ZFkpOwogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBh
YnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiB0bXBJbWFn
ZURhdGEgPSBCeXRlQXJyYXk6OmNyZWF0ZShwYWludFNpemUud2lkdGgoKSAqIHBhaW50U2l6ZS5o
ZWlnaHQoKSAqIDQpOwotICAgIEJ5dGVBcnJheSogdG1wUGl4ZWxBcnJheSA9IHRtcEltYWdlRGF0
YS5nZXQoKTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHRtcEltYWdlRGF0YSA9IFVp
bnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUocGFpbnRTaXplLndpZHRoKCkgKiBwYWludFNpemUuaGVp
Z2h0KCkgKiA0KTsKKyAgICBVaW50OENsYW1wZWRBcnJheSogdG1wUGl4ZWxBcnJheSA9IHRtcElt
YWdlRGF0YS5nZXQoKTsKIAogICAgIHBsYXRmb3JtQXBwbHkoc3JjUGl4ZWxBcnJheSwgdG1wUGl4
ZWxBcnJheSwga2VybmVsU2l6ZVgsIGtlcm5lbFNpemVZLCBwYWludFNpemUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5oCmluZGV4IGIyOTVkMzYwODA3NDAwNTIzNDMzNmEzYjEyNDZkZDk1Mjc5ZWY0Zjcu
LmMzZGIxZjE1MDZhMjhmMTEzMGI4Mjg3YWY0ODI3MmM1ZjIzMGY2ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmgKQEAgLTU3LDggKzU3LDggQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBQbGF0Zm9ybUFw
cGx5UGFyYW1ldGVycyB7CiAgICAgICAgIEZFR2F1c3NpYW5CbHVyKiBmaWx0ZXI7Ci0gICAgICAg
IFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXk7Ci0gICAgICAgIFJlZlB0cjxCeXRlQXJy
YXk+IGRzdFBpeGVsQXJyYXk7CisgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3Jj
UGl4ZWxBcnJheTsKKyAgICAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBkc3RQaXhlbEFy
cmF5OwogICAgICAgICBpbnQgd2lkdGg7CiAgICAgICAgIGludCBoZWlnaHQ7CiAgICAgICAgIHVu
c2lnbmVkIGtlcm5lbFNpemVYOwpAQCAtNzAsMTAgKzcwLDEwIEBAIHByaXZhdGU6CiAgICAgRkVH
YXVzc2lhbkJsdXIoRmlsdGVyKiwgZmxvYXQsIGZsb2F0KTsKIAogICAgIHN0YXRpYyBpbmxpbmUg
dm9pZCBrZXJuZWxQb3NpdGlvbihpbnQgYm94Qmx1ciwgdW5zaWduZWQmIHN0ZCwgaW50JiBkTGVm
dCwgaW50JiBkUmlnaHQpOwotICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHkoQnl0ZUFycmF5
KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5l
bFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKTsKKyAgICBp
bmxpbmUgdm9pZCBwbGF0Zm9ybUFwcGx5KFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5
LCBVaW50OENsYW1wZWRBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgs
IHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpOwogCi0gICAgaW5saW5l
IHZvaWQgcGxhdGZvcm1BcHBseUdlbmVyaWMoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRl
QXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJu
ZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKTsKLSAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFw
cGx5TmVvbihCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJheSogdG1wUGl4ZWxBcnJh
eSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBw
YWludFNpemUpOworICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmljKFVpbnQ4Q2xh
bXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1wZWRBcnJheSogdG1wUGl4ZWxBcnJh
eSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBw
YWludFNpemUpOworICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlOZW9uKFVpbnQ4Q2xhbXBl
ZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1wZWRBcnJheSogdG1wUGl4ZWxBcnJheSwg
dW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWlu
dFNpemUpOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tp
YSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCBlNzk1ZDM1NDk0YjYxOTg5N2NlOTg3ODE5
ODE3ODVmNjg4ZTI1YzEwLi45ZDM4NmZjNmFkZjAzYzJhZDY3YTI0NTc2MmU1NWZlNzcyMDI5YzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVMaWdodGluZy5jcHAKQEAgLTYxLDExNCArNjEsMTE0IEBAIGNvbnN0IHN0YXRpYyBmbG9h
dCBjRmFjdG9yMmRpdjMgPSAtMiAvIDMuZjsKIC8vIDw8IDEgaXMgc2lnbmVkIG11bHRpcGx5IGJ5
IDIKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6dG9wTGVmdChpbnQgb2Zm
c2V0LCBJbnRQb2ludCYgbm9ybWFsVmVjdG9yKQogewotICAgIGludCBjZW50ZXIgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAg
ICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQaXhl
bFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGNlbnRlciA9IHN0YXRpY19j
YXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAg
ICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4
ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG9mZnNldCArPSB3aWR0aE11bHRp
cGxpZWRCeVBpeGVsU2l6ZTsKLSAgICBpbnQgYm90dG9tID0gc3RhdGljX2Nhc3Q8aW50PihwaXhl
bHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IGJvdHRvbVJp
Z2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0b20gPSBzdGF0aWNfY2FzdDxpbnQ+
KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJv
dHRvbVJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVs
U2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtKGNl
bnRlciA8PCAxKSArIChyaWdodCA8PCAxKSAtIGJvdHRvbSArIGJvdHRvbVJpZ2h0KTsKICAgICBu
b3JtYWxWZWN0b3Iuc2V0WSgtKGNlbnRlciA8PCAxKSAtIHJpZ2h0ICsgKGJvdHRvbSA8PCAxKSAr
IGJvdHRvbVJpZ2h0KTsKIH0KIAogaW5saW5lIHZvaWQgRkVMaWdodGluZzo6TGlnaHRpbmdEYXRh
Ojp0b3BSb3coaW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1hbFZlY3RvcikKIHsKLSAgICBpbnQg
bGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0IC0gY1BpeGVsU2l6ZSAr
IGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50
PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHJp
Z2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
KyAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCByaWdodCA9IHN0YXRpY19jYXN0PGludD4o
cGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7
CiAgICAgb2Zmc2V0ICs9IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwotICAgIGludCBib3R0
b21MZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXpl
ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b20gPSBzdGF0aWNfY2FzdDxp
bnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQg
Ym90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQaXhl
bFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbUxlZnQgPSBzdGF0
aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hh
bm5lbE9mZnNldCkpOworICAgIGludCBib3R0b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+
aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbVJpZ2h0
ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNB
bHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtKGxlZnQgPDwgMSkg
KyAocmlnaHQgPDwgMSkgLSBib3R0b21MZWZ0ICsgYm90dG9tUmlnaHQpOwogICAgIG5vcm1hbFZl
Y3Rvci5zZXRZKC1sZWZ0IC0gKGNlbnRlciA8PCAxKSAtIHJpZ2h0ICsgYm90dG9tTGVmdCArIChi
b3R0b20gPDwgMSkgKyBib3R0b21SaWdodCk7CiB9CiAKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6
OkxpZ2h0aW5nRGF0YTo6dG9wUmlnaHQoaW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1hbFZlY3Rv
cikKIHsKLSAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0
IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgY2VudGVyID0g
c3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0
KSk7CisgICAgaW50IGxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQg
LSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIgPSBz
dGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0
KSk7CiAgICAgb2Zmc2V0ICs9IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwotICAgIGludCBi
b3R0b21MZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxT
aXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b20gPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBp
bnQgYm90dG9tTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQ
aXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbSA9IHN0YXRp
Y19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
ICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtKGxlZnQgPDwgMSkgKyAoY2VudGVyIDw8IDEpIC0gYm90
dG9tTGVmdCArIGJvdHRvbSk7CiAgICAgbm9ybWFsVmVjdG9yLnNldFkoLWxlZnQgLSAoY2VudGVy
IDw8IDEpICsgYm90dG9tTGVmdCArIChib3R0b20gPDwgMSkpOwogfQogCiBpbmxpbmUgdm9pZCBG
RUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OmxlZnRDb2x1bW4oaW50IG9mZnNldCwgSW50UG9pbnQm
IG5vcm1hbFZlY3RvcikKIHsKLSAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50PihwaXhl
bHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHJpZ2h0ID0g
c3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhh
Q2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHJpZ2h0ID0g
c3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBo
YUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgLT0gd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNp
emU7Ci0gICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCB0b3BSaWdodCA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQp
KTsKKyAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCB0b3BSaWdodCA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0
KSk7CiAgICAgb2Zmc2V0ICs9IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplIDw8IDE7Ci0gICAg
aW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhh
Q2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b21SaWdodCA9IHN0YXRpY19jYXN0PGludD4o
cGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
KyAgICBpbnQgYm90dG9tID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0b21SaWdodCA9IHN0YXRpY19jYXN0
PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zm
c2V0KSk7CiAgICAgbm9ybWFsVmVjdG9yLnNldFgoLXRvcCArIHRvcFJpZ2h0IC0gKGNlbnRlciA8
PCAxKSArIChyaWdodCA8PCAxKSAtIGJvdHRvbSArIGJvdHRvbVJpZ2h0KTsKICAgICBub3JtYWxW
ZWN0b3Iuc2V0WSgtKHRvcCA8PCAxKSAtIHRvcFJpZ2h0ICsgKGJvdHRvbSA8PCAxKSArIGJvdHRv
bVJpZ2h0KTsKIH0KIAogaW5saW5lIHZvaWQgRkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjppbnRl
cmlvcihpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFsVmVjdG9yKQogewotICAgIGludCBsZWZ0
ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0Fs
cGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCByaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4
ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAg
ICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhl
bFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHJpZ2h0ID0gc3RhdGljX2Nh
c3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxP
ZmZzZXQpKTsKICAgICBvZmZzZXQgLT0gd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNpemU7Ci0gICAg
aW50IHRvcExlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCAtIGNQaXhl
bFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHRvcCA9IHN0YXRpY19jYXN0
PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGlu
dCB0b3BSaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVs
U2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wTGVmdCA9IHN0YXRpY19j
YXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7CisgICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9m
ZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wUmlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5l
bE9mZnNldCkpOwogICAgIG9mZnNldCArPSB3aWR0aE11bHRpcGxpZWRCeVBpeGVsU2l6ZSA8PCAx
OwotICAgIGludCBib3R0b21MZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZz
ZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b20g
PSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZz
ZXQpKTsKLSAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0
KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJv
dHRvbUxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxT
aXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0b20gPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAg
aW50IGJvdHRvbVJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsg
Y1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0
WCgtdG9wTGVmdCArIHRvcFJpZ2h0IC0gKGxlZnQgPDwgMSkgKyAocmlnaHQgPDwgMSkgLSBib3R0
b21MZWZ0ICsgYm90dG9tUmlnaHQpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZKC10b3BMZWZ0IC0g
KHRvcCA8PCAxKSAtIHRvcFJpZ2h0ICsgYm90dG9tTGVmdCArIChib3R0b20gPDwgMSkgKyBib3R0
b21SaWdodCk7CiB9CiAKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6cmln
aHRDb2x1bW4oaW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1hbFZlY3RvcikKIHsKLSAgICBpbnQg
bGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0IC0gY1BpeGVsU2l6ZSAr
IGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50
PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGxl
ZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxTaXplICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+
KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0
IC09IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwotICAgIGludCB0b3BMZWZ0ID0gc3RhdGlj
X2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5l
bE9mZnNldCkpOwotICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9m
ZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wTGVmdCA9IHN0YXRpY19j
YXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7CisgICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9m
ZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgKz0gd2lkdGhNdWx0aXBs
aWVkQnlQaXhlbFNpemUgPDwgMTsKLSAgICBpbnQgYm90dG9tTGVmdCA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxzLT5nZXQob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQp
KTsKLSAgICBpbnQgYm90dG9tID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQg
KyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbUxlZnQgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9m
ZnNldCkpOworICAgIGludCBib3R0b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShv
ZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgbm9ybWFsVmVjdG9yLnNldFgoLXRv
cExlZnQgKyB0b3AgLSAobGVmdCA8PCAxKSArIChjZW50ZXIgPDwgMSkgLSBib3R0b21MZWZ0ICsg
Ym90dG9tKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WSgtdG9wTGVmdCAtICh0b3AgPDwgMSkgKyBi
b3R0b21MZWZ0ICsgKGJvdHRvbSA8PCAxKSk7CiB9CiAKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6
OkxpZ2h0aW5nRGF0YTo6Ym90dG9tTGVmdChpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFsVmVj
dG9yKQogewotICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9m
ZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zm
c2V0KSk7CisgICAgaW50IGNlbnRlciA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9m
ZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9m
ZnNldCkpOwogICAgIG9mZnNldCAtPSB3aWR0aE11bHRpcGxpZWRCeVBpeGVsU2l6ZTsKLSAgICBp
bnQgdG9wID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFu
bmVsT2Zmc2V0KSk7Ci0gICAgaW50IHRvcFJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMt
PmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGlu
dCB0b3AgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFu
bmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcFJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMt
Pml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBu
b3JtYWxWZWN0b3Iuc2V0WCgtdG9wICsgdG9wUmlnaHQgLSAoY2VudGVyIDw8IDEpICsgKHJpZ2h0
IDw8IDEpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WSgtKHRvcCA8PCAxKSAtIHRvcFJpZ2h0ICsg
KGNlbnRlciA8PCAxKSArIHJpZ2h0KTsKIH0KIAogaW5saW5lIHZvaWQgRkVMaWdodGluZzo6TGln
aHRpbmdEYXRhOjpib3R0b21Sb3coaW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1hbFZlY3RvcikK
IHsKLSAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0IC0g
Y1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgY2VudGVyID0gc3Rh
dGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7
Ci0gICAgaW50IHJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBj
UGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBsZWZ0ID0gc3RhdGlj
X2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5u
ZWxPZmZzZXQpKTsKKyAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0
ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCByaWdodCA9IHN0YXRp
Y19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFu
bmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0IC09IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwot
ICAgIGludCB0b3BMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBj
UGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCB0b3AgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAg
ICBpbnQgdG9wUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQ
aXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcExlZnQgPSBzdGF0
aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hh
bm5lbE9mZnNldCkpOworICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRl
bShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcFJpZ2h0ID0gc3Rh
dGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNo
YW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtdG9wTGVmdCArIHRvcFJpZ2h0
IC0gKGxlZnQgPDwgMSkgKyAocmlnaHQgPDwgMSkpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZKC10
b3BMZWZ0IC0gKHRvcCA8PCAxKSAtIHRvcFJpZ2h0ICsgbGVmdCArIChjZW50ZXIgPDwgMSkgKyBy
aWdodCk7CiB9CiAKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6Ym90dG9t
UmlnaHQoaW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1hbFZlY3RvcikKIHsKLSAgICBpbnQgbGVm
dCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNB
bHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGxlZnQg
PSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0Fs
cGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBp
eGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0IC09
IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwotICAgIGludCB0b3BMZWZ0ID0gc3RhdGljX2Nh
c3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9m
ZnNldCkpOwotICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNl
dCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wTGVmdCA9IHN0YXRpY19jYXN0
PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zm
c2V0KSk7CisgICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNl
dCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtdG9wTGVm
dCArIHRvcCAtIChsZWZ0IDw8IDEpICsgKGNlbnRlciA8PCAxKSk7CiAgICAgbm9ybWFsVmVjdG9y
LnNldFkoLXRvcExlZnQgLSAodG9wIDw8IDEpICsgbGVmdCArIChjZW50ZXIgPDwgMSkpOwogfQpA
QCAtMTc2LDcgKzE3Niw3IEBAIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6
Ym90dG9tUmlnaHQoaW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1hbFZlCiBpbmxpbmUgdm9pZCBG
RUxpZ2h0aW5nOjppbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0LCBMaWdodGluZ0RhdGEmIGRhdGEs
IExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaWdodFgsIGludCBsaWdodFksIGZsb2F0IGZh
Y3RvclgsIGZsb2F0IGZhY3RvclksIEludFBvaW50JiBub3JtYWwyRFZlY3RvcikKIHsKLSAgICBt
X2xpZ2h0U291cmNlLT51cGRhdGVQYWludGluZ0RhdGEocGFpbnRpbmdEYXRhLCBsaWdodFgsIGxp
Z2h0WSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRhdGEucGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhh
Q2hhbm5lbE9mZnNldCkpICogZGF0YS5zdXJmYWNlU2NhbGUpOworICAgIG1fbGlnaHRTb3VyY2Ut
PnVwZGF0ZVBhaW50aW5nRGF0YShwYWludGluZ0RhdGEsIGxpZ2h0WCwgbGlnaHRZLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oZGF0YS5waXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNl
dCkpICogZGF0YS5zdXJmYWNlU2NhbGUpOwogCiAgICAgZmxvYXQgbGlnaHRTdHJlbmd0aDsKICAg
ICBpZiAoIW5vcm1hbDJEVmVjdG9yLngoKSAmJiAhbm9ybWFsMkRWZWN0b3IueSgpKSB7CkBAIC0y
OTAsNyArMjkwLDcgQEAgaW5saW5lIHZvaWQgRkVMaWdodGluZzo6cGxhdGZvcm1BcHBseShMaWdo
dGluZ0RhdGEmIGRhdGEsIExpZ2h0U291cmNlOjpQYWludGluZ0QKICNlbmRpZgogfQogCi1ib29s
IEZFTGlnaHRpbmc6OmRyYXdMaWdodGluZyhCeXRlQXJyYXkqIHBpeGVscywgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQorYm9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJy
YXkqIHBpeGVscywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIExpZ2h0U291cmNlOjpQ
YWludGluZ0RhdGEgcGFpbnRpbmdEYXRhOwogICAgIExpZ2h0aW5nRGF0YSBkYXRhOwpAQCAtMzcz
LDkgKzM3Myw5IEBAIGJvb2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKEJ5dGVBcnJheSogcGl4
ZWxzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgICAgICAgICBkYXRhLnBpeGVscy0+c2V0
KGksIGNPcGFxdWVBbHBoYSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBsYXN0UGl4ZWw7IGkgKz0gY1BpeGVsU2l6ZSkgewotICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBhMSA9IGRhdGEucGl4ZWxzLT5nZXQoaSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGEyID0gZGF0YS5waXhlbHMtPmdldChpICsgMSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGEzID0gZGF0YS5waXhlbHMtPmdldChpICsgMik7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGExID0gZGF0YS5waXhlbHMtPml0ZW0oaSk7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGEy
ID0gZGF0YS5waXhlbHMtPml0ZW0oaSArIDEpOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBh
MyA9IGRhdGEucGl4ZWxzLT5pdGVtKGkgKyAyKTsKICAgICAgICAgICAgIC8vIGFscGhhIHNldCB0
byBzZXQgdG8gbWF4KGExLCBhMiwgYTMpCiAgICAgICAgICAgICBkYXRhLnBpeGVscy0+c2V0KGkg
KyAzLCBhMSA+PSBhMiA/IChhMSA+PSBhMyA/IGExIDogYTMpIDogKGEyID49IGEzID8gYTIgOiBh
MykpOwogICAgICAgICB9CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBGRUxpZ2h0aW5nOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVj
dCgwKTsKIAotICAgIEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSA9IGNyZWF0ZVVubXVsdGlwbGll
ZEltYWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXkgPSBj
cmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogICAgIGlmICghc3JjUGl4ZWxBcnJheSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IDU0MjZmOTEyYzlhOGE3YzA4MGViODVi
NTY4MTc0Nzk2NWM5NGRiZjEuLmQwZDJiMzY4NWU1MjJhYzQ4ZWIwNGI5Njc5NzlmMmEzYzYwNWRl
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVMaWdodGluZy5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiTGlnaHRTb3VyY2Uu
aCIKICNpbmNsdWRlICJQb2ludExpZ2h0U291cmNlLmgiCiAjaW5jbHVkZSAiU3BvdExpZ2h0U291
cmNlLmgiCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiAvLyBDb21tb24gYmFz
ZSBjbGFzcyBmb3IgRkVEaWZmdXNlTGlnaHRpbmcgYW5kIEZFU3BlY3VsYXJMaWdodGluZwogCkBA
IC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0cnVjdCBMaWdodGluZ0RhdGEgewog
ICAgICAgICAvLyBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBvbmx5IHJlYWQtb25seSAoU01QIHNh
ZmUpIGRhdGEKLSAgICAgICAgQnl0ZUFycmF5KiBwaXhlbHM7CisgICAgICAgIFVpbnQ4Q2xhbXBl
ZEFycmF5KiBwaXhlbHM7CiAgICAgICAgIGZsb2F0IHN1cmZhY2VTY2FsZTsKICAgICAgICAgaW50
IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwogICAgICAgICBpbnQgd2lkdGhEZWNyZWFzZWRC
eU9uZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgRkVMaWdodGluZyhGaWx0
ZXIqLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwogCi0gICAgYm9vbCBk
cmF3TGlnaHRpbmcoQnl0ZUFycmF5KiwgaW50LCBpbnQpOworICAgIGJvb2wgZHJhd0xpZ2h0aW5n
KFVpbnQ4Q2xhbXBlZEFycmF5KiwgaW50LCBpbnQpOwogICAgIGlubGluZSB2b2lkIGlubGluZVNl
dFBpeGVsKGludCBvZmZzZXQsIExpZ2h0aW5nRGF0YSYsIExpZ2h0U291cmNlOjpQYWludGluZ0Rh
dGEmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaWdodFgsIGludCBsaWdo
dFksIGZsb2F0IGZhY3RvclgsIGZsb2F0IGZhY3RvclksIEludFBvaW50JiBub3JtYWxWZWN0b3Ip
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggNWJhNGRmYzE0YzFlMThkMThjYmIzZTkzZTNkZTMw
MGQwZmRiNzM5OC4uNDUyOGRjMzIyN2QwOWJhYjAwZTcyNzMyNDM1Yzk4OTU2OWNiOGI1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVNb3JwaG9sb2d5LmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVB
c1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9icy5oPgorI2luY2x1ZGUgPHd0Zi9VaW50
OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgc3RkOjpt
aW47CkBAIC0xMDYsOCArMTA2LDggQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1koZmxv
YXQgcmFkaXVzWSkKIAogdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKFBh
aW50aW5nRGF0YSogcGFpbnRpbmdEYXRhLCBpbnQgeVN0YXJ0LCBpbnQgeUVuZCkKIHsKLSAgICBC
eXRlQXJyYXkqIHNyY1BpeGVsQXJyYXkgPSBwYWludGluZ0RhdGEtPnNyY1BpeGVsQXJyYXk7Ci0g
ICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0gcGFpbnRpbmdEYXRhLT5kc3RQaXhlbEFycmF5
OworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5ID0gcGFpbnRpbmdEYXRhLT5z
cmNQaXhlbEFycmF5OworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5ID0gcGFp
bnRpbmdEYXRhLT5kc3RQaXhlbEFycmF5OwogICAgIGNvbnN0IGludCB3aWR0aCA9IHBhaW50aW5n
RGF0YS0+d2lkdGg7CiAgICAgY29uc3QgaW50IGhlaWdodCA9IHBhaW50aW5nRGF0YS0+aGVpZ2h0
OwogICAgIGNvbnN0IGludCBlZmZlY3RXaWR0aCA9IHdpZHRoICogNDsKQEAgLTEyMiw5ICsxMjIs
OSBAQCB2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseUdlbmVyaWMoUGFpbnRpbmdEYXRh
KiBwYWludGluZ0RhdGEsIGludCB5U3RhcnQsCiAgICAgICAgICAgICBleHRyZW1hLmNsZWFyKCk7
CiAgICAgICAgICAgICAvLyBDb21wdXRlIGV4dHJlbWFzIGZvciBlYWNoIGNvbHVtbnMKICAgICAg
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDw9IHJhZGl1c1g7ICsreCkgewotICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVtYSA9IHNyY1BpeGVsQXJyYXktPmdldChleHRy
ZW1hU3RhcnRZICogZWZmZWN0V2lkdGggKyA0ICogeCArIGNsckNoYW5uZWwpOworICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVtYSA9IHNyY1BpeGVsQXJyYXktPml0ZW0o
ZXh0cmVtYVN0YXJ0WSAqIGVmZmVjdFdpZHRoICsgNCAqIHggKyBjbHJDaGFubmVsKTsKICAgICAg
ICAgICAgICAgICBmb3IgKGludCBlWSA9IGV4dHJlbWFTdGFydFkgKyAxOyBlWSA8IGV4dHJlbWFF
bmRZOyArK2VZKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWwgPSBz
cmNQaXhlbEFycmF5LT5nZXQoZVkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsgY2xyQ2hhbm5lbCk7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5
LT5pdGVtKGVZICogZWZmZWN0V2lkdGggKyA0ICogeCArIGNsckNoYW5uZWwpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgJiYg
cGl4ZWwgPD0gY29sdW1uRXh0cmVtYSkKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtX3R5
cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSAmJiBwaXhlbCA+PSBjb2x1bW5FeHRy
ZW1hKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uRXh0cmVtYSA9IHBpeGVsOwpA
QCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJp
YyhQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YSwgaW50IHlTdGFydCwKICAgICAgICAgICAgIC8v
IEtlcm5lbCBpcyBmaWxsZWQsIGdldCBleHRyZW1hIG9mIG5leHQgY29sdW1uCiAgICAgICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gpIHsKICAgICAgICAgICAgICAgICBjb25z
dCBpbnQgZW5kWCA9IG1pbih4ICsgcmFkaXVzWCwgd2lkdGggLSAxKTsKLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBzcmNQaXhlbEFycmF5LT5nZXQoZXh0cmVt
YVN0YXJ0WSAqIGVmZmVjdFdpZHRoICsgZW5kWCAqIDQgKyBjbHJDaGFubmVsKTsKKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBzcmNQaXhlbEFycmF5LT5pdGVt
KGV4dHJlbWFTdGFydFkgKiBlZmZlY3RXaWR0aCArIGVuZFggKiA0ICsgY2xyQ2hhbm5lbCk7CiAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IGV4dHJlbWFTdGFydFkgKyAxOyBpIDw9IGV4dHJl
bWFFbmRZOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBwaXhlbCA9
IHNyY1BpeGVsQXJyYXktPmdldChpICogZWZmZWN0V2lkdGggKyBlbmRYICogNCArIGNsckNoYW5u
ZWwpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsID0gc3JjUGl4ZWxB
cnJheS0+aXRlbShpICogZWZmZWN0V2lkdGggKyBlbmRYICogNCArIGNsckNoYW5uZWwpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJP
REUgJiYgcGl4ZWwgPD0gY29sdW1uRXh0cmVtYSkKICAgICAgICAgICAgICAgICAgICAgICAgIHx8
IChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSAmJiBwaXhlbCA+PSBjb2x1
bW5FeHRyZW1hKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkV4dHJlbWEgPSBwaXhl
bDsKQEAgLTE5NywyMiArMTk3LDIwIEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAot
ICAgIEJ5dGVBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgaWYgKCFkc3RQaXhlbEFycmF5KQogICAgICAg
ICByZXR1cm47CiAKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKLSAg
ICBpZiAobV9yYWRpdXNYIDw9IDAgfHwgbV9yYWRpdXNZIDw9IDApIHsKLSAgICAgICAgZHN0UGl4
ZWxBcnJheS0+Y2xlYXIoKTsKKyAgICBpZiAobV9yYWRpdXNYIDw9IDAgfHwgbV9yYWRpdXNZIDw9
IDApCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBGaWx0ZXIqIGZpbHRlciA9IHRoaXMt
PmZpbHRlcigpOwogICAgIGludCByYWRpdXNYID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYoZmls
dGVyLT5hcHBseUhvcml6b250YWxTY2FsZShtX3JhZGl1c1gpKSk7CiAgICAgaW50IHJhZGl1c1kg
PSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihmaWx0ZXItPmFwcGx5VmVydGljYWxTY2FsZShtX3Jh
ZGl1c1kpKSk7CiAKICAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVn
aW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgUmVmUHRy
PEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZl
Y3REcmF3aW5nUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFy
cmF5ID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsKIAogICAg
IFBhaW50aW5nRGF0YSBwYWludGluZ0RhdGE7CiAgICAgcGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJy
YXkgPSBzcmNQaXhlbEFycmF5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKaW5kZXggNTQyZDI2YjI4Mzk2
ZjE5MTIwZjM2NTJjMzAyOTZlMWIwZDRiMWY4MC4uMTlkYTYzNWEyZTAzYTYxYWYwNDA4ZWNkNGY5
MGZkZTRiMGUwNDczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnRpb24pIGNvbnN0OwogCiAgICAgc3RydWN0IFBhaW50aW5nRGF0YSB7Ci0g
ICAgICAgIEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheTsKLSAgICAgICAgQnl0ZUFycmF5KiBkc3RQ
aXhlbEFycmF5OworICAgICAgICBVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheTsKKyAg
ICAgICAgVWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXk7CiAgICAgICAgIGludCB3aWR0
aDsKICAgICAgICAgaW50IGhlaWdodDsKICAgICAgICAgaW50IHJhZGl1c1g7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5jcHAKaW5kZXggZDVkNjRjMTMwNmY0OGU3NjU4ZGVhNTY0N2UxMTQxMTgzYWQ1NjJmMS4uZmFm
NWQxMjBiZjM5ODVjNmEyODY1ZWY4NDc2MjM1ZGY5NjRlYzBiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNw
cApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNs
dWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+CisjaW5j
bHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMzMwLDcgKzMzMCw3IEBAIHVuc2lnbmVkIGNoYXIgRkVUdXJidWxlbmNlOjpjYWxjdWxhdGVU
dXJidWxlbmNlVmFsdWVGb3JQb2ludChpbnQgY2hhbm5lbCwgUGFpbnRpCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCAqIDI1NSk7
CiB9CiAKLWlubGluZSB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihCeXRlQXJyYXkqIHBp
eGVsQXJyYXksIFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5k
WSkKK2lubGluZSB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJh
eSogcGl4ZWxBcnJheSwgUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEsIGludCBzdGFydFksIGlu
dCBlbmRZKQogewogICAgIEludFJlY3QgZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWludFJlY3Qo
KTsKICAgICBJbnRQb2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKQEAg
LTM1NiwxNCArMzU2LDEyIEBAIHZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uV29ya2VyKEZp
bGxSZWdpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKQogCiB2b2lkIEZFVHVyYnVsZW5jZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKLSAgICBCeXRlQXJyYXkqIHBpeGVsQXJyYXkgPSBjcmVh
dGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhl
bEFycmF5ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIXBpeGVs
QXJyYXkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhYnNvbHV0ZVBhaW50UmVjdCgpLmlz
RW1wdHkoKSkgewotICAgICAgICBwaXhlbEFycmF5LT5jbGVhcigpOworICAgIGlmIChhYnNvbHV0
ZVBhaW50UmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIFBh
aW50aW5nRGF0YSBwYWludGluZ0RhdGEobV9zZWVkLCByb3VuZGVkSW50U2l6ZShmaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oKS5zaXplKCkpKTsKICAgICBpbml0UGFpbnQocGFpbnRpbmdEYXRhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VHVyYnVsZW5jZS5oCmluZGV4IDU5MjU3ZDAyNmQzNDk2ZTMzMmFlYmNhNDFmZDZkZmViYWVmZTBj
YTkuLjQ3YzhiZWU3OTk1NmJkNGViMTJhYTBhNmQ2MmNiYTFjNGIwN2IzNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgRmlsbFJlZ2lv
blBhcmFtZXRlcnMgewogICAgICAgICBGRVR1cmJ1bGVuY2UqIGZpbHRlcjsKLSAgICAgICAgQnl0
ZUFycmF5KiBwaXhlbEFycmF5OworICAgICAgICBVaW50OENsYW1wZWRBcnJheSogcGl4ZWxBcnJh
eTsKICAgICAgICAgUGFpbnRpbmdEYXRhKiBwYWludGluZ0RhdGE7CiAgICAgICAgIGludCBzdGFy
dFk7CiAgICAgICAgIGludCBlbmRZOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAg
aW5saW5lIHZvaWQgaW5pdFBhaW50KFBhaW50aW5nRGF0YSYpOwogICAgIGZsb2F0IG5vaXNlMkQo
aW50IGNoYW5uZWwsIFBhaW50aW5nRGF0YSYsIFN0aXRjaERhdGEmLCBjb25zdCBGbG9hdFBvaW50
Jik7CiAgICAgdW5zaWduZWQgY2hhciBjYWxjdWxhdGVUdXJidWxlbmNlVmFsdWVGb3JQb2ludChp
bnQgY2hhbm5lbCwgUGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0YSYsIGNvbnN0IEZsb2F0UG9pbnQm
KTsKLSAgICBpbmxpbmUgdm9pZCBmaWxsUmVnaW9uKEJ5dGVBcnJheSosIFBhaW50aW5nRGF0YSYs
IGludCwgaW50KTsKKyAgICBpbmxpbmUgdm9pZCBmaWxsUmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5
KiwgUGFpbnRpbmdEYXRhJiwgaW50LCBpbnQpOwogCiAgICAgVHVyYnVsZW5jZVR5cGUgbV90eXBl
OwogICAgIGZsb2F0IG1fYmFzZUZyZXF1ZW5jeVg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggODlk
NTgxY2FmZjcyYTQxOWNjN2QyOGIxYzExNTMwOGVmYjUwMDliZC4uOWNkODc2MmRlYjg1ODZjMmMz
YzQ0Njg2NmNmZGZmMzA5NTM0MTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjcsNyArMjcs
NyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KKyNpbmNsdWRl
IDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MjUsNyArMTI1LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmZvcmNlVmFsaWRQcmVNdWx0aXBsaWVk
UGl4ZWxzKCkKICAgICBpZiAoIW1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBCeXRlQXJyYXkqIGltYWdlQXJyYXkgPSBtX3ByZW11bHRpcGxpZWRJbWFn
ZVJlc3VsdC5nZXQoKTsKKyAgICBVaW50OENsYW1wZWRBcnJheSogaW1hZ2VBcnJheSA9IG1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOwogICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsRGF0
YSA9IGltYWdlQXJyYXktPmRhdGEoKTsKICAgICBpbnQgcGl4ZWxBcnJheUxlbmd0aCA9IGltYWdl
QXJyYXktPmxlbmd0aCgpOwogCkBAIC0xNzMsMjMgKzE3MywyMyBAQCBJbWFnZUJ1ZmZlciogRmls
dGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyKCkKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3Vs
dC5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNVbm11
bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQorUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAgICAgQVNTRVJUKGlzRmlsdGVyU2l6ZVZhbGlkKHJlY3QpKTsKLSAgICBSZWZQ
dHI8Qnl0ZUFycmF5PiBpbWFnZURhdGEgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkg
KiByZWN0LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFn
ZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVp
Z2h0KCkgKiA0KTsKICAgICBjb3B5VW5tdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCBy
ZWN0KTsKICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxC
eXRlQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVj
dCYgcmVjdCkKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQ
cmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBBU1NFUlQoaXNG
aWx0ZXJTaXplVmFsaWQocmVjdCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IGltYWdlRGF0YSA9
IEJ5dGVBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAg
ICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwogICAgIGNvcHlQcmVt
dWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsKICAgICByZXR1cm4gaW1hZ2VE
YXRhLnJlbGVhc2UoKTsKIH0KIAotaW5saW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VC
eXRlcyhCeXRlQXJyYXkqIHNvdXJjZSwgQnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50
UmVjdCYgcmVjdCkKK2lubGluZSB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMoVWlu
dDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBj
b25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9u
IHRvIHRyYW5zcGFyZW50IGJsYWNrLCBpZiBub3QgZW50aXJlbHkgY292ZXJlZCBieSB0aGUgc291
cmNlLgogICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IHJlY3QubWF4WCgp
ID4gbV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpIHx8IHJlY3QubWF4WSgpID4gbV9hYnNvbHV0
ZVBhaW50UmVjdC5oZWlnaHQoKSkKQEAgLTIzMyw3ICsyMzMsNyBAQCBpbmxpbmUgdm9pZCBGaWx0
ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzKEJ5dGVBcnJheSogc291cmNlLCBCeXRlQXJyYXkqIGRl
c3RpbmF0aQogICAgIH0KIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRJ
bWFnZShCeXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBG
aWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVz
dGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgQVNTRVJUKGhhc1Jlc3VsdCgp
KTsKIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBs
aWVkSW1hZ2UoQnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYKICAgICAgICAg
ICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRV
bm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRS
ZWN0LnNpemUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChpc0ZpbHRl
clNpemVWYWxpZChtX2Fic29sdXRlUGFpbnRSZWN0KSk7Ci0gICAgICAgICAgICBtX3VubXVsdGlw
bGllZEltYWdlUmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC53
aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOworICAgICAgICAgICAg
bV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9h
YnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAq
IDQpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc291cmNlQ29tcG9uZW50ID0gbV9wcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIq
IGRlc3RpbmF0aW9uQ29tcG9uZW50ID0gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgp
OwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZW5kID0gc291cmNlQ29tcG9uZW50ICsgKG1f
YWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkg
KiA0KTsKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZEltYWdlKEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmCiAgICAgY29w
eUltYWdlQnl0ZXMobV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKSwgZGVzdGluYXRpb24s
IHJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRJbWFnZShC
eXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBGaWx0ZXJF
ZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0
aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CiAK
QEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRJ
bWFnZShCeXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JgogICAgICAgICAgICAg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQcmVt
dWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNGaWx0ZXJT
aXplVmFsaWQobV9hYnNvbHV0ZVBhaW50UmVjdCkpOwotICAgICAgICAgICAgbV9wcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0Lndp
ZHRoKCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAgICAgICAgICBt
X3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9h
YnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAq
IDQpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogc291cmNlQ29tcG9uZW50ID0gbV91bm11
bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciog
ZGVzdGluYXRpb25Db21wb25lbnQgPSBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgp
OwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZW5kID0gc291cmNlQ29tcG9uZW50ICsgKG1f
YWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkg
KiA0KTsKQEAgLTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVh
dGVJbWFnZUJ1ZmZlclJlc3VsdCgpCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0
KCk7CiB9CiAKLUJ5dGVBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFn
ZVJlc3VsdCgpCitVaW50OENsYW1wZWRBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRp
cGxpZWRJbWFnZVJlc3VsdCgpCiB7CiAgICAgLy8gT25seSBvbmUgcmVzdWx0IHR5cGUgaXMgYWxs
b3dlZC4KICAgICBBU1NFUlQoIWhhc1Jlc3VsdCgpKTsKQEAgLTMxNiwxMSArMzE2LDExIEBAIEJ5
dGVBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAK
ICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwotICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShtX2Fi
c29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICog
NCk7CisgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojpj
cmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5o
ZWlnaHQoKSAqIDQpOwogICAgIHJldHVybiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgp
OwogfQogCi1CeXRlQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0KCkKK1VpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCgpCiB7CiAgICAgLy8gT25seSBvbmUgcmVzdWx0IHR5cGUgaXMgYWxs
b3dlZC4KICAgICBBU1NFUlQoIWhhc1Jlc3VsdCgpKTsKQEAgLTMyOCw3ICszMjgsNyBAQCBCeXRl
QXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIAog
ICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShtX2Fi
c29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICog
NCk7CisgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3Qu
aGVpZ2h0KCkgKiA0KTsKICAgICByZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDhiNGFkNmY5MjI3NTJmZGUyMWJhODVkY2IxMzA2
ZDNhOGVhZTJjNjkuLmM5OWNkNTAxZDljMDQ2ZjExNTZiMTIzMjI4YmMyNTk4ODgyNTBjZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgogCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBzdGF0aWMgY29uc3QgZmxvYXQga01heEZpbHRl
clNpemUgPSA1MDAwLjBmOwpAQCAtNTYsMTAgKzU2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2xlYXJSZXN1bHQoKTsKICAgICBJbWFnZUJ1ZmZlciogYXNJbWFnZUJ1ZmZlcigpOwotICAgIFBh
c3NSZWZQdHI8Qnl0ZUFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmKTsK
LSAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gYXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50
UmVjdCYpOwotICAgIHZvaWQgY29weVVubXVsdGlwbGllZEltYWdlKEJ5dGVBcnJheSogZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2Uo
Qnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpOworICAgIFBhc3NSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IGFzVW5tdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYpOwor
ICAgIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGFzUHJlbXVsdGlwbGllZEltYWdlKGNv
bnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRJbWFnZShVaW50OENsYW1w
ZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlQcmVt
dWx0aXBsaWVkSW1hZ2UoVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRS
ZWN0Jik7CiAKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cygpIHsgcmV0dXJu
IG1faW5wdXRFZmZlY3RzOyB9CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dEVmZmVjdCh1bnNpZ25l
ZCkgY29uc3Q7CkBAIC0xMzMsOCArMTMzLDggQEAgcHJvdGVjdGVkOgogICAgIEZpbHRlckVmZmVj
dChGaWx0ZXIqKTsKIAogICAgIEltYWdlQnVmZmVyKiBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgp
OwotICAgIEJ5dGVBcnJheSogY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKLSAgICBC
eXRlQXJyYXkqIGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xh
bXBlZEFycmF5KiBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xh
bXBlZEFycmF5KiBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKIAogICAgIC8vIFJl
dHVybiB0cnVlIGlmIHRoZSBmaWx0ZXIgd2lsbCBvbmx5IG9wZXJhdGUgY29ycmVjdGx5IG9uIHZh
bGlkIFJHQkEgdmFsdWVzLCB3aXRoCiAgICAgLy8gYWxwaGEgaW4gWzAsMjU1XSBhbmQgZWFjaCBj
b2xvciBjb21wb25lbnQgaW4gWzAsIGFscGhhXS4KQEAgLTE0NSw4ICsxNDUsOCBAQCBwcm90ZWN0
ZWQ6CiAKIHByaXZhdGU6CiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyUmVz
dWx0OwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7Ci0g
ICAgUmVmUHRyPEJ5dGVBcnJheT4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CisgICAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0OworICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiAgICAg
RmlsdGVyRWZmZWN0VmVjdG9yIG1faW5wdXRFZmZlY3RzOwogCiAgICAgYm9vbCBtX2FscGhhSW1h
Z2U7CkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBGaWx0ZXIqIG1fZmlsdGVyOwog
ICAgIAogcHJpdmF0ZToKLSAgICBpbmxpbmUgdm9pZCBjb3B5SW1hZ2VCeXRlcyhCeXRlQXJyYXkq
IHNvdXJjZSwgQnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpOworICAgIGlu
bGluZSB2b2lkIGNvcHlJbWFnZUJ5dGVzKFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIFVpbnQ4
Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gVGhl
IGZvbGxvd2luZyBtZW1iZXIgdmFyaWFibGVzIGFyZSBTVkcgc3BlY2lmaWMgYW5kIHdpbGwgbW92
ZSB0byBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS4KICAgICAvLyBTZWUgYnVnIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTYxNC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFR2F1c3NpYW5C
bHVyTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0v
RkVHYXVzc2lhbkJsdXJORU9OLmgKaW5kZXggOTYwMzdhYWI5YWIyZTFhYTk3NzZhNjgxYWVhMWQ5
NjU5NWY4ZDVhNy4uMWZiMzc1MmM1Y2U0NDkyYWViOWVmMjNjNmU4OWUzNjBlNzUzZGQ3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVH
YXVzc2lhbkJsdXJORU9OLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9hcm0vRkVHYXVzc2lhbkJsdXJORU9OLmgKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBu
ZW9uRHJhd0FsbENoYW5uZWxHYXVzc2lhbkJsdXIodW5zaWduZWQgY2hhciogc291cmNlLCB1bnNp
Z25lZCBjaGFyKiBkZXN0aW4KIHZvaWQgbmVvbkRyYXdBbHBoYUNoYW5uZWxHYXVzc2lhbkJsdXIo
dW5zaWduZWQgY2hhciogc291cmNlLCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbiwgRkVHYXVz
c2lhbkJsdXJQYWludGluZ0RhdGFGb3JOZW9uKik7CiB9CiAKLWlubGluZSB2b2lkIEZFR2F1c3Np
YW5CbHVyOjpwbGF0Zm9ybUFwcGx5TmVvbihCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVB
cnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5l
bFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpCitpbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseU5lb24oVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4
Q2xhbXBlZEFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWdu
ZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSkKIHsKICAgICBjb25zdCBpbnQgd2lk
dGhNdWx0aXBsaWVkQnlGb3VyID0gNCAqIHBhaW50U2l6ZS53aWR0aCgpOwogICAgIEZFR2F1c3Np
YW5CbHVyUGFpbnRpbmdEYXRhRm9yTmVvbiBhcmd1bWVudHNYID0gewpAQCAtODksNyArODksNyBA
QCBpbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseU5lb24oQnl0ZUFycmF5
KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIG5lb25EcmF3QWxsQ2hhbm5lbEdhdXNzaWFuQmx1cihzcmNQaXhlbEFycmF5LT5kYXRhKCks
IHRtcFBpeGVsQXJyYXktPmRhdGEoKSwgJmFyZ3VtZW50c1gpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgQnl0ZUFycmF5KiBhdXhQaXhlbEFycmF5ID0gdG1wUGl4ZWxBcnJheTsKKyAg
ICAgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBhdXhQaXhlbEFycmF5ID0gdG1wUGl4ZWxBcnJh
eTsKICAgICAgICAgICAgIHRtcFBpeGVsQXJyYXkgPSBzcmNQaXhlbEFycmF5OwogICAgICAgICAg
ICAgc3JjUGl4ZWxBcnJheSA9IGF1eFBpeGVsQXJyYXk7CiAgICAgICAgIH0KQEAgLTEwMiw3ICsx
MDIsNyBAQCBpbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseU5lb24oQnl0
ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYQogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIG5lb25EcmF3QWxsQ2hhbm5lbEdhdXNzaWFuQmx1cih0bXBQaXhlbEFycmF5LT5k
YXRhKCksIHNyY1BpeGVsQXJyYXktPmRhdGEoKSwgJmFyZ3VtZW50c1kpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgQnl0ZUFycmF5KiBhdXhQaXhlbEFycmF5ID0gdG1wUGl4ZWxBcnJh
eTsKKyAgICAgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBhdXhQaXhlbEFycmF5ID0gdG1wUGl4
ZWxBcnJheTsKICAgICAgICAgICAgIHRtcFBpeGVsQXJyYXkgPSBzcmNQaXhlbEFycmF5OwogICAg
ICAgICAgICAgc3JjUGl4ZWxBcnJheSA9IGF1eFBpeGVsQXJyYXk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDkwZDIzMzIx
NDI1ZDUxNTBhYTlhNjA1ZWUzNWZmNzIwOWIzN2M3ZjguLmNiM2E1Yjc3ZTVmNTUzOTEwMGZmMjVm
NGRmYWMwMGY3OGQ2MGEwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBH
cmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoRHJhd2lu
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VEYXRhID0g
SW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0
KSk7Ci0gICAgdW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEo
KS0+ZGF0YSgpOworICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVscyA9IGltYWdlRGF0YS0+ZGF0YSgp
LT5kYXRhKCk7CiAgICAgaW50IHRvdGFsQnl0ZXMgPSA0ICogbV9jdXJyZW50V2lkdGggKiBtX2N1
cnJlbnRIZWlnaHQ7CiAKICAgICByZWFkUmVuZGVyaW5nUmVzdWx0cyhwaXhlbHMsIHRvdGFsQnl0
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VCdWZmZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZUJ1ZmZlclF0LmNwcAppbmRleCA1MjQyMzAyNDUxM2IyZTNiZWM0OGI0OWU3YTM4ZTdiNTUwZjY2
NmNiLi5iMGY5OTVlZDA0MmY5Y2YxYjkxMzA5MDI4YjljMGU4N2Y2MjZiYjFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNw
cApAQCAtMTg5LDE4ICsxODksMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zv
cm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIH0KIAogdGVtcGxh
dGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgaW1hZ2VEYXRh
LCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0
SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgaW1h
Z2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGZsb2F0IGFyZWEgPSA0LjBmICog
cmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKTsKICAgICBpZiAoYXJlYSA+IHN0YXRpY19jYXN0
PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiByZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShy
ZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAq
IHJlY3QuaGVpZ2h0KCkgKiA0KTsKICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gcmVzdWx0LT5k
YXRhKCk7CiAKLSAgICBpZiAocmVjdC54KCkgPCAwIHx8IHJlY3QueSgpIDwgMCB8fCByZWN0Lm1h
eFgoKSA+IHNpemUud2lkdGgoKSB8fCByZWN0Lm1heFkoKSA+IHNpemUuaGVpZ2h0KCkpCi0gICAg
ICAgIG1lbXNldChkYXRhLCAwLCByZXN1bHQtPmxlbmd0aCgpKTsKLQogICAgIGludCBvcmlnaW54
ID0gcmVjdC54KCk7CiAgICAgaW50IGRlc3R4ID0gMDsKICAgICBpZiAob3JpZ2lueCA8IDApIHsK
QEAgLTI3MSwxMiArMjY4LDEyIEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRJbWFnZURhdGEo
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBpCiAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZl
cjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5h
dGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZl
cjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5h
dGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+
KHJlY3QsIG1fZGF0YSwgbV9zaXplKTsKIH0KIAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdl
QnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENv
b3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFn
ZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBD
b29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJldHVybiBnZXRJbWFnZURhdGE8UHJlbXVs
dGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUpOwogfQpAQCAtMjk3LDcgKzI5NCw3IEBAIHN0
YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHByZW11bHRpcGx5QUJHUnRvQVJHQih1bnNpZ25lZCBp
bnQgeCkKICAgICByZXR1cm4geDsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5
KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBz
b3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5
KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKHNvdXJjZVJl
Y3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVm
ZmVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdl
QnVmZmVyU2tpYS5jcHAKaW5kZXggMzY0NDEzMWJjMmIxY2MzZWI0NGUwMDY4ZmNlOWVlMTdmMjZh
OGE3Ny4uNzllZjg3YTI4YzRiNzI1NTNmMWU5NGExN2U0MDdiNzRjMTYyNWJhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZm
ZXJTa2lhLmNwcApAQCAtMjMwLDIzICsyMzAsMTcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZv
cm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIH0K
IAogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci1QYXNzUmVmUHRyPEJ5dGVBcnJheT4g
Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIFNrQ2FudmFzKiBjYW52YXMsCitQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgU2tDYW52YXMqIGNhbnZhcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBmbG9hdCBhcmVhID0gNC4wZiAqIHJlY3Qud2lk
dGgoKSAqIHJlY3QuaGVpZ2h0KCk7CiAgICAgaWYgKGFyZWEgPiBzdGF0aWNfY2FzdDxmbG9hdD4o
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
cmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0Lmhl
aWdodCgpICogNCk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gcmVzdWx0LT5kYXRhKCk7
CiAKLSAgICBpZiAocmVjdC54KCkgPCAwCi0gICAgICAgIHx8IHJlY3QueSgpIDwgMAotICAgICAg
ICB8fCByZWN0Lm1heFgoKSA+IHNpemUud2lkdGgoKQotICAgICAgICB8fCByZWN0Lm1heFkoKSA+
IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIG1lbXNldChkYXRhLCAwLCByZXN1bHQtPmxlbmd0aCgp
KTsKLQogICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiByZWN0LndpZHRoKCk7CiAg
ICAgU2tCaXRtYXAgZGVzdEJpdG1hcDsKICAgICBkZXN0Qml0bWFwLnNldENvbmZpZyhTa0JpdG1h
cDo6a0FSR0JfODg4OF9Db25maWcsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgZGVzdEJ5
dGVzUGVyUm93KTsKQEAgLTI2MiwxNyArMjU2LDE3IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBn
ZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgU2tDYW52YXMqIGNhbnZhcywKICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdl
QnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29v
cmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdl
QnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29v
cmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFVubXVsdGlw
bGllZD4ocmVjdCwgY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCksIG1fc2l6
ZSk7CiB9CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlw
bGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25z
dAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRp
cGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29u
c3QKIHsKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIGNvbnRl
eHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLCBtX3NpemUpOwogfQogCi12b2lkIElt
YWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBz
b3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCit2b2lkIElt
YWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVk
QXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkK
IHsKICAgICBTa0NhbnZhcyogY2FudmFzID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y2FudmFzKCk7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcAppbmRleCA4OTRlYmJmNTY0OWViMjU3NTk4ZGZkNzZjZWZhZWVlYjc4ZDBlNzBl
Li41OWViNGE2ZjM0Y2I0ZTViZWEyYTYxMTM0NTI4ZDYzNzUxOTI0MjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlIDxjYWlyby5oPgotI2luY2x1ZGUg
PHd0Zi9CeXRlQXJyYXkuaD4KICNlbmRpZgogCiAjZGVmaW5lIEdMX0NNRCguLi4pIGRvIHsgX19W
QV9BUkdTX187IEFTU0VSVF9BUkcoX19WQV9BUkdTX18sICFnbEdldEVycm9yKCkpOyB9IHdoaWxl
ICgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
SW1hZ2VCdWZmZXJXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcAppbmRleCAyOGM3MjA5NWY2N2MwY2ZmYmY1ZjNkZTcx
MGUwNTRhYTYxYzg1YzJjLi40ZGJkNjlhN2E0OWI3NTVkNTEzMjk5YTlhYWMzYWM3ZWNjZTExOTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFn
ZUJ1ZmZlcldpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcApAQCAtMTIxLDkgKzEyMSw5IEBAIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0CiB9CiAKIHRlbXBsYXRlIDxib29sIHByZW11bHRpcGxpZWQ+Ci1zdGF0aWMg
UGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBTaGFyZWRCaXRtYXAqIGJpdG1hcCkKK3N0YXRpYyBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgU2hhcmVkQml0
bWFwKiBiaXRtYXApCiB7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gaW1hZ2VEYXRhID0gQnl0ZUFy
cmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0
ZShyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CiAKICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBzcmMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYml0bWFwLT5i
eXRlcygpKTsKICAgICBpZiAoIXNyYykKQEAgLTEzNSw3ICsxMzUsNiBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBT
aGFyZWRCaXRtYQogICAgICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIAogICAgIHVu
c2lnbmVkIGNoYXIqIGRzdCA9IGltYWdlRGF0YS0+ZGF0YSgpOwotICAgIG1lbXNldChkc3QsIDAs
IGltYWdlRGF0YS0+bGVuZ3RoKCkpOwogICAgIHNyYyArPSAoc291cmNlUmVjdC55KCkgKiBiaXRt
YXAtPndpZHRoKCkgKyBzb3VyY2VSZWN0LngoKSkgKiA0OwogICAgIGRzdCArPSAoKHNvdXJjZVJl
Y3QueSgpIC0gcmVjdC55KCkpICogcmVjdC53aWR0aCgpICsgc291cmNlUmVjdC54KCkgLSByZWN0
LngoKSkgKiA0OwogICAgIGludCBieXRlc1RvQ29weSA9IHNvdXJjZVJlY3Qud2lkdGgoKSAqIDQ7
CkBAIC0xNzAsMTcgKzE2OSwxNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBTaGFyZWRCaXRtYQogICAgIHJldHVy
biBpbWFnZURhdGEucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VC
dWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29y
ZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VC
dWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29y
ZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJldHVybiBnZXRJbWFnZURhdGE8ZmFsc2U+KHJl
Y3QsIG1fZGF0YS5tX2JpdG1hcC5nZXQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJ
bWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPHRy
dWU+KHJlY3QsIG1fZGF0YS5tX2JpdG1hcC5nZXQoKSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6
OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBCeXRlQXJyYXkqIHNvdXJjZSwgY29u
c3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKK3ZvaWQgSW1hZ2VCdWZmZXI6
OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291
cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQogewogICAgIFNo
YXJlZEJpdG1hcCogYml0bWFwID0gbV9kYXRhLm1fYml0bWFwLmdldCgpOwogICAgIHVuc2lnbmVk
IGNoYXIqIGRzdCA9ICh1bnNpZ25lZCBjaGFyKiliaXRtYXAtPmJ5dGVzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwCmlu
ZGV4IDZiOGUyZDM4OGEyNjlkMTU3YjkzZGU2ZWVhYzE4NjQwNjM5ZjQwZjAuLjBjZGJjN2IzYjQ4
ZDIzMWU4NWM4ZGQxZjE0Y2I2YjIzMmVkODZmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwCkBAIC0xMjIsMTkgKzEy
MiwxOSBAQCBHcmFwaGljc0NvbnRleHQqIEltYWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QKICAg
ICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1h
Z2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBD
b29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1h
Z2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBD
b29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVs
dGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBj
b25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11
bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkg
Y29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQogCi12b2lk
IEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5
KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCit2b2lk
IEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFt
cGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3Rl
bSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvc2tpYS9KUEVHSW1hZ2VFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3NraWEvSlBFR0ltYWdlRW5jb2Rl
ci5jcHAKaW5kZXggODIxZTFkYThiNmNhOWRjOTlhMzAxMjA1ZjY3MTc2NmMzYWU0NTQ1Mi4uMjJk
NTE0YWE3MjZkN2M3YTRlYjUzY2FhNGFhZWNhNWMwZTVmODg3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvc2tpYS9KUEVHSW1hZ2VFbmNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL0pQRUdJ
bWFnZUVuY29kZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBKUEVHSW1hZ2VFbmNvZGVy
OjplbmNvZGUoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgaW50IHF1YWxpdHksIFZlY3Rvcjx1bnNp
Z24KIAogYm9vbCBKUEVHSW1hZ2VFbmNvZGVyOjplbmNvZGUoY29uc3QgSW1hZ2VEYXRhJiBpbWFn
ZURhdGEsIGludCBxdWFsaXR5LCBWZWN0b3I8dW5zaWduZWQgY2hhcj4qIG91dHB1dCkKIHsKLSAg
ICByZXR1cm4gZW5jb2RlUGl4ZWxzKGltYWdlRGF0YS5zaXplKCksIGltYWdlRGF0YS5kYXRhKCkt
PmRhdGEoKS0+ZGF0YSgpLCBmYWxzZSwgcXVhbGl0eSwgb3V0cHV0KTsKKyAgICByZXR1cm4gZW5j
b2RlUGl4ZWxzKGltYWdlRGF0YS5zaXplKCksIGltYWdlRGF0YS5kYXRhKCktPmRhdGEoKSwgZmFs
c2UsIHF1YWxpdHksIG91dHB1dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3NraWEvUE5HSW1h
Z2VFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3Nr
aWEvUE5HSW1hZ2VFbmNvZGVyLmNwcAppbmRleCA1YzExNjJiZmI3NTVlMzRjYTA1ZGYzYjdlNjM1
MjU3ODhlMDRiMTY0Li5lYWNhYTdjZGI1NmI3NTQ1MzI5MTQ2NzBhNzc1MTY5MGY1MTE1MzczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL1BO
R0ltYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5j
b2RlcnMvc2tpYS9QTkdJbWFnZUVuY29kZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBQ
TkdJbWFnZUVuY29kZXI6OmVuY29kZShjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBWZWN0b3I8dW5z
aWduZWQgY2hhcj4qIG91dHAKIAogYm9vbCBQTkdJbWFnZUVuY29kZXI6OmVuY29kZShjb25zdCBJ
bWFnZURhdGEmIGltYWdlRGF0YSwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBvdXRwdXQpCiB7Ci0g
ICAgcmV0dXJuIGVuY29kZVBpeGVscyhpbWFnZURhdGEuc2l6ZSgpLCBpbWFnZURhdGEuZGF0YSgp
LT5kYXRhKCktPmRhdGEoKSwgZmFsc2UsIG91dHB1dCk7CisgICAgcmV0dXJuIGVuY29kZVBpeGVs
cyhpbWFnZURhdGEuc2l6ZSgpLCBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCksIGZhbHNlLCBvdXRw
dXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL1dFQlBJbWFnZUVuY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvc2tpYS9XRUJQSW1hZ2VFbmNv
ZGVyLmNwcAppbmRleCA5Y2IyNGZjMDI1MjE0NWY2YzNmN2RmYzc3NzU4ZDg1ODU0YWMxNDMwLi5l
YmMyOTlkNWY5NzUxOWMzNjBjYWM4M2MyY2M3NmE2OWU4Nzg0YWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL1dFQlBJbWFnZUVuY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3NraWEvV0VC
UEltYWdlRW5jb2Rlci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIFdFQlBJbWFnZUVuY29k
ZXI6OmVuY29kZShjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBpbnQgcXVhbGl0eSwgVmVjdG9yPHVu
c2lnbgogCiBib29sIFdFQlBJbWFnZUVuY29kZXI6OmVuY29kZShjb25zdCBJbWFnZURhdGEmIGlt
YWdlRGF0YSwgaW50IHF1YWxpdHksIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiogb3V0cHV0KQogewot
ICAgIHJldHVybiBlbmNvZGVQaXhlbHMoaW1hZ2VEYXRhLnNpemUoKSwgaW1hZ2VEYXRhLmRhdGEo
KS0+ZGF0YSgpLT5kYXRhKCksIGZhbHNlLCBxdWFsaXR5LCBvdXRwdXQpOworICAgIHJldHVybiBl
bmNvZGVQaXhlbHMoaW1hZ2VEYXRhLnNpemUoKSwgaW1hZ2VEYXRhLmRhdGEoKS0+ZGF0YSgpLCBm
YWxzZSwgcXVhbGl0eSwgb3V0cHV0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcAppbmRleCBmYmVhNjRhYjkzZjgxNTk5NGI3ZTQ2YWJhNmE1ZmNkMWZiM2FmY2I0
Li42MDkxOWEyMGMzODVkZTQ4YzMxYzFmNjdmMGU3NTMyYzRiZGFkNmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVt
LmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhCiAgICAgZ2V0
RHJhd2luZ1BhcmFtZXRlcnMoZHJhd2luZ0J1ZmZlciwgbV9pbXBsLmdldCgpLCAmZnJhbWVidWZm
ZXJJZCwgJndpZHRoLCAmaGVpZ2h0KTsKIAogICAgIFJlZlB0cjxJbWFnZURhdGE+IGltYWdlRGF0
YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCkpOwotICAgIHVuc2ln
bmVkIGNoYXIqIHBpeGVscyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEoKTsKKyAg
ICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAg
IHNpemVfdCBidWZmZXJTaXplID0gNCAqIHdpZHRoICogaGVpZ2h0OwogCiAgICAgbV9pbXBsLT5y
ZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgYnVmZmVyU2l6ZSwgZnJhbWVidWZmZXJJZCwgd2lk
dGgsIGhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggZGQ2ODUxZWM3NDRkODRkYzI4NzA0ODQyZjkwNWMwMjE3YzE2Y2RhNS4uMzIwNjc3ODQ3
ODBjODJhMTRmODIzYmVjMDM0YmE4OWY2YWJiZmM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTU2LDEwICsxNTYsMTAgQEAKICNpbmNsdWRlIDxw
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJh
eS5oPgogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogI2luY2x1ZGUgIlBsYXRmb3JtR2Vz
dHVyZUV2ZW50LmgiCkBAIC0xNDcyLDcgKzE0NzIsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkb1Bp
eGVsUmVhZGJhY2tUb0NhbnZhcyhXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgcmVj
dAogICAgIEludFJlY3QgaW52ZXJ0UmVjdChyZWN0LngoKSwgYml0bWFwSGVpZ2h0IC0gcmVjdC5t
YXhZKCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCkpKTsKLSAg
ICBSZWZQdHI8Qnl0ZUFycmF5PiBwaXhlbEFycmF5KEJ5dGVBcnJheTo6Y3JlYXRlKHJlY3Qud2lk
dGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KSk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBwaXhlbEFycmF5KFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVj
dC5oZWlnaHQoKSAqIDQpKTsKICAgICBpZiAoaW1hZ2VCdWZmZXIgJiYgcGl4ZWxBcnJheSkgewog
ICAgICAgICBtX2xheWVyVHJlZVZpZXcuY29tcG9zaXRlQW5kUmVhZGJhY2socGl4ZWxBcnJheS0+
ZGF0YSgpLCBpbnZlcnRSZWN0KTsKICAgICAgICAgaW1hZ2VCdWZmZXItPnB1dEJ5dGVBcnJheShQ
cmVtdWx0aXBsaWVkLCBwaXhlbEFycmF5LmdldCgpLCByZWN0LnNpemUoKSwgSW50UmVjdChJbnRQ
b2ludCgpLCByZWN0LnNpemUoKSksIEludFBvaW50KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYzY2ZkM2I1OWJlOTBj
MGVlNzRhNzU1MTFlYTMwNGVhODk1NzA0ZmMuLmU0MWIzMTg2NjZmOWVjZDg4ODBhNGVjMzNhNmIx
NjE2NTNlN2EyNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0yMCAgS2VubmV0aCBS
dXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEltYWdlRGF0YSB0byBy
ZWZlcmVuY2UgVWludDhDbGFtcGVkQXJyYXkgcmF0aGVyIHRoYW4gQ2FudmFzUGl4ZWxBcnJheQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY2Fu
dmFzL2ltYWdlZGF0YS1jb250YWlucy11aW50OGNsYW1wZWRhcnJheS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2ltYWdlZGF0YS1jb250YWlucy11aW50OGNsYW1w
ZWRhcnJheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvc2NyaXB0LXRl
c3RzL3Bvc3RtZXNzYWdlLWNsb25lLmpzOgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3Rt
ZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wNC0yMCAgWXVyeSBTZW1pa2hhdHNr
eSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBNYXJrIGluc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4
Y2xhbXBlZGFycmF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdl
ZGF0YS1jb250YWlucy11aW50OGNsYW1wZWRhcnJheS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzA5M2MzODAxNGUxMmZmMDgxYTgwZTVjMTBiOWNjZGMxZTBlZGU5NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdlZGF0YS1jb250YWlucy11aW50OGNsYW1w
ZWRhcnJheS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBJbWFnZURh
dGEgY29udGFpbnMgYSBVaW50OENsYW1wZWRBcnJheS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgaW1hZ2VEYXRhLmRhdGEuY29uc3RydWN0b3IgaXMgVWludDhDbGFtcGVk
QXJyYXkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9pbWFnZWRhdGEtY29udGFpbnMt
dWludDhjbGFtcGVkYXJyYXkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdlZGF0
YS1jb250YWlucy11aW50OGNsYW1wZWRhcnJheS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MDBhZTA0ZTM3
ZDIwMjc2ODViNzQxZmNjMjJmM2RiMDhjMGY0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9pbWFnZWRhdGEtY29udGFpbnMtdWludDhjbGFtcGVkYXJyYXkuaHRt
bApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IEltYWdlRGF0YSBj
b250YWlucyBhIFVpbnQ4Q2xhbXBlZEFycmF5LiIpOworCit2YXIgY2FudmFzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiY2FudmFzIik7CitjYW52YXMud2lkdGggPSAxMDsKK2NhbnZhcy5oZWln
aHQgPSAxMDsKK3ZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisKK3ZhciBp
bWFnZURhdGEgPSBjb250ZXh0LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTsKK3Nob3VsZEJlKCdp
bWFnZURhdGEuZGF0YS5jb25zdHJ1Y3RvcicsICdVaW50OENsYW1wZWRBcnJheScpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvc2NyaXB0LXRlc3RzL3Bvc3RtZXNzYWdlLWNsb25lLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3NjcmlwdC10ZXN0cy9wb3N0bWVzc2FnZS1jbG9uZS5qcwppbmRleCA0NDM5
MjU0OGM4MmUxYjhkMzg3NzA3YTZjODFjNThmNTcxNGI3ZGE4Li41OWQyNGI0ZDI5OTJlNDMyNDZl
M2E4MjYzOTZmZDI4ZGUyNTZjNzBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvc2NyaXB0LXRlc3RzL3Bvc3RtZXNzYWdlLWNsb25lLmpzCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9zY3JpcHQtdGVzdHMvcG9zdG1lc3NhZ2UtY2xvbmUuanMKQEAgLTU5
LDkgKzU5LDkgQEAgdmFyIG11dGF0ZWRJbWFnZURhdGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKS5nZXRDb250ZXh0KCIyZCIpLmNyZWF0ZUkKIGZvciAodmFyIGkgPSAwOyBpIDwg
aW1hZ2VEYXRhLmRhdGEubGVuZ3RoICogNDsgaSsrKQogICAgIG11dGF0ZWRJbWFnZURhdGEuZGF0
YVtpXSA9IGkgJSAyNTY7CiB0cnlQb3N0TWVzc2FnZSgnaW1hZ2VEYXRhJywgZmFsc2UsIGltYWdl
RGF0YSk7Ci10cnlQb3N0TWVzc2FnZSgnaW1hZ2VEYXRhLmRhdGEnLCB0cnVlLCBudWxsLCBET01F
eGNlcHRpb24uREFUQV9DTE9ORV9FUlIpCit0cnlQb3N0TWVzc2FnZSgnaW1hZ2VEYXRhLmRhdGEn
LCBmYWxzZSwgaW1hZ2VEYXRhLmRhdGEpCiB0cnlQb3N0TWVzc2FnZSgnbXV0YXRlZEltYWdlRGF0
YScsIGZhbHNlLCBpbWFnZURhdGEpOwotdHJ5UG9zdE1lc3NhZ2UoJ211dGF0ZWRJbWFnZURhdGEu
ZGF0YScsIHRydWUsIG51bGwsIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUikKK3RyeVBvc3RN
ZXNzYWdlKCdtdXRhdGVkSW1hZ2VEYXRhLmRhdGEnLCBmYWxzZSwgaW1hZ2VEYXRhLmRhdGEpCiBm
b3IgKHZhciBpID0gMDsgaSA8IGltYWdlRGF0YS5kYXRhLmxlbmd0aCAqIDQ7IGkrKykKICAgICBt
dXRhdGVkSW1hZ2VEYXRhLmRhdGFbaV0gPSAwOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0
ZWQudHh0CmluZGV4IDRhYWQ3Y2ZiMDQ3YTJjYWJkYjUzYjI3ODFkM2IwNTNmMGVkMTI0MDAuLmFk
YjdhZWQ1NTc0NThhOTNjN2NiZDhhOGM2YjQ5MzlhODgyMDQ1YTUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
Y2xvbmUtZXhwZWN0ZWQudHh0CkBAIC02LDggKzYsNiBAQCBGQUlMOiAncG9zdE1lc3NhZ2UoKGZ1
bmN0aW9uKCl7fSkpJyBzaG91bGQgdGhyb3cgYnV0IGRpZG4ndAogRkFJTDogJ3Bvc3RNZXNzYWdl
KHZhciB4ID0gMDsgdHJ5IHsgZXZhbCgiYmFkcmVmIik7IH0gY2F0Y2goZSkgeyB4ID0gZTsgfSB4
KScgc2hvdWxkIHRocm93IGJ1dCBkaWRuJ3QKIFBBU1M6ICdwb3N0TWVzc2FnZSh3aW5kb3cpJyB0
aHJldyBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1M6ICdwb3N0TWVzc2FnZSgoe2dldCBhKCkg
eyB0aHJvdyAieCIgfX0pKScgdGhyZXcgeAotRkFJTDogJ3Bvc3RNZXNzYWdlKGltYWdlRGF0YS5k
YXRhKScgc2hvdWxkIHRocm93IGJ1dCBkaWRuJ3QKLUZBSUw6ICdwb3N0TWVzc2FnZShtdXRhdGVk
SW1hZ2VEYXRhLmRhdGEpJyBzaG91bGQgdGhyb3cgYnV0IGRpZG4ndAogUEFTUzogJ3Bvc3RNZXNz
YWdlKChmdW5jdGlvbigpIHtyZXR1cm4ge2dldCBhKCkgeyB0aHJvdyAiYWNjZXNzb3ItZXhuIjsg
fX07fSkoKSknIHRocmV3IGFjY2Vzc29yLWV4bgogUEFTUzogJ3Bvc3RNZXNzYWdlKChmdW5jdGlv
bigpIHt2YXIgb2JqYSA9IHtnZXQgcCgpIHsgdGhyb3cgImFjY2Vzc29yLWV4biI7IH19OyByZXR1
cm4ge2dldCBhKCkgeyByZXR1cm4gb2JqYTsgfX07fSkoKSknIHRocmV3IGFjY2Vzc29yLWV4bgog
UEFTUzogbGFzdEluZGV4IGluaXRpYWxseSBjb3JyZWN0OiB3YXMgMwpAQCAtNDQsNyArNDIsOSBA
QCBQQVNTOiBldmVudERhdGEgaXMgPT09IHRvIGV2ZW50RGF0YVswXQogUEFTUzogZXZlbnREYXRh
LmdyYXBoMSBpcyA9PT0gdG8gZXZlbnREYXRhLmdyYXBoMgogUEFTUzogZXZlbnREYXRhWzBdIGlz
ID09PSB0byBldmVudERhdGFbMV0KIFBBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IEltYWdlRGF0
YV0gb2YgdHlwZSBvYmplY3QKK1BBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IFVpbnQ4Q2xhbXBl
ZEFycmF5XSBvZiB0eXBlIG9iamVjdAogUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgSW1hZ2VE
YXRhXSBvZiB0eXBlIG9iamVjdAorUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgVWludDhDbGFt
cGVkQXJyYXldIG9mIHR5cGUgb2JqZWN0CiBQQVNTOiBldmVudERhdGEgaXMgNDIgb2YgdHlwZSBu
dW1iZXIKIFBBU1M6IGV2ZW50RGF0YSBpcyA0MiBvZiB0eXBlIG51bWJlcgogUEFTUzogZXZhbFRo
dW5rIE9LCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
Y2xvbmUtZXhwZWN0ZWQudHh0CmluZGV4IDcxNmRkNmRkMDEwNTcyNWZjNWMwNGZkYTcwNzE5YmZl
ZjVlNTVhYjIuLmY2N2ZhZWE0NTBhYjI3ODQ4ZGIyOGIwNDUyNGM4ZmM3NzU3OTY0MDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhw
ZWN0ZWQudHh0CkBAIC00LDggKzQsNiBAQCBQQVNTOiAncG9zdE1lc3NhZ2UoKGZ1bmN0aW9uKCl7
fSkpJyB0aHJldyBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMgogUEFTUzog
J3Bvc3RNZXNzYWdlKHZhciB4ID0gMDsgdHJ5IHsgZXZhbCgiYmFkcmVmIik7IH0gY2F0Y2goZSkg
eyB4ID0gZTsgfSB4KScgdGhyZXcgRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9u
IDI1CiBQQVNTOiAncG9zdE1lc3NhZ2Uod2luZG93KScgdGhyZXcgRXJyb3I6IERBVEFfQ0xPTkVf
RVJSOiBET00gRXhjZXB0aW9uIDI1CiBQQVNTOiAncG9zdE1lc3NhZ2UoKHtnZXQgYSgpIHsgdGhy
b3cgIngiIH19KSknIHRocmV3IHgKLVBBU1M6ICdwb3N0TWVzc2FnZShpbWFnZURhdGEuZGF0YSkn
IHRocmV3IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQotUEFTUzogJ3Bv
c3RNZXNzYWdlKG11dGF0ZWRJbWFnZURhdGEuZGF0YSknIHRocmV3IEVycm9yOiBEQVRBX0NMT05F
X0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogUEFTUzogJ3Bvc3RNZXNzYWdlKChmdW5jdGlvbigpIHty
ZXR1cm4ge2dldCBhKCkgeyB0aHJvdyAiYWNjZXNzb3ItZXhuIjsgfX07fSkoKSknIHRocmV3IGFj
Y2Vzc29yLWV4bgogUEFTUzogJ3Bvc3RNZXNzYWdlKChmdW5jdGlvbigpIHt2YXIgb2JqYSA9IHtn
ZXQgcCgpIHsgdGhyb3cgImFjY2Vzc29yLWV4biI7IH19OyByZXR1cm4ge2dldCBhKCkgeyByZXR1
cm4gb2JqYTsgfX07fSkoKSknIHRocmV3IGFjY2Vzc29yLWV4bgogUEFTUzogbGFzdEluZGV4IGlu
aXRpYWxseSBjb3JyZWN0OiB3YXMgMwpAQCAtNDAsNyArMzgsOSBAQCBQQVNTOiBldmVudERhdGEg
aXMgPT09IHRvIGV2ZW50RGF0YVswXQogUEFTUzogZXZlbnREYXRhLmdyYXBoMSBpcyA9PT0gdG8g
ZXZlbnREYXRhLmdyYXBoMgogUEFTUzogZXZlbnREYXRhWzBdIGlzID09PSB0byBldmVudERhdGFb
MV0KIFBBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IEltYWdlRGF0YV0gb2YgdHlwZSBvYmplY3QK
K1BBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSBvZiB0eXBlIG9i
amVjdAogUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgSW1hZ2VEYXRhXSBvZiB0eXBlIG9iamVj
dAorUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIG9mIHR5cGUg
b2JqZWN0CiBQQVNTOiBldmVudERhdGEgaXMgNDIgb2YgdHlwZSBudW1iZXIKIFBBU1M6IGV2ZW50
RGF0YSBpcyA0MiBvZiB0eXBlIG51bWJlcgogUEFTUzogZXZhbFRodW5rIE9LCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVz
c2FnZS1jbG9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQKaW5kZXggMWRj
MTUyNWYxMTk3OTFiMDFmYzMwNTA2ZmViMWNmYWRmMjliNjcwNS4uMTFhMjQ0MGI2ZGZmMWY1OTI0
Mjk4YzEwZWRmNmZlMGJhZGFmNmI0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBv
c3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dApAQCAtMzcsMTQgKzM3LDE0IEBAIFBBU1M6IGV2
ZW50RGF0YSBpcyA9PT0gdG8gZXZlbnREYXRhLnNlbGYKIFBBU1M6IGV2ZW50RGF0YSBpcyA9PT0g
dG8gZXZlbnREYXRhWzBdCiBQQVNTOiBldmVudERhdGEuZ3JhcGgxIGlzID09PSB0byBldmVudERh
dGEuZ3JhcGgyCiBQQVNTOiBldmVudERhdGFbMF0gaXMgPT09IHRvIGV2ZW50RGF0YVsxXQotRkFJ
TDogJ3Bvc3RNZXNzYWdlKGltYWdlRGF0YS5kYXRhKScgc2hvdWxkIHRocm93IGJ1dCBkaWRuJ3QK
LUZBSUw6ICdwb3N0TWVzc2FnZShtdXRhdGVkSW1hZ2VEYXRhLmRhdGEpJyBzaG91bGQgdGhyb3cg
YnV0IGRpZG4ndAogUEFTUzogJ3Bvc3RNZXNzYWdlKChmdW5jdGlvbigpIHtyZXR1cm4ge2dldCBh
KCkgeyB0aHJvdyAiYWNjZXNzb3ItZXhuIjsgfX07fSkoKSknIHRocmV3IGFjY2Vzc29yLWV4bgog
UEFTUzogJ3Bvc3RNZXNzYWdlKChmdW5jdGlvbigpIHt2YXIgb2JqYSA9IHtnZXQgcCgpIHsgdGhy
b3cgImFjY2Vzc29yLWV4biI7IH19OyByZXR1cm4ge2dldCBhKCkgeyByZXR1cm4gb2JqYTsgfX07
fSkoKSknIHRocmV3IGFjY2Vzc29yLWV4bgogUEFTUzogbGFzdEluZGV4IGluaXRpYWxseSBjb3Jy
ZWN0OiB3YXMgMwogUEFTUzogc2FuaXR5IG9uIGZpbGUgcmVmZXJlbmNlIGVxdWFsaXR5CiBQQVNT
OiBldmVudERhdGEgaXMgW29iamVjdCBJbWFnZURhdGFdIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBl
dmVudERhdGEgaXMgW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0gb2YgdHlwZSBvYmplY3QKIFBB
U1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IEltYWdlRGF0YV0gb2YgdHlwZSBvYmplY3QKK1BBU1M6
IGV2ZW50RGF0YSBpcyBbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSBvZiB0eXBlIG9iamVjdAog
UEFTUzogZXZlbnREYXRhIGlzIDQyIG9mIHR5cGUgbnVtYmVyCiBQQVNTOiBldmVudERhdGEgaXMg
NDIgb2YgdHlwZSBudW1iZXIKIFBBU1M6IGV2YWxUaHVuayBPSwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138212</attachid>
            <date>2012-04-20 18:40:59 -0700</date>
            <delta_ts>2012-04-23 10:42:44 -0700</delta_ts>
            <desc>Patch for EWS bots</desc>
            <filename>bug-73011-20120420184058.patch</filename>
            <type>text/plain</type>
            <size>121551</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0ODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ5YmI2MDNkMzVlN2Q5
NzU1Zjg3ZGFiNWI0OGY3Y2U1NjAyMjRkZC4uYTNlNWIyNzJiMmU2MDM4M2NiYjBiZGY2YzRhYjcx
MzgwMTc0OWQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAxMi0wNC0yMCAgS2Vu
bmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEltYWdlRGF0
YSB0byByZWZlcmVuY2UgVWludDhDbGFtcGVkQXJyYXkgcmF0aGVyIHRoYW4gQ2FudmFzUGl4ZWxB
cnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMw
MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFu
Z2VkIEltYWdlRGF0YSB0byBjb250YWluIFVpbnQ4Q2xhbXBlZEFycmF5IGluc3RlYWQgb2YgQnl0
ZUFycmF5CisgICAgICAgIHBlciBjdXJyZW50IEhUTUw1IHNwZWMuCisKKyAgICAgICAgSW4gb3Jk
ZXIgdG8gYXZvaWQgaW50cm9kdWNpbmcgbGFyZ2UgZGF0YSBjb3BpZXMsIGl0IHdhcyBuZWNlc3Nh
cnkgdG8KKyAgICAgICAgc3dpdGNoIGEgZmV3IG90aGVyIHBsYWNlcyBpbiBXZWJLaXQgdG8gdXNl
IFVpbnQ4Q2xhbXBlZEFycmF5IGF0IHRoZQorICAgICAgICBzYW1lIHRpbWUsIG1vc3Qgbm90YWJs
eSB0aGUgRmlsdGVyRWZmZWN0IGltcGxlbWVudGF0aW9uLCBwb3J0aW9ucyBvZgorICAgICAgICBJ
bWFnZUJ1ZmZlciwgYW5kIGEgY291cGxlIG9mIHBsYWNlcyBpbiB0aGUgaW1hZ2UgZW5jb2RlcnMu
CisKKyAgICAgICAgTm90ZSB0aGF0IFVpbnQ4Q2xhbXBlZEFycmF5IGlzIGFsd2F5cyBhbGxvY2F0
ZWQgemVyby1maWxsZWQsIHdoaWNoCisgICAgICAgIGFsbG93ZWQgbWFudWFsIHplcm9pbmcgY29k
ZSB0byBiZSByZW1vdmVkIGluIGEgZmV3IHBsYWNlcy4KKworICAgICAgICBOb3RlIGFsc28gdGhh
dCB0aGUgY2hhbmdlIGluIG1ldGhvZCBuYW1lIGZyb20gImdldCIgdG8gIml0ZW0iCisgICAgICAg
IG9jY3VycmVkIGJlY2F1c2UgSlNDJ3MgYXV0b2dlbmVyYXRlZCBpbmRleGVkIGdldHRlcnMgcmVm
ZXJlbmNlIGEKKyAgICAgICAgbWV0aG9kIGNhbGxlZCAiaXRlbSIuIElmIGRlc2lyZWQsIGEgY29u
dmVuaWVuY2UgbWV0aG9kIGNvdWxkIGJlCisgICAgICAgIGludHJvZHVjZWQgdG8gYXZvaWQgdGhl
IHJlbmFtaW5ncyBpbiB0aGUgRmlsdGVyRWZmZWN0IGNsYXNzZXMuCisKKyAgICAgICAgV2l0aCB0
aGVzZSBjaGFuZ2VzLCBCeXRlQXJyYXkgYW5kIHNvbWUgY3VzdG9tIGNvZGUgaW4gSmF2YVNjcmlw
dENvcmUKKyAgICAgICAgYWN0dWFsbHkgYmVjb21lIHVucmVmZXJlbmNlZCwgYW5kIGNhbiBiZSBk
ZWxldGVkLiBUaGlzIGRlbGV0aW9uIHdpbGwKKyAgICAgICAgYmUgZG9uZSBzZXBhcmF0ZWx5IGlu
IEJ1ZyA4MzY1NSwgdG8ga2VlcCB0aGUgc2l6ZSBvZiB0aGlzIHBhdGNoCisgICAgICAgIG1hbmFn
ZWFibGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVp
bnQ4Y2xhbXBlZGFycmF5Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRh
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNl
cmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJp
YWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRh
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJyaWRnZS9x
dC9xdF9waXhtYXBydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFw
VG9JbWFnZURhdGFNZXRob2Q6Omludm9rZSk6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmg6Cisg
ICAgICAgIChJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhKToK
KyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVtcHR5
SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFj
dEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VG9MdW1pbmFu
Y2VNYXNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRJ
bWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGll
ZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlw
bGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFy
cmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
YXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5oOgorICAgICAgICAoSW1hZ2VCdWZmZXJEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVu
ZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWZmZWN0VHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXJpdGht
ZXRpY1NvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVN
YXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RGVzdGluYXRpb25QaXhlbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6ZmFzdFNldEludGVyaW9yUGl4ZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmZhc3RTZXRPdXRlclBpeGVscyk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5oOgorICAgICAgICAoUGFpbnRpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9t
RmlsdGVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0
b21GaWx0ZXI6OmJpbmRQcm9ncmFtQW5kQnVmZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEZFQ3VzdG9tRmlsdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFw
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJveEJsdXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlHZW5lcmljKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKKyAgICAgICAg
KFBsYXRmb3JtQXBwbHlQYXJhbWV0ZXJzKToKKyAgICAgICAgKEZFR2F1c3NpYW5CbHVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjp0b3BMZWZ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6dG9wUm93KToKKyAgICAgICAgKFdl
YkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6dG9wUmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpsZWZ0Q29sdW1uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6aW50ZXJpb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpyaWdodENvbHVtbik6CisgICAgICAgIChX
ZWJDb3JlOjpGRUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OmJvdHRvbUxlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21Sb3cpOgorICAgICAgICAo
V2ViQ29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21SaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpGRUxpZ2h0aW5nOjppbmxpbmVTZXRQaXhlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGlu
Zzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAgKExpZ2h0aW5nRGF0YSk6CisgICAgICAgIChG
RUxpZ2h0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhv
bG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlH
ZW5lcmljKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9n
eS5oOgorICAgICAgICAoUGFpbnRpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVu
Y2U6OmZpbGxSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmg6CisgICAgICAgIChGaWxsUmVnaW9uUGFyYW1ldGVycyk6CisgICAgICAgIChG
RVR1cmJ1bGVuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Zm9yY2VWYWxpZFBy
ZU11bHRpcGxpZWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojphc1Vu
bXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNQcmVt
dWx0aXBsaWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5SW1h
Z2VCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxp
ZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBs
aWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRp
cGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0
ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKEZpbHRlckVmZmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9hcm0vRkVHYXVzc2lhbkJsdXJORU9OLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseU5lb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlQnVmZmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpn
ZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6
OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1h
Z2VCdWZmZXJXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbWFnZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZW5jb2RlcnMvc2tpYS9KUEVHSW1hZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpQRUdJbWFnZUVuY29kZXI6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvc2tpYS9QTkdJbWFnZUVuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5H
SW1hZ2VFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWVuY29kZXJz
L3NraWEvV0VCUEltYWdlRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VF
bmNvZGVyOjplbmNvZGUpOgorCiAyMDEyLTA0LTIwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE0
MzMzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzOTMyOTY4YjM2MWY1MzYzNjI4NWE0
YTc2OWUzOGY4NDI0YWFiMTM1Li5iMTc5NjJlZjZmYmY2ODllNTFhZThlOTAwOGZlNzc0Y2YxZWJj
ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA0
LTIwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBDaGFuZ2Ug
SW1hZ2VEYXRhIHRvIHJlZmVyZW5jZSBVaW50OENsYW1wZWRBcnJheSByYXRoZXIgdGhhbiBDYW52
YXNQaXhlbEFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MzAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKToKKwogMjAxMi0wNC0yMCAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBT
dXBwb3J0IGdldC9nZXRLZXkoa2V5UmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggZDJjYTQ3NmM3M2RhODNhMGU1ZjhjYzRm
NzEyMDRhZGFhMDc4NjNjYS4uZDlkNjk0ZWM3YmUwMmQ5YjdiNTY3NTdmMmRhN2U3NjVlMzY2MWJk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9t
LmNwcApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKU0ltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkpTVWludDhDbGFtcGVkQXJyYXkuaCIKIAogI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKLSNpbmNs
dWRlIDxydW50aW1lL0pTQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNDcsMTAgKzQ3LDcgQEAgSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VE
YXRhKiBpbWFnZUQKICAgICAKICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMs
IGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhLCBpbWFnZURhdGEpOwogICAgIElkZW50aWZpZXIgZGF0
YU5hbWUoZXhlYywgImRhdGEiKTsKLSAgICBTdHJ1Y3R1cmUqIGNwYVN0cnVjdHVyZSA9IGdldENh
Y2hlZERPTVN0cnVjdHVyZShnbG9iYWxPYmplY3QsICZKU0J5dGVBcnJheTo6c19pbmZvKTsKLSAg
ICBpZiAoIWNwYVN0cnVjdHVyZSkKLSAgICAgICAgY3BhU3RydWN0dXJlID0gY2FjaGVET01TdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LCBKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgJkpTQnl0ZUFycmF5OjpzX2luZm8p
LCAmSlNCeXRlQXJyYXk6OnNfaW5mbyk7Ci0gICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZGF0YU5hbWUsIEpTQnl0ZUFycmF5OjpjcmVhdGUoZXhlYywgY3BhU3RydWN0
dXJlLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICB3cmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRhTmFtZSwgdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIGltYWdlRGF0YS0+ZGF0YSgpKSwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KTsKICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbWFnZURh
dGEtPmRhdGEoKS0+bGVuZ3RoKCkpOwogICAgIAogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggNWQyZDUxZGRjYTRmZGE1YThmMzE5ZWYwOGU2ZGUzMjhlOGJiZWUyMi4uN2M3MTZjMGJh
MWUyZjkxYmY1MDYxMmU4MzlkZTRlYmVmM2Y0NDI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02Myw4ICs2Myw4
IEBACiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHAuaD4KICNpbmNsdWRlIDxydW50aW1lL1JlZ0V4
cE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9C
eXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9V
aW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKQEAgLTYwOSw3ICs2MDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHdyaXRlKGRhdGEtPndpZHRoKCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdo
dCgpKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKLSAg
ICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpLCBkYXRhLT5k
YXRhKCktPmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCktPmRh
dGEoKSwgZGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0cygmUmVnRXhw
T2JqZWN0OjpzX2luZm8pKSB7CkBAIC0xNDMwLDcgKzE0MzAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJl
ZlB0cjxJbWFnZURhdGE+IHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUod2lkdGgs
IGhlaWdodCkpOwotICAgICAgICAgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSgpLT5kYXRhKCktPmRh
dGEoKSwgbV9wdHIsIGxlbmd0aCk7CisgICAgICAgICAgICBtZW1jcHkocmVzdWx0LT5kYXRhKCkt
PmRhdGEoKSwgbV9wdHIsIGxlbmd0aCk7CiAgICAgICAgICAgICBtX3B0ciArPSBsZW5ndGg7CiAg
ICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShyZXN1bHQuZ2V0KCkpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCBmNjBkMzY2YTg3ZjZhMWQxMmI1OTQ0ODk5Zjc5NjYyMTM1MjBlYTFhLi4zOTQ2
MTdjMGE5ZmI4N2M4YjBiNDA2YmYwNWJkYjcxN2Y5MDcxNzk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTM0LDcg
KzM0LDYgQEAKICNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJy
YXkuaD4KICNpbmNsdWRlICJDYW52YXNQaXhlbEFycmF5LmgiCiAjaW5jbHVkZSAiRGF0YVZpZXcu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC0xMDA2LDcgKzEwMDUsNyBAQCBwcml2
YXRlOgogICAgICAgICBJbWFnZURhdGEqIGltYWdlRGF0YSA9IFY4SW1hZ2VEYXRhOjp0b05hdGl2
ZSh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpKTsKICAgICAgICAgaWYgKCFpbWFnZURhdGEpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIFdURjo6Qnl0ZUFycmF5KiBwaXhlbEFycmF5ID0gaW1h
Z2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKKyAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVs
QXJyYXkgPSBpbWFnZURhdGEtPmRhdGEoKTsKICAgICAgICAgbV93cml0ZXIud3JpdGVJbWFnZURh
dGEoaW1hZ2VEYXRhLT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdodCgpLCBwaXhlbEFycmF5LT5k
YXRhKCksIHBpeGVsQXJyYXktPmxlbmd0aCgpKTsKICAgICB9CiAKQEAgLTE1ODIsNyArMTU4MSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX3Bvc2l0aW9uICsgcGl4ZWxEYXRhTGVuZ3RoID4g
bV9sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxJbWFn
ZURhdGE+IGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdo
dCkpOwotICAgICAgICBXVEY6OkJ5dGVBcnJheSogcGl4ZWxBcnJheSA9IGltYWdlRGF0YS0+ZGF0
YSgpLT5kYXRhKCk7CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFycmF5ID0gaW1h
Z2VEYXRhLT5kYXRhKCk7CiAgICAgICAgIEFTU0VSVChwaXhlbEFycmF5KTsKICAgICAgICAgQVNT
RVJUKHBpeGVsQXJyYXktPmxlbmd0aCgpID49IHBpeGVsRGF0YUxlbmd0aCk7CiAgICAgICAgIG1l
bWNweShwaXhlbEFycmF5LT5kYXRhKCksIG1fYnVmZmVyICsgbV9wb3NpdGlvbiwgcGl4ZWxEYXRh
TGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbWFnZURhdGFDdXN0b20uY3BwCmluZGV4IGI0NTQ5ZTQxNjU5Y2ZiMjE1MTEyMjg0ZGUwMTI0
ZWZhNWI3ZTA1MWIuLjEyY2I2NjhmMWYyMTExZWFkNGRmYWY1OGU3YzZjNjAzMDc0MWMzMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VE
YXRhQ3VzdG9tLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlY4SW1hZ2VEYXRhLmgiCiAKLSNpbmNsdWRlICJWOENhbnZhc1BpeGVsQXJyYXkuaCIK
KyNpbmNsdWRlICJWOFVpbnQ4Q2xhbXBlZEFycmF5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDEsNyArNDEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJbWFnZURhdGEq
IGltcGwpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IFY4SW1hZ2VEYXRhOjp3cmFwKGltcGwpOwogICAgIGlmICghd3JhcHBl
ci5Jc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gQ3JlYXRlIGEgVjggQ2FudmFzUGl4ZWxBcnJheSBv
YmplY3QuCisgICAgICAgIC8vIENyZWF0ZSBhIFY4IFVpbnQ4Q2xhbXBlZEFycmF5IG9iamVjdC4K
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBpeGVsQXJyYXkgPSB0b1Y4KGltcGwtPmRh
dGEoKSk7CiAgICAgICAgIC8vIFNldCB0aGUgImRhdGEiIHByb3BlcnR5IG9mIHRoZSBJbWFnZURh
dGEgb2JqZWN0IHRvCiAgICAgICAgIC8vIHRoZSBjcmVhdGVkIHY4IG9iamVjdCwgZWxpbWluYXRp
bmcgdGhlIEMrKyBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X3BpeG1hcHJ1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1h
cHJ1bnRpbWUuY3BwCmluZGV4IDljMWNkYWQwMjNjOGIxNGUwOTlhM2ExMzljNzhlYjllMjE3ZGUx
MTQuLjdlOGQ3YTViN2Y2OTc5ZGJhNDNhMjBjZWRiY2ZkYjYzNTZiMGMwZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKQEAgLTkyLDkgKzkyLDgg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgaW50IHdpZHRoID0gaW5zdGFuY2UtPndpZHRoKCk7
CiAgICAgICAgIGludCBoZWlnaHQgPSBpbnN0YW5jZS0+aGVpZ2h0KCk7Ci0gICAgICAgIFJlZlB0
cjxCeXRlQXJyYXk+IGJ5dGVBcnJheSA9IEJ5dGVBcnJheTo6Y3JlYXRlKHdpZHRoICogaGVpZ2h0
ICogNCk7Ci0gICAgICAgIGNvcHlQaXhlbHMoaW5zdGFuY2UtPnRvSW1hZ2UoKSwgd2lkdGgsIGhl
aWdodCwgYnl0ZUFycmF5LT5kYXRhKCkpOwotICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFn
ZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBieXRlQXJy
YXkpOworICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNy
ZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICAgICAgY29weVBpeGVscyhpbnN0YW5j
ZS0+dG9JbWFnZSgpLCB3aWR0aCwgaGVpZ2h0LCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBpbWFnZURhdGEuZ2V0KCkpOwogICAgIH0K
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKaW5kZXggYWQyNDEzNjYzM2VjY2U0
MjgzZjFjZGM3ZjY0N2U1Yjc4NTg5NzVkMy4uZGVlNTllNGI1Y2JjNDk2MmQ3MzdhYzZhZjRiNDY5
OWZjNDM4ODk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcApAQCAtMzMsMjQgKzMzLDQx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0
YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUpCiB7CisgICAgQ2hlY2tlZDxpbnQsIFJlY29y
ZE92ZXJmbG93PiBkYXRhU2l6ZSA9IDQ7CisgICAgZGF0YVNpemUgKj0gc2l6ZS53aWR0aCgpOwor
ICAgIGRhdGFTaXplICo9IHNpemUuaGVpZ2h0KCk7CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJm
bG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElt
YWdlRGF0YShzaXplKSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNy
ZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gYnl0ZUFycmF5
KQorUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUm
IHNpemUsIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGJ5dGVBcnJheSkKIHsKKyAgICBD
aGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFTaXplID0gNDsKKyAgICBkYXRhU2l6ZSAq
PSBzaXplLndpZHRoKCk7CisgICAgZGF0YVNpemUgKj0gc2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAo
ZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChk
YXRhU2l6ZS51bnNhZmVHZXQoKSA8IDAKKyAgICAgICAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRhdGFTaXplLnVuc2FmZUdldCgpKSA+IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiAwOworCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURhdGEoc2l6ZSwgYnl0ZUFy
cmF5KSk7CiB9CiAKIEltYWdlRGF0YTo6SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZGF0YShDYW52YXNQaXhlbEFycmF5OjpjcmVhdGUo
c2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQpKQorICAgICwgbV9kYXRhKFVpbnQ4Q2xh
bXBlZEFycmF5OjpjcmVhdGUoc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQpKQogewog
fQogCi1JbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRy
PEJ5dGVBcnJheT4gYnl0ZUFycmF5KQorSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYnl0ZUFycmF5KQogICAgIDog
bV9zaXplKHNpemUpCi0gICAgLCBtX2RhdGEoQ2FudmFzUGl4ZWxBcnJheTo6Y3JlYXRlKGJ5dGVB
cnJheSkpCisgICAgLCBtX2RhdGEoYnl0ZUFycmF5KQogeworICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQpIDw9IG1fZGF0YS0+
bGVuZ3RoKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAppbmRleCAzNWQwOGU3MWQy
ODQ0ZjI1YWE2MTlhMzg5M2U0ZDJjMmExMzBiMmNjLi43NjE2ODcwNjNhNTVlNTQ1ZmJjZGRjNjhm
YjA4OTJmNDllNDljYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTI5LDMwICsyOSwy
OSBAQAogI2lmbmRlZiBJbWFnZURhdGFfaAogI2RlZmluZSBJbWFnZURhdGFfaAogCi0jaW5jbHVk
ZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlIDx3
dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1h
Z2VEYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVh
dGUoY29uc3QgSW50U2l6ZSYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRGF0YT4gY3Jl
YXRlKGNvbnN0IEludFNpemUmLCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4pOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBQYXNzUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5Pik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsg
fQogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KLSAg
ICBDYW52YXNQaXhlbEFycmF5KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9
CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0
KCk7IH0KIAogcHJpdmF0ZToKICAgICBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYpOwotICAgIElt
YWdlRGF0YShjb25zdCBJbnRTaXplJiwgUGFzc1JlZlB0cjxCeXRlQXJyYXk+KTsKKyAgICBJbWFn
ZURhdGEoY29uc3QgSW50U2l6ZSYsIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+KTsKIAog
ICAgIEludFNpemUgbV9zaXplOwotICAgIFJlZlB0cjxDYW52YXNQaXhlbEFycmF5PiBtX2RhdGE7
CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwKaW5kZXggYzg1OTQ1NDE3NGMz
N2M1MThiMGFhMDZiOTcyNTg1ZjE0N2Y2ZjZjNy4uZjJlYTBjYTZiNzM2YzI5YTkzMjdiY2RlYzg0
ZTVjYTcyYjkwMWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbApAQCAtMzQsNyArMzQs
NyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHdpZHRo
OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBoZWlnaHQ7CiAjaWYgIWRlZmluZWQo
TEFOR1VBR0VfSkFWQVNDUklQVCkgfHwgIUxBTkdVQUdFX0pBVkFTQ1JJUFQKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIENhbnZhc1BpeGVsQXJyYXkgZGF0YTsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFVpbnQ4Q2xhbXBlZEFycmF5IGRhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAppbmRleCA5MmE2ZTllNjcwOTM0NDhjY2YzYmZjNjdmZmQzNGRmMzQ0YWI5YzNmLi4y
ZjZiYWE3OWI4MzgyNjc2NmQwNzk3MjIyYzcwYWM3MTE1NDI4MzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
QEAgLTYyLDEwICs2MiwxNCBAQAogI2luY2x1ZGUgIlRleHRNZXRyaWNzLmgiCiAjaW5jbHVkZSAi
VGV4dFJ1bi5oIgogCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2VuZGlmCisKICNp
bmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVk
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogI2lmIFVTRShDRykKQEAg
LTE3MzMsMTQgKzE3MzcsNyBAQCBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogCiBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURh
dGE+IGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgQ2hl
Y2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiBkYXRhU2l6ZSA9IDQ7Ci0gICAgZGF0YVNpemUgKj0g
c2l6ZS53aWR0aCgpOwotICAgIGRhdGFTaXplICo9IHNpemUuaGVpZ2h0KCk7Ci0gICAgaWYgKGRh
dGFTaXplLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBSZWZQdHI8
SW1hZ2VEYXRhPiBkYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc2l6ZSk7Ci0gICAgbWVtc2V0KGRh
dGEtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCksIDAsIGRhdGEtPmRhdGEoKS0+ZGF0YSgpLT5sZW5n
dGgoKSk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCkBAIC0xODI5LDcgKzE4MjYs
NyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJ
bWFnZURhdGEoSW1hZ2VCdWZmZXI6OkNvb3JkaQogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEoaW1hZ2VEYXRhUmVjdC5zaXplKCkpOwogCi0gICAg
UmVmUHRyPEJ5dGVBcnJheT4gYnl0ZUFycmF5ID0gYnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFn
ZURhdGEoaW1hZ2VEYXRhUmVjdCwgY29vcmRpbmF0ZVN5c3RlbSk7CisgICAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBieXRlQXJyYXkgPSBidWZmZXItPmdldFVubXVsdGlwbGllZEltYWdlRGF0
YShpbWFnZURhdGFSZWN0LCBjb29yZGluYXRlU3lzdGVtKTsKICAgICBpZiAoIWJ5dGVBcnJheSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE5MDIsNyArMTg5OSw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpwdXRJbWFnZURhdGEoSW1hZ2VEYXRhKiBkYXRhLCBJbWFnZUJ1ZmZl
cjo6Q29vcmRpCiAgICAgSW50UmVjdCBzb3VyY2VSZWN0KGRlc3RSZWN0KTsKICAgICBzb3VyY2VS
ZWN0Lm1vdmUoLWRlc3RPZmZzZXQpOwogCi0gICAgYnVmZmVyLT5wdXRCeXRlQXJyYXkoVW5tdWx0
aXBsaWVkLCBkYXRhLT5kYXRhKCktPmRhdGEoKSwgSW50U2l6ZShkYXRhLT53aWR0aCgpLCBkYXRh
LT5oZWlnaHQoKSksIHNvdXJjZVJlY3QsIEludFBvaW50KGRlc3RPZmZzZXQpLCBjb29yZGluYXRl
U3lzdGVtKTsKKyAgICBidWZmZXItPnB1dEJ5dGVBcnJheShVbm11bHRpcGxpZWQsIGRhdGEtPmRh
dGEoKSwgSW50U2l6ZShkYXRhLT53aWR0aCgpLCBkYXRhLT5oZWlnaHQoKSksIHNvdXJjZVJlY3Qs
IEludFBvaW50KGRlc3RPZmZzZXQpLCBjb29yZGluYXRlU3lzdGVtKTsKIAogICAgIGlmIChjb29y
ZGluYXRlU3lzdGVtID09IEltYWdlQnVmZmVyOjpCYWNraW5nU3RvcmVDb29yZGluYXRlU3lzdGVt
KSB7CiAgICAgICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBkZXN0UmVjdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApp
bmRleCAwM2JiZDAzNjJiMTJmZjA4YjYzZjBhZjg0NDNhNzhlMjg5YThkMzI4Li5hMjgyZTgwMjcz
ZTNiNDVmZWQ1MWU5NzZjNGU4YjRkN2JiOTI5N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBAIC0yMDIsNyAr
MjAyLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdEltYWdlRGF0YShJbWFnZURh
dGEqIGltYWdlRGF0YSwKICAgICBpbnQgaGVpZ2h0ID0gaW1hZ2VEYXRhLT5oZWlnaHQoKTsKICAg
ICBpbnQgZGF0YUJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwogICAgIGRhdGEucmVzaXplKGRh
dGFCeXRlcyk7Ci0gICAgaWYgKCFwYWNrUGl4ZWxzKGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCkt
PmRhdGEoKSwKKyAgICBpZiAoIXBhY2tQaXhlbHMoaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSwK
ICAgICAgICAgICAgICAgICAgICAgU291cmNlRm9ybWF0UkdCQTgsCiAgICAgICAgICAgICAgICAg
ICAgIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICBoZWlnaHQsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggZTRhOWZkODU3NGYw
YjQ3ZTY2Y2U4YjU1NmMzYjVhZTM3MDgyOTUyOC4uYmMzZDM2MTI5MDNiYTkzZTU0ZDFkMDYwOTlk
NDE0YTZjOWUyOGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcApAQCAtNzIsMTYgKzcyLDE2IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnRy
YW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRz
dENvCiBpbmxpbmUgdm9pZCBJbWFnZUJ1ZmZlcjo6Z2VuZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1h
c2soKQogewogICAgIEludFJlY3QgbHVtaW5hbmNlUmVjdChJbnRQb2ludCgpLCBpbnRlcm5hbFNp
emUoKSk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheSA9IGdldFVubXVsdGlw
bGllZEltYWdlRGF0YShsdW1pbmFuY2VSZWN0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IHNyY1BpeGVsQXJyYXkgPSBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEobHVtaW5hbmNlUmVj
dCk7CiAgICAgCiAgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHNyY1BpeGVsQXJyYXkt
Pmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgcGl4ZWxPZmZzZXQgPSAwOyBwaXhlbE9mZnNl
dCA8IHBpeGVsQXJyYXlMZW5ndGg7IHBpeGVsT2Zmc2V0ICs9IDQpIHsKLSAgICAgICAgdW5zaWdu
ZWQgY2hhciBhID0gc3JjUGl4ZWxBcnJheS0+Z2V0KHBpeGVsT2Zmc2V0ICsgMyk7CisgICAgICAg
IHVuc2lnbmVkIGNoYXIgYSA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxPZmZzZXQgKyAzKTsK
ICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHVuc2lnbmVk
IGNoYXIgciA9IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbE9mZnNldCk7Ci0gICAgICAgIHVuc2ln
bmVkIGNoYXIgZyA9IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbE9mZnNldCArIDEpOwotICAgICAg
ICB1bnNpZ25lZCBjaGFyIGIgPSBzcmNQaXhlbEFycmF5LT5nZXQocGl4ZWxPZmZzZXQgKyAyKTsK
KyAgICAgICAgdW5zaWduZWQgY2hhciByID0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbE9mZnNl
dCk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZyA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxP
ZmZzZXQgKyAxKTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBiID0gc3JjUGl4ZWxBcnJheS0+aXRl
bShwaXhlbE9mZnNldCArIDIpOwogICAgICAgICAKICAgICAgICAgZG91YmxlIGx1bWEgPSAociAq
IDAuMjEyNSArIGcgKiAwLjcxNTQgKyBiICogMC4wNzIxKSAqICgoZG91YmxlKWEgLyAyNTUuMCk7
CiAgICAgICAgIHNyY1BpeGVsQXJyYXktPnNldChwaXhlbE9mZnNldCArIDMsIGx1bWEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZWQ4
Mzg3ZmMzNWIzYTUwOWMyMGNlYTJlZmFmNDI3NjA3MDVmYzYwYS4uZDE5ODhhYjQ3NTYxMzEyNzhl
ZjE5NWUzMjMyMjNhYjJkZTc5MDkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zOCwxMSArMzgsMTEgQEAKICNpbmNsdWRlICJHcmFw
aGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
RGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBl
ZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC05OCwxMCArOTgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGVudW0g
Q29vcmRpbmF0ZVN5c3RlbSB7IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtLCBCYWNraW5nU3RvcmVD
b29yZGluYXRlU3lzdGVtIH07CiAKLSAgICAgICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldFVu
bXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiwgQ29vcmRpbmF0ZVN5c3RlbSA9IExv
Z2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKLSAgICAgICAgUGFzc1JlZlB0cjxCeXRlQXJy
YXk+IGdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVT
eXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CisgICAgICAgIFBhc3NSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRS
ZWN0JiwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25zdDsK
KyAgICAgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0UHJlbXVsdGlwbGllZElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JiwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGlu
YXRlU3lzdGVtKSBjb25zdDsKIAotICAgICAgICB2b2lkIHB1dEJ5dGVBcnJheShNdWx0aXBseSBt
dWx0aXBsaWVkLCBCeXRlQXJyYXkqLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRl
U3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pOworICAgICAgICB2b2lkIHB1dEJ5dGVB
cnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSosIGNvbnN0IEludFNp
emUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSk7
CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CmluZGV4IDNiOGE5NTZiMGM2MDZhZDkwMTUzODBhNjM4YTc2OGU4OWYzMzgwYTAuLjMwZjc3ZThi
ODA4YTU0YjI4OWQxOTExOTQwNjgzYjRhZWZkNGRkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04MjYsNyArODI2LDcgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0
ZW1wbGF0ZVNpemUpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IGxheWVyRGF0YSA9IG1fbGF5ZXJJ
bWFnZS0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGJsdXJSZWN0KTsKKyAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGxheWVyRGF0YSA9IG1fbGF5ZXJJbWFnZS0+Z2V0VW5tdWx0aXBsaWVk
SW1hZ2VEYXRhKGJsdXJSZWN0KTsKICAgICBibHVyTGF5ZXJJbWFnZShsYXllckRhdGEtPmRhdGEo
KSwgYmx1clJlY3Quc2l6ZSgpLCBibHVyUmVjdC53aWR0aCgpICogNCk7CiAgICAgbV9sYXllcklt
YWdlLT5wdXRCeXRlQXJyYXkoVW5tdWx0aXBsaWVkLCBsYXllckRhdGEuZ2V0KCksIGJsdXJSZWN0
LnNpemUoKSwgYmx1clJlY3QsIEludFBvaW50KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApp
bmRleCBjMDYzMThlMjUyNTBiMGNjYzM5ZWI5YjEzM2FiNzY4ZmM4ZWRkZjQ1Li5kYzNiNTBkYTgw
MTE0NDRmN2VjZDBmZmM4YTBlNTcwYWRjNTQ2NWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApA
QCAtMTMyLDE3ICsxMzIsMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1D
b2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIH0KIAogdGVtcGxhdGUg
PE11bHRpcGx5IG11bHRpcGxpZWQ+Ci1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGRhdGEsIGNvbnN0
IEludFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoZGF0
YS5tX3N1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CiAKLSAgICBSZWZQdHI8
Qnl0ZUFycmF5PiByZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0
LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiByZXN1bHQgPSBV
aW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0
KTsKICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhU3JjID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
ZGF0YShkYXRhLm1fc3VyZmFjZSk7CiAgICAgdW5zaWduZWQgY2hhciogZGF0YURzdCA9IHJlc3Vs
dC0+ZGF0YSgpOwogCi0gICAgaWYgKHJlY3QueCgpIDwgMCB8fCByZWN0LnkoKSA8IDAgfHwgKHJl
Y3QueCgpICsgcmVjdC53aWR0aCgpKSA+IHNpemUud2lkdGgoKSB8fCAocmVjdC55KCkgKyByZWN0
LmhlaWdodCgpKSA+IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIG1lbXNldChkYXRhRHN0LCAwLCBy
ZXN1bHQtPmxlbmd0aCgpKTsKLQogICAgIGludCBvcmlnaW54ID0gcmVjdC54KCk7CiAgICAgaW50
IGRlc3R4ID0gMDsKICAgICBpZiAob3JpZ2lueCA8IDApIHsKQEAgLTE5MCwxNyArMTg3LDE3IEBA
IFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGdldEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXpl
KTsKIH0KIAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBs
aWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0
CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlw
bGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25z
dAogewogICAgIHJldHVybiBnZXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4ocmVjdCwgbV9kYXRh
LCBtX3NpemUpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkg
bXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENv
b3JkaW5hdGVTeXN0ZW0pCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkg
bXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291
cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKIHsKICAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRf
dHlwZShtX2RhdGEubV9zdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCmluZGV4IDdlOTMwZDUyOWRjMzc0MjQzYTc0MGI0MGUxZmU0ZWYyMDA4YTNmNzYuLjc0
NWY0YTA0N2VjZDkzMTM1YzBmYmZkMDY5Y2I1ZjE0ZDM3OWFhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0z
MDYsNyArMzA2LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY28KICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCAtcmVjdC54KCksIC1yZWN0LnkoKSAtIHJl
Y3QuaGVpZ2h0KCkpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6Omdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lz
dGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJl
Y3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBpZiAo
bV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIENHQ29udGV4dEZs
dXNoKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwpAQCAtMzE3LDcgKzMxNyw3IEBAIFBh
c3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmIHJlY3QsCiAgICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHJlY3QsIGlu
dGVybmFsU2l6ZSgpLCBtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIHRydWUsIGNv
b3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0gPyBtX3Jlc29sdXRpb25T
Y2FsZSA6IDEpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFBy
ZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3Rl
bSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIGlmICht
X2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgQ0dDb250ZXh0Rmx1
c2goY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CkBAIC0zMjgsNyArMzI4LDcgQEAgUGFz
c1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmIHJlY3QKICAgICByZXR1cm4gbV9kYXRhLmdldERhdGEocmVjdCwgaW50
ZXJuYWxTaXplKCksIG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSwgZmFsc2UsIGNv
b3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0gPyBtX3Jlc29sdXRpb25T
Y2FsZSA6IDEpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkg
bXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENv
b3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5
dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBj
b25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0p
CiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAg
ICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9p
bnQsIGludGVybmFsU2l6ZSgpLCBtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIG11
bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCBjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29y
ZGluYXRlU3lzdGVtID8gbV9yZXNvbHV0aW9uU2NhbGUgOiAxKTsKQEAgLTQ0MCw3ICs0NDAsNyBA
QCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBkb3VibGUqIHF1YWxpdHksIENvbwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRp
ID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRpKTsKIAotICAgIFJl
ZlB0cjxCeXRlQXJyYXk+IHByZW11bHRpcGxpZWREYXRhOworICAgIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gcHJlbXVsdGlwbGllZERhdGE7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGlt
YWdlOwogCiAgICAgaWYgKENGRXF1YWwodXRpLmdldCgpLCBqcGVnVVRJKCkpKSB7CkBAIC00ODAs
NyArNDgwLDcgQEAgU3RyaW5nIEltYWdlRGF0YVRvRGF0YVVSTChjb25zdCBJbWFnZURhdGEmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2U7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlk
ZXI7CiAKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gc291cmNlLmRhdGEoKS0+ZGF0YSgpLT5k
YXRhKCk7CisgICAgdW5zaWduZWQgY2hhciogZGF0YSA9IHNvdXJjZS5kYXRhKCktPmRhdGEoKTsK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IHV0aUZyb21NSU1FVHlwZShtaW1lVHlw
ZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFWZWN0b3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckRhdGFDRy5jcHAKaW5kZXggZGU0MWE3ZGU5ODIwZGNiNjI0NTc5ODdjYTJhYzA0OTYxOThh
YzY4ZC4uMzY0ODhhN2Y3MzAyYWRlZTY3YjcwYTVkOWY5MWIyNjVlMDVhZjk3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmNwcApAQCAtMTE2LDE5ICsxMTYsMTcgQEAgc3RhdGljIHZvaWQgcHJlbXVsdGl0cGx5
U2NhbmxpbmUodm9pZCogZGF0YSwgc2l6ZV90IHRpbGVOdW1iZXIpCiAjZW5kaWYgLy8gVVNFKElP
U1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURSkK
IAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJp
bmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpIGNvbnN0CitQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVy
aW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKSBjb25zdAogewog
ICAgIGZsb2F0IGFyZWEgPSA0LjBmICogcmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKTsKICAg
ICBpZiAoYXJlYSA+IHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46
Om1heCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiByZXN1
bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7
CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJh
eTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKICAgICB1bnNpZ25l
ZCBjaGFyKiBkYXRhID0gcmVzdWx0LT5kYXRhKCk7CiAgICAgCiAgICAgaW50IGVuZHggPSBjZWls
ZihyZWN0Lm1heFgoKSAqIHJlc29sdXRpb25TY2FsZSk7CiAgICAgaW50IGVuZHkgPSBjZWlsZihy
ZWN0Lm1heFkoKSAqIHJlc29sdXRpb25TY2FsZSk7Ci0gICAgaWYgKHJlY3QueCgpIDwgMCB8fCBy
ZWN0LnkoKSA8IDAgfHwgZW5keCA+IHNpemUud2lkdGgoKSB8fCBlbmR5ID4gc2l6ZS5oZWlnaHQo
KSkKLSAgICAgICAgbWVtc2V0KGRhdGEsIDAsIHJlc3VsdC0+bGVuZ3RoKCkpOwogICAgIAogICAg
IGludCBvcmlnaW54ID0gcmVjdC54KCk7CiAgICAgaW50IGRlc3R4ID0gMDsKQEAgLTM0Miw3ICsz
NDAsNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpegogICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOwogfQogCi12b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShCeXRlQXJyYXkqJiBzb3Vy
Y2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNj
ZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSkKK3ZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291
cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFj
Y2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUpCiB7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VSVChz
b3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRleCA0YTBlNzYxM2UwYjBm
YjJkNjZhNWZhNjRkNDY2ZDBkZDNmZDcyZTZlLi42MjMzYzZjMmMzMThiODEwMWM4ZmFkZWZlZjEz
MzE2NDMxZTMwMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTI1LDEwICsyNSwxMCBAQAogICovCiAK
ICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5o
PgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpKQogI2RlZmlu
ZSBXVEZfVVNFX0lPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSAxCkBAIC01OCw4ICs1OCw4
IEBAIHB1YmxpYzoKICAgICBtdXRhYmxlIGRvdWJsZSBtX2xhc3RGbHVzaFRpbWU7CiAjZW5kaWYK
IAotICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11
bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkgY29uc3Q7Ci0gICAgdm9pZCBwdXREYXRh
KEJ5dGVBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBn
ZXREYXRhKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRlUmVu
ZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKSBjb25zdDsK
KyAgICB2b2lkIHB1dERhdGEoVWludDhDbGFtcGVkQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNp
emUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJv
b2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggNTMwNjM2ZGE5ODY0NzFkYmZhMTM3MThjZTIyM2Fi
M2E5NWQ3OTdmMi4uYWE3MzNkOTBmMTk2MmQ2NGMwNWI3MWQ3NzNlMDJkYTBkZmIxMTMzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgog
I2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KKyNp
bmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogdHlwZWRlZiB1bnNpZ25lZCBjaGFy
ICgqQmxlbmRUeXBlKSh1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5zaWduZWQgY2hhciBjb2xvckIs
IHVuc2lnbmVkIGNoYXIgYWxwaGFBLCB1bnNpZ25lZCBjaGFyIGFscGhhQik7CiAKQEAgLTk0LDI0
ICs5NCwyNCBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgQVNT
RVJUKG1fbW9kZSA+IEZFQkxFTkRfTU9ERV9VTktOT1dOKTsKICAgICBBU1NFUlQobV9tb2RlIDw9
IEZFQkxFTkRfTU9ERV9MSUdIVEVOKTsKIAotICAgIEJ5dGVBcnJheSogZHN0UGl4ZWxBcnJheSA9
IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5
KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAg
aWYgKCFkc3RQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRSZWN0IGVmZmVj
dEFEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXlBID0g
aW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEFEcmF3aW5nUmVjdCk7CisgICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5QSA9IGluLT5hc1ByZW11bHRpcGxpZWRJ
bWFnZShlZmZlY3RBRHJhd2luZ1JlY3QpOwogCiAgICAgSW50UmVjdCBlZmZlY3RCRHJhd2luZ1Jl
Y3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKSk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheUIgPSBpbjItPmFzUHJl
bXVsdGlwbGllZEltYWdlKGVmZmVjdEJEcmF3aW5nUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBzcmNQaXhlbEFycmF5QiA9IGluMi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZm
ZWN0QkRyYXdpbmdSZWN0KTsKIAogICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBzcmNQ
aXhlbEFycmF5QS0+bGVuZ3RoKCk7CiAgICAgQVNTRVJUKHBpeGVsQXJyYXlMZW5ndGggPT0gc3Jj
UGl4ZWxBcnJheUItPmxlbmd0aCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0g
MDsgcGl4ZWxPZmZzZXQgPCBwaXhlbEFycmF5TGVuZ3RoOyBwaXhlbE9mZnNldCArPSA0KSB7Ci0g
ICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFBID0gc3JjUGl4ZWxBcnJheUEtPmdldChwaXhlbE9m
ZnNldCArIDMpOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhQiA9IHNyY1BpeGVsQXJyYXlC
LT5nZXQocGl4ZWxPZmZzZXQgKyAzKTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYUEgPSBz
cmNQaXhlbEFycmF5QS0+aXRlbShwaXhlbE9mZnNldCArIDMpOworICAgICAgICB1bnNpZ25lZCBj
aGFyIGFscGhhQiA9IHNyY1BpeGVsQXJyYXlCLT5pdGVtKHBpeGVsT2Zmc2V0ICsgMyk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCAzOyArK2NoYW5uZWwpIHsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sb3JBID0gc3JjUGl4ZWxBcnJheUEtPmdldChw
aXhlbE9mZnNldCArIGNoYW5uZWwpOwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2xvckIg
PSBzcmNQaXhlbEFycmF5Qi0+Z2V0KHBpeGVsT2Zmc2V0ICsgY2hhbm5lbCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGNvbG9yQSA9IHNyY1BpeGVsQXJyYXlBLT5pdGVtKHBpeGVsT2Zmc2V0
ICsgY2hhbm5lbCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbG9yQiA9IHNyY1BpeGVs
QXJyYXlCLT5pdGVtKHBpeGVsT2Zmc2V0ICsgY2hhbm5lbCk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIHJlc3VsdDsKIAogICAgICAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJp
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwCmluZGV4IDAwYjYwMGFiZGFhOThjNTU1NmY4YzVmZDViOGM4ZDU0NjYxNTY2MGQu
LmJkNDIxMmQwYjU4N2I2MDVkOTA1OTA2ZGJkZDdmOTE5NDVlYmE4YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0
cml4LmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIK
ICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJy
YXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMjUsMTQgKzEyNSwxNCBAQCBpbmxp
bmUgdm9pZCBsdW1pbmFuY2UoZG91YmxlJiByZWQsIGRvdWJsZSYgZ3JlZW4sIGRvdWJsZSYgYmx1
ZSwgZG91YmxlJiBhbHBoYSkKIH0KIAogdGVtcGxhdGU8Q29sb3JNYXRyaXhUeXBlIGZpbHRlclR5
cGU+Ci12b2lkIGVmZmVjdFR5cGUoQnl0ZUFycmF5KiBwaXhlbEFycmF5LCBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB2YWx1ZXMpCit2b2lkIGVmZmVjdFR5cGUoVWludDhDbGFtcGVkQXJyYXkqIHBpeGVs
QXJyYXksIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKIHsKICAgICB1bnNpZ25lZCBwaXhl
bEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBw
aXhlbEJ5dGVPZmZzZXQgPSAwOyBwaXhlbEJ5dGVPZmZzZXQgPCBwaXhlbEFycmF5TGVuZ3RoOyBw
aXhlbEJ5dGVPZmZzZXQgKz0gNCkgewotICAgICAgICBkb3VibGUgcmVkID0gcGl4ZWxBcnJheS0+
Z2V0KHBpeGVsQnl0ZU9mZnNldCk7Ci0gICAgICAgIGRvdWJsZSBncmVlbiA9IHBpeGVsQXJyYXkt
PmdldChwaXhlbEJ5dGVPZmZzZXQgKyAxKTsKLSAgICAgICAgZG91YmxlIGJsdWUgPSBwaXhlbEFy
cmF5LT5nZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMik7Ci0gICAgICAgIGRvdWJsZSBhbHBoYSA9IHBp
eGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQgKyAzKTsKKyAgICAgICAgZG91YmxlIHJlZCA9
IHBpeGVsQXJyYXktPml0ZW0ocGl4ZWxCeXRlT2Zmc2V0KTsKKyAgICAgICAgZG91YmxlIGdyZWVu
ID0gcGl4ZWxBcnJheS0+aXRlbShwaXhlbEJ5dGVPZmZzZXQgKyAxKTsKKyAgICAgICAgZG91Ymxl
IGJsdWUgPSBwaXhlbEFycmF5LT5pdGVtKHBpeGVsQnl0ZU9mZnNldCArIDIpOworICAgICAgICBk
b3VibGUgYWxwaGEgPSBwaXhlbEFycmF5LT5pdGVtKHBpeGVsQnl0ZU9mZnNldCArIDMpOwogCiAg
ICAgICAgIHN3aXRjaCAoZmlsdGVyVHlwZSkgewogICAgICAgICAgICAgY2FzZSBGRUNPTE9STUFU
UklYX1RZUEVfTUFUUklYOgpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5kcmF3
SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogCiAgICAg
SW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkp
OwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHBpeGVsQXJyYXkgPSByZXN1bHRJbWFnZS0+Z2V0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKGltYWdlUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShp
bWFnZVJlY3QpOwogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZFQ09MT1JNQVRS
SVhfVFlQRV9VTktOT1dOOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKaW5kZXggOGRi
NjJkYzRkNGJmYjU2NmQ3ODBjMzI2MTRkNTZiNmVjY2ZmYmU2Ny4uNjUxYmFjMmUxODU4MzllNzA4
ZmJiMGFlNTFlN2Q3ODIzMGYzOGM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3Bw
CkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1
ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xNTQsNyArMTU0LDcgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAot
ICAgIEJ5dGVBcnJheSogcGl4ZWxBcnJheSA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0
KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXkgPSBjcmVhdGVVbm11bHRpcGxp
ZWRJbWFnZVJlc3VsdCgpOwogICAgIGlmICghcGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5
LT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsgcGl4ZWxPZmZz
ZXQgPCBwaXhlbEFycmF5TGVuZ3RoOyBwaXhlbE9mZnNldCArPSA0KSB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCA0OyArK2NoYW5uZWwpIHsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBpeGVsQXJyYXktPmdldChwaXhlbE9mZnNldCArIGNoYW5u
ZWwpOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcGl4ZWxBcnJheS0+aXRlbShwaXhl
bE9mZnNldCArIGNoYW5uZWwpOwogICAgICAgICAgICAgcGl4ZWxBcnJheS0+c2V0KHBpeGVsT2Zm
c2V0ICsgY2hhbm5lbCwgdGFibGVzW2NoYW5uZWxdW2NdKTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHAKaW5kZXggNWJlMjJmOGUyOWRlYmE1ODRkMjRiYTFmMmRjY2U4Nzk4OTQ1YWJm
Yy4uNTcxMDFhZjdmMDQzMjg4MDFiZjNlZTkzMTZkZGYxYzU4NmZiNmIxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAj
aW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJpdGhtZXRpY1NvZnR3YXJl
KHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwgdW5zaWduZWQgY2hhciogZGVzdAogICAgIGNvbXB1dGVB
cml0aG1ldGljUGl4ZWxzPDEsIDEsIDEsIDE+KHNvdXJjZSwgZGVzdGluYXRpb24sIHBpeGVsQXJy
YXlMZW5ndGgsIGsxLCBrMiwgazMsIGs0KTsKIH0KIAotaW5saW5lIHZvaWQgRkVDb21wb3NpdGU6
OnBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3YXJlKEJ5dGVBcnJheSogc291cmNlLCBCeXRlQXJyYXkq
IGRlc3RpbmF0aW9uLAoraW5saW5lIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXJpdGhtZXRp
Y1NvZnR3YXJlKFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFycmF5KiBk
ZXN0aW5hdGlvbiwKICAgICBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkK
IHsKICAgICBpbnQgbGVuZ3RoID0gc291cmNlLT5sZW5ndGgoKTsKQEAgLTIyMSwxMiArMjIxLDEy
IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgRmlsdGVy
RWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKIAogICAgIGlmIChtX3R5cGUgPT0gRkVDT01Q
T1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQykgewotICAgICAgICBCeXRlQXJyYXkqIGRzdFBpeGVs
QXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICAgICAgVWludDhD
bGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQoKTsKICAgICAgICAgaWYgKCFkc3RQaXhlbEFycmF5KQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIEludFJlY3QgZWZmZWN0QURyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJ
bnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgICAgIFJlZlB0cjxC
eXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0
QURyYXdpbmdSZWN0KTsKKyAgICAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhl
bEFycmF5ID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEFEcmF3aW5nUmVjdCk7CiAK
ICAgICAgICAgSW50UmVjdCBlZmZlY3RCRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklu
cHV0SW1hZ2VEYXRhKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgICAgIGluMi0+Y29w
eVByZW11bHRpcGxpZWRJbWFnZShkc3RQaXhlbEFycmF5LCBlZmZlY3RCRHJhd2luZ1JlY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oCmluZGV4IDI0YmEzMDc4ZjFlM2JkNTg4YzU5OWEzMTgwNDg3NGI3MWU2NmEzZTcu
LjQyNjk1ZjZjMmJmODQ2YTk3NDNlODg1OTRjYzg2ZDY0NWI5ZDk0MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgK
QEAgLTc0LDcgKzc0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBGRUNvbXBvc2l0ZShG
aWx0ZXIqLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQpOwogCi0gICAgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUo
Qnl0ZUFycmF5KiBzb3VyY2UsIEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGZsb2F0IGsxLCBmbG9h
dCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsKKyAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFyaXRo
bWV0aWNTb2Z0d2FyZShVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBVaW50OENsYW1wZWRBcnJh
eSogZGVzdGluYXRpb24sIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsK
ICAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFyaXRobWV0aWNOZW9uKHVuc2lnbmVkIGNoYXIqIHNv
dXJjZSwgdW5zaWduZWQgIGNoYXIqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhlbEFycmF5TGVu
Z3RoLCBmbG9hdCoga0FycmF5KTsKIAogICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgbV90eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5kZXggY2RhNWYxOTNlNDQ1ZWU1MjE0YTQxYmZi
NWFjYzRmYjE5OTAwYzUxOC4uMDY1MWUyZGVkNWUwM2NhZTFlYmQ4NjU0NzJjOGFkYzg1YzcwNmI4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVk
ZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1
ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+CisjaW5j
bHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMjIzLDE0ICsyMjMsMTQgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2hhciBj
bGFtcFJHQkFWYWx1ZShmbG9hdCBjaGFubmVsLCB1bnNpZ25lZCBjaGFyIG0KIH0KIAogdGVtcGxh
dGU8Ym9vbCBwcmVzZXJ2ZUFscGhhVmFsdWVzPgotQUxXQVlTX0lOTElORSB2b2lkIHNldERlc3Rp
bmF0aW9uUGl4ZWxzKEJ5dGVBcnJheSogaW1hZ2UsIGludCYgcGl4ZWwsIGZsb2F0KiB0b3RhbHMs
IGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIEJ5dGVBcnJheSogc3JjKQorQUxXQVlTX0lOTElO
RSB2b2lkIHNldERlc3RpbmF0aW9uUGl4ZWxzKFVpbnQ4Q2xhbXBlZEFycmF5KiBpbWFnZSwgaW50
JiBwaXhlbCwgZmxvYXQqIHRvdGFscywgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlhcywgVWludDhD
bGFtcGVkQXJyYXkqIHNyYykKIHsKICAgICB1bnNpZ25lZCBjaGFyIG1heEFscGhhID0gcHJlc2Vy
dmVBbHBoYVZhbHVlcyA/IDI1NSA6IGNsYW1wUkdCQVZhbHVlKHRvdGFsc1szXSAvIGRpdmlzb3Ig
KyBiaWFzKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKICAgICAgICAgaW1hZ2Ut
PnNldChwaXhlbCsrLCBjbGFtcFJHQkFWYWx1ZSh0b3RhbHNbaV0gLyBkaXZpc29yICsgYmlhcywg
bWF4QWxwaGEpKTsKIAogICAgIGlmIChwcmVzZXJ2ZUFscGhhVmFsdWVzKSB7Ci0gICAgICAgIGlt
YWdlLT5zZXQocGl4ZWwsIHNyYy0+Z2V0KHBpeGVsKSk7CisgICAgICAgIGltYWdlLT5zZXQocGl4
ZWwsIHNyYy0+aXRlbShwaXhlbCkpOwogICAgICAgICArK3BpeGVsOwogICAgIH0gZWxzZQogICAg
ICAgICBpbWFnZS0+c2V0KHBpeGVsKyssIG1heEFscGhhKTsKQEAgLTI2NywxMSArMjY3LDExIEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpmYXN0U2V0SW50ZXJpb3JQaXhl
bHMoUGFpbnRpbmdEYXRhJiBwYWludGluCiAgICAgICAgICAgICAgICAgdG90YWxzWzNdID0gMDsK
IAogICAgICAgICAgICAgd2hpbGUgKGtlcm5lbFZhbHVlID49IDApIHsKLSAgICAgICAgICAgICAg
ICB0b3RhbHNbMF0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5nZXQoa2VybmVsUGl4ZWwrKykpOwot
ICAgICAgICAgICAgICAgIHRvdGFsc1sxXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0g
KiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPmdldChrZXJu
ZWxQaXhlbCsrKSk7Ci0gICAgICAgICAgICAgICAgdG90YWxzWzJdICs9IG1fa2VybmVsTWF0cml4
W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxB
cnJheS0+Z2V0KGtlcm5lbFBpeGVsKyspKTsKKyAgICAgICAgICAgICAgICB0b3RhbHNbMF0gKz0g
bV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5n
RGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKGtlcm5lbFBpeGVsKyspKTsKKyAgICAgICAgICAgICAg
ICB0b3RhbHNbMV0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKGtlcm5lbFBpeGVsKyspKTsK
KyAgICAgICAgICAgICAgICB0b3RhbHNbMl0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVd
ICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKGtl
cm5lbFBpeGVsKyspKTsKICAgICAgICAgICAgICAgICBpZiAoIXByZXNlcnZlQWxwaGFWYWx1ZXMp
Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFsc1szXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxW
YWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPmdl
dChrZXJuZWxQaXhlbCkpOworICAgICAgICAgICAgICAgICAgICB0b3RhbHNbM10gKz0gbV9rZXJu
ZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5z
cmNQaXhlbEFycmF5LT5pdGVtKGtlcm5lbFBpeGVsKSk7CiAgICAgICAgICAgICAgICAgKytrZXJu
ZWxQaXhlbDsKICAgICAgICAgICAgICAgICAtLWtlcm5lbFZhbHVlOwogICAgICAgICAgICAgICAg
IGlmICghLS13aWR0aCkgewpAQCAtMzUwLDEyICszNTAsMTIgQEAgdm9pZCBGRUNvbnZvbHZlTWF0
cml4OjpmYXN0U2V0T3V0ZXJQaXhlbHMoUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEsIGludCB4
MSwgaW4KICAgICAgICAgICAgIHdoaWxlIChrZXJuZWxWYWx1ZSA+PSAwKSB7CiAgICAgICAgICAg
ICAgICAgaW50IHBpeGVsSW5kZXggPSBnZXRQaXhlbFZhbHVlKHBhaW50aW5nRGF0YSwga2VybmVs
UGl4ZWxYLCBrZXJuZWxQaXhlbFkpOwogICAgICAgICAgICAgICAgIGlmIChwaXhlbEluZGV4ID49
IDApIHsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxzWzBdICs9IG1fa2VybmVsTWF0cml4W2tl
cm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJh
eS0+Z2V0KHBpeGVsSW5kZXgpKTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxzWzFdICs9IG1f
a2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0Rh
dGEuc3JjUGl4ZWxBcnJheS0+Z2V0KHBpeGVsSW5kZXggKyAxKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHRvdGFsc1syXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2Fz
dDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPmdldChwaXhlbEluZGV4ICsgMikp
OworICAgICAgICAgICAgICAgICAgICB0b3RhbHNbMF0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVs
VmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5p
dGVtKHBpeGVsSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxzWzFdICs9IG1fa2Vy
bmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEu
c3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbEluZGV4ICsgMSkpOworICAgICAgICAgICAgICAgICAg
ICB0b3RhbHNbMl0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsSW5kZXggKyAyKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcHJlc2VydmVBbHBoYVZh
bHVlcyAmJiBwaXhlbEluZGV4ID49IDApCi0gICAgICAgICAgICAgICAgICAgIHRvdGFsc1szXSAr
PSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRp
bmdEYXRhLnNyY1BpeGVsQXJyYXktPmdldChwaXhlbEluZGV4ICsgMykpOworICAgICAgICAgICAg
ICAgICAgICB0b3RhbHNbM10gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsSW5kZXgg
KyAzKSk7CiAgICAgICAgICAgICAgICAgKytrZXJuZWxQaXhlbFg7CiAgICAgICAgICAgICAgICAg
LS1rZXJuZWxWYWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoIS0td2lkdGgpIHsKQEAgLTQwMyw3
ICs0MDMsNyBAQCB2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0gICAgQnl0ZUFy
cmF5KiByZXN1bHRJbWFnZTsKKyAgICBVaW50OENsYW1wZWRBcnJheSogcmVzdWx0SW1hZ2U7CiAg
ICAgaWYgKG1fcHJlc2VydmVBbHBoYSkKICAgICAgICAgcmVzdWx0SW1hZ2UgPSBjcmVhdGVVbm11
bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogICAgIGVsc2UKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lk
IEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbnRSZWN0
IGVmZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSk7CiAKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBzcmNQaXhlbEFy
cmF5OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheTsKICAgICBp
ZiAobV9wcmVzZXJ2ZUFscGhhKQogICAgICAgICBzcmNQaXhlbEFycmF5ID0gaW4tPmFzVW5tdWx0
aXBsaWVkSW1hZ2UoZWZmZWN0RHJhd2luZ1JlY3QpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmgKaW5kZXggMzRiYWY2ZjE3ZTJmNWYwMjk2NzRjZDI4MjU4OTA1NDNjMWIzNzI0NS4uMjUw
NjEzZmI0NjM4NmViNTU1NWNhZjM4ZTI5ZjhiM2U4ODYzZWRkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmgKQEAgLTgyLDggKzgyLDggQEAgcHVibGljOgogcHJpdmF0ZToKIAogICAgIHN0cnVjdCBQ
YWludGluZ0RhdGEgewotICAgICAgICBCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXk7Ci0gICAgICAg
IEJ5dGVBcnJheSogZHN0UGl4ZWxBcnJheTsKKyAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIHNy
Y1BpeGVsQXJyYXk7CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5Owog
ICAgICAgICBpbnQgd2lkdGg7CiAgICAgICAgIGludCBoZWlnaHQ7CiAgICAgICAgIGZsb2F0IGJp
YXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4IDhmYWZlMDQyMGMxOTI4ZGJjMTEzN2IzNGM5
NjkyMmEwMjg5NTc5MTUuLjg5MjIzYmIxOWI1MTI2YjllN2I3NzZlZDgxN2M5MjQ1MWM5NTVkZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
dXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSAiVGls
aW5nRGF0YS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAKLSNpbmNsdWRl
IDx3dGYvQnl0ZUFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTUsMTMgKzk1LDEzIEBAIFBhc3NSZWZQdHI8RkVD
dXN0b21GaWx0ZXI+IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUoRmlsdGVyKiBmaWx0ZXIsIEhvc3RX
aW5kb3cqIGhvCiAKIHZvaWQgRkVDdXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiB7Ci0gICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVh
dGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsK
ICAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dElt
YWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4g
c3JjUGl4ZWxBcnJheSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3REcmF3aW5nUmVj
dCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5ID0gaW4tPmFz
UHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsKICAgICAKICAgICBJbnRTaXpl
IG5ld0NvbnRleHRTaXplKGVmZmVjdERyYXdpbmdSZWN0LnNpemUoKSk7CiAgICAgYm9vbCBoYWRD
b250ZXh0ID0gbV9jb250ZXh0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRkVDdXN0b21GaWx0
ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgbV9kcmF3aW5nQnVmZmVyLT5jb21taXQo
KTsKIAogICAgIFJlZlB0cjxJbWFnZURhdGE+IGltYWdlRGF0YSA9IG1fY29udGV4dC0+cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEobV9kcmF3aW5nQnVmZmVyLmdldCgpKTsKLSAgICBC
eXRlQXJyYXkqIGdwdVJlc3VsdCA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7CisgICAgVWlu
dDhDbGFtcGVkQXJyYXkqIGdwdVJlc3VsdCA9IGltYWdlRGF0YS0+ZGF0YSgpOwogICAgIEFTU0VS
VChncHVSZXN1bHQtPmxlbmd0aCgpID09IGRzdFBpeGVsQXJyYXktPmxlbmd0aCgpKTsKICAgICBt
ZW1jcHkoZHN0UGl4ZWxBcnJheS0+ZGF0YSgpLCBncHVSZXN1bHQtPmRhdGEoKSwgZ3B1UmVzdWx0
LT5sZW5ndGgoKSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6
YmluZFByb2dyYW1QYXJhbWV0ZXJzKCkKICAgICB9CiB9CiAKLXZvaWQgRkVDdXN0b21GaWx0ZXI6
OmJpbmRQcm9ncmFtQW5kQnVmZmVycyhCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXkpCit2b2lkIEZF
Q3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoVWludDhDbGFtcGVkQXJyYXkqIHNy
Y1BpeGVsQXJyYXkpCiB7CiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fc2hhZGVyLT5wcm9n
cmFtKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCmluZGV4IDQ5NmYwNDRjMjgzM2U4M2M5NTBj
MzYyMDVlYmJjNjlmZDM1ZDVkZDEuLjVmNWYwMjc2OGZhMWFjNDBlMGNjYjg1ZjgyNDBkN2UyMDQ4
ZmM3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDdXN0b21GaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgQnl0ZUFycmF5OworY2xhc3Mg
VWludDhDbGFtcGVkQXJyYXk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc1LDcgKzc1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJpbmRWZXJ0ZXhBdHRyaWJ1dGUoaW50IGF0dHJpYnV0
ZUxvY2F0aW9uLCB1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCYgb2Zmc2V0KTsKICAgICB2b2lkIGJp
bmRQcm9ncmFtTnVtYmVyUGFyYW1ldGVycyhpbnQgdW5pZm9ybUxvY2F0aW9uLCBDdXN0b21GaWx0
ZXJOdW1iZXJQYXJhbWV0ZXIqKTsKICAgICB2b2lkIGJpbmRQcm9ncmFtUGFyYW1ldGVycygpOwot
ICAgIHZvaWQgYmluZFByb2dyYW1BbmRCdWZmZXJzKEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSk7
CisgICAgdm9pZCBiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1Bp
eGVsQXJyYXkpOwogICAgIAogICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5jcHAKaW5kZXggYjBlYWM0NDlhNjcyYTRlMjBlODJmOWY3Y2Fm
YjJlYzZkMTY5OGJjZi4uN2Y1NTRhYTg0OWRkOWJkMTcwOWNlYjhjMTFlNTIxMDU3NmYyZjEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURp
c3BsYWNlbWVudE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVk
ZSA8d3RmL0J5dGVBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk2LDE1ICs5NiwxNSBAQCB2b2lkIEZFRGlzcGxh
Y2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEFTU0VSVChtX3hDaGFubmVs
U2VsZWN0b3IgIT0gQ0hBTk5FTF9VTktOT1dOKTsKICAgICBBU1NFUlQobV95Q2hhbm5lbFNlbGVj
dG9yICE9IENIQU5ORUxfVU5LTk9XTik7CiAKLSAgICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXkg
PSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBVaW50OENsYW1wZWRBcnJh
eSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogICAg
IGlmICghZHN0UGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBlZmZl
Y3RBRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBzcmNQaXhlbEFycmF5QSA9
IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RBRHJhd2luZ1JlY3QpOworICAgIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUEgPSBpbi0+YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKIAogICAgIEludFJlY3QgZWZmZWN0QkRyYXdpbmdS
ZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbjItPmFic29sdXRlUGFpbnRS
ZWN0KCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXlCID0gaW4yLT5hc1Vu
bXVsdGlwbGllZEltYWdlKGVmZmVjdEJEcmF3aW5nUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBzcmNQaXhlbEFycmF5QiA9IGluMi0+YXNVbm11bHRpcGxpZWRJbWFnZShlZmZl
Y3RCRHJhd2luZ1JlY3QpOwogCiAgICAgQVNTRVJUKHNyY1BpeGVsQXJyYXlBLT5sZW5ndGgoKSA9
PSBzcmNQaXhlbEFycmF5Qi0+bGVuZ3RoKCkpOwogCkBAIC0xMTksMTMgKzExOSwxMyBAQCB2b2lk
IEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICBpbnQg
bGluZSA9IHkgKiBzdHJpZGU7CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgcGFpbnRTaXpl
LndpZHRoKCk7ICsreCkgewogICAgICAgICAgICAgaW50IGRzdEluZGV4ID0gbGluZSArIHggKiA0
OwotICAgICAgICAgICAgaW50IHNyY1ggPSB4ICsgc3RhdGljX2Nhc3Q8aW50PihzY2FsZVggKiBz
cmNQaXhlbEFycmF5Qi0+Z2V0KGRzdEluZGV4ICsgbV94Q2hhbm5lbFNlbGVjdG9yIC0gMSkgKyBz
Y2FsZUFkanVzdG1lbnRYKTsKLSAgICAgICAgICAgIGludCBzcmNZID0geSArIHN0YXRpY19jYXN0
PGludD4oc2NhbGVZICogc3JjUGl4ZWxBcnJheUItPmdldChkc3RJbmRleCArIG1feUNoYW5uZWxT
ZWxlY3RvciAtIDEpICsgc2NhbGVBZGp1c3RtZW50WSk7CisgICAgICAgICAgICBpbnQgc3JjWCA9
IHggKyBzdGF0aWNfY2FzdDxpbnQ+KHNjYWxlWCAqIHNyY1BpeGVsQXJyYXlCLT5pdGVtKGRzdElu
ZGV4ICsgbV94Q2hhbm5lbFNlbGVjdG9yIC0gMSkgKyBzY2FsZUFkanVzdG1lbnRYKTsKKyAgICAg
ICAgICAgIGludCBzcmNZID0geSArIHN0YXRpY19jYXN0PGludD4oc2NhbGVZICogc3JjUGl4ZWxB
cnJheUItPml0ZW0oZHN0SW5kZXggKyBtX3lDaGFubmVsU2VsZWN0b3IgLSAxKSArIHNjYWxlQWRq
dXN0bWVudFkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsID0gMDsgY2hhbm5l
bCA8IDQ7ICsrY2hhbm5lbCkgewogICAgICAgICAgICAgICAgIGlmIChzcmNYIDwgMCB8fCBzcmNY
ID49IHBhaW50U2l6ZS53aWR0aCgpIHx8IHNyY1kgPCAwIHx8IHNyY1kgPj0gcGFpbnRTaXplLmhl
aWdodCgpKQogICAgICAgICAgICAgICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQoZHN0SW5kZXgg
KyBjaGFubmVsLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwKSk7CiAgICAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxWYWx1ZSA9
IHNyY1BpeGVsQXJyYXlBLT5nZXQoc3JjWSAqIHN0cmlkZSArIHNyY1ggKiA0ICsgY2hhbm5lbCk7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxWYWx1ZSA9IHNyY1BpeGVs
QXJyYXlBLT5pdGVtKHNyY1kgKiBzdHJpZGUgKyBzcmNYICogNCArIGNoYW5uZWwpOwogICAgICAg
ICAgICAgICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQoZHN0SW5kZXggKyBjaGFubmVsLCBwaXhl
bFZhbHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHAKaW5kZXggM2RkNWEyNzYzNzhjZDkyZDEwMTY3ZGFhZjkxNTcxMGU3ZGMzYmY0OC4uMzQ5OTdm
NjEzNDQ0NzZjZmE5MThiMTk0NDkxY2E5ZGQ3NmU2ZGM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApA
QCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRl
ICJTaGFkb3dCbHVyLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgPHd0Zi9C
eXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9V
aW50OENsYW1wZWRBcnJheS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0xMDQsNyAr
MTA0LDcgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAg
ICAvLyBUT0RPOiBEaXJlY3QgcGl4ZWwgYWNjZXNzIHRvIEltYWdlQnVmZmVyIHdvdWxkIGF2b2lk
IGNvcHlpbmcgdGhlIEltYWdlRGF0YS4KICAgICBJbnRSZWN0IHNoYWRvd0FyZWEoSW50UG9pbnQo
KSwgcmVzdWx0SW1hZ2UtPmludGVybmFsU2l6ZSgpKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBz
cmNQaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoc2hh
ZG93QXJlYSk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5ID0g
cmVzdWx0SW1hZ2UtPmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoc2hhZG93QXJlYSk7CiAKICAg
ICBjb250ZXh0U2hhZG93LmJsdXJMYXllckltYWdlKHNyY1BpeGVsQXJyYXktPmRhdGEoKSwgc2hh
ZG93QXJlYS5zaXplKCksIDQgKiBzaGFkb3dBcmVhLnNpemUoKS53aWR0aCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1
c3NpYW5CbHVyLmNwcAppbmRleCAwMjc2NDJiZTcxYTc3OTQwYzAzODg0YWJhOGZjZjVkMTBjZTBm
ZTY5Li5jZjQ5ZmM4ZjVmYjEyYWVhODdjZmVlY2RkOTQ4NWQyN2IzYmFhMTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1
c3NpYW5CbHVyLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1Rl
eHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxK
b2JzLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3Rk
RGV2aWF0aW9uWShmbG9hdCB5KQogICAgIG1fc3RkWSA9IHk7CiB9CiAKLWlubGluZSB2b2lkIGJv
eEJsdXIoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXks
CitpbmxpbmUgdm9pZCBib3hCbHVyKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBV
aW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSwKICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgZHgsIGludCBkeExlZnQsIGludCBkeFJpZ2h0LCBpbnQgc3RyaWRlLCBpbnQgc3RyaWRl
TGluZSwgaW50IGVmZmVjdFdpZHRoLCBpbnQgZWZmZWN0SGVpZ2h0LCBib29sIGFscGhhSW1hZ2Up
CiB7CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBlZmZlY3RIZWlnaHQ7ICsreSkgewpAQCAtOTAs
MTYgKzkwLDE2IEBAIGlubGluZSB2b2lkIGJveEJsdXIoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5
LCBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXksCiAgICAgICAgICAgICAvLyBGaWxsIHRoZSBrZXJu
ZWwKICAgICAgICAgICAgIGludCBtYXhLZXJuZWxTaXplID0gbWluKGR4UmlnaHQsIGVmZmVjdFdp
ZHRoKTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4S2VybmVsU2l6ZTsgKytp
KQotICAgICAgICAgICAgICAgIHN1bSArPSBzcmNQaXhlbEFycmF5LT5nZXQobGluZSArIGkgKiBz
dHJpZGUgKyBjaGFubmVsKTsKKyAgICAgICAgICAgICAgICBzdW0gKz0gc3JjUGl4ZWxBcnJheS0+
aXRlbShsaW5lICsgaSAqIHN0cmlkZSArIGNoYW5uZWwpOwogCiAgICAgICAgICAgICAvLyBCbHVy
cmluZwogICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBlZmZlY3RXaWR0aDsgKyt4KSB7
CiAgICAgICAgICAgICAgICAgaW50IHBpeGVsQnl0ZU9mZnNldCA9IGxpbmUgKyB4ICogc3RyaWRl
ICsgY2hhbm5lbDsKICAgICAgICAgICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQocGl4ZWxCeXRl
T2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdW0gLyBkeCkpOwogICAgICAgICAg
ICAgICAgIGlmICh4ID49IGR4TGVmdCkKLSAgICAgICAgICAgICAgICAgICAgc3VtIC09IHNyY1Bp
eGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQgLSBkeExlZnQgKiBzdHJpZGUpOworICAgICAg
ICAgICAgICAgICAgICBzdW0gLT0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbEJ5dGVPZmZzZXQg
LSBkeExlZnQgKiBzdHJpZGUpOwogICAgICAgICAgICAgICAgIGlmICh4ICsgZHhSaWdodCA8IGVm
ZmVjdFdpZHRoKQotICAgICAgICAgICAgICAgICAgICBzdW0gKz0gc3JjUGl4ZWxBcnJheS0+Z2V0
KHBpeGVsQnl0ZU9mZnNldCArIGR4UmlnaHQgKiBzdHJpZGUpOworICAgICAgICAgICAgICAgICAg
ICBzdW0gKz0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbEJ5dGVPZmZzZXQgKyBkeFJpZ2h0ICog
c3RyaWRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhbHBoYUltYWdlKSAvLyBT
b3VyY2UgaW1hZ2UgaXMgYmxhY2ssIGl0IGp1c3QgaGFzIGRpZmZlcmVudCBhbHBoYSB2YWx1ZXMK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwNywxNSArMTA3LDE1IEBAIGlubGluZSB2b2lk
IGJveEJsdXIoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIGRzdFBpeGVsQXJy
YXksCiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBs
eUdlbmVyaWMoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIHRtcFBpeGVsQXJy
YXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYg
cGFpbnRTaXplKQoraW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlHZW5l
cmljKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1wZWRBcnJheSog
dG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZ
LCBJbnRTaXplJiBwYWludFNpemUpCiB7CiAgICAgaW50IHN0cmlkZSA9IDQgKiBwYWludFNpemUu
d2lkdGgoKTsKICAgICBpbnQgZHhMZWZ0ID0gMDsKICAgICBpbnQgZHhSaWdodCA9IDA7CiAgICAg
aW50IGR5TGVmdCA9IDA7CiAgICAgaW50IGR5UmlnaHQgPSAwOwotICAgIEJ5dGVBcnJheSogc3Jj
ID0gc3JjUGl4ZWxBcnJheTsKLSAgICBCeXRlQXJyYXkqIGRzdCA9IHRtcFBpeGVsQXJyYXk7Cisg
ICAgVWludDhDbGFtcGVkQXJyYXkqIHNyYyA9IHNyY1BpeGVsQXJyYXk7CisgICAgVWludDhDbGFt
cGVkQXJyYXkqIGRzdCA9IHRtcFBpeGVsQXJyYXk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IDM7ICsraSkgewogICAgICAgICBpZiAoa2VybmVsU2l6ZVgpIHsKQEAgLTE1MSw3ICsxNTEsNyBA
QCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5V29ya2VyKFBsYXRmb3JtQXBwbHlQ
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKQogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEZFR2F1c3Np
YW5CbHVyOjpwbGF0Zm9ybUFwcGx5KEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmF5
KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6
ZVksIEludFNpemUmIHBhaW50U2l6ZSkKK2lubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0
Zm9ybUFwcGx5KFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1wZWRB
cnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5l
bFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpCiB7CiAgICAgaW50IHNjYW5saW5lID0gNCAqIHBh
aW50U2l6ZS53aWR0aCgpOwogICAgIGludCBleHRyYUhlaWdodCA9IDMgKiBrZXJuZWxTaXplWSAq
IDAuNWY7CkBAIC0xODUsOCArMTg1LDggQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBs
YXRmb3JtQXBwbHkoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIHQKICAgICAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGludCBibG9ja1NpemUgPSAo
ZW5kWSAtIHN0YXJ0WSkgKiBzY2FubGluZTsKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnNy
Y1BpeGVsQXJyYXkgPSBCeXRlQXJyYXk6OmNyZWF0ZShibG9ja1NpemUpOwotICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMuZHN0UGl4ZWxBcnJheSA9IEJ5dGVBcnJheTo6Y3JlYXRlKGJsb2NrU2l6
ZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zcmNQaXhlbEFycmF5ID0gVWludDhDbGFt
cGVkQXJyYXk6OmNyZWF0ZShibG9ja1NpemUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
ZHN0UGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoYmxvY2tTaXplKTsKICAg
ICAgICAgICAgICAgICAgICAgbWVtY3B5KHBhcmFtcy5zcmNQaXhlbEFycmF5LT5kYXRhKCksIHNy
Y1BpeGVsQXJyYXktPmRhdGEoKSArIHN0YXJ0WSAqIHNjYW5saW5lLCBibG9ja1NpemUpOwogICAg
ICAgICAgICAgICAgIH0KIApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0
RWZmZWN0KDApOwogCi0gICAgQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJy
YXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIXNyY1BpeGVs
QXJyYXkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjkyLDggKzI5Miw4IEBAIHZvaWQgRkVHYXVz
c2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgY2FsY3VsYXRlS2VybmVsU2l6
ZShmaWx0ZXIoKSwga2VybmVsU2l6ZVgsIGtlcm5lbFNpemVZLCBtX3N0ZFgsIG1fc3RkWSk7CiAK
ICAgICBJbnRTaXplIHBhaW50U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAg
IFJlZlB0cjxCeXRlQXJyYXk+IHRtcEltYWdlRGF0YSA9IEJ5dGVBcnJheTo6Y3JlYXRlKHBhaW50
U2l6ZS53aWR0aCgpICogcGFpbnRTaXplLmhlaWdodCgpICogNCk7Ci0gICAgQnl0ZUFycmF5KiB0
bXBQaXhlbEFycmF5ID0gdG1wSW1hZ2VEYXRhLmdldCgpOworICAgIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShwYWludFNp
emUud2lkdGgoKSAqIHBhaW50U2l6ZS5oZWlnaHQoKSAqIDQpOworICAgIFVpbnQ4Q2xhbXBlZEFy
cmF5KiB0bXBQaXhlbEFycmF5ID0gdG1wSW1hZ2VEYXRhLmdldCgpOwogCiAgICAgcGxhdGZvcm1B
cHBseShzcmNQaXhlbEFycmF5LCB0bXBQaXhlbEFycmF5LCBrZXJuZWxTaXplWCwga2VybmVsU2l6
ZVksIHBhaW50U2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggYjI5NWQzNjA4MDc0MDA1
MjM0MzM2YTNiMTI0NmRkOTUyNzllZjRmNy4uYzNkYjFmMTUwNmEyOGYxMTMwYjgyODdhZjQ4Mjcy
YzVmMjMwZjY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtNTcsOCArNTcsOCBAQCBwcml2YXRl
OgogCiAgICAgc3RydWN0IFBsYXRmb3JtQXBwbHlQYXJhbWV0ZXJzIHsKICAgICAgICAgRkVHYXVz
c2lhbkJsdXIqIGZpbHRlcjsKLSAgICAgICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJh
eTsKLSAgICAgICAgUmVmUHRyPEJ5dGVBcnJheT4gZHN0UGl4ZWxBcnJheTsKKyAgICAgICAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5OworICAgICAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGRzdFBpeGVsQXJyYXk7CiAgICAgICAgIGludCB3aWR0aDsKICAgICAg
ICAgaW50IGhlaWdodDsKICAgICAgICAgdW5zaWduZWQga2VybmVsU2l6ZVg7CkBAIC03MCwxMCAr
NzAsMTAgQEAgcHJpdmF0ZToKICAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXIqLCBmbG9hdCwgZmxv
YXQpOwogCiAgICAgc3RhdGljIGlubGluZSB2b2lkIGtlcm5lbFBvc2l0aW9uKGludCBib3hCbHVy
LCB1bnNpZ25lZCYgc3RkLCBpbnQmIGRMZWZ0LCBpbnQmIGRSaWdodCk7Ci0gICAgaW5saW5lIHZv
aWQgcGxhdGZvcm1BcHBseShCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJheSogdG1w
UGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJ
bnRTaXplJiBwYWludFNpemUpOworICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHkoVWludDhD
bGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4Q2xhbXBlZEFycmF5KiB0bXBQaXhlbEFy
cmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6ZVksIEludFNpemUm
IHBhaW50U2l6ZSk7CiAKLSAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhCeXRl
QXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQg
a2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpOwot
ICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlOZW9uKEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJh
eSwgQnl0ZUFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWdu
ZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CisgICAgaW5saW5lIHZvaWQgcGxh
dGZvcm1BcHBseUdlbmVyaWMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4
Q2xhbXBlZEFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWdu
ZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CisgICAgaW5saW5lIHZvaWQgcGxh
dGZvcm1BcHBseU5lb24oVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4Q2xh
bXBlZEFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQg
a2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmly
dHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCmluZGV4
IGU3OTVkMzU0OTRiNjE5ODk3Y2U5ODc4MTk4MTc4NWY2ODhlMjVjMTAuLjlkMzg2ZmM2YWRmMDNj
MmFkNjdhMjQ1NzYyZTU1ZmU3NzIwMjljNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcApAQCAtNjEsMTE0ICs2
MSwxMTQgQEAgY29uc3Qgc3RhdGljIGZsb2F0IGNGYWN0b3IyZGl2MyA9IC0yIC8gMy5mOwogLy8g
PDwgMSBpcyBzaWduZWQgbXVsdGlwbHkgYnkgMgogaW5saW5lIHZvaWQgRkVMaWdodGluZzo6TGln
aHRpbmdEYXRhOjp0b3BMZWZ0KGludCBvZmZzZXQsIEludFBvaW50JiBub3JtYWxWZWN0b3IpCiB7
Ci0gICAgaW50IGNlbnRlciA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCByaWdodCA9IHN0YXRpY19jYXN0PGludD4o
cGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
KyAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCByaWdodCA9IHN0YXRpY19jYXN0PGludD4o
cGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7
CiAgICAgb2Zmc2V0ICs9IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwotICAgIGludCBib3R0
b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxP
ZmZzZXQpKTsKLSAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+
Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50
IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNo
YW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBp
eGVscy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwog
ICAgIG5vcm1hbFZlY3Rvci5zZXRYKC0oY2VudGVyIDw8IDEpICsgKHJpZ2h0IDw8IDEpIC0gYm90
dG9tICsgYm90dG9tUmlnaHQpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZKC0oY2VudGVyIDw8IDEp
IC0gcmlnaHQgKyAoYm90dG9tIDw8IDEpICsgYm90dG9tUmlnaHQpOwogfQogCiBpbmxpbmUgdm9p
ZCBGRUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OnRvcFJvdyhpbnQgb2Zmc2V0LCBJbnRQb2ludCYg
bm9ybWFsVmVjdG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMt
PmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGlu
dCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNo
YW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+
Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50
IGxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxTaXpl
ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxp
bnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50
IHJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6
ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgKz0gd2lkdGhNdWx0aXBsaWVk
QnlQaXhlbFNpemU7Ci0gICAgaW50IGJvdHRvbUxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+Z2V0KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAg
aW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhh
Q2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b21SaWdodCA9IHN0YXRpY19jYXN0PGludD4o
cGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
KyAgICBpbnQgYm90dG9tTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNl
dCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbSA9
IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZz
ZXQpKTsKKyAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRl
bShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG5vcm1h
bFZlY3Rvci5zZXRYKC0obGVmdCA8PCAxKSArIChyaWdodCA8PCAxKSAtIGJvdHRvbUxlZnQgKyBi
b3R0b21SaWdodCk7CiAgICAgbm9ybWFsVmVjdG9yLnNldFkoLWxlZnQgLSAoY2VudGVyIDw8IDEp
IC0gcmlnaHQgKyBib3R0b21MZWZ0ICsgKGJvdHRvbSA8PCAxKSArIGJvdHRvbVJpZ2h0KTsKIH0K
IAogaW5saW5lIHZvaWQgRkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjp0b3BSaWdodChpbnQgb2Zm
c2V0LCBJbnRQb2ludCYgbm9ybWFsVmVjdG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nh
c3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9m
ZnNldCkpOwotICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9m
ZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0
PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zm
c2V0KSk7CisgICAgaW50IGNlbnRlciA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9m
ZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgKz0gd2lkdGhNdWx0aXBs
aWVkQnlQaXhlbFNpemU7Ci0gICAgaW50IGJvdHRvbUxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBp
eGVscy0+Z2V0KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0g
ICAgaW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0Fs
cGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0b21MZWZ0ID0gc3RhdGljX2Nhc3Q8aW50
PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQp
KTsKKyAgICBpbnQgYm90dG9tID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0
ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRYKC0obGVmdCA8
PCAxKSArIChjZW50ZXIgPDwgMSkgLSBib3R0b21MZWZ0ICsgYm90dG9tKTsKICAgICBub3JtYWxW
ZWN0b3Iuc2V0WSgtbGVmdCAtIChjZW50ZXIgPDwgMSkgKyBib3R0b21MZWZ0ICsgKGJvdHRvbSA8
PCAxKSk7CiB9CiAKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6bGVmdENv
bHVtbihpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFsVmVjdG9yKQogewotICAgIGludCBjZW50
ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxP
ZmZzZXQpKTsKLSAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9m
ZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGNlbnRl
ciA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxP
ZmZzZXQpKTsKKyAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShv
ZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG9mZnNldCAt
PSB3aWR0aE11bHRpcGxpZWRCeVBpeGVsU2l6ZTsKLSAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8
aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50
IHRvcFJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxT
aXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxp
bnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50
IHRvcFJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVs
U2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgKz0gd2lkdGhNdWx0aXBs
aWVkQnlQaXhlbFNpemUgPDwgMTsKLSAgICBpbnQgYm90dG9tID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IGJvdHRv
bVJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXpl
ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0b20gPSBzdGF0aWNfY2FzdDxp
bnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50
IGJvdHRvbVJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1Bp
eGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WCgt
dG9wICsgdG9wUmlnaHQgLSAoY2VudGVyIDw8IDEpICsgKHJpZ2h0IDw8IDEpIC0gYm90dG9tICsg
Ym90dG9tUmlnaHQpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZKC0odG9wIDw8IDEpIC0gdG9wUmln
aHQgKyAoYm90dG9tIDw8IDEpICsgYm90dG9tUmlnaHQpOwogfQogCiBpbmxpbmUgdm9pZCBGRUxp
Z2h0aW5nOjpMaWdodGluZ0RhdGE6OmludGVyaW9yKGludCBvZmZzZXQsIEludFBvaW50JiBub3Jt
YWxWZWN0b3IpCiB7Ci0gICAgaW50IGxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0
KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHJp
Z2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
KyAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBj
UGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG9mZnNldCAtPSB3aWR0aE11
bHRpcGxpZWRCeVBpeGVsU2l6ZTsKLSAgICBpbnQgdG9wTGVmdCA9IHN0YXRpY19jYXN0PGludD4o
cGl4ZWxzLT5nZXQob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
LSAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxw
aGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHRvcFJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwor
ICAgIGludCB0b3BMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0g
Y1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wID0gc3RhdGlj
X2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwor
ICAgIGludCB0b3BSaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAr
IGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0ICs9IHdpZHRo
TXVsdGlwbGllZEJ5UGl4ZWxTaXplIDw8IDE7Ci0gICAgaW50IGJvdHRvbUxlZnQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7Ci0gICAgaW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQo
b2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b21SaWdodCA9IHN0
YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNo
YW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgYm90dG9tTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4
ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Cisg
ICAgaW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNB
bHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxp
bnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNl
dCkpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRYKC10b3BMZWZ0ICsgdG9wUmlnaHQgLSAobGVmdCA8
PCAxKSArIChyaWdodCA8PCAxKSAtIGJvdHRvbUxlZnQgKyBib3R0b21SaWdodCk7CiAgICAgbm9y
bWFsVmVjdG9yLnNldFkoLXRvcExlZnQgLSAodG9wIDw8IDEpIC0gdG9wUmlnaHQgKyBib3R0b21M
ZWZ0ICsgKGJvdHRvbSA8PCAxKSArIGJvdHRvbVJpZ2h0KTsKIH0KIAogaW5saW5lIHZvaWQgRkVM
aWdodGluZzo6TGlnaHRpbmdEYXRhOjpyaWdodENvbHVtbihpbnQgb2Zmc2V0LCBJbnRQb2ludCYg
bm9ybWFsVmVjdG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMt
PmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGlu
dCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNo
YW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5p
dGVtKG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50
IGNlbnRlciA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNo
YW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgLT0gd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNpemU7
Ci0gICAgaW50IHRvcExlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCAt
IGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHRvcCA9IHN0YXRp
Y19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwor
ICAgIGludCB0b3BMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0g
Y1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wID0gc3RhdGlj
X2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwog
ICAgIG9mZnNldCArPSB3aWR0aE11bHRpcGxpZWRCeVBpeGVsU2l6ZSA8PCAxOwotICAgIGludCBi
b3R0b21MZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxT
aXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b20gPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBp
bnQgYm90dG9tTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQ
aXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbSA9IHN0YXRp
Y19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
ICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtdG9wTGVmdCArIHRvcCAtIChsZWZ0IDw8IDEpICsgKGNl
bnRlciA8PCAxKSAtIGJvdHRvbUxlZnQgKyBib3R0b20pOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZ
KC10b3BMZWZ0IC0gKHRvcCA8PCAxKSArIGJvdHRvbUxlZnQgKyAoYm90dG9tIDw8IDEpKTsKIH0K
IAogaW5saW5lIHZvaWQgRkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21MZWZ0KGludCBv
ZmZzZXQsIEludFBvaW50JiBub3JtYWxWZWN0b3IpCiB7Ci0gICAgaW50IGNlbnRlciA9IHN0YXRp
Y19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwot
ICAgIGludCByaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1Bp
eGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgY2VudGVyID0gc3RhdGlj
X2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwor
ICAgIGludCByaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQ
aXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0IC09IHdpZHRoTXVs
dGlwbGllZEJ5UGl4ZWxTaXplOwotICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgdG9wUmlnaHQg
PSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxw
aGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxz
LT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wUmlnaHQg
PSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0Fs
cGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRYKC10b3AgKyB0b3BSaWdo
dCAtIChjZW50ZXIgPDwgMSkgKyAocmlnaHQgPDwgMSkpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZ
KC0odG9wIDw8IDEpIC0gdG9wUmlnaHQgKyAoY2VudGVyIDw8IDEpICsgcmlnaHQpOwogfQogCiBp
bmxpbmUgdm9pZCBGRUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OmJvdHRvbVJvdyhpbnQgb2Zmc2V0
LCBJbnRQb2ludCYgbm9ybWFsVmVjdG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8
aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNl
dCkpOwotICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNl
dCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxp
bnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0
KSk7CisgICAgaW50IGxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQg
LSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIgPSBz
dGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0
KSk7CisgICAgaW50IHJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0
ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgLT0gd2lk
dGhNdWx0aXBsaWVkQnlQaXhlbFNpemU7Ci0gICAgaW50IHRvcExlZnQgPSBzdGF0aWNfY2FzdDxp
bnQ+KHBpeGVscy0+Z2V0KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0
KSk7Ci0gICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCB0b3BSaWdodCA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQp
KTsKKyAgICBpbnQgdG9wTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNl
dCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcCA9IHN0
YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQp
KTsKKyAgICBpbnQgdG9wUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZz
ZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG5vcm1hbFZlY3Rv
ci5zZXRYKC10b3BMZWZ0ICsgdG9wUmlnaHQgLSAobGVmdCA8PCAxKSArIChyaWdodCA8PCAxKSk7
CiAgICAgbm9ybWFsVmVjdG9yLnNldFkoLXRvcExlZnQgLSAodG9wIDw8IDEpIC0gdG9wUmlnaHQg
KyBsZWZ0ICsgKGNlbnRlciA8PCAxKSArIHJpZ2h0KTsKIH0KIAogaW5saW5lIHZvaWQgRkVMaWdo
dGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21SaWdodChpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9y
bWFsVmVjdG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdl
dChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBj
ZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5u
ZWxPZmZzZXQpKTsKKyAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVt
KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGNl
bnRlciA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5u
ZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgLT0gd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNpemU7Ci0g
ICAgaW50IHRvcExlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCAtIGNQ
aXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHRvcCA9IHN0YXRpY19j
YXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAg
IGludCB0b3BMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1Bp
eGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wID0gc3RhdGljX2Nh
c3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAg
IG5vcm1hbFZlY3Rvci5zZXRYKC10b3BMZWZ0ICsgdG9wIC0gKGxlZnQgPDwgMSkgKyAoY2VudGVy
IDw8IDEpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WSgtdG9wTGVmdCAtICh0b3AgPDwgMSkgKyBs
ZWZ0ICsgKGNlbnRlciA8PCAxKSk7CiB9CkBAIC0xNzYsNyArMTc2LDcgQEAgaW5saW5lIHZvaWQg
RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21SaWdodChpbnQgb2Zmc2V0LCBJbnRQb2lu
dCYgbm9ybWFsVmUKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OmlubGluZVNldFBpeGVsKGludCBv
ZmZzZXQsIExpZ2h0aW5nRGF0YSYgZGF0YSwgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYgcGFp
bnRpbmdEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxp
Z2h0WCwgaW50IGxpZ2h0WSwgZmxvYXQgZmFjdG9yWCwgZmxvYXQgZmFjdG9yWSwgSW50UG9pbnQm
IG5vcm1hbDJEVmVjdG9yKQogewotICAgIG1fbGlnaHRTb3VyY2UtPnVwZGF0ZVBhaW50aW5nRGF0
YShwYWludGluZ0RhdGEsIGxpZ2h0WCwgbGlnaHRZLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGF0YS5w
aXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSkgKiBkYXRhLnN1cmZhY2VT
Y2FsZSk7CisgICAgbV9saWdodFNvdXJjZS0+dXBkYXRlUGFpbnRpbmdEYXRhKHBhaW50aW5nRGF0
YSwgbGlnaHRYLCBsaWdodFksIHN0YXRpY19jYXN0PGZsb2F0PihkYXRhLnBpeGVscy0+aXRlbShv
ZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSkgKiBkYXRhLnN1cmZhY2VTY2FsZSk7CiAKICAg
ICBmbG9hdCBsaWdodFN0cmVuZ3RoOwogICAgIGlmICghbm9ybWFsMkRWZWN0b3IueCgpICYmICFu
b3JtYWwyRFZlY3Rvci55KCkpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCBpbmxpbmUgdm9pZCBGRUxp
Z2h0aW5nOjpwbGF0Zm9ybUFwcGx5KExpZ2h0aW5nRGF0YSYgZGF0YSwgTGlnaHRTb3VyY2U6OlBh
aW50aW5nRAogI2VuZGlmCiB9CiAKLWJvb2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKEJ5dGVB
cnJheSogcGl4ZWxzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitib29sIEZFTGlnaHRpbmc6OmRy
YXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSogcGl4ZWxzLCBpbnQgd2lkdGgsIGludCBoZWln
aHQpCiB7CiAgICAgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSBwYWludGluZ0RhdGE7CiAgICAg
TGlnaHRpbmdEYXRhIGRhdGE7CkBAIC0zNzMsOSArMzczLDkgQEAgYm9vbCBGRUxpZ2h0aW5nOjpk
cmF3TGlnaHRpbmcoQnl0ZUFycmF5KiBwaXhlbHMsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAg
ICAgICAgICAgIGRhdGEucGl4ZWxzLT5zZXQoaSwgY09wYXF1ZUFscGhhKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxhc3RQaXhlbDsgaSArPSBjUGl4ZWxTaXpl
KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGExID0gZGF0YS5waXhlbHMtPmdldChpKTsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYTIgPSBkYXRhLnBpeGVscy0+Z2V0KGkgKyAxKTsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYTMgPSBkYXRhLnBpeGVscy0+Z2V0KGkgKyAyKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYTEgPSBkYXRhLnBpeGVscy0+aXRlbShpKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYTIgPSBkYXRhLnBpeGVscy0+aXRlbShpICsgMSk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGEzID0gZGF0YS5waXhlbHMtPml0ZW0oaSArIDIpOwog
ICAgICAgICAgICAgLy8gYWxwaGEgc2V0IHRvIHNldCB0byBtYXgoYTEsIGEyLCBhMykKICAgICAg
ICAgICAgIGRhdGEucGl4ZWxzLT5zZXQoaSArIDMsIGExID49IGEyID8gKGExID49IGEzID8gYTEg
OiBhMykgOiAoYTIgPj0gYTMgPyBhMiA6IGEzKSk7CiAgICAgICAgIH0KQEAgLTM4OCw3ICszODgs
NyBAQCB2b2lkIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CiAgICAgRmls
dGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0gICAgQnl0ZUFycmF5KiBzcmNQaXhl
bEFycmF5ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBVaW50OENsYW1w
ZWRBcnJheSogc3JjUGl4ZWxBcnJheSA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7
CiAgICAgaWYgKCFzcmNQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5k
ZXggNTQyNmY5MTJjOWE4YTdjMDgwZWI4NWI1NjgxNzQ3OTY1Yzk0ZGJmMS4uZDBkMmIzNjg1ZTUy
MmFjNDhlYjA0Yjk2Nzk3OWYyYTNjNjA1ZGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAgLTM0LDggKzM0LDgg
QEAKICNpbmNsdWRlICJMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlBvaW50TGlnaHRTb3VyY2Uu
aCIKICNpbmNsdWRlICJTcG90TGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBl
ZEFycmF5Lmg+CiAKIC8vIENvbW1vbiBiYXNlIGNsYXNzIGZvciBGRURpZmZ1c2VMaWdodGluZyBh
bmQgRkVTcGVjdWxhckxpZ2h0aW5nCiAKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgc3RydWN0IExpZ2h0aW5nRGF0YSB7CiAgICAgICAgIC8vIFRoaXMgc3RydWN0dXJlIGNvbnRh
aW5zIG9ubHkgcmVhZC1vbmx5IChTTVAgc2FmZSkgZGF0YQotICAgICAgICBCeXRlQXJyYXkqIHBp
eGVsczsKKyAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsczsKICAgICAgICAgZmxvYXQg
c3VyZmFjZVNjYWxlOwogICAgICAgICBpbnQgd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNpemU7CiAg
ICAgICAgIGludCB3aWR0aERlY3JlYXNlZEJ5T25lOwpAQCAtOTIsNyArOTIsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBGRUxpZ2h0aW5nKEZpbHRlciosIExpZ2h0aW5nVHlwZSwgY29uc3QgQ29sb3Im
LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExp
Z2h0U291cmNlPik7CiAKLSAgICBib29sIGRyYXdMaWdodGluZyhCeXRlQXJyYXkqLCBpbnQsIGlu
dCk7CisgICAgYm9vbCBkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkqLCBpbnQsIGludCk7
CiAgICAgaW5saW5lIHZvaWQgaW5saW5lU2V0UGl4ZWwoaW50IG9mZnNldCwgTGlnaHRpbmdEYXRh
JiwgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGxpZ2h0WCwgaW50IGxpZ2h0WSwgZmxvYXQgZmFjdG9yWCwgZmxvYXQgZmFjdG9y
WSwgSW50UG9pbnQmIG5vcm1hbFZlY3Rvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAppbmRleCA1YmE0
ZGZjMTRjMWUxOGQxOGNiYjNlOTNlM2RlMzAwZDBmZGI3Mzk4Li40NTI4ZGMzMjI3ZDA5YmFiMDBl
NzI3MzI0MzVjOTg5NTY5Y2I4YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCkBAIC0zMCw4ICszMCw4
IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKIAotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxK
b2JzLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiB1c2luZyBzdGQ6Om1pbjsKQEAgLTEwNiw4ICsxMDYsOCBAQCBib29sIEZF
TW9ycGhvbG9neTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQogCiB2b2lkIEZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseUdlbmVyaWMoUGFpbnRpbmdEYXRhKiBwYWludGluZ0RhdGEsIGludCB5
U3RhcnQsIGludCB5RW5kKQogewotICAgIEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSA9IHBhaW50
aW5nRGF0YS0+c3JjUGl4ZWxBcnJheTsKLSAgICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBw
YWludGluZ0RhdGEtPmRzdFBpeGVsQXJyYXk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIHNyY1Bp
eGVsQXJyYXkgPSBwYWludGluZ0RhdGEtPnNyY1BpeGVsQXJyYXk7CisgICAgVWludDhDbGFtcGVk
QXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBwYWludGluZ0RhdGEtPmRzdFBpeGVsQXJyYXk7CiAgICAg
Y29uc3QgaW50IHdpZHRoID0gcGFpbnRpbmdEYXRhLT53aWR0aDsKICAgICBjb25zdCBpbnQgaGVp
Z2h0ID0gcGFpbnRpbmdEYXRhLT5oZWlnaHQ7CiAgICAgY29uc3QgaW50IGVmZmVjdFdpZHRoID0g
d2lkdGggKiA0OwpAQCAtMTIyLDkgKzEyMiw5IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9y
bUFwcGx5R2VuZXJpYyhQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YSwgaW50IHlTdGFydCwKICAg
ICAgICAgICAgIGV4dHJlbWEuY2xlYXIoKTsKICAgICAgICAgICAgIC8vIENvbXB1dGUgZXh0cmVt
YXMgZm9yIGVhY2ggY29sdW1ucwogICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPD0gcmFk
aXVzWDsgKyt4KSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2x1bW5FeHRyZW1h
ID0gc3JjUGl4ZWxBcnJheS0+Z2V0KGV4dHJlbWFTdGFydFkgKiBlZmZlY3RXaWR0aCArIDQgKiB4
ICsgY2xyQ2hhbm5lbCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2x1bW5FeHRy
ZW1hID0gc3JjUGl4ZWxBcnJheS0+aXRlbShleHRyZW1hU3RhcnRZICogZWZmZWN0V2lkdGggKyA0
ICogeCArIGNsckNoYW5uZWwpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGVZID0gZXh0cmVt
YVN0YXJ0WSArIDE7IGVZIDwgZXh0cmVtYUVuZFk7ICsrZVkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBwaXhlbCA9IHNyY1BpeGVsQXJyYXktPmdldChlWSAqIGVmZmVjdFdp
ZHRoICsgNCAqIHggKyBjbHJDaGFubmVsKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBwaXhlbCA9IHNyY1BpeGVsQXJyYXktPml0ZW0oZVkgKiBlZmZlY3RXaWR0aCArIDQgKiB4
ICsgY2xyQ2hhbm5lbCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobV90eXBlID09IEZFTU9S
UEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAmJiBwaXhlbCA8PSBjb2x1bW5FeHRyZW1hKQogICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElM
QVRFICYmIHBpeGVsID49IGNvbHVtbkV4dHJlbWEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb2x1bW5FeHRyZW1hID0gcGl4ZWw7CkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBGRU1vcnBo
b2xvZ3k6OnBsYXRmb3JtQXBwbHlHZW5lcmljKFBhaW50aW5nRGF0YSogcGFpbnRpbmdEYXRhLCBp
bnQgeVN0YXJ0LAogICAgICAgICAgICAgLy8gS2VybmVsIGlzIGZpbGxlZCwgZ2V0IGV4dHJlbWEg
b2YgbmV4dCBjb2x1bW4KICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsr
eCkgewogICAgICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gbWluKHggKyByYWRpdXNYLCB3
aWR0aCAtIDEpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVtYSA9
IHNyY1BpeGVsQXJyYXktPmdldChleHRyZW1hU3RhcnRZICogZWZmZWN0V2lkdGggKyBlbmRYICog
NCArIGNsckNoYW5uZWwpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0
cmVtYSA9IHNyY1BpeGVsQXJyYXktPml0ZW0oZXh0cmVtYVN0YXJ0WSAqIGVmZmVjdFdpZHRoICsg
ZW5kWCAqIDQgKyBjbHJDaGFubmVsKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gZXh0
cmVtYVN0YXJ0WSArIDE7IGkgPD0gZXh0cmVtYUVuZFk7ICsraSkgewotICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsID0gc3JjUGl4ZWxBcnJheS0+Z2V0KGkgKiBlZmZlY3RX
aWR0aCArIGVuZFggKiA0ICsgY2xyQ2hhbm5lbCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGkgKiBlZmZlY3RXaWR0aCArIGVu
ZFggKiA0ICsgY2xyQ2hhbm5lbCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobV90eXBlID09
IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSAmJiBwaXhlbCA8PSBjb2x1bW5FeHRyZW1hKQog
ICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFU
T1JfRElMQVRFICYmIHBpeGVsID49IGNvbHVtbkV4dHJlbWEpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgY29sdW1uRXh0cmVtYSA9IHBpeGVsOwpAQCAtMTk3LDIyICsxOTcsMjAgQEAgdm9pZCBG
RU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0
KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0gICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0g
Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkq
IGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBp
ZiAoIWRzdFBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldElzQWxwaGFJbWFn
ZShpbi0+aXNBbHBoYUltYWdlKCkpOwotICAgIGlmIChtX3JhZGl1c1ggPD0gMCB8fCBtX3JhZGl1
c1kgPD0gMCkgewotICAgICAgICBkc3RQaXhlbEFycmF5LT5jbGVhcigpOworICAgIGlmIChtX3Jh
ZGl1c1ggPD0gMCB8fCBtX3JhZGl1c1kgPD0gMCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIEZpbHRlciogZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgaW50IHJhZGl1c1ggPSBz
dGF0aWNfY2FzdDxpbnQ+KGZsb29yZihmaWx0ZXItPmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fcmFk
aXVzWCkpKTsKICAgICBpbnQgcmFkaXVzWSA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKGZpbHRl
ci0+YXBwbHlWZXJ0aWNhbFNjYWxlKG1fcmFkaXVzWSkpKTsKIAogICAgIEludFJlY3QgZWZmZWN0
RHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0
ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBzcmNQaXhlbEFycmF5ID0gaW4t
PmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsKKyAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2Uo
ZWZmZWN0RHJhd2luZ1JlY3QpOwogCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YTsKICAg
ICBwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheSA9IHNyY1BpeGVsQXJyYXkuZ2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhv
bG9neS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuaAppbmRleCA1NDJkMjZiMjgzOTZmMTkxMjBmMzY1MmMzMDI5NmUxYjBkNGIxZjgwLi4x
OWRhNjM1YTJlMDNhNjFhZjA0MDhlY2Q0ZjkwZmRlNGIwZTA0NzMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgK
QEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKICAg
ICBzdHJ1Y3QgUGFpbnRpbmdEYXRhIHsKLSAgICAgICAgQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5
OwotICAgICAgICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXk7CisgICAgICAgIFVpbnQ4Q2xhbXBl
ZEFycmF5KiBzcmNQaXhlbEFycmF5OworICAgICAgICBVaW50OENsYW1wZWRBcnJheSogZHN0UGl4
ZWxBcnJheTsKICAgICAgICAgaW50IHdpZHRoOwogICAgICAgICBpbnQgaGVpZ2h0OwogICAgICAg
ICBpbnQgcmFkaXVzWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCBkNWQ2NGMxMzA2ZjQ4ZTc2NThk
ZWE1NjQ3ZTExNDExODNhZDU2MmYxLi5mYWY1ZDEyMGJmMzk4NWM2YTI4NjVlZjg0NzYyMzVkZjk2
NGVjMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAi
UmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUg
PHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9QYXJhbGxlbEpvYnMuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMzAsNyArMzMwLDcgQEAgdW5zaWduZWQgY2hh
ciBGRVR1cmJ1bGVuY2U6OmNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KGludCBjaGFu
bmVsLCBQYWludGkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHVyYnVs
ZW5jZUZ1bmN0aW9uUmVzdWx0ICogMjU1KTsKIH0KIAotaW5saW5lIHZvaWQgRkVUdXJidWxlbmNl
OjpmaWxsUmVnaW9uKEJ5dGVBcnJheSogcGl4ZWxBcnJheSwgUGFpbnRpbmdEYXRhJiBwYWludGlu
Z0RhdGEsIGludCBzdGFydFksIGludCBlbmRZKQoraW5saW5lIHZvaWQgRkVUdXJidWxlbmNlOjpm
aWxsUmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFycmF5LCBQYWludGluZ0RhdGEmIHBh
aW50aW5nRGF0YSwgaW50IHN0YXJ0WSwgaW50IGVuZFkpCiB7CiAgICAgSW50UmVjdCBmaWx0ZXJS
ZWdpb24gPSBhYnNvbHV0ZVBhaW50UmVjdCgpOwogICAgIEludFBvaW50IHBvaW50KDAsIGZpbHRl
clJlZ2lvbi55KCkgKyBzdGFydFkpOwpAQCAtMzU2LDE0ICszNTYsMTIgQEAgdm9pZCBGRVR1cmJ1
bGVuY2U6OmZpbGxSZWdpb25Xb3JrZXIoRmlsbFJlZ2lvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMp
CiAKIHZvaWQgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogewotICAgIEJ5
dGVBcnJheSogcGl4ZWxBcnJheSA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7Cisg
ICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXkgPSBjcmVhdGVVbm11bHRpcGxpZWRJbWFn
ZVJlc3VsdCgpOwogICAgIGlmICghcGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGFic29sdXRlUGFpbnRSZWN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBpeGVsQXJyYXkt
PmNsZWFyKCk7CisgICAgaWYgKGFic29sdXRlUGFpbnRSZWN0KCkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YShtX3NlZWQs
IHJvdW5kZWRJbnRTaXplKGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpLnNpemUoKSkpOwogICAg
IGluaXRQYWludChwYWludGluZ0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKaW5kZXggNTkyNTdkMDI2ZDM0
OTZlMzMyYWViY2E0MWZkNmRmZWJhZWZlMGNhOS4uNDdjOGJlZTc5OTU2YmQ0ZWIxMmFhMGE2ZDYy
Y2JhMWM0YjA3YjM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0
ZToKIAogICAgIHN0cnVjdCBGaWxsUmVnaW9uUGFyYW1ldGVycyB7CiAgICAgICAgIEZFVHVyYnVs
ZW5jZSogZmlsdGVyOwotICAgICAgICBCeXRlQXJyYXkqIHBpeGVsQXJyYXk7CisgICAgICAgIFVp
bnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFycmF5OwogICAgICAgICBQYWludGluZ0RhdGEqIHBhaW50
aW5nRGF0YTsKICAgICAgICAgaW50IHN0YXJ0WTsKICAgICAgICAgaW50IGVuZFk7CkBAIC0xMjEs
NyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBpbml0UGFpbnQoUGFpbnRpbmdE
YXRhJik7CiAgICAgZmxvYXQgbm9pc2UyRChpbnQgY2hhbm5lbCwgUGFpbnRpbmdEYXRhJiwgU3Rp
dGNoRGF0YSYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB1bnNpZ25lZCBjaGFyIGNhbGN1bGF0
ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KGludCBjaGFubmVsLCBQYWludGluZ0RhdGEmLCBTdGl0
Y2hEYXRhJiwgY29uc3QgRmxvYXRQb2ludCYpOwotICAgIGlubGluZSB2b2lkIGZpbGxSZWdpb24o
Qnl0ZUFycmF5KiwgUGFpbnRpbmdEYXRhJiwgaW50LCBpbnQpOworICAgIGlubGluZSB2b2lkIGZp
bGxSZWdpb24oVWludDhDbGFtcGVkQXJyYXkqLCBQYWludGluZ0RhdGEmLCBpbnQsIGludCk7CiAK
ICAgICBUdXJidWxlbmNlVHlwZSBtX3R5cGU7CiAgICAgZmxvYXQgbV9iYXNlRnJlcXVlbmN5WDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmNwcAppbmRleCA4OWQ1ODFjYWZmNzJhNDE5Y2M3ZDI4YjFjMTE1MzA4ZWZi
NTAwOWJkLi45Y2Q4NzYyZGViODU4NmMyYzNjNDQ2ODY2Y2ZkZmYzMDk1MzQxNDdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCi0jaW5jbHVkZSA8
d3RmL0J5dGVBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEZpbHRlckVmZmVj
dDo6Zm9yY2VWYWxpZFByZU11bHRpcGxpZWRQaXhlbHMoKQogICAgIGlmICghbV9wcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEJ5dGVBcnJheSogaW1hZ2VB
cnJheSA9IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOworICAgIFVpbnQ4Q2xhbXBl
ZEFycmF5KiBpbWFnZUFycmF5ID0gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7CiAg
ICAgdW5zaWduZWQgY2hhciogcGl4ZWxEYXRhID0gaW1hZ2VBcnJheS0+ZGF0YSgpOwogICAgIGlu
dCBwaXhlbEFycmF5TGVuZ3RoID0gaW1hZ2VBcnJheS0+bGVuZ3RoKCk7CiAKQEAgLTE3MywyMyAr
MTczLDIzIEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogICAg
IHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVB
cnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlwbGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJl
Y3QpCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0
aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBBU1NFUlQoaXNGaWx0ZXJT
aXplVmFsaWQocmVjdCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IGltYWdlRGF0YSA9IEJ5dGVB
cnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVh
dGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwogICAgIGNvcHlVbm11bHRpcGxp
ZWRJbWFnZShpbWFnZURhdGEuZ2V0KCksIHJlY3QpOwogICAgIHJldHVybiBpbWFnZURhdGEucmVs
ZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1ByZW11
bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQorUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0
JiByZWN0KQogewogICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChyZWN0KSk7Ci0gICAgUmVm
UHRyPEJ5dGVBcnJheT4gaW1hZ2VEYXRhID0gQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0aCgp
ICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1h
Z2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0Lmhl
aWdodCgpICogNCk7CiAgICAgY29weVByZW11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0KCks
IHJlY3QpOwogICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZSgpOwogfQogCi1pbmxpbmUgdm9p
ZCBGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzKEJ5dGVBcnJheSogc291cmNlLCBCeXRlQXJy
YXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQoraW5saW5lIHZvaWQgRmlsdGVy
RWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBVaW50OENs
YW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8g
SW5pdGlhbGl6ZSB0aGUgZGVzdGluYXRpb24gdG8gdHJhbnNwYXJlbnQgYmxhY2ssIGlmIG5vdCBl
bnRpcmVseSBjb3ZlcmVkIGJ5IHRoZSBzb3VyY2UuCiAgICAgaWYgKHJlY3QueCgpIDwgMCB8fCBy
ZWN0LnkoKSA8IDAgfHwgcmVjdC5tYXhYKCkgPiBtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkg
fHwgcmVjdC5tYXhZKCkgPiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpKQpAQCAtMjMzLDcg
KzIzMyw3IEBAIGlubGluZSB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMoQnl0ZUFy
cmF5KiBzb3VyY2UsIEJ5dGVBcnJheSogZGVzdGluYXRpCiAgICAgfQogfQogCi12b2lkIEZpbHRl
ckVmZmVjdDo6Y29weVVubXVsdGlwbGllZEltYWdlKEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmIHJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZElt
YWdlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKICAgICBBU1NFUlQoaGFzUmVzdWx0KCkpOwogCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBG
aWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRJbWFnZShCeXRlQXJyYXkqIGRlc3RpbmF0aW9u
LCBjb25zdCBJbnRSZWN0JgogICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9
IG1faW1hZ2VCdWZmZXJSZXN1bHQtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KElu
dFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgQVNTRVJUKGlzRmlsdGVyU2l6ZVZhbGlkKG1fYWJzb2x1dGVQYWludFJlY3Qp
KTsKLSAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBCeXRlQXJyYXk6OmNy
ZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0Lmhl
aWdodCgpICogNCk7CisgICAgICAgICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fi
c29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
KiBzb3VyY2VDb21wb25lbnQgPSBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpOwog
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZGVzdGluYXRpb25Db21wb25lbnQgPSBtX3VubXVs
dGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBl
bmQgPSBzb3VyY2VDb21wb25lbnQgKyAobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9h
YnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQg
RmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkSW1hZ2UoQnl0ZUFycmF5KiBkZXN0aW5hdGlv
biwgY29uc3QgSW50UmVjdCYKICAgICBjb3B5SW1hZ2VCeXRlcyhtX3VubXVsdGlwbGllZEltYWdl
UmVzdWx0LmdldCgpLCBkZXN0aW5hdGlvbiwgcmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0
Ojpjb3B5UHJlbXVsdGlwbGllZEltYWdlKEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IElu
dFJlY3QmIHJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRJbWFnZShV
aW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAg
ICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKIApAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgRmlsdGVy
RWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZEltYWdlKEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmCiAgICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IG1f
aW1hZ2VCdWZmZXJSZXN1bHQtPmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQ
b2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSkpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChtX2Fic29sdXRlUGFpbnRSZWN0KSk7
Ci0gICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IEJ5dGVBcnJheTo6Y3Jl
YXRlKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVp
Z2h0KCkgKiA0KTsKKyAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWlu
dDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fi
c29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
KiBzb3VyY2VDb21wb25lbnQgPSBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCk7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbkNvbXBvbmVudCA9IG1fcHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBl
bmQgPSBzb3VyY2VDb21wb25lbnQgKyAobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9h
YnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEltYWdl
QnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICByZXR1
cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAotQnl0ZUFycmF5KiBGaWx0ZXJFZmZl
Y3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCkKK1VpbnQ4Q2xhbXBlZEFycmF5KiBG
aWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIHsKICAgICAvLyBP
bmx5IG9uZSByZXN1bHQgdHlwZSBpcyBhbGxvd2VkLgogICAgIEFTU0VSVCghaGFzUmVzdWx0KCkp
OwpAQCAtMzE2LDExICszMTYsMTEgQEAgQnl0ZUFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVu
bXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIAogICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCA9IEJ5dGVBcnJheTo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJz
b2x1dGVQYWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRo
KCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CiAgICAgcmV0dXJuIG1fdW5t
dWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7CiB9CiAKLUJ5dGVBcnJheSogRmlsdGVyRWZmZWN0
OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQorVWludDhDbGFtcGVkQXJyYXkqIEZp
bHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIHsKICAgICAvLyBP
bmx5IG9uZSByZXN1bHQgdHlwZSBpcyBhbGxvd2VkLgogICAgIEFTU0VSVCghaGFzUmVzdWx0KCkp
OwpAQCAtMzI4LDcgKzMyOCw3IEBAIEJ5dGVBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogCiAgICAgaWYgKG1fYWJzb2x1dGVQYWludFJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3Vs
dCA9IEJ5dGVBcnJheTo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJz
b2x1dGVQYWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0
aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwogICAgIHJldHVybiBtX3By
ZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggOGI0
YWQ2ZjkyMjc1MmZkZTIxYmE4NWRjYjEzMDZkM2E4ZWFlMmM2OS4uYzk5Y2Q1MDFkOWMwNDZmMTE1
NmIxMjMyMjhiYzI1OTg4ODI1MGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yNiwxMCArMjYsMTAg
QEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAKLSNpbmNs
dWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHN0
YXRpYyBjb25zdCBmbG9hdCBrTWF4RmlsdGVyU2l6ZSA9IDUwMDAuMGY7CkBAIC01NiwxMCArNTYs
MTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhclJlc3VsdCgpOwogICAgIEltYWdlQnVmZmVy
KiBhc0ltYWdlQnVmZmVyKCk7Ci0gICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGFzVW5tdWx0aXBs
aWVkSW1hZ2UoY29uc3QgSW50UmVjdCYpOwotICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBhc1By
ZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5VW5tdWx0aXBs
aWVkSW1hZ2UoQnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZv
aWQgY29weVByZW11bHRpcGxpZWRJbWFnZShCeXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNVbm11bHRpcGxp
ZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gYXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29weVVu
bXVsdGlwbGllZEltYWdlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZvaWQgY29weVByZW11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJh
eSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKTsKIAogICAgIEZpbHRlckVmZmVjdFZlY3Rv
ciYgaW5wdXRFZmZlY3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0ZXJF
ZmZlY3QqIGlucHV0RWZmZWN0KHVuc2lnbmVkKSBjb25zdDsKQEAgLTEzMyw4ICsxMzMsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgRmlsdGVyRWZmZWN0KEZpbHRlciopOwogCiAgICAgSW1hZ2VCdWZmZXIq
IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgQnl0ZUFycmF5KiBjcmVhdGVVbm11bHRp
cGxpZWRJbWFnZVJlc3VsdCgpOwotICAgIEJ5dGVBcnJheSogY3JlYXRlUHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGNyZWF0ZVVubXVsdGlwbGllZElt
YWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpOwogCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGZpbHRlciB3aWxsIG9u
bHkgb3BlcmF0ZSBjb3JyZWN0bHkgb24gdmFsaWQgUkdCQSB2YWx1ZXMsIHdpdGgKICAgICAvLyBh
bHBoYSBpbiBbMCwyNTVdIGFuZCBlYWNoIGNvbG9yIGNvbXBvbmVudCBpbiBbMCwgYWxwaGFdLgpA
QCAtMTQ1LDggKzE0NSw4IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IG1faW1hZ2VCdWZmZXJSZXN1bHQ7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBtX3ByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdDsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1fdW5tdWx0
aXBsaWVkSW1hZ2VSZXN1bHQ7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBtX3ByZW11
bHRpcGxpZWRJbWFnZVJlc3VsdDsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1dEVmZmVj
dHM7CiAKICAgICBib29sIG1fYWxwaGFJbWFnZTsKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRl
OgogICAgIEZpbHRlciogbV9maWx0ZXI7CiAgICAgCiBwcml2YXRlOgotICAgIGlubGluZSB2b2lk
IGNvcHlJbWFnZUJ5dGVzKEJ5dGVBcnJheSogc291cmNlLCBCeXRlQXJyYXkqIGRlc3RpbmF0aW9u
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgaW5saW5lIHZvaWQgY29weUltYWdlQnl0ZXMoVWludDhD
bGFtcGVkQXJyYXkqIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25z
dCBJbnRSZWN0Jik7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciB2YXJpYWJsZXMgYXJl
IFNWRyBzcGVjaWZpYyBhbmQgd2lsbCBtb3ZlIHRvIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLgogICAgIC8vIFNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ1NjE0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9hcm0vRkVHYXVzc2lhbkJsdXJORU9OLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUdhdXNzaWFuQmx1ck5FT04uaAppbmRleCA5NjAz
N2FhYjlhYjJlMWFhOTc3NmE2ODFhZWExZDk2NTk1ZjhkNWE3Li4xZmIzNzUyYzVjZTQ0OTJhZWI5
ZWYyM2M2ZTg5ZTM2MGU3NTNkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUdhdXNzaWFuQmx1ck5FT04uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUdhdXNzaWFuQmx1ck5FT04u
aApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIG5lb25EcmF3QWxsQ2hhbm5lbEdhdXNzaWFuQmx1cih1
bnNpZ25lZCBjaGFyKiBzb3VyY2UsIHVuc2lnbmVkIGNoYXIqIGRlc3Rpbgogdm9pZCBuZW9uRHJh
d0FscGhhQ2hhbm5lbEdhdXNzaWFuQmx1cih1bnNpZ25lZCBjaGFyKiBzb3VyY2UsIHVuc2lnbmVk
IGNoYXIqIGRlc3RpbmF0aW9uLCBGRUdhdXNzaWFuQmx1clBhaW50aW5nRGF0YUZvck5lb24qKTsK
IH0KIAotaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlOZW9uKEJ5dGVB
cnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBr
ZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSkKK2lu
bGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5TmVvbihVaW50OENsYW1wZWRB
cnJheSogc3JjUGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVu
c2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRT
aXplKQogewogICAgIGNvbnN0IGludCB3aWR0aE11bHRpcGxpZWRCeUZvdXIgPSA0ICogcGFpbnRT
aXplLndpZHRoKCk7CiAgICAgRkVHYXVzc2lhbkJsdXJQYWludGluZ0RhdGFGb3JOZW9uIGFyZ3Vt
ZW50c1ggPSB7CkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpw
bGF0Zm9ybUFwcGx5TmVvbihCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJhCiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmVvbkRyYXdBbGxDaGFubmVsR2F1c3NpYW5C
bHVyKHNyY1BpeGVsQXJyYXktPmRhdGEoKSwgdG1wUGl4ZWxBcnJheS0+ZGF0YSgpLCAmYXJndW1l
bnRzWCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBCeXRlQXJyYXkqIGF1eFBpeGVs
QXJyYXkgPSB0bXBQaXhlbEFycmF5OworICAgICAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIGF1
eFBpeGVsQXJyYXkgPSB0bXBQaXhlbEFycmF5OwogICAgICAgICAgICAgdG1wUGl4ZWxBcnJheSA9
IHNyY1BpeGVsQXJyYXk7CiAgICAgICAgICAgICBzcmNQaXhlbEFycmF5ID0gYXV4UGl4ZWxBcnJh
eTsKICAgICAgICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5C
bHVyOjpwbGF0Zm9ybUFwcGx5TmVvbihCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJh
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmVvbkRyYXdBbGxDaGFubmVsR2F1
c3NpYW5CbHVyKHRtcFBpeGVsQXJyYXktPmRhdGEoKSwgc3JjUGl4ZWxBcnJheS0+ZGF0YSgpLCAm
YXJndW1lbnRzWSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBCeXRlQXJyYXkqIGF1
eFBpeGVsQXJyYXkgPSB0bXBQaXhlbEFycmF5OworICAgICAgICAgICAgVWludDhDbGFtcGVkQXJy
YXkqIGF1eFBpeGVsQXJyYXkgPSB0bXBQaXhlbEFycmF5OwogICAgICAgICAgICAgdG1wUGl4ZWxB
cnJheSA9IHNyY1BpeGVsQXJyYXk7CiAgICAgICAgICAgICBzcmNQaXhlbEFycmF5ID0gYXV4UGl4
ZWxBcnJheTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggOTBkMjMzMjE0MjVkNTE1MGFhOWE2MDVlZTM1ZmY3MjA5YjM3Yzdm
OC4uY2IzYTViNzdlNWY1NTM5MTAwZmYyNWY0ZGZhYzAwZjc4ZDYwYTBmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNTAsNyArMTUwLDcg
QEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YShEcmF3aW4KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQ
dHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXplKG1fY3Vy
cmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMg
PSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCk7CisgICAgdW5zaWduZWQgY2hhciog
cGl4ZWxzID0gaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKICAgICBpbnQgdG90YWxCeXRlcyA9
IDQgKiBtX2N1cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodDsKIAogICAgIHJlYWRSZW5kZXJp
bmdSZXN1bHRzKHBpeGVscywgdG90YWxCeXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmluZGV4IDUyNDIzMDI0NTEz
YjJlM2JlYzQ4YjQ5ZTdhMzhlN2I1NTBmNjY2Y2IuLmIwZjk5NWVkMDQyZjljZjFiOTEzMDkwMjhi
OWMwZTg3ZjYyNmJiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCkBAIC0xODksMTggKzE4OSwxNSBAQCB2b2lkIElt
YWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4m
IGxvb2tVcFRhYmxlKQogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLVBhc3NS
ZWZQdHI8Qnl0ZUFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
SW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
CiAgICAgZmxvYXQgYXJlYSA9IDQuMGYgKiByZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpOwog
ICAgIGlmIChhcmVhID4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCkpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHJl
c3VsdCA9IEJ5dGVBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0
KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFy
cmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwogICAgIHVuc2ln
bmVkIGNoYXIqIGRhdGEgPSByZXN1bHQtPmRhdGEoKTsKIAotICAgIGlmIChyZWN0LngoKSA8IDAg
fHwgcmVjdC55KCkgPCAwIHx8IHJlY3QubWF4WCgpID4gc2l6ZS53aWR0aCgpIHx8IHJlY3QubWF4
WSgpID4gc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgbWVtc2V0KGRhdGEsIDAsIHJlc3VsdC0+bGVu
Z3RoKCkpOwotCiAgICAgaW50IG9yaWdpbnggPSByZWN0LngoKTsKICAgICBpbnQgZGVzdHggPSAw
OwogICAgIGlmIChvcmlnaW54IDwgMCkgewpAQCAtMjcxLDEyICsyNjgsMTIgQEAgUGFzc1JlZlB0
cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFn
ZUJ1ZmZlckRhdGEmIGkKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29u
c3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Bhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29u
c3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICByZXR1cm4g
Z2V0SW1hZ2VEYXRhPFVubXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUpOwogfQogCi1Q
YXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Bhc3NSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGdldEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihyZWN0LCBtX2RhdGEsIG1fc2l6ZSk7
CiB9CkBAIC0yOTcsNyArMjk0LDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcHJlbXVs
dGlwbHlBQkdSdG9BUkdCKHVuc2lnbmVkIGludCB4KQogICAgIHJldHVybiB4OwogfQogCi12b2lk
IEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5
KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCit2b2lk
IEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFt
cGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3Rl
bSkKIHsKICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKHNv
dXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAppbmRleCAzNjQ0MTMxYmMy
YjFjYzNlYjQ0ZTAwNjhmY2U5ZWUxN2YyNmE4YTc3Li43OWVmODdhMjhjNGI3MjU1M2YxZTk0YTE3
ZTQwN2I3NGMxNjI1YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCkBAIC0yMzAsMjMgKzIzMCwxNyBA
QCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVj
dG9yPGludD4mIGxvb2tVcFRhYmxlKQogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGll
ZD4KLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgU2tDYW52YXMqIGNhbnZhcywKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBTa0NhbnZhcyogY2FudmFzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGZs
b2F0IGFyZWEgPSA0LjBmICogcmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKTsKICAgICBpZiAo
YXJlYSA+IHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiByZXN1bHQgPSBC
eXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CisgICAg
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKIAogICAgIHVuc2lnbmVkIGNo
YXIqIGRhdGEgPSByZXN1bHQtPmRhdGEoKTsKIAotICAgIGlmIChyZWN0LngoKSA8IDAKLSAgICAg
ICAgfHwgcmVjdC55KCkgPCAwCi0gICAgICAgIHx8IHJlY3QubWF4WCgpID4gc2l6ZS53aWR0aCgp
Ci0gICAgICAgIHx8IHJlY3QubWF4WSgpID4gc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgbWVtc2V0
KGRhdGEsIDAsIHJlc3VsdC0+bGVuZ3RoKCkpOwotCiAgICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVy
Um93ID0gNCAqIHJlY3Qud2lkdGgoKTsKICAgICBTa0JpdG1hcCBkZXN0Qml0bWFwOwogICAgIGRl
c3RCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpLCBkZXN0Qnl0ZXNQZXJSb3cpOwpAQCAtMjYyLDE3ICsyNTYsMTcg
QEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
LCBTa0NhbnZhcyogY2FudmFzLAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1Q
YXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJl
dHVybiBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihyZWN0LCBjb250ZXh0KCktPnBsYXRmb3Jt
Q29udGV4dCgpLT5jYW52YXMoKSwgbV9zaXplKTsKIH0KIAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+
IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJl
Y3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJldHVybiBnZXRJbWFnZURhdGE8
UHJlbXVsdGlwbGllZD4ocmVjdCwgY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFz
KCksIG1fc2l6ZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBs
eSBtdWx0aXBsaWVkLCBCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwg
Q29vcmRpbmF0ZVN5c3RlbSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBs
eSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBz
b3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQogewogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBjb250
ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKICAgICBBU1NFUlQoc291cmNlUmVj
dC53aWR0aCgpID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDg5NGViYmY1NjQ5ZWIy
NTc1OThkZmQ3NmNlZmFlZWViNzhkMGU3MGUuLjU5ZWI0YTZmMzRjYjRlNWJlYTJhNjExMzQ1Mjhk
NjM3NTE5MjQyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC00Nyw3ICs0Nyw2IEBACiAj
aW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2lu
Y2x1ZGUgPGNhaXJvLmg+Ci0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2VuZGlmCiAKICNk
ZWZpbmUgR0xfQ01EKC4uLikgZG8geyBfX1ZBX0FSR1NfXzsgQVNTRVJUX0FSRyhfX1ZBX0FSR1Nf
XywgIWdsR2V0RXJyb3IoKSk7IH0gd2hpbGUgKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwCmluZGV4
IDI4YzcyMDk1ZjY3YzBjZmZiZjVmM2RlNzEwZTA1NGFhNjFjODVjMmMuLjRkYmQ2OWE3YTQ5Yjc1
NWQ1MTMyOTlhOWFhYzNhYzdlY2NlMTE5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwCkBAIC0x
MjEsOSArMTIxLDkgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QKIH0KIAogdGVtcGxhdGUgPGJv
b2wgcHJlbXVsdGlwbGllZD4KLXN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFNoYXJlZEJpdG1hcCogYml0bWFwKQorc3Rh
dGljIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBTaGFyZWRCaXRtYXAqIGJpdG1hcCkKIHsKLSAgICBSZWZQdHI8Qnl0
ZUFycmF5PiBpbWFnZURhdGEgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0
LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBpbWFnZURhdGEg
PSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkg
KiA0KTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyYyA9IHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihiaXRtYXAtPmJ5dGVzKCkpOwogICAgIGlmICghc3JjKQpAQCAtMTM1
LDcgKzEzNSw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1hZ2VEYXRhKGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFNoYXJlZEJpdG1hCiAgICAgICAgIHJldHVybiBpbWFn
ZURhdGEucmVsZWFzZSgpOwogCiAgICAgdW5zaWduZWQgY2hhciogZHN0ID0gaW1hZ2VEYXRhLT5k
YXRhKCk7Ci0gICAgbWVtc2V0KGRzdCwgMCwgaW1hZ2VEYXRhLT5sZW5ndGgoKSk7CiAgICAgc3Jj
ICs9IChzb3VyY2VSZWN0LnkoKSAqIGJpdG1hcC0+d2lkdGgoKSArIHNvdXJjZVJlY3QueCgpKSAq
IDQ7CiAgICAgZHN0ICs9ICgoc291cmNlUmVjdC55KCkgLSByZWN0LnkoKSkgKiByZWN0LndpZHRo
KCkgKyBzb3VyY2VSZWN0LngoKSAtIHJlY3QueCgpKSAqIDQ7CiAgICAgaW50IGJ5dGVzVG9Db3B5
ID0gc291cmNlUmVjdC53aWR0aCgpICogNDsKQEAgLTE3MCwxNyArMTY5LDE3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IFNoYXJlZEJpdG1hCiAgICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CiB9CiAKLVBh
c3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGdldEltYWdlRGF0YTxmYWxzZT4ocmVjdCwgbV9kYXRhLm1fYml0bWFwLmdldCgpKTsKIH0K
IAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewog
ICAgIHJldHVybiBnZXRJbWFnZURhdGE8dHJ1ZT4ocmVjdCwgbV9kYXRhLm1fYml0bWFwLmdldCgp
KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxp
ZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRl
U3lzdGVtKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxp
ZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENv
b3JkaW5hdGVTeXN0ZW0pCiB7CiAgICAgU2hhcmVkQml0bWFwKiBiaXRtYXAgPSBtX2RhdGEubV9i
aXRtYXAuZ2V0KCk7CiAgICAgdW5zaWduZWQgY2hhciogZHN0ID0gKHVuc2lnbmVkIGNoYXIqKWJp
dG1hcC0+Ynl0ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAKaW5kZXggNmI4ZTJkMzg4YTI2OWQxNTdiOTNkZTZlZWFj
MTg2NDA2MzlmNDBmMC4uMGNkYmM3YjNiNDhkMjMxZTg1YzhkZDFmMTRjYjZiMjMyZWQ4NmY1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZm
ZXJXeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VC
dWZmZXJXeC5jcHAKQEAgLTEyMiwxOSArMTIyLDE5IEBAIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VC
dWZmZXI6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiB9CiAK
LVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxCeXRlQXJy
YXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0
JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0
aXBseSBtdWx0aXBsaWVkLCBCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgQ29vcmRpbmF0ZVN5c3RlbSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0
aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXpl
JiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lh
L0pQRUdJbWFnZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5j
b2RlcnMvc2tpYS9KUEVHSW1hZ2VFbmNvZGVyLmNwcAppbmRleCA4MjFlMWRhOGI2Y2E5ZGM5OWEz
MDEyMDVmNjcxNzY2YzNhZTQ1NDUyLi4yMmQ1MTRhYTcyNmQ3YzdhNGViNTNjYWE0YWFlY2E1YzBl
NWY4ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVy
cy9za2lhL0pQRUdJbWFnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWVuY29kZXJzL3NraWEvSlBFR0ltYWdlRW5jb2Rlci5jcHAKQEAgLTE5NSw3ICsxOTUs
NyBAQCBib29sIEpQRUdJbWFnZUVuY29kZXI6OmVuY29kZShjb25zdCBTa0JpdG1hcCYgYml0bWFw
LCBpbnQgcXVhbGl0eSwgVmVjdG9yPHVuc2lnbgogCiBib29sIEpQRUdJbWFnZUVuY29kZXI6OmVu
Y29kZShjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSwgaW50IHF1YWxpdHksIFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiogb3V0cHV0KQogewotICAgIHJldHVybiBlbmNvZGVQaXhlbHMoaW1hZ2VEYXRh
LnNpemUoKSwgaW1hZ2VEYXRhLmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCksIGZhbHNlLCBxdWFsaXR5
LCBvdXRwdXQpOworICAgIHJldHVybiBlbmNvZGVQaXhlbHMoaW1hZ2VEYXRhLnNpemUoKSwgaW1h
Z2VEYXRhLmRhdGEoKS0+ZGF0YSgpLCBmYWxzZSwgcXVhbGl0eSwgb3V0cHV0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZW5jb2RlcnMvc2tpYS9QTkdJbWFnZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvc2tpYS9QTkdJbWFnZUVuY29kZXIuY3BwCmluZGV4IDVj
MTE2MmJmYjc1NWUzNGNhMDVkZjNiN2U2MzUyNTc4OGUwNGIxNjQuLmVhY2FhN2NkYjU2Yjc1NDUz
MjkxNDY3MGE3NzUxNjkwZjUxMTUzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWVuY29kZXJzL3NraWEvUE5HSW1hZ2VFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL1BOR0ltYWdlRW5jb2Rlci5jcHAK
QEAgLTEyNiw3ICsxMjYsNyBAQCBib29sIFBOR0ltYWdlRW5jb2Rlcjo6ZW5jb2RlKGNvbnN0IFNr
Qml0bWFwJiBiaXRtYXAsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiogb3V0cAogCiBib29sIFBOR0lt
YWdlRW5jb2Rlcjo6ZW5jb2RlKGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBWZWN0b3I8dW5z
aWduZWQgY2hhcj4qIG91dHB1dCkKIHsKLSAgICByZXR1cm4gZW5jb2RlUGl4ZWxzKGltYWdlRGF0
YS5zaXplKCksIGltYWdlRGF0YS5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpLCBmYWxzZSwgb3V0cHV0
KTsKKyAgICByZXR1cm4gZW5jb2RlUGl4ZWxzKGltYWdlRGF0YS5zaXplKCksIGltYWdlRGF0YS5k
YXRhKCktPmRhdGEoKSwgZmFsc2UsIG91dHB1dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3Nr
aWEvV0VCUEltYWdlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1l
bmNvZGVycy9za2lhL1dFQlBJbWFnZUVuY29kZXIuY3BwCmluZGV4IDljYjI0ZmMwMjUyMTQ1ZjZj
M2Y3ZGZjNzc3NThkODU4NTRhYzE0MzAuLmViYzI5OWQ1Zjk3NTE5YzM2MGNhYzgzYzJjYzc2YTY5
ZTg3ODRhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL3NraWEvV0VCUEltYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZW5jb2RlcnMvc2tpYS9XRUJQSW1hZ2VFbmNvZGVyLmNwcApAQCAtMTMwLDcgKzEz
MCw3IEBAIGJvb2wgV0VCUEltYWdlRW5jb2Rlcjo6ZW5jb2RlKGNvbnN0IFNrQml0bWFwJiBiaXRt
YXAsIGludCBxdWFsaXR5LCBWZWN0b3I8dW5zaWduCiAKIGJvb2wgV0VCUEltYWdlRW5jb2Rlcjo6
ZW5jb2RlKGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBpbnQgcXVhbGl0eSwgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+KiBvdXRwdXQpCiB7Ci0gICAgcmV0dXJuIGVuY29kZVBpeGVscyhpbWFnZURh
dGEuc2l6ZSgpLCBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCktPmRhdGEoKSwgZmFsc2UsIHF1YWxp
dHksIG91dHB1dCk7CisgICAgcmV0dXJuIGVuY29kZVBpeGVscyhpbWFnZURhdGEuc2l6ZSgpLCBp
bWFnZURhdGEuZGF0YSgpLT5kYXRhKCksIGZhbHNlLCBxdWFsaXR5LCBvdXRwdXQpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCmluZGV4IGZiZWE2NGFiOTNmODE1
OTk0YjdlNDZhYmE2YTVmY2QxZmIzYWZjYjQuLjYwOTE5YTIwYzM4NWRlNDhjMzFjMWY2N2YwZTc1
MzJjNGJkYWQ2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBo
aWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgUGFzc1Jl
ZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9JbWFnZURhdGEKICAgICBnZXREcmF3aW5nUGFyYW1ldGVycyhkcmF3aW5nQnVmZmVy
LCBtX2ltcGwuZ2V0KCksICZmcmFtZWJ1ZmZlcklkLCAmd2lkdGgsICZoZWlnaHQpOwogCiAgICAg
UmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7Ci0gICAgdW5zaWduZWQgY2hhciogcGl4ZWxzID0gaW1hZ2VEYXRhLT5k
YXRhKCktPmRhdGEoKS0+ZGF0YSgpOworICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVscyA9IGltYWdl
RGF0YS0+ZGF0YSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSA0ICogd2lkdGgg
KiBoZWlnaHQ7CiAKICAgICBtX2ltcGwtPnJlYWRCYWNrRnJhbWVidWZmZXIocGl4ZWxzLCBidWZm
ZXJTaXplLCBmcmFtZWJ1ZmZlcklkLCB3aWR0aCwgaGVpZ2h0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAzYTAxOTZlNzQxY2JiMjUwMjE3ODFkNWE4
MTgxY2M2Mzk2MDljMTY3Li5jMzdmMThkZmJmY2YwYzJjM2FjNzYzYjU3ZjYyZGRjMjU0OWYzNjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xNTYs
MTAgKzE1NiwxMCBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYlBvaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNp
bmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVO
VFMpCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKQEAgLTE0ODAsNyArMTQ4MCw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKFdlYkNhbnZhcyog
Y2FudmFzLCBjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgSW50UmVjdCBpbnZlcnRSZWN0KHJlY3Qu
eCgpLCBiaXRtYXBIZWlnaHQgLSByZWN0Lm1heFkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdo
dCgpKTsKIAogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXI6
OmNyZWF0ZShyZWN0LnNpemUoKSkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHBpeGVsQXJyYXko
Qnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpKTsKKyAg
ICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkoVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCkpOwogICAgIGlmIChpbWFn
ZUJ1ZmZlciAmJiBwaXhlbEFycmF5KSB7CiAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5jb21wb3Np
dGVBbmRSZWFkYmFjayhwaXhlbEFycmF5LT5kYXRhKCksIGludmVydFJlY3QpOwogICAgICAgICBp
bWFnZUJ1ZmZlci0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHBpeGVsQXJyYXkuZ2V0KCks
IHJlY3Quc2l6ZSgpLCBJbnRSZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKSwgSW50UG9pbnQo
KSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNjY1ZTdhZWFhMDkzZTY3NjRiM2I2ZTAxYjM0ZjU5OGQwNjZlYzFkNi4uOWVk
MmYwMmZiOTYyYTU2OGU0OWI4NjI4NmQwNmQzOGQ5ZDcwMTkzYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTA0LTIwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBDaGFuZ2UgSW1hZ2VEYXRhIHRvIHJlZmVyZW5jZSBVaW50OENsYW1wZWRBcnJheSByYXRo
ZXIgdGhhbiBDYW52YXNQaXhlbEFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MzAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xh
bXBlZGFycmF5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvaW1h
Z2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBlZGFycmF5Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL1dpbmRvdy9zY3JpcHQtdGVzdHMvcG9zdG1lc3NhZ2UtY2xvbmUuanM6CisgICAg
ICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
b3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQudHh0OgorCiAy
MDEyLTA0LTIwICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbmRleGVkREI6IFN1cHBvcnQgZ2V0L2dldEtleShrZXlSYW5nZSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdlZGF0YS1jb250YWlucy11aW50OGNsYW1wZWRhcnJh
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9pbWFnZWRhdGEtY29udGFp
bnMtdWludDhjbGFtcGVkYXJyYXktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOTNjMzgwMTRl
MTJmZjA4MWE4MGU1YzEwYjljY2RjMWUwZWRlOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9pbWFnZWRhdGEtY29udGFpbnMtdWludDhjbGFtcGVkYXJyYXktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgSW1hZ2VEYXRhIGNvbnRhaW5z
IGEgVWludDhDbGFtcGVkQXJyYXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGltYWdlRGF0YS5kYXRhLmNvbnN0cnVjdG9yIGlzIFVpbnQ4Q2xhbXBlZEFycmF5CitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBl
ZGFycmF5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9pbWFnZWRhdGEtY29udGFpbnMt
dWludDhjbGFtcGVkYXJyYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzAwYWUwNGUzN2QyMDI3Njg1Yjc0
MWZjYzIyZjNkYjA4YzBmNDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBlZGFycmF5Lmh0bWwKQEAgLTAsMCAr
MSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBJbWFnZURhdGEgY29udGFpbnMgYSBV
aW50OENsYW1wZWRBcnJheS4iKTsKKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImNhbnZhcyIpOworY2FudmFzLndpZHRoID0gMTA7CitjYW52YXMuaGVpZ2h0ID0gMTA7Cit2
YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworCit2YXIgaW1hZ2VEYXRhID0g
Y29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CitzaG91bGRCZSgnaW1hZ2VEYXRhLmRh
dGEuY29uc3RydWN0b3InLCAnVWludDhDbGFtcGVkQXJyYXknKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Njcmlw
dC10ZXN0cy9wb3N0bWVzc2FnZS1jbG9uZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9zY3JpcHQtdGVzdHMvcG9zdG1lc3NhZ2UtY2xvbmUuanMKaW5kZXggNDQzOTI1NDhjODJlMWI4
ZDM4NzcwN2E2YzgxYzU4ZjU3MTRiN2RhOC4uNTlkMjRiNGQyOTkyZTQzMjQ2ZTNhODI2Mzk2ZmQy
OGRlMjU2YzcwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Njcmlw
dC10ZXN0cy9wb3N0bWVzc2FnZS1jbG9uZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvc2NyaXB0LXRlc3RzL3Bvc3RtZXNzYWdlLWNsb25lLmpzCkBAIC01OSw5ICs1OSw5IEBA
IHZhciBtdXRhdGVkSW1hZ2VEYXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiku
Z2V0Q29udGV4dCgiMmQiKS5jcmVhdGVJCiBmb3IgKHZhciBpID0gMDsgaSA8IGltYWdlRGF0YS5k
YXRhLmxlbmd0aCAqIDQ7IGkrKykKICAgICBtdXRhdGVkSW1hZ2VEYXRhLmRhdGFbaV0gPSBpICUg
MjU2OwogdHJ5UG9zdE1lc3NhZ2UoJ2ltYWdlRGF0YScsIGZhbHNlLCBpbWFnZURhdGEpOwotdHJ5
UG9zdE1lc3NhZ2UoJ2ltYWdlRGF0YS5kYXRhJywgdHJ1ZSwgbnVsbCwgRE9NRXhjZXB0aW9uLkRB
VEFfQ0xPTkVfRVJSKQordHJ5UG9zdE1lc3NhZ2UoJ2ltYWdlRGF0YS5kYXRhJywgZmFsc2UsIGlt
YWdlRGF0YS5kYXRhKQogdHJ5UG9zdE1lc3NhZ2UoJ211dGF0ZWRJbWFnZURhdGEnLCBmYWxzZSwg
aW1hZ2VEYXRhKTsKLXRyeVBvc3RNZXNzYWdlKCdtdXRhdGVkSW1hZ2VEYXRhLmRhdGEnLCB0cnVl
LCBudWxsLCBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIpCit0cnlQb3N0TWVzc2FnZSgnbXV0
YXRlZEltYWdlRGF0YS5kYXRhJywgZmFsc2UsIGltYWdlRGF0YS5kYXRhKQogZm9yICh2YXIgaSA9
IDA7IGkgPCBpbWFnZURhdGEuZGF0YS5sZW5ndGggKiA0OyBpKyspCiAgICAgbXV0YXRlZEltYWdl
RGF0YS5kYXRhW2ldID0gMDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dAppbmRl
eCA0YWFkN2NmYjA0N2EyY2FiZGI1M2IyNzgxZDNiMDUzZjBlZDEyNDAwLi5hZGI3YWVkNTU3NDU4
YTkzYzdjYmQ4YThjNmI0OTM5YTg4MjA0NWE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVj
dGVkLnR4dApAQCAtNiw4ICs2LDYgQEAgRkFJTDogJ3Bvc3RNZXNzYWdlKChmdW5jdGlvbigpe30p
KScgc2hvdWxkIHRocm93IGJ1dCBkaWRuJ3QKIEZBSUw6ICdwb3N0TWVzc2FnZSh2YXIgeCA9IDA7
IHRyeSB7IGV2YWwoImJhZHJlZiIpOyB9IGNhdGNoKGUpIHsgeCA9IGU7IH0geCknIHNob3VsZCB0
aHJvdyBidXQgZGlkbid0CiBQQVNTOiAncG9zdE1lc3NhZ2Uod2luZG93KScgdGhyZXcgVHlwZUVy
cm9yOiBUeXBlIGVycm9yCiBQQVNTOiAncG9zdE1lc3NhZ2UoKHtnZXQgYSgpIHsgdGhyb3cgIngi
IH19KSknIHRocmV3IHgKLUZBSUw6ICdwb3N0TWVzc2FnZShpbWFnZURhdGEuZGF0YSknIHNob3Vs
ZCB0aHJvdyBidXQgZGlkbid0Ci1GQUlMOiAncG9zdE1lc3NhZ2UobXV0YXRlZEltYWdlRGF0YS5k
YXRhKScgc2hvdWxkIHRocm93IGJ1dCBkaWRuJ3QKIFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVuY3Rp
b24oKSB7cmV0dXJuIHtnZXQgYSgpIHsgdGhyb3cgImFjY2Vzc29yLWV4biI7IH19O30pKCkpJyB0
aHJldyBhY2Nlc3Nvci1leG4KIFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVuY3Rpb24oKSB7dmFyIG9i
amEgPSB7Z2V0IHAoKSB7IHRocm93ICJhY2Nlc3Nvci1leG4iOyB9fTsgcmV0dXJuIHtnZXQgYSgp
IHsgcmV0dXJuIG9iamE7IH19O30pKCkpJyB0aHJldyBhY2Nlc3Nvci1leG4KIFBBU1M6IGxhc3RJ
bmRleCBpbml0aWFsbHkgY29ycmVjdDogd2FzIDMKQEAgLTQ0LDcgKzQyLDkgQEAgUEFTUzogZXZl
bnREYXRhIGlzID09PSB0byBldmVudERhdGFbMF0KIFBBU1M6IGV2ZW50RGF0YS5ncmFwaDEgaXMg
PT09IHRvIGV2ZW50RGF0YS5ncmFwaDIKIFBBU1M6IGV2ZW50RGF0YVswXSBpcyA9PT0gdG8gZXZl
bnREYXRhWzFdCiBQQVNTOiBldmVudERhdGEgaXMgW29iamVjdCBJbWFnZURhdGFdIG9mIHR5cGUg
b2JqZWN0CitQQVNTOiBldmVudERhdGEgaXMgW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0gb2Yg
dHlwZSBvYmplY3QKIFBBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IEltYWdlRGF0YV0gb2YgdHlw
ZSBvYmplY3QKK1BBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSBv
ZiB0eXBlIG9iamVjdAogUEFTUzogZXZlbnREYXRhIGlzIDQyIG9mIHR5cGUgbnVtYmVyCiBQQVNT
OiBldmVudERhdGEgaXMgNDIgb2YgdHlwZSBudW1iZXIKIFBBU1M6IGV2YWxUaHVuayBPSwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVj
dGVkLnR4dAppbmRleCA3MTZkZDZkZDAxMDU3MjVmYzVjMDRmZGE3MDcxOWJmZWY1ZTU1YWIyLi5m
NjdmYWVhNDUwYWIyNzg0OGRiMjhiMDQ1MjRjOGZjNzc1Nzk2NDAzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWNsb25lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dApA
QCAtNCw4ICs0LDYgQEAgUEFTUzogJ3Bvc3RNZXNzYWdlKChmdW5jdGlvbigpe30pKScgdGhyZXcg
RXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDIKIFBBU1M6ICdwb3N0TWVzc2Fn
ZSh2YXIgeCA9IDA7IHRyeSB7IGV2YWwoImJhZHJlZiIpOyB9IGNhdGNoKGUpIHsgeCA9IGU7IH0g
eCknIHRocmV3IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogUEFTUzog
J3Bvc3RNZXNzYWdlKHdpbmRvdyknIHRocmV3IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4
Y2VwdGlvbiAyNQogUEFTUzogJ3Bvc3RNZXNzYWdlKCh7Z2V0IGEoKSB7IHRocm93ICJ4IiB9fSkp
JyB0aHJldyB4Ci1QQVNTOiAncG9zdE1lc3NhZ2UoaW1hZ2VEYXRhLmRhdGEpJyB0aHJldyBFcnJv
cjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKLVBBU1M6ICdwb3N0TWVzc2FnZSht
dXRhdGVkSW1hZ2VEYXRhLmRhdGEpJyB0aHJldyBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBF
eGNlcHRpb24gMjUKIFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVuY3Rpb24oKSB7cmV0dXJuIHtnZXQg
YSgpIHsgdGhyb3cgImFjY2Vzc29yLWV4biI7IH19O30pKCkpJyB0aHJldyBhY2Nlc3Nvci1leG4K
IFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVuY3Rpb24oKSB7dmFyIG9iamEgPSB7Z2V0IHAoKSB7IHRo
cm93ICJhY2Nlc3Nvci1leG4iOyB9fTsgcmV0dXJuIHtnZXQgYSgpIHsgcmV0dXJuIG9iamE7IH19
O30pKCkpJyB0aHJldyBhY2Nlc3Nvci1leG4KIFBBU1M6IGxhc3RJbmRleCBpbml0aWFsbHkgY29y
cmVjdDogd2FzIDMKQEAgLTQwLDcgKzM4LDkgQEAgUEFTUzogZXZlbnREYXRhIGlzID09PSB0byBl
dmVudERhdGFbMF0KIFBBU1M6IGV2ZW50RGF0YS5ncmFwaDEgaXMgPT09IHRvIGV2ZW50RGF0YS5n
cmFwaDIKIFBBU1M6IGV2ZW50RGF0YVswXSBpcyA9PT0gdG8gZXZlbnREYXRhWzFdCiBQQVNTOiBl
dmVudERhdGEgaXMgW29iamVjdCBJbWFnZURhdGFdIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBldmVu
dERhdGEgaXMgW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0gb2YgdHlwZSBvYmplY3QKIFBBU1M6
IGV2ZW50RGF0YSBpcyBbb2JqZWN0IEltYWdlRGF0YV0gb2YgdHlwZSBvYmplY3QKK1BBU1M6IGV2
ZW50RGF0YSBpcyBbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSBvZiB0eXBlIG9iamVjdAogUEFT
UzogZXZlbnREYXRhIGlzIDQyIG9mIHR5cGUgbnVtYmVyCiBQQVNTOiBldmVudERhdGEgaXMgNDIg
b2YgdHlwZSBudW1iZXIKIFBBU1M6IGV2YWxUaHVuayBPSwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQudHh0CmluZGV4IDFkYzE1MjVmMTE5Nzkx
YjAxZmMzMDUwNmZlYjFjZmFkZjI5YjY3MDUuLjExYTI0NDBiNmRmZjFmNTkyNDI5OGMxMGVkZjZm
ZTBiYWRhZjZiNDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1j
bG9uZS1leHBlY3RlZC50eHQKQEAgLTM3LDE0ICszNywxNCBAQCBQQVNTOiBldmVudERhdGEgaXMg
PT09IHRvIGV2ZW50RGF0YS5zZWxmCiBQQVNTOiBldmVudERhdGEgaXMgPT09IHRvIGV2ZW50RGF0
YVswXQogUEFTUzogZXZlbnREYXRhLmdyYXBoMSBpcyA9PT0gdG8gZXZlbnREYXRhLmdyYXBoMgog
UEFTUzogZXZlbnREYXRhWzBdIGlzID09PSB0byBldmVudERhdGFbMV0KLUZBSUw6ICdwb3N0TWVz
c2FnZShpbWFnZURhdGEuZGF0YSknIHNob3VsZCB0aHJvdyBidXQgZGlkbid0Ci1GQUlMOiAncG9z
dE1lc3NhZ2UobXV0YXRlZEltYWdlRGF0YS5kYXRhKScgc2hvdWxkIHRocm93IGJ1dCBkaWRuJ3QK
IFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVuY3Rpb24oKSB7cmV0dXJuIHtnZXQgYSgpIHsgdGhyb3cg
ImFjY2Vzc29yLWV4biI7IH19O30pKCkpJyB0aHJldyBhY2Nlc3Nvci1leG4KIFBBU1M6ICdwb3N0
TWVzc2FnZSgoZnVuY3Rpb24oKSB7dmFyIG9iamEgPSB7Z2V0IHAoKSB7IHRocm93ICJhY2Nlc3Nv
ci1leG4iOyB9fTsgcmV0dXJuIHtnZXQgYSgpIHsgcmV0dXJuIG9iamE7IH19O30pKCkpJyB0aHJl
dyBhY2Nlc3Nvci1leG4KIFBBU1M6IGxhc3RJbmRleCBpbml0aWFsbHkgY29ycmVjdDogd2FzIDMK
IFBBU1M6IHNhbml0eSBvbiBmaWxlIHJlZmVyZW5jZSBlcXVhbGl0eQogUEFTUzogZXZlbnREYXRh
IGlzIFtvYmplY3QgSW1hZ2VEYXRhXSBvZiB0eXBlIG9iamVjdAorUEFTUzogZXZlbnREYXRhIGlz
IFtvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIG9mIHR5cGUgb2JqZWN0CiBQQVNTOiBldmVudERh
dGEgaXMgW29iamVjdCBJbWFnZURhdGFdIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERhdGEg
aXMgW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0gb2YgdHlwZSBvYmplY3QKIFBBU1M6IGV2ZW50
RGF0YSBpcyA0MiBvZiB0eXBlIG51bWJlcgogUEFTUzogZXZlbnREYXRhIGlzIDQyIG9mIHR5cGUg
bnVtYmVyCiBQQVNTOiBldmFsVGh1bmsgT0sK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138380</attachid>
            <date>2012-04-23 10:42:49 -0700</date>
            <delta_ts>2012-04-23 16:02:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73011-20120423104248.patch</filename>
            <type>text/plain</type>
            <size>129705</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiNGMxYTgyYjQwNjA5ZDA1NjlkMjRj
ZjE2MzM0OWMwZTk1MzJiNzMuLjgyMDFjNWNmNTAwNGNkOWEwMzliNGI4ODI5MGZhOGFmZTlhMzMy
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDQtMjMgIEtlbm5ldGggUnVzc2VsbCAgPGti
ckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBJbWFnZURhdGEgdG8gcmVmZXJlbmNlIFVp
bnQ4Q2xhbXBlZEFycmF5IHJhdGhlciB0aGFuIENhbnZhc1BpeGVsQXJyYXkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvQXJyYXlCdWZmZXIuaDoK
KyAgICAgICAgKEFycmF5QnVmZmVyKToKKyAgICAgICAgKFdURjo6QXJyYXlCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXVEY6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAg
ICAgICAgKFdURik6CisgICAgICAgIChXVEY6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9j
YXRlKToKKyAgICAgICAgKiB3dGYvVHlwZWRBcnJheUJhc2UuaDoKKyAgICAgICAgKFdURjo6VHlw
ZWRBcnJheUJhc2U6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoVHlwZWRBcnJheUJh
c2UpOgorICAgICAgICAqIHd0Zi9VaW50OENsYW1wZWRBcnJheS5oOgorICAgICAgICAoVWludDhD
bGFtcGVkQXJyYXkpOgorICAgICAgICAoV1RGOjpVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpVaW50OENsYW1wZWRB
cnJheTo6emVyb0ZpbGwpOgorCiAyMDEyLTA0LTE4ICBNeWxlcyBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBnb29nbGUuY29tPgogCiAgICAgICAgIFNvbWVob3csIHRoZXJlJ3MgYW4gZXJyYW50IGJhY2tz
bGFzaCBpbiBteSBsYXN0IFdURiBwYXRjaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY3Nzk2Yzc0YjcxNjBjYjY5
YTY0MzMxZWFkMGI3NTdkNWI0MjJhMWMuLjMzYTRlMDRjOWU3ZmQwZDgyZmVkYWY2ODQ0ODQxZmFj
OTBmZGJiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzkgQEAKKzIwMTItMDQtMjMgIEtlbm5l
dGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBJbWFnZURhdGEg
dG8gcmVmZXJlbmNlIFVpbnQ4Q2xhbXBlZEFycmF5IHJhdGhlciB0aGFuIENhbnZhc1BpeGVsQXJy
YXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
ZCBJbWFnZURhdGEgdG8gY29udGFpbiBVaW50OENsYW1wZWRBcnJheSBpbnN0ZWFkIG9mIEJ5dGVB
cnJheQorICAgICAgICBwZXIgY3VycmVudCBIVE1MNSBzcGVjLgorCisgICAgICAgIEluIG9yZGVy
IHRvIGF2b2lkIGludHJvZHVjaW5nIGxhcmdlIGRhdGEgY29waWVzLCBpdCB3YXMgbmVjZXNzYXJ5
IHRvCisgICAgICAgIHN3aXRjaCBhIGZldyBvdGhlciBwbGFjZXMgaW4gV2ViS2l0IHRvIHVzZSBV
aW50OENsYW1wZWRBcnJheSBhdCB0aGUKKyAgICAgICAgc2FtZSB0aW1lLCBtb3N0IG5vdGFibHkg
dGhlIEZpbHRlckVmZmVjdCBpbXBsZW1lbnRhdGlvbiwgcG9ydGlvbnMgb2YKKyAgICAgICAgSW1h
Z2VCdWZmZXIsIGFuZCBhIGNvdXBsZSBvZiBwbGFjZXMgaW4gdGhlIGltYWdlIGVuY29kZXJzLgor
CisgICAgICAgIE5vdGUgdGhhdCB0aGUgY2hhbmdlIGluIG1ldGhvZCBuYW1lIGZyb20gImdldCIg
dG8gIml0ZW0iIG9jY3VycmVkCisgICAgICAgIGJlY2F1c2UgSlNDJ3MgYXV0b2dlbmVyYXRlZCBp
bmRleGVkIGdldHRlcnMgcmVmZXJlbmNlIGEgbWV0aG9kCisgICAgICAgIGNhbGxlZCAiaXRlbSIu
IElmIGRlc2lyZWQsIGEgY29udmVuaWVuY2UgbWV0aG9kIGNvdWxkIGJlCisgICAgICAgIGludHJv
ZHVjZWQgdG8gYXZvaWQgdGhlIHJlbmFtaW5ncyBpbiB0aGUgRmlsdGVyRWZmZWN0IGNsYXNzZXMu
CisKKyAgICAgICAgV2l0aCB0aGVzZSBjaGFuZ2VzLCBCeXRlQXJyYXkgYW5kIHNvbWUgY3VzdG9t
IGNvZGUgaW4gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgYWN0dWFsbHkgYmVjb21lIHVucmVmZXJl
bmNlZCwgYW5kIGNhbiBiZSBkZWxldGVkLiBUaGlzIGRlbGV0aW9uIHdpbGwKKyAgICAgICAgYmUg
ZG9uZSBzZXBhcmF0ZWx5IGluIEJ1ZyA4MzY1NSwgdG8ga2VlcCB0aGUgc2l6ZSBvZiB0aGlzIHBh
dGNoCisgICAgICAgIG1hbmFnZWFibGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvaW1h
Z2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBlZGFycmF5Lmh0bWwKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgor
ICAgICAgICAqIGJyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OlF0UGl4bWFwVG9JbWFnZURhdGFNZXRob2Q6Omludm9rZSk6CisgICAgICAgICog
aHRtbC9JbWFnZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAqIGh0
bWwvSW1hZ2VEYXRhLmg6CisgICAgICAgIChJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEYXRhOjpkYXRhKToKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5pZGw6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUVtcHR5SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6ZXh0cmFjdEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdlbmVy
aWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11
bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFBy
ZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1
dEJ5dGVBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YVRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
RGF0YTo6cHV0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhQ0cuaDoKKyAgICAgICAgKEltYWdlQnVmZmVyRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxl
bmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVmZmVjdFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFyaXRo
bWV0aWNTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZl
TWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldERlc3RpbmF0aW9uUGl4ZWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmZhc3RTZXRJbnRlcmlvclBpeGVscyk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpmYXN0U2V0T3V0ZXJQaXhlbHMp
OgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguaDoKKyAgICAgICAgKFBhaW50aW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3Rv
bUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3Vz
dG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChGRUN1c3RvbUZpbHRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1h
cDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpib3hCbHVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseSk6CisgICAgICAg
IChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAg
IChQbGF0Zm9ybUFwcGx5UGFyYW1ldGVycyk6CisgICAgICAgIChGRUdhdXNzaWFuQmx1cik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6dG9wTGVmdCk6CisgICAgICAg
IChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OnRvcFJvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OnRvcFJpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6bGVmdENvbHVtbik6CisgICAgICAgIChX
ZWJDb3JlOjpGRUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OmludGVyaW9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6cmlnaHRDb2x1bW4pOgorICAgICAgICAo
V2ViQ29yZTo6RkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21MZWZ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6Ym90dG9tUm93KToKKyAgICAgICAg
KFdlYkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6Ym90dG9tUmlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RkVMaWdodGluZzo6aW5saW5lU2V0UGl4ZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRp
bmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgIChMaWdodGluZ0RhdGEpOgorICAgICAgICAo
RkVMaWdodGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5
R2VuZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xv
Z3kuaDoKKyAgICAgICAgKFBhaW50aW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxl
bmNlOjpmaWxsUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VHVyYnVsZW5jZS5oOgorICAgICAgICAoRmlsbFJlZ2lvblBhcmFtZXRlcnMpOgorICAgICAgICAo
RkVUdXJidWxlbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmZvcmNlVmFsaWRQ
cmVNdWx0aXBsaWVkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNV
bm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzUHJl
bXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weUlt
YWdlQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBs
aWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlw
bGllZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0
aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVh
dGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChGaWx0ZXJFZmZlY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlOZW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpwdXRCeXRlQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0lt
YWdlQnVmZmVyV2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWVuY29kZXJzL3NraWEvSlBFR0ltYWdlRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VFbmNvZGVyOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWVuY29kZXJzL3NraWEvUE5HSW1hZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBO
R0ltYWdlRW5jb2Rlcjo6ZW5jb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1lbmNvZGVy
cy9za2lhL1dFQlBJbWFnZUVuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdl
RW5jb2Rlcjo6ZW5jb2RlKToKKwogMjAxMi0wNC0xNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1BlcmZvcm1hbmNlXVtWOF0gU2tpcCBJc29sYXRlIGxv
b2stdXAgdG8gZmluZCBTdHJpbmdDYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1
M2Y3OGZjNGQxOWFjZGQzMzE0Y2VhNWM2MDA1NDM0Nzk2MjA5ZWRkLi4zNTRlZDVjZjI0NzNhOTQz
ZmM5YjQyNWJlY2Y0ZDUwNDk4NzI1YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTA0LTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNv
bT4KKworICAgICAgICBDaGFuZ2UgSW1hZ2VEYXRhIHRvIHJlZmVyZW5jZSBVaW50OENsYW1wZWRB
cnJheSByYXRoZXIgdGhhbiBDYW52YXNQaXhlbEFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvUGl4ZWxSZWFkYmFja1RvQ2FudmFz
KToKKwogMjAxMi0wNC0yMyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIFdoZW4gcHJlcGFyZVRvRHJhdyBmYWlscyBkdWUgdG8gYW5pbWF0
aW9uIGNoZWNrZXJib2FyZCwgd2UgbmVlZCB0byBjYWxsIHNldE5lZWRzQ29tbWl0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oIGIvU291cmNlL1dURi93dGYvQXJyYXlC
dWZmZXIuaAppbmRleCAzMjU3ZGYzZDBmMWIzNDliYWEwNWI2YjU4YzE1NWYxYjVlZmVlOWFmLi5k
MmM3MjQ5NzhiMmQ0NGVjZWVhYzFmYWM0MmIyYzgzM2NiMjBhOTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVy
LmgKQEAgLTU3LDcgKzU3LDEyIEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgQXJyYXlC
dWZmZXI7CiAKLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgdHJ5QWxsb2NhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50cyYp
OworICAgIGVudW0gSW5pdGlhbGl6YXRpb25Qb2xpY3kgeworICAgICAgICBaZXJvSW5pdGlhbGl6
ZSwKKyAgICAgICAgRG9udEluaXRpYWxpemUKKyAgICB9OworCisgICAgc3RhdGljIGlubGluZSB2
b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0
ZVNpemUsIEluaXRpYWxpemF0aW9uUG9saWN5LCBBcnJheUJ1ZmZlckNvbnRlbnRzJik7CiAgICAg
dm9pZCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiBvdGhlcikKICAgICB7CiAgICAgICAg
IEFTU0VSVCghb3RoZXIubV9kYXRhKTsKQEAgLTc4LDYgKzgzLDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNv
dXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBjcmVhdGUoQXJyYXlCdWZmZXJDb250ZW50cyYpOwogCisgICAgLy8gT25s
eSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkLgorICAg
IHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKKwogICAg
IGlubGluZSB2b2lkKiBkYXRhKCk7CiAgICAgaW5saW5lIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25z
dDsKICAgICBpbmxpbmUgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OwpAQCAtOTQsNiArMTAy
LDggQEAgcHVibGljOgogICAgIH5BcnJheUJ1ZmZlcigpIHsgfQogCiBwcml2YXRlOgorICAgIHN0
YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6Oklu
aXRpYWxpemF0aW9uUG9saWN5KTsKKwogICAgIGlubGluZSBBcnJheUJ1ZmZlcihBcnJheUJ1ZmZl
ckNvbnRlbnRzJik7CiAgICAgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlSW1w
bCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdDsKICAgICBpbmxpbmUgdW5zaWdu
ZWQgY2xhbXBJbmRleChpbnQgaW5kZXgpIGNvbnN0OwpAQCAtMTE1LDExICsxMjUsNyBAQCBpbnQg
QXJyYXlCdWZmZXI6OmNsYW1wVmFsdWUoaW50IHgsIGludCBsZWZ0LCBpbnQgcmlnaHQpCiAKIFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUodW5zaWduZWQgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSkKIHsKLSAgICBBcnJheUJ1ZmZlckNvbnRl
bnRzIGNvbnRlbnRzOwotICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG51bUVs
ZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIGNvbnRlbnRzKTsKLSAgICBpZiAoIWNvbnRlbnRzLm1f
ZGF0YSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheUJ1
ZmZlcihjb250ZW50cykpOworICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRC
eXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUpOwogfQogCiBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyKiBvdGhl
cikKQEAgLTEzMCw3ICsxMzYsNyBAQCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKEFycmF5QnVmZmVyKiBvdGhlcikKIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFy
cmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3Ro
KQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7Ci0gICAgQXJyYXlCdWZmZXJD
b250ZW50czo6dHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgY29udGVudHMpOworICAgIEFycmF5
QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIEFycmF5QnVmZmVyQ29u
dGVudHM6Olplcm9Jbml0aWFsaXplLCBjb250ZW50cyk7CiAgICAgaWYgKCFjb250ZW50cy5tX2Rh
dGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0g
YWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7CkBAIC0xNDMsNiArMTQ5LDIwIEBA
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoQXJyYXlCdWZmZXJD
b250ZW50cyYgY29udGVudHMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheUJ1ZmZlcihj
b250ZW50cykpOwogfQogCitQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKQoreworICAgIHJldHVybiBjcmVhdGUobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6
ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6RG9udEluaXRpYWxpemUpOworfQorCitQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0
aW9uUG9saWN5IHBvbGljeSkKK3sKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwor
ICAgIEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50
Qnl0ZVNpemUsIHBvbGljeSwgY29udGVudHMpOworICAgIGlmICghY29udGVudHMubV9kYXRhKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNv
bnRlbnRzKSk7Cit9CisKIEFycmF5QnVmZmVyOjpBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlckNvbnRl
bnRzJiBjb250ZW50cykKICAgICA6IG1fZmlyc3RWaWV3KDApCiB7CkBAIC0xODgsNyArMjA4LDcg
QEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoaW50IGluZGV4KSBjb25zdAogICAg
IHJldHVybiBjbGFtcFZhbHVlKGluZGV4LCAwLCBjdXJyZW50TGVuZ3RoKTsKIH0KIAotdm9pZCBB
cnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1bHQpCit2b2lk
IEFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHM6OkluaXRpYWxpemF0
aW9uUG9saWN5IHBvbGljeSwgQXJyYXlCdWZmZXJDb250ZW50cyYgcmVzdWx0KQogewogICAgIC8v
IERvIG5vdCBhbGxvdyAzMi1iaXQgb3ZlcmZsb3cgb2YgdGhlIHRvdGFsIHNpemUuCiAgICAgLy8g
RklYTUU6IFdoeSBub3Q/IFRoZSB0cnlGYXN0Q2FsbG9jIGZ1bmN0aW9uIGFscmVhZHkgY2hlY2tz
IGl0cyBhcmd1bWVudHMsCkBAIC0yMDEsNyArMjIxLDE1IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250
ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKFdURjo6
dHJ5RmFzdENhbGxvYyhudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShyZXN1
bHQubV9kYXRhKSkgeworICAgIGJvb2wgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IGZhbHNlOworICAg
IGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCisgICAgICAgIGFsbG9jYXRpb25TdWNjZWVk
ZWQgPSBXVEY6OnRyeUZhc3RDYWxsb2MobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSkuZ2V0
VmFsdWUocmVzdWx0Lm1fZGF0YSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChwb2xpY3kg
PT0gRG9udEluaXRpYWxpemUpOworICAgICAgICBhbGxvY2F0aW9uU3VjY2VlZGVkID0gV1RGOjp0
cnlGYXN0TWFsbG9jKG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXplKS5nZXRWYWx1ZShyZXN1
bHQubV9kYXRhKTsKKyAgICB9CisKKyAgICBpZiAoYWxsb2NhdGlvblN1Y2NlZWRlZCkgewogICAg
ICAgICByZXN1bHQubV9zaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5dGVTaXpl
OwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVHlw
ZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlCYXNlLmgKaW5kZXggN2Y5
ODkxOThhNzZkMzI1MzdjODA0ZGVmM2Y2NmQwNWViMmNhMjdjZC4uNWVjN2ExOThhMWQ2YzhmZjU2
ZGI0M2ZlMWZmNzM0YzY4MWVlYjgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVHlwZWRB
cnJheUJhc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oCkBAIC0xMDQs
NiArMTA0LDE1IEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3Vi
Y2xhc3M+CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihU
KSk7CisgICAgICAgIGlmICghYnVmZmVyLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlciwgMCwgbGVuZ3RoKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+CiAgICAgUGFzc1JlZlB0cjxTdWJjbGFz
cz4gc3ViYXJyYXlJbXBsKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKICAgICB7CiAgICAgICAg
IHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVWlu
dDhDbGFtcGVkQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xhbXBlZEFycmF5LmgKaW5k
ZXggNzE4YjI2MDQwYjFjODE2OGE0OTc5OTkxNTRjMmMyMmJlYTBjY2Q0Zi4uZDlmODI0OTBhYzU0
ZTc2OGQ3Y2YxOWMzMGYyMmNiY2NmMWY5MWU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VWludDhDbGFtcGVkQXJyYXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1wZWRBcnJh
eS5oCkBAIC0zOCw2ICszOCwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBjcmVhdGUoY29uc3QgdW5zaWduZWQgY2hhciogYXJyYXks
IHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIGZv
ciBXZWJDb3JlLWludGVybmFsIHVzZSAobGlrZSBmaWx0ZXJzIGFuZAorICAgIC8vIGdldEltYWdl
RGF0YSkgd2hlbiBpdCBpcyBrbm93biB0aGUgZW50aXJlIGFycmF5IHdpbGwgYmUgZmlsbGVkLgor
ICAgIC8vIERvIG5vdCByZXR1cm4gdGhlc2UgcmVzdWx0cyBkaXJlY3RseSB0byBKYXZhU2NyaXB0
LgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gY3JlYXRl
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOworCisgICAgLy8gSXQncyBvbmx5IG5lZWRl
ZCB0byBwb3RlbnRpYWxseSBjYWxsIHRoaXMgbWV0aG9kIGlmIHRoZSBhcnJheQorICAgIC8vIHdh
cyBjcmVhdGVkIHVuaW5pdGlhbGl6ZWQgLS0gdGhlIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24gcGF0
aHMKKyAgICAvLyB6ZXJvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LgorICAgIGlubGluZSB2b2lkIHpl
cm9GaWxsKCk7CisKICAgICAvLyBDYW7igJl0IHVzZSAidXNpbmciIGhlcmUgZHVlIHRvIGEgYnVn
IGluIHRoZSBSVkNUIGNvbXBpbGVyLgogICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNlPHVuc2ln
bmVkIGNoYXI+KiBhcnJheSwgdW5zaWduZWQgb2Zmc2V0KSB7IHJldHVybiBUeXBlZEFycmF5QmFz
ZTx1bnNpZ25lZCBjaGFyPjo6c2V0KGFycmF5LCBvZmZzZXQpOyB9CiAgICAgaW5saW5lIHZvaWQg
c2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpOwpAQCAtNzEsNiArODEsMTYgQEAgUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPgogICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBj
aGFyPjo6Y3JlYXRlPFVpbnQ4Q2xhbXBlZEFycmF5PihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0
aCk7CiB9CiAKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gVHlw
ZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQ8VWludDhDbGFt
cGVkQXJyYXk+KGxlbmd0aCk7Cit9CisKK3ZvaWQgVWludDhDbGFtcGVkQXJyYXk6Onplcm9GaWxs
KCkKK3sKKyAgICB6ZXJvUmFuZ2UoMCwgbGVuZ3RoKCkpOworfQorCiB2b2lkIFVpbnQ4Q2xhbXBl
ZEFycmF5OjpzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBpZiAoaW5k
ZXggPj0gbV9sZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ltYWdlRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdl
RGF0YUN1c3RvbS5jcHAKaW5kZXggZDJjYTQ3NmM3M2RhODNhMGU1ZjhjYzRmNzEyMDRhZGFhMDc4
NjNjYS4uZDlkNjk0ZWM3YmUwMmQ5YjdiNTY3NTdmMmRhN2U3NjVlMzY2MWJkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcApAQCAtMjUs
MTEgKzI1LDExIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0ltYWdlRGF0
YS5oIgorI2luY2x1ZGUgIkpTVWludDhDbGFtcGVkQXJyYXkuaCIKIAogI2luY2x1ZGUgIkltYWdl
RGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKLSNpbmNsdWRlIDxydW50aW1l
L0pTQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgSlNDOwpAQCAtNDcsMTAgKzQ3LDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW1hZ2VEYXRhKiBpbWFnZUQK
ICAgICAKICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVj
dCwgSW1hZ2VEYXRhLCBpbWFnZURhdGEpOwogICAgIElkZW50aWZpZXIgZGF0YU5hbWUoZXhlYywg
ImRhdGEiKTsKLSAgICBTdHJ1Y3R1cmUqIGNwYVN0cnVjdHVyZSA9IGdldENhY2hlZERPTVN0cnVj
dHVyZShnbG9iYWxPYmplY3QsICZKU0J5dGVBcnJheTo6c19pbmZvKTsKLSAgICBpZiAoIWNwYVN0
cnVjdHVyZSkKLSAgICAgICAgY3BhU3RydWN0dXJlID0gY2FjaGVET01TdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LCBKU0J5dGVBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LCBqc051bGwoKSwgJkpTQnl0ZUFycmF5OjpzX2luZm8pLCAmSlNCeXRlQXJy
YXk6OnNfaW5mbyk7Ci0gICAgd3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZGF0YU5hbWUsIEpTQnl0ZUFycmF5OjpjcmVhdGUoZXhlYywgY3BhU3RydWN0dXJlLCBpbWFnZURh
dGEtPmRhdGEoKS0+ZGF0YSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICB3cmFwcGVy
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRhTmFtZSwgdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIGltYWdlRGF0YS0+ZGF0YSgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAg
ICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbWFnZURhdGEtPmRhdGEoKS0+
bGVuZ3RoKCkpOwogICAgIAogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNWQyZDUx
ZGRjYTRmZGE1YThmMzE5ZWYwOGU2ZGUzMjhlOGJiZWUyMi4uN2M3MTZjMGJhMWUyZjkxYmY1MDYx
MmU4MzlkZTRlYmVmM2Y0NDI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02Myw4ICs2Myw4IEBACiAjaW5jbHVk
ZSA8cnVudGltZS9SZWdFeHAuaD4KICNpbmNsdWRlIDxydW50aW1lL1JlZ0V4cE9iamVjdC5oPgog
I2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
QEAgLTYwOSw3ICs2MDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEt
PndpZHRoKCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRhdGEtPmhlaWdodCgpKTsKICAgICAg
ICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKLSAgICAgICAgICAgICAg
ICB3cml0ZShkYXRhLT5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpLCBkYXRhLT5kYXRhKCktPmxlbmd0
aCgpKTsKKyAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRhKCktPmRhdGEoKSwgZGF0YS0+
ZGF0YSgpLT5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0cygmUmVnRXhwT2JqZWN0OjpzX2lu
Zm8pKSB7CkBAIC0xNDMwLDcgKzE0MzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJl
dHVybiBqc051bGwoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJlZlB0cjxJbWFnZURh
dGE+IHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCkpOwot
ICAgICAgICAgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSgpLT5kYXRhKCktPmRhdGEoKSwgbV9wdHIs
IGxlbmd0aCk7CisgICAgICAgICAgICBtZW1jcHkocmVzdWx0LT5kYXRhKCktPmRhdGEoKSwgbV9w
dHIsIGxlbmd0aCk7CiAgICAgICAgICAgICBtX3B0ciArPSBsZW5ndGg7CiAgICAgICAgICAgICBy
ZXR1cm4gZ2V0SlNWYWx1ZShyZXN1bHQuZ2V0KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBm
NjBkMzY2YTg3ZjZhMWQxMmI1OTQ0ODk5Zjc5NjYyMTM1MjBlYTFhLi4zOTQ2MTdjMGE5ZmI4N2M4
YjBiNDA2YmYwNWJkYjcxN2Y5MDcxNzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3
Lmg+CiAjaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNs
dWRlICJDYW52YXNQaXhlbEFycmF5LmgiCiAjaW5jbHVkZSAiRGF0YVZpZXcuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCkBAIC0xMDA2LDcgKzEwMDUsNyBAQCBwcml2YXRlOgogICAgICAg
ICBJbWFnZURhdGEqIGltYWdlRGF0YSA9IFY4SW1hZ2VEYXRhOjp0b05hdGl2ZSh2YWx1ZS5Bczx2
ODo6T2JqZWN0PigpKTsKICAgICAgICAgaWYgKCFpbWFnZURhdGEpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIFdURjo6Qnl0ZUFycmF5KiBwaXhlbEFycmF5ID0gaW1hZ2VEYXRhLT5kYXRh
KCktPmRhdGEoKTsKKyAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXkgPSBpbWFn
ZURhdGEtPmRhdGEoKTsKICAgICAgICAgbV93cml0ZXIud3JpdGVJbWFnZURhdGEoaW1hZ2VEYXRh
LT53aWR0aCgpLCBpbWFnZURhdGEtPmhlaWdodCgpLCBwaXhlbEFycmF5LT5kYXRhKCksIHBpeGVs
QXJyYXktPmxlbmd0aCgpKTsKICAgICB9CiAKQEAgLTE1ODIsNyArMTU4MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmIChtX3Bvc2l0aW9uICsgcGl4ZWxEYXRhTGVuZ3RoID4gbV9sZW5ndGgpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxJbWFnZURhdGE+IGltYWdl
RGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCkpOwotICAgICAg
ICBXVEY6OkJ5dGVBcnJheSogcGl4ZWxBcnJheSA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7
CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFycmF5ID0gaW1hZ2VEYXRhLT5kYXRh
KCk7CiAgICAgICAgIEFTU0VSVChwaXhlbEFycmF5KTsKICAgICAgICAgQVNTRVJUKHBpeGVsQXJy
YXktPmxlbmd0aCgpID49IHBpeGVsRGF0YUxlbmd0aCk7CiAgICAgICAgIG1lbWNweShwaXhlbEFy
cmF5LT5kYXRhKCksIG1fYnVmZmVyICsgbV9wb3NpdGlvbiwgcGl4ZWxEYXRhTGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFD
dXN0b20uY3BwCmluZGV4IDMzN2E1YmY4MDI2OWIyM2YxMDI3ZTY3YTVhNTdhZDgzOWUxYTQ0MjAu
LjY1MWZiM2ExNzdkMzM0ZGVmNzNjM2UzNDAzNDA2MTlhNWJkMTIxNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNw
cApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4SW1h
Z2VEYXRhLmgiCiAKLSNpbmNsdWRlICJWOENhbnZhc1BpeGVsQXJyYXkuaCIKKyNpbmNsdWRlICJW
OFVpbnQ4Q2xhbXBlZEFycmF5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsNyAr
NDEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJbWFnZURhdGEqIGltcGwsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBWOEltYWdlRGF0YTo6d3JhcChpbXBsKTsKICAgICBp
ZiAoIXdyYXBwZXIuSXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIENyZWF0ZSBhIFY4IENhbnZhc1Bp
eGVsQXJyYXkgb2JqZWN0LgorICAgICAgICAvLyBDcmVhdGUgYSBWOCBVaW50OENsYW1wZWRBcnJh
eSBvYmplY3QuCiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwaXhlbEFycmF5ID0gdG9W
OChpbXBsLT5kYXRhKCkpOwogICAgICAgICAvLyBTZXQgdGhlICJkYXRhIiBwcm9wZXJ0eSBvZiB0
aGUgSW1hZ2VEYXRhIG9iamVjdCB0bwogICAgICAgICAvLyB0aGUgY3JlYXRlZCB2OCBvYmplY3Qs
IGVsaW1pbmF0aW5nIHRoZSBDKysgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9waXhtYXBydW50aW1lLmNwcAppbmRleCA5YzFjZGFkMDIzYzhiMTRlMDk5YTNhMTM5Yzc4
ZWI5ZTIxN2RlMTE0Li43ZThkN2E1YjdmNjk3OWRiYTQzYTIwY2VkYmNmZGI2MzU2YjBjMGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCkBAIC05
Miw5ICs5Miw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGludCB3aWR0aCA9IGluc3RhbmNl
LT53aWR0aCgpOwogICAgICAgICBpbnQgaGVpZ2h0ID0gaW5zdGFuY2UtPmhlaWdodCgpOwotICAg
ICAgICBSZWZQdHI8Qnl0ZUFycmF5PiBieXRlQXJyYXkgPSBCeXRlQXJyYXk6OmNyZWF0ZSh3aWR0
aCAqIGhlaWdodCAqIDQpOwotICAgICAgICBjb3B5UGl4ZWxzKGluc3RhbmNlLT50b0ltYWdlKCks
IHdpZHRoLCBoZWlnaHQsIGJ5dGVBcnJheS0+ZGF0YSgpKTsKLSAgICAgICAgUmVmUHRyPEltYWdl
RGF0YT4gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0
KSwgYnl0ZUFycmF5KTsKKyAgICAgICAgUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VEYXRhID0gSW1h
Z2VEYXRhOjpjcmVhdGUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIGNvcHlQaXhl
bHMoaW5zdGFuY2UtPnRvSW1hZ2UoKSwgd2lkdGgsIGhlaWdodCwgaW1hZ2VEYXRhLT5kYXRhKCkt
PmRhdGEoKSk7CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgaW1hZ2VEYXRhLmdldCgp
KTsKICAgICB9CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCmluZGV4IGFkMjQx
MzY2MzNlY2NlNDI4M2YxY2RjN2Y2NDdlNWI3ODU4OTc1ZDMuLjkwMTU4MjcyZTU5NTFkMTc5NTFj
NmE1NTZkMjM4ZWZhZDg2YzY2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAgLTMz
LDI0ICszMyw0MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplKQogeworICAgIENoZWNrZWQ8
aW50LCBSZWNvcmRPdmVyZmxvdz4gZGF0YVNpemUgPSA0OworICAgIGRhdGFTaXplICo9IHNpemUu
d2lkdGgoKTsKKyAgICBkYXRhU2l6ZSAqPSBzaXplLmhlaWdodCgpOworICAgIGlmIChkYXRhU2l6
ZS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiAwOworCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJbWFnZURhdGEoc2l6ZSkpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1h
Z2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGFzc1JlZlB0cjxCeXRlQXJyYXk+
IGJ5dGVBcnJheSkKK1Bhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBieXRlQXJyYXkp
CiB7CisgICAgQ2hlY2tlZDxpbnQsIFJlY29yZE92ZXJmbG93PiBkYXRhU2l6ZSA9IDQ7CisgICAg
ZGF0YVNpemUgKj0gc2l6ZS53aWR0aCgpOworICAgIGRhdGFTaXplICo9IHNpemUuaGVpZ2h0KCk7
CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoZGF0YVNpemUudW5zYWZlR2V0KCkgPCAwCisgICAgICAgIHx8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihkYXRhU2l6ZS51bnNhZmVHZXQoKSkgPiBieXRlQXJyYXktPmxlbmd0aCgpKQor
ICAgICAgICByZXR1cm4gMDsKKwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEYXRhKHNp
emUsIGJ5dGVBcnJheSkpOwogfQogCiBJbWFnZURhdGE6OkltYWdlRGF0YShjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2RhdGEoQ2FudmFzUGl4ZWxBcnJh
eTo6Y3JlYXRlKHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0KSkKKyAgICAsIG1fZGF0
YShVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplLndpZHRoKCkgKiBz
aXplLmhlaWdodCgpICogNCkpCiB7CiB9CiAKLUltYWdlRGF0YTo6SW1hZ2VEYXRhKGNvbnN0IElu
dFNpemUmIHNpemUsIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBieXRlQXJyYXkpCitJbWFnZURhdGE6
OkltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBieXRlQXJyYXkpCiAgICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZGF0YShDYW52YXNQ
aXhlbEFycmF5OjpjcmVhdGUoYnl0ZUFycmF5KSkKKyAgICAsIG1fZGF0YShieXRlQXJyYXkpCiB7
CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplLndpZHRoKCkgKiBzaXplLmhl
aWdodCgpICogNCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RGF0YS5oCmluZGV4IDM1ZDA4ZTcxZDI4NDRmMjVhYTYxOWEzODkzZTRkMmMyYTEzMGIyY2MuLjc2
MTY4NzA2M2E1NWU1NDVmYmNkZGM2OGZiMDg5MmY0OWU0OWNhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURhdGEuaApAQCAtMjksMzAgKzI5LDI5IEBACiAjaWZuZGVmIEltYWdlRGF0YV9oCiAjZGVmaW5l
IEltYWdlRGF0YV9oCiAKLSNpbmNsdWRlICJDYW52YXNQaXhlbEFycmF5LmgiCiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhD
bGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZURhdGEg
OiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJik7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFBhc3NSZWZQdHI8Qnl0
ZUFycmF5Pik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3Qg
SW50U2l6ZSYsIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+KTsKIAogICAgIEludFNpemUg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGludCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9CiAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZS5oZWlnaHQoKTsgfQotICAgIENhbnZhc1BpeGVsQXJyYXkqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBVaW50OENsYW1wZWRBcnJheSogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIEltYWdlRGF0YShj
b25zdCBJbnRTaXplJik7Ci0gICAgSW1hZ2VEYXRhKGNvbnN0IEludFNpemUmLCBQYXNzUmVmUHRy
PEJ5dGVBcnJheT4pOworICAgIEltYWdlRGF0YShjb25zdCBJbnRTaXplJiwgUGFzc1JlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4pOwogCiAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgUmVmUHRyPENh
bnZhc1BpeGVsQXJyYXk+IG1fZGF0YTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1f
ZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmlkbAppbmRleCBjODU5NDU0MTc0YzM3YzUxOGIwYWEwNmI5NzI1ODVmMTQ3ZjZmNmM3Li5mMmVh
MGNhNmI3MzZjMjlhOTMyN2JjZGVjODRlNWNhNzJiOTAxYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURhdGEuaWRsCkBAIC0zNCw3ICszNCw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgd2lkdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25n
IGhlaWdodDsKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSB8fCAhTEFOR1VBR0Vf
SkFWQVNDUklQVAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FudmFzUGl4ZWxBcnJheSBk
YXRhOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVWludDhDbGFtcGVkQXJyYXkgZGF0YTsK
ICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDkyYTZlOWU2NzA5MzQ0OGNjZjNi
ZmM2N2ZmZDM0ZGYzNDRhYjljM2YuLjY1NTEwZWJlYTE1OGUyZjgwOWYwODNkZTY5MzFhNDhjZDk3
NGJkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNjIsMTAgKzYyLDE0IEBACiAjaW5jbHVkZSAiVGV4
dE1ldHJpY3MuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFy
cmF5Lmg+CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgIlJlbmRl
ckxheWVyLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJh
bS5oPgogCiAjaWYgVVNFKENHKQpAQCAtMTc0MCw3ICsxNzQ0LDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW1hZ2VEYXRhPiBjcmVhdGVFbXB0eUltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJbWFnZURhdGE+IGRhdGEgPSBJbWFnZURh
dGE6OmNyZWF0ZShzaXplKTsKLSAgICBtZW1zZXQoZGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEo
KSwgMCwgZGF0YS0+ZGF0YSgpLT5kYXRhKCktPmxlbmd0aCgpKTsKKyAgICBkYXRhLT5kYXRhKCkt
Pnplcm9GaWxsKCk7CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCkBAIC0xODI5LDcg
KzE4MzMsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpnZXRJbWFnZURhdGEoSW1hZ2VCdWZmZXI6OkNvb3JkaQogICAgIGlmICghYnVmZmVyKQogICAg
ICAgICByZXR1cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEoaW1hZ2VEYXRhUmVjdC5zaXplKCkpOwog
Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gYnl0ZUFycmF5ID0gYnVmZmVyLT5nZXRVbm11bHRpcGxp
ZWRJbWFnZURhdGEoaW1hZ2VEYXRhUmVjdCwgY29vcmRpbmF0ZVN5c3RlbSk7CisgICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBieXRlQXJyYXkgPSBidWZmZXItPmdldFVubXVsdGlwbGllZElt
YWdlRGF0YShpbWFnZURhdGFSZWN0LCBjb29yZGluYXRlU3lzdGVtKTsKICAgICBpZiAoIWJ5dGVB
cnJheSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE5MDIsNyArMTkwNiw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwdXRJbWFnZURhdGEoSW1hZ2VEYXRhKiBkYXRhLCBJbWFn
ZUJ1ZmZlcjo6Q29vcmRpCiAgICAgSW50UmVjdCBzb3VyY2VSZWN0KGRlc3RSZWN0KTsKICAgICBz
b3VyY2VSZWN0Lm1vdmUoLWRlc3RPZmZzZXQpOwogCi0gICAgYnVmZmVyLT5wdXRCeXRlQXJyYXko
VW5tdWx0aXBsaWVkLCBkYXRhLT5kYXRhKCktPmRhdGEoKSwgSW50U2l6ZShkYXRhLT53aWR0aCgp
LCBkYXRhLT5oZWlnaHQoKSksIHNvdXJjZVJlY3QsIEludFBvaW50KGRlc3RPZmZzZXQpLCBjb29y
ZGluYXRlU3lzdGVtKTsKKyAgICBidWZmZXItPnB1dEJ5dGVBcnJheShVbm11bHRpcGxpZWQsIGRh
dGEtPmRhdGEoKSwgSW50U2l6ZShkYXRhLT53aWR0aCgpLCBkYXRhLT5oZWlnaHQoKSksIHNvdXJj
ZVJlY3QsIEludFBvaW50KGRlc3RPZmZzZXQpLCBjb29yZGluYXRlU3lzdGVtKTsKIAogICAgIGlm
IChjb29yZGluYXRlU3lzdGVtID09IEltYWdlQnVmZmVyOjpCYWNraW5nU3RvcmVDb29yZGluYXRl
U3lzdGVtKSB7CiAgICAgICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBkZXN0UmVjdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmNwcAppbmRleCAwM2JiZDAzNjJiMTJmZjA4YjYzZjBhZjg0NDNhNzhlMjg5YThkMzI4Li5hMjgy
ZTgwMjczZTNiNDVmZWQ1MWU5NzZjNGU4YjRkN2JiOTI5N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBAIC0y
MDIsNyArMjAyLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdEltYWdlRGF0YShJ
bWFnZURhdGEqIGltYWdlRGF0YSwKICAgICBpbnQgaGVpZ2h0ID0gaW1hZ2VEYXRhLT5oZWlnaHQo
KTsKICAgICBpbnQgZGF0YUJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OwogICAgIGRhdGEucmVz
aXplKGRhdGFCeXRlcyk7Ci0gICAgaWYgKCFwYWNrUGl4ZWxzKGltYWdlRGF0YS0+ZGF0YSgpLT5k
YXRhKCktPmRhdGEoKSwKKyAgICBpZiAoIXBhY2tQaXhlbHMoaW1hZ2VEYXRhLT5kYXRhKCktPmRh
dGEoKSwKICAgICAgICAgICAgICAgICAgICAgU291cmNlRm9ybWF0UkdCQTgsCiAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICBoZWlnaHQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggZTRhOWZk
ODU3NGYwYjQ3ZTY2Y2U4YjU1NmMzYjVhZTM3MDgyOTUyOC4uYmMzZDM2MTI5MDNiYTkzZTU0ZDFk
MDYwOTlkNDE0YTZjOWUyOGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtNzIsMTYgKzcyLDE2IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNw
YWNlIGRzdENvCiBpbmxpbmUgdm9pZCBJbWFnZUJ1ZmZlcjo6Z2VuZXJpY0NvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKQogewogICAgIEludFJlY3QgbHVtaW5hbmNlUmVjdChJbnRQb2ludCgpLCBpbnRl
cm5hbFNpemUoKSk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheSA9IGdldFVu
bXVsdGlwbGllZEltYWdlRGF0YShsdW1pbmFuY2VSZWN0KTsKKyAgICBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEobHVtaW5h
bmNlUmVjdCk7CiAgICAgCiAgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHNyY1BpeGVs
QXJyYXktPmxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgcGl4ZWxPZmZzZXQgPSAwOyBwaXhl
bE9mZnNldCA8IHBpeGVsQXJyYXlMZW5ndGg7IHBpeGVsT2Zmc2V0ICs9IDQpIHsKLSAgICAgICAg
dW5zaWduZWQgY2hhciBhID0gc3JjUGl4ZWxBcnJheS0+Z2V0KHBpeGVsT2Zmc2V0ICsgMyk7Cisg
ICAgICAgIHVuc2lnbmVkIGNoYXIgYSA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxPZmZzZXQg
KyAzKTsKICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHVu
c2lnbmVkIGNoYXIgciA9IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbE9mZnNldCk7Ci0gICAgICAg
IHVuc2lnbmVkIGNoYXIgZyA9IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbE9mZnNldCArIDEpOwot
ICAgICAgICB1bnNpZ25lZCBjaGFyIGIgPSBzcmNQaXhlbEFycmF5LT5nZXQocGl4ZWxPZmZzZXQg
KyAyKTsKKyAgICAgICAgdW5zaWduZWQgY2hhciByID0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhl
bE9mZnNldCk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZyA9IHNyY1BpeGVsQXJyYXktPml0ZW0o
cGl4ZWxPZmZzZXQgKyAxKTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBiID0gc3JjUGl4ZWxBcnJh
eS0+aXRlbShwaXhlbE9mZnNldCArIDIpOwogICAgICAgICAKICAgICAgICAgZG91YmxlIGx1bWEg
PSAociAqIDAuMjEyNSArIGcgKiAwLjcxNTQgKyBiICogMC4wNzIxKSAqICgoZG91YmxlKWEgLyAy
NTUuMCk7CiAgICAgICAgIHNyY1BpeGVsQXJyYXktPnNldChwaXhlbE9mZnNldCArIDMsIGx1bWEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5k
ZXggZWQ4Mzg3ZmMzNWIzYTUwOWMyMGNlYTJlZmFmNDI3NjA3MDVmYzYwYS4uZDE5ODhhYjQ3NTYx
MzEyNzhlZjE5NWUzMjMyMjNhYjJkZTc5MDkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zOCwxMSArMzgsMTEgQEAKICNpbmNsdWRl
ICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyRGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4
Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC05OCwxMCArOTgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IGVudW0gQ29vcmRpbmF0ZVN5c3RlbSB7IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtLCBCYWNraW5n
U3RvcmVDb29yZGluYXRlU3lzdGVtIH07CiAKLSAgICAgICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+
IGdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiwgQ29vcmRpbmF0ZVN5c3Rl
bSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKLSAgICAgICAgUGFzc1JlZlB0cjxC
eXRlQXJyYXk+IGdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIENvb3Jk
aW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CisgICAgICAgIFBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBj
b25zdDsKKyAgICAgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0UHJlbXVsdGlw
bGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxD
b29yZGluYXRlU3lzdGVtKSBjb25zdDsKIAotICAgICAgICB2b2lkIHB1dEJ5dGVBcnJheShNdWx0
aXBseSBtdWx0aXBsaWVkLCBCeXRlQXJyYXkqLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29y
ZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pOworICAgICAgICB2b2lkIHB1
dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSosIGNvbnN0
IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5
c3RlbSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwCmluZGV4IDNiOGE5NTZiMGM2MDZhZDkwMTUzODBhNjM4YTc2OGU4OWYzMzgwYTAuLjMw
Zjc3ZThiODA4YTU0YjI4OWQxOTExOTQwNjgzYjRhZWZkNGRkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04MjYsNyArODI2LDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKGNvbnN0IEludFNpemUmIHRlbXBs
YXRlU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2lu
dCgpLCB0ZW1wbGF0ZVNpemUpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IGxheWVyRGF0YSA9IG1f
bGF5ZXJJbWFnZS0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGJsdXJSZWN0KTsKKyAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IGxheWVyRGF0YSA9IG1fbGF5ZXJJbWFnZS0+Z2V0VW5tdWx0
aXBsaWVkSW1hZ2VEYXRhKGJsdXJSZWN0KTsKICAgICBibHVyTGF5ZXJJbWFnZShsYXllckRhdGEt
PmRhdGEoKSwgYmx1clJlY3Quc2l6ZSgpLCBibHVyUmVjdC53aWR0aCgpICogNCk7CiAgICAgbV9s
YXllckltYWdlLT5wdXRCeXRlQXJyYXkoVW5tdWx0aXBsaWVkLCBsYXllckRhdGEuZ2V0KCksIGJs
dXJSZWN0LnNpemUoKSwgYmx1clJlY3QsIEludFBvaW50KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcAppbmRleCBjMDYzMThlMjUyNTBiMGNjYzM5ZWI5YjEzM2FiNzY4ZmM4ZWRkZjQ1Li5hZjE1
N2EyOTc0NjkwM2RmY2I0NzZmN2JkY2NhNDMyODNkM2EyZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcApAQCAtMTMyLDE2ICsxMzIsMTYgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFu
c2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIH0KIAogdGVt
cGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGRhdGEs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5
cGUoZGF0YS5tX3N1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CiAKLSAgICBS
ZWZQdHI8Qnl0ZUFycmF5PiByZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkg
KiByZWN0LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiByZXN1
bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0LndpZHRoKCkg
KiByZWN0LmhlaWdodCgpICogNCk7CiAgICAgdW5zaWduZWQgY2hhciogZGF0YVNyYyA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZGF0YS5tX3N1cmZhY2UpOwogICAgIHVuc2lnbmVkIGNo
YXIqIGRhdGFEc3QgPSByZXN1bHQtPmRhdGEoKTsKIAogICAgIGlmIChyZWN0LngoKSA8IDAgfHwg
cmVjdC55KCkgPCAwIHx8IChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSkgPiBzaXplLndpZHRoKCkg
fHwgKHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSkgPiBzaXplLmhlaWdodCgpKQotICAgICAgICBt
ZW1zZXQoZGF0YURzdCwgMCwgcmVzdWx0LT5sZW5ndGgoKSk7CisgICAgICAgIHJlc3VsdC0+emVy
b0ZpbGwoKTsKIAogICAgIGludCBvcmlnaW54ID0gcmVjdC54KCk7CiAgICAgaW50IGRlc3R4ID0g
MDsKQEAgLTE5MCwxNyArMTkwLDE3IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1
ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3Jk
aW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1
ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3Jk
aW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxVbm11bHRpcGxp
ZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplKTsKIH0KIAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IElt
YWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3Qs
IENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJ
bWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJldHVybiBnZXRJbWFnZURhdGE8UHJl
bXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUpOwogfQogCi12b2lkIEltYWdlQnVmZmVy
OjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNv
bnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCit2b2lkIEltYWdlQnVmZmVy
OjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKIHsKICAgICBB
U1NFUlQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX2RhdGEubV9zdXJmYWNlKSA9PSBDQUlST19T
VVJGQUNFX1RZUEVfSU1BR0UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDdlOTMwZDUyOWRjMzc0MjQzYTc0
MGI0MGUxZmU0ZWYyMDA4YTNmNzYuLjc0NWY0YTA0N2VjZDkzMTM1YzBmYmZkMDY5Y2I1ZjE0ZDM3
OWFhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6
Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRleHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkgY28KICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0VG9DbGlwLCAt
cmVjdC54KCksIC1yZWN0LnkoKSAtIHJlY3QuaGVpZ2h0KCkpOwogfQogCi1QYXNzUmVmUHRyPEJ5
dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRS
ZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5
c3RlbSkgY29uc3QKIHsKICAgICBpZiAobV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
KSB7CiAgICAgICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkp
OwpAQCAtMzE3LDcgKzMxNyw3IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6
Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsCiAgICAgcmV0dXJu
IG1fZGF0YS5nZXREYXRhKHJlY3QsIGludGVybmFsU2l6ZSgpLCBtX2NvbnRleHQtPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCksIHRydWUsIGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5h
dGVTeXN0ZW0gPyBtX3Jlc29sdXRpb25TY2FsZSA6IDEpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVB
cnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVj
dCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1Jl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFn
ZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lz
dGVtKSBjb25zdAogewogICAgIGlmIChtX2NvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKICAgICAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7
CkBAIC0zMjgsNyArMzI4LDcgQEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpn
ZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QKICAgICByZXR1cm4g
bV9kYXRhLmdldERhdGEocmVjdCwgaW50ZXJuYWxTaXplKCksIG1fY29udGV4dC0+aXNBY2NlbGVy
YXRlZENvbnRleHQoKSwgZmFsc2UsIGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5h
dGVTeXN0ZW0gPyBtX3Jlc29sdXRpb25TY2FsZSA6IDEpOwogfQogCi12b2lkIEltYWdlQnVmZmVy
OjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNv
bnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkK
K3ZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50
OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRl
U3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCiB7CiAgICAgaWYgKCFtX2NvbnRleHQtPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgbV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VT
aXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIGludGVybmFsU2l6ZSgpLCBtX2NvbnRleHQtPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCBjb29yZGlu
YXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtID8gbV9yZXNvbHV0aW9uU2NhbGUg
OiAxKTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHksIENvbwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKICAg
ICBBU1NFUlQodXRpKTsKIAotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHByZW11bHRpcGxpZWREYXRh
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJlbXVsdGlwbGllZERhdGE7CiAgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwogCiAgICAgaWYgKENGRXF1YWwodXRpLmdldCgp
LCBqcGVnVVRJKCkpKSB7CkBAIC00ODAsNyArNDgwLDcgQEAgU3RyaW5nIEltYWdlRGF0YVRvRGF0
YVVSTChjb25zdCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgUmV0YWluUHRyPENHRGF0
YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXI7CiAKLSAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0g
c291cmNlLmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCk7CisgICAgdW5zaWduZWQgY2hhciogZGF0YSA9
IHNvdXJjZS5kYXRhKCktPmRhdGEoKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9
IHV0aUZyb21NSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGFWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKaW5kZXggZGU0MWE3ZGU5ODIw
ZGNiNjI0NTc5ODdjYTJhYzA0OTYxOThhYzY4ZC4uOWE1YTNmMTE0NGQ2MzdkNDc4YzU1MGFmYWQ5
ZGVlMjk3NTg0YzgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcApAQCAtMTE2LDE5ICsxMTYsMTkgQEAg
c3RhdGljIHZvaWQgcHJlbXVsdGl0cGx5U2NhbmxpbmUodm9pZCogZGF0YSwgc2l6ZV90IHRpbGVO
dW1iZXIpCiAjZW5kaWYgLy8gVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURSkKIAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVm
ZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUpIGNvbnN0CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1
ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKSBjb25zdAogewogICAgIGZsb2F0IGFyZWEgPSA0LjBmICogcmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKTsKICAgICBpZiAoYXJlYSA+IHN0YXRpY19jYXN0PGZsb2F0Pihz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBSZWZQdHI8Qnl0ZUFycmF5PiByZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRo
KCkgKiByZWN0LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBy
ZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0LndpZHRo
KCkgKiByZWN0LmhlaWdodCgpICogNCk7CiAgICAgdW5zaWduZWQgY2hhciogZGF0YSA9IHJlc3Vs
dC0+ZGF0YSgpOwogICAgIAogICAgIGludCBlbmR4ID0gY2VpbGYocmVjdC5tYXhYKCkgKiByZXNv
bHV0aW9uU2NhbGUpOwogICAgIGludCBlbmR5ID0gY2VpbGYocmVjdC5tYXhZKCkgKiByZXNvbHV0
aW9uU2NhbGUpOwogICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkgPCAwIHx8IGVuZHgg
PiBzaXplLndpZHRoKCkgfHwgZW5keSA+IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIG1lbXNldChk
YXRhLCAwLCByZXN1bHQtPmxlbmd0aCgpKTsKKyAgICAgICAgcmVzdWx0LT56ZXJvRmlsbCgpOwog
ICAgIAogICAgIGludCBvcmlnaW54ID0gcmVjdC54KCk7CiAgICAgaW50IGRlc3R4ID0gMDsKQEAg
LTM0Miw3ICszNDIsNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpn
ZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpegogICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOwogfQogCi12b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShCeXRlQXJy
YXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUs
IGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSkKK3ZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKFVpbnQ4Q2xhbXBlZEFy
cmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiBzaXpl
LCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUpCiB7CiAgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAg
IEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAppbmRleCA0YTBl
NzYxM2UwYjBmYjJkNjZhNWZhNjRkNDY2ZDBkZDNmZDcyZTZlLi42MjMzYzZjMmMzMThiODEwMWM4
ZmFkZWZlZjEzMzE2NDMxZTMwMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKQEAgLTI1LDEwICsyNSwxMCBA
QAogICovCiAKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1w
ZWRBcnJheS5oPgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
KQogI2RlZmluZSBXVEZfVVNFX0lPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSAxCkBAIC01
OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICBtdXRhYmxlIGRvdWJsZSBtX2xhc3RGbHVzaFRpbWU7
CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXREYXRhKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywg
Ym9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkgY29uc3Q7Ci0gICAgdm9p
ZCBwdXREYXRhKEJ5dGVBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlw
bGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBnZXREYXRhKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2Nl
bGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
KSBjb25zdDsKKyAgICB2b2lkIHB1dERhdGEoVWludDhDbGFtcGVkQXJyYXkqJiBzb3VyY2UsIGNv
bnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmLCBib29sIGFjY2VsZXJhdGVSZW5k
ZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggNTMwNjM2ZGE5ODY0NzFkYmZhMTM3
MThjZTIyM2FiM2E5NWQ3OTdmMi4uYWE3MzNkOTBmMTk2MmQ2NGMwNWI3MWQ3NzNlMDJkYTBkZmIx
MTMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFz
VGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9CeXRlQXJy
YXkuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogdHlwZWRlZiB1bnNp
Z25lZCBjaGFyICgqQmxlbmRUeXBlKSh1bnNpZ25lZCBjaGFyIGNvbG9yQSwgdW5zaWduZWQgY2hh
ciBjb2xvckIsIHVuc2lnbmVkIGNoYXIgYWxwaGFBLCB1bnNpZ25lZCBjaGFyIGFscGhhQik7CiAK
QEAgLTk0LDI0ICs5NCwyNCBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiAgICAgQVNTRVJUKG1fbW9kZSA+IEZFQkxFTkRfTU9ERV9VTktOT1dOKTsKICAgICBBU1NFUlQo
bV9tb2RlIDw9IEZFQkxFTkRfTU9ERV9MSUdIVEVOKTsKIAotICAgIEJ5dGVBcnJheSogZHN0UGl4
ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xh
bXBlZEFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
KCk7CiAgICAgaWYgKCFkc3RQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRS
ZWN0IGVmZmVjdEFEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVs
QXJyYXlBID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEFEcmF3aW5nUmVjdCk7Cisg
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5QSA9IGluLT5hc1ByZW11
bHRpcGxpZWRJbWFnZShlZmZlY3RBRHJhd2luZ1JlY3QpOwogCiAgICAgSW50UmVjdCBlZmZlY3RC
RHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluMi0+YWJzb2x1
dGVQYWludFJlY3QoKSk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheUIgPSBp
bjItPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEJEcmF3aW5nUmVjdCk7CisgICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5QiA9IGluMi0+YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoZWZmZWN0QkRyYXdpbmdSZWN0KTsKIAogICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5n
dGggPSBzcmNQaXhlbEFycmF5QS0+bGVuZ3RoKCk7CiAgICAgQVNTRVJUKHBpeGVsQXJyYXlMZW5n
dGggPT0gc3JjUGl4ZWxBcnJheUItPmxlbmd0aCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIHBpeGVs
T2Zmc2V0ID0gMDsgcGl4ZWxPZmZzZXQgPCBwaXhlbEFycmF5TGVuZ3RoOyBwaXhlbE9mZnNldCAr
PSA0KSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYWxwaGFBID0gc3JjUGl4ZWxBcnJheUEtPmdl
dChwaXhlbE9mZnNldCArIDMpOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhQiA9IHNyY1Bp
eGVsQXJyYXlCLT5nZXQocGl4ZWxPZmZzZXQgKyAzKTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBh
bHBoYUEgPSBzcmNQaXhlbEFycmF5QS0+aXRlbShwaXhlbE9mZnNldCArIDMpOworICAgICAgICB1
bnNpZ25lZCBjaGFyIGFscGhhQiA9IHNyY1BpeGVsQXJyYXlCLT5pdGVtKHBpeGVsT2Zmc2V0ICsg
Myk7CiAgICAgICAgIGZvciAodW5zaWduZWQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCAzOyArK2No
YW5uZWwpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sb3JBID0gc3JjUGl4ZWxBcnJh
eUEtPmdldChwaXhlbE9mZnNldCArIGNoYW5uZWwpOwotICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBjb2xvckIgPSBzcmNQaXhlbEFycmF5Qi0+Z2V0KHBpeGVsT2Zmc2V0ICsgY2hhbm5lbCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbG9yQSA9IHNyY1BpeGVsQXJyYXlBLT5pdGVtKHBp
eGVsT2Zmc2V0ICsgY2hhbm5lbCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbG9yQiA9
IHNyY1BpeGVsQXJyYXlCLT5pdGVtKHBpeGVsT2Zmc2V0ICsgY2hhbm5lbCk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIHJlc3VsdDsKIAogICAgICAgICAgICAgc3dpdGNoIChtX21vZGUpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDAwYjYwMGFiZGFhOThjNTU1NmY4YzVmZDViOGM4ZDU0
NjYxNTY2MGQuLmJkNDIxMmQwYjU4N2I2MDVkOTA1OTA2ZGJkZDdmOTE5NDVlYmE4YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcApAQCAtMzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVB
c1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhD
bGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMjUsMTQgKzEyNSwx
NCBAQCBpbmxpbmUgdm9pZCBsdW1pbmFuY2UoZG91YmxlJiByZWQsIGRvdWJsZSYgZ3JlZW4sIGRv
dWJsZSYgYmx1ZSwgZG91YmxlJiBhbHBoYSkKIH0KIAogdGVtcGxhdGU8Q29sb3JNYXRyaXhUeXBl
IGZpbHRlclR5cGU+Ci12b2lkIGVmZmVjdFR5cGUoQnl0ZUFycmF5KiBwaXhlbEFycmF5LCBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCit2b2lkIGVmZmVjdFR5cGUoVWludDhDbGFtcGVkQXJy
YXkqIHBpeGVsQXJyYXksIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKIHsKICAgICB1bnNp
Z25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3RoKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBwaXhlbEJ5dGVPZmZzZXQgPSAwOyBwaXhlbEJ5dGVPZmZzZXQgPCBwaXhlbEFycmF5
TGVuZ3RoOyBwaXhlbEJ5dGVPZmZzZXQgKz0gNCkgewotICAgICAgICBkb3VibGUgcmVkID0gcGl4
ZWxBcnJheS0+Z2V0KHBpeGVsQnl0ZU9mZnNldCk7Ci0gICAgICAgIGRvdWJsZSBncmVlbiA9IHBp
eGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQgKyAxKTsKLSAgICAgICAgZG91YmxlIGJsdWUg
PSBwaXhlbEFycmF5LT5nZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMik7Ci0gICAgICAgIGRvdWJsZSBh
bHBoYSA9IHBpeGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQgKyAzKTsKKyAgICAgICAgZG91
YmxlIHJlZCA9IHBpeGVsQXJyYXktPml0ZW0ocGl4ZWxCeXRlT2Zmc2V0KTsKKyAgICAgICAgZG91
YmxlIGdyZWVuID0gcGl4ZWxBcnJheS0+aXRlbShwaXhlbEJ5dGVPZmZzZXQgKyAxKTsKKyAgICAg
ICAgZG91YmxlIGJsdWUgPSBwaXhlbEFycmF5LT5pdGVtKHBpeGVsQnl0ZU9mZnNldCArIDIpOwor
ICAgICAgICBkb3VibGUgYWxwaGEgPSBwaXhlbEFycmF5LT5pdGVtKHBpeGVsQnl0ZU9mZnNldCAr
IDMpOwogCiAgICAgICAgIHN3aXRjaCAoZmlsdGVyVHlwZSkgewogICAgICAgICAgICAgY2FzZSBG
RUNPTE9STUFUUklYX1RZUEVfTUFUUklYOgpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRkVDb2xv
ck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICByZXN1bHRJbWFnZS0+Y29udGV4
dCgpLT5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkp
OwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3Qo
KS5zaXplKCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHBpeGVsQXJyYXkgPSByZXN1bHRJbWFn
ZS0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGltYWdlUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdldFVubXVsdGlwbGllZElt
YWdlRGF0YShpbWFnZVJlY3QpOwogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZF
Q09MT1JNQVRSSVhfVFlQRV9VTktOT1dOOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAK
aW5kZXggOGRiNjJkYzRkNGJmYjU2NmQ3ODBjMzI2MTRkNTZiNmVjY2ZmYmU2Ny4uNjUxYmFjMmUx
ODU4MzllNzA4ZmJiMGFlNTFlN2Q3ODIzMGYzOGM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJh
bnNmZXIuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5o
IgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVj
dCgwKTsKIAotICAgIEJ5dGVBcnJheSogcGl4ZWxBcnJheSA9IGNyZWF0ZVVubXVsdGlwbGllZElt
YWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXkgPSBjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogICAgIGlmICghcGl4ZWxBcnJheSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBw
aXhlbEFycmF5LT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsg
cGl4ZWxPZmZzZXQgPCBwaXhlbEFycmF5TGVuZ3RoOyBwaXhlbE9mZnNldCArPSA0KSB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgY2hhbm5lbCA9IDA7IGNoYW5uZWwgPCA0OyArK2NoYW5uZWwpIHsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBpeGVsQXJyYXktPmdldChwaXhlbE9mZnNl
dCArIGNoYW5uZWwpOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcGl4ZWxBcnJheS0+
aXRlbShwaXhlbE9mZnNldCArIGNoYW5uZWwpOwogICAgICAgICAgICAgcGl4ZWxBcnJheS0+c2V0
KHBpeGVsT2Zmc2V0ICsgY2hhbm5lbCwgdGFibGVzW2NoYW5uZWxdW2NdKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXggNWJlMjJmOGUyOWRlYmE1ODRkMjRiYTFmMmRjY2U4
Nzk4OTQ1YWJmYy4uNTcxMDFhZjdmMDQzMjg4MDFiZjNlZTkzMTZkZGYxYzU4NmZiNmIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
c2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNU
ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJh
eS5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJpdGhtZXRp
Y1NvZnR3YXJlKHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwgdW5zaWduZWQgY2hhciogZGVzdAogICAg
IGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzPDEsIDEsIDEsIDE+KHNvdXJjZSwgZGVzdGluYXRpb24s
IHBpeGVsQXJyYXlMZW5ndGgsIGsxLCBrMiwgazMsIGs0KTsKIH0KIAotaW5saW5lIHZvaWQgRkVD
b21wb3NpdGU6OnBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3YXJlKEJ5dGVBcnJheSogc291cmNlLCBC
eXRlQXJyYXkqIGRlc3RpbmF0aW9uLAoraW5saW5lIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3Jt
QXJpdGhtZXRpY1NvZnR3YXJlKFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIFVpbnQ4Q2xhbXBl
ZEFycmF5KiBkZXN0aW5hdGlvbiwKICAgICBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBm
bG9hdCBrNCkKIHsKICAgICBpbnQgbGVuZ3RoID0gc291cmNlLT5sZW5ndGgoKTsKQEAgLTIyMSwx
MiArMjIxLDEyIEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKIAogICAgIGlmIChtX3R5cGUg
PT0gRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQykgewotICAgICAgICBCeXRlQXJyYXkq
IGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICAg
ICAgVWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQoKTsKICAgICAgICAgaWYgKCFkc3RQaXhlbEFycmF5KQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIEludFJlY3QgZWZmZWN0QURyYXdpbmdSZWN0ID0gcmVxdWVzdGVk
UmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgICAg
IFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVkSW1h
Z2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAgICAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBzcmNQaXhlbEFycmF5ID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEFEcmF3aW5n
UmVjdCk7CiAKICAgICAgICAgSW50UmVjdCBlZmZlY3RCRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRS
ZWdpb25PZklucHV0SW1hZ2VEYXRhKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgICAg
IGluMi0+Y29weVByZW11bHRpcGxpZWRJbWFnZShkc3RQaXhlbEFycmF5LCBlZmZlY3RCRHJhd2lu
Z1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5oCmluZGV4IDI0YmEzMDc4ZjFlM2JkNTg4YzU5OWEzMTgwNDg3NGI3
MWU2NmEzZTcuLjQyNjk1ZjZjMmJmODQ2YTk3NDNlODg1OTRjYzg2ZDY0NWI5ZDk0MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3Np
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBGRUNv
bXBvc2l0ZShGaWx0ZXIqLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQpOwogCi0gICAgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1ldGlj
U29mdHdhcmUoQnl0ZUFycmF5KiBzb3VyY2UsIEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGZsb2F0
IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsKKyAgICBpbmxpbmUgdm9pZCBwbGF0
Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBVaW50OENs
YW1wZWRBcnJheSogZGVzdGluYXRpb24sIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZs
b2F0IGs0KTsKICAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFyaXRobWV0aWNOZW9uKHVuc2lnbmVk
IGNoYXIqIHNvdXJjZSwgdW5zaWduZWQgIGNoYXIqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBwaXhl
bEFycmF5TGVuZ3RoLCBmbG9hdCoga0FycmF5KTsKIAogICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5
cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5kZXggY2RhNWYxOTNlNDQ1ZWU1
MjE0YTQxYmZiNWFjYzRmYjE5OTAwYzUxOC4uMDY1MWUyZGVkNWUwM2NhZTFlYmQ4NjU0NzJjOGFk
Yzg1YzcwNmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCkBAIC0zMCw4ICszMCw4IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
IAotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2Jz
Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMjIzLDE0ICsyMjMsMTQgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdW5zaWdu
ZWQgY2hhciBjbGFtcFJHQkFWYWx1ZShmbG9hdCBjaGFubmVsLCB1bnNpZ25lZCBjaGFyIG0KIH0K
IAogdGVtcGxhdGU8Ym9vbCBwcmVzZXJ2ZUFscGhhVmFsdWVzPgotQUxXQVlTX0lOTElORSB2b2lk
IHNldERlc3RpbmF0aW9uUGl4ZWxzKEJ5dGVBcnJheSogaW1hZ2UsIGludCYgcGl4ZWwsIGZsb2F0
KiB0b3RhbHMsIGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIEJ5dGVBcnJheSogc3JjKQorQUxX
QVlTX0lOTElORSB2b2lkIHNldERlc3RpbmF0aW9uUGl4ZWxzKFVpbnQ4Q2xhbXBlZEFycmF5KiBp
bWFnZSwgaW50JiBwaXhlbCwgZmxvYXQqIHRvdGFscywgZmxvYXQgZGl2aXNvciwgZmxvYXQgYmlh
cywgVWludDhDbGFtcGVkQXJyYXkqIHNyYykKIHsKICAgICB1bnNpZ25lZCBjaGFyIG1heEFscGhh
ID0gcHJlc2VydmVBbHBoYVZhbHVlcyA/IDI1NSA6IGNsYW1wUkdCQVZhbHVlKHRvdGFsc1szXSAv
IGRpdmlzb3IgKyBiaWFzKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKICAgICAg
ICAgaW1hZ2UtPnNldChwaXhlbCsrLCBjbGFtcFJHQkFWYWx1ZSh0b3RhbHNbaV0gLyBkaXZpc29y
ICsgYmlhcywgbWF4QWxwaGEpKTsKIAogICAgIGlmIChwcmVzZXJ2ZUFscGhhVmFsdWVzKSB7Ci0g
ICAgICAgIGltYWdlLT5zZXQocGl4ZWwsIHNyYy0+Z2V0KHBpeGVsKSk7CisgICAgICAgIGltYWdl
LT5zZXQocGl4ZWwsIHNyYy0+aXRlbShwaXhlbCkpOwogICAgICAgICArK3BpeGVsOwogICAgIH0g
ZWxzZQogICAgICAgICBpbWFnZS0+c2V0KHBpeGVsKyssIG1heEFscGhhKTsKQEAgLTI2NywxMSAr
MjY3LDExIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpmYXN0U2V0SW50
ZXJpb3JQaXhlbHMoUGFpbnRpbmdEYXRhJiBwYWludGluCiAgICAgICAgICAgICAgICAgdG90YWxz
WzNdID0gMDsKIAogICAgICAgICAgICAgd2hpbGUgKGtlcm5lbFZhbHVlID49IDApIHsKLSAgICAg
ICAgICAgICAgICB0b3RhbHNbMF0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5nZXQoa2VybmVsUGl4
ZWwrKykpOwotICAgICAgICAgICAgICAgIHRvdGFsc1sxXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJu
ZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXkt
PmdldChrZXJuZWxQaXhlbCsrKSk7Ci0gICAgICAgICAgICAgICAgdG90YWxzWzJdICs9IG1fa2Vy
bmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEu
c3JjUGl4ZWxBcnJheS0+Z2V0KGtlcm5lbFBpeGVsKyspKTsKKyAgICAgICAgICAgICAgICB0b3Rh
bHNbMF0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKGtlcm5lbFBpeGVsKyspKTsKKyAgICAg
ICAgICAgICAgICB0b3RhbHNbMV0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKGtlcm5lbFBp
eGVsKyspKTsKKyAgICAgICAgICAgICAgICB0b3RhbHNbMl0gKz0gbV9rZXJuZWxNYXRyaXhba2Vy
bmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5
LT5pdGVtKGtlcm5lbFBpeGVsKyspKTsKICAgICAgICAgICAgICAgICBpZiAoIXByZXNlcnZlQWxw
aGFWYWx1ZXMpCi0gICAgICAgICAgICAgICAgICAgIHRvdGFsc1szXSArPSBtX2tlcm5lbE1hdHJp
eFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVs
QXJyYXktPmdldChrZXJuZWxQaXhlbCkpOworICAgICAgICAgICAgICAgICAgICB0b3RhbHNbM10g
Kz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50
aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKGtlcm5lbFBpeGVsKSk7CiAgICAgICAgICAgICAg
ICAgKytrZXJuZWxQaXhlbDsKICAgICAgICAgICAgICAgICAtLWtlcm5lbFZhbHVlOwogICAgICAg
ICAgICAgICAgIGlmICghLS13aWR0aCkgewpAQCAtMzUwLDEyICszNTAsMTIgQEAgdm9pZCBGRUNv
bnZvbHZlTWF0cml4OjpmYXN0U2V0T3V0ZXJQaXhlbHMoUGFpbnRpbmdEYXRhJiBwYWludGluZ0Rh
dGEsIGludCB4MSwgaW4KICAgICAgICAgICAgIHdoaWxlIChrZXJuZWxWYWx1ZSA+PSAwKSB7CiAg
ICAgICAgICAgICAgICAgaW50IHBpeGVsSW5kZXggPSBnZXRQaXhlbFZhbHVlKHBhaW50aW5nRGF0
YSwga2VybmVsUGl4ZWxYLCBrZXJuZWxQaXhlbFkpOwogICAgICAgICAgICAgICAgIGlmIChwaXhl
bEluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxzWzBdICs9IG1fa2VybmVs
TWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3Jj
UGl4ZWxBcnJheS0+Z2V0KHBpeGVsSW5kZXgpKTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxz
WzFdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0Pihw
YWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+Z2V0KHBpeGVsSW5kZXggKyAxKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHRvdGFsc1syXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBz
dGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPmdldChwaXhlbElu
ZGV4ICsgMikpOworICAgICAgICAgICAgICAgICAgICB0b3RhbHNbMF0gKz0gbV9rZXJuZWxNYXRy
aXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhl
bEFycmF5LT5pdGVtKHBpeGVsSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxzWzFd
ICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWlu
dGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbEluZGV4ICsgMSkpOworICAgICAgICAg
ICAgICAgICAgICB0b3RhbHNbMl0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsSW5k
ZXggKyAyKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcHJlc2Vy
dmVBbHBoYVZhbHVlcyAmJiBwaXhlbEluZGV4ID49IDApCi0gICAgICAgICAgICAgICAgICAgIHRv
dGFsc1szXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9h
dD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPmdldChwaXhlbEluZGV4ICsgMykpOworICAg
ICAgICAgICAgICAgICAgICB0b3RhbHNbM10gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVd
ICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5pdGVtKHBp
eGVsSW5kZXggKyAzKSk7CiAgICAgICAgICAgICAgICAgKytrZXJuZWxQaXhlbFg7CiAgICAgICAg
ICAgICAgICAgLS1rZXJuZWxWYWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoIS0td2lkdGgpIHsK
QEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0g
ICAgQnl0ZUFycmF5KiByZXN1bHRJbWFnZTsKKyAgICBVaW50OENsYW1wZWRBcnJheSogcmVzdWx0
SW1hZ2U7CiAgICAgaWYgKG1fcHJlc2VydmVBbHBoYSkKICAgICAgICAgcmVzdWx0SW1hZ2UgPSBj
cmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogICAgIGVsc2UKQEAgLTQxMyw3ICs0MTMs
NyBAQCB2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAg
ICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdl
RGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBz
cmNQaXhlbEFycmF5OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJh
eTsKICAgICBpZiAobV9wcmVzZXJ2ZUFscGhhKQogICAgICAgICBzcmNQaXhlbEFycmF5ID0gaW4t
PmFzVW5tdWx0aXBsaWVkSW1hZ2UoZWZmZWN0RHJhd2luZ1JlY3QpOwogICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2
ZU1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bnZvbHZlTWF0cml4LmgKaW5kZXggMzRiYWY2ZjE3ZTJmNWYwMjk2NzRjZDI4MjU4OTA1NDNjMWIz
NzI0NS4uMjUwNjEzZmI0NjM4NmViNTU1NWNhZjM4ZTI5ZjhiM2U4ODYzZWRkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bnZvbHZlTWF0cml4LmgKQEAgLTgyLDggKzgyLDggQEAgcHVibGljOgogcHJpdmF0ZToKIAogICAg
IHN0cnVjdCBQYWludGluZ0RhdGEgewotICAgICAgICBCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXk7
Ci0gICAgICAgIEJ5dGVBcnJheSogZHN0UGl4ZWxBcnJheTsKKyAgICAgICAgVWludDhDbGFtcGVk
QXJyYXkqIHNyY1BpeGVsQXJyYXk7CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhl
bEFycmF5OwogICAgICAgICBpbnQgd2lkdGg7CiAgICAgICAgIGludCBoZWlnaHQ7CiAgICAgICAg
IGZsb2F0IGJpYXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4IDhmYWZlMDQyMGMxOTI4ZGJj
MTEzN2IzNGM5NjkyMmEwMjg5NTc5MTUuLjg5MjIzYmIxOWI1MTI2YjllN2I3NzZlZDgxN2M5MjQ1
MWM5NTVkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBACiAjaW5j
bHVkZSAiVGlsaW5nRGF0YS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAK
LSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFy
cmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTUsMTMgKzk1LDEzIEBAIFBhc3NS
ZWZQdHI8RkVDdXN0b21GaWx0ZXI+IEZFQ3VzdG9tRmlsdGVyOjpjcmVhdGUoRmlsdGVyKiBmaWx0
ZXIsIEhvc3RXaW5kb3cqIGhvCiAKIHZvaWQgRkVDdXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiB7Ci0gICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJy
YXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIWRzdFBpeGVs
QXJyYXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVm
ZmVjdCgwKTsKICAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9u
T2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgUmVmUHRyPEJ5
dGVBcnJheT4gc3JjUGl4ZWxBcnJheSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RE
cmF3aW5nUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5
ID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsKICAgICAKICAg
ICBJbnRTaXplIG5ld0NvbnRleHRTaXplKGVmZmVjdERyYXdpbmdSZWN0LnNpemUoKSk7CiAgICAg
Ym9vbCBoYWRDb250ZXh0ID0gbV9jb250ZXh0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRkVD
dXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgbV9kcmF3aW5nQnVmZmVy
LT5jb21taXQoKTsKIAogICAgIFJlZlB0cjxJbWFnZURhdGE+IGltYWdlRGF0YSA9IG1fY29udGV4
dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEobV9kcmF3aW5nQnVmZmVyLmdldCgp
KTsKLSAgICBCeXRlQXJyYXkqIGdwdVJlc3VsdCA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7
CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGdwdVJlc3VsdCA9IGltYWdlRGF0YS0+ZGF0YSgpOwog
ICAgIEFTU0VSVChncHVSZXN1bHQtPmxlbmd0aCgpID09IGRzdFBpeGVsQXJyYXktPmxlbmd0aCgp
KTsKICAgICBtZW1jcHkoZHN0UGl4ZWxBcnJheS0+ZGF0YSgpLCBncHVSZXN1bHQtPmRhdGEoKSwg
Z3B1UmVzdWx0LT5sZW5ndGgoKSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBGRUN1c3Rv
bUZpbHRlcjo6YmluZFByb2dyYW1QYXJhbWV0ZXJzKCkKICAgICB9CiB9CiAKLXZvaWQgRkVDdXN0
b21GaWx0ZXI6OmJpbmRQcm9ncmFtQW5kQnVmZmVycyhCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXkp
Cit2b2lkIEZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoVWludDhDbGFtcGVk
QXJyYXkqIHNyY1BpeGVsQXJyYXkpCiB7CiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fc2hh
ZGVyLT5wcm9ncmFtKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCmluZGV4IDQ5NmYwNDRjMjgz
M2U4M2M5NTBjMzYyMDVlYmJjNjlmZDM1ZDVkZDEuLjVmNWYwMjc2OGZhMWFjNDBlMGNjYjg1Zjgy
NDBkN2UyMDQ4ZmM3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgQnl0ZUFycmF5
OworY2xhc3MgVWludDhDbGFtcGVkQXJyYXk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJpbmRWZXJ0ZXhBdHRyaWJ1dGUoaW50
IGF0dHJpYnV0ZUxvY2F0aW9uLCB1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCYgb2Zmc2V0KTsKICAg
ICB2b2lkIGJpbmRQcm9ncmFtTnVtYmVyUGFyYW1ldGVycyhpbnQgdW5pZm9ybUxvY2F0aW9uLCBD
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIqKTsKICAgICB2b2lkIGJpbmRQcm9ncmFtUGFyYW1l
dGVycygpOwotICAgIHZvaWQgYmluZFByb2dyYW1BbmRCdWZmZXJzKEJ5dGVBcnJheSogc3JjUGl4
ZWxBcnJheSk7CisgICAgdm9pZCBiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoVWludDhDbGFtcGVkQXJy
YXkqIHNyY1BpeGVsQXJyYXkpOwogICAgIAogICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKaW5kZXggYjBlYWM0NDlhNjcyYTRlMjBl
ODJmOWY3Y2FmYjJlYzZkMTY5OGJjZi4uN2Y1NTRhYTg0OWRkOWJkMTcwOWNlYjhjMTFlNTIxMDU3
NmYyZjEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgog
Ci0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRB
cnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk2LDE1ICs5NiwxNSBAQCB2b2lk
IEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEFTU0VSVCht
X3hDaGFubmVsU2VsZWN0b3IgIT0gQ0hBTk5FTF9VTktOT1dOKTsKICAgICBBU1NFUlQobV95Q2hh
bm5lbFNlbGVjdG9yICE9IENIQU5ORUxfVU5LTk9XTik7CiAKLSAgICBCeXRlQXJyYXkqIGRzdFBp
eGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBVaW50OENs
YW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3Vs
dCgpOwogICAgIGlmICghZHN0UGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50
UmVjdCBlZmZlY3RBRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRh
KGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBzcmNQaXhl
bEFycmF5QSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RBRHJhd2luZ1JlY3QpOwor
ICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUEgPSBpbi0+YXNQcmVt
dWx0aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKIAogICAgIEludFJlY3QgZWZmZWN0
QkRyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbjItPmFic29s
dXRlUGFpbnRSZWN0KCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXlCID0g
aW4yLT5hc1VubXVsdGlwbGllZEltYWdlKGVmZmVjdEJEcmF3aW5nUmVjdCk7CisgICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5QiA9IGluMi0+YXNVbm11bHRpcGxpZWRJ
bWFnZShlZmZlY3RCRHJhd2luZ1JlY3QpOwogCiAgICAgQVNTRVJUKHNyY1BpeGVsQXJyYXlBLT5s
ZW5ndGgoKSA9PSBzcmNQaXhlbEFycmF5Qi0+bGVuZ3RoKCkpOwogCkBAIC0xMTksMTMgKzExOSwx
MyBAQCB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAg
ICAgICBpbnQgbGluZSA9IHkgKiBzdHJpZGU7CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
cGFpbnRTaXplLndpZHRoKCk7ICsreCkgewogICAgICAgICAgICAgaW50IGRzdEluZGV4ID0gbGlu
ZSArIHggKiA0OwotICAgICAgICAgICAgaW50IHNyY1ggPSB4ICsgc3RhdGljX2Nhc3Q8aW50Pihz
Y2FsZVggKiBzcmNQaXhlbEFycmF5Qi0+Z2V0KGRzdEluZGV4ICsgbV94Q2hhbm5lbFNlbGVjdG9y
IC0gMSkgKyBzY2FsZUFkanVzdG1lbnRYKTsKLSAgICAgICAgICAgIGludCBzcmNZID0geSArIHN0
YXRpY19jYXN0PGludD4oc2NhbGVZICogc3JjUGl4ZWxBcnJheUItPmdldChkc3RJbmRleCArIG1f
eUNoYW5uZWxTZWxlY3RvciAtIDEpICsgc2NhbGVBZGp1c3RtZW50WSk7CisgICAgICAgICAgICBp
bnQgc3JjWCA9IHggKyBzdGF0aWNfY2FzdDxpbnQ+KHNjYWxlWCAqIHNyY1BpeGVsQXJyYXlCLT5p
dGVtKGRzdEluZGV4ICsgbV94Q2hhbm5lbFNlbGVjdG9yIC0gMSkgKyBzY2FsZUFkanVzdG1lbnRY
KTsKKyAgICAgICAgICAgIGludCBzcmNZID0geSArIHN0YXRpY19jYXN0PGludD4oc2NhbGVZICog
c3JjUGl4ZWxBcnJheUItPml0ZW0oZHN0SW5kZXggKyBtX3lDaGFubmVsU2VsZWN0b3IgLSAxKSAr
IHNjYWxlQWRqdXN0bWVudFkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsID0g
MDsgY2hhbm5lbCA8IDQ7ICsrY2hhbm5lbCkgewogICAgICAgICAgICAgICAgIGlmIChzcmNYIDwg
MCB8fCBzcmNYID49IHBhaW50U2l6ZS53aWR0aCgpIHx8IHNyY1kgPCAwIHx8IHNyY1kgPj0gcGFp
bnRTaXplLmhlaWdodCgpKQogICAgICAgICAgICAgICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQo
ZHN0SW5kZXggKyBjaGFubmVsLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4
ZWxWYWx1ZSA9IHNyY1BpeGVsQXJyYXlBLT5nZXQoc3JjWSAqIHN0cmlkZSArIHNyY1ggKiA0ICsg
Y2hhbm5lbCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxWYWx1ZSA9
IHNyY1BpeGVsQXJyYXlBLT5pdGVtKHNyY1kgKiBzdHJpZGUgKyBzcmNYICogNCArIGNoYW5uZWwp
OwogICAgICAgICAgICAgICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQoZHN0SW5kZXggKyBjaGFu
bmVsLCBwaXhlbFZhbHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJv
cFNoYWRvdy5jcHAKaW5kZXggM2RkNWEyNzYzNzhjZDkyZDEwMTY3ZGFhZjkxNTcxMGU3ZGMzYmY0
OC4uMzQ5OTdmNjEzNDQ0NzZjZmE5MThiMTk0NDkxY2E5ZGQ3NmU2ZGM2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmNwcApAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIK
ICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1
ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBA
IC0xMDQsNyArMTA0LDcgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAKICAgICAvLyBUT0RPOiBEaXJlY3QgcGl4ZWwgYWNjZXNzIHRvIEltYWdlQnVmZmVyIHdv
dWxkIGF2b2lkIGNvcHlpbmcgdGhlIEltYWdlRGF0YS4KICAgICBJbnRSZWN0IHNoYWRvd0FyZWEo
SW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPmludGVybmFsU2l6ZSgpKTsKLSAgICBSZWZQdHI8Qnl0
ZUFycmF5PiBzcmNQaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdldFByZW11bHRpcGxpZWRJbWFn
ZURhdGEoc2hhZG93QXJlYSk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQaXhl
bEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoc2hhZG93QXJl
YSk7CiAKICAgICBjb250ZXh0U2hhZG93LmJsdXJMYXllckltYWdlKHNyY1BpeGVsQXJyYXktPmRh
dGEoKSwgc2hhZG93QXJlYS5zaXplKCksIDQgKiBzaGFkb3dBcmVhLnNpemUoKS53aWR0aCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCAwMjc2NDJiZTcxYTc3OTQwYzAzODg0YWJhOGZj
ZjVkMTBjZTBmZTY5Li5mYzNiYWY4MzI0ZWExNzJkYTI4ODIyMTVhYzQ4ZTkxOTJhZDhiOWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1
c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlJlbmRl
clRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYv
Qnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
UGFyYWxsZWxKb2JzLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1
cjo6c2V0U3RkRGV2aWF0aW9uWShmbG9hdCB5KQogICAgIG1fc3RkWSA9IHk7CiB9CiAKLWlubGlu
ZSB2b2lkIGJveEJsdXIoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIGRzdFBp
eGVsQXJyYXksCitpbmxpbmUgdm9pZCBib3hCbHVyKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhl
bEFycmF5LCBVaW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSwKICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgZHgsIGludCBkeExlZnQsIGludCBkeFJpZ2h0LCBpbnQgc3RyaWRlLCBp
bnQgc3RyaWRlTGluZSwgaW50IGVmZmVjdFdpZHRoLCBpbnQgZWZmZWN0SGVpZ2h0LCBib29sIGFs
cGhhSW1hZ2UpCiB7CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBlZmZlY3RIZWlnaHQ7ICsreSkg
ewpAQCAtOTAsMTYgKzkwLDE2IEBAIGlubGluZSB2b2lkIGJveEJsdXIoQnl0ZUFycmF5KiBzcmNQ
aXhlbEFycmF5LCBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXksCiAgICAgICAgICAgICAvLyBGaWxs
IHRoZSBrZXJuZWwKICAgICAgICAgICAgIGludCBtYXhLZXJuZWxTaXplID0gbWluKGR4UmlnaHQs
IGVmZmVjdFdpZHRoKTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4S2VybmVs
U2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIHN1bSArPSBzcmNQaXhlbEFycmF5LT5nZXQobGlu
ZSArIGkgKiBzdHJpZGUgKyBjaGFubmVsKTsKKyAgICAgICAgICAgICAgICBzdW0gKz0gc3JjUGl4
ZWxBcnJheS0+aXRlbShsaW5lICsgaSAqIHN0cmlkZSArIGNoYW5uZWwpOwogCiAgICAgICAgICAg
ICAvLyBCbHVycmluZwogICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBlZmZlY3RXaWR0
aDsgKyt4KSB7CiAgICAgICAgICAgICAgICAgaW50IHBpeGVsQnl0ZU9mZnNldCA9IGxpbmUgKyB4
ICogc3RyaWRlICsgY2hhbm5lbDsKICAgICAgICAgICAgICAgICBkc3RQaXhlbEFycmF5LT5zZXQo
cGl4ZWxCeXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdW0gLyBkeCkpOwog
ICAgICAgICAgICAgICAgIGlmICh4ID49IGR4TGVmdCkKLSAgICAgICAgICAgICAgICAgICAgc3Vt
IC09IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQgLSBkeExlZnQgKiBzdHJpZGUp
OworICAgICAgICAgICAgICAgICAgICBzdW0gLT0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbEJ5
dGVPZmZzZXQgLSBkeExlZnQgKiBzdHJpZGUpOwogICAgICAgICAgICAgICAgIGlmICh4ICsgZHhS
aWdodCA8IGVmZmVjdFdpZHRoKQotICAgICAgICAgICAgICAgICAgICBzdW0gKz0gc3JjUGl4ZWxB
cnJheS0+Z2V0KHBpeGVsQnl0ZU9mZnNldCArIGR4UmlnaHQgKiBzdHJpZGUpOworICAgICAgICAg
ICAgICAgICAgICBzdW0gKz0gc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhlbEJ5dGVPZmZzZXQgKyBk
eFJpZ2h0ICogc3RyaWRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChhbHBoYUlt
YWdlKSAvLyBTb3VyY2UgaW1hZ2UgaXMgYmxhY2ssIGl0IGp1c3QgaGFzIGRpZmZlcmVudCBhbHBo
YSB2YWx1ZXMKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwNywxNSArMTA3LDE1IEBAIGlu
bGluZSB2b2lkIGJveEJsdXIoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIGRz
dFBpeGVsQXJyYXksCiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxh
dGZvcm1BcHBseUdlbmVyaWMoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIHRt
cFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwg
SW50U2l6ZSYgcGFpbnRTaXplKQoraW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3Jt
QXBwbHlHZW5lcmljKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1w
ZWRBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtl
cm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpCiB7CiAgICAgaW50IHN0cmlkZSA9IDQgKiBw
YWludFNpemUud2lkdGgoKTsKICAgICBpbnQgZHhMZWZ0ID0gMDsKICAgICBpbnQgZHhSaWdodCA9
IDA7CiAgICAgaW50IGR5TGVmdCA9IDA7CiAgICAgaW50IGR5UmlnaHQgPSAwOwotICAgIEJ5dGVB
cnJheSogc3JjID0gc3JjUGl4ZWxBcnJheTsKLSAgICBCeXRlQXJyYXkqIGRzdCA9IHRtcFBpeGVs
QXJyYXk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIHNyYyA9IHNyY1BpeGVsQXJyYXk7CisgICAg
VWludDhDbGFtcGVkQXJyYXkqIGRzdCA9IHRtcFBpeGVsQXJyYXk7CiAKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDM7ICsraSkgewogICAgICAgICBpZiAoa2VybmVsU2l6ZVgpIHsKQEAgLTE1MSw3
ICsxNTEsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5V29ya2VyKFBsYXRm
b3JtQXBwbHlQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKQogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lk
IEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5KEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwg
Qnl0ZUFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQg
a2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSkKK2lubGluZSB2b2lkIEZFR2F1c3NpYW5C
bHVyOjpwbGF0Zm9ybUFwcGx5KFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50
OENsYW1wZWRBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2ln
bmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpCiB7CiAgICAgaW50IHNjYW5saW5l
ID0gNCAqIHBhaW50U2l6ZS53aWR0aCgpOwogICAgIGludCBleHRyYUhlaWdodCA9IDMgKiBrZXJu
ZWxTaXplWSAqIDAuNWY7CkBAIC0xODUsOCArMTg1LDggQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lh
bkJsdXI6OnBsYXRmb3JtQXBwbHkoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkq
IHQKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGludCBibG9j
a1NpemUgPSAoZW5kWSAtIHN0YXJ0WSkgKiBzY2FubGluZTsKLSAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLnNyY1BpeGVsQXJyYXkgPSBCeXRlQXJyYXk6OmNyZWF0ZShibG9ja1NpemUpOwotICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMuZHN0UGl4ZWxBcnJheSA9IEJ5dGVBcnJheTo6Y3JlYXRl
KGJsb2NrU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zcmNQaXhlbEFycmF5ID0g
VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYmxvY2tTaXplKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLmRzdFBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlVW5pbml0aWFsaXplZChibG9ja1NpemUpOwogICAgICAgICAgICAgICAgICAgICBtZW1j
cHkocGFyYW1zLnNyY1BpeGVsQXJyYXktPmRhdGEoKSwgc3JjUGl4ZWxBcnJheS0+ZGF0YSgpICsg
c3RhcnRZICogc2NhbmxpbmUsIGJsb2NrU2l6ZSk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKLSAgICBCeXRl
QXJyYXkqIHNyY1BpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsK
KyAgICBVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCgpOwogICAgIGlmICghc3JjUGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yOTIsOCArMjkyLDggQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKICAgICBjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCBrZXJuZWxTaXpl
WCwga2VybmVsU2l6ZVksIG1fc3RkWCwgbV9zdGRZKTsKIAogICAgIEludFNpemUgcGFpbnRTaXpl
ID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gdG1w
SW1hZ2VEYXRhID0gQnl0ZUFycmF5OjpjcmVhdGUocGFpbnRTaXplLndpZHRoKCkgKiBwYWludFNp
emUuaGVpZ2h0KCkgKiA0KTsKLSAgICBCeXRlQXJyYXkqIHRtcFBpeGVsQXJyYXkgPSB0bXBJbWFn
ZURhdGEuZ2V0KCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiB0bXBJbWFnZURhdGEg
PSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChwYWludFNpemUud2lkdGgo
KSAqIHBhaW50U2l6ZS5oZWlnaHQoKSAqIDQpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiB0bXBQ
aXhlbEFycmF5ID0gdG1wSW1hZ2VEYXRhLmdldCgpOwogCiAgICAgcGxhdGZvcm1BcHBseShzcmNQ
aXhlbEFycmF5LCB0bXBQaXhlbEFycmF5LCBrZXJuZWxTaXplWCwga2VybmVsU2l6ZVksIHBhaW50
U2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggYjI5NWQzNjA4MDc0MDA1MjM0MzM2YTNi
MTI0NmRkOTUyNzllZjRmNy4uYzNkYjFmMTUwNmEyOGYxMTMwYjgyODdhZjQ4MjcyYzVmMjMwZjY4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtNTcsOCArNTcsOCBAQCBwcml2YXRlOgogCiAgICAg
c3RydWN0IFBsYXRmb3JtQXBwbHlQYXJhbWV0ZXJzIHsKICAgICAgICAgRkVHYXVzc2lhbkJsdXIq
IGZpbHRlcjsKLSAgICAgICAgUmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheTsKLSAgICAg
ICAgUmVmUHRyPEJ5dGVBcnJheT4gZHN0UGl4ZWxBcnJheTsKKyAgICAgICAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5OworICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGRzdFBpeGVsQXJyYXk7CiAgICAgICAgIGludCB3aWR0aDsKICAgICAgICAgaW50IGhl
aWdodDsKICAgICAgICAgdW5zaWduZWQga2VybmVsU2l6ZVg7CkBAIC03MCwxMCArNzAsMTAgQEAg
cHJpdmF0ZToKICAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXIqLCBmbG9hdCwgZmxvYXQpOwogCiAg
ICAgc3RhdGljIGlubGluZSB2b2lkIGtlcm5lbFBvc2l0aW9uKGludCBib3hCbHVyLCB1bnNpZ25l
ZCYgc3RkLCBpbnQmIGRMZWZ0LCBpbnQmIGRSaWdodCk7Ci0gICAgaW5saW5lIHZvaWQgcGxhdGZv
cm1BcHBseShCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJheSogdG1wUGl4ZWxBcnJh
eSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBw
YWludFNpemUpOworICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHkoVWludDhDbGFtcGVkQXJy
YXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4Q2xhbXBlZEFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNp
Z25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6
ZSk7CiAKLSAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFwcGx5R2VuZXJpYyhCeXRlQXJyYXkqIHNy
Y1BpeGVsQXJyYXksIEJ5dGVBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6
ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpOwotICAgIGlubGlu
ZSB2b2lkIHBsYXRmb3JtQXBwbHlOZW9uKEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFy
cmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVs
U2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CisgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBs
eUdlbmVyaWMoVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4Q2xhbXBlZEFy
cmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVs
U2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CisgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBs
eU5lb24oVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXksIFVpbnQ4Q2xhbXBlZEFycmF5
KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6
ZVksIEludFNpemUmIHBhaW50U2l6ZSk7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29s
IHBsYXRmb3JtQXBwbHlTa2lhKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCmluZGV4IGU3OTVkMzU0
OTRiNjE5ODk3Y2U5ODc4MTk4MTc4NWY2ODhlMjVjMTAuLjlkMzg2ZmM2YWRmMDNjMmFkNjdhMjQ1
NzYyZTU1ZmU3NzIwMjljNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcApAQCAtNjEsMTE0ICs2MSwxMTQgQEAg
Y29uc3Qgc3RhdGljIGZsb2F0IGNGYWN0b3IyZGl2MyA9IC0yIC8gMy5mOwogLy8gPDwgMSBpcyBz
aWduZWQgbXVsdGlwbHkgYnkgMgogaW5saW5lIHZvaWQgRkVMaWdodGluZzo6TGlnaHRpbmdEYXRh
Ojp0b3BMZWZ0KGludCBvZmZzZXQsIEludFBvaW50JiBub3JtYWxWZWN0b3IpCiB7Ci0gICAgaW50
IGNlbnRlciA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hh
bm5lbE9mZnNldCkpOwotICAgIGludCByaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5n
ZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQg
Y2VudGVyID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hh
bm5lbE9mZnNldCkpOworICAgIGludCByaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5p
dGVtKG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zm
c2V0ICs9IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwotICAgIGludCBib3R0b20gPSBzdGF0
aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
LSAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNl
dCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbSA9
IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZz
ZXQpKTsKKyAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRl
bShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG5vcm1h
bFZlY3Rvci5zZXRYKC0oY2VudGVyIDw8IDEpICsgKHJpZ2h0IDw8IDEpIC0gYm90dG9tICsgYm90
dG9tUmlnaHQpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZKC0oY2VudGVyIDw8IDEpIC0gcmlnaHQg
KyAoYm90dG9tIDw8IDEpICsgYm90dG9tUmlnaHQpOwogfQogCiBpbmxpbmUgdm9pZCBGRUxpZ2h0
aW5nOjpMaWdodGluZ0RhdGE6OnRvcFJvdyhpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFsVmVj
dG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZz
ZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBjZW50ZXIg
PSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZz
ZXQpKTsKLSAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNl
dCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGxlZnQgPSBz
dGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhh
Q2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHJpZ2h0ID0g
c3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBo
YUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgKz0gd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNp
emU7Ci0gICAgaW50IGJvdHRvbUxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9m
ZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IGJvdHRv
bSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9m
ZnNldCkpOwotICAgIGludCBib3R0b21SaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5n
ZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQg
Ym90dG9tTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhl
bFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbSA9IHN0YXRpY19j
YXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAg
ICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQg
KyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG5vcm1hbFZlY3Rvci5z
ZXRYKC0obGVmdCA8PCAxKSArIChyaWdodCA8PCAxKSAtIGJvdHRvbUxlZnQgKyBib3R0b21SaWdo
dCk7CiAgICAgbm9ybWFsVmVjdG9yLnNldFkoLWxlZnQgLSAoY2VudGVyIDw8IDEpIC0gcmlnaHQg
KyBib3R0b21MZWZ0ICsgKGJvdHRvbSA8PCAxKSArIGJvdHRvbVJpZ2h0KTsKIH0KIAogaW5saW5l
IHZvaWQgRkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjp0b3BSaWdodChpbnQgb2Zmc2V0LCBJbnRQ
b2ludCYgbm9ybWFsVmVjdG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwot
ICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNB
bHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4
ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Cisg
ICAgaW50IGNlbnRlciA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNB
bHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgKz0gd2lkdGhNdWx0aXBsaWVkQnlQaXhl
bFNpemU7Ci0gICAgaW50IGJvdHRvbUxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0
KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IGJv
dHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5l
bE9mZnNldCkpOworICAgIGludCBib3R0b21MZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMt
Pml0ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBp
bnQgYm90dG9tID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhh
Q2hhbm5lbE9mZnNldCkpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRYKC0obGVmdCA8PCAxKSArIChj
ZW50ZXIgPDwgMSkgLSBib3R0b21MZWZ0ICsgYm90dG9tKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0
WSgtbGVmdCAtIChjZW50ZXIgPDwgMSkgKyBib3R0b21MZWZ0ICsgKGJvdHRvbSA8PCAxKSk7CiB9
CiAKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6bGVmdENvbHVtbihpbnQg
b2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFsVmVjdG9yKQogewotICAgIGludCBjZW50ZXIgPSBzdGF0
aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
LSAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQ
aXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGNlbnRlciA9IHN0YXRp
Y19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
KyAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBj
UGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG9mZnNldCAtPSB3aWR0aE11
bHRpcGxpZWRCeVBpeGVsU2l6ZTsKLSAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8aW50PihwaXhl
bHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHRvcFJpZ2h0
ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0Fs
cGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcFJpZ2h0
ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNB
bHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgKz0gd2lkdGhNdWx0aXBsaWVkQnlQaXhl
bFNpemUgPDwgMTsKLSAgICBpbnQgYm90dG9tID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdl
dChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IGJvdHRvbVJpZ2h0ID0g
c3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhh
Q2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbVJp
Z2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSAr
IGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtdG9wICsgdG9w
UmlnaHQgLSAoY2VudGVyIDw8IDEpICsgKHJpZ2h0IDw8IDEpIC0gYm90dG9tICsgYm90dG9tUmln
aHQpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZKC0odG9wIDw8IDEpIC0gdG9wUmlnaHQgKyAoYm90
dG9tIDw8IDEpICsgYm90dG9tUmlnaHQpOwogfQogCiBpbmxpbmUgdm9pZCBGRUxpZ2h0aW5nOjpM
aWdodGluZ0RhdGE6OmludGVyaW9yKGludCBvZmZzZXQsIEludFBvaW50JiBub3JtYWxWZWN0b3Ip
CiB7Ci0gICAgaW50IGxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCAt
IGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHJpZ2h0ID0gc3Rh
dGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hh
bm5lbE9mZnNldCkpOworICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0
ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQg
cmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxTaXpl
ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG9mZnNldCAtPSB3aWR0aE11bHRpcGxpZWRC
eVBpeGVsU2l6ZTsKLSAgICBpbnQgdG9wTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5n
ZXQob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQg
dG9wID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7Ci0gICAgaW50IHRvcFJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdl
dChvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCB0
b3BMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6
ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8aW50
PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCB0
b3BSaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNp
emUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0ICs9IHdpZHRoTXVsdGlwbGll
ZEJ5UGl4ZWxTaXplIDw8IDE7Ci0gICAgaW50IGJvdHRvbUxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+
KHBpeGVscy0+Z2V0KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7
Ci0gICAgaW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsg
Y0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b21SaWdodCA9IHN0YXRpY19jYXN0
PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZz
ZXQpKTsKKyAgICBpbnQgYm90dG9tTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVt
KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJv
dHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5u
ZWxPZmZzZXQpKTsKKyAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAg
IG5vcm1hbFZlY3Rvci5zZXRYKC10b3BMZWZ0ICsgdG9wUmlnaHQgLSAobGVmdCA8PCAxKSArIChy
aWdodCA8PCAxKSAtIGJvdHRvbUxlZnQgKyBib3R0b21SaWdodCk7CiAgICAgbm9ybWFsVmVjdG9y
LnNldFkoLXRvcExlZnQgLSAodG9wIDw8IDEpIC0gdG9wUmlnaHQgKyBib3R0b21MZWZ0ICsgKGJv
dHRvbSA8PCAxKSArIGJvdHRvbVJpZ2h0KTsKIH0KIAogaW5saW5lIHZvaWQgRkVMaWdodGluZzo6
TGlnaHRpbmdEYXRhOjpyaWdodENvbHVtbihpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFsVmVj
dG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZz
ZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBjZW50ZXIg
PSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZz
ZXQpKTsKKyAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNl
dCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGNlbnRlciA9
IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZz
ZXQpKTsKICAgICBvZmZzZXQgLT0gd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNpemU7Ci0gICAgaW50
IHRvcExlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCAtIGNQaXhlbFNp
emUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCB0
b3BMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6
ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8aW50
PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG9mZnNl
dCArPSB3aWR0aE11bHRpcGxpZWRCeVBpeGVsU2l6ZSA8PCAxOwotICAgIGludCBib3R0b21MZWZ0
ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0Fs
cGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBp
eGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgYm90dG9t
TGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhlbFNpemUg
KyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3Jt
YWxWZWN0b3Iuc2V0WCgtdG9wTGVmdCArIHRvcCAtIChsZWZ0IDw8IDEpICsgKGNlbnRlciA8PCAx
KSAtIGJvdHRvbUxlZnQgKyBib3R0b20pOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZKC10b3BMZWZ0
IC0gKHRvcCA8PCAxKSArIGJvdHRvbUxlZnQgKyAoYm90dG9tIDw8IDEpKTsKIH0KIAogaW5saW5l
IHZvaWQgRkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21MZWZ0KGludCBvZmZzZXQsIElu
dFBvaW50JiBub3JtYWxWZWN0b3IpCiB7Ci0gICAgaW50IGNlbnRlciA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBy
aWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSAr
IGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50
PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBy
aWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNpemUg
KyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0IC09IHdpZHRoTXVsdGlwbGllZEJ5
UGl4ZWxTaXplOwotICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9m
ZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgdG9wUmlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7CisgICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9m
ZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wUmlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5l
bE9mZnNldCkpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRYKC10b3AgKyB0b3BSaWdodCAtIChjZW50
ZXIgPDwgMSkgKyAocmlnaHQgPDwgMSkpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZKC0odG9wIDw8
IDEpIC0gdG9wUmlnaHQgKyAoY2VudGVyIDw8IDEpICsgcmlnaHQpOwogfQogCiBpbmxpbmUgdm9p
ZCBGRUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OmJvdHRvbVJvdyhpbnQgb2Zmc2V0LCBJbnRQb2lu
dCYgbm9ybWFsVmVjdG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhl
bHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAg
IGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBo
YUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAg
aW50IGxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxT
aXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAg
aW50IHJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVs
U2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgLT0gd2lkdGhNdWx0aXBs
aWVkQnlQaXhlbFNpemU7Ci0gICAgaW50IHRvcExlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+Z2V0KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAg
aW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hh
bm5lbE9mZnNldCkpOwotICAgIGludCB0b3BSaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxz
LT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBp
bnQgdG9wTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhl
bFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcCA9IHN0YXRpY19jYXN0
PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBp
bnQgdG9wUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4
ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRYKC10
b3BMZWZ0ICsgdG9wUmlnaHQgLSAobGVmdCA8PCAxKSArIChyaWdodCA8PCAxKSk7CiAgICAgbm9y
bWFsVmVjdG9yLnNldFkoLXRvcExlZnQgLSAodG9wIDw8IDEpIC0gdG9wUmlnaHQgKyBsZWZ0ICsg
KGNlbnRlciA8PCAxKSArIHJpZ2h0KTsKIH0KIAogaW5saW5lIHZvaWQgRkVMaWdodGluZzo6TGln
aHRpbmdEYXRhOjpib3R0b21SaWdodChpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFsVmVjdG9y
KQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQg
LSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBjZW50ZXIgPSBz
dGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQp
KTsKKyAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAt
IGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGNlbnRlciA9IHN0
YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQp
KTsKICAgICBvZmZzZXQgLT0gd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNpemU7Ci0gICAgaW50IHRv
cExlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCAtIGNQaXhlbFNpemUg
KyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4o
cGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCB0b3BM
ZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6ZSAr
IGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG5vcm1hbFZl
Y3Rvci5zZXRYKC10b3BMZWZ0ICsgdG9wIC0gKGxlZnQgPDwgMSkgKyAoY2VudGVyIDw8IDEpKTsK
ICAgICBub3JtYWxWZWN0b3Iuc2V0WSgtdG9wTGVmdCAtICh0b3AgPDwgMSkgKyBsZWZ0ICsgKGNl
bnRlciA8PCAxKSk7CiB9CkBAIC0xNzYsNyArMTc2LDcgQEAgaW5saW5lIHZvaWQgRkVMaWdodGlu
Zzo6TGlnaHRpbmdEYXRhOjpib3R0b21SaWdodChpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFs
VmUKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OmlubGluZVNldFBpeGVsKGludCBvZmZzZXQsIExp
Z2h0aW5nRGF0YSYgZGF0YSwgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRh
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpZ2h0WCwgaW50
IGxpZ2h0WSwgZmxvYXQgZmFjdG9yWCwgZmxvYXQgZmFjdG9yWSwgSW50UG9pbnQmIG5vcm1hbDJE
VmVjdG9yKQogewotICAgIG1fbGlnaHRTb3VyY2UtPnVwZGF0ZVBhaW50aW5nRGF0YShwYWludGlu
Z0RhdGEsIGxpZ2h0WCwgbGlnaHRZLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGF0YS5waXhlbHMtPmdl
dChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSkgKiBkYXRhLnN1cmZhY2VTY2FsZSk7Cisg
ICAgbV9saWdodFNvdXJjZS0+dXBkYXRlUGFpbnRpbmdEYXRhKHBhaW50aW5nRGF0YSwgbGlnaHRY
LCBsaWdodFksIHN0YXRpY19jYXN0PGZsb2F0PihkYXRhLnBpeGVscy0+aXRlbShvZmZzZXQgKyBj
QWxwaGFDaGFubmVsT2Zmc2V0KSkgKiBkYXRhLnN1cmZhY2VTY2FsZSk7CiAKICAgICBmbG9hdCBs
aWdodFN0cmVuZ3RoOwogICAgIGlmICghbm9ybWFsMkRWZWN0b3IueCgpICYmICFub3JtYWwyRFZl
Y3Rvci55KCkpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCBpbmxpbmUgdm9pZCBGRUxpZ2h0aW5nOjpw
bGF0Zm9ybUFwcGx5KExpZ2h0aW5nRGF0YSYgZGF0YSwgTGlnaHRTb3VyY2U6OlBhaW50aW5nRAog
I2VuZGlmCiB9CiAKLWJvb2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKEJ5dGVBcnJheSogcGl4
ZWxzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitib29sIEZFTGlnaHRpbmc6OmRyYXdMaWdodGlu
ZyhVaW50OENsYW1wZWRBcnJheSogcGl4ZWxzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAg
ICAgTGlnaHRTb3VyY2U6OlBhaW50aW5nRGF0YSBwYWludGluZ0RhdGE7CiAgICAgTGlnaHRpbmdE
YXRhIGRhdGE7CkBAIC0zNzMsOSArMzczLDkgQEAgYm9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRp
bmcoQnl0ZUFycmF5KiBwaXhlbHMsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICAgICAgICAg
IGRhdGEucGl4ZWxzLT5zZXQoaSwgY09wYXF1ZUFscGhhKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxhc3RQaXhlbDsgaSArPSBjUGl4ZWxTaXplKSB7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGExID0gZGF0YS5waXhlbHMtPmdldChpKTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYTIgPSBkYXRhLnBpeGVscy0+Z2V0KGkgKyAxKTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYTMgPSBkYXRhLnBpeGVscy0+Z2V0KGkgKyAyKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYTEgPSBkYXRhLnBpeGVscy0+aXRlbShpKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgYTIgPSBkYXRhLnBpeGVscy0+aXRlbShpICsgMSk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGEzID0gZGF0YS5waXhlbHMtPml0ZW0oaSArIDIpOwogICAgICAgICAg
ICAgLy8gYWxwaGEgc2V0IHRvIHNldCB0byBtYXgoYTEsIGEyLCBhMykKICAgICAgICAgICAgIGRh
dGEucGl4ZWxzLT5zZXQoaSArIDMsIGExID49IGEyID8gKGExID49IGEzID8gYTEgOiBhMykgOiAo
YTIgPj0gYTMgPyBhMiA6IGEzKSk7CiAgICAgICAgIH0KQEAgLTM4OCw3ICszODgsNyBAQCB2b2lk
IEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0
KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0gICAgQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5ID0g
Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBVaW50OENsYW1wZWRBcnJheSog
c3JjUGl4ZWxBcnJheSA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgaWYg
KCFzcmNQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggNTQyNmY5
MTJjOWE4YTdjMDgwZWI4NWI1NjgxNzQ3OTY1Yzk0ZGJmMS4uZDBkMmIzNjg1ZTUyMmFjNDhlYjA0
Yjk2Nzk3OWYyYTNjNjA1ZGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAgLTM0LDggKzM0LDggQEAKICNpbmNs
dWRlICJMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlBvaW50TGlnaHRTb3VyY2UuaCIKICNpbmNs
dWRlICJTcG90TGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CiAKIC8vIENvbW1vbiBiYXNlIGNsYXNzIGZvciBGRURpZmZ1c2VMaWdodGluZyBhbmQgRkVTcGVj
dWxhckxpZ2h0aW5nCiAKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RydWN0
IExpZ2h0aW5nRGF0YSB7CiAgICAgICAgIC8vIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkg
cmVhZC1vbmx5IChTTVAgc2FmZSkgZGF0YQotICAgICAgICBCeXRlQXJyYXkqIHBpeGVsczsKKyAg
ICAgICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsczsKICAgICAgICAgZmxvYXQgc3VyZmFjZVNj
YWxlOwogICAgICAgICBpbnQgd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNpemU7CiAgICAgICAgIGlu
dCB3aWR0aERlY3JlYXNlZEJ5T25lOwpAQCAtOTIsNyArOTIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBGRUxpZ2h0aW5nKEZpbHRlciosIExpZ2h0aW5nVHlwZSwgY29uc3QgQ29sb3ImLCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBQYXNzUmVmUHRyPExpZ2h0U291cmNl
Pik7CiAKLSAgICBib29sIGRyYXdMaWdodGluZyhCeXRlQXJyYXkqLCBpbnQsIGludCk7CisgICAg
Ym9vbCBkcmF3TGlnaHRpbmcoVWludDhDbGFtcGVkQXJyYXkqLCBpbnQsIGludCk7CiAgICAgaW5s
aW5lIHZvaWQgaW5saW5lU2V0UGl4ZWwoaW50IG9mZnNldCwgTGlnaHRpbmdEYXRhJiwgTGlnaHRT
b3VyY2U6OlBhaW50aW5nRGF0YSYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGxpZ2h0WCwgaW50IGxpZ2h0WSwgZmxvYXQgZmFjdG9yWCwgZmxvYXQgZmFjdG9yWSwgSW50UG9p
bnQmIG5vcm1hbFZlY3Rvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAppbmRleCA1YmE0ZGZjMTRjMWUx
OGQxOGNiYjNlOTNlM2RlMzAwZDBmZGI3Mzk4Li45OGQyYTZhMDFjNDk5MjNlOWZkMmNiMDY5MjAy
MzgxZjQwN2Q5NGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAjaW5j
bHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2lu
Y2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+Cisj
aW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiB1c2luZyBzdGQ6Om1pbjsKQEAgLTEwNiw4ICsxMDYsOCBAQCBib29sIEZFTW9ycGhvbG9n
eTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQogCiB2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZv
cm1BcHBseUdlbmVyaWMoUGFpbnRpbmdEYXRhKiBwYWludGluZ0RhdGEsIGludCB5U3RhcnQsIGlu
dCB5RW5kKQogewotICAgIEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSA9IHBhaW50aW5nRGF0YS0+
c3JjUGl4ZWxBcnJheTsKLSAgICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBwYWludGluZ0Rh
dGEtPmRzdFBpeGVsQXJyYXk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXkg
PSBwYWludGluZ0RhdGEtPnNyY1BpeGVsQXJyYXk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGRz
dFBpeGVsQXJyYXkgPSBwYWludGluZ0RhdGEtPmRzdFBpeGVsQXJyYXk7CiAgICAgY29uc3QgaW50
IHdpZHRoID0gcGFpbnRpbmdEYXRhLT53aWR0aDsKICAgICBjb25zdCBpbnQgaGVpZ2h0ID0gcGFp
bnRpbmdEYXRhLT5oZWlnaHQ7CiAgICAgY29uc3QgaW50IGVmZmVjdFdpZHRoID0gd2lkdGggKiA0
OwpAQCAtMTIyLDkgKzEyMiw5IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5R2Vu
ZXJpYyhQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YSwgaW50IHlTdGFydCwKICAgICAgICAgICAg
IGV4dHJlbWEuY2xlYXIoKTsKICAgICAgICAgICAgIC8vIENvbXB1dGUgZXh0cmVtYXMgZm9yIGVh
Y2ggY29sdW1ucwogICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPD0gcmFkaXVzWDsgKyt4
KSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2x1bW5FeHRyZW1hID0gc3JjUGl4
ZWxBcnJheS0+Z2V0KGV4dHJlbWFTdGFydFkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsgY2xyQ2hh
bm5lbCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2x1bW5FeHRyZW1hID0gc3Jj
UGl4ZWxBcnJheS0+aXRlbShleHRyZW1hU3RhcnRZICogZWZmZWN0V2lkdGggKyA0ICogeCArIGNs
ckNoYW5uZWwpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGVZID0gZXh0cmVtYVN0YXJ0WSAr
IDE7IGVZIDwgZXh0cmVtYUVuZFk7ICsrZVkpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBwaXhlbCA9IHNyY1BpeGVsQXJyYXktPmdldChlWSAqIGVmZmVjdFdpZHRoICsgNCAq
IHggKyBjbHJDaGFubmVsKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBwaXhl
bCA9IHNyY1BpeGVsQXJyYXktPml0ZW0oZVkgKiBlZmZlY3RXaWR0aCArIDQgKiB4ICsgY2xyQ2hh
bm5lbCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobV90eXBlID09IEZFTU9SUEhPTE9HWV9P
UEVSQVRPUl9FUk9ERSAmJiBwaXhlbCA8PSBjb2x1bW5FeHRyZW1hKQogICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFICYmIHBp
eGVsID49IGNvbHVtbkV4dHJlbWEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5F
eHRyZW1hID0gcGl4ZWw7CkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBs
YXRmb3JtQXBwbHlHZW5lcmljKFBhaW50aW5nRGF0YSogcGFpbnRpbmdEYXRhLCBpbnQgeVN0YXJ0
LAogICAgICAgICAgICAgLy8gS2VybmVsIGlzIGZpbGxlZCwgZ2V0IGV4dHJlbWEgb2YgbmV4dCBj
b2x1bW4KICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewogICAg
ICAgICAgICAgICAgIGNvbnN0IGludCBlbmRYID0gbWluKHggKyByYWRpdXNYLCB3aWR0aCAtIDEp
OwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVtYSA9IHNyY1BpeGVs
QXJyYXktPmdldChleHRyZW1hU3RhcnRZICogZWZmZWN0V2lkdGggKyBlbmRYICogNCArIGNsckNo
YW5uZWwpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVtYSA9IHNy
Y1BpeGVsQXJyYXktPml0ZW0oZXh0cmVtYVN0YXJ0WSAqIGVmZmVjdFdpZHRoICsgZW5kWCAqIDQg
KyBjbHJDaGFubmVsKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gZXh0cmVtYVN0YXJ0
WSArIDE7IGkgPD0gZXh0cmVtYUVuZFk7ICsraSkgewotICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIHBpeGVsID0gc3JjUGl4ZWxBcnJheS0+Z2V0KGkgKiBlZmZlY3RXaWR0aCArIGVu
ZFggKiA0ICsgY2xyQ2hhbm5lbCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
cGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGkgKiBlZmZlY3RXaWR0aCArIGVuZFggKiA0ICsg
Y2xyQ2hhbm5lbCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobV90eXBlID09IEZFTU9SUEhP
TE9HWV9PUEVSQVRPUl9FUk9ERSAmJiBwaXhlbCA8PSBjb2x1bW5FeHRyZW1hKQogICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRF
ICYmIHBpeGVsID49IGNvbHVtbkV4dHJlbWEpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29s
dW1uRXh0cmVtYSA9IHBpeGVsOwpAQCAtMTk3LDEzICsxOTcsMTMgQEAgdm9pZCBGRU1vcnBob2xv
Z3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlu
cHV0RWZmZWN0KDApOwogCi0gICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVs
QXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIWRzdFBp
eGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNB
bHBoYUltYWdlKCkpOwogICAgIGlmIChtX3JhZGl1c1ggPD0gMCB8fCBtX3JhZGl1c1kgPD0gMCkg
ewotICAgICAgICBkc3RQaXhlbEFycmF5LT5jbGVhcigpOworICAgICAgICBkc3RQaXhlbEFycmF5
LT56ZXJvRmlsbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMTIsNyArMjEyLDcg
QEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaW50IHJh
ZGl1c1kgPSBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihmaWx0ZXItPmFwcGx5VmVydGljYWxTY2Fs
ZShtX3JhZGl1c1kpKSk7CiAKICAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVz
dGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAg
UmVmUHRyPEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFn
ZShlZmZlY3REcmF3aW5nUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBzcmNQ
aXhlbEFycmF5ID0gaW4tPmFzUHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsK
IAogICAgIFBhaW50aW5nRGF0YSBwYWludGluZ0RhdGE7CiAgICAgcGFpbnRpbmdEYXRhLnNyY1Bp
eGVsQXJyYXkgPSBzcmNQaXhlbEFycmF5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKaW5kZXggNTQyZDI2
YjI4Mzk2ZjE5MTIwZjM2NTJjMzAyOTZlMWIwZDRiMWY4MC4uMTlkYTYzNWEyZTAzYTYxYWYwNDA4
ZWNkNGY5MGZkZTRiMGUwNDczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0OwogCiAgICAgc3RydWN0IFBhaW50aW5nRGF0
YSB7Ci0gICAgICAgIEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheTsKLSAgICAgICAgQnl0ZUFycmF5
KiBkc3RQaXhlbEFycmF5OworICAgICAgICBVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJh
eTsKKyAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXk7CiAgICAgICAgIGlu
dCB3aWR0aDsKICAgICAgICAgaW50IGhlaWdodDsKICAgICAgICAgaW50IHJhZGl1c1g7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVs
ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVy
YnVsZW5jZS5jcHAKaW5kZXggZDVkNjRjMTMwNmY0OGU3NjU4ZGVhNTY0N2UxMTQxMTgzYWQ1NjJm
MS4uMDNkZjU2YjMwNzE1MzQ2ODYzZmY4N2QxNDdjNmFhY2IyNTI2NzMwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxl
bmNlLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIK
ICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+
CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMzMwLDcgKzMzMCw3IEBAIHVuc2lnbmVkIGNoYXIgRkVUdXJidWxlbmNlOjpjYWxj
dWxhdGVUdXJidWxlbmNlVmFsdWVGb3JQb2ludChpbnQgY2hhbm5lbCwgUGFpbnRpCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCAq
IDI1NSk7CiB9CiAKLWlubGluZSB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihCeXRlQXJy
YXkqIHBpeGVsQXJyYXksIFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBpbnQgc3RhcnRZLCBp
bnQgZW5kWSkKK2lubGluZSB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1w
ZWRBcnJheSogcGl4ZWxBcnJheSwgUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEsIGludCBzdGFy
dFksIGludCBlbmRZKQogewogICAgIEludFJlY3QgZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWlu
dFJlY3QoKTsKICAgICBJbnRQb2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZ
KTsKQEAgLTM1NiwxMiArMzU2LDEyIEBAIHZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uV29y
a2VyKEZpbGxSZWdpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKQogCiB2b2lkIEZFVHVyYnVsZW5j
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKLSAgICBCeXRlQXJyYXkqIHBpeGVsQXJyYXkg
PSBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5
KiBwaXhlbEFycmF5ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAo
IXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhYnNvbHV0ZVBhaW50UmVj
dCgpLmlzRW1wdHkoKSkgewotICAgICAgICBwaXhlbEFycmF5LT5jbGVhcigpOworICAgICAgICBw
aXhlbEFycmF5LT56ZXJvRmlsbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuaAppbmRleCA1OTI1N2QwMjZkMzQ5NmUzMzJhZWJjYTQxZmQ2ZGZlYmFlZmUwY2E5Li40N2M4
YmVlNzk5NTZiZDRlYjEyYWEwYTZkNjJjYmExYzRiMDdiMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKQEAg
LTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IEZpbGxSZWdpb25QYXJhbWV0
ZXJzIHsKICAgICAgICAgRkVUdXJidWxlbmNlKiBmaWx0ZXI7Ci0gICAgICAgIEJ5dGVBcnJheSog
cGl4ZWxBcnJheTsKKyAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIHBpeGVsQXJyYXk7CiAgICAg
ICAgIFBhaW50aW5nRGF0YSogcGFpbnRpbmdEYXRhOwogICAgICAgICBpbnQgc3RhcnRZOwogICAg
ICAgICBpbnQgZW5kWTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBwcml2YXRlOgogICAgIGlubGluZSB2
b2lkIGluaXRQYWludChQYWludGluZ0RhdGEmKTsKICAgICBmbG9hdCBub2lzZTJEKGludCBjaGFu
bmVsLCBQYWludGluZ0RhdGEmLCBTdGl0Y2hEYXRhJiwgY29uc3QgRmxvYXRQb2ludCYpOwogICAg
IHVuc2lnbmVkIGNoYXIgY2FsY3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQoaW50IGNoYW5u
ZWwsIFBhaW50aW5nRGF0YSYsIFN0aXRjaERhdGEmLCBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAg
aW5saW5lIHZvaWQgZmlsbFJlZ2lvbihCeXRlQXJyYXkqLCBQYWludGluZ0RhdGEmLCBpbnQsIGlu
dCk7CisgICAgaW5saW5lIHZvaWQgZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSosIFBhaW50
aW5nRGF0YSYsIGludCwgaW50KTsKIAogICAgIFR1cmJ1bGVuY2VUeXBlIG1fdHlwZTsKICAgICBm
bG9hdCBtX2Jhc2VGcmVxdWVuY3lYOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IDg5ZDU4MWNhZmY3
MmE0MTljYzdkMjhiMWMxMTUzMDhlZmI1MDA5YmQuLjhkYzkxODU1Mzg1YzdjZmM2Y2QxMmM4NmEx
MGEyNjhhZmQ3NjA4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNp
bmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRTdHJlYW0uaCIKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI1LDcgKzEy
NSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygp
CiAgICAgaWYgKCFtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQnl0ZUFycmF5KiBpbWFnZUFycmF5ID0gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQu
Z2V0KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGltYWdlQXJyYXkgPSBtX3ByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdC5nZXQoKTsKICAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbERhdGEgPSBpbWFn
ZUFycmF5LT5kYXRhKCk7CiAgICAgaW50IHBpeGVsQXJyYXlMZW5ndGggPSBpbWFnZUFycmF5LT5s
ZW5ndGgoKTsKIApAQCAtMTczLDIzICsxNzMsMjMgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVj
dDo6YXNJbWFnZUJ1ZmZlcigpCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7
CiB9CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBsaWVk
SW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IEZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQog
ewogICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChyZWN0KSk7Ci0gICAgUmVmUHRyPEJ5dGVB
cnJheT4gaW1hZ2VEYXRhID0gQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVjdC5o
ZWlnaHQoKSAqIDQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0g
VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVj
dC5oZWlnaHQoKSAqIDQpOwogICAgIGNvcHlVbm11bHRpcGxpZWRJbWFnZShpbWFnZURhdGEuZ2V0
KCksIHJlY3QpOwogICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPEJ5dGVBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJ
bnRSZWN0JiByZWN0KQorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0
Ojphc1ByZW11bHRpcGxpZWRJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEFTU0VS
VChpc0ZpbHRlclNpemVWYWxpZChyZWN0KSk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gaW1hZ2VE
YXRhID0gQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQp
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVk
QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAq
IDQpOwogICAgIGNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRhLmdldCgpLCByZWN0KTsK
ICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIH0KIAotaW5saW5lIHZvaWQgRmlsdGVy
RWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhCeXRlQXJyYXkqIHNvdXJjZSwgQnl0ZUFycmF5KiBkZXN0
aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2lubGluZSB2b2lkIEZpbHRlckVmZmVjdDo6
Y29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgVWludDhDbGFtcGVkQXJy
YXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEluaXRpYWxp
emUgdGhlIGRlc3RpbmF0aW9uIHRvIHRyYW5zcGFyZW50IGJsYWNrLCBpZiBub3QgZW50aXJlbHkg
Y292ZXJlZCBieSB0aGUgc291cmNlLgogICAgIGlmIChyZWN0LngoKSA8IDAgfHwgcmVjdC55KCkg
PCAwIHx8IHJlY3QubWF4WCgpID4gbV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpIHx8IHJlY3Qu
bWF4WSgpID4gbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSkKQEAgLTIzMyw3ICsyMzMsNyBA
QCBpbmxpbmUgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzKEJ5dGVBcnJheSogc291
cmNlLCBCeXRlQXJyYXkqIGRlc3RpbmF0aQogICAgIH0KIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6
OmNvcHlVbm11bHRpcGxpZWRJbWFnZShCeXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRJbWFnZShVaW50
OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAg
QVNTRVJUKGhhc1Jlc3VsdCgpKTsKIApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgRmlsdGVyRWZm
ZWN0Ojpjb3B5VW5tdWx0aXBsaWVkSW1hZ2UoQnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW50UmVjdCYKICAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdl
QnVmZmVyUmVzdWx0LT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgp
LCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChtX2Fic29sdXRlUGFpbnRSZWN0KSk7Ci0gICAg
ICAgICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVhdGUobV9h
YnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAq
IDQpOworICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAq
IG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIqIHNvdXJjZUNvbXBvbmVudCA9IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRh
KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbkNvbXBvbmVudCA9IG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIqIGVuZCA9IHNvdXJjZUNvbXBvbmVudCArIChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkg
KiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CkBAIC0yNjcsNyArMjY3LDcgQEAg
dm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRJbWFnZShCeXRlQXJyYXkqIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbnRSZWN0JgogICAgIGNvcHlJbWFnZUJ5dGVzKG1fdW5tdWx0aXBsaWVk
SW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3RpbmF0aW9uLCByZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJF
ZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoQnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwgY29u
c3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZElt
YWdlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKICAgICBBU1NFUlQoaGFzUmVzdWx0KCkpOwogCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBG
aWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoQnl0ZUFycmF5KiBkZXN0aW5hdGlv
biwgY29uc3QgSW50UmVjdCYKICAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0
KEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgQVNTRVJUKGlzRmlsdGVyU2l6ZVZhbGlkKG1fYWJzb2x1dGVQYWludFJl
Y3QpKTsKLSAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gQnl0ZUFycmF5
OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVj
dC5oZWlnaHQoKSAqIDQpOworICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQg
PSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2Fic29sdXRlUGFpbnRS
ZWN0LndpZHRoKCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyKiBzb3VyY2VDb21wb25lbnQgPSBtX3VubXVsdGlwbGllZEltYWdl
UmVzdWx0LT5kYXRhKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbkNv
bXBvbmVudCA9IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyKiBlbmQgPSBzb3VyY2VDb21wb25lbnQgKyAobV9hYnNvbHV0ZVBhaW50
UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwpAQCAtMzA4
LDcgKzMwOCw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVy
UmVzdWx0KCkKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIAotQnl0
ZUFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCkKK1Vp
bnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVz
dWx0KCkKIHsKICAgICAvLyBPbmx5IG9uZSByZXN1bHQgdHlwZSBpcyBhbGxvd2VkLgogICAgIEFT
U0VSVCghaGFzUmVzdWx0KCkpOwpAQCAtMzE2LDExICszMTYsMTEgQEAgQnl0ZUFycmF5KiBGaWx0
ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIAogICAgIGlmIChtX2Fi
c29sdXRlUGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV91bm11
bHRpcGxpZWRJbWFnZVJlc3VsdCA9IEJ5dGVBcnJheTo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJl
Y3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5o
ZWlnaHQoKSAqIDQpOwogICAgIHJldHVybiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgp
OwogfQogCi1CeXRlQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0KCkKK1VpbnQ4Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCgpCiB7CiAgICAgLy8gT25seSBvbmUgcmVzdWx0IHR5cGUgaXMgYWxs
b3dlZC4KICAgICBBU1NFUlQoIWhhc1Jlc3VsdCgpKTsKQEAgLTMyOCw3ICszMjgsNyBAQCBCeXRl
QXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCkKIAog
ICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShtX2Fi
c29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICog
NCk7CisgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlVW5pbml0aWFsaXplZChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRoKCkgKiBtX2Fic29s
dXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCA4YjRhZDZmOTIyNzUyZmRl
MjFiYTg1ZGNiMTMwNmQzYThlYWUyYzY5Li5jOTljZDUwMWQ5YzA0NmYxMTU2YjEyMzIyOGJjMjU5
ODg4MjUwY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTI2LDEwICsyNiwxMCBAQAogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKIAotI2luY2x1ZGUgPHd0Zi9CeXRl
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENs
YW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogc3RhdGljIGNvbnN0IGZs
b2F0IGtNYXhGaWx0ZXJTaXplID0gNTAwMC4wZjsKQEAgLTU2LDEwICs1NiwxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyUmVzdWx0KCk7CiAgICAgSW1hZ2VCdWZmZXIqIGFzSW1hZ2VCdWZm
ZXIoKTsKLSAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShjb25z
dCBJbnRSZWN0Jik7Ci0gICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGFzUHJlbXVsdGlwbGllZElt
YWdlKGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRJbWFnZShCeXRl
QXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5UHJlbXVs
dGlwbGllZEltYWdlKEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKTsKKyAg
ICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1VubXVsdGlwbGllZEltYWdlKGNvbnN0
IEludFJlY3QmKTsKKyAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBhc1ByZW11bHRp
cGxpZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBjb3B5VW5tdWx0aXBsaWVkSW1h
Z2UoVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
dm9pZCBjb3B5UHJlbXVsdGlwbGllZEltYWdlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlv
biwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVj
dHMoKSB7IHJldHVybiBtX2lucHV0RWZmZWN0czsgfQogICAgIEZpbHRlckVmZmVjdCogaW5wdXRF
ZmZlY3QodW5zaWduZWQpIGNvbnN0OwpAQCAtMTMzLDggKzEzMyw4IEBAIHByb3RlY3RlZDoKICAg
ICBGaWx0ZXJFZmZlY3QoRmlsdGVyKik7CiAKICAgICBJbWFnZUJ1ZmZlciogY3JlYXRlSW1hZ2VC
dWZmZXJSZXN1bHQoKTsKLSAgICBCeXRlQXJyYXkqIGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVz
dWx0KCk7Ci0gICAgQnl0ZUFycmF5KiBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsK
KyAgICBVaW50OENsYW1wZWRBcnJheSogY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsK
KyAgICBVaW50OENsYW1wZWRBcnJheSogY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7
CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsdGVyIHdpbGwgb25seSBvcGVyYXRlIGNv
cnJlY3RseSBvbiB2YWxpZCBSR0JBIHZhbHVlcywgd2l0aAogICAgIC8vIGFscGhhIGluIFswLDI1
NV0gYW5kIGVhY2ggY29sb3IgY29tcG9uZW50IGluIFswLCBhbHBoYV0uCkBAIC0xNDUsOCArMTQ1
LDggQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9p
bWFnZUJ1ZmZlclJlc3VsdDsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBtX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0OwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV91bm11bHRpcGxpZWRJbWFnZVJl
c3VsdDsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0OwogICAgIEZpbHRlckVmZmVjdFZlY3RvciBtX2lucHV0RWZmZWN0czsKIAogICAgIGJv
b2wgbV9hbHBoYUltYWdlOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgRmlsdGVy
KiBtX2ZpbHRlcjsKICAgICAKIHByaXZhdGU6Ci0gICAgaW5saW5lIHZvaWQgY29weUltYWdlQnl0
ZXMoQnl0ZUFycmF5KiBzb3VyY2UsIEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJl
Y3QmKTsKKyAgICBpbmxpbmUgdm9pZCBjb3B5SW1hZ2VCeXRlcyhVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKTsK
IAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIHZhcmlhYmxlcyBhcmUgU1ZHIHNwZWNpZmlj
IGFuZCB3aWxsIG1vdmUgdG8gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuCiAgICAg
Ly8gU2VlIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU2MTQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2Fy
bS9GRUdhdXNzaWFuQmx1ck5FT04uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvYXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5oCmluZGV4IDk2MDM3YWFiOWFiMmUxYWE5
Nzc2YTY4MWFlYTFkOTY1OTVmOGQ1YTcuLjFmYjM3NTJjNWNlNDQ5MmFlYjllZjIzYzZlODllMzYw
ZTc1M2RkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvYXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5oCkBAIC01NCw3ICs1
NCw3IEBAIHZvaWQgbmVvbkRyYXdBbGxDaGFubmVsR2F1c3NpYW5CbHVyKHVuc2lnbmVkIGNoYXIq
IHNvdXJjZSwgdW5zaWduZWQgY2hhciogZGVzdGluCiB2b2lkIG5lb25EcmF3QWxwaGFDaGFubmVs
R2F1c3NpYW5CbHVyKHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwgdW5zaWduZWQgY2hhciogZGVzdGlu
YXRpb24sIEZFR2F1c3NpYW5CbHVyUGFpbnRpbmdEYXRhRm9yTmVvbiopOwogfQogCi1pbmxpbmUg
dm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseU5lb24oQnl0ZUFycmF5KiBzcmNQaXhl
bEFycmF5LCBCeXRlQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1
bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKQoraW5saW5lIHZvaWQgRkVH
YXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlOZW9uKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhl
bEFycmF5LCBVaW50OENsYW1wZWRBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVs
U2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpCiB7CiAgICAg
Y29uc3QgaW50IHdpZHRoTXVsdGlwbGllZEJ5Rm91ciA9IDQgKiBwYWludFNpemUud2lkdGgoKTsK
ICAgICBGRUdhdXNzaWFuQmx1clBhaW50aW5nRGF0YUZvck5lb24gYXJndW1lbnRzWCA9IHsKQEAg
LTg5LDcgKzg5LDcgQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlO
ZW9uKEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmEKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBuZW9uRHJhd0FsbENoYW5uZWxHYXVzc2lhbkJsdXIoc3JjUGl4ZWxB
cnJheS0+ZGF0YSgpLCB0bXBQaXhlbEFycmF5LT5kYXRhKCksICZhcmd1bWVudHNYKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEJ5dGVBcnJheSogYXV4UGl4ZWxBcnJheSA9IHRtcFBp
eGVsQXJyYXk7CisgICAgICAgICAgICBVaW50OENsYW1wZWRBcnJheSogYXV4UGl4ZWxBcnJheSA9
IHRtcFBpeGVsQXJyYXk7CiAgICAgICAgICAgICB0bXBQaXhlbEFycmF5ID0gc3JjUGl4ZWxBcnJh
eTsKICAgICAgICAgICAgIHNyY1BpeGVsQXJyYXkgPSBhdXhQaXhlbEFycmF5OwogICAgICAgICB9
CkBAIC0xMDIsNyArMTAyLDcgQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3Jt
QXBwbHlOZW9uKEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmEKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBuZW9uRHJhd0FsbENoYW5uZWxHYXVzc2lhbkJsdXIodG1w
UGl4ZWxBcnJheS0+ZGF0YSgpLCBzcmNQaXhlbEFycmF5LT5kYXRhKCksICZhcmd1bWVudHNZKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEJ5dGVBcnJheSogYXV4UGl4ZWxBcnJheSA9
IHRtcFBpeGVsQXJyYXk7CisgICAgICAgICAgICBVaW50OENsYW1wZWRBcnJheSogYXV4UGl4ZWxB
cnJheSA9IHRtcFBpeGVsQXJyYXk7CiAgICAgICAgICAgICB0bXBQaXhlbEFycmF5ID0gc3JjUGl4
ZWxBcnJheTsKICAgICAgICAgICAgIHNyY1BpeGVsQXJyYXkgPSBhdXhQaXhlbEFycmF5OwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApp
bmRleCA5MGQyMzMyMTQyNWQ1MTUwYWE5YTYwNWVlMzVmZjcyMDliMzdjN2Y4Li5jYjNhNWI3N2U1
ZjU1MzkxMDBmZjI1ZjRkZmFjMDBmNzhkNjBhMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBQYXNzUmVmUHRy
PEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1h
Z2VEYXRhKERyYXdpbgogICAgICAgICByZXR1cm4gMDsKIAogICAgIFJlZlB0cjxJbWFnZURhdGE+
IGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUobV9jdXJyZW50V2lkdGgsIG1f
Y3VycmVudEhlaWdodCkpOwotICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVscyA9IGltYWdlRGF0YS0+
ZGF0YSgpLT5kYXRhKCktPmRhdGEoKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMgPSBpbWFn
ZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAgIGludCB0b3RhbEJ5dGVzID0gNCAqIG1fY3VycmVu
dFdpZHRoICogbV9jdXJyZW50SGVpZ2h0OwogCiAgICAgcmVhZFJlbmRlcmluZ1Jlc3VsdHMocGl4
ZWxzLCB0b3RhbEJ5dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKaW5kZXggNTI0MjMwMjQ1MTNiMmUzYmVjNDhiNDll
N2EzOGU3YjU1MGY2NjZjYi4uYjliOWViZjZjMjZiMDQxYWQ0ZTUxZGE4MTM4ZmVhZWNjNDJmOGM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VC
dWZmZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VCdWZmZXJRdC5jcHAKQEAgLTE4OSwxNyArMTg5LDE3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBs
YXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUp
CiB9CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgotUGFzc1JlZlB0cjxCeXRlQXJy
YXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRh
dGEmIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1
ZmZlckRhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBmbG9hdCBh
cmVhID0gNC4wZiAqIHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCk7CiAgICAgaWYgKGFyZWEg
PiBzdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0ID0gQnl0ZUFy
cmF5OjpjcmVhdGUocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIFJlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwogICAgIHVuc2ln
bmVkIGNoYXIqIGRhdGEgPSByZXN1bHQtPmRhdGEoKTsKIAogICAgIGlmIChyZWN0LngoKSA8IDAg
fHwgcmVjdC55KCkgPCAwIHx8IHJlY3QubWF4WCgpID4gc2l6ZS53aWR0aCgpIHx8IHJlY3QubWF4
WSgpID4gc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgbWVtc2V0KGRhdGEsIDAsIHJlc3VsdC0+bGVu
Z3RoKCkpOworICAgICAgICByZXN1bHQtPnplcm9GaWxsKCk7CiAKICAgICBpbnQgb3JpZ2lueCA9
IHJlY3QueCgpOwogICAgIGludCBkZXN0eCA9IDA7CkBAIC0yNzEsMTIgKzI3MSwxMiBAQCBQYXNz
UmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEltYWdlQnVmZmVyRGF0YSYgaQogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1Q
YXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJl
dHVybiBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihyZWN0LCBtX2RhdGEsIG1fc2l6ZSk7CiB9
CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsK
ICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9z
aXplKTsKIH0KQEAgLTI5Nyw3ICsyOTcsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBw
cmVtdWx0aXBseUFCR1J0b0FSR0IodW5zaWduZWQgaW50IHgpCiAgICAgcmV0dXJuIHg7CiB9CiAK
LXZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBCeXRl
QXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkK
K3ZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50
OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRl
U3lzdGVtKQogewogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NF
UlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCmluZGV4IDM2NDQx
MzFiYzJiMWNjM2ViNDRlMDA2OGZjZTllZTE3ZjI2YThhNzcuLjhlYmY3NmVlZGE4MTExZjVlYTU2
MDkxOTJmNWQ5YTJjMjU3NDIxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKQEAgLTIzMCwxNCArMjMw
LDE0IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25z
dCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiB9CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0
aXBsaWVkPgotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0
JiByZWN0LCBTa0NhbnZhcyogY2FudmFzLAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIFNrQ2FudmFzKiBjYW52YXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAg
ICAgZmxvYXQgYXJlYSA9IDQuMGYgKiByZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpOwogICAg
IGlmIChhcmVhID4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHJlc3Vs
dCA9IEJ5dGVBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsK
KyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsK
IAogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSByZXN1bHQtPmRhdGEoKTsKIApAQCAtMjQ1LDcg
KzI0NSw3IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVj
dCYgcmVjdCwgU2tDYW52YXMqIGNhbnZhcywKICAgICAgICAgfHwgcmVjdC55KCkgPCAwCiAgICAg
ICAgIHx8IHJlY3QubWF4WCgpID4gc2l6ZS53aWR0aCgpCiAgICAgICAgIHx8IHJlY3QubWF4WSgp
ID4gc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgbWVtc2V0KGRhdGEsIDAsIHJlc3VsdC0+bGVuZ3Ro
KCkpOworICAgICAgICByZXN1bHQtPnplcm9GaWxsKCk7CiAKICAgICB1bnNpZ25lZCBkZXN0Qnl0
ZXNQZXJSb3cgPSA0ICogcmVjdC53aWR0aCgpOwogICAgIFNrQml0bWFwIGRlc3RCaXRtYXA7CkBA
IC0yNjIsMTcgKzI2MiwxNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1hZ2VEYXRhKGNv
bnN0IEludFJlY3QmIHJlY3QsIFNrQ2FudmFzKiBjYW52YXMsCiAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0p
IGNvbnN0CitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0p
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHJlY3QsIGNv
bnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLCBtX3NpemUpOwogfQogCi1QYXNz
UmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEo
Y29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Bhc3NSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRh
KGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGdldEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihyZWN0LCBjb250ZXh0KCktPnBsYXRmb3Jt
Q29udGV4dCgpLT5jYW52YXMoKSwgbV9zaXplKTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0
Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0
Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2Us
IGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCiB7CiAgICAgU2tDYW52
YXMqIGNhbnZhcyA9IGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAg
IEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5k
ZXggODk0ZWJiZjU2NDllYjI1NzU5OGRmZDc2Y2VmYWVlZWI3OGQwZTcwZS4uNTllYjRhNmYzNGNi
NGU1YmVhMmE2MTEzNDUyOGQ2Mzc1MTkyNDI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAg
LTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5
Lmg+CiAjZW5kaWYKIAogI2RlZmluZSBHTF9DTUQoLi4uKSBkbyB7IF9fVkFfQVJHU19fOyBBU1NF
UlRfQVJHKF9fVkFfQVJHU19fLCAhZ2xHZXRFcnJvcigpKTsgfSB3aGlsZSAoMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2lu
Q0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZm
ZXJXaW5DRS5jcHAKaW5kZXggMjhjNzIwOTVmNjdjMGNmZmJmNWYzZGU3MTBlMDU0YWE2MWM4NWMy
Yy4uOWM0MjI1YTNlZDYyZDUwNTZhOTcyODUzNDlkYWI2Y2Q1YjkyOWU2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZm
ZXJXaW5DRS5jcHAKQEAgLTEyMSw5ICsxMjEsOSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdAog
fQogCiB0ZW1wbGF0ZSA8Ym9vbCBwcmVtdWx0aXBsaWVkPgotc3RhdGljIFBhc3NSZWZQdHI8Qnl0
ZUFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgU2hhcmVkQml0
bWFwKiBiaXRtYXApCitzdGF0aWMgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFNoYXJlZEJpdG1hcCogYml0bWFwKQog
ewotICAgIFJlZlB0cjxCeXRlQXJyYXk+IGltYWdlRGF0YSA9IEJ5dGVBcnJheTo6Y3JlYXRlKHJl
Y3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVk
QXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVk
KHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKIAogICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIHNyYyA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihiaXRtYXAtPmJ5
dGVzKCkpOwogICAgIGlmICghc3JjKQpAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEJ5dGVBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFNo
YXJlZEJpdG1hCiAgICAgICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZSgpOwogCiAgICAgdW5z
aWduZWQgY2hhciogZHN0ID0gaW1hZ2VEYXRhLT5kYXRhKCk7Ci0gICAgbWVtc2V0KGRzdCwgMCwg
aW1hZ2VEYXRhLT5sZW5ndGgoKSk7CisgICAgaW1hZ2VEYXRhLT56ZXJvRmlsbCgpOwogICAgIHNy
YyArPSAoc291cmNlUmVjdC55KCkgKiBiaXRtYXAtPndpZHRoKCkgKyBzb3VyY2VSZWN0LngoKSkg
KiA0OwogICAgIGRzdCArPSAoKHNvdXJjZVJlY3QueSgpIC0gcmVjdC55KCkpICogcmVjdC53aWR0
aCgpICsgc291cmNlUmVjdC54KCkgLSByZWN0LngoKSkgKiA0OwogICAgIGludCBieXRlc1RvQ29w
eSA9IHNvdXJjZVJlY3Qud2lkdGgoKSAqIDQ7CkBAIC0xNzAsMTcgKzE3MCwxNyBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBTaGFyZWRCaXRtYQogICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZSgpOwogfQogCi1Q
YXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJl
dHVybiBnZXRJbWFnZURhdGE8ZmFsc2U+KHJlY3QsIG1fZGF0YS5tX2JpdG1hcC5nZXQoKSk7CiB9
CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZElt
YWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsK
ICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPHRydWU+KHJlY3QsIG1fZGF0YS5tX2JpdG1hcC5nZXQo
KSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBs
aWVkLCBCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0
ZVN5c3RlbSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBs
aWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXpl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBD
b29yZGluYXRlU3lzdGVtKQogewogICAgIFNoYXJlZEJpdG1hcCogYml0bWFwID0gbV9kYXRhLm1f
Yml0bWFwLmdldCgpOwogICAgIHVuc2lnbmVkIGNoYXIqIGRzdCA9ICh1bnNpZ25lZCBjaGFyKili
aXRtYXAtPmJ5dGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3d4L0ltYWdlQnVmZmVyV3guY3BwCmluZGV4IDZiOGUyZDM4OGEyNjlkMTU3YjkzZGU2ZWVh
YzE4NjQwNjM5ZjQwZjAuLjBjZGJjN2IzYjQ4ZDIzMWU4NWM4ZGQxZjE0Y2I2YjIzMmVkODZmNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlQnVm
ZmVyV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdl
QnVmZmVyV3guY3BwCkBAIC0xMjIsMTkgKzEyMiwxOSBAQCBHcmFwaGljc0NvbnRleHQqIEltYWdl
QnVmZmVyOjpjb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwogfQog
Ci1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdl
RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1Jl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdl
RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8Qnl0ZUFy
cmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0
JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVj
dCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiAwOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVs
dGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJj
ZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQsIENvb3JkaW5hdGVTeXN0ZW0pCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVs
dGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6
ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvc2tp
YS9KUEVHSW1hZ2VFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVu
Y29kZXJzL3NraWEvSlBFR0ltYWdlRW5jb2Rlci5jcHAKaW5kZXggODIxZTFkYThiNmNhOWRjOTlh
MzAxMjA1ZjY3MTc2NmMzYWU0NTQ1Mi4uMjJkNTE0YWE3MjZkN2M3YTRlYjUzY2FhNGFhZWNhNWMw
ZTVmODg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2Rl
cnMvc2tpYS9KUEVHSW1hZ2VFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1lbmNvZGVycy9za2lhL0pQRUdJbWFnZUVuY29kZXIuY3BwCkBAIC0xOTUsNyArMTk1
LDcgQEAgYm9vbCBKUEVHSW1hZ2VFbmNvZGVyOjplbmNvZGUoY29uc3QgU2tCaXRtYXAmIGJpdG1h
cCwgaW50IHF1YWxpdHksIFZlY3Rvcjx1bnNpZ24KIAogYm9vbCBKUEVHSW1hZ2VFbmNvZGVyOjpl
bmNvZGUoY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGludCBxdWFsaXR5LCBWZWN0b3I8dW5z
aWduZWQgY2hhcj4qIG91dHB1dCkKIHsKLSAgICByZXR1cm4gZW5jb2RlUGl4ZWxzKGltYWdlRGF0
YS5zaXplKCksIGltYWdlRGF0YS5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpLCBmYWxzZSwgcXVhbGl0
eSwgb3V0cHV0KTsKKyAgICByZXR1cm4gZW5jb2RlUGl4ZWxzKGltYWdlRGF0YS5zaXplKCksIGlt
YWdlRGF0YS5kYXRhKCktPmRhdGEoKSwgZmFsc2UsIHF1YWxpdHksIG91dHB1dCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWVuY29kZXJzL3NraWEvUE5HSW1hZ2VFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3NraWEvUE5HSW1hZ2VFbmNvZGVyLmNwcAppbmRleCA1
YzExNjJiZmI3NTVlMzRjYTA1ZGYzYjdlNjM1MjU3ODhlMDRiMTY0Li5lYWNhYTdjZGI1NmI3NTQ1
MzI5MTQ2NzBhNzc1MTY5MGY1MTE1MzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL1BOR0ltYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvc2tpYS9QTkdJbWFnZUVuY29kZXIuY3Bw
CkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBQTkdJbWFnZUVuY29kZXI6OmVuY29kZShjb25zdCBT
a0JpdG1hcCYgYml0bWFwLCBWZWN0b3I8dW5zaWduZWQgY2hhcj4qIG91dHAKIAogYm9vbCBQTkdJ
bWFnZUVuY29kZXI6OmVuY29kZShjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSwgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+KiBvdXRwdXQpCiB7Ci0gICAgcmV0dXJuIGVuY29kZVBpeGVscyhpbWFnZURh
dGEuc2l6ZSgpLCBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCktPmRhdGEoKSwgZmFsc2UsIG91dHB1
dCk7CisgICAgcmV0dXJuIGVuY29kZVBpeGVscyhpbWFnZURhdGEuc2l6ZSgpLCBpbWFnZURhdGEu
ZGF0YSgpLT5kYXRhKCksIGZhbHNlLCBvdXRwdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9z
a2lhL1dFQlBJbWFnZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvc2tpYS9XRUJQSW1hZ2VFbmNvZGVyLmNwcAppbmRleCA5Y2IyNGZjMDI1MjE0NWY2
YzNmN2RmYzc3NzU4ZDg1ODU0YWMxNDMwLi5lYmMyOTlkNWY5NzUxOWMzNjBjYWM4M2MyY2M3NmE2
OWU4Nzg0YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNv
ZGVycy9za2lhL1dFQlBJbWFnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWVuY29kZXJzL3NraWEvV0VCUEltYWdlRW5jb2Rlci5jcHAKQEAgLTEzMCw3ICsx
MzAsNyBAQCBib29sIFdFQlBJbWFnZUVuY29kZXI6OmVuY29kZShjb25zdCBTa0JpdG1hcCYgYml0
bWFwLCBpbnQgcXVhbGl0eSwgVmVjdG9yPHVuc2lnbgogCiBib29sIFdFQlBJbWFnZUVuY29kZXI6
OmVuY29kZShjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSwgaW50IHF1YWxpdHksIFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiogb3V0cHV0KQogewotICAgIHJldHVybiBlbmNvZGVQaXhlbHMoaW1hZ2VE
YXRhLnNpemUoKSwgaW1hZ2VEYXRhLmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCksIGZhbHNlLCBxdWFs
aXR5LCBvdXRwdXQpOworICAgIHJldHVybiBlbmNvZGVQaXhlbHMoaW1hZ2VEYXRhLnNpemUoKSwg
aW1hZ2VEYXRhLmRhdGEoKS0+ZGF0YSgpLCBmYWxzZSwgcXVhbGl0eSwgb3V0cHV0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAppbmRleCBmYmVhNjRhYjkzZjgx
NTk5NGI3ZTQ2YWJhNmE1ZmNkMWZiM2FmY2I0Li42MDkxOWEyMGMzODVkZTQ4YzMxYzFmNjdmMGU3
NTMyYzRiZGFkNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIFBhc3NS
ZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvSW1hZ2VEYXRhCiAgICAgZ2V0RHJhd2luZ1BhcmFtZXRlcnMoZHJhd2luZ0J1ZmZl
ciwgbV9pbXBsLmdldCgpLCAmZnJhbWVidWZmZXJJZCwgJndpZHRoLCAmaGVpZ2h0KTsKIAogICAg
IFJlZlB0cjxJbWFnZURhdGE+IGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUo
d2lkdGgsIGhlaWdodCkpOwotICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVscyA9IGltYWdlRGF0YS0+
ZGF0YSgpLT5kYXRhKCktPmRhdGEoKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMgPSBpbWFn
ZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwogICAgIHNpemVfdCBidWZmZXJTaXplID0gNCAqIHdpZHRo
ICogaGVpZ2h0OwogCiAgICAgbV9pbXBsLT5yZWFkQmFja0ZyYW1lYnVmZmVyKHBpeGVscywgYnVm
ZmVyU2l6ZSwgZnJhbWVidWZmZXJJZCwgd2lkdGgsIGhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggM2EwMTk2ZTc0MWNiYjI1MDIxNzgxZDVh
ODE4MWNjNjM5NjA5YzE2Ny4uMjBiYTEzODg1Y2FkNmJhZTRhNjZlZTZkZDNjNDBjMzMyZjAzZjU1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTU2
LDEwICsxNTYsMTAgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0j
aW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZF
TlRTKQogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCkBAIC0xNDgwLDcgKzE0ODAs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyhXZWJDYW52YXMq
IGNhbnZhcywgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIEludFJlY3QgaW52ZXJ0UmVjdChyZWN0
LngoKSwgYml0bWFwSGVpZ2h0IC0gcmVjdC5tYXhZKCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSk7CiAKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKEltYWdlQnVmZmVy
OjpjcmVhdGUocmVjdC5zaXplKCkpKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBwaXhlbEFycmF5
KEJ5dGVBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KSk7Cisg
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5KFVpbnQ4Q2xhbXBlZEFycmF5
OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KSk7
CiAgICAgaWYgKGltYWdlQnVmZmVyICYmIHBpeGVsQXJyYXkpIHsKICAgICAgICAgbV9sYXllclRy
ZWVWaWV3LmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHBpeGVsQXJyYXktPmRhdGEoKSwgaW52ZXJ0UmVj
dCk7CiAgICAgICAgIGltYWdlQnVmZmVyLT5wdXRCeXRlQXJyYXkoUHJlbXVsdGlwbGllZCwgcGl4
ZWxBcnJheS5nZXQoKSwgcmVjdC5zaXplKCksIEludFJlY3QoSW50UG9pbnQoKSwgcmVjdC5zaXpl
KCkpLCBJbnRQb2ludCgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMjRhNzVlMWEyNTdhZWU0Mzg3NDhiM2Q1OTMyN2E2
MTFmNjNlYmY5Li4xOTM0MmJiMGQ4YTlmN2E2ZTRiNDMxNzVhMjUxZTE2MTE3MDAyMDdhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQtMjMgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgorCisgICAgICAgIENoYW5nZSBJbWFnZURhdGEgdG8gcmVmZXJlbmNlIFVpbnQ4Q2xh
bXBlZEFycmF5IHJhdGhlciB0aGFuIENhbnZhc1BpeGVsQXJyYXkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9pbWFnZWRhdGEtY29u
dGFpbnMtdWludDhjbGFtcGVkYXJyYXktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy9pbWFnZWRhdGEtY29udGFpbnMtdWludDhjbGFtcGVkYXJyYXkuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3NjcmlwdC10ZXN0cy9wb3N0bWVzc2FnZS1j
bG9uZS5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNs
b25lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBl
Y3RlZC50eHQ6CisKIDIwMTItMDQtMjMgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFp
bC5jb20+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdlZGF0YS1jb250YWlucy11aW50OGNsYW1wZWRh
cnJheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9pbWFnZWRhdGEtY29u
dGFpbnMtdWludDhjbGFtcGVkYXJyYXktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOTNjMzgw
MTRlMTJmZjA4MWE4MGU1YzEwYjljY2RjMWUwZWRlOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9pbWFnZWRhdGEtY29udGFpbnMtdWludDhjbGFtcGVkYXJyYXkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgSW1hZ2VEYXRhIGNvbnRh
aW5zIGEgVWludDhDbGFtcGVkQXJyYXkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGltYWdlRGF0YS5kYXRhLmNvbnN0cnVjdG9yIGlzIFVpbnQ4Q2xhbXBlZEFycmF5CitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xh
bXBlZGFycmF5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9pbWFnZWRhdGEtY29udGFp
bnMtdWludDhjbGFtcGVkYXJyYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzAwYWUwNGUzN2QyMDI3Njg1
Yjc0MWZjYzIyZjNkYjA4YzBmNDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBlZGFycmF5Lmh0bWwKQEAgLTAs
MCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBJbWFnZURhdGEgY29udGFpbnMg
YSBVaW50OENsYW1wZWRBcnJheS4iKTsKKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOworY2FudmFzLndpZHRoID0gMTA7CitjYW52YXMuaGVpZ2h0ID0gMTA7
Cit2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworCit2YXIgaW1hZ2VEYXRh
ID0gY29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CitzaG91bGRCZSgnaW1hZ2VEYXRh
LmRhdGEuY29uc3RydWN0b3InLCAnVWludDhDbGFtcGVkQXJyYXknKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Nj
cmlwdC10ZXN0cy9wb3N0bWVzc2FnZS1jbG9uZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy9zY3JpcHQtdGVzdHMvcG9zdG1lc3NhZ2UtY2xvbmUuanMKaW5kZXggNDQzOTI1NDhjODJl
MWI4ZDM4NzcwN2E2YzgxYzU4ZjU3MTRiN2RhOC4uNTlkMjRiNGQyOTkyZTQzMjQ2ZTNhODI2Mzk2
ZmQyOGRlMjU2YzcwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Nj
cmlwdC10ZXN0cy9wb3N0bWVzc2FnZS1jbG9uZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvc2NyaXB0LXRlc3RzL3Bvc3RtZXNzYWdlLWNsb25lLmpzCkBAIC01OSw5ICs1OSw5
IEBAIHZhciBtdXRhdGVkSW1hZ2VEYXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFz
IikuZ2V0Q29udGV4dCgiMmQiKS5jcmVhdGVJCiBmb3IgKHZhciBpID0gMDsgaSA8IGltYWdlRGF0
YS5kYXRhLmxlbmd0aCAqIDQ7IGkrKykKICAgICBtdXRhdGVkSW1hZ2VEYXRhLmRhdGFbaV0gPSBp
ICUgMjU2OwogdHJ5UG9zdE1lc3NhZ2UoJ2ltYWdlRGF0YScsIGZhbHNlLCBpbWFnZURhdGEpOwot
dHJ5UG9zdE1lc3NhZ2UoJ2ltYWdlRGF0YS5kYXRhJywgdHJ1ZSwgbnVsbCwgRE9NRXhjZXB0aW9u
LkRBVEFfQ0xPTkVfRVJSKQordHJ5UG9zdE1lc3NhZ2UoJ2ltYWdlRGF0YS5kYXRhJywgZmFsc2Us
IGltYWdlRGF0YS5kYXRhKQogdHJ5UG9zdE1lc3NhZ2UoJ211dGF0ZWRJbWFnZURhdGEnLCBmYWxz
ZSwgaW1hZ2VEYXRhKTsKLXRyeVBvc3RNZXNzYWdlKCdtdXRhdGVkSW1hZ2VEYXRhLmRhdGEnLCB0
cnVlLCBudWxsLCBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIpCit0cnlQb3N0TWVzc2FnZSgn
bXV0YXRlZEltYWdlRGF0YS5kYXRhJywgZmFsc2UsIGltYWdlRGF0YS5kYXRhKQogZm9yICh2YXIg
aSA9IDA7IGkgPCBpbWFnZURhdGEuZGF0YS5sZW5ndGggKiA0OyBpKyspCiAgICAgbXV0YXRlZElt
YWdlRGF0YS5kYXRhW2ldID0gMDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dApp
bmRleCA0YWFkN2NmYjA0N2EyY2FiZGI1M2IyNzgxZDNiMDUzZjBlZDEyNDAwLi5hZGI3YWVkNTU3
NDU4YTkzYzdjYmQ4YThjNmI0OTM5YTg4MjA0NWE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4
cGVjdGVkLnR4dApAQCAtNiw4ICs2LDYgQEAgRkFJTDogJ3Bvc3RNZXNzYWdlKChmdW5jdGlvbigp
e30pKScgc2hvdWxkIHRocm93IGJ1dCBkaWRuJ3QKIEZBSUw6ICdwb3N0TWVzc2FnZSh2YXIgeCA9
IDA7IHRyeSB7IGV2YWwoImJhZHJlZiIpOyB9IGNhdGNoKGUpIHsgeCA9IGU7IH0geCknIHNob3Vs
ZCB0aHJvdyBidXQgZGlkbid0CiBQQVNTOiAncG9zdE1lc3NhZ2Uod2luZG93KScgdGhyZXcgVHlw
ZUVycm9yOiBUeXBlIGVycm9yCiBQQVNTOiAncG9zdE1lc3NhZ2UoKHtnZXQgYSgpIHsgdGhyb3cg
IngiIH19KSknIHRocmV3IHgKLUZBSUw6ICdwb3N0TWVzc2FnZShpbWFnZURhdGEuZGF0YSknIHNo
b3VsZCB0aHJvdyBidXQgZGlkbid0Ci1GQUlMOiAncG9zdE1lc3NhZ2UobXV0YXRlZEltYWdlRGF0
YS5kYXRhKScgc2hvdWxkIHRocm93IGJ1dCBkaWRuJ3QKIFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVu
Y3Rpb24oKSB7cmV0dXJuIHtnZXQgYSgpIHsgdGhyb3cgImFjY2Vzc29yLWV4biI7IH19O30pKCkp
JyB0aHJldyBhY2Nlc3Nvci1leG4KIFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVuY3Rpb24oKSB7dmFy
IG9iamEgPSB7Z2V0IHAoKSB7IHRocm93ICJhY2Nlc3Nvci1leG4iOyB9fTsgcmV0dXJuIHtnZXQg
YSgpIHsgcmV0dXJuIG9iamE7IH19O30pKCkpJyB0aHJldyBhY2Nlc3Nvci1leG4KIFBBU1M6IGxh
c3RJbmRleCBpbml0aWFsbHkgY29ycmVjdDogd2FzIDMKQEAgLTQ0LDcgKzQyLDkgQEAgUEFTUzog
ZXZlbnREYXRhIGlzID09PSB0byBldmVudERhdGFbMF0KIFBBU1M6IGV2ZW50RGF0YS5ncmFwaDEg
aXMgPT09IHRvIGV2ZW50RGF0YS5ncmFwaDIKIFBBU1M6IGV2ZW50RGF0YVswXSBpcyA9PT0gdG8g
ZXZlbnREYXRhWzFdCiBQQVNTOiBldmVudERhdGEgaXMgW29iamVjdCBJbWFnZURhdGFdIG9mIHR5
cGUgb2JqZWN0CitQQVNTOiBldmVudERhdGEgaXMgW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0g
b2YgdHlwZSBvYmplY3QKIFBBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IEltYWdlRGF0YV0gb2Yg
dHlwZSBvYmplY3QKK1BBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5
XSBvZiB0eXBlIG9iamVjdAogUEFTUzogZXZlbnREYXRhIGlzIDQyIG9mIHR5cGUgbnVtYmVyCiBQ
QVNTOiBldmVudERhdGEgaXMgNDIgb2YgdHlwZSBudW1iZXIKIFBBU1M6IGV2YWxUaHVuayBPSwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4
cGVjdGVkLnR4dAppbmRleCA3MTZkZDZkZDAxMDU3MjVmYzVjMDRmZGE3MDcxOWJmZWY1ZTU1YWIy
Li5mNjdmYWVhNDUwYWIyNzg0OGRiMjhiMDQ1MjRjOGZjNzc1Nzk2NDAzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3Rt
ZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4
dApAQCAtNCw4ICs0LDYgQEAgUEFTUzogJ3Bvc3RNZXNzYWdlKChmdW5jdGlvbigpe30pKScgdGhy
ZXcgRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDIKIFBBU1M6ICdwb3N0TWVz
c2FnZSh2YXIgeCA9IDA7IHRyeSB7IGV2YWwoImJhZHJlZiIpOyB9IGNhdGNoKGUpIHsgeCA9IGU7
IH0geCknIHRocmV3IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogUEFT
UzogJ3Bvc3RNZXNzYWdlKHdpbmRvdyknIHRocmV3IEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9N
IEV4Y2VwdGlvbiAyNQogUEFTUzogJ3Bvc3RNZXNzYWdlKCh7Z2V0IGEoKSB7IHRocm93ICJ4IiB9
fSkpJyB0aHJldyB4Ci1QQVNTOiAncG9zdE1lc3NhZ2UoaW1hZ2VEYXRhLmRhdGEpJyB0aHJldyBF
cnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKLVBBU1M6ICdwb3N0TWVzc2Fn
ZShtdXRhdGVkSW1hZ2VEYXRhLmRhdGEpJyB0aHJldyBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERP
TSBFeGNlcHRpb24gMjUKIFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVuY3Rpb24oKSB7cmV0dXJuIHtn
ZXQgYSgpIHsgdGhyb3cgImFjY2Vzc29yLWV4biI7IH19O30pKCkpJyB0aHJldyBhY2Nlc3Nvci1l
eG4KIFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVuY3Rpb24oKSB7dmFyIG9iamEgPSB7Z2V0IHAoKSB7
IHRocm93ICJhY2Nlc3Nvci1leG4iOyB9fTsgcmV0dXJuIHtnZXQgYSgpIHsgcmV0dXJuIG9iamE7
IH19O30pKCkpJyB0aHJldyBhY2Nlc3Nvci1leG4KIFBBU1M6IGxhc3RJbmRleCBpbml0aWFsbHkg
Y29ycmVjdDogd2FzIDMKQEAgLTQwLDcgKzM4LDkgQEAgUEFTUzogZXZlbnREYXRhIGlzID09PSB0
byBldmVudERhdGFbMF0KIFBBU1M6IGV2ZW50RGF0YS5ncmFwaDEgaXMgPT09IHRvIGV2ZW50RGF0
YS5ncmFwaDIKIFBBU1M6IGV2ZW50RGF0YVswXSBpcyA9PT0gdG8gZXZlbnREYXRhWzFdCiBQQVNT
OiBldmVudERhdGEgaXMgW29iamVjdCBJbWFnZURhdGFdIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBl
dmVudERhdGEgaXMgW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0gb2YgdHlwZSBvYmplY3QKIFBB
U1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IEltYWdlRGF0YV0gb2YgdHlwZSBvYmplY3QKK1BBU1M6
IGV2ZW50RGF0YSBpcyBbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSBvZiB0eXBlIG9iamVjdAog
UEFTUzogZXZlbnREYXRhIGlzIDQyIG9mIHR5cGUgbnVtYmVyCiBQQVNTOiBldmVudERhdGEgaXMg
NDIgb2YgdHlwZSBudW1iZXIKIFBBU1M6IGV2YWxUaHVuayBPSwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xv
bmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQudHh0CmluZGV4IDFkYzE1MjVmMTE5
NzkxYjAxZmMzMDUwNmZlYjFjZmFkZjI5YjY3MDUuLjExYTI0NDBiNmRmZjFmNTkyNDI5OGMxMGVk
ZjZmZTBiYWRhZjZiNDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2Fn
ZS1jbG9uZS1leHBlY3RlZC50eHQKQEAgLTM3LDE0ICszNywxNCBAQCBQQVNTOiBldmVudERhdGEg
aXMgPT09IHRvIGV2ZW50RGF0YS5zZWxmCiBQQVNTOiBldmVudERhdGEgaXMgPT09IHRvIGV2ZW50
RGF0YVswXQogUEFTUzogZXZlbnREYXRhLmdyYXBoMSBpcyA9PT0gdG8gZXZlbnREYXRhLmdyYXBo
MgogUEFTUzogZXZlbnREYXRhWzBdIGlzID09PSB0byBldmVudERhdGFbMV0KLUZBSUw6ICdwb3N0
TWVzc2FnZShpbWFnZURhdGEuZGF0YSknIHNob3VsZCB0aHJvdyBidXQgZGlkbid0Ci1GQUlMOiAn
cG9zdE1lc3NhZ2UobXV0YXRlZEltYWdlRGF0YS5kYXRhKScgc2hvdWxkIHRocm93IGJ1dCBkaWRu
J3QKIFBBU1M6ICdwb3N0TWVzc2FnZSgoZnVuY3Rpb24oKSB7cmV0dXJuIHtnZXQgYSgpIHsgdGhy
b3cgImFjY2Vzc29yLWV4biI7IH19O30pKCkpJyB0aHJldyBhY2Nlc3Nvci1leG4KIFBBU1M6ICdw
b3N0TWVzc2FnZSgoZnVuY3Rpb24oKSB7dmFyIG9iamEgPSB7Z2V0IHAoKSB7IHRocm93ICJhY2Nl
c3Nvci1leG4iOyB9fTsgcmV0dXJuIHtnZXQgYSgpIHsgcmV0dXJuIG9iamE7IH19O30pKCkpJyB0
aHJldyBhY2Nlc3Nvci1leG4KIFBBU1M6IGxhc3RJbmRleCBpbml0aWFsbHkgY29ycmVjdDogd2Fz
IDMKIFBBU1M6IHNhbml0eSBvbiBmaWxlIHJlZmVyZW5jZSBlcXVhbGl0eQogUEFTUzogZXZlbnRE
YXRhIGlzIFtvYmplY3QgSW1hZ2VEYXRhXSBvZiB0eXBlIG9iamVjdAorUEFTUzogZXZlbnREYXRh
IGlzIFtvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIG9mIHR5cGUgb2JqZWN0CiBQQVNTOiBldmVu
dERhdGEgaXMgW29iamVjdCBJbWFnZURhdGFdIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERh
dGEgaXMgW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0gb2YgdHlwZSBvYmplY3QKIFBBU1M6IGV2
ZW50RGF0YSBpcyA0MiBvZiB0eXBlIG51bWJlcgogUEFTUzogZXZlbnREYXRhIGlzIDQyIG9mIHR5
cGUgbnVtYmVyCiBQQVNTOiBldmFsVGh1bmsgT0sK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138450</attachid>
            <date>2012-04-23 16:03:06 -0700</date>
            <delta_ts>2012-04-23 20:43:50 -0700</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>bug-73011-20120423160305.patch</filename>
            <type>text/plain</type>
            <size>129622</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ3YjY1MWVlNzdhZDM4ZDVjNWE2MmVj
NzE2OGY0OTM5NTA3YWNmOGIuLjY2NDhmOWIzYjliMmE4ZDNlZGNhNzVmYzU5NzQ4NjZkMWI1ZmY0
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDQtMjMgIEtlbm5ldGggUnVzc2VsbCAgPGti
ckBnb29nbGUuY29tPgorCisgICAgICAgIENoYW5nZSBJbWFnZURhdGEgdG8gcmVmZXJlbmNlIFVp
bnQ4Q2xhbXBlZEFycmF5IHJhdGhlciB0aGFuIENhbnZhc1BpeGVsQXJyYXkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCisKKyAgICAgICAgKiB3dGYvQXJyYXlCdWZmZXIuaDoKKyAg
ICAgICAgKEFycmF5QnVmZmVyKToKKyAgICAgICAgKFdURjo6QXJyYXlCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXVEY6OkFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAg
ICAgKFdURik6CisgICAgICAgIChXVEY6OkFycmF5QnVmZmVyQ29udGVudHM6OnRyeUFsbG9jYXRl
KToKKyAgICAgICAgKiB3dGYvVHlwZWRBcnJheUJhc2UuaDoKKyAgICAgICAgKFdURjo6VHlwZWRB
cnJheUJhc2U6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoVHlwZWRBcnJheUJhc2Up
OgorICAgICAgICAqIHd0Zi9VaW50OENsYW1wZWRBcnJheS5oOgorICAgICAgICAoVWludDhDbGFt
cGVkQXJyYXkpOgorICAgICAgICAoV1RGOjpVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpVaW50OENsYW1wZWRBcnJh
eTo6emVyb0ZpbGwpOgorCiAyMDEyLTA0LTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE0OTE0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGU5YmU0NmNjOWNmYTVmNDM4YmRlOGYwNmI3MzQ4Mjg2NTdlYjk5Y2Yu
LmJkMzkxYWEzOWM3YTlkNjlhYmYwNjFmOWY3MjZjMjNmZTY0MTJjODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNzkgQEAKKzIwMTItMDQtMjMgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIENoYW5nZSBJbWFnZURhdGEgdG8gcmVmZXJlbmNlIFVpbnQ4Q2xhbXBl
ZEFycmF5IHJhdGhlciB0aGFuIENhbnZhc1BpeGVsQXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
T2xpdmVyIEh1bnQuCisKKyAgICAgICAgQ2hhbmdlZCBJbWFnZURhdGEgdG8gY29udGFpbiBVaW50
OENsYW1wZWRBcnJheSBpbnN0ZWFkIG9mIEJ5dGVBcnJheQorICAgICAgICBwZXIgY3VycmVudCBI
VE1MNSBzcGVjLgorCisgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIGludHJvZHVjaW5nIGxhcmdl
IGRhdGEgY29waWVzLCBpdCB3YXMgbmVjZXNzYXJ5IHRvCisgICAgICAgIHN3aXRjaCBhIGZldyBv
dGhlciBwbGFjZXMgaW4gV2ViS2l0IHRvIHVzZSBVaW50OENsYW1wZWRBcnJheSBhdCB0aGUKKyAg
ICAgICAgc2FtZSB0aW1lLCBtb3N0IG5vdGFibHkgdGhlIEZpbHRlckVmZmVjdCBpbXBsZW1lbnRh
dGlvbiwgcG9ydGlvbnMgb2YKKyAgICAgICAgSW1hZ2VCdWZmZXIsIGFuZCBhIGNvdXBsZSBvZiBw
bGFjZXMgaW4gdGhlIGltYWdlIGVuY29kZXJzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgY2hh
bmdlIGluIG1ldGhvZCBuYW1lIGZyb20gImdldCIgdG8gIml0ZW0iIG9jY3VycmVkCisgICAgICAg
IGJlY2F1c2UgSlNDJ3MgYXV0b2dlbmVyYXRlZCBpbmRleGVkIGdldHRlcnMgcmVmZXJlbmNlIGEg
bWV0aG9kCisgICAgICAgIGNhbGxlZCAiaXRlbSIuIElmIGRlc2lyZWQsIGEgY29udmVuaWVuY2Ug
bWV0aG9kIGNvdWxkIGJlCisgICAgICAgIGludHJvZHVjZWQgdG8gYXZvaWQgdGhlIHJlbmFtaW5n
cyBpbiB0aGUgRmlsdGVyRWZmZWN0IGNsYXNzZXMuCisKKyAgICAgICAgV2l0aCB0aGVzZSBjaGFu
Z2VzLCBCeXRlQXJyYXkgYW5kIHNvbWUgY3VzdG9tIGNvZGUgaW4gSmF2YVNjcmlwdENvcmUKKyAg
ICAgICAgYWN0dWFsbHkgYmVjb21lIHVucmVmZXJlbmNlZCwgYW5kIGNhbiBiZSBkZWxldGVkLiBU
aGlzIGRlbGV0aW9uIHdpbGwKKyAgICAgICAgYmUgZG9uZSBzZXBhcmF0ZWx5IGluIEJ1ZyA4MzY1
NSwgdG8ga2VlcCB0aGUgc2l6ZSBvZiB0aGlzIHBhdGNoCisgICAgICAgIG1hbmFnZWFibGUuCisK
KyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBl
ZGFycmF5Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpy
ZWFkVGVybWluYWwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9waXht
YXBydW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlF0UGl4bWFwVG9JbWFnZURh
dGFNZXRob2Q6Omludm9rZSk6CisgICAgICAgICogaHRtbC9JbWFnZURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
YXRhOjpJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmg6CisgICAgICAgIChJ
bWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhKToKKyAgICAgICAg
KiBodG1sL0ltYWdlRGF0YS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVtcHR5SW1hZ2VEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0SW1h
Z2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdEltYWdlRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0
YVRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaDoKKyAgICAgICAgKEltYWdl
QnVmZmVyRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmVmZmVjdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xv
ck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNldERlc3RpbmF0aW9uUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVN
YXRyaXg6OmZhc3RTZXRJbnRlcmlvclBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZv
bHZlTWF0cml4OjpmYXN0U2V0T3V0ZXJQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252
b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAgICAgKFBhaW50aW5nRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1
ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0
ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChGRUN1c3RvbUZpbHRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpib3hCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5C
bHVyOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFu
Qmx1cjo6cGxhdGZvcm1BcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgIChQbGF0Zm9ybUFwcGx5UGFyYW1ldGVycyk6
CisgICAgICAgIChGRUdhdXNzaWFuQmx1cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6Okxp
Z2h0aW5nRGF0YTo6dG9wTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpMaWdo
dGluZ0RhdGE6OnRvcFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpMaWdodGlu
Z0RhdGE6OnRvcFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5n
RGF0YTo6bGVmdENvbHVtbik6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpMaWdodGlu
Z0RhdGE6OmludGVyaW9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0aW5n
RGF0YTo6cmlnaHRDb2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6TGlnaHRp
bmdEYXRhOjpib3R0b21MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0
aW5nRGF0YTo6Ym90dG9tUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OkxpZ2h0
aW5nRGF0YTo6Ym90dG9tUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6aW5s
aW5lU2V0UGl4ZWwpOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAg
ICAgIChMaWdodGluZ0RhdGEpOgorICAgICAgICAoRkVMaWdodGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyk6CisgICAgICAgIChXZWJDb3Jl
OjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKFBhaW50aW5nRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oOgorICAgICAgICAoRmls
bFJlZ2lvblBhcmFtZXRlcnMpOgorICAgICAgICAoRkVUdXJidWxlbmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OmZvcmNlVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXNVbm11bHRpcGxpZWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFzUHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6Cisg
ICAgICAgIChGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvYXJtL0ZFR2F1c3NpYW5CbHVyTkVPTi5oOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lh
bkJsdXI6OnBsYXRmb3JtQXBwbHlOZW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpwdXRCeXRlQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEv
SW1hZ2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1h
Z2VCdWZmZXJXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0
aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRQcmVt
dWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRC
eXRlQXJyYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3NraWEvSlBFR0lt
YWdlRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VFbmNvZGVyOjplbmNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3NraWEvUE5HSW1hZ2VFbmNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRW5jb2Rlcjo6ZW5jb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL1dFQlBJbWFnZUVuY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRW5jb2Rlcjo6ZW5jb2RlKToKKwogMjAxMi0w
NC0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwOTk4MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggZWQ4ZGE2YTk1MzM2MGVlYmU4OTE2Y2Q5MWZhNWZjZTA5YjU4NjdlMS4uNjY1ZmQz
MDkyZTIyZjE3ZDg4MWQ4OGY5ZDZhYmE3OWE2YTQ0NmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0yMyAgS2VubmV0aCBSdXNzZWxsICA8a2Jy
QGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEltYWdlRGF0YSB0byByZWZlcmVuY2UgVWlu
dDhDbGFtcGVkQXJyYXkgcmF0aGVyIHRoYW4gQ2FudmFzUGl4ZWxBcnJheQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBPbGl2ZXIgSHVudC4KKworICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAqIHNyYy9XZWJWaWV3
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkb1BpeGVsUmVhZGJhY2tU
b0NhbnZhcyk6CisKIDIwMTItMDQtMjMgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQ2hyb21pdW0gcm9sbCAxMzM0MjI6MTMzNTA2LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0FycmF5QnVmZmVy
LmgKaW5kZXggMzI1N2RmM2QwZjFiMzQ5YmFhMDViNmI1OGMxNTVmMWI1ZWZlZTlhZi4uZDJjNzI0
OTc4YjJkNDRlY2VlYWMxZmFjNDJiMmM4MzNjYjIwYTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BcnJheUJ1ZmZlci5oCkBA
IC01Nyw3ICs1NywxMiBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIEFycmF5QnVmZmVy
OwogCi0gICAgc3RhdGljIGlubGluZSB2b2lkIHRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1l
bnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUsIEFycmF5QnVmZmVyQ29udGVudHMmKTsKKyAg
ICBlbnVtIEluaXRpYWxpemF0aW9uUG9saWN5IHsKKyAgICAgICAgWmVyb0luaXRpYWxpemUsCisg
ICAgICAgIERvbnRJbml0aWFsaXplCisgICAgfTsKKworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCB0
cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
LCBJbml0aWFsaXphdGlvblBvbGljeSwgQXJyYXlCdWZmZXJDb250ZW50cyYpOwogICAgIHZvaWQg
dHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYgb3RoZXIpCiAgICAgewogICAgICAgICBBU1NF
UlQoIW90aGVyLm1fZGF0YSk7CkBAIC03OCw2ICs4Myw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
aW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2Us
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwogICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmKTsKIAorICAgIC8vIE9ubHkgZm9y
IHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZC4KKyAgICBzdGF0
aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CisKICAgICBpbmxp
bmUgdm9pZCogZGF0YSgpOwogICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7CiAg
ICAgaW5saW5lIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKQEAgLTk0LDYgKzEwMiw4IEBA
IHB1YmxpYzoKICAgICB+QXJyYXlCdWZmZXIoKSB7IH0KIAogcHJpdmF0ZToKKyAgICBzdGF0aWMg
aW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFs
aXphdGlvblBvbGljeSk7CisKICAgICBpbmxpbmUgQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250
ZW50cyYpOwogICAgIGlubGluZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZUltcGwodW5z
aWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAgICAgaW5saW5lIHVuc2lnbmVkIGNs
YW1wSW5kZXgoaW50IGluZGV4KSBjb25zdDsKQEAgLTExNSwxMSArMTI1LDcgQEAgaW50IEFycmF5
QnVmZmVyOjpjbGFtcFZhbHVlKGludCB4LCBpbnQgbGVmdCwgaW50IHJpZ2h0KQogCiBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRz
LCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCiB7Ci0gICAgQXJyYXlCdWZmZXJDb250ZW50cyBj
b250ZW50czsKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShudW1FbGVtZW50
cywgZWxlbWVudEJ5dGVTaXplLCBjb250ZW50cyk7Ci0gICAgaWYgKCFjb250ZW50cy5tX2RhdGEp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXlCdWZmZXIo
Y29udGVudHMpKTsKKyAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNp
emUsIEFycmF5QnVmZmVyQ29udGVudHM6Olplcm9Jbml0aWFsaXplKTsKIH0KIAogUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShBcnJheUJ1ZmZlciogb3RoZXIpCkBA
IC0xMzAsNyArMTM2LDcgQEAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShBcnJheUJ1ZmZlciogb3RoZXIpCiBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsK
ICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGNvbnRlbnRzOwotICAgIEFycmF5QnVmZmVyQ29udGVu
dHM6OnRyeUFsbG9jYXRlKGJ5dGVMZW5ndGgsIDEsIGNvbnRlbnRzKTsKKyAgICBBcnJheUJ1ZmZl
ckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShieXRlTGVuZ3RoLCAxLCBBcnJheUJ1ZmZlckNvbnRlbnRz
OjpaZXJvSW5pdGlhbGl6ZSwgY29udGVudHMpOwogICAgIGlmICghY29udGVudHMubV9kYXRhKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGFkb3B0
UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50cykpOwpAQCAtMTQzLDYgKzE0OSwyMCBAQCBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyQ29udGVu
dHMmIGNvbnRlbnRzKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXJyYXlCdWZmZXIoY29udGVu
dHMpKTsKIH0KIAorUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6
ZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUsIEFy
cmF5QnVmZmVyQ29udGVudHM6OkRvbnRJbml0aWFsaXplKTsKK30KKworUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSBwb2xpY3kpCit7CisgICAgQXJyYXlCdWZmZXJDb250ZW50cyBjb250ZW50czsKKyAgICBB
cnJheUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVT
aXplLCBwb2xpY3ksIGNvbnRlbnRzKTsKKyAgICBpZiAoIWNvbnRlbnRzLm1fZGF0YSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcnJheUJ1ZmZlcihjb250ZW50
cykpOworfQorCiBBcnJheUJ1ZmZlcjo6QXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYg
Y29udGVudHMpCiAgICAgOiBtX2ZpcnN0VmlldygwKQogewpAQCAtMTg4LDcgKzIwOCw3IEBAIHVu
c2lnbmVkIEFycmF5QnVmZmVyOjpjbGFtcEluZGV4KGludCBpbmRleCkgY29uc3QKICAgICByZXR1
cm4gY2xhbXBWYWx1ZShpbmRleCwgMCwgY3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgQXJyYXlC
dWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50cyYgcmVzdWx0KQordm9pZCBBcnJh
eUJ1ZmZlckNvbnRlbnRzOjp0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplLCBBcnJheUJ1ZmZlckNvbnRlbnRzOjpJbml0aWFsaXphdGlvblBv
bGljeSBwb2xpY3ksIEFycmF5QnVmZmVyQ29udGVudHMmIHJlc3VsdCkKIHsKICAgICAvLyBEbyBu
b3QgYWxsb3cgMzItYml0IG92ZXJmbG93IG9mIHRoZSB0b3RhbCBzaXplLgogICAgIC8vIEZJWE1F
OiBXaHkgbm90PyBUaGUgdHJ5RmFzdENhbGxvYyBmdW5jdGlvbiBhbHJlYWR5IGNoZWNrcyBpdHMg
YXJndW1lbnRzLApAQCAtMjAxLDcgKzIyMSwxNSBAQCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChXVEY6OnRyeUZh
c3RDYWxsb2MobnVtRWxlbWVudHMsIGVsZW1lbnRCeXRlU2l6ZSkuZ2V0VmFsdWUocmVzdWx0Lm1f
ZGF0YSkpIHsKKyAgICBib29sIGFsbG9jYXRpb25TdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBpZiAo
cG9saWN5ID09IFplcm9Jbml0aWFsaXplKQorICAgICAgICBhbGxvY2F0aW9uU3VjY2VlZGVkID0g
V1RGOjp0cnlGYXN0Q2FsbG9jKG51bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpLmdldFZhbHVl
KHJlc3VsdC5tX2RhdGEpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQocG9saWN5ID09IERv
bnRJbml0aWFsaXplKTsKKyAgICAgICAgYWxsb2NhdGlvblN1Y2NlZWRlZCA9IFdURjo6dHJ5RmFz
dE1hbGxvYyhudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZSkuZ2V0VmFsdWUocmVzdWx0Lm1f
ZGF0YSk7CisgICAgfQorCisgICAgaWYgKGFsbG9jYXRpb25TdWNjZWVkZWQpIHsKICAgICAgICAg
cmVzdWx0Lm1fc2l6ZUluQnl0ZXMgPSBudW1FbGVtZW50cyAqIGVsZW1lbnRCeXRlU2l6ZTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJy
YXlCYXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9UeXBlZEFycmF5QmFzZS5oCmluZGV4IDdmOTg5MTk4
YTc2ZDMyNTM3YzgwNGRlZjNmNjZkMDVlYjJjYTI3Y2QuLjVlYzdhMTk4YTFkNmM4ZmY1NmRiNDNm
ZTFmZjczNGM2ODFlZWI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1R5cGVkQXJyYXlC
YXNlLmgKKysrIGIvU291cmNlL1dURi93dGYvVHlwZWRBcnJheUJhc2UuaApAQCAtMTA0LDYgKzEw
NCwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNz
PgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBzaXplb2YoVCkpOwor
ICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIsIDAsIGxlbmd0aCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgogICAgIFBhc3NSZWZQdHI8U3ViY2xhc3M+IHN1
YmFycmF5SW1wbChpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNp
Z25lZCBvZmZzZXQsIGxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4Q2xh
bXBlZEFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VaW50OENsYW1wZWRBcnJheS5oCmluZGV4IDcx
OGIyNjA0MGIxYzgxNjhhNDk3OTk5MTU0YzJjMjJiZWEwY2NkNGYuLmQ5ZjgyNDkwYWM1NGU3Njhk
N2NmMTljMzBmMjJjYmNjZjFmOTFlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VpbnQ4
Q2xhbXBlZEFycmF5LmgKKysrIGIvU291cmNlL1dURi93dGYvVWludDhDbGFtcGVkQXJyYXkuaApA
QCAtMzgsNiArMzgsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFycmF5LCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpOwogCisgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgV2Vi
Q29yZS1pbnRlcm5hbCB1c2UgKGxpa2UgZmlsdGVycyBhbmQKKyAgICAvLyBnZXRJbWFnZURhdGEp
IHdoZW4gaXQgaXMga25vd24gdGhlIGVudGlyZSBhcnJheSB3aWxsIGJlIGZpbGxlZC4KKyAgICAv
LyBEbyBub3QgcmV0dXJuIHRoZXNlIHJlc3VsdHMgZGlyZWN0bHkgdG8gSmF2YVNjcmlwdC4KKyAg
ICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIEl0J3Mgb25seSBuZWVkZWQgdG8g
cG90ZW50aWFsbHkgY2FsbCB0aGlzIG1ldGhvZCBpZiB0aGUgYXJyYXkKKyAgICAvLyB3YXMgY3Jl
YXRlZCB1bmluaXRpYWxpemVkIC0tIHRoZSBkZWZhdWx0IGluaXRpYWxpemF0aW9uIHBhdGhzCisg
ICAgLy8gemVybyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KKyAgICBpbmxpbmUgdm9pZCB6ZXJvRmls
bCgpOworCiAgICAgLy8gQ2Fu4oCZdCB1c2UgInVzaW5nIiBoZXJlIGR1ZSB0byBhIGJ1ZyBpbiB0
aGUgUlZDVCBjb21waWxlci4KICAgICBib29sIHNldChUeXBlZEFycmF5QmFzZTx1bnNpZ25lZCBj
aGFyPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkgeyByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5z
aWduZWQgY2hhcj46OnNldChhcnJheSwgb2Zmc2V0KTsgfQogICAgIGlubGluZSB2b2lkIHNldCh1
bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKTsKQEAgLTcxLDYgKzgxLDE2IEBAIFBhc3NSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4KICAgICByZXR1cm4gVHlwZWRBcnJheUJhc2U8dW5zaWduZWQgY2hhcj46
OmNyZWF0ZTxVaW50OENsYW1wZWRBcnJheT4oYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOwog
fQogCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBVaW50OENsYW1wZWRBcnJheTo6Y3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFR5cGVkQXJy
YXlCYXNlPHVuc2lnbmVkIGNoYXI+OjpjcmVhdGVVbmluaXRpYWxpemVkPFVpbnQ4Q2xhbXBlZEFy
cmF5PihsZW5ndGgpOworfQorCit2b2lkIFVpbnQ4Q2xhbXBlZEFycmF5Ojp6ZXJvRmlsbCgpCit7
CisgICAgemVyb1JhbmdlKDAsIGxlbmd0aCgpKTsKK30KKwogdm9pZCBVaW50OENsYW1wZWRBcnJh
eTo6c2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgdmFsdWUpCiB7CiAgICAgaWYgKGluZGV4ID49
IG1fbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZURhdGFD
dXN0b20uY3BwCmluZGV4IGQyY2E0NzZjNzNkYTgzYTBlNWY4Y2M0ZjcxMjA0YWRhYTA3ODYzY2Eu
LmQ5ZDY5NGVjN2JlMDJkOWI3YjU2NzU3ZjJkYTdlNzY1ZTM2NjFiZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlRGF0YUN1c3RvbS5jcHAKQEAgLTI1LDExICsy
NSwxMSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNJbWFnZURhdGEuaCIK
KyNpbmNsdWRlICJKU1VpbnQ4Q2xhbXBlZEFycmF5LmgiCiAKICNpbmNsdWRlICJJbWFnZURhdGEu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi0jaW5jbHVkZSA8cnVudGltZS9KU0J5
dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKQEAgLTQ3LDEwICs0Nyw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEltYWdlRGF0YSogaW1hZ2VECiAgICAg
CiAgICAgd3JhcHBlciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIElt
YWdlRGF0YSwgaW1hZ2VEYXRhKTsKICAgICBJZGVudGlmaWVyIGRhdGFOYW1lKGV4ZWMsICJkYXRh
Iik7Ci0gICAgU3RydWN0dXJlKiBjcGFTdHJ1Y3R1cmUgPSBnZXRDYWNoZWRET01TdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LCAmSlNCeXRlQXJyYXk6OnNfaW5mbyk7Ci0gICAgaWYgKCFjcGFTdHJ1Y3R1
cmUpCi0gICAgICAgIGNwYVN0cnVjdHVyZSA9IGNhY2hlRE9NU3RydWN0dXJlKGdsb2JhbE9iamVj
dCwgSlNCeXRlQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdCwganNOdWxsKCksICZKU0J5dGVBcnJheTo6c19pbmZvKSwgJkpTQnl0ZUFycmF5Ojpz
X2luZm8pOwotICAgIHdyYXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGRhdGFO
YW1lLCBKU0J5dGVBcnJheTo6Y3JlYXRlKGV4ZWMsIGNwYVN0cnVjdHVyZSwgaW1hZ2VEYXRhLT5k
YXRhKCktPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgd3JhcHBlci0+cHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0YU5hbWUsIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbWFnZURhdGEtPmRhdGEoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgZXhl
Yy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1hZ2VEYXRhLT5kYXRhKCktPmxlbmd0
aCgpKTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDVkMmQ1MWRkY2E0
ZmRhNWE4ZjMxOWVmMDhlNmRlMzI4ZThiYmVlMjIuLjdjNzE2YzBiYTFlMmY5MWJmNTA2MTJlODM5
ZGU0ZWJlZjNmNDQyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNjMsOCArNjMsOCBAQAogI2luY2x1ZGUgPHJ1
bnRpbWUvUmVnRXhwLmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHBPYmplY3QuaD4KICNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC02
MDksNyArNjA5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT53aWR0
aCgpKTsKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5oZWlnaHQoKSk7CiAgICAgICAgICAg
ICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgd3Jp
dGUoZGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEoKSwgZGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7
CisgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgpLT5kYXRhKCksIGRhdGEtPmRhdGEo
KS0+bGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHMoJlJlZ0V4cE9iamVjdDo6c19pbmZvKSkg
ewpAQCAtMTQzMCw3ICsxNDMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4g
anNOdWxsKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBy
ZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICAg
ICAgICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCksIG1fcHRyLCBsZW5n
dGgpOworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSgpLT5kYXRhKCksIG1fcHRyLCBs
ZW5ndGgpOwogICAgICAgICAgICAgbV9wdHIgKz0gbGVuZ3RoOwogICAgICAgICAgICAgcmV0dXJu
IGdldEpTVmFsdWUocmVzdWx0LmdldCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZjYwZDM2
NmE4N2Y2YTFkMTJiNTk0NDg5OWY3OTY2MjEzNTIwZWExYS4uMzk0NjE3YzBhOWZiODdjOGIwYjQw
NmJmMDViZGI3MTdmOTA3MTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVk
ZSA8d3RmL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgog
I2luY2x1ZGUgIkJsb2IuaCIKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSAi
Q2FudmFzUGl4ZWxBcnJheS5oIgogI2luY2x1ZGUgIkRhdGFWaWV3LmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgpAQCAtMTAwNiw3ICsxMDA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW1h
Z2VEYXRhKiBpbWFnZURhdGEgPSBWOEltYWdlRGF0YTo6dG9OYXRpdmUodmFsdWUuQXM8djg6Ok9i
amVjdD4oKSk7CiAgICAgICAgIGlmICghaW1hZ2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBXVEY6OkJ5dGVBcnJheSogcGl4ZWxBcnJheSA9IGltYWdlRGF0YS0+ZGF0YSgpLT5k
YXRhKCk7CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFycmF5ID0gaW1hZ2VEYXRh
LT5kYXRhKCk7CiAgICAgICAgIG1fd3JpdGVyLndyaXRlSW1hZ2VEYXRhKGltYWdlRGF0YS0+d2lk
dGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwgcGl4ZWxBcnJheS0+ZGF0YSgpLCBwaXhlbEFycmF5
LT5sZW5ndGgoKSk7CiAgICAgfQogCkBAIC0xNTgyLDcgKzE1ODEsNyBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAobV9wb3NpdGlvbiArIHBpeGVsRGF0YUxlbmd0aCA+IG1fbGVuZ3RoKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEg
PSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICAgICAgV1RG
OjpCeXRlQXJyYXkqIHBpeGVsQXJyYXkgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOworICAg
ICAgICBVaW50OENsYW1wZWRBcnJheSogcGl4ZWxBcnJheSA9IGltYWdlRGF0YS0+ZGF0YSgpOwog
ICAgICAgICBBU1NFUlQocGl4ZWxBcnJheSk7CiAgICAgICAgIEFTU0VSVChwaXhlbEFycmF5LT5s
ZW5ndGgoKSA+PSBwaXhlbERhdGFMZW5ndGgpOwogICAgICAgICBtZW1jcHkocGl4ZWxBcnJheS0+
ZGF0YSgpLCBtX2J1ZmZlciArIG1fcG9zaXRpb24sIHBpeGVsRGF0YUxlbmd0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9t
LmNwcAppbmRleCAyMjUxYjdkMjlhMmJlYzkxY2JiYmQ4NTE5MmExZDkyODhkNDZmMjBjLi5jY2Ri
ODZlMjExYTRlMmY5MzVjNzlmODNhOTkyODkxY2VjMjFiOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1c3RvbS5jcHAKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOEltYWdlRGF0
YS5oIgogCi0jaW5jbHVkZSAiVjhDYW52YXNQaXhlbEFycmF5LmgiCisjaW5jbHVkZSAiVjhVaW50
OENsYW1wZWRBcnJheS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzQxLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSW1hZ2VEYXRhKiBpbXBsLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gVjhJbWFnZURhdGE6OndyYXAoaW1wbCk7CiAgICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkgewotICAgICAgICAvLyBDcmVhdGUgYSBWOCBDYW52YXNQaXhlbEFy
cmF5IG9iamVjdC4KKyAgICAgICAgLy8gQ3JlYXRlIGEgVjggVWludDhDbGFtcGVkQXJyYXkgb2Jq
ZWN0LgogICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGl4ZWxBcnJheSA9IHRvVjgoaW1w
bC0+ZGF0YSgpLCBpc29sYXRlKTsKICAgICAgICAgLy8gU2V0IHRoZSAiZGF0YSIgcHJvcGVydHkg
b2YgdGhlIEltYWdlRGF0YSBvYmplY3QgdG8KICAgICAgICAgLy8gdGhlIGNyZWF0ZWQgdjggb2Jq
ZWN0LCBlbGltaW5hdGluZyB0aGUgQysrIGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKaW5kZXggOWMxY2RhZDAyM2M4YjE0ZTA5OWEzYTEz
OWM3OGViOWUyMTdkZTExNC4uN2U4ZDdhNWI3ZjY5NzlkYmE0M2EyMGNlZGJjZmRiNjM1NmIwYzBl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcApA
QCAtOTIsOSArOTIsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpbnQgd2lkdGggPSBpbnN0
YW5jZS0+d2lkdGgoKTsKICAgICAgICAgaW50IGhlaWdodCA9IGluc3RhbmNlLT5oZWlnaHQoKTsK
LSAgICAgICAgUmVmUHRyPEJ5dGVBcnJheT4gYnl0ZUFycmF5ID0gQnl0ZUFycmF5OjpjcmVhdGUo
d2lkdGggKiBoZWlnaHQgKiA0KTsKLSAgICAgICAgY29weVBpeGVscyhpbnN0YW5jZS0+dG9JbWFn
ZSgpLCB3aWR0aCwgaGVpZ2h0LCBieXRlQXJyYXktPmRhdGEoKSk7Ci0gICAgICAgIFJlZlB0cjxJ
bWFnZURhdGE+IGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhl
aWdodCksIGJ5dGVBcnJheSk7CisgICAgICAgIFJlZlB0cjxJbWFnZURhdGE+IGltYWdlRGF0YSA9
IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCkpOworICAgICAgICBjb3B5
UGl4ZWxzKGluc3RhbmNlLT50b0ltYWdlKCksIHdpZHRoLCBoZWlnaHQsIGltYWdlRGF0YS0+ZGF0
YSgpLT5kYXRhKCkpOwogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBzdGF0aWNfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGltYWdlRGF0YS5n
ZXQoKSk7CiAgICAgfQogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAppbmRleCBh
ZDI0MTM2NjMzZWNjZTQyODNmMWNkYzdmNjQ3ZTViNzg1ODk3NWQzLi45MDE1ODI3MmU1OTUxZDE3
OTUxYzZhNTU2ZDIzOGVmYWQ4NmM2NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCkBA
IC0zMywyNCArMzMsNDEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPEltYWdl
RGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKKyAgICBDaGVj
a2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFTaXplID0gNDsKKyAgICBkYXRhU2l6ZSAqPSBz
aXplLndpZHRoKCk7CisgICAgZGF0YVNpemUgKj0gc2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAoZGF0
YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSW1hZ2VEYXRhKHNpemUpKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZURhdGE+
IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFBhc3NSZWZQdHI8Qnl0ZUFy
cmF5PiBieXRlQXJyYXkpCitQYXNzUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYnl0ZUFy
cmF5KQogeworICAgIENoZWNrZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gZGF0YVNpemUgPSA0Owor
ICAgIGRhdGFTaXplICo9IHNpemUud2lkdGgoKTsKKyAgICBkYXRhU2l6ZSAqPSBzaXplLmhlaWdo
dCgpOworICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgaWYgKGRhdGFTaXplLnVuc2FmZUdldCgpIDwgMAorICAgICAgICB8fCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGF0YVNpemUudW5zYWZlR2V0KCkpID4gYnl0ZUFycmF5LT5sZW5ndGgo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRGF0
YShzaXplLCBieXRlQXJyYXkpKTsKIH0KIAogSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9kYXRhKENhbnZhc1BpeGVs
QXJyYXk6OmNyZWF0ZShzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNCkpCisgICAgLCBt
X2RhdGEoVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZS53aWR0aCgp
ICogc2l6ZS5oZWlnaHQoKSAqIDQpKQogewogfQogCi1JbWFnZURhdGE6OkltYWdlRGF0YShjb25z
dCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gYnl0ZUFycmF5KQorSW1hZ2VE
YXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gYnl0ZUFycmF5KQogICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2RhdGEoQ2Fu
dmFzUGl4ZWxBcnJheTo6Y3JlYXRlKGJ5dGVBcnJheSkpCisgICAgLCBtX2RhdGEoYnl0ZUFycmF5
KQogeworICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZS53aWR0aCgpICogc2l6
ZS5oZWlnaHQoKSAqIDQpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURhdGEuaAppbmRleCAzNWQwOGU3MWQyODQ0ZjI1YWE2MTlhMzg5M2U0ZDJjMmExMzBiMmNj
Li43NjE2ODcwNjNhNTVlNTQ1ZmJjZGRjNjhmYjA4OTJmNDllNDljYTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmgKQEAgLTI5LDMwICsyOSwyOSBAQAogI2lmbmRlZiBJbWFnZURhdGFfaAogI2Rl
ZmluZSBJbWFnZURhdGFfaAogCi0jaW5jbHVkZSAiQ2FudmFzUGl4ZWxBcnJheS5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBQYXNzUmVmUHRy
PEJ5dGVBcnJheT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNv
bnN0IEludFNpemUmLCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5Pik7CiAKICAgICBJbnRT
aXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBpbnQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KLSAgICBDYW52YXNQaXhlbEFycmF5KiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBJbWFnZURh
dGEoY29uc3QgSW50U2l6ZSYpOwotICAgIEltYWdlRGF0YShjb25zdCBJbnRTaXplJiwgUGFzc1Jl
ZlB0cjxCeXRlQXJyYXk+KTsKKyAgICBJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYsIFBhc3NSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+KTsKIAogICAgIEludFNpemUgbV9zaXplOwotICAgIFJlZlB0
cjxDYW52YXNQaXhlbEFycmF5PiBtX2RhdGE7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RGF0YS5pZGwKaW5kZXggYzg1OTQ1NDE3NGMzN2M1MThiMGFhMDZiOTcyNTg1ZjE0N2Y2ZjZjNy4u
ZjJlYTBjYTZiNzM2YzI5YTkzMjdiY2RlYzg0ZTVjYTcyYjkwMWJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmlkbApAQCAtMzQsNyArMzQsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIHdpZHRoOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBoZWlnaHQ7CiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgfHwgIUxBTkdV
QUdFX0pBVkFTQ1JJUFQKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENhbnZhc1BpeGVsQXJy
YXkgZGF0YTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVpbnQ4Q2xhbXBlZEFycmF5IGRh
dGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA5MmE2ZTllNjcwOTM0NDhj
Y2YzYmZjNjdmZmQzNGRmMzQ0YWI5YzNmLi42NTUxMGViZWExNThlMmY4MDlmMDgzZGU2OTMxYTQ4
Y2Q5NzRiZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTYyLDEwICs2MiwxNCBAQAogI2luY2x1ZGUg
IlRleHRNZXRyaWNzLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogCi0jaW5jbHVkZSA8d3RmL0J5
dGVBcnJheS5oPgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgorI2VuZGlmCisKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVW51c2Vk
UGFyYW0uaD4KIAogI2lmIFVTRShDRykKQEAgLTE3NDAsNyArMTc0NCw3IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlRW1wdHlJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBkYXRhID0gSW1h
Z2VEYXRhOjpjcmVhdGUoc2l6ZSk7Ci0gICAgbWVtc2V0KGRhdGEtPmRhdGEoKS0+ZGF0YSgpLT5k
YXRhKCksIDAsIGRhdGEtPmRhdGEoKS0+ZGF0YSgpLT5sZW5ndGgoKSk7CisgICAgZGF0YS0+ZGF0
YSgpLT56ZXJvRmlsbCgpOwogICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsKIH0KIApAQCAtMTgy
OSw3ICsxODMzLDcgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6Z2V0SW1hZ2VEYXRhKEltYWdlQnVmZmVyOjpDb29yZGkKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YVJlY3Quc2l6ZSgp
KTsKIAotICAgIFJlZlB0cjxCeXRlQXJyYXk+IGJ5dGVBcnJheSA9IGJ1ZmZlci0+Z2V0VW5tdWx0
aXBsaWVkSW1hZ2VEYXRhKGltYWdlRGF0YVJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0pOworICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYnl0ZUFycmF5ID0gYnVmZmVyLT5nZXRVbm11bHRpcGxp
ZWRJbWFnZURhdGEoaW1hZ2VEYXRhUmVjdCwgY29vcmRpbmF0ZVN5c3RlbSk7CiAgICAgaWYgKCFi
eXRlQXJyYXkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xOTAyLDcgKzE5MDYsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSogZGF0YSwg
SW1hZ2VCdWZmZXI6OkNvb3JkaQogICAgIEludFJlY3Qgc291cmNlUmVjdChkZXN0UmVjdCk7CiAg
ICAgc291cmNlUmVjdC5tb3ZlKC1kZXN0T2Zmc2V0KTsKIAotICAgIGJ1ZmZlci0+cHV0Qnl0ZUFy
cmF5KFVubXVsdGlwbGllZCwgZGF0YS0+ZGF0YSgpLT5kYXRhKCksIEludFNpemUoZGF0YS0+d2lk
dGgoKSwgZGF0YS0+aGVpZ2h0KCkpLCBzb3VyY2VSZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0KSwg
Y29vcmRpbmF0ZVN5c3RlbSk7CisgICAgYnVmZmVyLT5wdXRCeXRlQXJyYXkoVW5tdWx0aXBsaWVk
LCBkYXRhLT5kYXRhKCksIEludFNpemUoZGF0YS0+d2lkdGgoKSwgZGF0YS0+aGVpZ2h0KCkpLCBz
b3VyY2VSZWN0LCBJbnRQb2ludChkZXN0T2Zmc2V0KSwgY29vcmRpbmF0ZVN5c3RlbSk7CiAKICAg
ICBpZiAoY29vcmRpbmF0ZVN5c3RlbSA9PSBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRp
bmF0ZVN5c3RlbSkgewogICAgICAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gZGVzdFJlY3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAKaW5kZXggMDNiYmQwMzYyYjEyZmYwOGI2M2YwYWY4NDQzYTc4ZTI4OWE4ZDMyOC4u
YTI4MmU4MDI3M2UzYjQ1ZmVkNTFlOTc2YzRlOGI0ZDdiYjkyOTdmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApA
QCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RJbWFnZURh
dGEoSW1hZ2VEYXRhKiBpbWFnZURhdGEsCiAgICAgaW50IGhlaWdodCA9IGltYWdlRGF0YS0+aGVp
Z2h0KCk7CiAgICAgaW50IGRhdGFCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKICAgICBkYXRh
LnJlc2l6ZShkYXRhQnl0ZXMpOwotICAgIGlmICghcGFja1BpeGVscyhpbWFnZURhdGEtPmRhdGEo
KS0+ZGF0YSgpLT5kYXRhKCksCisgICAgaWYgKCFwYWNrUGl4ZWxzKGltYWdlRGF0YS0+ZGF0YSgp
LT5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZvcm1hdFJHQkE4LAogICAgICAg
ICAgICAgICAgICAgICB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGU0
YTlmZDg1NzRmMGI0N2U2NmNlOGI1NTZjM2I1YWUzNzA4Mjk1MjguLmJjM2QzNjEyOTAzYmE5M2U1
NGQxZDA2MDk5ZDQxNGE2YzllMjhhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTcyLDE2ICs3MiwxNiBAQCB2b2lkIEltYWdl
QnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29s
b3JTcGFjZSBkc3RDbwogaW5saW5lIHZvaWQgSW1hZ2VCdWZmZXI6OmdlbmVyaWNDb252ZXJ0VG9M
dW1pbmFuY2VNYXNrKCkKIHsKICAgICBJbnRSZWN0IGx1bWluYW5jZVJlY3QoSW50UG9pbnQoKSwg
aW50ZXJuYWxTaXplKCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBn
ZXRVbm11bHRpcGxpZWRJbWFnZURhdGEobHVtaW5hbmNlUmVjdCk7CisgICAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBzcmNQaXhlbEFycmF5ID0gZ2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGx1
bWluYW5jZVJlY3QpOwogICAgIAogICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBzcmNQ
aXhlbEFycmF5LT5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsg
cGl4ZWxPZmZzZXQgPCBwaXhlbEFycmF5TGVuZ3RoOyBwaXhlbE9mZnNldCArPSA0KSB7Ci0gICAg
ICAgIHVuc2lnbmVkIGNoYXIgYSA9IHNyY1BpeGVsQXJyYXktPmdldChwaXhlbE9mZnNldCArIDMp
OworICAgICAgICB1bnNpZ25lZCBjaGFyIGEgPSBzcmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsT2Zm
c2V0ICsgMyk7CiAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB1bnNpZ25lZCBjaGFyIHIgPSBzcmNQaXhlbEFycmF5LT5nZXQocGl4ZWxPZmZzZXQpOwotICAg
ICAgICB1bnNpZ25lZCBjaGFyIGcgPSBzcmNQaXhlbEFycmF5LT5nZXQocGl4ZWxPZmZzZXQgKyAx
KTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBiID0gc3JjUGl4ZWxBcnJheS0+Z2V0KHBpeGVsT2Zm
c2V0ICsgMik7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgciA9IHNyY1BpeGVsQXJyYXktPml0ZW0o
cGl4ZWxPZmZzZXQpOworICAgICAgICB1bnNpZ25lZCBjaGFyIGcgPSBzcmNQaXhlbEFycmF5LT5p
dGVtKHBpeGVsT2Zmc2V0ICsgMSk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYiA9IHNyY1BpeGVs
QXJyYXktPml0ZW0ocGl4ZWxPZmZzZXQgKyAyKTsKICAgICAgICAgCiAgICAgICAgIGRvdWJsZSBs
dW1hID0gKHIgKiAwLjIxMjUgKyBnICogMC43MTU0ICsgYiAqIDAuMDcyMSkgKiAoKGRvdWJsZSlh
IC8gMjU1LjApOwogICAgICAgICBzcmNQaXhlbEFycmF5LT5zZXQocGl4ZWxPZmZzZXQgKyAzLCBs
dW1hKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CmluZGV4IGVkODM4N2ZjMzViM2E1MDljMjBjZWEyZWZhZjQyNzYwNzA1ZmM2MGEuLmQxOTg4YWI0
NzU2MTMxMjc4ZWYxOTVlMzIzMjIzYWIyZGU3OTA5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMzgsMTEgKzM4LDExIEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlckRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
aW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtOTgsMTAgKzk4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICBlbnVtIENvb3JkaW5hdGVTeXN0ZW0geyBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSwgQmFj
a2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSB9OwogCi0gICAgICAgIFBhc3NSZWZQdHI8Qnl0ZUFy
cmF5PiBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVT
eXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQ
dHI8Qnl0ZUFycmF5PiBnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmLCBD
b29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OworICAgICAg
ICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEo
Y29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3Rl
bSkgY29uc3Q7CisgICAgICAgIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldFByZW11
bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dp
Y2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBwdXRCeXRlQXJyYXko
TXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFycmF5KiwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwg
Q29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKTsKKyAgICAgICAgdm9p
ZCBwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqLCBj
b25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5h
dGVTeXN0ZW0pOwogICAgICAgICAKICAgICAgICAgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcAppbmRleCAzYjhhOTU2YjBjNjA2YWQ5MDE1MzgwYTYzOGE3NjhlODlmMzM4MGEw
Li4zMGY3N2U4YjgwOGE1NGIyODlkMTkxMTk0MDY4M2I0YWVmZDRkZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtODI2LDcgKzgy
Niw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgYmx1clJlY3QoSW50
UG9pbnQoKSwgdGVtcGxhdGVTaXplKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBsYXllckRhdGEg
PSBtX2xheWVySW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShibHVyUmVjdCk7CisgICAg
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBsYXllckRhdGEgPSBtX2xheWVySW1hZ2UtPmdldFVu
bXVsdGlwbGllZEltYWdlRGF0YShibHVyUmVjdCk7CiAgICAgYmx1ckxheWVySW1hZ2UobGF5ZXJE
YXRhLT5kYXRhKCksIGJsdXJSZWN0LnNpemUoKSwgYmx1clJlY3Qud2lkdGgoKSAqIDQpOwogICAg
IG1fbGF5ZXJJbWFnZS0+cHV0Qnl0ZUFycmF5KFVubXVsdGlwbGllZCwgbGF5ZXJEYXRhLmdldCgp
LCBibHVyUmVjdC5zaXplKCksIGJsdXJSZWN0LCBJbnRQb2ludCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyby5jcHAKaW5kZXggYzA2MzE4ZTI1MjUwYjBjY2MzOWViOWIxMzNhYjc2OGZjOGVkZGY0NS4u
YWYxNTdhMjk3NDY5MDNkZmNiNDc2ZjdiZGNjYTQzMjgzZDNhMmU2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyby5jcHAKQEAgLTEzMiwxNiArMTMyLDE2IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3Jt
VHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiB9CiAK
IHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdl
dEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGRh
dGEsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBn
ZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBk
YXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX2dl
dF90eXBlKGRhdGEubV9zdXJmYWNlKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwogCi0g
ICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
cmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0
aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGRhdGEubV9zdXJmYWNlKTsKICAgICB1bnNpZ25l
ZCBjaGFyKiBkYXRhRHN0ID0gcmVzdWx0LT5kYXRhKCk7CiAKICAgICBpZiAocmVjdC54KCkgPCAw
IHx8IHJlY3QueSgpIDwgMCB8fCAocmVjdC54KCkgKyByZWN0LndpZHRoKCkpID4gc2l6ZS53aWR0
aCgpIHx8IChyZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpID4gc2l6ZS5oZWlnaHQoKSkKLSAgICAg
ICAgbWVtc2V0KGRhdGFEc3QsIDAsIHJlc3VsdC0+bGVuZ3RoKCkpOworICAgICAgICByZXN1bHQt
Pnplcm9GaWxsKCk7CiAKICAgICBpbnQgb3JpZ2lueCA9IHJlY3QueCgpOwogICAgIGludCBkZXN0
eCA9IDA7CkBAIC0xOTAsMTcgKzE5MCwxNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZAogICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1h
Z2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBD
b29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1h
Z2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBD
b29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJldHVybiBnZXRJbWFnZURhdGE8VW5tdWx0
aXBsaWVkPihyZWN0LCBtX2RhdGEsIG1fc2l6ZSk7CiB9CiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5
PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYg
cmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRh
PFByZW11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplKTsKIH0KIAotdm9pZCBJbWFnZUJ1
ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNl
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQordm9pZCBJbWFnZUJ1
ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5
KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCiB7CiAg
ICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9kYXRhLm1fc3VyZmFjZSkgPT0gQ0FJ
Uk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA3ZTkzMGQ1MjlkYzM3NDI0
M2E3NDBiNDBlMWZlNGVmMjAwOGEzZjc2Li43NDVmNGEwNDdlY2Q5MzEzNWMwZmJmZDA2OWNiNWYx
NGQzNzlhYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpIGNvCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dFRvQ2xp
cCwgLXJlY3QueCgpLCAtcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsKIH0KIAotUGFzc1JlZlB0
cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAor
UGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGll
ZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKG1fY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkgewogICAgICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4
dCgpKTsKQEAgLTMxNyw3ICszMTcsNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LAogICAgIHJl
dHVybiBtX2RhdGEuZ2V0RGF0YShyZWN0LCBpbnRlcm5hbFNpemUoKSwgbV9jb250ZXh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCBjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29y
ZGluYXRlU3lzdGVtID8gbV9yZXNvbHV0aW9uU2NhbGUgOiAxKTsKIH0KIAotUGFzc1JlZlB0cjxC
eXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IElu
dFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Bh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVk
SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0
ZVN5c3RlbSkgY29uc3QKIHsKICAgICBpZiAobV9jb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7CiAgICAgICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0
KCkpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZl
cjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0CiAgICAgcmV0
dXJuIG1fZGF0YS5nZXREYXRhKHJlY3QsIGludGVybmFsU2l6ZSgpLCBtX2NvbnRleHQtPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCBjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29y
ZGluYXRlU3lzdGVtID8gbV9yZXNvbHV0aW9uU2NhbGUgOiAxKTsKIH0KIAotdm9pZCBJbWFnZUJ1
ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNl
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0
ZW0pCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwg
VWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRp
bmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKQogewogICAgIGlmICghbV9jb250ZXh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIG1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc291
cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBpbnRlcm5hbFNpemUoKSwgbV9jb250ZXh0
LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCwgY29v
cmRpbmF0ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSA/IG1fcmVzb2x1dGlvblNj
YWxlIDogMSk7CkBAIC00NDAsNyArNDQwLDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IHV0aUZyb21NSU1FVHlwZShtaW1lVHlwZSk7
CiAgICAgQVNTRVJUKHV0aSk7CiAKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBwcmVtdWx0aXBsaWVk
RGF0YTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxpZWREYXRhOwog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKIAogICAgIGlmIChDRkVxdWFsKHV0aS5n
ZXQoKSwganBlZ1VUSSgpKSkgewpAQCAtNDgwLDcgKzQ4MCw3IEBAIFN0cmluZyBJbWFnZURhdGFU
b0RhdGFVUkwoY29uc3QgSW1hZ2VEYXRhJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwogICAgIFJldGFpblB0cjxD
R0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyOwogCi0gICAgdW5zaWduZWQgY2hhciogZGF0
YSA9IHNvdXJjZS5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpOworICAgIHVuc2lnbmVkIGNoYXIqIGRh
dGEgPSBzb3VyY2UuZGF0YSgpLT5kYXRhKCk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
dGkgPSB1dGlGcm9tTUlNRVR5cGUobWltZVR5cGUpOwogICAgIEFTU0VSVCh1dGkpOwogICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCmluZGV4IGRlNDFhN2Rl
OTgyMGRjYjYyNDU3OTg3Y2EyYWMwNDk2MTk4YWM2OGQuLjlhNWEzZjExNDRkNjM3ZDQ3OGM1NTBh
ZmFkOWRlZTI5NzU4NGM4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKQEAgLTExNiwxOSArMTE2LDE5
IEBAIHN0YXRpYyB2b2lkIHByZW11bHRpdHBseVNjYW5saW5lKHZvaWQqIGRhdGEsIHNpemVfdCB0
aWxlTnVtYmVyKQogI2VuZGlmIC8vIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUp
CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEUpCiAKLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFn
ZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1h
Z2VCdWZmZXJEYXRhOjpnZXREYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSkgY29uc3QKIHsKICAgICBmbG9hdCBhcmVhID0gNC4wZiAqIHJlY3Qu
d2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCk7CiAgICAgaWYgKGFyZWEgPiBzdGF0aWNfY2FzdDxmbG9h
dD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gcmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVhdGUocmVjdC53
aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53
aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBy
ZXN1bHQtPmRhdGEoKTsKICAgICAKICAgICBpbnQgZW5keCA9IGNlaWxmKHJlY3QubWF4WCgpICog
cmVzb2x1dGlvblNjYWxlKTsKICAgICBpbnQgZW5keSA9IGNlaWxmKHJlY3QubWF4WSgpICogcmVz
b2x1dGlvblNjYWxlKTsKICAgICBpZiAocmVjdC54KCkgPCAwIHx8IHJlY3QueSgpIDwgMCB8fCBl
bmR4ID4gc2l6ZS53aWR0aCgpIHx8IGVuZHkgPiBzaXplLmhlaWdodCgpKQotICAgICAgICBtZW1z
ZXQoZGF0YSwgMCwgcmVzdWx0LT5sZW5ndGgoKSk7CisgICAgICAgIHJlc3VsdC0+emVyb0ZpbGwo
KTsKICAgICAKICAgICBpbnQgb3JpZ2lueCA9IHJlY3QueCgpOwogICAgIGludCBkZXN0eCA9IDA7
CkBAIC0zNDIsNyArMzQyLDcgQEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyRGF0
YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXoKICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoQnl0
ZUFycmF5KiYgc291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiBz
aXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUpCit2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShVaW50OENsYW1w
ZWRBcnJheSomIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlKQogewogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsK
ICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKaW5kZXgg
NGEwZTc2MTNlMGIwZmIyZDY2YTVmYTY0ZDQ2NmQwZGQzZmQ3MmU2ZS4uNjIzM2M2YzJjMzE4Yjgx
MDFjOGZhZGVmZWYxMzMxNjQzMWUzMDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCkBAIC0yNSwxMCArMjUs
MTAgQEAKICAqLwogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhD
bGFtcGVkQXJyYXkuaD4KIAogI2lmIChQTEFURk9STShNQUMpICYmIFVTRShDQSkgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKSkKICNkZWZpbmUgV1RGX1VTRV9JT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUgMQpA
QCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgbXV0YWJsZSBkb3VibGUgbV9sYXN0Rmx1c2hU
aW1lOwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0RGF0YShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJp
bmcsIGJvb2wgdW5tdWx0aXBsaWVkLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpIGNvbnN0OwotICAg
IHZvaWQgcHV0RGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNp
emUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQs
IGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11
bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSk7CisgICAgUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gZ2V0RGF0YShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGJvb2wg
YWNjZWxlcmF0ZVJlbmRlcmluZywgYm9vbCB1bm11bHRpcGxpZWQsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSkgY29uc3Q7CisgICAgdm9pZCBwdXREYXRhKFVpbnQ4Q2xhbXBlZEFycmF5KiYgc291cmNl
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBhY2NlbGVyYXRl
UmVuZGVyaW5nLCBib29sIHVubXVsdGlwbGllZCwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IDUzMDYzNmRhOTg2NDcxZGJm
YTEzNzE4Y2UyMjNhYjNhOTVkNzk3ZjIuLmFhNzMzZDkwZjE5NjJkNjRjMDViNzFkNzczZTAyZGEw
ZGZiMTEzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRy
ZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0
ZUFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIHR5cGVkZWYg
dW5zaWduZWQgY2hhciAoKkJsZW5kVHlwZSkodW5zaWduZWQgY2hhciBjb2xvckEsIHVuc2lnbmVk
IGNoYXIgY29sb3JCLCB1bnNpZ25lZCBjaGFyIGFscGhhQSwgdW5zaWduZWQgY2hhciBhbHBoYUIp
OwogCkBAIC05NCwyNCArOTQsMjQgQEAgdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgIEFTU0VSVChtX21vZGUgPiBGRUJMRU5EX01PREVfVU5LTk9XTik7CiAgICAgQVNT
RVJUKG1fbW9kZSA8PSBGRUJMRU5EX01PREVfTElHSFRFTik7CiAKLSAgICBCeXRlQXJyYXkqIGRz
dFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBVaW50
OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCgpOwogICAgIGlmICghZHN0UGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SW50UmVjdCBlZmZlY3RBRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VE
YXRhKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBzcmNQ
aXhlbEFycmF5QSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RBRHJhd2luZ1JlY3Qp
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUEgPSBpbi0+YXNQ
cmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0KTsKIAogICAgIEludFJlY3QgZWZm
ZWN0QkRyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbjItPmFi
c29sdXRlUGFpbnRSZWN0KCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXlC
ID0gaW4yLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RCRHJhd2luZ1JlY3QpOworICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUIgPSBpbjItPmFzUHJlbXVsdGlw
bGllZEltYWdlKGVmZmVjdEJEcmF3aW5nUmVjdCk7CiAKICAgICB1bnNpZ25lZCBwaXhlbEFycmF5
TGVuZ3RoID0gc3JjUGl4ZWxBcnJheUEtPmxlbmd0aCgpOwogICAgIEFTU0VSVChwaXhlbEFycmF5
TGVuZ3RoID09IHNyY1BpeGVsQXJyYXlCLT5sZW5ndGgoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBw
aXhlbE9mZnNldCA9IDA7IHBpeGVsT2Zmc2V0IDwgcGl4ZWxBcnJheUxlbmd0aDsgcGl4ZWxPZmZz
ZXQgKz0gNCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhQSA9IHNyY1BpeGVsQXJyYXlB
LT5nZXQocGl4ZWxPZmZzZXQgKyAzKTsKLSAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYUIgPSBz
cmNQaXhlbEFycmF5Qi0+Z2V0KHBpeGVsT2Zmc2V0ICsgMyk7CisgICAgICAgIHVuc2lnbmVkIGNo
YXIgYWxwaGFBID0gc3JjUGl4ZWxBcnJheUEtPml0ZW0ocGl4ZWxPZmZzZXQgKyAzKTsKKyAgICAg
ICAgdW5zaWduZWQgY2hhciBhbHBoYUIgPSBzcmNQaXhlbEFycmF5Qi0+aXRlbShwaXhlbE9mZnNl
dCArIDMpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgMzsg
KytjaGFubmVsKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbG9yQSA9IHNyY1BpeGVs
QXJyYXlBLT5nZXQocGl4ZWxPZmZzZXQgKyBjaGFubmVsKTsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgY29sb3JCID0gc3JjUGl4ZWxBcnJheUItPmdldChwaXhlbE9mZnNldCArIGNoYW5uZWwp
OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2xvckEgPSBzcmNQaXhlbEFycmF5QS0+aXRl
bShwaXhlbE9mZnNldCArIGNoYW5uZWwpOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjb2xv
ckIgPSBzcmNQaXhlbEFycmF5Qi0+aXRlbShwaXhlbE9mZnNldCArIGNoYW5uZWwpOwogICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciByZXN1bHQ7CiAKICAgICAgICAgICAgIHN3aXRjaCAobV9tb2Rl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcAppbmRleCAwMGI2MDBhYmRhYTk4YzU1NTZmOGM1ZmQ1Yjhj
OGQ1NDY2MTU2NjBkLi5iZDQyMTJkMGI1ODdiNjA1ZDkwNTkwNmRiZGQ3ZjkxOTQ1ZWJhOGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJSZW5kZXJU
cmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8d3RmL0J5
dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI1LDE0ICsx
MjUsMTQgQEAgaW5saW5lIHZvaWQgbHVtaW5hbmNlKGRvdWJsZSYgcmVkLCBkb3VibGUmIGdyZWVu
LCBkb3VibGUmIGJsdWUsIGRvdWJsZSYgYWxwaGEpCiB9CiAKIHRlbXBsYXRlPENvbG9yTWF0cml4
VHlwZSBmaWx0ZXJUeXBlPgotdm9pZCBlZmZlY3RUeXBlKEJ5dGVBcnJheSogcGl4ZWxBcnJheSwg
Y29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQordm9pZCBlZmZlY3RUeXBlKFVpbnQ4Q2xhbXBl
ZEFycmF5KiBwaXhlbEFycmF5LCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCiB7CiAgICAg
dW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHBpeGVsQXJyYXktPmxlbmd0aCgpOwogICAgIGZv
ciAodW5zaWduZWQgcGl4ZWxCeXRlT2Zmc2V0ID0gMDsgcGl4ZWxCeXRlT2Zmc2V0IDwgcGl4ZWxB
cnJheUxlbmd0aDsgcGl4ZWxCeXRlT2Zmc2V0ICs9IDQpIHsKLSAgICAgICAgZG91YmxlIHJlZCA9
IHBpeGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQpOwotICAgICAgICBkb3VibGUgZ3JlZW4g
PSBwaXhlbEFycmF5LT5nZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMSk7Ci0gICAgICAgIGRvdWJsZSBi
bHVlID0gcGl4ZWxBcnJheS0+Z2V0KHBpeGVsQnl0ZU9mZnNldCArIDIpOwotICAgICAgICBkb3Vi
bGUgYWxwaGEgPSBwaXhlbEFycmF5LT5nZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMyk7CisgICAgICAg
IGRvdWJsZSByZWQgPSBwaXhlbEFycmF5LT5pdGVtKHBpeGVsQnl0ZU9mZnNldCk7CisgICAgICAg
IGRvdWJsZSBncmVlbiA9IHBpeGVsQXJyYXktPml0ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgMSk7Cisg
ICAgICAgIGRvdWJsZSBibHVlID0gcGl4ZWxBcnJheS0+aXRlbShwaXhlbEJ5dGVPZmZzZXQgKyAy
KTsKKyAgICAgICAgZG91YmxlIGFscGhhID0gcGl4ZWxBcnJheS0+aXRlbShwaXhlbEJ5dGVPZmZz
ZXQgKyAzKTsKIAogICAgICAgICBzd2l0Y2ggKGZpbHRlclR5cGUpIHsKICAgICAgICAgICAgIGNh
c2UgRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWDoKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkpKTsKIAogICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50KCksIGFic29sdXRlUGFpbnRS
ZWN0KCkuc2l6ZSgpKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0
SW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOworICAgIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRVbm11bHRpcGxp
ZWRJbWFnZURhdGEoaW1hZ2VSZWN0KTsKIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2Fz
ZSBGRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIu
Y3BwCmluZGV4IDhkYjYyZGM0ZDRiZmI1NjZkNzgwYzMyNjE0ZDU2YjZlY2NmZmJlNjcuLjY1MWJh
YzJlMTg1ODM5ZTcwOGZiYjBhZTUxZTdkNzgyMzBmMzhjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmNwcApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1Rl
eHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRF
ZmZlY3QoMCk7CiAKLSAgICBCeXRlQXJyYXkqIHBpeGVsQXJyYXkgPSBjcmVhdGVVbm11bHRpcGxp
ZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFycmF5ID0gY3Jl
YXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgRkVDb21wb25lbnRUcmFuc2Zl
cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3Ro
ID0gcGl4ZWxBcnJheS0+bGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBwaXhlbE9mZnNldCA9
IDA7IHBpeGVsT2Zmc2V0IDwgcGl4ZWxBcnJheUxlbmd0aDsgcGl4ZWxPZmZzZXQgKz0gNCkgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWwgPSAwOyBjaGFubmVsIDwgNDsgKytjaGFubmVs
KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwaXhlbEFycmF5LT5nZXQocGl4ZWxP
ZmZzZXQgKyBjaGFubmVsKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IHBpeGVsQXJy
YXktPml0ZW0ocGl4ZWxPZmZzZXQgKyBjaGFubmVsKTsKICAgICAgICAgICAgIHBpeGVsQXJyYXkt
PnNldChwaXhlbE9mZnNldCArIGNoYW5uZWwsIHRhYmxlc1tjaGFubmVsXVtjXSk7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4IDViZTIyZjhlMjlkZWJhNTg0ZDI0YmExZjJk
Y2NlODc5ODk0NWFiZmMuLjU3MTAxYWY3ZjA0MzI4ODAxYmYzZWU5MzE2ZGRmMWM1ODZmYjZiMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJl
ZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9CeXRl
QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyaXRo
bWV0aWNTb2Z0d2FyZSh1bnNpZ25lZCBjaGFyKiBzb3VyY2UsIHVuc2lnbmVkIGNoYXIqIGRlc3QK
ICAgICBjb21wdXRlQXJpdGhtZXRpY1BpeGVsczwxLCAxLCAxLCAxPihzb3VyY2UsIGRlc3RpbmF0
aW9uLCBwaXhlbEFycmF5TGVuZ3RoLCBrMSwgazIsIGszLCBrNCk7CiB9CiAKLWlubGluZSB2b2lk
IEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShCeXRlQXJyYXkqIHNvdXJj
ZSwgQnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwKK2lubGluZSB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0
Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBVaW50OENs
YW1wZWRBcnJheSogZGVzdGluYXRpb24sCiAgICAgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBr
MywgZmxvYXQgazQpCiB7CiAgICAgaW50IGxlbmd0aCA9IHNvdXJjZS0+bGVuZ3RoKCk7CkBAIC0y
MjEsMTIgKzIyMSwxMiBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3QoMSk7CiAKICAgICBpZiAobV90
eXBlID09IEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMpIHsKLSAgICAgICAgQnl0ZUFy
cmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7Cisg
ICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KCk7CiAgICAgICAgIGlmICghZHN0UGl4ZWxBcnJheSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBJbnRSZWN0IGVmZmVjdEFEcmF3aW5nUmVjdCA9IHJlcXVl
c3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAg
ICAgICBSZWZQdHI8Qnl0ZUFycmF5PiBzcmNQaXhlbEFycmF5ID0gaW4tPmFzUHJlbXVsdGlwbGll
ZEltYWdlKGVmZmVjdEFEcmF3aW5nUmVjdCk7CisgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRB
cnJheT4gc3JjUGl4ZWxBcnJheSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3RBRHJh
d2luZ1JlY3QpOwogCiAgICAgICAgIEludFJlY3QgZWZmZWN0QkRyYXdpbmdSZWN0ID0gcmVxdWVz
dGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAg
ICAgICBpbjItPmNvcHlQcmVtdWx0aXBsaWVkSW1hZ2UoZHN0UGl4ZWxBcnJheSwgZWZmZWN0QkRy
YXdpbmdSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuaAppbmRleCAyNGJhMzA3OGYxZTNiZDU4OGM1OTlhMzE4MDQ4
NzRiNzFlNjZhM2U3Li40MjY5NWY2YzJiZjg0NmE5NzQzZTg4NTk0Y2M4NmQ2NDViOWQ5NDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5oCkBAIC03NCw3ICs3NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
RkVDb21wb3NpdGUoRmlsdGVyKiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZsb2F0
LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKIAotICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXJpdGht
ZXRpY1NvZnR3YXJlKEJ5dGVBcnJheSogc291cmNlLCBCeXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBm
bG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7CisgICAgaW5saW5lIHZvaWQg
cGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUoVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgVWlu
dDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGsz
LCBmbG9hdCBrNCk7CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1ldGljTmVvbih1bnNp
Z25lZCBjaGFyKiBzb3VyY2UsIHVuc2lnbmVkICBjaGFyKiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
cGl4ZWxBcnJheUxlbmd0aCwgZmxvYXQqIGtBcnJheSk7CiAKICAgICBDb21wb3NpdGVPcGVyYXRp
b25UeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IGNkYTVmMTkzZTQ0
NWVlNTIxNGE0MWJmYjVhY2M0ZmIxOTkwMGM1MTguLjA2NTFlMmRlZDVlMDNjYWUxZWJkODY1NDcy
YzhhZGM4NWM3MDZiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMzAsOCArMzAs
OCBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAKLSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVs
Sm9icy5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTIyMywxNCArMjIzLDE0IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHVu
c2lnbmVkIGNoYXIgY2xhbXBSR0JBVmFsdWUoZmxvYXQgY2hhbm5lbCwgdW5zaWduZWQgY2hhciBt
CiB9CiAKIHRlbXBsYXRlPGJvb2wgcHJlc2VydmVBbHBoYVZhbHVlcz4KLUFMV0FZU19JTkxJTkUg
dm9pZCBzZXREZXN0aW5hdGlvblBpeGVscyhCeXRlQXJyYXkqIGltYWdlLCBpbnQmIHBpeGVsLCBm
bG9hdCogdG90YWxzLCBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBCeXRlQXJyYXkqIHNyYykK
K0FMV0FZU19JTkxJTkUgdm9pZCBzZXREZXN0aW5hdGlvblBpeGVscyhVaW50OENsYW1wZWRBcnJh
eSogaW1hZ2UsIGludCYgcGl4ZWwsIGZsb2F0KiB0b3RhbHMsIGZsb2F0IGRpdmlzb3IsIGZsb2F0
IGJpYXMsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmMpCiB7CiAgICAgdW5zaWduZWQgY2hhciBtYXhB
bHBoYSA9IHByZXNlcnZlQWxwaGFWYWx1ZXMgPyAyNTUgOiBjbGFtcFJHQkFWYWx1ZSh0b3RhbHNb
M10gLyBkaXZpc29yICsgYmlhcyk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCiAg
ICAgICAgIGltYWdlLT5zZXQocGl4ZWwrKywgY2xhbXBSR0JBVmFsdWUodG90YWxzW2ldIC8gZGl2
aXNvciArIGJpYXMsIG1heEFscGhhKSk7CiAKICAgICBpZiAocHJlc2VydmVBbHBoYVZhbHVlcykg
ewotICAgICAgICBpbWFnZS0+c2V0KHBpeGVsLCBzcmMtPmdldChwaXhlbCkpOworICAgICAgICBp
bWFnZS0+c2V0KHBpeGVsLCBzcmMtPml0ZW0ocGl4ZWwpKTsKICAgICAgICAgKytwaXhlbDsKICAg
ICB9IGVsc2UKICAgICAgICAgaW1hZ2UtPnNldChwaXhlbCsrLCBtYXhBbHBoYSk7CkBAIC0yNjcs
MTEgKzI2NywxMSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6ZmFzdFNl
dEludGVyaW9yUGl4ZWxzKFBhaW50aW5nRGF0YSYgcGFpbnRpbgogICAgICAgICAgICAgICAgIHRv
dGFsc1szXSA9IDA7CiAKICAgICAgICAgICAgIHdoaWxlIChrZXJuZWxWYWx1ZSA+PSAwKSB7Ci0g
ICAgICAgICAgICAgICAgdG90YWxzWzBdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAq
IHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+Z2V0KGtlcm5l
bFBpeGVsKyspKTsKLSAgICAgICAgICAgICAgICB0b3RhbHNbMV0gKz0gbV9rZXJuZWxNYXRyaXhb
a2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFy
cmF5LT5nZXQoa2VybmVsUGl4ZWwrKykpOwotICAgICAgICAgICAgICAgIHRvdGFsc1syXSArPSBt
X2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdE
YXRhLnNyY1BpeGVsQXJyYXktPmdldChrZXJuZWxQaXhlbCsrKSk7CisgICAgICAgICAgICAgICAg
dG90YWxzWzBdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZs
b2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRlbShrZXJuZWxQaXhlbCsrKSk7Cisg
ICAgICAgICAgICAgICAgdG90YWxzWzFdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAq
IHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRlbShrZXJu
ZWxQaXhlbCsrKSk7CisgICAgICAgICAgICAgICAgdG90YWxzWzJdICs9IG1fa2VybmVsTWF0cml4
W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxB
cnJheS0+aXRlbShrZXJuZWxQaXhlbCsrKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmVzZXJ2
ZUFscGhhVmFsdWVzKQotICAgICAgICAgICAgICAgICAgICB0b3RhbHNbM10gKz0gbV9rZXJuZWxN
YXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQ
aXhlbEFycmF5LT5nZXQoa2VybmVsUGl4ZWwpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxz
WzNdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0Pihw
YWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRlbShrZXJuZWxQaXhlbCkpOwogICAgICAgICAg
ICAgICAgICsra2VybmVsUGl4ZWw7CiAgICAgICAgICAgICAgICAgLS1rZXJuZWxWYWx1ZTsKICAg
ICAgICAgICAgICAgICBpZiAoIS0td2lkdGgpIHsKQEAgLTM1MCwxMiArMzUwLDEyIEBAIHZvaWQg
RkVDb252b2x2ZU1hdHJpeDo6ZmFzdFNldE91dGVyUGl4ZWxzKFBhaW50aW5nRGF0YSYgcGFpbnRp
bmdEYXRhLCBpbnQgeDEsIGluCiAgICAgICAgICAgICB3aGlsZSAoa2VybmVsVmFsdWUgPj0gMCkg
ewogICAgICAgICAgICAgICAgIGludCBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxWYWx1ZShwYWludGlu
Z0RhdGEsIGtlcm5lbFBpeGVsWCwga2VybmVsUGl4ZWxZKTsKICAgICAgICAgICAgICAgICBpZiAo
cGl4ZWxJbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFsc1swXSArPSBtX2tl
cm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRh
LnNyY1BpeGVsQXJyYXktPmdldChwaXhlbEluZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgIHRv
dGFsc1sxXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9h
dD4ocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPmdldChwaXhlbEluZGV4ICsgMSkpOwotICAg
ICAgICAgICAgICAgICAgICB0b3RhbHNbMl0gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVd
ICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5nZXQocGl4
ZWxJbmRleCArIDIpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxzWzBdICs9IG1fa2VybmVs
TWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3Jj
UGl4ZWxBcnJheS0+aXRlbShwaXhlbEluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgIHRvdGFs
c1sxXSArPSBtX2tlcm5lbE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9hdD4o
cGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxJbmRleCArIDEpKTsKKyAgICAg
ICAgICAgICAgICAgICAgdG90YWxzWzJdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAq
IHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRlbShwaXhl
bEluZGV4ICsgMikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBy
ZXNlcnZlQWxwaGFWYWx1ZXMgJiYgcGl4ZWxJbmRleCA+PSAwKQotICAgICAgICAgICAgICAgICAg
ICB0b3RhbHNbM10gKz0gbV9rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5LT5nZXQocGl4ZWxJbmRleCArIDMpKTsK
KyAgICAgICAgICAgICAgICAgICAgdG90YWxzWzNdICs9IG1fa2VybmVsTWF0cml4W2tlcm5lbFZh
bHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS0+aXRl
bShwaXhlbEluZGV4ICsgMykpOwogICAgICAgICAgICAgICAgICsra2VybmVsUGl4ZWxYOwogICAg
ICAgICAgICAgICAgIC0ta2VybmVsVmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKCEtLXdpZHRo
KSB7CkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsK
IAotICAgIEJ5dGVBcnJheSogcmVzdWx0SW1hZ2U7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIHJl
c3VsdEltYWdlOwogICAgIGlmIChtX3ByZXNlcnZlQWxwaGEpCiAgICAgICAgIHJlc3VsdEltYWdl
ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBlbHNlCkBAIC00MTMsNyAr
NDEzLDcgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
CiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJ
bWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogCi0gICAgUmVmUHRyPEJ5dGVBcnJh
eT4gc3JjUGl4ZWxBcnJheTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVs
QXJyYXk7CiAgICAgaWYgKG1fcHJlc2VydmVBbHBoYSkKICAgICAgICAgc3JjUGl4ZWxBcnJheSA9
IGluLT5hc1VubXVsdGlwbGllZEltYWdlKGVmZmVjdERyYXdpbmdSZWN0KTsKICAgICBlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29u
dm9sdmVNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb252b2x2ZU1hdHJpeC5oCmluZGV4IDM0YmFmNmYxN2UyZjVmMDI5Njc0Y2QyODI1ODkwNTQz
YzFiMzcyNDUuLjI1MDYxM2ZiNDYzODZlYjU1NTVjYWYzOGUyOWY4YjNlODg2M2VkZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2
ZU1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb252b2x2ZU1hdHJpeC5oCkBAIC04Miw4ICs4Miw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAK
ICAgICBzdHJ1Y3QgUGFpbnRpbmdEYXRhIHsKLSAgICAgICAgQnl0ZUFycmF5KiBzcmNQaXhlbEFy
cmF5OwotICAgICAgICBCeXRlQXJyYXkqIGRzdFBpeGVsQXJyYXk7CisgICAgICAgIFVpbnQ4Q2xh
bXBlZEFycmF5KiBzcmNQaXhlbEFycmF5OworICAgICAgICBVaW50OENsYW1wZWRBcnJheSogZHN0
UGl4ZWxBcnJheTsKICAgICAgICAgaW50IHdpZHRoOwogICAgICAgICBpbnQgaGVpZ2h0OwogICAg
ICAgICBmbG9hdCBiaWFzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAppbmRleCA4ZmFmZTA0MjBjMTky
OGRiYzExMzdiMzRjOTY5MjJhMDI4OTU3OTE1Li44OTIyM2JiMTliNTEyNmI5ZTdiNzc2ZWQ4MTdj
OTI0NTFjOTU1ZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQAog
I2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IgogCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1w
ZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk1LDEzICs5NSwxMyBAQCBQ
YXNzUmVmUHRyPEZFQ3VzdG9tRmlsdGVyPiBGRUN1c3RvbUZpbHRlcjo6Y3JlYXRlKEZpbHRlciog
ZmlsdGVyLCBIb3N0V2luZG93KiBobwogCiB2b2lkIEZFQ3VzdG9tRmlsdGVyOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogewotICAgIEJ5dGVBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVBy
ZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhl
bEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgaWYgKCFkc3RQ
aXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5w
dXRFZmZlY3QoMCk7CiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJl
Z2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIFJlZlB0
cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZm
ZWN0RHJhd2luZ1JlY3QpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxB
cnJheSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3REcmF3aW5nUmVjdCk7CiAgICAg
CiAgICAgSW50U2l6ZSBuZXdDb250ZXh0U2l6ZShlZmZlY3REcmF3aW5nUmVjdC5zaXplKCkpOwog
ICAgIGJvb2wgaGFkQ29udGV4dCA9IG1fY29udGV4dDsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lk
IEZFQ3VzdG9tRmlsdGVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIG1fZHJhd2luZ0J1
ZmZlci0+Y29tbWl0KCk7CiAKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBtX2Nv
bnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKG1fZHJhd2luZ0J1ZmZlci5n
ZXQoKSk7Ci0gICAgQnl0ZUFycmF5KiBncHVSZXN1bHQgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0
YSgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBncHVSZXN1bHQgPSBpbWFnZURhdGEtPmRhdGEo
KTsKICAgICBBU1NFUlQoZ3B1UmVzdWx0LT5sZW5ndGgoKSA9PSBkc3RQaXhlbEFycmF5LT5sZW5n
dGgoKSk7CiAgICAgbWVtY3B5KGRzdFBpeGVsQXJyYXktPmRhdGEoKSwgZ3B1UmVzdWx0LT5kYXRh
KCksIGdwdVJlc3VsdC0+bGVuZ3RoKCkpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgRkVD
dXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFtUGFyYW1ldGVycygpCiAgICAgfQogfQogCi12b2lkIEZF
Q3VzdG9tRmlsdGVyOjpiaW5kUHJvZ3JhbUFuZEJ1ZmZlcnMoQnl0ZUFycmF5KiBzcmNQaXhlbEFy
cmF5KQordm9pZCBGRUN1c3RvbUZpbHRlcjo6YmluZFByb2dyYW1BbmRCdWZmZXJzKFVpbnQ4Q2xh
bXBlZEFycmF5KiBzcmNQaXhlbEFycmF5KQogewogICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbSht
X3NoYWRlci0+cHJvZ3JhbSgpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaAppbmRleCA0OTZmMDQ0
YzI4MzNlODNjOTUwYzM2MjA1ZWJiYzY5ZmQzNWQ1ZGQxLi41ZjVmMDI3NjhmYTFhYzQwZTBjY2I4
NWY4MjQwZDdlMjA0OGZjN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCkBAIC0zOCw3ICszOCw3IEBA
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNsYXNzIEJ5dGVB
cnJheTsKK2NsYXNzIFVpbnQ4Q2xhbXBlZEFycmF5OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiaW5kVmVydGV4QXR0cmlidXRl
KGludCBhdHRyaWJ1dGVMb2NhdGlvbiwgdW5zaWduZWQgc2l6ZSwgdW5zaWduZWQmIG9mZnNldCk7
CiAgICAgdm9pZCBiaW5kUHJvZ3JhbU51bWJlclBhcmFtZXRlcnMoaW50IHVuaWZvcm1Mb2NhdGlv
biwgQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKik7CiAgICAgdm9pZCBiaW5kUHJvZ3JhbVBh
cmFtZXRlcnMoKTsKLSAgICB2b2lkIGJpbmRQcm9ncmFtQW5kQnVmZmVycyhCeXRlQXJyYXkqIHNy
Y1BpeGVsQXJyYXkpOworICAgIHZvaWQgYmluZFByb2dyYW1BbmRCdWZmZXJzKFVpbnQ4Q2xhbXBl
ZEFycmF5KiBzcmNQaXhlbEFycmF5KTsKICAgICAKICAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5k
b3c7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCmluZGV4IGIwZWFjNDQ5YTY3MmE0
ZTIwZTgyZjlmN2NhZmIyZWM2ZDE2OThiY2YuLjdmNTU0YWE4NDlkZDliZDE3MDljZWI4YzExZTUy
MTA1NzZmMmYxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKIAotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvVWludDhDbGFt
cGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05NiwxNSArOTYsMTUgQEAg
dm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBBU1NF
UlQobV94Q2hhbm5lbFNlbGVjdG9yICE9IENIQU5ORUxfVU5LTk9XTik7CiAgICAgQVNTRVJUKG1f
eUNoYW5uZWxTZWxlY3RvciAhPSBDSEFOTkVMX1VOS05PV04pOwogCi0gICAgQnl0ZUFycmF5KiBk
c3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgVWlu
dDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQoKTsKICAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IEludFJlY3QgZWZmZWN0QURyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdl
RGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gc3Jj
UGl4ZWxBcnJheUEgPSBpbi0+YXNQcmVtdWx0aXBsaWVkSW1hZ2UoZWZmZWN0QURyYXdpbmdSZWN0
KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHNyY1BpeGVsQXJyYXlBID0gaW4tPmFz
UHJlbXVsdGlwbGllZEltYWdlKGVmZmVjdEFEcmF3aW5nUmVjdCk7CiAKICAgICBJbnRSZWN0IGVm
ZmVjdEJEcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4yLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBzcmNQaXhlbEFycmF5
QiA9IGluMi0+YXNVbm11bHRpcGxpZWRJbWFnZShlZmZlY3RCRHJhd2luZ1JlY3QpOworICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheUIgPSBpbjItPmFzVW5tdWx0aXBs
aWVkSW1hZ2UoZWZmZWN0QkRyYXdpbmdSZWN0KTsKIAogICAgIEFTU0VSVChzcmNQaXhlbEFycmF5
QS0+bGVuZ3RoKCkgPT0gc3JjUGl4ZWxBcnJheUItPmxlbmd0aCgpKTsKIApAQCAtMTE5LDEzICsx
MTksMTMgQEAgdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
ICAgICAgICAgaW50IGxpbmUgPSB5ICogc3RyaWRlOwogICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHBhaW50U2l6ZS53aWR0aCgpOyArK3gpIHsKICAgICAgICAgICAgIGludCBkc3RJbmRleCA9
IGxpbmUgKyB4ICogNDsKLSAgICAgICAgICAgIGludCBzcmNYID0geCArIHN0YXRpY19jYXN0PGlu
dD4oc2NhbGVYICogc3JjUGl4ZWxBcnJheUItPmdldChkc3RJbmRleCArIG1feENoYW5uZWxTZWxl
Y3RvciAtIDEpICsgc2NhbGVBZGp1c3RtZW50WCk7Ci0gICAgICAgICAgICBpbnQgc3JjWSA9IHkg
KyBzdGF0aWNfY2FzdDxpbnQ+KHNjYWxlWSAqIHNyY1BpeGVsQXJyYXlCLT5nZXQoZHN0SW5kZXgg
KyBtX3lDaGFubmVsU2VsZWN0b3IgLSAxKSArIHNjYWxlQWRqdXN0bWVudFkpOworICAgICAgICAg
ICAgaW50IHNyY1ggPSB4ICsgc3RhdGljX2Nhc3Q8aW50PihzY2FsZVggKiBzcmNQaXhlbEFycmF5
Qi0+aXRlbShkc3RJbmRleCArIG1feENoYW5uZWxTZWxlY3RvciAtIDEpICsgc2NhbGVBZGp1c3Rt
ZW50WCk7CisgICAgICAgICAgICBpbnQgc3JjWSA9IHkgKyBzdGF0aWNfY2FzdDxpbnQ+KHNjYWxl
WSAqIHNyY1BpeGVsQXJyYXlCLT5pdGVtKGRzdEluZGV4ICsgbV95Q2hhbm5lbFNlbGVjdG9yIC0g
MSkgKyBzY2FsZUFkanVzdG1lbnRZKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hhbm5l
bCA9IDA7IGNoYW5uZWwgPCA0OyArK2NoYW5uZWwpIHsKICAgICAgICAgICAgICAgICBpZiAoc3Jj
WCA8IDAgfHwgc3JjWCA+PSBwYWludFNpemUud2lkdGgoKSB8fCBzcmNZIDwgMCB8fCBzcmNZID49
IHBhaW50U2l6ZS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgZHN0UGl4ZWxBcnJheS0+
c2V0KGRzdEluZGV4ICsgY2hhbm5lbCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMCkpOwog
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IHBpeGVsVmFsdWUgPSBzcmNQaXhlbEFycmF5QS0+Z2V0KHNyY1kgKiBzdHJpZGUgKyBzcmNYICog
NCArIGNoYW5uZWwpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsVmFs
dWUgPSBzcmNQaXhlbEFycmF5QS0+aXRlbShzcmNZICogc3RyaWRlICsgc3JjWCAqIDQgKyBjaGFu
bmVsKTsKICAgICAgICAgICAgICAgICAgICAgZHN0UGl4ZWxBcnJheS0+c2V0KGRzdEluZGV4ICsg
Y2hhbm5lbCwgcGl4ZWxWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURy
b3BTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwCmluZGV4IDNkZDVhMjc2Mzc4Y2Q5MmQxMDE2N2RhYWY5MTU3MTBlN2Rj
M2JmNDguLjM0OTk3ZjYxMzQ0NDc2Y2ZhOTE4YjE5NDQ5MWNhOWRkNzZlNmRjNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJv
cFNoYWRvdy5jcHAKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKLSNp
bmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogCiAgICAgLy8gVE9ETzogRGlyZWN0IHBpeGVsIGFjY2VzcyB0byBJbWFnZUJ1ZmZl
ciB3b3VsZCBhdm9pZCBjb3B5aW5nIHRoZSBJbWFnZURhdGEuCiAgICAgSW50UmVjdCBzaGFkb3dB
cmVhKEludFBvaW50KCksIHJlc3VsdEltYWdlLT5pbnRlcm5hbFNpemUoKSk7Ci0gICAgUmVmUHRy
PEJ5dGVBcnJheT4gc3JjUGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRQcmVtdWx0aXBsaWVk
SW1hZ2VEYXRhKHNoYWRvd0FyZWEpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3Jj
UGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlLT5nZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKHNoYWRv
d0FyZWEpOwogCiAgICAgY29udGV4dFNoYWRvdy5ibHVyTGF5ZXJJbWFnZShzcmNQaXhlbEFycmF5
LT5kYXRhKCksIHNoYWRvd0FyZWEuc2l6ZSgpLCA0ICogc2hhZG93QXJlYS5zaXplKCkud2lkdGgo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggMDI3NjQyYmU3MWE3Nzk0MGMwMzg4NGFi
YThmY2Y1ZDEwY2UwZmU2OS4uZmMzYmFmODMyNGVhMTcyZGEyODgyMjE1YWM0OGU5MTkyYWQ4Yjlm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlICJS
ZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8
d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL1BhcmFsbGVsSm9icy5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgRkVHYXVzc2lh
bkJsdXI6OnNldFN0ZERldmlhdGlvblkoZmxvYXQgeSkKICAgICBtX3N0ZFkgPSB5OwogfQogCi1p
bmxpbmUgdm9pZCBib3hCbHVyKEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmF5KiBk
c3RQaXhlbEFycmF5LAoraW5saW5lIHZvaWQgYm94Qmx1cihVaW50OENsYW1wZWRBcnJheSogc3Jj
UGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXksCiAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGR4LCBpbnQgZHhMZWZ0LCBpbnQgZHhSaWdodCwgaW50IHN0cmlk
ZSwgaW50IHN0cmlkZUxpbmUsIGludCBlZmZlY3RXaWR0aCwgaW50IGVmZmVjdEhlaWdodCwgYm9v
bCBhbHBoYUltYWdlKQogewogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgZWZmZWN0SGVpZ2h0OyAr
K3kpIHsKQEAgLTkwLDE2ICs5MCwxNiBAQCBpbmxpbmUgdm9pZCBib3hCbHVyKEJ5dGVBcnJheSog
c3JjUGl4ZWxBcnJheSwgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5LAogICAgICAgICAgICAgLy8g
RmlsbCB0aGUga2VybmVsCiAgICAgICAgICAgICBpbnQgbWF4S2VybmVsU2l6ZSA9IG1pbihkeFJp
Z2h0LCBlZmZlY3RXaWR0aCk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heEtl
cm5lbFNpemU7ICsraSkKLSAgICAgICAgICAgICAgICBzdW0gKz0gc3JjUGl4ZWxBcnJheS0+Z2V0
KGxpbmUgKyBpICogc3RyaWRlICsgY2hhbm5lbCk7CisgICAgICAgICAgICAgICAgc3VtICs9IHNy
Y1BpeGVsQXJyYXktPml0ZW0obGluZSArIGkgKiBzdHJpZGUgKyBjaGFubmVsKTsKIAogICAgICAg
ICAgICAgLy8gQmx1cnJpbmcKICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgZWZmZWN0
V2lkdGg7ICsreCkgewogICAgICAgICAgICAgICAgIGludCBwaXhlbEJ5dGVPZmZzZXQgPSBsaW5l
ICsgeCAqIHN0cmlkZSArIGNoYW5uZWw7CiAgICAgICAgICAgICAgICAgZHN0UGl4ZWxBcnJheS0+
c2V0KHBpeGVsQnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc3VtIC8gZHgp
KTsKICAgICAgICAgICAgICAgICBpZiAoeCA+PSBkeExlZnQpCi0gICAgICAgICAgICAgICAgICAg
IHN1bSAtPSBzcmNQaXhlbEFycmF5LT5nZXQocGl4ZWxCeXRlT2Zmc2V0IC0gZHhMZWZ0ICogc3Ry
aWRlKTsKKyAgICAgICAgICAgICAgICAgICAgc3VtIC09IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4
ZWxCeXRlT2Zmc2V0IC0gZHhMZWZ0ICogc3RyaWRlKTsKICAgICAgICAgICAgICAgICBpZiAoeCAr
IGR4UmlnaHQgPCBlZmZlY3RXaWR0aCkKLSAgICAgICAgICAgICAgICAgICAgc3VtICs9IHNyY1Bp
eGVsQXJyYXktPmdldChwaXhlbEJ5dGVPZmZzZXQgKyBkeFJpZ2h0ICogc3RyaWRlKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3VtICs9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxCeXRlT2Zmc2V0
ICsgZHhSaWdodCAqIHN0cmlkZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYWxw
aGFJbWFnZSkgLy8gU291cmNlIGltYWdlIGlzIGJsYWNrLCBpdCBqdXN0IGhhcyBkaWZmZXJlbnQg
YWxwaGEgdmFsdWVzCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcsMTUgKzEwNywxNSBA
QCBpbmxpbmUgdm9pZCBib3hCbHVyKEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmF5
KiBkc3RQaXhlbEFycmF5LAogICAgIH0KIH0KIAotaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6
OnBsYXRmb3JtQXBwbHlHZW5lcmljKEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmF5
KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6
ZVksIEludFNpemUmIHBhaW50U2l6ZSkKK2lubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0
Zm9ybUFwcGx5R2VuZXJpYyhVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSwgVWludDhD
bGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25l
ZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKQogewogICAgIGludCBzdHJpZGUgPSA0
ICogcGFpbnRTaXplLndpZHRoKCk7CiAgICAgaW50IGR4TGVmdCA9IDA7CiAgICAgaW50IGR4Umln
aHQgPSAwOwogICAgIGludCBkeUxlZnQgPSAwOwogICAgIGludCBkeVJpZ2h0ID0gMDsKLSAgICBC
eXRlQXJyYXkqIHNyYyA9IHNyY1BpeGVsQXJyYXk7Ci0gICAgQnl0ZUFycmF5KiBkc3QgPSB0bXBQ
aXhlbEFycmF5OworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmMgPSBzcmNQaXhlbEFycmF5Owor
ICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3QgPSB0bXBQaXhlbEFycmF5OwogCiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgICAgaWYgKGtlcm5lbFNpemVYKSB7CkBAIC0x
NTEsNyArMTUxLDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVdvcmtlcihQ
bGF0Zm9ybUFwcGx5UGFyYW1ldGVycyogcGFyYW1ldGVycykKICNlbmRpZgogfQogCi1pbmxpbmUg
dm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseShCeXRlQXJyYXkqIHNyY1BpeGVsQXJy
YXksIEJ5dGVBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2ln
bmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpCitpbmxpbmUgdm9pZCBGRUdhdXNz
aWFuQmx1cjo6cGxhdGZvcm1BcHBseShVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJheSwg
VWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1
bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKQogewogICAgIGludCBzY2Fu
bGluZSA9IDQgKiBwYWludFNpemUud2lkdGgoKTsKICAgICBpbnQgZXh0cmFIZWlnaHQgPSAzICog
a2VybmVsU2l6ZVkgKiAwLjVmOwpAQCAtMTg1LDggKzE4NSw4IEBAIGlubGluZSB2b2lkIEZFR2F1
c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5KEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFy
cmF5KiB0CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBpbnQg
YmxvY2tTaXplID0gKGVuZFkgLSBzdGFydFkpICogc2NhbmxpbmU7Ci0gICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy5zcmNQaXhlbEFycmF5ID0gQnl0ZUFycmF5OjpjcmVhdGUoYmxvY2tTaXplKTsK
LSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmRzdFBpeGVsQXJyYXkgPSBCeXRlQXJyYXk6OmNy
ZWF0ZShibG9ja1NpemUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc3JjUGl4ZWxBcnJh
eSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGJsb2NrU2l6ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy5kc3RQaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoYmxvY2tTaXplKTsKICAgICAgICAgICAgICAgICAgICAg
bWVtY3B5KHBhcmFtcy5zcmNQaXhlbEFycmF5LT5kYXRhKCksIHNyY1BpeGVsQXJyYXktPmRhdGEo
KSArIHN0YXJ0WSAqIHNjYW5saW5lLCBibG9ja1NpemUpOwogICAgICAgICAgICAgICAgIH0KIApA
QCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0gICAg
Qnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0
aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBpZiAoIXNyY1BpeGVsQXJyYXkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMjkyLDggKzI5Miw4IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgY2FsY3VsYXRlS2VybmVsU2l6ZShmaWx0ZXIoKSwga2VybmVs
U2l6ZVgsIGtlcm5lbFNpemVZLCBtX3N0ZFgsIG1fc3RkWSk7CiAKICAgICBJbnRTaXplIHBhaW50
U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+
IHRtcEltYWdlRGF0YSA9IEJ5dGVBcnJheTo6Y3JlYXRlKHBhaW50U2l6ZS53aWR0aCgpICogcGFp
bnRTaXplLmhlaWdodCgpICogNCk7Ci0gICAgQnl0ZUFycmF5KiB0bXBQaXhlbEFycmF5ID0gdG1w
SW1hZ2VEYXRhLmdldCgpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdG1wSW1hZ2VE
YXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocGFpbnRTaXplLndp
ZHRoKCkgKiBwYWludFNpemUuaGVpZ2h0KCkgKiA0KTsKKyAgICBVaW50OENsYW1wZWRBcnJheSog
dG1wUGl4ZWxBcnJheSA9IHRtcEltYWdlRGF0YS5nZXQoKTsKIAogICAgIHBsYXRmb3JtQXBwbHko
c3JjUGl4ZWxBcnJheSwgdG1wUGl4ZWxBcnJheSwga2VybmVsU2l6ZVgsIGtlcm5lbFNpemVZLCBw
YWludFNpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCmluZGV4IGIyOTVkMzYwODA3NDAwNTIzNDMz
NmEzYjEyNDZkZDk1Mjc5ZWY0ZjcuLmMzZGIxZjE1MDZhMjhmMTEzMGI4Mjg3YWY0ODI3MmM1ZjIz
MGY2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKQEAgLTU3LDggKzU3LDggQEAgcHJpdmF0ZToKIAog
ICAgIHN0cnVjdCBQbGF0Zm9ybUFwcGx5UGFyYW1ldGVycyB7CiAgICAgICAgIEZFR2F1c3NpYW5C
bHVyKiBmaWx0ZXI7Ci0gICAgICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXk7Ci0g
ICAgICAgIFJlZlB0cjxCeXRlQXJyYXk+IGRzdFBpeGVsQXJyYXk7CisgICAgICAgIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheTsKKyAgICAgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBkc3RQaXhlbEFycmF5OwogICAgICAgICBpbnQgd2lkdGg7CiAgICAgICAgIGlu
dCBoZWlnaHQ7CiAgICAgICAgIHVuc2lnbmVkIGtlcm5lbFNpemVYOwpAQCAtNzAsMTAgKzcwLDEw
IEBAIHByaXZhdGU6CiAgICAgRkVHYXVzc2lhbkJsdXIoRmlsdGVyKiwgZmxvYXQsIGZsb2F0KTsK
IAogICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBrZXJuZWxQb3NpdGlvbihpbnQgYm94Qmx1ciwgdW5z
aWduZWQmIHN0ZCwgaW50JiBkTGVmdCwgaW50JiBkUmlnaHQpOwotICAgIGlubGluZSB2b2lkIHBs
YXRmb3JtQXBwbHkoQnl0ZUFycmF5KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIHRtcFBpeGVs
QXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6
ZSYgcGFpbnRTaXplKTsKKyAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFwcGx5KFVpbnQ4Q2xhbXBl
ZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1wZWRBcnJheSogdG1wUGl4ZWxBcnJheSwg
dW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWlu
dFNpemUpOwogCi0gICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseUdlbmVyaWMoQnl0ZUFycmF5
KiBzcmNQaXhlbEFycmF5LCBCeXRlQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5l
bFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKTsKLSAgICBp
bmxpbmUgdm9pZCBwbGF0Zm9ybUFwcGx5TmVvbihCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5
dGVBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtl
cm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpOworICAgIGlubGluZSB2b2lkIHBsYXRmb3Jt
QXBwbHlHZW5lcmljKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1w
ZWRBcnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtl
cm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpOworICAgIGlubGluZSB2b2lkIHBsYXRmb3Jt
QXBwbHlOZW9uKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENsYW1wZWRB
cnJheSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5l
bFNpemVZLCBJbnRTaXplJiBwYWludFNpemUpOwogI2lmIFVTRShTS0lBKQogICAgIHZpcnR1YWwg
Ym9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCBlNzk1
ZDM1NDk0YjYxOTg5N2NlOTg3ODE5ODE3ODVmNjg4ZTI1YzEwLi45ZDM4NmZjNmFkZjAzYzJhZDY3
YTI0NTc2MmU1NWZlNzcyMDI5YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTYxLDExNCArNjEsMTE0
IEBAIGNvbnN0IHN0YXRpYyBmbG9hdCBjRmFjdG9yMmRpdjMgPSAtMiAvIDMuZjsKIC8vIDw8IDEg
aXMgc2lnbmVkIG11bHRpcGx5IGJ5IDIKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OkxpZ2h0aW5n
RGF0YTo6dG9wTGVmdChpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFsVmVjdG9yKQogewotICAg
IGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBo
YUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAg
aW50IGNlbnRlciA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBo
YUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAg
IG9mZnNldCArPSB3aWR0aE11bHRpcGxpZWRCeVBpeGVsU2l6ZTsKLSAgICBpbnQgYm90dG9tID0g
c3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0
KSk7Ci0gICAgaW50IGJvdHRvbVJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChv
ZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0
b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbVJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMt
Pml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBu
b3JtYWxWZWN0b3Iuc2V0WCgtKGNlbnRlciA8PCAxKSArIChyaWdodCA8PCAxKSAtIGJvdHRvbSAr
IGJvdHRvbVJpZ2h0KTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WSgtKGNlbnRlciA8PCAxKSAtIHJp
Z2h0ICsgKGJvdHRvbSA8PCAxKSArIGJvdHRvbVJpZ2h0KTsKIH0KIAogaW5saW5lIHZvaWQgRkVM
aWdodGluZzo6TGlnaHRpbmdEYXRhOjp0b3BSb3coaW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1h
bFZlY3RvcikKIHsKLSAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQo
b2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgY2Vu
dGVyID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7Ci0gICAgaW50IHJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChv
ZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBsZWZ0
ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNB
bHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCByaWdo
dCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNpemUgKyBj
QWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0ICs9IHdpZHRoTXVsdGlwbGllZEJ5UGl4
ZWxTaXplOwotICAgIGludCBib3R0b21MZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdl
dChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBi
b3R0b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5u
ZWxPZmZzZXQpKTsKLSAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAg
aW50IGJvdHRvbUxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBj
UGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0b20gPSBzdGF0
aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7
CisgICAgaW50IGJvdHRvbVJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zm
c2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0
b3Iuc2V0WCgtKGxlZnQgPDwgMSkgKyAocmlnaHQgPDwgMSkgLSBib3R0b21MZWZ0ICsgYm90dG9t
UmlnaHQpOwogICAgIG5vcm1hbFZlY3Rvci5zZXRZKC1sZWZ0IC0gKGNlbnRlciA8PCAxKSAtIHJp
Z2h0ICsgYm90dG9tTGVmdCArIChib3R0b20gPDwgMSkgKyBib3R0b21SaWdodCk7CiB9CiAKIGlu
bGluZSB2b2lkIEZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6dG9wUmlnaHQoaW50IG9mZnNldCwg
SW50UG9pbnQmIG5vcm1hbFZlY3RvcikKIHsKLSAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxzLT5nZXQob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQp
KTsKLSAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQg
KyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+
KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkp
OworICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQg
KyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0ICs9IHdpZHRoTXVsdGlwbGllZEJ5
UGl4ZWxTaXplOwotICAgIGludCBib3R0b21MZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMt
PmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGlu
dCBib3R0b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNo
YW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgYm90dG9tTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4
ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Cisg
ICAgaW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNB
bHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtKGxlZnQgPDwgMSkg
KyAoY2VudGVyIDw8IDEpIC0gYm90dG9tTGVmdCArIGJvdHRvbSk7CiAgICAgbm9ybWFsVmVjdG9y
LnNldFkoLWxlZnQgLSAoY2VudGVyIDw8IDEpICsgYm90dG9tTGVmdCArIChib3R0b20gPDwgMSkp
OwogfQogCiBpbmxpbmUgdm9pZCBGRUxpZ2h0aW5nOjpMaWdodGluZ0RhdGE6OmxlZnRDb2x1bW4o
aW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1hbFZlY3RvcikKIHsKLSAgICBpbnQgY2VudGVyID0g
c3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0
KSk7Ci0gICAgaW50IHJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQg
KyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIgPSBz
dGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0
KSk7CisgICAgaW50IHJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0
ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgLT0gd2lk
dGhNdWx0aXBsaWVkQnlQaXhlbFNpemU7Ci0gICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4o
cGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCB0b3BS
aWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSAr
IGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCB0b3BS
aWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNpemUg
KyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0ICs9IHdpZHRoTXVsdGlwbGllZEJ5
UGl4ZWxTaXplIDw8IDE7Ci0gICAgaW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxz
LT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCBib3R0b21SaWdo
dCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNB
bHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgYm90dG9tID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0
b21SaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQaXhlbFNp
emUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgbm9ybWFsVmVjdG9yLnNldFgoLXRvcCAr
IHRvcFJpZ2h0IC0gKGNlbnRlciA8PCAxKSArIChyaWdodCA8PCAxKSAtIGJvdHRvbSArIGJvdHRv
bVJpZ2h0KTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WSgtKHRvcCA8PCAxKSAtIHRvcFJpZ2h0ICsg
KGJvdHRvbSA8PCAxKSArIGJvdHRvbVJpZ2h0KTsKIH0KIAogaW5saW5lIHZvaWQgRkVMaWdodGlu
Zzo6TGlnaHRpbmdEYXRhOjppbnRlcmlvcihpbnQgb2Zmc2V0LCBJbnRQb2ludCYgbm9ybWFsVmVj
dG9yKQogewotICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZz
ZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCByaWdodCA9
IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBo
YUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxz
LT5pdGVtKG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAg
aW50IHJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVs
U2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBvZmZzZXQgLT0gd2lkdGhNdWx0aXBs
aWVkQnlQaXhlbFNpemU7Ci0gICAgaW50IHRvcExlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVs
cy0+Z2V0KG9mZnNldCAtIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAg
aW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hh
bm5lbE9mZnNldCkpOwotICAgIGludCB0b3BSaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxz
LT5nZXQob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBp
bnQgdG9wTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhl
bFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcCA9IHN0YXRpY19jYXN0
PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBp
bnQgdG9wUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4
ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG9mZnNldCArPSB3aWR0aE11bHRp
cGxpZWRCeVBpeGVsU2l6ZSA8PCAxOwotICAgIGludCBib3R0b21MZWZ0ID0gc3RhdGljX2Nhc3Q8
aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNl
dCkpOwotICAgIGludCBib3R0b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNl
dCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgYm90dG9tUmlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbUxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+
aXRlbShvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGlu
dCBib3R0b20gPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFD
aGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJvdHRvbVJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
ICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtdG9wTGVmdCArIHRvcFJpZ2h0IC0gKGxlZnQgPDwgMSkg
KyAocmlnaHQgPDwgMSkgLSBib3R0b21MZWZ0ICsgYm90dG9tUmlnaHQpOwogICAgIG5vcm1hbFZl
Y3Rvci5zZXRZKC10b3BMZWZ0IC0gKHRvcCA8PCAxKSAtIHRvcFJpZ2h0ICsgYm90dG9tTGVmdCAr
IChib3R0b20gPDwgMSkgKyBib3R0b21SaWdodCk7CiB9CiAKIGlubGluZSB2b2lkIEZFTGlnaHRp
bmc6OkxpZ2h0aW5nRGF0YTo6cmlnaHRDb2x1bW4oaW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1h
bFZlY3RvcikKIHsKLSAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQo
b2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgY2Vu
dGVyID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7CisgICAgaW50IGxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShv
ZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50
ZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVs
T2Zmc2V0KSk7CiAgICAgb2Zmc2V0IC09IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwotICAg
IGludCB0b3BMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4
ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCB0b3AgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBp
bnQgdG9wTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhl
bFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcCA9IHN0YXRpY19jYXN0
PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBv
ZmZzZXQgKz0gd2lkdGhNdWx0aXBsaWVkQnlQaXhlbFNpemUgPDwgMTsKLSAgICBpbnQgYm90dG9t
TGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zmc2V0IC0gY1BpeGVsU2l6ZSAr
IGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgYm90dG9tID0gc3RhdGljX2Nhc3Q8aW50
PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGJv
dHRvbUxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBjUGl4ZWxT
aXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBib3R0b20gPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAg
bm9ybWFsVmVjdG9yLnNldFgoLXRvcExlZnQgKyB0b3AgLSAobGVmdCA8PCAxKSArIChjZW50ZXIg
PDwgMSkgLSBib3R0b21MZWZ0ICsgYm90dG9tKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WSgtdG9w
TGVmdCAtICh0b3AgPDwgMSkgKyBib3R0b21MZWZ0ICsgKGJvdHRvbSA8PCAxKSk7CiB9CiAKIGlu
bGluZSB2b2lkIEZFTGlnaHRpbmc6OkxpZ2h0aW5nRGF0YTo6Ym90dG9tTGVmdChpbnQgb2Zmc2V0
LCBJbnRQb2ludCYgbm9ybWFsVmVjdG9yKQogewotICAgIGludCBjZW50ZXIgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBp
bnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNQaXhlbFNp
emUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IGNlbnRlciA9IHN0YXRpY19jYXN0
PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBp
bnQgcmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjUGl4ZWxT
aXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwogICAgIG9mZnNldCAtPSB3aWR0aE11bHRpcGxp
ZWRCeVBpeGVsU2l6ZTsKLSAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdl
dChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHRvcFJpZ2h0ID0gc3Rh
dGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hh
bm5lbE9mZnNldCkpOworICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRl
bShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcFJpZ2h0ID0gc3Rh
dGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY1BpeGVsU2l6ZSArIGNBbHBoYUNo
YW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WCgtdG9wICsgdG9wUmlnaHQgLSAo
Y2VudGVyIDw8IDEpICsgKHJpZ2h0IDw8IDEpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0WSgtKHRv
cCA8PCAxKSAtIHRvcFJpZ2h0ICsgKGNlbnRlciA8PCAxKSArIHJpZ2h0KTsKIH0KIAogaW5saW5l
IHZvaWQgRkVMaWdodGluZzo6TGlnaHRpbmdEYXRhOjpib3R0b21Sb3coaW50IG9mZnNldCwgSW50
UG9pbnQmIG5vcm1hbFZlY3RvcikKIHsKLSAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4o
cGl4ZWxzLT5nZXQob2Zmc2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsK
LSAgICBpbnQgY2VudGVyID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBj
QWxwaGFDaGFubmVsT2Zmc2V0KSk7Ci0gICAgaW50IHJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPmdldChvZmZzZXQgKyBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwor
ICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0IC0gY1Bp
eGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQgY2VudGVyID0gc3RhdGlj
X2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwor
ICAgIGludCByaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNQ
aXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CiAgICAgb2Zmc2V0IC09IHdpZHRoTXVs
dGlwbGllZEJ5UGl4ZWxTaXplOwotICAgIGludCB0b3BMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50Pihw
aXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwot
ICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBo
YUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgdG9wUmlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBp
eGVscy0+Z2V0KG9mZnNldCArIGNQaXhlbFNpemUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Cisg
ICAgaW50IHRvcExlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgLSBj
UGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCB0b3AgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7Cisg
ICAgaW50IHRvcFJpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPml0ZW0ob2Zmc2V0ICsg
Y1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3JtYWxWZWN0b3Iuc2V0
WCgtdG9wTGVmdCArIHRvcFJpZ2h0IC0gKGxlZnQgPDwgMSkgKyAocmlnaHQgPDwgMSkpOwogICAg
IG5vcm1hbFZlY3Rvci5zZXRZKC10b3BMZWZ0IC0gKHRvcCA8PCAxKSAtIHRvcFJpZ2h0ICsgbGVm
dCArIChjZW50ZXIgPDwgMSkgKyByaWdodCk7CiB9CiAKIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6
OkxpZ2h0aW5nRGF0YTo6Ym90dG9tUmlnaHQoaW50IG9mZnNldCwgSW50UG9pbnQmIG5vcm1hbFZl
Y3RvcikKIHsKLSAgICBpbnQgbGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5nZXQob2Zm
c2V0IC0gY1BpeGVsU2l6ZSArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKLSAgICBpbnQgY2VudGVy
ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zm
c2V0KSk7CisgICAgaW50IGxlZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZz
ZXQgLSBjUGl4ZWxTaXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOworICAgIGludCBjZW50ZXIg
PSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVscy0+aXRlbShvZmZzZXQgKyBjQWxwaGFDaGFubmVsT2Zm
c2V0KSk7CiAgICAgb2Zmc2V0IC09IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwotICAgIGlu
dCB0b3BMZWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbHMtPmdldChvZmZzZXQgLSBjUGl4ZWxT
aXplICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpOwotICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDxp
bnQ+KHBpeGVscy0+Z2V0KG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKKyAgICBpbnQg
dG9wTGVmdCA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxzLT5pdGVtKG9mZnNldCAtIGNQaXhlbFNp
emUgKyBjQWxwaGFDaGFubmVsT2Zmc2V0KSk7CisgICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGlu
dD4ocGl4ZWxzLT5pdGVtKG9mZnNldCArIGNBbHBoYUNoYW5uZWxPZmZzZXQpKTsKICAgICBub3Jt
YWxWZWN0b3Iuc2V0WCgtdG9wTGVmdCArIHRvcCAtIChsZWZ0IDw8IDEpICsgKGNlbnRlciA8PCAx
KSk7CiAgICAgbm9ybWFsVmVjdG9yLnNldFkoLXRvcExlZnQgLSAodG9wIDw8IDEpICsgbGVmdCAr
IChjZW50ZXIgPDwgMSkpOwogfQpAQCAtMTc2LDcgKzE3Niw3IEBAIGlubGluZSB2b2lkIEZFTGln
aHRpbmc6OkxpZ2h0aW5nRGF0YTo6Ym90dG9tUmlnaHQoaW50IG9mZnNldCwgSW50UG9pbnQmIG5v
cm1hbFZlCiBpbmxpbmUgdm9pZCBGRUxpZ2h0aW5nOjppbmxpbmVTZXRQaXhlbChpbnQgb2Zmc2V0
LCBMaWdodGluZ0RhdGEmIGRhdGEsIExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEmIHBhaW50aW5n
RGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaWdodFgs
IGludCBsaWdodFksIGZsb2F0IGZhY3RvclgsIGZsb2F0IGZhY3RvclksIEludFBvaW50JiBub3Jt
YWwyRFZlY3RvcikKIHsKLSAgICBtX2xpZ2h0U291cmNlLT51cGRhdGVQYWludGluZ0RhdGEocGFp
bnRpbmdEYXRhLCBsaWdodFgsIGxpZ2h0WSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRhdGEucGl4ZWxz
LT5nZXQob2Zmc2V0ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpICogZGF0YS5zdXJmYWNlU2NhbGUp
OworICAgIG1fbGlnaHRTb3VyY2UtPnVwZGF0ZVBhaW50aW5nRGF0YShwYWludGluZ0RhdGEsIGxp
Z2h0WCwgbGlnaHRZLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGF0YS5waXhlbHMtPml0ZW0ob2Zmc2V0
ICsgY0FscGhhQ2hhbm5lbE9mZnNldCkpICogZGF0YS5zdXJmYWNlU2NhbGUpOwogCiAgICAgZmxv
YXQgbGlnaHRTdHJlbmd0aDsKICAgICBpZiAoIW5vcm1hbDJEVmVjdG9yLngoKSAmJiAhbm9ybWFs
MkRWZWN0b3IueSgpKSB7CkBAIC0yOTAsNyArMjkwLDcgQEAgaW5saW5lIHZvaWQgRkVMaWdodGlu
Zzo6cGxhdGZvcm1BcHBseShMaWdodGluZ0RhdGEmIGRhdGEsIExpZ2h0U291cmNlOjpQYWludGlu
Z0QKICNlbmRpZgogfQogCi1ib29sIEZFTGlnaHRpbmc6OmRyYXdMaWdodGluZyhCeXRlQXJyYXkq
IHBpeGVscywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQorYm9vbCBGRUxpZ2h0aW5nOjpkcmF3TGln
aHRpbmcoVWludDhDbGFtcGVkQXJyYXkqIHBpeGVscywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog
ewogICAgIExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhOwogICAgIExpZ2h0
aW5nRGF0YSBkYXRhOwpAQCAtMzczLDkgKzM3Myw5IEBAIGJvb2wgRkVMaWdodGluZzo6ZHJhd0xp
Z2h0aW5nKEJ5dGVBcnJheSogcGl4ZWxzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgICAg
ICAgICBkYXRhLnBpeGVscy0+c2V0KGksIGNPcGFxdWVBbHBoYSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsYXN0UGl4ZWw7IGkgKz0gY1BpeGVsU2l6ZSkgewot
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhMSA9IGRhdGEucGl4ZWxzLT5nZXQoaSk7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGEyID0gZGF0YS5waXhlbHMtPmdldChpICsgMSk7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGEzID0gZGF0YS5waXhlbHMtPmdldChpICsgMik7CisgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGExID0gZGF0YS5waXhlbHMtPml0ZW0oaSk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIGEyID0gZGF0YS5waXhlbHMtPml0ZW0oaSArIDEpOworICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBhMyA9IGRhdGEucGl4ZWxzLT5pdGVtKGkgKyAyKTsKICAgICAg
ICAgICAgIC8vIGFscGhhIHNldCB0byBzZXQgdG8gbWF4KGExLCBhMiwgYTMpCiAgICAgICAgICAg
ICBkYXRhLnBpeGVscy0+c2V0KGkgKyAzLCBhMSA+PSBhMiA/IChhMSA+PSBhMyA/IGExIDogYTMp
IDogKGEyID49IGEzID8gYTIgOiBhMykpOwogICAgICAgICB9CkBAIC0zODgsNyArMzg4LDcgQEAg
dm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogewogICAgIEZpbHRlckVm
ZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAotICAgIEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJh
eSA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgVWludDhDbGFtcGVkQXJy
YXkqIHNyY1BpeGVsQXJyYXkgPSBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogICAg
IGlmICghc3JjUGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCmluZGV4IDU0
MjZmOTEyYzlhOGE3YzA4MGViODViNTY4MTc0Nzk2NWM5NGRiZjEuLmQwZDJiMzY4NWU1MjJhYzQ4
ZWIwNGI5Njc5NzlmMmEzYzYwNWRlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCkBAIC0zNCw4ICszNCw4IEBACiAj
aW5jbHVkZSAiTGlnaHRTb3VyY2UuaCIKICNpbmNsdWRlICJQb2ludExpZ2h0U291cmNlLmgiCiAj
aW5jbHVkZSAiU3BvdExpZ2h0U291cmNlLmgiCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJh
eS5oPgogCiAvLyBDb21tb24gYmFzZSBjbGFzcyBmb3IgRkVEaWZmdXNlTGlnaHRpbmcgYW5kIEZF
U3BlY3VsYXJMaWdodGluZwogCkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0
cnVjdCBMaWdodGluZ0RhdGEgewogICAgICAgICAvLyBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBv
bmx5IHJlYWQtb25seSAoU01QIHNhZmUpIGRhdGEKLSAgICAgICAgQnl0ZUFycmF5KiBwaXhlbHM7
CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbHM7CiAgICAgICAgIGZsb2F0IHN1cmZh
Y2VTY2FsZTsKICAgICAgICAgaW50IHdpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplOwogICAgICAg
ICBpbnQgd2lkdGhEZWNyZWFzZWRCeU9uZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgRkVMaWdodGluZyhGaWx0ZXIqLCBMaWdodGluZ1R5cGUsIGNvbnN0IENvbG9yJiwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUGFzc1JlZlB0cjxMaWdodFNv
dXJjZT4pOwogCi0gICAgYm9vbCBkcmF3TGlnaHRpbmcoQnl0ZUFycmF5KiwgaW50LCBpbnQpOwor
ICAgIGJvb2wgZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5KiwgaW50LCBpbnQpOwogICAg
IGlubGluZSB2b2lkIGlubGluZVNldFBpeGVsKGludCBvZmZzZXQsIExpZ2h0aW5nRGF0YSYsIExp
Z2h0U291cmNlOjpQYWludGluZ0RhdGEmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBsaWdodFgsIGludCBsaWdodFksIGZsb2F0IGZhY3RvclgsIGZsb2F0IGZhY3RvclksIElu
dFBvaW50JiBub3JtYWxWZWN0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggNWJhNGRmYzE0
YzFlMThkMThjYmIzZTkzZTNkZTMwMGQwZmRiNzM5OC4uOThkMmE2YTAxYzQ5OTIzZTlmZDJjYjA2
OTIwMjM4MWY0MDdkOTRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtMzAsOCArMzAsOCBAQAog
I2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAK
LSNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9icy5o
PgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogdXNpbmcgc3RkOjptaW47CkBAIC0xMDYsOCArMTA2LDggQEAgYm9vbCBGRU1vcnBo
b2xvZ3k6OnNldFJhZGl1c1koZmxvYXQgcmFkaXVzWSkKIAogdm9pZCBGRU1vcnBob2xvZ3k6OnBs
YXRmb3JtQXBwbHlHZW5lcmljKFBhaW50aW5nRGF0YSogcGFpbnRpbmdEYXRhLCBpbnQgeVN0YXJ0
LCBpbnQgeUVuZCkKIHsKLSAgICBCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXkgPSBwYWludGluZ0Rh
dGEtPnNyY1BpeGVsQXJyYXk7Ci0gICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0gcGFpbnRp
bmdEYXRhLT5kc3RQaXhlbEFycmF5OworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFy
cmF5ID0gcGFpbnRpbmdEYXRhLT5zcmNQaXhlbEFycmF5OworICAgIFVpbnQ4Q2xhbXBlZEFycmF5
KiBkc3RQaXhlbEFycmF5ID0gcGFpbnRpbmdEYXRhLT5kc3RQaXhlbEFycmF5OwogICAgIGNvbnN0
IGludCB3aWR0aCA9IHBhaW50aW5nRGF0YS0+d2lkdGg7CiAgICAgY29uc3QgaW50IGhlaWdodCA9
IHBhaW50aW5nRGF0YS0+aGVpZ2h0OwogICAgIGNvbnN0IGludCBlZmZlY3RXaWR0aCA9IHdpZHRo
ICogNDsKQEAgLTEyMiw5ICsxMjIsOSBAQCB2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBs
eUdlbmVyaWMoUGFpbnRpbmdEYXRhKiBwYWludGluZ0RhdGEsIGludCB5U3RhcnQsCiAgICAgICAg
ICAgICBleHRyZW1hLmNsZWFyKCk7CiAgICAgICAgICAgICAvLyBDb21wdXRlIGV4dHJlbWFzIGZv
ciBlYWNoIGNvbHVtbnMKICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDw9IHJhZGl1c1g7
ICsreCkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVtYSA9IHNy
Y1BpeGVsQXJyYXktPmdldChleHRyZW1hU3RhcnRZICogZWZmZWN0V2lkdGggKyA0ICogeCArIGNs
ckNoYW5uZWwpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29sdW1uRXh0cmVtYSA9
IHNyY1BpeGVsQXJyYXktPml0ZW0oZXh0cmVtYVN0YXJ0WSAqIGVmZmVjdFdpZHRoICsgNCAqIHgg
KyBjbHJDaGFubmVsKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBlWSA9IGV4dHJlbWFTdGFy
dFkgKyAxOyBlWSA8IGV4dHJlbWFFbmRZOyArK2VZKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgcGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5nZXQoZVkgKiBlZmZlY3RXaWR0aCAr
IDQgKiB4ICsgY2xyQ2hhbm5lbCk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
cGl4ZWwgPSBzcmNQaXhlbEFycmF5LT5pdGVtKGVZICogZWZmZWN0V2lkdGggKyA0ICogeCArIGNs
ckNoYW5uZWwpOwogICAgICAgICAgICAgICAgICAgICBpZiAoKG1fdHlwZSA9PSBGRU1PUlBIT0xP
R1lfT1BFUkFUT1JfRVJPREUgJiYgcGl4ZWwgPD0gY29sdW1uRXh0cmVtYSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSAm
JiBwaXhlbCA+PSBjb2x1bW5FeHRyZW1hKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY29s
dW1uRXh0cmVtYSA9IHBpeGVsOwpAQCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQgRkVNb3JwaG9sb2d5
OjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyhQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YSwgaW50IHlT
dGFydCwKICAgICAgICAgICAgIC8vIEtlcm5lbCBpcyBmaWxsZWQsIGdldCBleHRyZW1hIG9mIG5l
eHQgY29sdW1uCiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gpIHsK
ICAgICAgICAgICAgICAgICBjb25zdCBpbnQgZW5kWCA9IG1pbih4ICsgcmFkaXVzWCwgd2lkdGgg
LSAxKTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEgPSBzcmNQ
aXhlbEFycmF5LT5nZXQoZXh0cmVtYVN0YXJ0WSAqIGVmZmVjdFdpZHRoICsgZW5kWCAqIDQgKyBj
bHJDaGFubmVsKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbHVtbkV4dHJlbWEg
PSBzcmNQaXhlbEFycmF5LT5pdGVtKGV4dHJlbWFTdGFydFkgKiBlZmZlY3RXaWR0aCArIGVuZFgg
KiA0ICsgY2xyQ2hhbm5lbCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IGV4dHJlbWFT
dGFydFkgKyAxOyBpIDw9IGV4dHJlbWFFbmRZOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBwaXhlbCA9IHNyY1BpeGVsQXJyYXktPmdldChpICogZWZmZWN0V2lkdGgg
KyBlbmRYICogNCArIGNsckNoYW5uZWwpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIHBpeGVsID0gc3JjUGl4ZWxBcnJheS0+aXRlbShpICogZWZmZWN0V2lkdGggKyBlbmRYICog
NCArIGNsckNoYW5uZWwpOwogICAgICAgICAgICAgICAgICAgICBpZiAoKG1fdHlwZSA9PSBGRU1P
UlBIT0xPR1lfT1BFUkFUT1JfRVJPREUgJiYgcGl4ZWwgPD0gY29sdW1uRXh0cmVtYSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHx8IChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJ
TEFURSAmJiBwaXhlbCA+PSBjb2x1bW5FeHRyZW1hKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbHVtbkV4dHJlbWEgPSBwaXhlbDsKQEAgLTE5NywxMyArMTk3LDEzIEBAIHZvaWQgRkVNb3Jw
aG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVjdCogaW4g
PSBpbnB1dEVmZmVjdCgwKTsKIAotICAgIEJ5dGVBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0
ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQ
aXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgaWYgKCFk
c3RQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKICAgICBzZXRJc0FscGhhSW1hZ2UoaW4t
PmlzQWxwaGFJbWFnZSgpKTsKICAgICBpZiAobV9yYWRpdXNYIDw9IDAgfHwgbV9yYWRpdXNZIDw9
IDApIHsKLSAgICAgICAgZHN0UGl4ZWxBcnJheS0+Y2xlYXIoKTsKKyAgICAgICAgZHN0UGl4ZWxB
cnJheS0+emVyb0ZpbGwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjEyLDcgKzIx
Miw3IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlu
dCByYWRpdXNZID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYoZmlsdGVyLT5hcHBseVZlcnRpY2Fs
U2NhbGUobV9yYWRpdXNZKSkpOwogCiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5nUmVjdCA9IHJl
cXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwot
ICAgIFJlZlB0cjxCeXRlQXJyYXk+IHNyY1BpeGVsQXJyYXkgPSBpbi0+YXNQcmVtdWx0aXBsaWVk
SW1hZ2UoZWZmZWN0RHJhd2luZ1JlY3QpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
c3JjUGl4ZWxBcnJheSA9IGluLT5hc1ByZW11bHRpcGxpZWRJbWFnZShlZmZlY3REcmF3aW5nUmVj
dCk7CiAKICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhOwogICAgIHBhaW50aW5nRGF0YS5z
cmNQaXhlbEFycmF5ID0gc3JjUGl4ZWxBcnJheS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCmluZGV4IDU0
MmQyNmIyODM5NmYxOTEyMGYzNjUyYzMwMjk2ZTFiMGQ0YjFmODAuLjE5ZGE2MzVhMmUwM2E2MWFm
MDQwOGVjZDRmOTBmZGU0YjBlMDQ3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaApAQCAtNTcsOCArNTcsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKIAogICAgIHN0cnVjdCBQYWludGlu
Z0RhdGEgewotICAgICAgICBCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXk7Ci0gICAgICAgIEJ5dGVB
cnJheSogZHN0UGl4ZWxBcnJheTsKKyAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVs
QXJyYXk7CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5OwogICAgICAg
ICBpbnQgd2lkdGg7CiAgICAgICAgIGludCBoZWlnaHQ7CiAgICAgICAgIGludCByYWRpdXNYOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1
cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuY3BwCmluZGV4IGQ1ZDY0YzEzMDZmNDhlNzY1OGRlYTU2NDdlMTE0MTE4M2Fk
NTYyZjEuLjAzZGY1NmIzMDcxNTM0Njg2M2ZmODdkMTQ3YzZhYWNiMjUyNjczMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVy
YnVsZW5jZS5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9i
cy5oPgorI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTMzMCw3ICszMzAsNyBAQCB1bnNpZ25lZCBjaGFyIEZFVHVyYnVsZW5jZTo6
Y2FsY3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQoaW50IGNoYW5uZWwsIFBhaW50aQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0dXJidWxlbmNlRnVuY3Rpb25SZXN1
bHQgKiAyNTUpOwogfQogCi1pbmxpbmUgdm9pZCBGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb24oQnl0
ZUFycmF5KiBwaXhlbEFycmF5LCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgaW50IHN0YXJ0
WSwgaW50IGVuZFkpCitpbmxpbmUgdm9pZCBGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb24oVWludDhD
bGFtcGVkQXJyYXkqIHBpeGVsQXJyYXksIFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBpbnQg
c3RhcnRZLCBpbnQgZW5kWSkKIHsKICAgICBJbnRSZWN0IGZpbHRlclJlZ2lvbiA9IGFic29sdXRl
UGFpbnRSZWN0KCk7CiAgICAgSW50UG9pbnQgcG9pbnQoMCwgZmlsdGVyUmVnaW9uLnkoKSArIHN0
YXJ0WSk7CkBAIC0zNTYsMTIgKzM1NiwxMiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lv
bldvcmtlcihGaWxsUmVnaW9uUGFyYW1ldGVycyogcGFyYW1ldGVycykKIAogdm9pZCBGRVR1cmJ1
bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7Ci0gICAgQnl0ZUFycmF5KiBwaXhlbEFy
cmF5ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBVaW50OENsYW1wZWRB
cnJheSogcGl4ZWxBcnJheSA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAg
aWYgKCFwaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYWJzb2x1dGVQYWlu
dFJlY3QoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcGl4ZWxBcnJheS0+Y2xlYXIoKTsKKyAgICAg
ICAgcGl4ZWxBcnJheS0+emVyb0ZpbGwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1
bGVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJi
dWxlbmNlLmgKaW5kZXggNTkyNTdkMDI2ZDM0OTZlMzMyYWViY2E0MWZkNmRmZWJhZWZlMGNhOS4u
NDdjOGJlZTc5OTU2YmQ0ZWIxMmFhMGE2ZDYyY2JhMWM0YjA3YjM1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5o
CkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBGaWxsUmVnaW9uUGFy
YW1ldGVycyB7CiAgICAgICAgIEZFVHVyYnVsZW5jZSogZmlsdGVyOwotICAgICAgICBCeXRlQXJy
YXkqIHBpeGVsQXJyYXk7CisgICAgICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFycmF5Owog
ICAgICAgICBQYWludGluZ0RhdGEqIHBhaW50aW5nRGF0YTsKICAgICAgICAgaW50IHN0YXJ0WTsK
ICAgICAgICAgaW50IGVuZFk7CkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICBpbmxp
bmUgdm9pZCBpbml0UGFpbnQoUGFpbnRpbmdEYXRhJik7CiAgICAgZmxvYXQgbm9pc2UyRChpbnQg
Y2hhbm5lbCwgUGFpbnRpbmdEYXRhJiwgU3RpdGNoRGF0YSYsIGNvbnN0IEZsb2F0UG9pbnQmKTsK
ICAgICB1bnNpZ25lZCBjaGFyIGNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KGludCBj
aGFubmVsLCBQYWludGluZ0RhdGEmLCBTdGl0Y2hEYXRhJiwgY29uc3QgRmxvYXRQb2ludCYpOwot
ICAgIGlubGluZSB2b2lkIGZpbGxSZWdpb24oQnl0ZUFycmF5KiwgUGFpbnRpbmdEYXRhJiwgaW50
LCBpbnQpOworICAgIGlubGluZSB2b2lkIGZpbGxSZWdpb24oVWludDhDbGFtcGVkQXJyYXkqLCBQ
YWludGluZ0RhdGEmLCBpbnQsIGludCk7CiAKICAgICBUdXJidWxlbmNlVHlwZSBtX3R5cGU7CiAg
ICAgZmxvYXQgbV9iYXNlRnJlcXVlbmN5WDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCA4OWQ1ODFj
YWZmNzJhNDE5Y2M3ZDI4YjFjMTE1MzA4ZWZiNTAwOWJkLi44ZGM5MTg1NTM4NWM3Y2ZjNmNkMTJj
ODZhMTBhMjY4YWZkNzYwODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRl
ICJUZXh0U3RyZWFtLmgiCi0jaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorI2luY2x1ZGUgPHd0
Zi9VaW50OENsYW1wZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Zm9yY2VWYWxpZFByZU11bHRpcGxpZWRQaXhl
bHMoKQogICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEJ5dGVBcnJheSogaW1hZ2VBcnJheSA9IG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0LmdldCgpOworICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBpbWFnZUFycmF5ID0gbV9wcmVtdWx0
aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7CiAgICAgdW5zaWduZWQgY2hhciogcGl4ZWxEYXRhID0g
aW1hZ2VBcnJheS0+ZGF0YSgpOwogICAgIGludCBwaXhlbEFycmF5TGVuZ3RoID0gaW1hZ2VBcnJh
eS0+bGVuZ3RoKCk7CiAKQEAgLTE3MywyMyArMTczLDIzIEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJF
ZmZlY3Q6OmFzSW1hZ2VCdWZmZXIoKQogICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0Lmdl
dCgpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gRmlsdGVyRWZmZWN0Ojphc1VubXVsdGlw
bGllZEltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBGaWx0ZXJFZmZlY3Q6OmFzVW5tdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICBBU1NFUlQoaXNGaWx0ZXJTaXplVmFsaWQocmVjdCkpOwotICAgIFJlZlB0cjxC
eXRlQXJyYXk+IGltYWdlRGF0YSA9IEJ5dGVBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJl
Y3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0
YSA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAq
IHJlY3QuaGVpZ2h0KCkgKiA0KTsKICAgICBjb3B5VW5tdWx0aXBsaWVkSW1hZ2UoaW1hZ2VEYXRh
LmdldCgpLCByZWN0KTsKICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIH0KIAotUGFz
c1JlZlB0cjxCeXRlQXJyYXk+IEZpbHRlckVmZmVjdDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29u
c3QgSW50UmVjdCYgcmVjdCkKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVm
ZmVjdDo6YXNQcmVtdWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBB
U1NFUlQoaXNGaWx0ZXJTaXplVmFsaWQocmVjdCkpOwotICAgIFJlZlB0cjxCeXRlQXJyYXk+IGlt
YWdlRGF0YSA9IEJ5dGVBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkg
KiA0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGltYWdlRGF0YSA9IFVpbnQ4Q2xh
bXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0
KCkgKiA0KTsKICAgICBjb3B5UHJlbXVsdGlwbGllZEltYWdlKGltYWdlRGF0YS5nZXQoKSwgcmVj
dCk7CiAgICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlKCk7CiB9CiAKLWlubGluZSB2b2lkIEZp
bHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMoQnl0ZUFycmF5KiBzb3VyY2UsIEJ5dGVBcnJheSog
ZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCitpbmxpbmUgdm9pZCBGaWx0ZXJFZmZl
Y3Q6OmNvcHlJbWFnZUJ5dGVzKFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIFVpbnQ4Q2xhbXBl
ZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBJbml0
aWFsaXplIHRoZSBkZXN0aW5hdGlvbiB0byB0cmFuc3BhcmVudCBibGFjaywgaWYgbm90IGVudGly
ZWx5IGNvdmVyZWQgYnkgdGhlIHNvdXJjZS4KICAgICBpZiAocmVjdC54KCkgPCAwIHx8IHJlY3Qu
eSgpIDwgMCB8fCByZWN0Lm1heFgoKSA+IG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSB8fCBy
ZWN0Lm1heFkoKSA+IG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkpCkBAIC0yMzMsNyArMjMz
LDcgQEAgaW5saW5lIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhCeXRlQXJyYXkq
IHNvdXJjZSwgQnl0ZUFycmF5KiBkZXN0aW5hdGkKICAgICB9CiB9CiAKLXZvaWQgRmlsdGVyRWZm
ZWN0Ojpjb3B5VW5tdWx0aXBsaWVkSW1hZ2UoQnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkSW1hZ2Uo
VWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewog
ICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEZpbHRl
ckVmZmVjdDo6Y29weVVubXVsdGlwbGllZEltYWdlKEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmCiAgICAgICAgICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gbV9p
bWFnZUJ1ZmZlclJlc3VsdC0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9p
bnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaXNGaWx0ZXJTaXplVmFsaWQobV9hYnNvbHV0ZVBhaW50UmVjdCkpOwot
ICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IEJ5dGVBcnJheTo6Y3JlYXRl
KG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0
KCkgKiA0KTsKKyAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBVaW50OENs
YW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChtX2Fic29sdXRlUGFpbnRSZWN0LndpZHRo
KCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CiAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyKiBzb3VyY2VDb21wb25lbnQgPSBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+
ZGF0YSgpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZGVzdGluYXRpb25Db21wb25lbnQg
PSBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyKiBlbmQgPSBzb3VyY2VDb21wb25lbnQgKyAobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0
aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwpAQCAtMjY3LDcgKzI2Nyw3
IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkSW1hZ2UoQnl0ZUFycmF5KiBk
ZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYKICAgICBjb3B5SW1hZ2VCeXRlcyhtX3VubXVsdGlw
bGllZEltYWdlUmVzdWx0LmdldCgpLCBkZXN0aW5hdGlvbiwgcmVjdCk7CiB9CiAKLXZvaWQgRmls
dGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZEltYWdlKEJ5dGVBcnJheSogZGVzdGluYXRpb24s
IGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxp
ZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKIApAQCAtMjc3LDcgKzI3Nyw3IEBAIHZv
aWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZEltYWdlKEJ5dGVBcnJheSogZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmCiAgICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCA9IG1faW1hZ2VCdWZmZXJSZXN1bHQtPmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoSW50
UmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSkpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIEFTU0VSVChpc0ZpbHRlclNpemVWYWxpZChtX2Fic29sdXRlUGFp
bnRSZWN0KSk7Ci0gICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IEJ5dGVB
cnJheTo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWlu
dFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9hYnNvbHV0ZVBh
aW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwogICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciogc291cmNlQ29tcG9uZW50ID0gbV91bm11bHRpcGxpZWRJ
bWFnZVJlc3VsdC0+ZGF0YSgpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogZGVzdGluYXRp
b25Db21wb25lbnQgPSBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpOwogICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciogZW5kID0gc291cmNlQ29tcG9uZW50ICsgKG1fYWJzb2x1dGVQ
YWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJlY3QuaGVpZ2h0KCkgKiA0KTsKQEAg
LTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1
ZmZlclJlc3VsdCgpCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAK
LUJ5dGVBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgp
CitVaW50OENsYW1wZWRBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFn
ZVJlc3VsdCgpCiB7CiAgICAgLy8gT25seSBvbmUgcmVzdWx0IHR5cGUgaXMgYWxsb3dlZC4KICAg
ICBBU1NFUlQoIWhhc1Jlc3VsdCgpKTsKQEAgLTMxNiwxMSArMzE2LDExIEBAIEJ5dGVBcnJheSog
RmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBpZiAo
bV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShtX2Fic29sdXRlUGFp
bnRSZWN0LndpZHRoKCkgKiBtX2Fic29sdXRlUGFpbnRSZWN0LmhlaWdodCgpICogNCk7CisgICAg
bV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmlu
aXRpYWxpemVkKG1fYWJzb2x1dGVQYWludFJlY3Qud2lkdGgoKSAqIG1fYWJzb2x1dGVQYWludFJl
Y3QuaGVpZ2h0KCkgKiA0KTsKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC5n
ZXQoKTsKIH0KIAotQnl0ZUFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCitVaW50OENsYW1wZWRBcnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogewogICAgIC8vIE9ubHkgb25lIHJlc3VsdCB0eXBlIGlz
IGFsbG93ZWQuCiAgICAgQVNTRVJUKCFoYXNSZXN1bHQoKSk7CkBAIC0zMjgsNyArMzI4LDcgQEAg
Qnl0ZUFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgp
CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gQnl0ZUFycmF5OjpjcmVhdGUo
bV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9hYnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQo
KSAqIDQpOworICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9hYnNvbHV0ZVBhaW50UmVjdC53aWR0aCgpICogbV9h
YnNvbHV0ZVBhaW50UmVjdC5oZWlnaHQoKSAqIDQpOwogICAgIHJldHVybiBtX3ByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggOGI0YWQ2ZjkyMjc1
MmZkZTIxYmE4NWRjYjEzMDZkM2E4ZWFlMmM2OS4uYzk5Y2Q1MDFkOWMwNDZmMTE1NmIxMjMyMjhi
YzI1OTg4ODI1MGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAKLSNpbmNsdWRlIDx3dGYv
Qnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVWlu
dDhDbGFtcGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHN0YXRpYyBjb25z
dCBmbG9hdCBrTWF4RmlsdGVyU2l6ZSA9IDUwMDAuMGY7CkBAIC01NiwxMCArNTYsMTAgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhclJlc3VsdCgpOwogICAgIEltYWdlQnVmZmVyKiBhc0ltYWdl
QnVmZmVyKCk7Ci0gICAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGFzVW5tdWx0aXBsaWVkSW1hZ2Uo
Y29uc3QgSW50UmVjdCYpOwotICAgIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBhc1ByZW11bHRpcGxp
ZWRJbWFnZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5VW5tdWx0aXBsaWVkSW1hZ2Uo
Qnl0ZUFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgY29weVBy
ZW11bHRpcGxpZWRJbWFnZShCeXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNVbm11bHRpcGxpZWRJbWFnZShj
b25zdCBJbnRSZWN0Jik7CisgICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXNQcmVt
dWx0aXBsaWVkSW1hZ2UoY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29weVVubXVsdGlwbGll
ZEltYWdlKFVpbnQ4Q2xhbXBlZEFycmF5KiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIHZvaWQgY29weVByZW11bHRpcGxpZWRJbWFnZShVaW50OENsYW1wZWRBcnJheSogZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmKTsKIAogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRF
ZmZlY3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0ZXJFZmZlY3QqIGlu
cHV0RWZmZWN0KHVuc2lnbmVkKSBjb25zdDsKQEAgLTEzMyw4ICsxMzMsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgRmlsdGVyRWZmZWN0KEZpbHRlciopOwogCiAgICAgSW1hZ2VCdWZmZXIqIGNyZWF0ZUlt
YWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgQnl0ZUFycmF5KiBjcmVhdGVVbm11bHRpcGxpZWRJbWFn
ZVJlc3VsdCgpOwotICAgIEJ5dGVBcnJheSogY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0
KCk7CisgICAgVWludDhDbGFtcGVkQXJyYXkqIGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3Vs
dCgpOwogCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGZpbHRlciB3aWxsIG9ubHkgb3BlcmF0
ZSBjb3JyZWN0bHkgb24gdmFsaWQgUkdCQSB2YWx1ZXMsIHdpdGgKICAgICAvLyBhbHBoYSBpbiBb
MCwyNTVdIGFuZCBlYWNoIGNvbG9yIGNvbXBvbmVudCBpbiBbMCwgYWxwaGFdLgpAQCAtMTQ1LDgg
KzE0NSw4IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+
IG1faW1hZ2VCdWZmZXJSZXN1bHQ7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gbV91bm11bHRpcGxp
ZWRJbWFnZVJlc3VsdDsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBtX3ByZW11bHRpcGxpZWRJbWFn
ZVJlc3VsdDsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQ7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBtX3ByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdDsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3IgbV9pbnB1dEVmZmVjdHM7CiAKICAg
ICBib29sIG1fYWxwaGFJbWFnZTsKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEZp
bHRlciogbV9maWx0ZXI7CiAgICAgCiBwcml2YXRlOgotICAgIGlubGluZSB2b2lkIGNvcHlJbWFn
ZUJ5dGVzKEJ5dGVBcnJheSogc291cmNlLCBCeXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgaW5saW5lIHZvaWQgY29weUltYWdlQnl0ZXMoVWludDhDbGFtcGVkQXJy
YXkqIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkqIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
Jik7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciB2YXJpYWJsZXMgYXJlIFNWRyBzcGVj
aWZpYyBhbmQgd2lsbCBtb3ZlIHRvIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLgog
ICAgIC8vIFNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1
NjE0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9hcm0vRkVHYXVzc2lhbkJsdXJORU9OLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL2FybS9GRUdhdXNzaWFuQmx1ck5FT04uaAppbmRleCA5NjAzN2FhYjlhYjJl
MWFhOTc3NmE2ODFhZWExZDk2NTk1ZjhkNWE3Li4xZmIzNzUyYzVjZTQ0OTJhZWI5ZWYyM2M2ZTg5
ZTM2MGU3NTNkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL2FybS9GRUdhdXNzaWFuQmx1ck5FT04uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL2FybS9GRUdhdXNzaWFuQmx1ck5FT04uaApAQCAtNTQs
NyArNTQsNyBAQCB2b2lkIG5lb25EcmF3QWxsQ2hhbm5lbEdhdXNzaWFuQmx1cih1bnNpZ25lZCBj
aGFyKiBzb3VyY2UsIHVuc2lnbmVkIGNoYXIqIGRlc3Rpbgogdm9pZCBuZW9uRHJhd0FscGhhQ2hh
bm5lbEdhdXNzaWFuQmx1cih1bnNpZ25lZCBjaGFyKiBzb3VyY2UsIHVuc2lnbmVkIGNoYXIqIGRl
c3RpbmF0aW9uLCBGRUdhdXNzaWFuQmx1clBhaW50aW5nRGF0YUZvck5lb24qKTsKIH0KIAotaW5s
aW5lIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlOZW9uKEJ5dGVBcnJheSogc3Jj
UGl4ZWxBcnJheSwgQnl0ZUFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNpZ25lZCBrZXJuZWxTaXpl
WCwgdW5zaWduZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6ZSkKK2lubGluZSB2b2lk
IEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5TmVvbihVaW50OENsYW1wZWRBcnJheSogc3Jj
UGl4ZWxBcnJheSwgVWludDhDbGFtcGVkQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtl
cm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKQogewog
ICAgIGNvbnN0IGludCB3aWR0aE11bHRpcGxpZWRCeUZvdXIgPSA0ICogcGFpbnRTaXplLndpZHRo
KCk7CiAgICAgRkVHYXVzc2lhbkJsdXJQYWludGluZ0RhdGFGb3JOZW9uIGFyZ3VtZW50c1ggPSB7
CkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFw
cGx5TmVvbihCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJhCiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgbmVvbkRyYXdBbGxDaGFubmVsR2F1c3NpYW5CbHVyKHNyY1Bp
eGVsQXJyYXktPmRhdGEoKSwgdG1wUGl4ZWxBcnJheS0+ZGF0YSgpLCAmYXJndW1lbnRzWCk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBCeXRlQXJyYXkqIGF1eFBpeGVsQXJyYXkgPSB0
bXBQaXhlbEFycmF5OworICAgICAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIGF1eFBpeGVsQXJy
YXkgPSB0bXBQaXhlbEFycmF5OwogICAgICAgICAgICAgdG1wUGl4ZWxBcnJheSA9IHNyY1BpeGVs
QXJyYXk7CiAgICAgICAgICAgICBzcmNQaXhlbEFycmF5ID0gYXV4UGl4ZWxBcnJheTsKICAgICAg
ICAgfQpAQCAtMTAyLDcgKzEwMiw3IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0
Zm9ybUFwcGx5TmVvbihCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJhCiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbmVvbkRyYXdBbGxDaGFubmVsR2F1c3NpYW5CbHVy
KHRtcFBpeGVsQXJyYXktPmRhdGEoKSwgc3JjUGl4ZWxBcnJheS0+ZGF0YSgpLCAmYXJndW1lbnRz
WSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBCeXRlQXJyYXkqIGF1eFBpeGVsQXJy
YXkgPSB0bXBQaXhlbEFycmF5OworICAgICAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIGF1eFBp
eGVsQXJyYXkgPSB0bXBQaXhlbEFycmF5OwogICAgICAgICAgICAgdG1wUGl4ZWxBcnJheSA9IHNy
Y1BpeGVsQXJyYXk7CiAgICAgICAgICAgICBzcmNQaXhlbEFycmF5ID0gYXV4UGl4ZWxBcnJheTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHAKaW5kZXggOTBkMjMzMjE0MjVkNTE1MGFhOWE2MDVlZTM1ZmY3MjA5YjM3YzdmOC4uY2IzYTVi
NzdlNWY1NTM5MTAwZmYyNWY0ZGZhYzAwZjc4ZDYwYTBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgUGFzc1Jl
ZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0ltYWdlRGF0YShEcmF3aW4KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8SW1hZ2VE
YXRhPiBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRTaXplKG1fY3VycmVudFdpZHRo
LCBtX2N1cnJlbnRIZWlnaHQpKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMgPSBpbWFnZURh
dGEtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCk7CisgICAgdW5zaWduZWQgY2hhciogcGl4ZWxzID0g
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKICAgICBpbnQgdG90YWxCeXRlcyA9IDQgKiBtX2N1
cnJlbnRXaWR0aCAqIG1fY3VycmVudEhlaWdodDsKIAogICAgIHJlYWRSZW5kZXJpbmdSZXN1bHRz
KHBpeGVscywgdG90YWxCeXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmluZGV4IDUyNDIzMDI0NTEzYjJlM2JlYzQ4
YjQ5ZTdhMzhlN2I1NTBmNjY2Y2IuLmI5YjllYmY2YzI2YjA0MWFkNGU1MWRhODEzOGZlYWVjYzQy
ZjhjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlQnVmZmVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlQnVmZmVyUXQuY3BwCkBAIC0xODksMTcgKzE4OSwxNyBAQCB2b2lkIEltYWdlQnVmZmVy
OjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRh
YmxlKQogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLVBhc3NSZWZQdHI8Qnl0
ZUFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZm
ZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1h
Z2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgZmxv
YXQgYXJlYSA9IDQuMGYgKiByZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpOwogICAgIGlmIChh
cmVhID4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxCeXRlQXJyYXk+IHJlc3VsdCA9IEJ5
dGVBcnJheTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICBS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVh
dGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKICAgICB1
bnNpZ25lZCBjaGFyKiBkYXRhID0gcmVzdWx0LT5kYXRhKCk7CiAKICAgICBpZiAocmVjdC54KCkg
PCAwIHx8IHJlY3QueSgpIDwgMCB8fCByZWN0Lm1heFgoKSA+IHNpemUud2lkdGgoKSB8fCByZWN0
Lm1heFkoKSA+IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIG1lbXNldChkYXRhLCAwLCByZXN1bHQt
Pmxlbmd0aCgpKTsKKyAgICAgICAgcmVzdWx0LT56ZXJvRmlsbCgpOwogCiAgICAgaW50IG9yaWdp
bnggPSByZWN0LngoKTsKICAgICBpbnQgZGVzdHggPSAwOwpAQCAtMjcxLDEyICsyNzEsMTIgQEAg
UGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbWFnZUJ1ZmZlckRhdGEmIGkKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0K
IAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFn
ZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Bhc3NS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFn
ZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAg
ICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFVubXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUp
OwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxp
ZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QK
K1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBs
aWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihyZWN0LCBtX2RhdGEs
IG1fc2l6ZSk7CiB9CkBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBp
bnQgcHJlbXVsdGlwbHlBQkdSdG9BUkdCKHVuc2lnbmVkIGludCB4KQogICAgIHJldHVybiB4Owog
fQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwg
Qnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0
ZW0pCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwg
VWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRp
bmF0ZVN5c3RlbSkKIHsKICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7CiAgICAg
QVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAppbmRleCAz
NjQ0MTMxYmMyYjFjYzNlYjQ0ZTAwNjhmY2U5ZWUxN2YyNmE4YTc3Li44ZWJmNzZlZWRhODExMWY1
ZWE1NjA5MTkyZjVkOWEyYzI1NzQyMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCkBAIC0yMzAsMTQg
KzIzMCwxNCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2Uo
Y29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkg
bXVsdGlwbGllZD4KLVBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgU2tDYW52YXMqIGNhbnZhcywKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBTa0NhbnZhcyogY2FudmFzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBzaXplKQog
ewogICAgIGZsb2F0IGFyZWEgPSA0LjBmICogcmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKTsK
ICAgICBpZiAoYXJlYSA+IHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBy
ZXN1bHQgPSBCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICog
NCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiByZXN1bHQgPSBVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICog
NCk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhID0gcmVzdWx0LT5kYXRhKCk7CiAKQEAgLTI0
NSw3ICsyNDUsNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IElu
dFJlY3QmIHJlY3QsIFNrQ2FudmFzKiBjYW52YXMsCiAgICAgICAgIHx8IHJlY3QueSgpIDwgMAog
ICAgICAgICB8fCByZWN0Lm1heFgoKSA+IHNpemUud2lkdGgoKQogICAgICAgICB8fCByZWN0Lm1h
eFkoKSA+IHNpemUuaGVpZ2h0KCkpCi0gICAgICAgIG1lbXNldChkYXRhLCAwLCByZXN1bHQtPmxl
bmd0aCgpKTsKKyAgICAgICAgcmVzdWx0LT56ZXJvRmlsbCgpOwogCiAgICAgdW5zaWduZWQgZGVz
dEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsKICAgICBTa0JpdG1hcCBkZXN0Qml0bWFw
OwpAQCAtMjYyLDE3ICsyNjIsMTcgQEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0LCBTa0NhbnZhcyogY2FudmFzLAogICAgIHJldHVybiByZXN1
bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6Omdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lz
dGVtKSBjb25zdAorUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6Omdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lz
dGVtKSBjb25zdAogewogICAgIHJldHVybiBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihyZWN0
LCBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgbV9zaXplKTsKIH0KIAot
UGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitQYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdl
RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAg
IHJldHVybiBnZXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4ocmVjdCwgY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCksIG1fc2l6ZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6
OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBCeXRlQXJyYXkqIHNvdXJjZSwgY29u
c3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKK3ZvaWQgSW1hZ2VCdWZmZXI6
OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291
cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQogewogICAgIFNr
Q2FudmFzKiBjYW52YXMgPSBjb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsK
ICAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CmluZGV4IDg5NGViYmY1NjQ5ZWIyNTc1OThkZmQ3NmNlZmFlZWViNzhkMGU3MGUuLjU5ZWI0YTZm
MzRjYjRlNWJlYTJhNjExMzQ1MjhkNjM3NTE5MjQyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+Ci0jaW5jbHVkZSA8d3RmL0J5dGVB
cnJheS5oPgogI2VuZGlmCiAKICNkZWZpbmUgR0xfQ01EKC4uLikgZG8geyBfX1ZBX0FSR1NfXzsg
QVNTRVJUX0FSRyhfX1ZBX0FSR1NfXywgIWdsR2V0RXJyb3IoKSk7IH0gd2hpbGUgKDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZl
cldpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdl
QnVmZmVyV2luQ0UuY3BwCmluZGV4IDI4YzcyMDk1ZjY3YzBjZmZiZjVmM2RlNzEwZTA1NGFhNjFj
ODVjMmMuLjljNDIyNWEzZWQ2MmQ1MDU2YTk3Mjg1MzQ5ZGFiNmNkNWI5MjllNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2lu
Q0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdl
QnVmZmVyV2luQ0UuY3BwCkBAIC0xMjEsOSArMTIxLDkgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QKIH0KIAogdGVtcGxhdGUgPGJvb2wgcHJlbXVsdGlwbGllZD4KLXN0YXRpYyBQYXNzUmVmUHRy
PEJ5dGVBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFNoYXJl
ZEJpdG1hcCogYml0bWFwKQorc3RhdGljIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdl
dEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBTaGFyZWRCaXRtYXAqIGJpdG1h
cCkKIHsKLSAgICBSZWZQdHI8Qnl0ZUFycmF5PiBpbWFnZURhdGEgPSBCeXRlQXJyYXk6OmNyZWF0
ZShyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFs
aXplZChyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CiAKICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBzcmMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYml0bWFw
LT5ieXRlcygpKTsKICAgICBpZiAoIXNyYykKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxCeXRlQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBTaGFyZWRCaXRtYQogICAgICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIAogICAg
IHVuc2lnbmVkIGNoYXIqIGRzdCA9IGltYWdlRGF0YS0+ZGF0YSgpOwotICAgIG1lbXNldChkc3Qs
IDAsIGltYWdlRGF0YS0+bGVuZ3RoKCkpOworICAgIGltYWdlRGF0YS0+emVyb0ZpbGwoKTsKICAg
ICBzcmMgKz0gKHNvdXJjZVJlY3QueSgpICogYml0bWFwLT53aWR0aCgpICsgc291cmNlUmVjdC54
KCkpICogNDsKICAgICBkc3QgKz0gKChzb3VyY2VSZWN0LnkoKSAtIHJlY3QueSgpKSAqIHJlY3Qu
d2lkdGgoKSArIHNvdXJjZVJlY3QueCgpIC0gcmVjdC54KCkpICogNDsKICAgICBpbnQgYnl0ZXNU
b0NvcHkgPSBzb3VyY2VSZWN0LndpZHRoKCkgKiA0OwpAQCAtMTcwLDE3ICsxNzAsMTcgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgU2hhcmVkQml0bWEKICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2UoKTsKIH0K
IAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFn
ZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Bhc3NS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFn
ZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAg
ICByZXR1cm4gZ2V0SW1hZ2VEYXRhPGZhbHNlPihyZWN0LCBtX2RhdGEubV9iaXRtYXAuZ2V0KCkp
OwogfQogCi1QYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxp
ZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QK
K1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBs
aWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTx0cnVlPihyZWN0LCBtX2RhdGEubV9iaXRtYXAu
Z2V0KCkpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVs
dGlwbGllZCwgQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3Jk
aW5hdGVTeXN0ZW0pCit2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVs
dGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNl
U2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgQ29vcmRpbmF0ZVN5c3RlbSkKIHsKICAgICBTaGFyZWRCaXRtYXAqIGJpdG1hcCA9IG1fZGF0
YS5tX2JpdG1hcC5nZXQoKTsKICAgICB1bnNpZ25lZCBjaGFyKiBkc3QgPSAodW5zaWduZWQgY2hh
ciopYml0bWFwLT5ieXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvSW1hZ2VCdWZmZXJXeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93eC9JbWFnZUJ1ZmZlcld4LmNwcAppbmRleCA2YjhlMmQzODhhMjY5ZDE1N2I5M2Rl
NmVlYWMxODY0MDYzOWY0MGYwLi4wY2RiYzdiM2I0OGQyMzFlODVjOGRkMWYxNGNiNmIyMzJlZDg2
ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFn
ZUJ1ZmZlcld4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9J
bWFnZUJ1ZmZlcld4LmNwcApAQCAtMTIyLDE5ICsxMjIsMTkgQEAgR3JhcGhpY3NDb250ZXh0KiBJ
bWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsK
IH0KIAotUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Bh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPEJ5
dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Bhc3NSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IElu
dFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5
KE11bHRpcGx5IG11bHRpcGxpZWQsIEJ5dGVBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXplJiBz
b3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBDb29yZGluYXRlU3lzdGVtKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5
KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJz
L3NraWEvSlBFR0ltYWdlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1lbmNvZGVycy9za2lhL0pQRUdJbWFnZUVuY29kZXIuY3BwCmluZGV4IDgyMWUxZGE4YjZjYTlk
Yzk5YTMwMTIwNWY2NzE3NjZjM2FlNDU0NTIuLjIyZDUxNGFhNzI2ZDdjN2E0ZWI1M2NhYTRhYWVj
YTVjMGU1Zjg4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVu
Y29kZXJzL3NraWEvSlBFR0ltYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZW5jb2RlcnMvc2tpYS9KUEVHSW1hZ2VFbmNvZGVyLmNwcApAQCAtMTk1LDcg
KzE5NSw3IEBAIGJvb2wgSlBFR0ltYWdlRW5jb2Rlcjo6ZW5jb2RlKGNvbnN0IFNrQml0bWFwJiBi
aXRtYXAsIGludCBxdWFsaXR5LCBWZWN0b3I8dW5zaWduCiAKIGJvb2wgSlBFR0ltYWdlRW5jb2Rl
cjo6ZW5jb2RlKGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBpbnQgcXVhbGl0eSwgVmVjdG9y
PHVuc2lnbmVkIGNoYXI+KiBvdXRwdXQpCiB7Ci0gICAgcmV0dXJuIGVuY29kZVBpeGVscyhpbWFn
ZURhdGEuc2l6ZSgpLCBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCktPmRhdGEoKSwgZmFsc2UsIHF1
YWxpdHksIG91dHB1dCk7CisgICAgcmV0dXJuIGVuY29kZVBpeGVscyhpbWFnZURhdGEuc2l6ZSgp
LCBpbWFnZURhdGEuZGF0YSgpLT5kYXRhKCksIGZhbHNlLCBxdWFsaXR5LCBvdXRwdXQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL1BOR0ltYWdlRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL1BOR0ltYWdlRW5jb2Rlci5jcHAKaW5k
ZXggNWMxMTYyYmZiNzU1ZTM0Y2EwNWRmM2I3ZTYzNTI1Nzg4ZTA0YjE2NC4uZWFjYWE3Y2RiNTZi
NzU0NTMyOTE0NjcwYTc3NTE2OTBmNTExNTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvc2tpYS9QTkdJbWFnZUVuY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL3NraWEvUE5HSW1hZ2VFbmNvZGVy
LmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgUE5HSW1hZ2VFbmNvZGVyOjplbmNvZGUoY29u
c3QgU2tCaXRtYXAmIGJpdG1hcCwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+KiBvdXRwCiAKIGJvb2wg
UE5HSW1hZ2VFbmNvZGVyOjplbmNvZGUoY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIFZlY3Rv
cjx1bnNpZ25lZCBjaGFyPiogb3V0cHV0KQogewotICAgIHJldHVybiBlbmNvZGVQaXhlbHMoaW1h
Z2VEYXRhLnNpemUoKSwgaW1hZ2VEYXRhLmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCksIGZhbHNlLCBv
dXRwdXQpOworICAgIHJldHVybiBlbmNvZGVQaXhlbHMoaW1hZ2VEYXRhLnNpemUoKSwgaW1hZ2VE
YXRhLmRhdGEoKS0+ZGF0YSgpLCBmYWxzZSwgb3V0cHV0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2Rl
cnMvc2tpYS9XRUJQSW1hZ2VFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWVuY29kZXJzL3NraWEvV0VCUEltYWdlRW5jb2Rlci5jcHAKaW5kZXggOWNiMjRmYzAyNTIx
NDVmNmMzZjdkZmM3Nzc1OGQ4NTg1NGFjMTQzMC4uZWJjMjk5ZDVmOTc1MTljMzYwY2FjODNjMmNj
NzZhNjllODc4NGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvc2tpYS9XRUJQSW1hZ2VFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9za2lhL1dFQlBJbWFnZUVuY29kZXIuY3BwCkBAIC0xMzAs
NyArMTMwLDcgQEAgYm9vbCBXRUJQSW1hZ2VFbmNvZGVyOjplbmNvZGUoY29uc3QgU2tCaXRtYXAm
IGJpdG1hcCwgaW50IHF1YWxpdHksIFZlY3Rvcjx1bnNpZ24KIAogYm9vbCBXRUJQSW1hZ2VFbmNv
ZGVyOjplbmNvZGUoY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGludCBxdWFsaXR5LCBWZWN0
b3I8dW5zaWduZWQgY2hhcj4qIG91dHB1dCkKIHsKLSAgICByZXR1cm4gZW5jb2RlUGl4ZWxzKGlt
YWdlRGF0YS5zaXplKCksIGltYWdlRGF0YS5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpLCBmYWxzZSwg
cXVhbGl0eSwgb3V0cHV0KTsKKyAgICByZXR1cm4gZW5jb2RlUGl4ZWxzKGltYWdlRGF0YS5zaXpl
KCksIGltYWdlRGF0YS5kYXRhKCktPmRhdGEoKSwgZmFsc2UsIHF1YWxpdHksIG91dHB1dCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKaW5kZXggZmJlYTY0YWI5
M2Y4MTU5OTRiN2U0NmFiYTZhNWZjZDFmYjNhZmNiNC4uNjA5MTlhMjBjMzg1ZGU0OGMzMWMxZjY3
ZjBlNzUzMmM0YmRhZDZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
R3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCBQ
YXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0ltYWdlRGF0YQogICAgIGdldERyYXdpbmdQYXJhbWV0ZXJzKGRyYXdpbmdC
dWZmZXIsIG1faW1wbC5nZXQoKSwgJmZyYW1lYnVmZmVySWQsICZ3aWR0aCwgJmhlaWdodCk7CiAK
ICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRT
aXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbHMgPSBpbWFnZURh
dGEtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCk7CisgICAgdW5zaWduZWQgY2hhciogcGl4ZWxzID0g
aW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKTsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IDQgKiB3
aWR0aCAqIGhlaWdodDsKIAogICAgIG1faW1wbC0+cmVhZEJhY2tGcmFtZWJ1ZmZlcihwaXhlbHMs
IGJ1ZmZlclNpemUsIGZyYW1lYnVmZmVySWQsIHdpZHRoLCBoZWlnaHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDNhMDE5NmU3NDFjYmIyNTAyMTc4
MWQ1YTgxODFjYzYzOTYwOWMxNjcuLjIwYmExMzg4NWNhZDZiYWU0YTY2ZWU2ZGQzYzQwYzMzMmYw
M2Y1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTE1NiwxMCArMTU2LDEwIEBACiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5o
PgotI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KIAogI2lmIEVOQUJMRShHRVNUVVJF
X0VWRU5UUykKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgpAQCAtMTQ4MCw3ICsx
NDgwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMoV2ViQ2Fu
dmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBJbnRSZWN0IGludmVydFJlY3Qo
cmVjdC54KCksIGJpdG1hcEhlaWdodCAtIHJlY3QubWF4WSgpLCByZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpOwogCiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpKSk7Ci0gICAgUmVmUHRyPEJ5dGVBcnJheT4gcGl4ZWxB
cnJheShCeXRlQXJyYXk6OmNyZWF0ZShyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCkp
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheShVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICog
NCkpOwogICAgIGlmIChpbWFnZUJ1ZmZlciAmJiBwaXhlbEFycmF5KSB7CiAgICAgICAgIG1fbGF5
ZXJUcmVlVmlldy5jb21wb3NpdGVBbmRSZWFkYmFjayhwaXhlbEFycmF5LT5kYXRhKCksIGludmVy
dFJlY3QpOwogICAgICAgICBpbWFnZUJ1ZmZlci0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQs
IHBpeGVsQXJyYXkuZ2V0KCksIHJlY3Quc2l6ZSgpLCBJbnRSZWN0KEludFBvaW50KCksIHJlY3Qu
c2l6ZSgpKSwgSW50UG9pbnQoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTIwODc1Mjg2ZDU5NWU1OTFlMmZmNDdmNDI1
ODIwYmU3MDFkYWM5Ni4uZGYyNTJlZTdjMzhlMDkxMDI5NTFhZGI1MmRlZTYyMWExZWE5N2ZlNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJA
Z29vZ2xlLmNvbT4KKworICAgICAgICBDaGFuZ2UgSW1hZ2VEYXRhIHRvIHJlZmVyZW5jZSBVaW50
OENsYW1wZWRBcnJheSByYXRoZXIgdGhhbiBDYW52YXNQaXhlbEFycmF5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAxMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgorCisgICAgICAgICogZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNv
bnRhaW5zLXVpbnQ4Y2xhbXBlZGFycmF5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBlZGFycmF5Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9zY3JpcHQtdGVzdHMvcG9zdG1lc3NhZ2Ut
Y2xvbmUuanM6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1j
bG9uZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20v
V2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhw
ZWN0ZWQudHh0OgorCiAyMDEyLTA0LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgREZHIG11c3Qga2VlcCBhbGl2ZSB2YWx1ZXMgdGhhdCBpdCB3aWxsIHBlcmZv
cm0gc3BlY3VsYXRpb25zIG9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9p
bWFnZWRhdGEtY29udGFpbnMtdWludDhjbGFtcGVkYXJyYXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBlZGFycmF5LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDkzYzM4MDE0ZTEyZmYwODFhODBlNWMxMGI5Y2NkYzFl
MGVkZTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaW1hZ2Vk
YXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBlZGFycmF5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEw
IEBACitUZXN0cyB0aGF0IEltYWdlRGF0YSBjb250YWlucyBhIFVpbnQ4Q2xhbXBlZEFycmF5Lgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbWFnZURhdGEuZGF0YS5jb25z
dHJ1Y3RvciBpcyBVaW50OENsYW1wZWRBcnJheQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2ltYWdlZGF0YS1jb250YWlucy11aW50OGNsYW1wZWRhcnJheS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvaW1hZ2VkYXRhLWNvbnRhaW5zLXVpbnQ4Y2xhbXBlZGFycmF5Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDcwMGFlMDRlMzdkMjAyNzY4NWI3NDFmY2MyMmYzZGIwOGMwZjQ1MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2ltYWdlZGF0YS1jb250YWlu
cy11aW50OGNsYW1wZWRhcnJheS5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgSW1hZ2VEYXRhIGNvbnRhaW5zIGEgVWludDhDbGFtcGVkQXJyYXkuIik7CisK
K3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK2NhbnZhcy53
aWR0aCA9IDEwOworY2FudmFzLmhlaWdodCA9IDEwOwordmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiMmQiKTsKKwordmFyIGltYWdlRGF0YSA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAs
IDAsIDEsIDEpOworc2hvdWxkQmUoJ2ltYWdlRGF0YS5kYXRhLmNvbnN0cnVjdG9yJywgJ1VpbnQ4
Q2xhbXBlZEFycmF5Jyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9zY3JpcHQtdGVzdHMvcG9zdG1lc3NhZ2UtY2xv
bmUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvc2NyaXB0LXRlc3RzL3Bvc3RtZXNz
YWdlLWNsb25lLmpzCmluZGV4IDQ0MzkyNTQ4YzgyZTFiOGQzODc3MDdhNmM4MWM1OGY1NzE0Yjdk
YTguLjU5ZDI0YjRkMjk5MmU0MzI0NmUzYTgyNjM5NmZkMjhkZTI1NmM3MGIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9zY3JpcHQtdGVzdHMvcG9zdG1lc3NhZ2UtY2xv
bmUuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3NjcmlwdC10ZXN0cy9wb3N0
bWVzc2FnZS1jbG9uZS5qcwpAQCAtNTksOSArNTksOSBAQCB2YXIgbXV0YXRlZEltYWdlRGF0YSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIikuY3JlYXRl
SQogZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFnZURhdGEuZGF0YS5sZW5ndGggKiA0OyBpKyspCiAg
ICAgbXV0YXRlZEltYWdlRGF0YS5kYXRhW2ldID0gaSAlIDI1NjsKIHRyeVBvc3RNZXNzYWdlKCdp
bWFnZURhdGEnLCBmYWxzZSwgaW1hZ2VEYXRhKTsKLXRyeVBvc3RNZXNzYWdlKCdpbWFnZURhdGEu
ZGF0YScsIHRydWUsIG51bGwsIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUikKK3RyeVBvc3RN
ZXNzYWdlKCdpbWFnZURhdGEuZGF0YScsIGZhbHNlLCBpbWFnZURhdGEuZGF0YSkKIHRyeVBvc3RN
ZXNzYWdlKCdtdXRhdGVkSW1hZ2VEYXRhJywgZmFsc2UsIGltYWdlRGF0YSk7Ci10cnlQb3N0TWVz
c2FnZSgnbXV0YXRlZEltYWdlRGF0YS5kYXRhJywgdHJ1ZSwgbnVsbCwgRE9NRXhjZXB0aW9uLkRB
VEFfQ0xPTkVfRVJSKQordHJ5UG9zdE1lc3NhZ2UoJ211dGF0ZWRJbWFnZURhdGEuZGF0YScsIGZh
bHNlLCBpbWFnZURhdGEuZGF0YSkKIGZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VEYXRhLmRhdGEu
bGVuZ3RoICogNDsgaSsrKQogICAgIG11dGF0ZWRJbWFnZURhdGEuZGF0YVtpXSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
Y2xvbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
b3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQKaW5kZXggNGFhZDdjZmIwNDdhMmNhYmRiNTNi
Mjc4MWQzYjA1M2YwZWQxMjQwMC4uYWRiN2FlZDU1NzQ1OGE5M2M3Y2JkOGE4YzZiNDkzOWE4ODIw
NDVhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0
bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQKQEAgLTYsOCArNiw2IEBA
IEZBSUw6ICdwb3N0TWVzc2FnZSgoZnVuY3Rpb24oKXt9KSknIHNob3VsZCB0aHJvdyBidXQgZGlk
bid0CiBGQUlMOiAncG9zdE1lc3NhZ2UodmFyIHggPSAwOyB0cnkgeyBldmFsKCJiYWRyZWYiKTsg
fSBjYXRjaChlKSB7IHggPSBlOyB9IHgpJyBzaG91bGQgdGhyb3cgYnV0IGRpZG4ndAogUEFTUzog
J3Bvc3RNZXNzYWdlKHdpbmRvdyknIHRocmV3IFR5cGVFcnJvcjogVHlwZSBlcnJvcgogUEFTUzog
J3Bvc3RNZXNzYWdlKCh7Z2V0IGEoKSB7IHRocm93ICJ4IiB9fSkpJyB0aHJldyB4Ci1GQUlMOiAn
cG9zdE1lc3NhZ2UoaW1hZ2VEYXRhLmRhdGEpJyBzaG91bGQgdGhyb3cgYnV0IGRpZG4ndAotRkFJ
TDogJ3Bvc3RNZXNzYWdlKG11dGF0ZWRJbWFnZURhdGEuZGF0YSknIHNob3VsZCB0aHJvdyBidXQg
ZGlkbid0CiBQQVNTOiAncG9zdE1lc3NhZ2UoKGZ1bmN0aW9uKCkge3JldHVybiB7Z2V0IGEoKSB7
IHRocm93ICJhY2Nlc3Nvci1leG4iOyB9fTt9KSgpKScgdGhyZXcgYWNjZXNzb3ItZXhuCiBQQVNT
OiAncG9zdE1lc3NhZ2UoKGZ1bmN0aW9uKCkge3ZhciBvYmphID0ge2dldCBwKCkgeyB0aHJvdyAi
YWNjZXNzb3ItZXhuIjsgfX07IHJldHVybiB7Z2V0IGEoKSB7IHJldHVybiBvYmphOyB9fTt9KSgp
KScgdGhyZXcgYWNjZXNzb3ItZXhuCiBQQVNTOiBsYXN0SW5kZXggaW5pdGlhbGx5IGNvcnJlY3Q6
IHdhcyAzCkBAIC00NCw3ICs0Miw5IEBAIFBBU1M6IGV2ZW50RGF0YSBpcyA9PT0gdG8gZXZlbnRE
YXRhWzBdCiBQQVNTOiBldmVudERhdGEuZ3JhcGgxIGlzID09PSB0byBldmVudERhdGEuZ3JhcGgy
CiBQQVNTOiBldmVudERhdGFbMF0gaXMgPT09IHRvIGV2ZW50RGF0YVsxXQogUEFTUzogZXZlbnRE
YXRhIGlzIFtvYmplY3QgSW1hZ2VEYXRhXSBvZiB0eXBlIG9iamVjdAorUEFTUzogZXZlbnREYXRh
IGlzIFtvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIG9mIHR5cGUgb2JqZWN0CiBQQVNTOiBldmVu
dERhdGEgaXMgW29iamVjdCBJbWFnZURhdGFdIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERh
dGEgaXMgW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0gb2YgdHlwZSBvYmplY3QKIFBBU1M6IGV2
ZW50RGF0YSBpcyA0MiBvZiB0eXBlIG51bWJlcgogUEFTUzogZXZlbnREYXRhIGlzIDQyIG9mIHR5
cGUgbnVtYmVyCiBQQVNTOiBldmFsVGh1bmsgT0sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQKaW5kZXggNzE2ZGQ2ZGQw
MTA1NzI1ZmM1YzA0ZmRhNzA3MTliZmVmNWU1NWFiMi4uZjY3ZmFlYTQ1MGFiMjc4NDhkYjI4YjA0
NTI0YzhmYzc3NTc5NjQwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wb3N0bWVzc2FnZS1jbG9uZS1leHBlY3RlZC50eHQKQEAgLTQsOCArNCw2IEBAIFBBU1M6ICdw
b3N0TWVzc2FnZSgoZnVuY3Rpb24oKXt9KSknIHRocmV3IEVycm9yOiBEQVRBX0NMT05FX0VSUjog
RE9NIEV4Y2VwdGlvbiAyCiBQQVNTOiAncG9zdE1lc3NhZ2UodmFyIHggPSAwOyB0cnkgeyBldmFs
KCJiYWRyZWYiKTsgfSBjYXRjaChlKSB7IHggPSBlOyB9IHgpJyB0aHJldyBFcnJvcjogREFUQV9D
TE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKIFBBU1M6ICdwb3N0TWVzc2FnZSh3aW5kb3cpJyB0
aHJldyBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24gMjUKIFBBU1M6ICdwb3N0
TWVzc2FnZSgoe2dldCBhKCkgeyB0aHJvdyAieCIgfX0pKScgdGhyZXcgeAotUEFTUzogJ3Bvc3RN
ZXNzYWdlKGltYWdlRGF0YS5kYXRhKScgdGhyZXcgRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00g
RXhjZXB0aW9uIDI1Ci1QQVNTOiAncG9zdE1lc3NhZ2UobXV0YXRlZEltYWdlRGF0YS5kYXRhKScg
dGhyZXcgRXJyb3I6IERBVEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1CiBQQVNTOiAncG9z
dE1lc3NhZ2UoKGZ1bmN0aW9uKCkge3JldHVybiB7Z2V0IGEoKSB7IHRocm93ICJhY2Nlc3Nvci1l
eG4iOyB9fTt9KSgpKScgdGhyZXcgYWNjZXNzb3ItZXhuCiBQQVNTOiAncG9zdE1lc3NhZ2UoKGZ1
bmN0aW9uKCkge3ZhciBvYmphID0ge2dldCBwKCkgeyB0aHJvdyAiYWNjZXNzb3ItZXhuIjsgfX07
IHJldHVybiB7Z2V0IGEoKSB7IHJldHVybiBvYmphOyB9fTt9KSgpKScgdGhyZXcgYWNjZXNzb3It
ZXhuCiBQQVNTOiBsYXN0SW5kZXggaW5pdGlhbGx5IGNvcnJlY3Q6IHdhcyAzCkBAIC00MCw3ICsz
OCw5IEBAIFBBU1M6IGV2ZW50RGF0YSBpcyA9PT0gdG8gZXZlbnREYXRhWzBdCiBQQVNTOiBldmVu
dERhdGEuZ3JhcGgxIGlzID09PSB0byBldmVudERhdGEuZ3JhcGgyCiBQQVNTOiBldmVudERhdGFb
MF0gaXMgPT09IHRvIGV2ZW50RGF0YVsxXQogUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgSW1h
Z2VEYXRhXSBvZiB0eXBlIG9iamVjdAorUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgVWludDhD
bGFtcGVkQXJyYXldIG9mIHR5cGUgb2JqZWN0CiBQQVNTOiBldmVudERhdGEgaXMgW29iamVjdCBJ
bWFnZURhdGFdIG9mIHR5cGUgb2JqZWN0CitQQVNTOiBldmVudERhdGEgaXMgW29iamVjdCBVaW50
OENsYW1wZWRBcnJheV0gb2YgdHlwZSBvYmplY3QKIFBBU1M6IGV2ZW50RGF0YSBpcyA0MiBvZiB0
eXBlIG51bWJlcgogUEFTUzogZXZlbnREYXRhIGlzIDQyIG9mIHR5cGUgbnVtYmVyCiBQQVNTOiBl
dmFsVGh1bmsgT0sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25l
LWV4cGVjdGVkLnR4dAppbmRleCAxZGMxNTI1ZjExOTc5MWIwMWZjMzA1MDZmZWIxY2ZhZGYyOWI2
NzA1Li4xMWEyNDQwYjZkZmYxZjU5MjQyOThjMTBlZGY2ZmUwYmFkYWY2YjQ0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVz
c2FnZS1jbG9uZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZXhwZWN0ZWQudHh0CkBAIC0z
NywxNCArMzcsMTQgQEAgUEFTUzogZXZlbnREYXRhIGlzID09PSB0byBldmVudERhdGEuc2VsZgog
UEFTUzogZXZlbnREYXRhIGlzID09PSB0byBldmVudERhdGFbMF0KIFBBU1M6IGV2ZW50RGF0YS5n
cmFwaDEgaXMgPT09IHRvIGV2ZW50RGF0YS5ncmFwaDIKIFBBU1M6IGV2ZW50RGF0YVswXSBpcyA9
PT0gdG8gZXZlbnREYXRhWzFdCi1GQUlMOiAncG9zdE1lc3NhZ2UoaW1hZ2VEYXRhLmRhdGEpJyBz
aG91bGQgdGhyb3cgYnV0IGRpZG4ndAotRkFJTDogJ3Bvc3RNZXNzYWdlKG11dGF0ZWRJbWFnZURh
dGEuZGF0YSknIHNob3VsZCB0aHJvdyBidXQgZGlkbid0CiBQQVNTOiAncG9zdE1lc3NhZ2UoKGZ1
bmN0aW9uKCkge3JldHVybiB7Z2V0IGEoKSB7IHRocm93ICJhY2Nlc3Nvci1leG4iOyB9fTt9KSgp
KScgdGhyZXcgYWNjZXNzb3ItZXhuCiBQQVNTOiAncG9zdE1lc3NhZ2UoKGZ1bmN0aW9uKCkge3Zh
ciBvYmphID0ge2dldCBwKCkgeyB0aHJvdyAiYWNjZXNzb3ItZXhuIjsgfX07IHJldHVybiB7Z2V0
IGEoKSB7IHJldHVybiBvYmphOyB9fTt9KSgpKScgdGhyZXcgYWNjZXNzb3ItZXhuCiBQQVNTOiBs
YXN0SW5kZXggaW5pdGlhbGx5IGNvcnJlY3Q6IHdhcyAzCiBQQVNTOiBzYW5pdHkgb24gZmlsZSBy
ZWZlcmVuY2UgZXF1YWxpdHkKIFBBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IEltYWdlRGF0YV0g
b2YgdHlwZSBvYmplY3QKK1BBU1M6IGV2ZW50RGF0YSBpcyBbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFy
cmF5XSBvZiB0eXBlIG9iamVjdAogUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgSW1hZ2VEYXRh
XSBvZiB0eXBlIG9iamVjdAorUEFTUzogZXZlbnREYXRhIGlzIFtvYmplY3QgVWludDhDbGFtcGVk
QXJyYXldIG9mIHR5cGUgb2JqZWN0CiBQQVNTOiBldmVudERhdGEgaXMgNDIgb2YgdHlwZSBudW1i
ZXIKIFBBU1M6IGV2ZW50RGF0YSBpcyA0MiBvZiB0eXBlIG51bWJlcgogUEFTUzogZXZhbFRodW5r
IE9LCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>