<?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>110762</bug_id>
          
          <creation_ts>2013-02-25 08:42:21 -0800</creation_ts>
          <short_desc>[Texmap] TextureMapper is too eager to use intermediate surfaces.</short_desc>
          <delta_ts>2013-02-27 08:18:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>840998</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-25 08:42:21 -0800</bug_when>
    <thetext>[Texmap] TextureMapper is too eager to use intermediate surfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841011</commentid>
    <comment_count>1</comment_count>
      <attachid>190071</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-25 09:09:58 -0800</bug_when>
    <thetext>Created attachment 190071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841018</commentid>
    <comment_count>2</comment_count>
      <attachid>190071</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-25 09:15:36 -0800</bug_when>
    <thetext>Comment on attachment 190071
Patch

Attachment 190071 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16746404</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841021</commentid>
    <comment_count>3</comment_count>
      <attachid>190071</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-25 09:17:05 -0800</bug_when>
    <thetext>Comment on attachment 190071
Patch

Attachment 190071 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16743402</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841052</commentid>
    <comment_count>4</comment_count>
      <attachid>190071</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-25 09:57:41 -0800</bug_when>
    <thetext>Comment on attachment 190071
Patch

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

New failing tests:
platform/chromium/virtual/softwarecompositing/overlap-blending/children-opacity-huge.html
compositing/overlap-blending/children-opacity-no-overlap.html
platform/chromium/virtual/softwarecompositing/overlap-blending/reflection-opacity-huge.html
compositing/overlap-blending/reflection-opacity-huge.html
compositing/overlap-blending/children-opacity-huge.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841140</commentid>
    <comment_count>5</comment_count>
      <attachid>190071</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-25 11:28:52 -0800</bug_when>
    <thetext>Comment on attachment 190071
Patch

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

New failing tests:
compositing/overlap-blending/children-opacity-huge.html
compositing/overlap-blending/reflection-opacity-huge.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841144</commentid>
    <comment_count>6</comment_count>
      <attachid>190071</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-25 11:31:30 -0800</bug_when>
    <thetext>Comment on attachment 190071
Patch

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

New failing tests:
compositing/overlap-blending/reflection-opacity-huge.html
compositing/overlap-blending/children-opacity-huge.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841738</commentid>
    <comment_count>7</comment_count>
      <attachid>190230</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-26 00:54:18 -0800</bug_when>
    <thetext>Created attachment 190230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841765</commentid>
    <comment_count>8</comment_count>
      <attachid>190230</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-26 01:11:28 -0800</bug_when>
    <thetext>Comment on attachment 190230
Patch

Attachment 190230 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/16759777</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841768</commentid>
    <comment_count>9</comment_count>
      <attachid>190236</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-26 01:14:02 -0800</bug_when>
    <thetext>Created attachment 190236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841811</commentid>
    <comment_count>10</comment_count>
      <attachid>190244</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-26 02:08:27 -0800</bug_when>
    <thetext>Created attachment 190244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841842</commentid>
    <comment_count>11</comment_count>
      <attachid>190244</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-26 03:23:49 -0800</bug_when>
    <thetext>Comment on attachment 190244
Patch

Attachment 190244 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16760782

New failing tests:
compositing/overlap-blending/reflection-opacity-huge.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841867</commentid>
    <comment_count>12</comment_count>
      <attachid>190244</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-26 04:05:18 -0800</bug_when>
    <thetext>Comment on attachment 190244
Patch

Attachment 190244 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16772020

New failing tests:
compositing/overlap-blending/reflection-opacity-huge.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841895</commentid>
    <comment_count>13</comment_count>
      <attachid>190262</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-26 04:57:35 -0800</bug_when>
    <thetext>Created attachment 190262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841914</commentid>
    <comment_count>14</comment_count>
      <attachid>190262</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-26 05:29:32 -0800</bug_when>
    <thetext>Comment on attachment 190262
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        and &quot;non overlapping&quot; regions. The non-overlapping regions are painted directly, while the overlapping
&gt; +        regions are tiled to smaller rectangles painted using an intermediate surface.

These are overlapping, transparent regions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841915</commentid>
    <comment_count>15</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-26 05:32:50 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 190262 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190262&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; +        and &quot;non overlapping&quot; regions. The non-overlapping regions are painted directly, while the overlapping
&gt; &gt; +        regions are tiled to smaller rectangles painted using an intermediate surface.
&gt; 
&gt; These are overlapping, transparent regions?

Overlapping regions that need to be blended to a surface before opacity/masks/filters are applied.
E.g. a parent with opacity and two overlapping children that are not necessarily transparent. See LayoutTests/reflections/reflection-opacity.html for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841965</commentid>
    <comment_count>16</comment_count>
      <attachid>190262</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-26 07:01:55 -0800</bug_when>
    <thetext>Comment on attachment 190262
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [Texmap] TextureMapper is too eager to use intermediate surfaces.

No dot please.

&gt; Source/WebCore/ChangeLog:12
&gt; +        target surface with the layer&apos;s opacity and mask.
&gt; +        This would make it so that (1) surfaces are created even when they&apos;re not needed, i.e. when there

Add a newline before this (good description though!)

&gt; Source/WebCore/ChangeLog:74
&gt; +        (CoordinatedBackingStore):
&gt; +                Removed the &quot;mask&quot; parameter from TextureMapperPlatformLayer and overrides.

a why would be nice (or refer to the description below)

&gt; Source/WebCore/platform/graphics/texmap/TextureMapper.h:186
&gt;      TextDrawingModeFlags m_textDrawingMode;
&gt;      OwnPtr&lt;BitmapTexturePool&gt; m_texturePool;
&gt;      AccelerationMode m_accelerationMode;
&gt; +    bool m_maskMode;

maybe it should be called m_isMaskMode as all the other m_ ...Mode are enums

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:254
&gt; -void TextureMapperLayer::paintRecursive(const TextureMapperPaintOptions&amp; options)
&gt; +static void resolveOverlaps(Region&amp; overlapRegion, Region&amp; nonOverlapRegion, Region newRegion)
&gt;  {

wouldnt it make sense to have output values after input? maybe s/newRegion/sourceRegion/

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:317
&gt; +    if (!alwaysResolveSelfOverlap  &amp;&amp; shouldBlend()) {

two spaces before &amp;&amp; :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842008</commentid>
    <comment_count>17</comment_count>
      <attachid>190285</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-26 08:02:54 -0800</bug_when>
    <thetext>Created attachment 190285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842218</commentid>
    <comment_count>18</comment_count>
      <attachid>190285</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-26 11:32:05 -0800</bug_when>
    <thetext>Comment on attachment 190285
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:346
&gt; +        const static int maxRectDimension = 2000;

Could this be moved to a global constant, or tied to the texture dimensions defined for GL and ImageBuffer TextureMapper?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842278</commentid>
    <comment_count>19</comment_count>
      <attachid>190343</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-26 12:51:04 -0800</bug_when>
    <thetext>Created attachment 190343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842448</commentid>
    <comment_count>20</comment_count>
      <attachid>190343</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-26 15:43:23 -0800</bug_when>
    <thetext>Comment on attachment 190343
Patch

Attachment 190343 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16784004

New failing tests:
compositing/overlap-blending/children-opacity-no-overlap.html
platform/chromium/virtual/softwarecompositing/overlap-blending/reflection-opacity-huge.html
compositing/overlap-blending/children-opacity-huge.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842740</commentid>
    <comment_count>21</comment_count>
      <attachid>190453</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-26 23:41:21 -0800</bug_when>
    <thetext>Created attachment 190453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842841</commentid>
    <comment_count>22</comment_count>
      <attachid>190453</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 01:41:12 -0800</bug_when>
    <thetext>Comment on attachment 190453
Patch

Attachment 190453 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16823048

New failing tests:
platform/chromium/virtual/softwarecompositing/overlap-blending/reflection-opacity-huge.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842844</commentid>
    <comment_count>23</comment_count>
      <attachid>190467</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-27 01:45:41 -0800</bug_when>
    <thetext>Created attachment 190467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843074</commentid>
    <comment_count>24</comment_count>
      <attachid>190467</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-27 08:05:48 -0800</bug_when>
    <thetext>Comment on attachment 190467
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843079</commentid>
    <comment_count>25</comment_count>
      <attachid>190467</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 08:18:12 -0800</bug_when>
    <thetext>Comment on attachment 190467
Patch

Clearing flags on attachment: 190467

Committed r144190: &lt;http://trac.webkit.org/changeset/144190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843080</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 08:18:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190071</attachid>
            <date>2013-02-25 09:09:58 -0800</date>
            <delta_ts>2013-02-26 00:54:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110762-20130225180612.patch</filename>
            <type>text/plain</type>
            <size>81418</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYxZjU4ZjQ0NmM5ZWZl
ZDAwNzZkMzdjZjg0ZTQ3YzFkYmNlZjc2Yi4uNzczZjY1NDlkMjgwNmQ5NmRlYjliZmYxZTU2YTU2
NmI2ZTE4NzYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAxMy0wMi0yNSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXIgaXMgdG9vIGVhZ2VyIHRvIHVzZSBpbnRlcm1lZGlhdGUgc3VyZmFjZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA3NjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUg
d2F5IGludGVybWVkaWF0ZSBzdXJmYWNlcyBhcmUgaGFuZGxlZCBpbiBUZXh0dXJlTWFwcGVyTGF5
ZXIuCisgICAgICAgIEJlZm9yZWhhbmQsIHdlIHdvdWxkIGNyZWF0ZSBhbiBpbnRlcm1lZGlhdGUg
c3VyZmFjZSB3aGVuZXZlciB0aGVyZSBpcyBhIGNoYW5jZSBvZiBvdmVybGFwLCBhbmQKKyAgICAg
ICAgdGhlIGludGVybWVkaWF0ZSBzdXJmYWNlIHdvdWxkIGJlIHRoZSBsYXJnZXN0IHBvc3NpYmxl
LiBUaGUgcmVzdWx0IHdvdWxkIHRoZW4gYmUgZHJhd24gdG8gdGhlCisgICAgICAgIHRhcmdldCBz
dXJmYWNlIHdpdGggdGhlIGxheWVyJ3Mgb3BhY2l0eSBhbmQgbWFzay4KKyAgICAgICAgVGhpcyB3
b3VsZCBtYWtlIGl0IHNvIHRoYXQgKDEpIHN1cmZhY2VzIGFyZSBjcmVhdGVkIGV2ZW4gd2hlbiB0
aGV5J3JlIG5vdCBuZWVkZWQsIGkuZS4gd2hlbiB0aGVyZQorICAgICAgICBpcyBubyBhY3R1YWwg
b3ZlcmxhcCwgYW5kICgyKSBtYXNrIHdvdWxkbid0IGJlIGFwcGxpZWQgY29ycmVjdGx5LgorCisg
ICAgICAgIEluIHRoaXMgcGF0Y2ggdGhlIGJlaGF2aW9yIGlzIGNoYW5nZWQgc28gdGhhdCB0aGUg
YXJlYSB0byBiZSBwYWludGVkIGlzIGRpdmlkZWQgdG8gIm92ZXJsYXBwaW5nIgorICAgICAgICBh
bmQgIm5vbiBvdmVybGFwcGluZyIgcmVnaW9ucy4gVGhlIG5vbi1vdmVybGFwcGluZyByZWdpb25z
IGFyZSBwYWludGVkIGRpcmVjdGx5LCB3aGlsZSB0aGUgb3ZlcmxhcHBpbmcKKyAgICAgICAgcmVn
aW9ucyBhcmUgdGlsZWQgdG8gc21hbGxlciByZWN0YW5nbGVzIHBhaW50ZWQgdXNpbmcgYW4gaW50
ZXJtZWRpYXRlIHN1cmZhY2UuCisgICAgICAgIE1hc2tzIGFyZSBhcHBsaWVkIHRvIHRob3NlIGlu
dGVybWVkaWF0ZSBzdXJmYWNlcyBiYXNlZCBvbiB0aGUgdHJhbnNmb3JtIG9mIHRoZSBhY3R1YWwg
bWFzaywgbm90IGRyYXduCisgICAgICAgIHRvZ2V0aGVyIHdpdGggdGhlIGNvbnRlbnQgdGV4dHVy
ZSBsaWtlIGJlZm9yZS4KKworICAgICAgICBUaGlzIG9wdGltaXplcyBmb3IgdGhlIG1vcmUgY29t
bW9uIGNhc2Ugb2Ygb3BhY2l0eSBhbmltYXRpb25zIG9uIGEgbGFyZ2UgdHJlZSwgd2hpbGUgbWFr
aW5nIHRoZSBxdWl0ZQorICAgICAgICByYXJlIGNhc2Ugb2YgY29tcG9zaXRlZCBtYXNrcyBzbGln
aHRseSBsZXNzIG9wdGltaXplZCBidXQgYWx3YXlzIGNvcnJlY3QuCisKKyAgICAgICAgVGVzdHM6
IGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLmh0bWwK
KyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1v
cGFjaXR5LWh1Z2UuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXJQcml2YXRlUXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9HcmFwaGljc1N1cmZhY2UuaDoKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1Rl
eHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgICAgICAgICBSZW1vdmVkIHRoZSAibWFzayIgcGFyYW1ldGVyIGZyb20gVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIgYW5kIG92ZXJyaWRlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI6OlRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpzZXRN
YXNrTW9kZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI6OmlzSW5NYXNrTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpk
cmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXcpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRD
b2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAg
ICAgICAgICAgICBJbnN0ZWFkIG9mIHBhaW50aW5nIHRoZSBtYXNrIHRvZ2V0aGVyIHdpdGggdGhl
IHRleHR1cmUvY29sb3IsIHBhaW50IHRoZSBtYXNrCisgICAgICAgICAgICAgICAgYnkgZHJhd2lu
ZyB3aXRoIERlc3RpbmF0aW9uSW4gdG8gYW4gZXhpc3Rpbmcgc3VyZmFjZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNob3VsZEJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVz
b2x2ZU92ZXJsYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29t
cHV0ZU92ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6YXBwbHlNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRJbnRvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21taXRTdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJt
ZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50UmVjdXJzaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBw
ZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omhhc0ZpbHRl
cnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oOgorCiAyMDEzLTAyLTIz
ICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYW5pbWF0aW9uL3N0YXRlLWF0LWVuZC1ldmVudC10cmFu
c2Zvcm0tbGF5ZXIuaHRtbCBzaG93cyBhIHJlZCBzcXVhcmUgd2hlcmUgaXQgc2hvdWxkbid0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQz
MTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi4wMGI0OTY2OTI1ZmFmNjA2YzhmNjYwMzEyMjljYjMw
MzlhZGVlZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5k
ZXggZDBkZDIzZmU3ZGJkNDFkNmFmODFmOTA3YWFkOWRhMDMyYzAxYjRkYi4uNDJlYjZjMmU3MDUx
YzkwMjc1MGIyODgwZGVjNGZhMzc0M2IyMTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQg
b3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCAzZDYwMWZlMmY4NzY4
NmMwMjU4YjJhMGNlNjc2NTExYmU2OTllODVlLi4zMTFjYjJkN2Q2OTlkMTI1OWNmZGRjNDgxN2I0
YzMwMTg2YzczNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTkw
LDcgKzE5MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVmZmVy
KCkgY29uc3QKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQgLyogb3BhY2l0eSAqLywgQml0bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IGIzMDA5NmE2YTlhOGQ3NThhNzlkY2My
OWRjZTE2ZDU4YTg1OTc5NmQuLjhmMGViM2NiNGFlYjUzNGUzOGY5YjE3NjUwZGMxY2UzZmRmZTlj
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVi
bGljOgogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrPik7CiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCwgQml0bWFwVGV4dHVyZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUo
KSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggNjZiZGVhZWQxODVh
NTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMwZjdlYS4uOGQ1YjgxZDEwMjFjZDJiZTM4ZmM0MzIwOWJm
MzBmMGI2OTdlMTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3Bh
Y2l0eSk7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIElu
dFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdDsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0
aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRvUmdiKHF1aW50MzIgcGl4ZWwpCiB9CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0
cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBtX2NvbnRleHQtPm1hcmtM
YXllckNvbXBvc2l0ZWQoKTsKICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJlc3Rv
cmVDb250ZXh0KCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIK
ICAgICAgICAgY3VycmVudENvbnRleHQtPm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKIAog
ICAgICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1h
cHBlckdMKj4odGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWlu
dFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBHTCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBt
YXNrKTsKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRl
eG1hcEdMLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJiYjc4
ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAzYS4uMWY5NjliNWZkYzIxYWJjMjk0YWEwM2RkYTc3ZmEz
NWEzYjY5NjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFw
VGV4dHVyZSopCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQzOWUz
MjI0YzE1MjFlZTAwMzA0MGY1OTUuLmU3NGNkY2QwODk4NWNiYmNiYTNkMjhiNzZlNDU0MzYzMDUx
NjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01l
ZGlhUGxheWVyUHJpdmF0ZVF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7IH0K
ICAgICAvLyBDb25zdC1jYXN0aW5nIGhlcmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyJ3MgZnVuY3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBo
aWNzU3VyZmFjZS5jcHAKaW5kZXggYmFlZmE4YTE5MDg0MWFlYWIyYjQwYTJjZDA2NDc3MjBmMTYz
MzU5Yy4uMmE3YTRiMjQzYzRjYmU2OGFiZTJhYTkyNjE4OTFiNjA5NTdiMjE1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9H
cmFwaGljc1N1cmZhY2UuY3BwCkBAIC02Myw5ICs2Myw5IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNl
Ojpjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjCiAgICAgcGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1
cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewot
ICAgIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVj
dCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBwbGF0Zm9ybVBhaW50VG9UZXh0dXJl
TWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9
CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6ZnJvbnRCdWZmZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuaAppbmRleCBkYTQ5MzY5OThjNWQwZGQ3OTI4NTk1ZTIyMWM4ZmE5MjY5MWEzODc4Li43
MzFhZjJiNmQ2NWMzZGE5YWQ0NzI5YmI3NjI1NWYzOGRiZWY0ZDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFw
aGljc1N1cmZhY2VUb2tlbiYpOwogICAgIHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
SW50UG9pbnQmIHNvdXJjZU9mZnNldCk7CiAgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1
cmUqIG1hc2spOworICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVpbnQz
Ml90IHN3YXBCdWZmZXJzKCk7CiAgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZXhwb3J0VG9rZW4o
KTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2so
KTsKICAgICB2b2lkIHBsYXRmb3JtQ29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9p
ZCBwbGF0Zm9ybUNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB2
b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBv
cGFjaXR5KTsKICAgICB1aW50MzJfdCBwbGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3Q7CiAgICAg
dWludDMyX3QgcGxhdGZvcm1Td2FwQnVmZmVycygpOwogICAgIEludFNpemUgcGxhdGZvcm1TaXpl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDVl
MThhNTliOTY0NzQ4ZTcyMTgxNDFmZjFiYWFkYzk2OTkzMDNhOGYuLjRiNWJjMjY2YjYxODkwZmY4
ODY4MTA3NzhiYzg0OGI4Njg2ZjNiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZh
Y2VHTFguY3BwCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAg
ICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAot
dm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBU
ZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIGlm
IChzaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAK
aW5kZXggYmY2MmZiMTVhMDliNGMxODIzMjQxMWY2M2E1MzE3YmFkZDZlYTI1Yy4uYzRkMmQ1NDE4
NDJkNmIxNmNhZWQxYTE5M2E3ZWNlMTIyYzgxYmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBo
aWNzU3VyZmFjZU1hYy5jcHAKQEAgLTMzMywxMyArMzMzLDEzIEBAIHZvaWQgR3JhcGhpY3NTdXJm
YWNlOjpwbGF0Zm9ybUNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzCiAgICAgbV9wcml2YXRlLT5jb3B5RnJvbVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVj
dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0
eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBJbnRTaXplIHNpemUgPSBtX3ByaXZhdGUtPnNpemUo
KTsKICAgICBGbG9hdFJlY3QgcmVjdE9uQ29udGVudHMoRmxvYXRQb2ludDo6emVybygpLCBzaXpl
KTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9y
bTsKICAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
cmVjdFRvUmVjdChyZWN0T25Db250ZW50cywgdGFyZ2V0UmVjdCkpOwotICAgIHN0YXRpY19jYXN0
PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpLT5kcmF3VGV4dHVyZShtX3ByaXZhdGUt
PmZyb250QnVmZmVyVGV4dHVyZUlEKCksIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgfCBU
ZXh0dXJlTWFwcGVyR0w6OlNob3VsZFVzZUFSQlRleHR1cmVSZWN0LCBzaXplLCByZWN0T25Db250
ZW50cywgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2spOworICAgIHN0YXRpY19jYXN0
PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpLT5kcmF3VGV4dHVyZShtX3ByaXZhdGUt
PmZyb250QnVmZmVyVGV4dHVyZUlEKCksIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgfCBU
ZXh0dXJlTWFwcGVyR0w6OlNob3VsZFVzZUFSQlRleHR1cmVSZWN0LCBzaXplLCByZWN0T25Db250
ZW50cywgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQogCiB1aW50MzJfdCBHcmFwaGlj
c1N1cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvd2luL0dyYXBoaWNzU3VyZmFjZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3Jh
cGhpY3NTdXJmYWNlV2luLmNwcAppbmRleCA5NTA5ZjA5ODNjNjI5MGNmMDBlZDNiY2FkOGE5YjEw
OTg2MjVkODdmLi4wNmY0MjdjZmNhZDgzNjQ4ZGZkNzhkNTkyNTNjYjBjMDQ0ZmY0OWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3Jh
cGhpY3NTdXJmYWNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcApAQCAtNDIxLDcgKzQyMSw3IEBA
IHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzCiAgICAgbV9wcml2YXRlLT5jb3B5RnJvbVRleHR1cmUo
dGV4dHVyZSwgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9y
bVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgR3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBJbnRTaXplIHNpemUg
PSBtX3ByaXZhdGUtPnNpemUoKTsKICAgICBGbG9hdFJlY3QgcmVjdE9uQ29udGVudHMoRmxvYXRQ
b2ludDo6emVybygpLCBzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAppbmRleCAzN2Y3MTU0ZjFjNjlk
OThiNGEyM2IwYzBjZDc0OGVmNWQ5ZDc1OTA4Li4yYjEzYzVlNTc0MWUxZGJjNDE2YjExMzc3MjYy
YmI3MGU1YTM3MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCkBAIC0xNDEsNiArMTQxLDcgQEAgVGV4
dHVyZU1hcHBlcjo6VGV4dHVyZU1hcHBlcihBY2NlbGVyYXRpb25Nb2RlIGFjY2VsZXJhdGlvbk1v
ZGUpCiAgICAgLCBtX3RleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwpCiAgICAgLCBtX3RleHR1
cmVQb29sKGFkb3B0UHRyKG5ldyBCaXRtYXBUZXh0dXJlUG9vbCgpKSkKICAgICAsIG1fYWNjZWxl
cmF0aW9uTW9kZShhY2NlbGVyYXRpb25Nb2RlKQorICAgICwgbV9tYXNrTW9kZShmYWxzZSkKIHsg
fQogCiBUZXh0dXJlTWFwcGVyOjp+VGV4dHVyZU1hcHBlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAppbmRleCBh
ZGVhZjNlNzE4ZTEzMjUwMzgyOWM5MDRmYzBhMmQyNzUyYzQ2MTg2Li5hYjMyZTY5YjEyNzRjYTM5
ODFhZTAzOTkxNWI5Mzc0NDY0YmMzOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTEzMiw3ICsxMzIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBm
bG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOdW1iZXIoaW50IG51bWJlciwgY29u
c3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVy
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9
IDEuMGYsIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlID0gMCwgdW5zaWduZWQgZXhw
b3NlZEVkZ2VzID0gQWxsRWRnZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUo
Y29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgZmxvYXQgb3BhY2l0eSA9IDEuMGYsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2Vz
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSA9IDA7CiAKICAgICAv
LyBtYWtlcyBhIHN1cmZhY2UgdGhlIHRhcmdldCBmb3IgdGhlIGZvbGxvd2luZyBkcmF3VGV4dHVy
ZSBjYWxscy4KQEAgLTE1Myw2ICsxNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJl
Z2luUGFpbnRpbmcoUGFpbnRGbGFncyA9IDApIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRQYWlu
dGluZygpIHsgfQogCisgICAgdm9pZCBzZXRNYXNrTW9kZShib29sIG0pIHsgbV9tYXNrTW9kZSA9
IG07IH0KKwogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZy
b21Qb29sKGNvbnN0IEludFNpemUmKTsKQEAgLTE2Niw2ICsxNjgsOCBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsKIAorICAgIGJvb2wgaXNJbk1hc2tNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tYXNrTW9kZTsgfQorCiBwcml2YXRlOgogI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKICAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFwcGVyPiBwbGF0
Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCk7CkBAIC0xNzksNiArMTgzLDcgQEAgcHJpdmF0ZToKICAg
ICBUZXh0RHJhd2luZ01vZGVGbGFncyBtX3RleHREcmF3aW5nTW9kZTsKICAgICBPd25QdHI8Qml0
bWFwVGV4dHVyZVBvb2w+IG1fdGV4dHVyZVBvb2w7CiAgICAgQWNjZWxlcmF0aW9uTW9kZSBtX2Fj
Y2VsZXJhdGlvbk1vZGU7CisgICAgYm9vbCBtX21hc2tNb2RlOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggNmJmYjNmMWNmZTViMmUxNjZjODEzYzAz
M2RhYWU2OGExNTFkZWY3ZC4uYzYwMGFhMmUxYmQyZjE3MzdhMjk3OThlMzc2Mzc2ZDJkNWU5OWMw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
IDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLCBwdWJsaWMgUmVmQ291bnRlZDxU
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCAv
KiByZXBhaW50Q291bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmKSB7IH0KICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyQmFj
a2luZ1N0b3JlKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggM2NkZGM5MzYzMTEw
M2NlODc3N2E0NTMxODlmZThhNzhiYmM4MTY4MS4uMTQyYjNiNGFlNGE3ZjRmMzc0ZTdjODE0Y2Fi
NjNmYWUyMDBlNzQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTM0OSw3ICszNDksNyBA
QCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xv
ciYgY29sb3IsIGNvbnN0IEZsb2F0UG9pbgogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlID0gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplKTsKICAgICBjb25zdCB1Y2hhciogYml0
cyA9IGltYWdlLmJpdHMoKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPih0ZXh0
dXJlLmdldCgpKS0+dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoYml0cywgc291cmNlUmVjdCwgSW50
UG9pbnQ6Onplcm8oKSwgaW1hZ2UuYnl0ZXNQZXJMaW5lKCkpOwotICAgIGRyYXdUZXh0dXJlKCp0
ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIDAsIEFsbEVkZ2VzKTsK
KyAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAx
LjBmLCBBbGxFZGdlcyk7CiAKICNlbGlmIFVTRShDQUlSTykKICAgICBDU3RyaW5nIGNvdW50ZXJT
dHJpbmcgPSBTdHJpbmc6Om51bWJlcihudW1iZXIpLmFzY2lpKCk7CkBAIC0zOTQsNyArMzk0LDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdOdW1iZXIoaW50IG51bWJlciwgY29uc3QgQ29s
b3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW4KICNlbmRpZgogfQogCi12b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYgdGV4dHVyZSwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBm
bG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrLCB1bnNpZ25lZCBleHBvc2Vk
RWRnZXMpCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4
dHVyZSYgdGV4dHVyZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRn
ZXMpCiB7CiAgICAgaWYgKCF0ZXh0dXJlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDAzLDIwICs0MDMsMTcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0
IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYKICAgICAgICAgcmV0dXJu
OwogCiAgICAgY29uc3QgQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxj
b25zdCBCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlKTsKLSAgICBkcmF3VGV4dHVyZSh0ZXh0dXJl
R0wuaWQoKSwgdGV4dHVyZUdMLmlzT3BhcXVlKCkgPyAwIDogU2hvdWxkQmxlbmQsIHRleHR1cmVH
TC5zaXplKCksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzaywgZXhwb3NlZEVkZ2Vz
KTsKKyAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlR0wuaWQoKSwgdGV4dHVyZUdMLmlzT3BhcXVlKCkg
PyAwIDogU2hvdWxkQmxlbmQsIHRleHR1cmVHTC5zaXplKCksIHRhcmdldFJlY3QsIG1hdHJpeCwg
b3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdU
ZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNp
emUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJp
dG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpCit2b2lkIFRl
eHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBGbGFn
cyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxv
YXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGJvb2wgdXNlUmVjdCA9
IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7Ci0gICAgYm9vbCBtYXNrZWQgPSAhIW1h
c2tUZXh0dXJlOwogICAgIGJvb2wgdXNlQW50aWFsaWFzaW5nID0gbV9lbmFibGVFZGdlRGlzdGFu
Y2VBbnRpYWxpYXNpbmcKICAgICAgICAgJiYgZXhwb3NlZEVkZ2VzID09IEFsbEVkZ2VzCiAgICAg
ICAgICYmICFtb2RlbFZpZXdNYXRyaXgubWFwUXVhZCh0YXJnZXRSZWN0KS5pc1JlY3RpbGluZWFy
KCk7CiAKICAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0g
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmU7Ci0gICAgaWYgKG1hc2tlZCkKLSAg
ICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6TWFzazsKICAgICBp
ZiAodXNlUmVjdCkKICAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6UmVjdDsKICAgICBpZiAob3BhY2l0eSA8IDEpCkBAIC00MjYsMTIgKzQyMywxMiBAQCB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBG
bGFncyBmbGFncywgY29uc3QgSQogICAgICAgICBmbGFncyB8PSBTaG91bGRBbnRpYWxpYXM7CiAg
ICAgfQogCi0gICAgaWYgKG1hc2tlZCB8fCB1c2VBbnRpYWxpYXNpbmcgfHwgb3BhY2l0eSA8IDEp
CisgICAgaWYgKHVzZUFudGlhbGlhc2luZyB8fCBvcGFjaXR5IDwgMSkKICAgICAgICAgZmxhZ3Mg
fD0gU2hvdWxkQmxlbmQ7CiAKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+
IHByb2dyYW07CiAgICAgcHJvZ3JhbSA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS5nZXRTaGFkZXJQ
cm9ncmFtKG9wdGlvbnMpOwotICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFt
LmdldCgpLCB0ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmll
d01hdHJpeCwgb3BhY2l0eSwgbWFza1RleHR1cmUpOworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRo
UHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdl
dFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTUwNCwxMSArNTAx
LDE2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vCiAgICAgc2hhZGVyUHJvZ3JhbS0+c2V0TWF0
cml4KHNoYWRlclByb2dyYW0tPm1vZGVsVmlld01hdHJpeExvY2F0aW9uKCksIG1hdHJpeCk7CiAg
ICAgc2hhZGVyUHJvZ3JhbS0+c2V0TWF0cml4KHNoYWRlclByb2dyYW0tPnByb2plY3Rpb25NYXRy
aXhMb2NhdGlvbigpLCBkYXRhKCkucHJvamVjdGlvbk1hdHJpeCk7CiAKLSAgICBpZiAoZmxhZ3Mg
JiBTaG91bGRCbGVuZCkgewotICAgICAgICBtX2NvbnRleHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNz
Q29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKTsK
KyAgICBpZiAoaXNJbk1hc2tNb2RlKCkpIHsKKyAgICAgICAgbV9jb250ZXh0M0QtPmJsZW5kRnVu
YyhHcmFwaGljc0NvbnRleHQzRDo6WkVSTywgR3JhcGhpY3NDb250ZXh0M0Q6OlNSQ19BTFBIQSk7
CiAgICAgICAgIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsK
LSAgICB9IGVsc2UKLSAgICAgICAgbV9jb250ZXh0M0QtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkJMRU5EKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZmxhZ3MgJiBTaG91bGRCbGVu
ZCkgeworICAgICAgICAgICAgbV9jb250ZXh0M0QtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQz
RDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSk7CisgICAgICAg
ICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9jb250ZXh0M0QtPmRpc2FibGUoR3JhcGhpY3NDb250
ZXh0M0Q6OkJMRU5EKTsKKyAgICB9CiAKICAgICBpZiAoZmxhZ3MgJiBTaG91bGRBbnRpYWxpYXMp
CiAgICAgICAgIGRyYXdFZGdlVHJpYW5nbGVzKHNoYWRlclByb2dyYW0pOwpAQCAtNTE2LDggKzUx
OCwxMSBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhdyhjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtbwogICAgICAgICBkcmF3VW5pdFJlY3Qoc2hh
ZGVyUHJvZ3JhbSwgZHJhd2luZ01vZGUpOwogCiAgICAgbV9jb250ZXh0M0QtPmRpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheShzaGFkZXJQcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpKTsKKyAgICBtX2Nv
bnRleHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4
dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdyYXBo
aWNzQ29udGV4dDNEOjpCTEVORCk7CiB9Ci12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1
cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9ncmFtLCB1
aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0
cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSkKKwor
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbSogcHJvZ3JhbSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxh
Z3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAg
ICBtX2NvbnRleHQzRC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQoKSk7CiAgICAgbV9j
b250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKQEAg
LTUzMywxOSArNTM4LDEwIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFk
V2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qIHByCiAgICAgaWYgKGZsYWdz
ICYgU2hvdWxkRmxpcFRleHR1cmUpCiAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRl
KDAsIC0xKTsKIAotCiAgICAgcHJvZ3JhbS0+c2V0TWF0cml4KHByb2dyYW0tPnRleHR1cmVTcGFj
ZU1hdHJpeExvY2F0aW9uKCksIHBhdHRlcm5UcmFuc2Zvcm0pOwogICAgIG1fY29udGV4dDNELT51
bmlmb3JtMWYocHJvZ3JhbS0+b3BhY2l0eUxvY2F0aW9uKCksIG9wYWNpdHkpOwogCi0gICAgaWYg
KG1hc2tUZXh0dXJlICYmIG1hc2tUZXh0dXJlLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgY29uc3Qg
Qml0bWFwVGV4dHVyZUdMKiBtYXNrVGV4dHVyZUdMID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFw
VGV4dHVyZUdMKj4obWFza1RleHR1cmUpOwotICAgICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpOwotICAgICAgICBtX2NvbnRleHQzRC0+
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1hc2tUZXh0dXJlR0wt
PmlkKCkpOwotICAgICAgICBtX2NvbnRleHQzRC0+dW5pZm9ybTFpKHByb2dyYW0tPm1hc2tMb2Nh
dGlvbigpLCAxKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkUwKTsKLSAgICB9Ci0KLSAgICBpZiAob3BhY2l0eSA8IDEgfHwgbWFz
a1RleHR1cmUpCisgICAgaWYgKG9wYWNpdHkgPCAxKQogICAgICAgICBmbGFncyB8PSBTaG91bGRC
bGVuZDsKIAogICAgIGRyYXcocmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLCBHcmFwaGlj
c0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCBmbGFncyk7CkBAIC05NDMsNyArOTM5LDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdGaWx0ZXJlZChjb25zdCBCaXRtYXBUZXh0dXJlJiBzYW1w
bGVyLCBjb25zdCBCaXRtYXBUZXgKIAogICAgIHByZXBhcmVGaWx0ZXJQcm9ncmFtKHByb2dyYW0u
Z2V0KCksIGZpbHRlciwgcGFzcywgc2FtcGxlci5jb250ZW50U2l6ZSgpLCBzdGF0aWNfY2FzdDxj
b25zdCBCaXRtYXBUZXh0dXJlR0wmPihjb250ZW50VGV4dHVyZSkuaWQoKSk7CiAgICAgRmxvYXRS
ZWN0IHRhcmdldFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgc2FtcGxlci5jb250ZW50U2l6ZSgpKTsK
LSAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgc3RhdGljX2Nh
c3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oc2FtcGxlcikuaWQoKSwgMCwgSW50U2l6ZSgxLCAx
KSwgdGFyZ2V0UmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgMSwgMCk7CisgICAgZHJhd1Rl
eHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHN0YXRpY19jYXN0PGNvbnN0IEJp
dG1hcFRleHR1cmVHTCY+KHNhbXBsZXIpLmlkKCksIDAsIEludFNpemUoMSwgMSksIHRhcmdldFJl
Y3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIDEpOwogfQogCiBQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6YXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIGNvbnN0IEJpdG1hcFRleHR1cmUmIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDNlODBhMTc4MmVj
MTQ4OTFmZDdiY2NjMmU5OTA5M2I5NmRkZGUzMTUuLmE0MjM0MWZmMzQxN2QyZGZkYTRhYzUwMThi
MGFkOGEzMGM0MDhiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTU0LDggKzU0LDggQEAgcHVi
bGljOgogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZv
aWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1h
cFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZs
YWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBv
cGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3Nl
ZEVkZ2VzID0gQWxsRWRnZXMpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBC
aXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdz
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgY29uc3QgQ29sb3ImKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBiaW5kU3Vy
ZmFjZShCaXRtYXBUZXh0dXJlKiBzdXJmYWNlKSBPVkVSUklERTsKQEAgLTEwMiw3ICsxMDIsNyBA
QCBwcml2YXRlOgogCiAgICAgVGV4dHVyZU1hcHBlckdMKCk7CiAKLSAgICB2b2lkIGRyYXdUZXh0
dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIHVpbnQzMl90
IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29u
c3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOworICAgIHZvaWQgZHJhd1RleHR1cmVkUXVh
ZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4dHVy
ZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KTsKICAgICB2b2lk
IGRyYXcoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qLCBHQzNEZW51bSBkcmF3aW5n
TW9kZSwgRmxhZ3MpOwogCiAgICAgdm9pZCBkcmF3VW5pdFJlY3QoVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW0qLCBHQzNEZW51bSBkcmF3aW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXIuY3BwCmluZGV4IDFlNDlmOWI2ZWNhODhkNmE3Y2ZkOTMxOTEyMjJjMDQ4MTEw
MzlkNzUuLjUyYTg0ODc5MmQ2ZmY2NmU2NDc5YWFkYTI1MTQyODEzOTg2YTVkMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbWF0cml4LCBjb24KICNlbmRpZgogfQogCi12b2lkIFRleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlcjo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYgdGV4dHVyZSwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWdu
ZWQgLyogZXhwb3NlZEVkZ2VzICovKQordm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRy
YXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgdW5zaWduZWQgLyogZXhwb3NlZEVkZ2VzICovKQogewogICAgIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCA9IGN1cnJlbnRDb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtMTIy
LDIyICsxMjIsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUo
Y29uc3QgQml0bWFwVGV4dHVyZSYgdGV4dHVyZSwgY29uc3QgRgogCiAgICAgY29uc3QgQml0bWFw
VGV4dHVyZUltYWdlQnVmZmVyJiB0ZXh0dXJlSW1hZ2VCdWZmZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXImPih0ZXh0dXJlKTsKICAgICBJbWFnZUJ1ZmZlciog
aW1hZ2UgPSB0ZXh0dXJlSW1hZ2VCdWZmZXIubV9pbWFnZS5nZXQoKTsKLSAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IG1hc2tlZEltYWdlOwotCi0gICAgaWYgKG1hc2tUZXh0dXJlICYmIG1hc2tUZXh0
dXJlLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgY29uc3QgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVy
KiBtYXNrID0gc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyKj4obWFz
a1RleHR1cmUpOwotICAgICAgICBtYXNrZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUobWFz
a1RleHR1cmUtPmNvbnRlbnRTaXplKCkpOwotICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tD
b250ZXh0ID0gbWFza2VkSW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgbWFza0NvbnRleHQtPmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQ6Onplcm8o
KSwgQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgIGlmIChvcGFjaXR5IDwgMSkgewotICAgICAgICAg
ICAgbWFza0NvbnRleHQtPnNldEFscGhhKG9wYWNpdHkpOwotICAgICAgICAgICAgb3BhY2l0eSA9
IDE7Ci0gICAgICAgIH0KLSAgICAgICAgbWFza0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtYXNr
LT5tX2ltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludDo6emVybygpLCBD
b21wb3NpdGVEZXN0aW5hdGlvbkluKTsKLSAgICAgICAgaW1hZ2UgPSBtYXNrZWRJbWFnZS5nZXQo
KTsKLSAgICB9Ci0KICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKGlzSW5NYXNrTW9kZSgpID8gQ29tcG9zaXRlRGVzdGluYXRpb25JbiA6IENv
bXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIGNvbnRleHQtPnNldEFscGhhKG9wYWNpdHkpOwogI2lm
IEVOQUJMRSgzRF9SRU5ERVJJTkcpCiAgICAgY29udGV4dC0+Y29uY2F0M0RUcmFuc2Zvcm0obWF0
cml4KTsKQEAgLTE1NSw2ICsxNDEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6
ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFucwogICAgICAg
ICByZXR1cm47CiAKICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKGlzSW5NYXNrTW9kZSgpID8gQ29tcG9zaXRlRGVzdGluYXRpb25JbiA6IENv
bXBvc2l0ZVNvdXJjZU92ZXIpOwogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiAgICAgY29udGV4
dC0+Y29uY2F0M0RUcmFuc2Zvcm0obWF0cml4KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmgKaW5kZXggODBlNjk0NDA1OTA1NDc2MDdlNzAzMjYxZTc5MzE1NWRkZTNj
MjBkNS4uMzVmMmI0NDlkOTZkYzBiYzliN2IwYWYxOThhYzA0MGNkOTRkNjg3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gVGV4dHVyZU1hcHBlciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkcmF3
Qm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRyYXdOdW1iZXIoaW50IG51bWJlciwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBC
aXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJl
Z2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kU3VyZmFjZShCaXRtYXBUZXh0dXJlKiBzdXJm
YWNlKSBPVkVSUklERSB7IG1fY3VycmVudFN1cmZhY2UgPSBzdXJmYWNlO30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAKaW5kZXggOGEyY2M5OTJiNzExMDY2NjEwN2MxYmUwMzEzYmE0YWY5NmM2
ZmJhZi4uZjdkNWRhNWE5ZTA3NTJlMWU2YWQ5OWQwMzNjNGY1N2I4Y2MwNjRiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIwLDYgKzIwLDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKIAorI2luY2x1ZGUgIlJlZ2lvbi5o
IgorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0yNyw3ICsyOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVN
YXBwZXJQYWludE9wdGlvbnMgewogcHVibGljOgogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBz
dXJmYWNlOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrOwogICAgIGZsb2F0IG9wYWNp
dHk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgIEludFNpemUgb2Zm
c2V0OwpAQCAtMTA4LDggKzEwOSw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNl
bGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICB0cmFuc2Zv
cm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpOwogCiAgICAgZmxvYXQg
b3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFz
ayA9IG9wdGlvbnMubWFzazsKLQogICAgIGlmIChtX3N0YXRlLnNvbGlkQ29sb3IuaXNWYWxpZCgp
ICYmICFtX3N0YXRlLmNvbnRlbnRzUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgb3B0aW9ucy50
ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNm
b3JtLCBibGVuZFdpdGhPcGFjaXR5KG1fc3RhdGUuc29saWRDb2xvciwgb3BhY2l0eSkpOwogICAg
ICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzKQpAQCAtMTIwLDcgKzExOSw3IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYgb3B0aW9ucykKICAgICBpZiAobV9iYWNraW5nU3RvcmUpIHsKICAgICAgICAgQVNT
RVJUKG1fc3RhdGUuZHJhd3NDb250ZW50ICYmIG1fc3RhdGUuY29udGVudHNWaXNpYmxlICYmICFt
X3N0YXRlLnNpemUuaXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKCFsYXllclJlY3QoKS5pc0Vt
cHR5KCkpOwotICAgICAgICBtX2JhY2tpbmdTdG9yZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0
aW9ucy50ZXh0dXJlTWFwcGVyLCBsYXllclJlY3QoKSwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNr
LmdldCgpKTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9w
dGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiAg
ICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCiAgICAgICAgICAgICBtX2JhY2tp
bmdTdG9yZS0+ZHJhd0JvcmRlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuZGVidWdC
b3JkZXJDb2xvciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlcldpZHRoLCBsYXllclJlY3QoKSwgdHJhbnNm
b3JtKTsKICAgICAgICAgLy8gT25seSBkcmF3IHJlcGFpbnQgY291bnQgZm9yIHRoZSBtYWluIGJh
Y2tpbmcgc3RvcmUuCkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogCiAg
ICAgaWYgKG1fY29udGVudHNMYXllcikgewogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlz
RW1wdHkoKSk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci0+cGFpbnRUb1RleHR1cmVNYXBwZXIo
b3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBv
cGFjaXR5LCBtYXNrLmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5wYWludFRvVGV4
dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuY29udGVudHNSZWN0LCB0
cmFuc2Zvcm0sIG9wYWNpdHkpOwogICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJz
KQogICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5kcmF3Qm9yZGVyKG9wdGlvbnMudGV4dHVy
ZU1hcHBlciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVnQm9yZGVyV2lk
dGgsIG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0pOwogICAgIH0KQEAgLTE2Niw4MiAr
MTY1LDE2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbihj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvCiAgICAgICAgIG9wdGlvbnMudGV4dHVy
ZU1hcHBlci0+ZW5kQ2xpcCgpOwogfQogCi1JbnRSZWN0IFRleHR1cmVNYXBwZXJMYXllcjo6aW50
ZXJtZWRpYXRlU3VyZmFjZVJlY3QoKQotewotICAgIC8vIEZJWE1FOiBBZGQgYW4gaW52ZXJzZSB0
cmFuc2Zvcm0gdG8gTGF5ZXJUcmFuc2Zvcm0uCi0gICAgcmV0dXJuIGludGVybWVkaWF0ZVN1cmZh
Y2VSZWN0KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKSk7Ci19Ci0KLUlu
dFJlY3QgVGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIEludFJlY3QgcmVjdDsKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBsb2NhbFRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4
KG1hdHJpeCkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpOwotICAgIHJl
Y3QgPSBlbmNsb3NpbmdJbnRSZWN0KGxvY2FsVHJhbnNmb3JtLm1hcFJlY3QobGF5ZXJSZWN0KCkp
KTsKLSAgICBpZiAoIW1fc3RhdGUubWFza3NUb0JvdW5kcyAmJiAhbV9zdGF0ZS5tYXNrTGF5ZXIp
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgcmVjdC51bml0ZShtX2NoaWxkcmVuW2ldLT5pbnRlcm1lZGlhdGVTdXJm
YWNlUmVjdChtYXRyaXgpKTsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAg
aWYgKG1fY3VycmVudEZpbHRlcnMuaGFzT3V0c2V0cygpKSB7Ci0gICAgICAgIEZpbHRlck91dHNl
dHMgb3V0c2V0cyA9IG1fY3VycmVudEZpbHRlcnMub3V0c2V0cygpOwotICAgICAgICBJbnRSZWN0
IHVuZmlsdGVyZWRUYXJnZXRSZWN0KHJlY3QpOwotICAgICAgICByZWN0Lm1vdmUoc3RkOjptYXgo
MCwgLW91dHNldHMubGVmdCgpKSwgc3RkOjptYXgoMCwgLW91dHNldHMudG9wKCkpKTsKLSAgICAg
ICAgcmVjdC5leHBhbmQob3V0c2V0cy5sZWZ0KCkgKyBvdXRzZXRzLnJpZ2h0KCksIG91dHNldHMu
dG9wKCkgKyBvdXRzZXRzLmJvdHRvbSgpKTsKLSAgICAgICAgcmVjdC51bml0ZSh1bmZpbHRlcmVk
VGFyZ2V0UmVjdCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5
ZXIpCi0gICAgICAgIHJlY3QudW5pdGUobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPmludGVybWVkaWF0
ZVN1cmZhY2VSZWN0KG1hdHJpeCkpOwotCi0gICAgcmV0dXJuIHJlY3Q7Ci19Ci0KLVRleHR1cmVN
YXBwZXJMYXllcjo6Q29udGVudHNMYXllckNvdW50IFRleHR1cmVNYXBwZXJMYXllcjo6Y291bnRQ
b3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMoKSBjb25zdAorYm9vbCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNob3VsZEJsZW5kKCkgY29uc3QKIHsKLSAgICBpbnQgc2VsZkxheWVyc1dpdGhDb250ZW50
cyA9IChtX3N0YXRlLmRyYXdzQ29udGVudCA/IDEgOiAwKSArIChtX2NvbnRlbnRzTGF5ZXIgPyAx
IDogMCk7Ci0gICAgaW50IHBvdGVudGlhbExheWVyc1dpdGhDb250ZW50cyA9IHNlbGZMYXllcnNX
aXRoQ29udGVudHMgKyBtX2NoaWxkcmVuLnNpemUoKTsKLQotICAgIGlmICghcG90ZW50aWFsTGF5
ZXJzV2l0aENvbnRlbnRzKQotICAgICAgICByZXR1cm4gTm9MYXllcnNXaXRoQ29udGVudDsKLQot
ICAgIGlmIChwb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMgPiAxKQotICAgICAgICByZXR1cm4g
TXVsdGlwbGVMYXllcnNXaXRoQ29udGVudHM7Ci0KLSAgICBpZiAobV9jaGlsZHJlbi5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBTaW5nbGVMYXllcldpdGhDb250ZW50czsKLQotICAgIHJldHVy
biBtX2NoaWxkcmVuLmZpcnN0KCktPmNvdW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCk7
Ci19CisgICAgaWYgKG1fc3RhdGUucHJlc2VydmVzM0QpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAotYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNob3VsZFBhaW50VG9JbnRlcm1lZGlhdGVTdXJm
YWNlKCkgY29uc3QKLXsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYgKG1fY3VycmVu
dEZpbHRlcnMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgIGJvb2wg
aGFzT3BhY2l0eSA9IG1fY3VycmVudE9wYWNpdHkgPCAwLjk5OwotICAgIGJvb2wgY2FuSGF2ZU11
bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnQgPSBjb3VudFBvdGVudGlhbExheWVyc1dpdGhDb250ZW50
cygpID09IE11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnRzOwotICAgIGJvb2wgaGFzUmVwbGljYSA9
ICEhbV9zdGF0ZS5yZXBsaWNhTGF5ZXI7Ci0gICAgYm9vbCBoYXNNYXNrID0gISFtX3N0YXRlLm1h
c2tMYXllcjsKLQotICAgIC8vIFdlIGRvbid0IHVzZSB0d28tcGFzcyBibGVuZGluZyBmb3IgcHJl
c2VydmVzLTNkLCB0aGF0J3MgaW4gc3luYyB3aXRoIFNhZmFyaS4KLSAgICBpZiAobV9zdGF0ZS5w
cmVzZXJ2ZXMzRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gV2Ugc2hvdWxkIHVz
ZSBhbiBpbnRlcm1lZGlhdGUgc3VyZmFjZSB3aGVuIGJsZW5kaW5nIHNldmVyYWwgaXRlbXMgd2l0
aCBhbiBhbmNlc3RvciBvcGFjaXR5LgotICAgIC8vIFRlc3RlZCBieSBjb21wb3NpdGluZy9yZWZs
ZWN0aW9ucy9yZWZsZWN0aW9uLW9wYWNpdHkuaHRtbAotICAgIGlmIChoYXNPcGFjaXR5ICYmIChj
YW5IYXZlTXVsdGlwbGVMYXllcnNXaXRoQ29udGVudCB8fCBoYXNSZXBsaWNhKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAvLyBXZSBzaG91bGQgdXNlIGFuIGludGVybWVkaWF0ZSBzdXJm
YWNlIHdpdGggYSBtYXNrZWQgYW5jZXN0b3IuCi0gICAgLy8gSW4gdGhlIGNhc2Ugb2YgcmVwbGlj
YXMgdGhlIG1hc2sgaXMgYXBwbGllZCBiZWZvcmUgcmVwbGljYXRpbmcuCi0gICAgLy8gVGVzdGVk
IGJ5IGNvbXBvc2l0aW5nL21hc2tzL21hc2tlZC1hbmNlc3Rvci5odG1sCi0gICAgaWYgKGhhc01h
c2sgJiYgY2FuSGF2ZU11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnQgJiYgIWhhc1JlcGxpY2EpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2N1
cnJlbnRPcGFjaXR5IDwgMSB8fCBtX3N0YXRlLm1hc2tMYXllciB8fCAobV9zdGF0ZS5yZXBsaWNh
TGF5ZXIgJiYgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyKTsKIH0KIAog
Ym9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmlzVmlzaWJsZSgpIGNvbnN0CkBAIC0yNjEsMTEgKzE5
NCw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhS
ZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWluCiB7CiAgICAgaWYgKG1fc3RhdGUucmVwbGlj
YUxheWVyKSB7CiAgICAgICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgcmVwbGljYU9wdGlv
bnMob3B0aW9ucyk7Ci0gICAgICAgIC8vIFdlIGNob29zZSBlaXRoZXIgdGhlIGNvbnRlbnQncyBt
YXNrIG9yIHRoZSByZXBsaWNhJ3MgbWFzay4KLSAgICAgICAgLy8gRklYTUU6IGJsZW5kIHRoZSB0
d28gaWYgYm90aCBleGlzdC4KLSAgICAgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0
YXRlLm1hc2tMYXllcikKLSAgICAgICAgICAgIHJlcGxpY2FPcHRpb25zLm1hc2sgPSBtX3N0YXRl
LnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1cmUoKTsKLQogICAgICAgICBy
ZXBsaWNhT3B0aW9ucy50cmFuc2Zvcm0KICAgICAgICAgICAgIC5tdWx0aXBseShtX3N0YXRlLnJl
cGxpY2FMYXllci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpCiAgICAgICAgICAgICAu
bXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKQEAgLTI4
NSw2ICsyMTMsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGVkT3BhY2l0
eShmbG9hdCBvcGFjaXR5KQogICAgIG1fY3VycmVudE9wYWNpdHkgPSBvcGFjaXR5OwogfQogCitU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0o
KQoreworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3N0YXRlLnJlcGxpY2FMYXll
ci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpLm11bHRpcGx5KG1fY3VycmVudFRyYW5z
Zm9ybS5jb21iaW5lZCgpLmludmVyc2UoKSk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CkBAIC0zMDcsNyArMjQwLDcgQEAgc3RhdGljIGJvb2wg
c2hvdWxkS2VlcENvbnRlbnRUZXh0dXJlKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiBhcHBseUZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgQml0bWFwVGV4dHVyZSogc291cmNlLCBJbnRSZWN0JiB0YXJn
ZXRSZWN0KQorc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIEJpdG1hcFRleHR1cmUqIHNvdXJjZSkKIHsKICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgpKQog
ICAgICAgICByZXR1cm4gc291cmNlOwpAQCAtMzE3LDUxICsyNTAsMTg1IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBmaWx0ZXJzLCBUCiB9CiAjZW5kaWYKIAotdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50
UmVjdXJzaXZlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCitzdGF0
aWMgdm9pZCByZXNvbHZlT3ZlcmxhcHMoUmVnaW9uJiBvdmVybGFwUmVnaW9uLCBSZWdpb24mIG5v
bk92ZXJsYXBSZWdpb24sIFJlZ2lvbiBuZXdSZWdpb24pCiB7Ci0gICAgaWYgKCFpc1Zpc2libGUo
KSkKKyAgICBSZWdpb24gbmV3T3ZlcmxhcFJlZ2lvbihuZXdSZWdpb24pOworICAgIG5ld092ZXJs
YXBSZWdpb24uaW50ZXJzZWN0KG5vbk92ZXJsYXBSZWdpb24pOworICAgIG5vbk92ZXJsYXBSZWdp
b24uc3VidHJhY3QobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgb3ZlcmxhcFJlZ2lvbi51bml0ZShu
ZXdPdmVybGFwUmVnaW9uKTsKKyAgICBuZXdSZWdpb24uc3VidHJhY3Qob3ZlcmxhcFJlZ2lvbik7
CisgICAgbm9uT3ZlcmxhcFJlZ2lvbi51bml0ZShuZXdSZWdpb24pOworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6Y29tcHV0ZU92ZXJsYXBSZWdpb25zKFJlZ2lvbiYgb3ZlcmxhcFJlZ2lv
biwgUmVnaW9uJiBub25PdmVybGFwUmVnaW9uLCBib29sIGFsd2F5c1Jlc29sdmVTZWxmT3Zlcmxh
cCkKK3sKKyAgICBpZiAoIW1fc3RhdGUudmlzaWJsZSB8fCAhbV9zdGF0ZS5jb250ZW50c1Zpc2li
bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0IG9wYWNpdHkgPSBvcHRpb25zLm9wYWNp
dHkgKiBtX2N1cnJlbnRPcGFjaXR5OwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrVGV4
dHVyZSA9IG1fc3RhdGUubWFza0xheWVyID8gbV9zdGF0ZS5tYXNrTGF5ZXItPnRleHR1cmUoKSA6
IDA7CisgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKKyAgICBpZiAobV9iYWNraW5nU3RvcmUg
fHwgbV9zdGF0ZS5tYXNrc1RvQm91bmRzIHx8IG1fc3RhdGUubWFza0xheWVyIHx8IGhhc0ZpbHRl
cnMoKSkKKyAgICAgICAgYm91bmRpbmdSZWN0ID0gbGF5ZXJSZWN0KCk7CisgICAgZWxzZSBpZiAo
bV9jb250ZW50c0xheWVyIHx8IG1fc3RhdGUuc29saWRDb2xvci5hbHBoYSgpKQorICAgICAgICBi
b3VuZGluZ1JlY3QgPSBtX3N0YXRlLmNvbnRlbnRzUmVjdDsKIAotICAgIFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOwotICAgIHBhaW50T3B0aW9ucy5tYXNr
ID0gbWFza1RleHR1cmUuZ2V0KCk7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIGlmICht
X2N1cnJlbnRGaWx0ZXJzLmhhc091dHNldHMoKSkgeworICAgICAgICBGaWx0ZXJPdXRzZXRzIG91
dHNldHMgPSBtX2N1cnJlbnRGaWx0ZXJzLm91dHNldHMoKTsKKyAgICAgICAgSW50UmVjdCB1bmZp
bHRlcmVkVGFyZ2V0UmVjdChib3VuZGluZ1JlY3QpOworICAgICAgICBib3VuZGluZ1JlY3QubW92
ZShzdGQ6Om1heCgwLCAtb3V0c2V0cy5sZWZ0KCkpLCBzdGQ6Om1heCgwLCAtb3V0c2V0cy50b3Ao
KSkpOworICAgICAgICBib3VuZGluZ1JlY3QuZXhwYW5kKG91dHNldHMubGVmdCgpICsgb3V0c2V0
cy5yaWdodCgpLCBvdXRzZXRzLnRvcCgpICsgb3V0c2V0cy5ib3R0b20oKSk7CisgICAgICAgIGJv
dW5kaW5nUmVjdC51bml0ZSh1bmZpbHRlcmVkVGFyZ2V0UmVjdCk7CisgICAgfQorI2VuZGlmCisK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhTWF0cml4OworICAgIGlmIChtX3N0YXRl
LnJlcGxpY2FMYXllcikgeworICAgICAgICByZXBsaWNhTWF0cml4ID0gcmVwbGljYVRyYW5zZm9y
bSgpOworICAgICAgICBib3VuZGluZ1JlY3QudW5pdGUocmVwbGljYU1hdHJpeC5tYXBSZWN0KGJv
dW5kaW5nUmVjdCkpOworICAgIH0KIAotICAgIGlmICghc2hvdWxkUGFpbnRUb0ludGVybWVkaWF0
ZVN1cmZhY2UoKSkgewotICAgICAgICBwYWludE9wdGlvbnMub3BhY2l0eSA9IG9wYWNpdHk7Ci0g
ICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EocGFpbnRPcHRpb25zKTsKKyAg
ICBib3VuZGluZ1JlY3QgPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5tYXBSZWN0KGJv
dW5kaW5nUmVjdCk7CisKKyAgICAvLyBDb3VudCBhbGwgbWFza3MgYW5kIGZpbHRlcnMgYXMgb3Zl
cmxhcCBsYXllcnMuCisgICAgaWYgKGhhc0ZpbHRlcnMoKSB8fCBtX3N0YXRlLm1hc2tMYXllciB8
fCAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIgJiYgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUu
bWFza0xheWVyKSkgeworICAgICAgICBSZWdpb24gbmV3T3ZlcmxhcFJlZ2lvbihlbmNsb3NpbmdJ
bnRSZWN0KGJvdW5kaW5nUmVjdCkpOworICAgICAgICBub25PdmVybGFwUmVnaW9uLnN1YnRyYWN0
KG5ld092ZXJsYXBSZWdpb24pOworICAgICAgICBvdmVybGFwUmVnaW9uLnVuaXRlKG5ld092ZXJs
YXBSZWdpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gUHJlcGFyZSBhIHN1
cmZhY2UgdG8gcGFpbnQgaW50by4KLSAgICAvLyBXZSBwYWludCBpbnRvIHRoZSBzdXJmYWNlIGln
bm9yaW5nIHRoZSBvcGFjaXR5L3RyYW5zZm9ybSBvZiB0aGUgY3VycmVudCBsYXllci4KLSAgICBJ
bnRSZWN0IHN1cmZhY2VSZWN0ID0gaW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QoKTsKLSAgICBSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YWNxdWly
ZVRleHR1cmVGcm9tUG9vbChzdXJmYWNlUmVjdC5zaXplKCkpOwotICAgIHBhaW50T3B0aW9ucy5z
dXJmYWNlID0gc3VyZmFjZTsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNl
KHN1cmZhY2UuZ2V0KCkpOwotICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0gMTsKKyAgICBSZWdp
b24gbmV3T3ZlcmxhcFJlZ2lvbjsKKyAgICBSZWdpb24gbmV3Tm9uT3ZlcmxhcFJlZ2lvbihlbmNs
b3NpbmdJbnRSZWN0KGJvdW5kaW5nUmVjdCkpOworCisgICAgaWYgKCFtX3N0YXRlLm1hc2tzVG9C
b3VuZHMpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGNoaWxkID0gbV9jaGls
ZHJlbltpXTsKKyAgICAgICAgICAgIGJvb2wgYWx3YXlzUmVzb2x2ZVNlbGZPdmVybGFwRm9yQ2hp
bGRyZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIGNoaWxkLT5jb21wdXRlT3ZlcmxhcFJlZ2lvbnMo
bmV3T3ZlcmxhcFJlZ2lvbiwgbmV3Tm9uT3ZlcmxhcFJlZ2lvbiwgYWx3YXlzUmVzb2x2ZVNlbGZP
dmVybGFwRm9yQ2hpbGRyZW4pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUu
cmVwbGljYUxheWVyKSB7CisgICAgICAgIG5ld092ZXJsYXBSZWdpb24udW5pdGUocmVwbGljYU1h
dHJpeC5tYXBSZWN0KG5ld092ZXJsYXBSZWdpb24uYm91bmRzKCkpKTsKKyAgICAgICAgUmVnaW9u
IHJlcGxpY2FSZWdpb24ocmVwbGljYU1hdHJpeC5tYXBSZWN0KG5ld05vbk92ZXJsYXBSZWdpb24u
Ym91bmRzKCkpKTsKKyAgICAgICAgcmVzb2x2ZU92ZXJsYXBzKG5ld092ZXJsYXBSZWdpb24sIG5l
d05vbk92ZXJsYXBSZWdpb24sIHJlcGxpY2FSZWdpb24pOworICAgIH0KIAotICAgIHBhaW50T3B0
aW9ucy50cmFuc2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCk7
Ci0gICAgcGFpbnRPcHRpb25zLm9mZnNldCA9IC1JbnRTaXplKHN1cmZhY2VSZWN0LngoKSwgc3Vy
ZmFjZVJlY3QueSgpKTsKKyAgICBpZiAoIWFsd2F5c1Jlc29sdmVTZWxmT3ZlcmxhcCAgJiYgc2hv
dWxkQmxlbmQoKSkgeworICAgICAgICBuZXdOb25PdmVybGFwUmVnaW9uLnVuaXRlKG5ld092ZXJs
YXBSZWdpb24pOworICAgICAgICBuZXdPdmVybGFwUmVnaW9uID0gUmVnaW9uKCk7CisgICAgfQog
Ci0gICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShwYWludE9wdGlvbnMpOworICAg
IG92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgcmVzb2x2ZU92ZXJs
YXBzKG92ZXJsYXBSZWdpb24sIG5vbk92ZXJsYXBSZWdpb24sIG5ld05vbk92ZXJsYXBSZWdpb24p
OworfQogCi0gICAgLy8gSWYgd2UgcGFpbnRlZCB0aGUgcmVwbGljYSwgdGhlIG1hc2sgaXMgYWxy
ZWFkeSBhcHBsaWVkIHNvIHdlIGRvbid0IG5lZWQgdG8gcGFpbnQgaXQgYWdhaW4uCi0gICAgaWYg
KG1fc3RhdGUucmVwbGljYUxheWVyKQotICAgICAgICBtYXNrVGV4dHVyZSA9IDA7Cit2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVN
YXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgUmVnaW9uIG92ZXJsYXBSZWdpb247
CisgICAgUmVnaW9uIG5vbk92ZXJsYXBSZWdpb247CisgICAgY29tcHV0ZU92ZXJsYXBSZWdpb25z
KG92ZXJsYXBSZWdpb24sIG5vbk92ZXJsYXBSZWdpb24pOworICAgIGlmIChvdmVybGFwUmVnaW9u
LmlzRW1wdHkoKSkgeworICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKG9w
dGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPEludFJlY3Q+IHJl
Y3RzID0gbm9uT3ZlcmxhcFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5i
ZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcmVjdHNbaV0pOworICAgICAgICBwYWlu
dFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKG9wdGlvbnMpOworICAgICAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXItPmVuZENsaXAoKTsKKyAgICB9CisKKyAgICByZWN0cyA9IG92ZXJsYXBSZWdp
b24ucmVjdHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIEludFJlY3QgcmVjdCA9IHJlY3RzW2ldOworICAgICAgICBjb25zdCBzdGF0
aWMgaW50IG1heFJlY3REaW1lbnNpb24gPSAyMDAwOworICAgICAgICBmb3IgKGludCB4ID0gcmVj
dC54KCk7IHggPCByZWN0Lm1heFgoKTsgeCArPSBtYXhSZWN0RGltZW5zaW9uKSB7CisgICAgICAg
ICAgICBmb3IgKGludCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsgeSArPSBtYXhSZWN0
RGltZW5zaW9uKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCh4LCB5LCBtYXhS
ZWN0RGltZW5zaW9uLCBtYXhSZWN0RGltZW5zaW9uKTsKKyAgICAgICAgICAgICAgICB0aWxlUmVj
dC5pbnRlcnNlY3QocmVjdCk7CisgICAgICAgICAgICAgICAgcGFpbnRXaXRoSW50ZXJtZWRpYXRl
U3VyZmFjZShvcHRpb25zLCB0aWxlUmVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjphcHBseU1hc2soY29uc3QgVGV4dHVy
ZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXItPnNldE1hc2tNb2RlKHRydWUpOworICAgIEludFJlY3QgciA9IGVuY2xvc2luZ0ludFJlY3Qo
bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkubWFwUmVjdChsYXllclJlY3QoKSkpOworICAg
IHBhaW50U2VsZihvcHRpb25zKTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnNldE1hc2tN
b2RlKGZhbHNlKTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9v
bChzaXplKTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHN1cmZhY2Uu
Z2V0KCkpOworICAgIHBhaW50U2VsZkFuZENoaWxkcmVuKG9wdGlvbnMpOworICAgIGlmIChtX3N0
YXRlLm1hc2tMYXllcikKKyAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5TWFzayhvcHRp
b25zKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgc3VyZmFjZSA9IGFwcGx5RmlsdGVy
cyhtX2N1cnJlbnRGaWx0ZXJzLCBvcHRpb25zLnRleHR1cmVNYXBwZXIsIHN1cmZhY2UuZ2V0KCks
IHN1cmZhY2VSZWN0KTsKKyAgICBpZiAoIW1fY3VycmVudEZpbHRlcnMuaXNFbXB0eSgpKQorICAg
ICAgICBzdXJmYWNlID0gYXBwbHlGaWx0ZXJzKG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4
dHVyZU1hcHBlciwgc3VyZmFjZS5nZXQoKSk7CiAjZW5kaWYKKyAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmJpbmRTdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOworICAgIHJldHVybiBzdXJmYWNlOwor
fQogCitzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjb21taXRTdXJmYWNlKGNvbnN0
IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gc3VyZmFjZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgb3BhY2l0eSkKK3sKICAg
ICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQo
KSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdGFyZ2V0VHJhbnNmb3JtOwogICAgIHRhcmdl
dFRyYW5zZm9ybS50cmFuc2xhdGUob3B0aW9ucy5vZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZz
ZXQuaGVpZ2h0KCkpOwogICAgIHRhcmdldFRyYW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5z
Zm9ybSk7Ci0gICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5j
b21iaW5lZCgpKTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCpzdXJm
YWNlLmdldCgpLCByZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9wYWNpdHkpOworICAgIHJldHVybiAw
OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3Vy
ZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQoreworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiByZXBsaWNhU3VyZmFjZTsK
KyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFpblN1cmZhY2U7CisgICAgVGV4dHVyZU1hcHBl
clBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMob3B0aW9ucyk7CisgICAgcGFpbnRPcHRpb25zLm9m
ZnNldCA9IC1JbnRTaXplKHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgcGFpbnRPcHRpb25zLm9w
YWNpdHkgPSAxOworICAgIHBhaW50T3B0aW9ucy50cmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpOworICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikgeworICAgICAgICBwYWludE9w
dGlvbnMudHJhbnNmb3JtID0gcmVwbGljYVRyYW5zZm9ybSgpOworICAgICAgICByZXBsaWNhU3Vy
ZmFjZSA9IHBhaW50SW50b1N1cmZhY2UocGFpbnRPcHRpb25zLCByZWN0LnNpemUoKSk7CisgICAg
ICAgIHBhaW50T3B0aW9ucy50cmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworICAg
ICAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyKQorICAgICAg
ICAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyLT5hcHBseU1hc2so
cGFpbnRPcHRpb25zKTsKKyAgICB9CiAKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdU
ZXh0dXJlKCpzdXJmYWNlLmdldCgpLCBzdXJmYWNlUmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFj
aXR5LCBtYXNrVGV4dHVyZS5nZXQoKSk7CisgICAgaWYgKHJlcGxpY2FTdXJmYWNlICYmIG9wdGlv
bnMub3BhY2l0eSA9PSAxKQorICAgICAgICByZXBsaWNhU3VyZmFjZSA9IGNvbW1pdFN1cmZhY2Uo
b3B0aW9ucywgcmVwbGljYVN1cmZhY2UsIHJlY3QsIDEpOworCisgICAgbWFpblN1cmZhY2UgPSBw
YWludEludG9TdXJmYWNlKHBhaW50T3B0aW9ucywgcmVjdC5zaXplKCkpOworICAgIGlmIChyZXBs
aWNhU3VyZmFjZSkgeworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNl
KHJlcGxpY2FTdXJmYWNlLmdldCgpKTsKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5k
cmF3VGV4dHVyZSgqbWFpblN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJv
KCksIHJlY3Quc2l6ZSgpKSk7CisgICAgICAgIG1haW5TdXJmYWNlID0gcmVwbGljYVN1cmZhY2U7
CisgICAgfQorCisgICAgY29tbWl0U3VyZmFjZShvcHRpb25zLCBtYWluU3VyZmFjZSwgcmVjdCwg
b3B0aW9ucy5vcGFjaXR5KTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50UmVj
dXJzaXZlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAg
aWYgKCFpc1Zpc2libGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG91bGRCbGVu
ZCgpKSB7CisgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2Eob3B0aW9ucyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
IHBhaW50T3B0aW9ucyhvcHRpb25zKTsKKyAgICBwYWludE9wdGlvbnMub3BhY2l0eSA9IG9wdGlv
bnMub3BhY2l0eSAqIG1fY3VycmVudE9wYWNpdHk7CisgICAgcGFpbnRVc2luZ092ZXJsYXBSZWdp
b25zKHBhaW50T3B0aW9ucyk7CiB9CiAKIFRleHR1cmVNYXBwZXJMYXllcjo6flRleHR1cmVNYXBw
ZXJMYXllcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggNjFmYjgyNzY3MDg2MDNlMTEw
ZmFjZWQ0MTg5ZGI3ZGEwYmMwMzFmYS4uNjAyYjJjMzk0MTU1MmU1YmQxZTRmYTFhYmM4M2Q5MmNj
MDYwNGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlZ2lvbjsKIGNsYXNzIFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnM7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjsKIApAQCAtNzMs
NiArNzQsMTYgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICB2b2lkIHNl
dEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogI2VuZGlmCisKKyAgICBib29sIGhh
c0ZpbHRlcnMoKSBjb25zdAorICAgIHsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgICAg
IHJldHVybiAhbV9jdXJyZW50RmlsdGVycy5pc0VtcHR5KCk7CisjZWxzZQorICAgICAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIHNldERlYnVnVmlzdWFscyhib29s
IHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBk
ZWJ1Z0JvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlcik7CiAgICAgdm9pZCBzZXRS
ZXBhaW50Q291bnQoaW50KTsKICAgICB2b2lkIHNldENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIqKTsKQEAgLTkyLDggKzEwMyw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiByb290TGF5ZXIoKSBjb25zdDsKICAgICB2b2lk
IGNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCk7Ci0gICAgSW50UmVjdCBpbnRlcm1lZGlhdGVT
dXJmYWNlUmVjdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIEludFJlY3QgaW50
ZXJtZWRpYXRlU3VyZmFjZVJlY3QoKTsKIAogICAgIHN0YXRpYyBpbnQgY29tcGFyZUdyYXBoaWNz
TGF5ZXJzWlZhbHVlKGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpOwogICAgIHN0YXRpYyB2
b2lkIHNvcnRCeVpPcmRlcihWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKiA+JiBhcnJheSwgaW50
IGZpcnN0LCBpbnQgbGFzdCk7CkBAIC0xMDEsMTUgKzExMCwyMSBAQCBwcml2YXRlOgogICAgIFBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1fYmFja2luZ1N0b3Jl
ID8gbV9iYWNraW5nU3RvcmUtPnRleHR1cmUoKSA6IDA7IH0KICAgICBGbG9hdFBvaW50IGFkanVz
dGVkUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRp
b25EZWx0YTsgfQogICAgIGJvb2wgaXNBbmNlc3RvckZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0Owot
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYVRyYW5zZm9ybSgpOwogICAgIHZvaWQg
YWRkQ2hpbGQoVGV4dHVyZU1hcHBlckxheWVyKik7CiAgICAgdm9pZCByZW1vdmVGcm9tUGFyZW50
KCk7CiAgICAgdm9pZCByZW1vdmVBbGxDaGlsZHJlbigpOwogCisgICAgdm9pZCBjb21wdXRlT3Zl
cmxhcFJlZ2lvbnMoUmVnaW9uJiBvdmVybGFwUmVnaW9uLCBSZWdpb24mIG5vbk92ZXJsYXBSZWdp
b24sIGJvb2wgYWx3YXlzUmVzb2x2ZVNlbGZPdmVybGFwID0gdHJ1ZSk7CisKICAgICB2b2lkIHBh
aW50UmVjdXJzaXZlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKKyAgICB2b2lk
IHBhaW50VXNpbmdPdmVybGFwUmVnaW9ucyhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
Jik7CisgICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBwYWludEludG9TdXJmYWNlKGNvbnN0
IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCBw
YWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBwYWludFNlbGYoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3Qg
VGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRy
ZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CisgICAgdm9p
ZCBhcHBseU1hc2soY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogCiAgICAgLy8g
R3JhcGhpY3NMYXllckFuaW1hdGlvbjo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNldEFuaW1h
dGVkVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CkBAIC0x
MjUsOCArMTQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTXVsdGlwbGVMYXllcnNXaXRoQ29udGVu
dHMKICAgICB9OwogCi0gICAgQ29udGVudHNMYXllckNvdW50IGNvdW50UG90ZW50aWFsTGF5ZXJz
V2l0aENvbnRlbnRzKCkgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRQYWludFRvSW50ZXJtZWRpYXRl
U3VyZmFjZSgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQmxlbmQoKSBjb25zdDsKIAogICAgIGlu
bGluZSBGbG9hdFJlY3QgbGF5ZXJSZWN0KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IGY0ODc5NTI2NzY4MDE5MDg1Y2JkZWY4OWU2NmVl
NDdkZWY4MTAxMTUuLmI5YmFkZWQzMzQ3MzgxY2MwZGIyOWYyMWMyYWFlZGIwMGNmOTA1OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjAsIEJpdG1hcFRl
eHR1cmUqIG1hc2sgPSAwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQg
b3BhY2l0eSA9IDEuMCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAppbmRleCA4YzEzMWU2
MTllMWFlMDE3NzFjMGNlYjI1NDE1MjVkY2JlNjI1OTE3Li41M2VlMmYwZGRhNGQ1ODllYzU5NzA0
ZWIzNjU3M2M4NzQ1YzljNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbS5jcHAKQEAgLTEyNyw3ICsxMjcsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4VGVt
cGxhdGUgPQogICAgICAgICB1bmlmb3JtIG1hdDQgdV90ZXh0dXJlU3BhY2VNYXRyaXg7CiAKICAg
ICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Ci0gICAgICAgIHZhcnlpbmcgdmVjMiB2X21h
c2tUZXhDb29yZDsKICAgICAgICAgdmFyeWluZyBmbG9hdCB2X2FudGlhbGlhczsKIAogICAgICAg
ICB2b2lkIG5vb3AoaW5vdXQgdmVjMiBkdW1teVBhcmFtZXRlcikgeyB9CkBAIC0xNzYsOCArMTc1
LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHZlcnRleFRlbXBsYXRlID0KICAgICAgICAgICAgIC8v
IFRoZSB0ZXh0dXJlIHBvc2l0aW9uIG5lZWRzIHRvIGJlIGNsYW1wZWQgdG8gMC4uMSBiZWZvcmUg
dGhlIHRleHR1cmUgbWF0cml4IGlzIGFwcGxpZWQuCiAgICAgICAgICAgICB2ZWM0IGNsYW1wZWRQ
b3NpdGlvbiA9IGNsYW1wKHZlYzQocG9zaXRpb24sIDAuLCAxLiksIDAuLCAxLik7CiAgICAgICAg
ICAgICB2X3RleENvb3JkID0gKHVfdGV4dHVyZVNwYWNlTWF0cml4ICogY2xhbXBlZFBvc2l0aW9u
KS54eTsKLQotICAgICAgICAgICAgdl9tYXNrVGV4Q29vcmQgPSBwb3NpdGlvbjsKICAgICAgICAg
ICAgIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uTWF0cml4ICogdV9tb2RlbFZpZXdNYXRyaXgg
KiB2ZWM0KHBvc2l0aW9uLCAwLiwgMS4pOwogICAgICAgICB9CiAgICAgKTsKQEAgLTIwNCwxMiAr
MjAxLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlID0KICAgICBTVFJJ
TkdJRlkoCiAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogICAgICAgICB1bmlmb3Jt
IFNhbXBsZXJUeXBlIHNfc2FtcGxlcjsKLSAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19tYXNr
OwogICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX2NvbnRlbnRUZXh0dXJlOwogICAgICAgICB1
bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTsKICAgICAgICAgdmFyeWluZyBmbG9hdCB2X2FudGlhbGlh
czsKICAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Ci0gICAgICAgIHZhcnlpbmcgdmVj
MiB2X21hc2tUZXhDb29yZDsKICAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2ZpbHRlckFtb3VudDsK
ICAgICAgICAgdW5pZm9ybSB2ZWMyIHVfYmx1clJhZGl1czsKICAgICAgICAgdW5pZm9ybSB2ZWMy
IHVfc2hhZG93T2Zmc2V0OwpAQCAtMjIzLDcgKzIxOCw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBm
cmFnbWVudFRlbXBsYXRlID0KICAgICAgICAgdm9pZCBhcHBseVRleHR1cmUoaW5vdXQgdmVjNCBj
b2xvcikgeyBjb2xvciA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXIsIHZfdGV4Q29vcmQpOyB9
CiAgICAgICAgIHZvaWQgYXBwbHlPcGFjaXR5KGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0g
dV9vcGFjaXR5OyB9CiAgICAgICAgIHZvaWQgYXBwbHlBbnRpYWxpYXNpbmcoaW5vdXQgdmVjNCBj
b2xvcikgeyBjb2xvciAqPSBhbnRpYWxpYXMoKTsgfQotICAgICAgICB2b2lkIGFwcGx5TWFzayhp
bm91dCB2ZWM0IGNvbG9yKSB7IGNvbG9yICo9IHRleHR1cmUyRChzX21hc2ssIHZfbWFza1RleENv
b3JkKS5hOyB9CiAKICAgICAgICAgdm9pZCBhcHBseUdyYXlzY2FsZUZpbHRlcihpbm91dCB2ZWM0
IGNvbG9yKQogICAgICAgICB7CkBAIC0zMzQsNyArMzI4LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGZyYWdtZW50VGVtcGxhdGUgPQogICAgICAgICAgICAgYXBwbHlUZXh0dXJlSWZOZWVkZWQoY29s
b3IpOwogICAgICAgICAgICAgYXBwbHlTb2xpZENvbG9ySWZOZWVkZWQoY29sb3IpOwogICAgICAg
ICAgICAgYXBwbHlBbnRpYWxpYXNpbmdJZk5lZWRlZChjb2xvcik7Ci0gICAgICAgICAgICBhcHBs
eU1hc2tJZk5lZWRlZChjb2xvcik7CiAgICAgICAgICAgICBhcHBseU9wYWNpdHlJZk5lZWRlZChj
b2xvcik7CiAgICAgICAgICAgICBhcHBseUdyYXlzY2FsZUZpbHRlcklmTmVlZGVkKGNvbG9yKTsK
ICAgICAgICAgICAgIGFwcGx5U2VwaWFGaWx0ZXJJZk5lZWRlZChjb2xvcik7CkBAIC0zNjIsNyAr
MzU1LDYgQEAgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShQYXNzUmUKICAgICBTRVRfQVBQTElFUl9GUk9NX09Q
VElPTlMoUmVjdCk7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFNvbGlkQ29sb3IpOwog
ICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhPcGFjaXR5KTsKLSAgICBTRVRfQVBQTElFUl9G
Uk9NX09QVElPTlMoTWFzayk7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKEFudGlhbGlh
c2luZyk7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKEdyYXlzY2FsZUZpbHRlcik7CiAg
ICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFNlcGlhRmlsdGVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKaW5kZXggMDM3ZTdkNjlkOWE4Nzc0ZjFkMzA2MWE3Nzkz
MWEyYzAzYzlkYzE0Ni4uMzJmYWUxMTZjYmZhMmY4MzQ5YmQyN2IzYWM0YmU5OTM2OWRjYjUxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKQEAgLTQyLDcgKzQyLDYg
QEAgcHVibGljOgogICAgICAgICBSZWN0ICAgICAgICAgICAgID0gMUwgPDwgMSwKICAgICAgICAg
U29saWRDb2xvciAgICAgICA9IDFMIDw8IDIsCiAgICAgICAgIE9wYWNpdHkgICAgICAgICAgPSAx
TCA8PCAzLAotICAgICAgICBNYXNrICAgICAgICAgICAgID0gMUwgPDwgNCwKICAgICAgICAgQW50
aWFsaWFzaW5nICAgICA9IDFMIDw8IDUsCiAgICAgICAgIEdyYXlzY2FsZUZpbHRlciAgPSAxTCA8
PCA2LAogICAgICAgICBTZXBpYUZpbHRlciAgICAgID0gMUwgPDwgNywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFj
ZUJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwCmluZGV4IGM3MTQyZDc1ZGQ1
YTc2M2YwYjYyMmE1NjM2NWFkOWMyMmU4MzllMTIuLjhkMzg3NzZlOWI1ZjUzM2E2MDVlNzNjYTc2
ZTMzY2FiZmQ5OGI3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlLmNwcApAQCAtNDQsMTAgKzQ0LDEwIEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAog
ICAgIHJldHVybiBlbXB0eVRleHR1cmU7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3Zv
aWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkK
IHsKICAgICBpZiAobV9ncmFwaGljc1N1cmZhY2UpCi0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNl
LT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zv
cm0sIG9wYWNpdHksIG1hc2spOworICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1Rl
eHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAppbmRleCA0Y2QxMDE0ZmM4NWVhM2E3ZTk3MWM4ZGUw
NWY0MWE0ZmQ0YmQyNmM3Li43OTNjNjFkYzM0MmZmMDI2MzUyNzg3NGM3MTIwZDM1ZWIyODBjNTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaApA
QCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRHcmFwaGljc1N1cmZhY2UoUGFz
c1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KTsKICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQo
dWludDMyX3QgZnJvbnRCdWZmZXIpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiB0ZXh0dXJlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZSgpIHsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5jcHAKaW5kZXggOWI0MDUxMzFhYjBlNzkzMmZlOWM4N2ZkYmMyNTg0NGNlYjUyNDQ0Yi4uMDcw
NTdlYTE0OTEzZWVlMDYxNTlkOTQ2YjY0MWIyZDEzNTYxMGJiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGUuY3BwCkBAIC02OSwxMCArNjksMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXkKICAg
ICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCB0
YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CiB9CiAKLXZvaWQg
VGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1h
cFRleHR1cmUqIG1hc2ssIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVy
ZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IHVuc2ln
bmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBpZiAodGV4dHVyZSgpLmdldCgpKQotICAgICAgICB0
ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5z
Zm9ybSwgb3BhY2l0eSwgbWFzaywgZXhwb3NlZEVkZ2VzKTsKKyAgICAgICAgdGV4dHVyZU1hcHBl
ci0+ZHJhd1RleHR1cmUoKnRleHR1cmUoKS5nZXQoKSwgcmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNp
dHksIGV4cG9zZWRFZGdlcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
VGlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlLmgKaW5kZXggYWNlZjYxOGVkM2Q2MGUzMmE3NjNiZjQwZjE1ZmNmMmEzNDc3ZWU4
ZC4uMmI0NWQ5MDA3Nzk4ZWI0NzEyOGQwN2M0NDlkN2QwYTU4MDhmZWQ5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4
dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRh
KTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVy
KiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBVcGRh
dGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFRl
eHR1cmVNYXBwZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBU
ZXh0dXJlKiwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQs
IGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBl
clRpbGUoKSB7IH0KIAogICAgIGV4cGxpY2l0IFRleHR1cmVNYXBwZXJUaWxlKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggODA5NzkyMjI2N2U5OTBhODEwZjIwMmQ0NTdhNjJmYWY5ZmI4OGQwYi4uNGE2
MGM4MTU3MjIyOGE1ZDNkZjU4ZWE1MDA0YWIzYTAzZjdhYTU4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ3LDEyICs0NywxMiBAQCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmFkanVz
dGVkVHJhbnNmb3JtRm9yUmVjdChjbwogICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
KQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0
eSkKIHsKICAgICB1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1cmVNYXBwZXIp
OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3Jt
ICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV90aWxlc1tpXS5wYWlu
dCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgY2FsY3Vs
YXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgpKSk7CisgICAgICAg
IG1fdGlsZXNbaV0ucGFpbnQodGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNp
dHksIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkp
OwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZs
b2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlLmgKaW5kZXggOTM5YjE4NWQ3ZWEzNTRmM2JiNTM5ODViOGE1NjdlOTE2
Nzc2NGZlYi4uZmMxZjliZjY3ZjYxMWZlYjhjNWJkZTRmN2Y3ZjkyYmNmYjRjYTA4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaApAQCAtMzgsNyArMzgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
KCkgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgp
IGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVy
V2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVy
KiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZvaWQgdXBkYXRlQ29udGVu
dHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVj
dCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAxMDVjMWNi
ZmE1NWRiZWZlZmIzMmMzNmQ4NWY3MzNiYmM2ZGYzNzQ4Li5jZDVhMTJkOTY3YjY1MGI5OTA4ZGUx
MDJjNGMyOTEzM2E1MmUwYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHZvaWQgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAg
IG1fcGVuZGluZ1NpemUgPSBzaXplOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
OjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0
aWxlcywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaywgY29u
c3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRU
aWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGUqPiYgdGlsZXMsIFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVzLnNpemUoKTsgKytpKQotICAgICAgICB0aWxlc1tp
XS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxh
dGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKKyAgICAgICAgdGls
ZXNbaV0tPnBhaW50KHRleHR1cmVNYXBwZXIsIHRyYW5zZm9ybSwgb3BhY2l0eSwgY2FsY3VsYXRl
RXhwb3NlZFRpbGVFZGdlcyhyZWN0LCB0aWxlc1tpXS0+cmVjdCgpKSk7CiB9CiAKIFRyYW5zZm9y
bWF0aW9uTWF0cml4IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZv
clJlY3QoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0KQpAQCAtMTE3LDcgKzExNyw3IEBAIFRy
YW5zZm9ybWF0aW9uTWF0cml4IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjphZGp1c3RlZFRyYW5z
Zm9ybUZvclJlY3QoY29uc3QgRmxvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpy
ZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBpZiAo
bV90aWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1Miw4ICsxNTIsOCBAQCB2
b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogICAgIC8vIFNlZSBUaWxlZEJhY2tpbmdTdG9yZS4KICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybSAqIGFk
anVzdGVkVHJhbnNmb3JtRm9yUmVjdCh0YXJnZXRSZWN0KTsKIAotICAgIHBhaW50VGlsZXNUb1Rl
eHR1cmVNYXBwZXIocHJldmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVk
VHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0KCkpOwotICAgIHBhaW50VGlsZXNUb1RleHR1
cmVNYXBwZXIodGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwg
b3BhY2l0eSwgbWFzaywgcmVjdCgpKTsKKyAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHBy
ZXZpb3VzVGlsZXNUb1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3Bh
Y2l0eSwgcmVjdCgpKTsKKyAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHRpbGVzVG9QYWlu
dCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIHJlY3QoKSk7CiB9
CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIoVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJX
aWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuaAppbmRleCA4MTk4OTVmNDkyYWU1YWNlZGU3ZDM5YWVlMWM0ZDg3YmMy
NmNjZmI5Li40MjAxNDU0YmQ3Zjc1YzM2M2EyNjhiNzJiMzg3NTExZGUwZTcxYTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAt
NjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0
dXJlTWFwcGVyKik7CiAgICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCk7CiAgICAgdmly
dHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IENvbG9yJiwgZmxvYXQg
Ym9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJl
TWFwcGVyKiwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogCkBAIC03MCw3ICs3MCw3
IEBAIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUoKQogICAgICAgICA6IG1f
c2NhbGUoMS4pCiAgICAgeyB9Ci0gICAgdm9pZCBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZl
Y3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiwgVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqLCBjb25zdCBGbG9hdFJlY3QmKTsK
KyAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJU
aWxlKj4mLCBUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRU
cmFuc2Zvcm1Gb3JSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIEZsb2F0UmVjdCByZWN0KCkg
Y29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKTsgfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMDVlNWJkYjg5ZjI4ZmY5Y2Y1YWJiZDcyM2IyYTBkNmYwMjdhZTdmOC4uYmQ2NzYx
MWNhNmFmNTNlNjcwYWEwZTc2NmUyZDRiNmIxODZlNTgzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDEzLTAyLTI1ICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1RleG1hcF0gVGV4dHVyZU1hcHBlciBpcyB0b28gZWFnZXIgdG8gdXNlIGludGVybWVkaWF0
ZSBzdXJmYWNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMDc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIGEgZmV3IHJlZi10ZXN0cyBmb3IgY29ycmVjdCBvdmVybGFwIGJsZW5kaW5nIGlu
IGFjY2VsZWFyYXRlZCBjb21wb3NpdGluZyBtb2RlLgorCisgICAgICAgICogY29tcG9zaXRpbmcv
b3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFj
aXR5LWh1Z2UuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5v
LW92ZXJsYXAuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdl
Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTIwICBSb3VzbGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGVsbGNoZWNrZXIgc2hvdWxkIG5vdCBjcmFzaCBh
ZnRlciB0ZXh0IGhhcyBjaGFuZ2VkIGFuZCBzcGVsbGNoZWNrIHJlc3VsdHMgYXJlIHNlcnZlZCBm
cm9tIGNhY2hlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJs
ZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZmQ3YWY3N2M4Yjg4NGM3ZGRlYTgwNGVjYzRmYTg2MzE4Nzg1
MGE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1i
bGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMy
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cisg
ICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAg
ZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgfQor
ICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0
aDogMjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbjsKKyAgICAgIH0KKworICAgICAgLm9wYWNpdHkgeyBvcGFjaXR5OiAuNTsgfQor
ICAgICAgLmEgeyB0b3A6IDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5iIHsgdG9wOiAxMDBweDsg
bGVmdDogMHB4O30KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeworICAgICAgICAtd2Via2l0
LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0KKworICAgIDwvc3R5bGU+CisgIDwv
aGVhZD4KKyAgICA8ZGl2IGNsYXNzPSJvcGFjaXR5Ij4KKyAgICA8ZGl2IGNsYXNzPSJzb2xpZCBh
Ij4xPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic29saWQgYiI+MjwvZGl2PgorICA8L2Rpdj4KKwor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzQ4MmNmNzYxZjZiMzA1M2JiZjc3ZmMxOTk4YTcxNTVhZTI5NmIwMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3Bh
Y2l0eS1odWdlLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVk
aWE9InNjcmVlbiI+CisgICAgICAKKyAgICAgIGRpdiB7CisgICAgICAgIC13ZWJraXQtYm94LXNp
emluZzogYm9yZGVyLWJveDsKKyAgICAgIH0KKyAgICAgIC5zb2xpZCB7CisgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDIxNTBweDsKKyAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICB9CisKKyAgICAg
IC5vcGFjaXR5IHsgb3BhY2l0eTogLjU7IH0KKyAgICAgIC5hIHsgdG9wOiAwcHg7IGxlZnQ6IDBw
eDt9CisgICAgICAuYiB7IHRvcDogMTAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAKKyAgICAgIC5j
b21wb3NpdGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7Cisg
ICAgICB9CisKKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgICAgPGRpdiBjbGFzcz0iY29tcG9z
aXRlZCBvcGFjaXR5Ij4KKyAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3NpdGVkIGEiPjE8L2Rp
dj4KKyAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3NpdGVkIGIiPjI8L2Rpdj4KKyAgPC9kaXY+
CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAt
YmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8t
b3ZlcmxhcC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5YmQ1ZjEzNmQyNmI0NjNkMzA4YTcz
ZWY2YTVmMDAyZWI4NGMyODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFk
PgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3Jl
ZW4iPgorICAgICAgCisgICAgICBkaXYgeworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJv
cmRlci1ib3g7CisgICAgICB9CisgICAgICAuc29saWQgeworICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICB9CisKKyAgICAgIC5vcGFjaXR5
IHsgb3BhY2l0eTogLjU7IH0KKyAgICAgIC5hIHsgdG9wOiAwcHg7IGxlZnQ6IDBweDt9CisgICAg
ICAuYiB7IHRvcDogMjAwcHg7IGxlZnQ6IDIwMHB4O30KKyAgICAgIC5jIHsgdG9wOiAyMDBweDsg
bGVmdDogMHB4O30KKyAgICAgIC5kIHsgdG9wOiAwcHg7IGxlZnQ6IDIwMHB4O30KKyAgICAgICog
eyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKyAgICAgIC5jb21wb3NpdGVkIHsKKyAgICAgICAg
LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgICB9CisKKyAgICA8L3N0eWxl
PgorICA8L2hlYWQ+CisgICAgPGRpdiBjbGFzcz0ib3BhY2l0eSI+CisgICAgICA8ZGl2IGNsYXNz
PSJzb2xpZCBhIj4xPC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJzb2xpZCBiIj4yPC9kaXY+Cisg
ICAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjIj4zPC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJzb2xp
ZCBkIj48L2Rpdj4KKyAgICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJs
YXAuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRy
ZW4tb3BhY2l0eS1uby1vdmVybGFwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMxODQwYTJjNGRiMmNmMmE3
MTUxZWIzMTU0MzMwNjNjM2Q0ZTZhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLmh0
bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+Cisg
ICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+
CisgICAgICAKKyAgICAgIGRpdiB7CisgICAgICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVy
LWJveDsKKyAgICAgIH0KKyAgICAgIC5zb2xpZCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIH0KKworICAgICAgLm9wYWNpdHkgeyBv
cGFjaXR5OiAuNTsgfQorICAgICAgLmEgeyB0b3A6IDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5i
IHsgdG9wOiAyMDBweDsgbGVmdDogMjAwcHg7fQorICAgICAgLmMgeyB0b3A6IDIwMHB4OyBsZWZ0
OiAwcHg7fQorICAgICAgLmQgeyB0b3A6IDBweDsgbGVmdDogMjAwcHg7fQorICAgICAgCisgICAg
ICAuY29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDAp
OworICAgICAgfQorICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorCisgICAgPC9z
dHlsZT4KKyAgPC9oZWFkPgorICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgb3BhY2l0eSI+Cisg
ICAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3NpdGVkIGEiPjE8L2Rpdj4KKyAgICAgIDxkaXYg
Y2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgYiI+MjwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29s
aWQgY29tcG9zaXRlZCBjIj4zPC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3Np
dGVkIGQiPjwvZGl2PgorICAgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdl
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5n
L3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FhYWM1
M2Y3NmVkOWE0MzM4MjE4ZjRjYmJlOTlkNGI0MjVhY2ZiMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5
LWh1Z2UtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3Nz
IiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIC5yZWZsZWN0ZWQgeworICAgICAgICBwb3NpdGlvbjog
cmVsYXRpdmU7CisgICAgICAgIHdpZHRoOiAyMTUwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7
CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICBvcGFjaXR5OiAwLjU7
CisgICAgICAgIC13ZWJraXQtYm94LXJlZmxlY3Q6IGJlbG93IC01MHB4OworICAgICAgfQorICAg
ICAgCisgICAgICBib2R5IHsgbWFyZ2luOiAwOyB9CisKKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+
CisgIAorICA8cD5PcGFjaXR5IHNob3VsZCBiZSBhcHBsaWVkIGFmdGVyIHJlZmxlY3Rpb24sIHNv
IHlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIGJlbG93LiBUaGUgb3ZlcmxhcCBiZXR3
ZWVuIHRoZSBvcmlnaW5hbCBhbmQgcmVmbGVjdGlvbiBzaG91bGQgbm90IGJlIHZpc2libGUuPC9w
PgorICA8ZGl2IGNsYXNzPSJyZWZsZWN0ZWQiPjEKKyAgPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlv
bi1vcGFjaXR5LWh1Z2UuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDdlZTAxNjQ3
YTBkZmU5MzY4YzY1MjhhNmI3NGQ4NzE1NjMxOWVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVn
ZS5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFk
PgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3Jl
ZW4iPgorICAgICAgLnJlZmxlY3RlZCB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICAgICAgd2lkdGg6IDIxNTBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICAgICAgLXdl
YmtpdC1ib3gtcmVmbGVjdDogYmVsb3cgLTUwcHg7CisgICAgICB9CisgICAgICAKKyAgICAgIC5j
b21wb3NpdGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7Cisg
ICAgICB9CisKKyAgICAgIGJvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKworICAgIDwv
c3R5bGU+CisgIDwvaGVhZD4KKyAgCisgIDxwPk9wYWNpdHkgc2hvdWxkIGJlIGFwcGxpZWQgYWZ0
ZXIgcmVmbGVjdGlvbiwgc28geW91IHNob3VsZCBzZWUgYSBncmVlbiByZWN0YW5nbGUgYmVsb3cu
IFRoZSBvdmVybGFwIGJldHdlZW4gdGhlIG9yaWdpbmFsIGFuZCByZWZsZWN0aW9uIHNob3VsZCBu
b3QgYmUgdmlzaWJsZS48L3A+CisgIDxkaXYgY2xhc3M9InJlZmxlY3RlZCBjb21wb3NpdGVkIj4x
CisgIDwvZGl2PgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190230</attachid>
            <date>2013-02-26 00:54:18 -0800</date>
            <delta_ts>2013-02-26 01:13:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110762-20130226095030.patch</filename>
            <type>text/plain</type>
            <size>82052</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYxZjU4ZjQ0NmM5ZWZl
ZDAwNzZkMzdjZjg0ZTQ3YzFkYmNlZjc2Yi4uNzczZjY1NDlkMjgwNmQ5NmRlYjliZmYxZTU2YTU2
NmI2ZTE4NzYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAxMy0wMi0yNSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXIgaXMgdG9vIGVhZ2VyIHRvIHVzZSBpbnRlcm1lZGlhdGUgc3VyZmFjZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA3NjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUg
d2F5IGludGVybWVkaWF0ZSBzdXJmYWNlcyBhcmUgaGFuZGxlZCBpbiBUZXh0dXJlTWFwcGVyTGF5
ZXIuCisgICAgICAgIEJlZm9yZWhhbmQsIHdlIHdvdWxkIGNyZWF0ZSBhbiBpbnRlcm1lZGlhdGUg
c3VyZmFjZSB3aGVuZXZlciB0aGVyZSBpcyBhIGNoYW5jZSBvZiBvdmVybGFwLCBhbmQKKyAgICAg
ICAgdGhlIGludGVybWVkaWF0ZSBzdXJmYWNlIHdvdWxkIGJlIHRoZSBsYXJnZXN0IHBvc3NpYmxl
LiBUaGUgcmVzdWx0IHdvdWxkIHRoZW4gYmUgZHJhd24gdG8gdGhlCisgICAgICAgIHRhcmdldCBz
dXJmYWNlIHdpdGggdGhlIGxheWVyJ3Mgb3BhY2l0eSBhbmQgbWFzay4KKyAgICAgICAgVGhpcyB3
b3VsZCBtYWtlIGl0IHNvIHRoYXQgKDEpIHN1cmZhY2VzIGFyZSBjcmVhdGVkIGV2ZW4gd2hlbiB0
aGV5J3JlIG5vdCBuZWVkZWQsIGkuZS4gd2hlbiB0aGVyZQorICAgICAgICBpcyBubyBhY3R1YWwg
b3ZlcmxhcCwgYW5kICgyKSBtYXNrIHdvdWxkbid0IGJlIGFwcGxpZWQgY29ycmVjdGx5LgorCisg
ICAgICAgIEluIHRoaXMgcGF0Y2ggdGhlIGJlaGF2aW9yIGlzIGNoYW5nZWQgc28gdGhhdCB0aGUg
YXJlYSB0byBiZSBwYWludGVkIGlzIGRpdmlkZWQgdG8gIm92ZXJsYXBwaW5nIgorICAgICAgICBh
bmQgIm5vbiBvdmVybGFwcGluZyIgcmVnaW9ucy4gVGhlIG5vbi1vdmVybGFwcGluZyByZWdpb25z
IGFyZSBwYWludGVkIGRpcmVjdGx5LCB3aGlsZSB0aGUgb3ZlcmxhcHBpbmcKKyAgICAgICAgcmVn
aW9ucyBhcmUgdGlsZWQgdG8gc21hbGxlciByZWN0YW5nbGVzIHBhaW50ZWQgdXNpbmcgYW4gaW50
ZXJtZWRpYXRlIHN1cmZhY2UuCisgICAgICAgIE1hc2tzIGFyZSBhcHBsaWVkIHRvIHRob3NlIGlu
dGVybWVkaWF0ZSBzdXJmYWNlcyBiYXNlZCBvbiB0aGUgdHJhbnNmb3JtIG9mIHRoZSBhY3R1YWwg
bWFzaywgbm90IGRyYXduCisgICAgICAgIHRvZ2V0aGVyIHdpdGggdGhlIGNvbnRlbnQgdGV4dHVy
ZSBsaWtlIGJlZm9yZS4KKworICAgICAgICBUaGlzIG9wdGltaXplcyBmb3IgdGhlIG1vcmUgY29t
bW9uIGNhc2Ugb2Ygb3BhY2l0eSBhbmltYXRpb25zIG9uIGEgbGFyZ2UgdHJlZSwgd2hpbGUgbWFr
aW5nIHRoZSBxdWl0ZQorICAgICAgICByYXJlIGNhc2Ugb2YgY29tcG9zaXRlZCBtYXNrcyBzbGln
aHRseSBsZXNzIG9wdGltaXplZCBidXQgYWx3YXlzIGNvcnJlY3QuCisKKyAgICAgICAgVGVzdHM6
IGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLmh0bWwK
KyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1v
cGFjaXR5LWh1Z2UuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXJQcml2YXRlUXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9HcmFwaGljc1N1cmZhY2UuaDoKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1Rl
eHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgICAgICAgICBSZW1vdmVkIHRoZSAibWFzayIgcGFyYW1ldGVyIGZyb20gVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIgYW5kIG92ZXJyaWRlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI6OlRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpzZXRN
YXNrTW9kZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI6OmlzSW5NYXNrTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpk
cmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXcpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRD
b2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAg
ICAgICAgICAgICBJbnN0ZWFkIG9mIHBhaW50aW5nIHRoZSBtYXNrIHRvZ2V0aGVyIHdpdGggdGhl
IHRleHR1cmUvY29sb3IsIHBhaW50IHRoZSBtYXNrCisgICAgICAgICAgICAgICAgYnkgZHJhd2lu
ZyB3aXRoIERlc3RpbmF0aW9uSW4gdG8gYW4gZXhpc3Rpbmcgc3VyZmFjZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNob3VsZEJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVz
b2x2ZU92ZXJsYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29t
cHV0ZU92ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6YXBwbHlNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRJbnRvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21taXRTdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJt
ZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50UmVjdXJzaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBw
ZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omhhc0ZpbHRl
cnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oOgorCiAyMDEzLTAyLTIz
ICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYW5pbWF0aW9uL3N0YXRlLWF0LWVuZC1ldmVudC10cmFu
c2Zvcm0tbGF5ZXIuaHRtbCBzaG93cyBhIHJlZCBzcXVhcmUgd2hlcmUgaXQgc2hvdWxkbid0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQz
MTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi4wMGI0OTY2OTI1ZmFmNjA2YzhmNjYwMzEyMjljYjMw
MzlhZGVlZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5k
ZXggZDBkZDIzZmU3ZGJkNDFkNmFmODFmOTA3YWFkOWRhMDMyYzAxYjRkYi4uNDJlYjZjMmU3MDUx
YzkwMjc1MGIyODgwZGVjNGZhMzc0M2IyMTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQg
b3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCAzZDYwMWZlMmY4NzY4
NmMwMjU4YjJhMGNlNjc2NTExYmU2OTllODVlLi4zMTFjYjJkN2Q2OTlkMTI1OWNmZGRjNDgxN2I0
YzMwMTg2YzczNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTkw
LDcgKzE5MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVmZmVy
KCkgY29uc3QKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQgLyogb3BhY2l0eSAqLywgQml0bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IGIzMDA5NmE2YTlhOGQ3NThhNzlkY2My
OWRjZTE2ZDU4YTg1OTc5NmQuLjhmMGViM2NiNGFlYjUzNGUzOGY5YjE3NjUwZGMxY2UzZmRmZTlj
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVi
bGljOgogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrPik7CiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCwgQml0bWFwVGV4dHVyZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUo
KSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggNjZiZGVhZWQxODVh
NTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMwZjdlYS4uOGQ1YjgxZDEwMjFjZDJiZTM4ZmM0MzIwOWJm
MzBmMGI2OTdlMTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3Bh
Y2l0eSk7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIElu
dFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdDsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0
aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRvUmdiKHF1aW50MzIgcGl4ZWwpCiB9CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0
cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBtX2NvbnRleHQtPm1hcmtM
YXllckNvbXBvc2l0ZWQoKTsKICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJlc3Rv
cmVDb250ZXh0KCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIK
ICAgICAgICAgY3VycmVudENvbnRleHQtPm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKIAog
ICAgICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1h
cHBlckdMKj4odGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWlu
dFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBHTCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBt
YXNrKTsKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRl
eG1hcEdMLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJiYjc4
ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAzYS4uMWY5NjliNWZkYzIxYWJjMjk0YWEwM2RkYTc3ZmEz
NWEzYjY5NjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFw
VGV4dHVyZSopCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQzOWUz
MjI0YzE1MjFlZTAwMzA0MGY1OTUuLmU3NGNkY2QwODk4NWNiYmNiYTNkMjhiNzZlNDU0MzYzMDUx
NjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01l
ZGlhUGxheWVyUHJpdmF0ZVF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7IH0K
ICAgICAvLyBDb25zdC1jYXN0aW5nIGhlcmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyJ3MgZnVuY3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBo
aWNzU3VyZmFjZS5jcHAKaW5kZXggYmFlZmE4YTE5MDg0MWFlYWIyYjQwYTJjZDA2NDc3MjBmMTYz
MzU5Yy4uMmE3YTRiMjQzYzRjYmU2OGFiZTJhYTkyNjE4OTFiNjA5NTdiMjE1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9H
cmFwaGljc1N1cmZhY2UuY3BwCkBAIC02Myw5ICs2Myw5IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNl
Ojpjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjCiAgICAgcGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1
cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewot
ICAgIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVj
dCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBwbGF0Zm9ybVBhaW50VG9UZXh0dXJl
TWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9
CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6ZnJvbnRCdWZmZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuaAppbmRleCBkYTQ5MzY5OThjNWQwZGQ3OTI4NTk1ZTIyMWM4ZmE5MjY5MWEzODc4Li43
MzFhZjJiNmQ2NWMzZGE5YWQ0NzI5YmI3NjI1NWYzOGRiZWY0ZDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFw
aGljc1N1cmZhY2VUb2tlbiYpOwogICAgIHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
SW50UG9pbnQmIHNvdXJjZU9mZnNldCk7CiAgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1
cmUqIG1hc2spOworICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVpbnQz
Ml90IHN3YXBCdWZmZXJzKCk7CiAgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZXhwb3J0VG9rZW4o
KTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2so
KTsKICAgICB2b2lkIHBsYXRmb3JtQ29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9p
ZCBwbGF0Zm9ybUNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB2
b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBv
cGFjaXR5KTsKICAgICB1aW50MzJfdCBwbGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3Q7CiAgICAg
dWludDMyX3QgcGxhdGZvcm1Td2FwQnVmZmVycygpOwogICAgIEludFNpemUgcGxhdGZvcm1TaXpl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDVl
MThhNTliOTY0NzQ4ZTcyMTgxNDFmZjFiYWFkYzk2OTkzMDNhOGYuLjNhMjMwNjM3ZjJhYWMyMTQ2
NGVjNzlkYzE5NTA2ZDMzZDY4MGRmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZh
Y2VHTFguY3BwCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAg
ICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAot
dm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBU
ZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIGlm
IChzaXplLmlzRW1wdHkoKSkKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLAogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNp
emUpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNm
b3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4
OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nh
c3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHRleHR1cmUs
IG1fcHJpdmF0ZS0+ZmxhZ3MoKSwgc2l6ZSwgcmVjdE9uQ29udGVudHMsIGFkanVzdGVkVHJhbnNm
b3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0
ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygpLCBz
aXplLCByZWN0T25Db250ZW50cywgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQogCiB1
aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dy
YXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAppbmRleCBiZjYyZmIxNWEwOWI0YzE4
MjMyNDExZjYzYTUzMTdiYWRkNmVhMjVjLi5jNGQyZDU0MTg0MmQ2YjE2Y2FlZDFhMTkzYTdlY2Ux
MjJjODFiYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAt
MzMzLDEzICszMzMsMTMgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21U
ZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUt
PmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGlj
c1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
KQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewog
ICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0
T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNm
b3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRl
bnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4
dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQo
KSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
VXNlQVJCVGV4dHVyZVJlY3QsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9y
bSwgb3BhY2l0eSwgbWFzayk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4
dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQo
KSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
VXNlQVJCVGV4dHVyZVJlY3QsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9y
bSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9u
dEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCmlu
ZGV4IDk1MDlmMDk4M2M2MjkwY2YwMGVkM2JjYWQ4YTliMTA5ODYyNWQ4N2YuLjA2ZjQyN2NmY2Fk
ODM2NDhkZmQ3OGQ1OTI1M2NiMGMwNDRmZjQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGlj
c1N1cmZhY2VXaW4uY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3Qm
IHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsK
IH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBC
aXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwog
ICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuY3BwCmluZGV4IDM3ZjcxNTRmMWM2OWQ5OGI0YTIzYjBjMGNkNzQ4ZWY1ZDlk
NzU5MDguLjJiMTNjNWU1NzQxZTFkYmM0MTZiMTEzNzcyNjJiYjcwZTVhMzcxODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTE0MSw2ICsxNDEsNyBAQCBUZXh0dXJlTWFwcGVyOjpUZXh0dXJlTWFw
cGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNjZWxlcmF0aW9uTW9kZSkKICAgICAsIG1fdGV4dERyYXdp
bmdNb2RlKFRleHRNb2RlRmlsbCkKICAgICAsIG1fdGV4dHVyZVBvb2woYWRvcHRQdHIobmV3IEJp
dG1hcFRleHR1cmVQb29sKCkpKQogICAgICwgbV9hY2NlbGVyYXRpb25Nb2RlKGFjY2VsZXJhdGlv
bk1vZGUpCisgICAgLCBtX21hc2tNb2RlKGZhbHNlKQogeyB9CiAKIFRleHR1cmVNYXBwZXI6On5U
ZXh0dXJlTWFwcGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGFkZWFmM2U3MThlMTMyNTAzODI5Yzkw
NGZjMGEyZDI3NTJjNDYxODYuLmFiMzJlNjliMTI3NGNhMzk4MWFlMDM5OTE1YjkzNzQ0NjRiYzM5
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wZiwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUgPSAwLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4w
ZiwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBDb2xvciYpID0gMDsKIAogICAgIC8vIG1ha2VzIGEgc3VyZmFjZSB0aGUg
dGFyZ2V0IGZvciB0aGUgZm9sbG93aW5nIGRyYXdUZXh0dXJlIGNhbGxzLgpAQCAtMTUzLDYgKzE1
Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQYWludEZsYWdz
ID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CiAKKyAgICB2b2lk
IHNldE1hc2tNb2RlKGJvb2wgbSkgeyBtX21hc2tNb2RlID0gbTsgfQorCiAgICAgdmlydHVhbCBJ
bnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYp
OwpAQCAtMTY2LDYgKzE2OCw4IEBAIHByb3RlY3RlZDoKIAogICAgIEdyYXBoaWNzQ29udGV4dCog
bV9jb250ZXh0OwogCisgICAgYm9vbCBpc0luTWFza01vZGUoKSBjb25zdCB7IHJldHVybiBtX21h
c2tNb2RlOyB9CisKIHByaXZhdGU6CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+IHBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQo
KTsKQEAgLTE3OSw2ICsxODMsNyBAQCBwcml2YXRlOgogICAgIFRleHREcmF3aW5nTW9kZUZsYWdz
IG1fdGV4dERyYXdpbmdNb2RlOwogICAgIE93blB0cjxCaXRtYXBUZXh0dXJlUG9vbD4gbV90ZXh0
dXJlUG9vbDsKICAgICBBY2NlbGVyYXRpb25Nb2RlIG1fYWNjZWxlcmF0aW9uTW9kZTsKKyAgICBi
b29sIG1fbWFza01vZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaAppbmRleCA2YmZiM2YxY2ZlNWIyZTE2NmM4MTNjMDMzZGFhZTY4YTE1MWRlZjdkLi5jNjAw
YWEyZTFiZDJmMTczN2EyOTc5OGUzNzYzNzZkMmQ1ZTk5YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXll
cjsKIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmU+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRDb3VudCAqLywgY29u
c3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
IHsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcAppbmRleCAzY2RkYzkzNjMxMTAzY2U4Nzc3YTQ1MzE4OWZlOGE3OGJi
YzgxNjgxLi4xNDJiM2I0YWU0YTdmNGYzNzRlN2M4MTRjYWI2M2ZhZTIwMGU3NDg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQ
b2luCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBhY3F1aXJlVGV4dHVyZUZy
b21Qb29sKHNpemUpOwogICAgIGNvbnN0IHVjaGFyKiBiaXRzID0gaW1hZ2UuYml0cygpOwogICAg
IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpLT51cGRhdGVDb250
ZW50c05vU3dpenpsZShiaXRzLCBzb3VyY2VSZWN0LCBJbnRQb2ludDo6emVybygpLCBpbWFnZS5i
eXRlc1BlckxpbmUoKSk7Ci0gICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3QsIG1v
ZGVsVmlld01hdHJpeCwgMS4wZiwgMCwgQWxsRWRnZXMpOworICAgIGRyYXdUZXh0dXJlKCp0ZXh0
dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIEFsbEVkZ2VzKTsKIAogI2Vs
aWYgVVNFKENBSVJPKQogICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0cmluZzo6bnVtYmVy
KG51bWJlcikuYXNjaWkoKTsKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJH
TDo6ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0
UG9pbgogI2VuZGlmCiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShjb25z
dCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJp
dG1hcFRleHR1cmUqIG1hc2ssIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgs
IGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBpZiAoIXRleHR1
cmUuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC00MDMsMjAgKzQwMywxNyBAQCB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYgdGV4dHVy
ZSwgY29uc3QgRmxvYXRSZWN0JgogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBCaXRtYXBU
ZXh0dXJlR0wmIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+
KHRleHR1cmUpOwotICAgIGRyYXdUZXh0dXJlKHRleHR1cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNP
cGFxdWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwg
bWF0cml4LCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgIGRyYXdUZXh0dXJlKHRl
eHR1cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4
dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBleHBvc2VkRWRnZXMp
OwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1
cmUsIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4
dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXpl
JiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBl
eHBvc2VkRWRnZXMpCiB7CiAgICAgYm9vbCB1c2VSZWN0ID0gZmxhZ3MgJiBTaG91bGRVc2VBUkJU
ZXh0dXJlUmVjdDsKLSAgICBib29sIG1hc2tlZCA9ICEhbWFza1RleHR1cmU7CiAgICAgYm9vbCB1
c2VBbnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZwogICAgICAg
ICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKICAgICAgICAgJiYgIW1vZGVsVmlld01hdHJp
eC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKIAogICAgIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6VGV4dHVyZTsKLSAgICBpZiAobWFza2VkKQotICAgICAgICBvcHRpb25zIHw9IFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpNYXNrOwogICAgIGlmICh1c2VSZWN0KQogICAgICAgICBv
cHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0OwogICAgIGlmIChvcGFj
aXR5IDwgMSkKQEAgLTQyNiwxMiArNDIzLDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3
VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJCiAg
ICAgICAgIGZsYWdzIHw9IFNob3VsZEFudGlhbGlhczsKICAgICB9CiAKLSAgICBpZiAobWFza2Vk
IHx8IHVzZUFudGlhbGlhc2luZyB8fCBvcGFjaXR5IDwgMSkKKyAgICBpZiAodXNlQW50aWFsaWFz
aW5nIHx8IG9wYWNpdHkgPCAxKQogICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKIAogICAg
IFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsKICAgICBwcm9ncmFt
ID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmdldFNoYWRlclByb2dyYW0ob3B0aW9ucyk7Ci0gICAg
ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdz
LCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNr
VGV4dHVyZSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCks
IHRleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4
LCBvcGFjaXR5KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENvbG9yKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwg
Y29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTA0LDExICs1MDEsMTYgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXcoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW8KICAgICBzaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgoc2hhZGVyUHJvZ3JhbS0+bW9k
ZWxWaWV3TWF0cml4TG9jYXRpb24oKSwgbWF0cml4KTsKICAgICBzaGFkZXJQcm9ncmFtLT5zZXRN
YXRyaXgoc2hhZGVyUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCksIGRhdGEoKS5w
cm9qZWN0aW9uTWF0cml4KTsKIAotICAgIGlmIChmbGFncyAmIFNob3VsZEJsZW5kKSB7Ci0gICAg
ICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhp
Y3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpOworICAgIGlmIChpc0luTWFza01vZGUo
KSkgeworICAgICAgICBtX2NvbnRleHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpa
RVJPLCBHcmFwaGljc0NvbnRleHQzRDo6U1JDX0FMUEhBKTsKICAgICAgICAgbV9jb250ZXh0M0Qt
PmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOwotICAgIH0gZWxzZQotICAgICAgICBt
X2NvbnRleHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChmbGFncyAmIFNob3VsZEJsZW5kKSB7CisgICAgICAgICAgICBtX2Nv
bnRleHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4
dDNEOjpPTkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5lbmFi
bGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBtX2NvbnRleHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOworICAgIH0K
IAogICAgIGlmIChmbGFncyAmIFNob3VsZEFudGlhbGlhcykKICAgICAgICAgZHJhd0VkZ2VUcmlh
bmdsZXMoc2hhZGVyUHJvZ3JhbSk7CkBAIC01MTYsOCArNTE4LDExIEBAIHZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vCiAgICAgICAgIGRyYXdVbml0UmVjdChzaGFkZXJQcm9ncmFtLCBkcmF3aW5nTW9k
ZSk7CiAKICAgICBtX2NvbnRleHQzRC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlclBy
b2dyYW0tPnZlcnRleExvY2F0aW9uKCkpOworICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3Jh
cGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQ
SEEpOworICAgIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsK
IH0KLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdz
IGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNv
bnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6
ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBw
cm9ncmFtLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIG1fY29udGV4dDNELT51c2VQcm9n
cmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwpAQCAtNTMzLDE5ICs1MzgsMTAgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbSogcHIKICAgICBpZiAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkK
ICAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLTEpOwogCi0KICAgICBwcm9n
cmFtLT5zZXRNYXRyaXgocHJvZ3JhbS0+dGV4dHVyZVNwYWNlTWF0cml4TG9jYXRpb24oKSwgcGF0
dGVyblRyYW5zZm9ybSk7CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFtLT5vcGFj
aXR5TG9jYXRpb24oKSwgb3BhY2l0eSk7CiAKLSAgICBpZiAobWFza1RleHR1cmUgJiYgbWFza1Rl
eHR1cmUtPmlzVmFsaWQoKSkgewotICAgICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wqIG1hc2tU
ZXh0dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wqPihtYXNrVGV4dHVy
ZSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgbWFza1RleHR1cmVHTC0+aWQoKSk7Ci0gICAgICAgIG1fY29u
dGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+bWFza0xvY2F0aW9uKCksIDEpOwotICAgICAgICBt
X2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwot
ICAgIH0KLQotICAgIGlmIChvcGFjaXR5IDwgMSB8fCBtYXNrVGV4dHVyZSkKKyAgICBpZiAob3Bh
Y2l0eSA8IDEpCiAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgZHJhdyhyZWN0
LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9G
QU4sIGZsYWdzKTsKQEAgLTk0Myw3ICs5MzksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNhbXBsZXIsIGNvbnN0IEJpdG1hcFRleAog
CiAgICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgZmlsdGVyLCBwYXNzLCBz
YW1wbGVyLmNvbnRlbnRTaXplKCksIHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+
KGNvbnRlbnRUZXh0dXJlKS5pZCgpKTsKICAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdChJbnRQb2lu
dDo6emVybygpLCBzYW1wbGVyLmNvbnRlbnRTaXplKCkpOwotICAgIGRyYXdUZXh0dXJlZFF1YWRX
aXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJl
R0wmPihzYW1wbGVyKS5pZCgpLCAwLCBJbnRTaXplKDEsIDEpLCB0YXJnZXRSZWN0LCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCAxLCAwKTsKKyAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0o
cHJvZ3JhbS5nZXQoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oc2FtcGxl
cikuaWQoKSwgMCwgSW50U2l6ZSgxLCAxKSwgdGFyZ2V0UmVjdCwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgMSk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdM
OjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQml0bWFw
VGV4dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmgKaW5kZXggM2U4MGExNzgyZWMxNDg5MWZkN2JjY2MyZTk5MDkzYjk2
ZGRkZTMxNS4uYTQyMzQxZmYzNDE3ZDJkZmRhNGFjNTAxOGIwYWQ4YTMwYzQwOGI3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGV4dHVyZU1h
cHBlciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENv
bG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOdW1iZXIoaW50
IG51bWJlciwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29u
c3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUs
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdU
ZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRl
eHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7Cisg
ICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVu
c2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0
dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcyA9IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1
cmZhY2UpIE9WRVJSSURFOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBUZXh0
dXJlTWFwcGVyR0woKTsKIAotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0
IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNr
VGV4dHVyZSk7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpOwogICAgIHZvaWQgZHJhdyhjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdpbmdNb2RlLCBGbGFncyk7CiAKICAgICB2
b2lkIGRyYXdVbml0UmVjdChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRy
YXdpbmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKaW5kZXgg
MWU0OWY5YjZlY2E4OGQ2YTdjZmQ5MzE5MTIyMmMwNDgxMTAzOWQ3NS4uNTJhODQ4NzkyZDZmZjY2
ZTY0NzlhYWRhMjUxNDI4MTM5ODZhNWQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlcjo6YmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbgog
I2VuZGlmCiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShj
b25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0
IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCAvKiBleHBvc2VkRWRnZXMgKi8p
Cit2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFw
VGV4dHVyZSYgdGV4dHVyZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCAvKiBleHBv
c2VkRWRnZXMgKi8pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gY3VycmVudENv
bnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0xMjIsMjIgKzEyMiw4IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0
ZXh0dXJlLCBjb25zdCBGCiAKICAgICBjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXImIHRl
eHR1cmVJbWFnZUJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVJbWFnZUJ1
ZmZlciY+KHRleHR1cmUpOwogICAgIEltYWdlQnVmZmVyKiBpbWFnZSA9IHRleHR1cmVJbWFnZUJ1
ZmZlci5tX2ltYWdlLmdldCgpOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza2VkSW1hZ2U7
Ci0KLSAgICBpZiAobWFza1RleHR1cmUgJiYgbWFza1RleHR1cmUtPmlzVmFsaWQoKSkgewotICAg
ICAgICBjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIqIG1hc2sgPSBzdGF0aWNfY2FzdDxj
b25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIqPihtYXNrVGV4dHVyZSk7Ci0gICAgICAgIG1h
c2tlZEltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtYXNrVGV4dHVyZS0+Y29udGVudFNpemUo
KSk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0NvbnRleHQgPSBtYXNrZWRJbWFnZS0+
Y29udGV4dCgpOwotICAgICAgICBtYXNrQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludDo6emVybygpLCBDb21wb3NpdGVDb3B5KTsKLSAg
ICAgICAgaWYgKG9wYWNpdHkgPCAxKSB7Ci0gICAgICAgICAgICBtYXNrQ29udGV4dC0+c2V0QWxw
aGEob3BhY2l0eSk7Ci0gICAgICAgICAgICBvcGFjaXR5ID0gMTsKLSAgICAgICAgfQotICAgICAg
ICBtYXNrQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2stPm1faW1hZ2UuZ2V0KCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIEludFBvaW50Ojp6ZXJvKCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4p
OwotICAgICAgICBpbWFnZSA9IG1hc2tlZEltYWdlLmdldCgpOwotICAgIH0KLQogICAgIGNvbnRl
eHQtPnNhdmUoKTsKKyAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oaXNJbk1hc2tN
b2RlKCkgPyBDb21wb3NpdGVEZXN0aW5hdGlvbkluIDogQ29tcG9zaXRlU291cmNlT3Zlcik7CiAg
ICAgY29udGV4dC0+c2V0QWxwaGEob3BhY2l0eSk7CiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykK
ICAgICBjb250ZXh0LT5jb25jYXQzRFRyYW5zZm9ybShtYXRyaXgpOwpAQCAtMTU1LDYgKzE0MSw3
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcihjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnRl
eHQtPnNhdmUoKTsKKyAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oaXNJbk1hc2tN
b2RlKCkgPyBDb21wb3NpdGVEZXN0aW5hdGlvbkluIDogQ29tcG9zaXRlU291cmNlT3Zlcik7CiAj
aWYgRU5BQkxFKDNEX1JFTkRFUklORykKICAgICBjb250ZXh0LT5jb25jYXQzRFRyYW5zZm9ybSht
YXRyaXgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAppbmRleCA4
MGU2OTQ0MDU5MDU0NzYwN2U3MDMyNjFlNzkzMTU1ZGRlM2MyMGQ1Li4zNWYyYjQ0OWQ5NmRjMGJj
OWI3YjBhZjE5OGFjMDQwY2Q5NGQ2ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlci5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0dXJlTWFwcGVyIGlt
cGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBm
bG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVy
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRt
YXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0
dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
cmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVk
IGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9y
KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29s
b3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpIE9WRVJSSURFIHsgbV9jdXJy
ZW50U3VyZmFjZSA9IHN1cmZhY2U7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4
YTJjYzk5MmI3MTEwNjY2MTA3YzFiZTAzMTNiYTRhZjk2YzZmYmFmLi4wYmU0OTZjZDk4ZTM4ZTFi
N2I4OTk1MmQwODliOThmZDY1ZWE1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApA
QCAtMjAsNiArMjAsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJMYXllci5oIgogCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI3LDcgKzI5LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyB7CiBw
dWJsaWM6CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2U7Ci0gICAgUmVmUHRyPEJp
dG1hcFRleHR1cmU+IG1hc2s7CiAgICAgZmxvYXQgb3BhY2l0eTsKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgSW50U2l6ZSBvZmZzZXQ7CkBAIC0xMDgsOCArMTA5LDYg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVy
UGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgIHRyYW5zZm9ybS5tdWx0aXBseShtX2N1cnJlbnRU
cmFuc2Zvcm0uY29tYmluZWQoKSk7CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5vcGFj
aXR5OwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrID0gb3B0aW9ucy5tYXNrOwotCiAg
ICAgaWYgKG1fc3RhdGUuc29saWRDb2xvci5pc1ZhbGlkKCkgJiYgIW1fc3RhdGUuY29udGVudHNS
ZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdTb2xp
ZENvbG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIGJsZW5kV2l0aE9wYWNpdHko
bV9zdGF0ZS5zb2xpZENvbG9yLCBvcGFjaXR5KSk7CiAgICAgICAgIGlmIChtX3N0YXRlLnNob3dE
ZWJ1Z0JvcmRlcnMpCkBAIC0xMjAsNyArMTE5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAg
IGlmIChtX2JhY2tpbmdTdG9yZSkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZS5kcmF3c0NvbnRl
bnQgJiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc3RhdGUuc2l6ZS5pc0VtcHR5KCkp
OwogICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fYmFj
a2luZ1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxh
eWVyUmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAgICAgICBtX2Jh
Y2tpbmdTdG9yZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBs
YXllclJlY3QoKSwgdHJhbnNmb3JtLCBvcGFjaXR5KTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hv
d0RlYnVnQm9yZGVycykKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kcmF3Qm9yZGVyKG9w
dGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRl
YnVnQm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAgICAgICAvLyBPbmx5
IGRyYXcgcmVwYWludCBjb3VudCBmb3IgdGhlIG1haW4gYmFja2luZyBzdG9yZS4KQEAgLTEzMCw3
ICsxMjksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAKICAgICBpZiAobV9jb250ZW50c0xheWVy
KSB7CiAgICAgICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9j
b250ZW50c0xheWVyLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIs
IG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOwor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4
dHVyZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiAg
ICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCiAgICAgICAgICAgICBtX2NvbnRl
bnRzTGF5ZXItPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmRlYnVn
Qm9yZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbV9zdGF0ZS5jb250ZW50c1Jl
Y3QsIHRyYW5zZm9ybSk7CiAgICAgfQpAQCAtMTY2LDgyICsxNjUsMTYgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
dE9wdGlvbnMmIG8KICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7CiB9
CiAKLUludFJlY3QgVGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgp
Ci17Ci0gICAgLy8gRklYTUU6IEFkZCBhbiBpbnZlcnNlIHRyYW5zZm9ybSB0byBMYXllclRyYW5z
Zm9ybS4KLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobV9jdXJyZW50VHJhbnNm
b3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKLX0KLQotSW50UmVjdCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgpCi17Ci0gICAgSW50UmVjdCByZWN0OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxv
Y2FsVHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KS5tdWx0aXBseShtX2N1
cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSk7Ci0gICAgcmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
bG9jYWxUcmFuc2Zvcm0ubWFwUmVjdChsYXllclJlY3QoKSkpOwotICAgIGlmICghbV9zdGF0ZS5t
YXNrc1RvQm91bmRzICYmICFtX3N0YXRlLm1hc2tMYXllcikgewotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICByZWN0LnVu
aXRlKG1fY2hpbGRyZW5baV0tPmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KG1hdHJpeCkpOwotICAg
IH0KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBpZiAobV9jdXJyZW50RmlsdGVycy5o
YXNPdXRzZXRzKCkpIHsKLSAgICAgICAgRmlsdGVyT3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50
RmlsdGVycy5vdXRzZXRzKCk7Ci0gICAgICAgIEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3Qo
cmVjdCk7Ci0gICAgICAgIHJlY3QubW92ZShzdGQ6Om1heCgwLCAtb3V0c2V0cy5sZWZ0KCkpLCBz
dGQ6Om1heCgwLCAtb3V0c2V0cy50b3AoKSkpOwotICAgICAgICByZWN0LmV4cGFuZChvdXRzZXRz
LmxlZnQoKSArIG91dHNldHMucmlnaHQoKSwgb3V0c2V0cy50b3AoKSArIG91dHNldHMuYm90dG9t
KCkpOwotICAgICAgICByZWN0LnVuaXRlKHVuZmlsdGVyZWRUYXJnZXRSZWN0KTsKLSAgICB9Ci0j
ZW5kaWYKLQotICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikKLSAgICAgICAgcmVjdC51bml0
ZShtX3N0YXRlLnJlcGxpY2FMYXllci0+aW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobWF0cml4KSk7
Ci0KLSAgICByZXR1cm4gcmVjdDsKLX0KLQotVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c0xh
eWVyQ291bnQgVGV4dHVyZU1hcHBlckxheWVyOjpjb3VudFBvdGVudGlhbExheWVyc1dpdGhDb250
ZW50cygpIGNvbnN0Citib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c2hvdWxkQmxlbmQoKSBjb25z
dAogewotICAgIGludCBzZWxmTGF5ZXJzV2l0aENvbnRlbnRzID0gKG1fc3RhdGUuZHJhd3NDb250
ZW50ID8gMSA6IDApICsgKG1fY29udGVudHNMYXllciA/IDEgOiAwKTsKLSAgICBpbnQgcG90ZW50
aWFsTGF5ZXJzV2l0aENvbnRlbnRzID0gc2VsZkxheWVyc1dpdGhDb250ZW50cyArIG1fY2hpbGRy
ZW4uc2l6ZSgpOwotCi0gICAgaWYgKCFwb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMpCi0gICAg
ICAgIHJldHVybiBOb0xheWVyc1dpdGhDb250ZW50OwotCi0gICAgaWYgKHBvdGVudGlhbExheWVy
c1dpdGhDb250ZW50cyA+IDEpCi0gICAgICAgIHJldHVybiBNdWx0aXBsZUxheWVyc1dpdGhDb250
ZW50czsKLQotICAgIGlmIChtX2NoaWxkcmVuLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFNp
bmdsZUxheWVyV2l0aENvbnRlbnRzOwotCi0gICAgcmV0dXJuIG1fY2hpbGRyZW4uZmlyc3QoKS0+
Y291bnRQb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMoKTsKLX0KKyAgICBpZiAobV9zdGF0ZS5w
cmVzZXJ2ZXMzRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1ib29sIFRleHR1cmVNYXBwZXJM
YXllcjo6c2hvdWxkUGFpbnRUb0ludGVybWVkaWF0ZVN1cmZhY2UoKSBjb25zdAotewogI2lmIEVO
QUJMRShDU1NfRklMVEVSUykKICAgICBpZiAobV9jdXJyZW50RmlsdGVycy5zaXplKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCi0gICAgYm9vbCBoYXNPcGFjaXR5ID0gbV9jdXJyZW50
T3BhY2l0eSA8IDAuOTk7Ci0gICAgYm9vbCBjYW5IYXZlTXVsdGlwbGVMYXllcnNXaXRoQ29udGVu
dCA9IGNvdW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgPT0gTXVsdGlwbGVMYXllcnNX
aXRoQ29udGVudHM7Ci0gICAgYm9vbCBoYXNSZXBsaWNhID0gISFtX3N0YXRlLnJlcGxpY2FMYXll
cjsKLSAgICBib29sIGhhc01hc2sgPSAhIW1fc3RhdGUubWFza0xheWVyOwotCi0gICAgLy8gV2Ug
ZG9uJ3QgdXNlIHR3by1wYXNzIGJsZW5kaW5nIGZvciBwcmVzZXJ2ZXMtM2QsIHRoYXQncyBpbiBz
eW5jIHdpdGggU2FmYXJpLgotICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBXZSBzaG91bGQgdXNlIGFuIGludGVybWVkaWF0ZSBzdXJm
YWNlIHdoZW4gYmxlbmRpbmcgc2V2ZXJhbCBpdGVtcyB3aXRoIGFuIGFuY2VzdG9yIG9wYWNpdHku
Ci0gICAgLy8gVGVzdGVkIGJ5IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb3Bh
Y2l0eS5odG1sCi0gICAgaWYgKGhhc09wYWNpdHkgJiYgKGNhbkhhdmVNdWx0aXBsZUxheWVyc1dp
dGhDb250ZW50IHx8IGhhc1JlcGxpY2EpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8v
IFdlIHNob3VsZCB1c2UgYW4gaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd2l0aCBhIG1hc2tlZCBhbmNl
c3Rvci4KLSAgICAvLyBJbiB0aGUgY2FzZSBvZiByZXBsaWNhcyB0aGUgbWFzayBpcyBhcHBsaWVk
IGJlZm9yZSByZXBsaWNhdGluZy4KLSAgICAvLyBUZXN0ZWQgYnkgY29tcG9zaXRpbmcvbWFza3Mv
bWFza2VkLWFuY2VzdG9yLmh0bWwKLSAgICBpZiAoaGFzTWFzayAmJiBjYW5IYXZlTXVsdGlwbGVM
YXllcnNXaXRoQ29udGVudCAmJiAhaGFzUmVwbGljYSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY3VycmVudE9wYWNpdHkgPCAxIHx8IG1f
c3RhdGUubWFza0xheWVyIHx8IChtX3N0YXRlLnJlcGxpY2FMYXllciAmJiBtX3N0YXRlLnJlcGxp
Y2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpOwogfQogCiBib29sIFRleHR1cmVNYXBwZXJMYXll
cjo6aXNWaXNpYmxlKCkgY29uc3QKQEAgLTI2MSwxMSArMTk0LDYgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW4KIHsKICAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKICAgICAgICAgVGV4
dHVyZU1hcHBlclBhaW50T3B0aW9ucyByZXBsaWNhT3B0aW9ucyhvcHRpb25zKTsKLSAgICAgICAg
Ly8gV2UgY2hvb3NlIGVpdGhlciB0aGUgY29udGVudCdzIG1hc2sgb3IgdGhlIHJlcGxpY2EncyBt
YXNrLgotICAgICAgICAvLyBGSVhNRTogYmxlbmQgdGhlIHR3byBpZiBib3RoIGV4aXN0LgotICAg
ICAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyKQotICAgICAg
ICAgICAgcmVwbGljYU9wdGlvbnMubWFzayA9IG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRl
Lm1hc2tMYXllci0+dGV4dHVyZSgpOwotCiAgICAgICAgIHJlcGxpY2FPcHRpb25zLnRyYW5zZm9y
bQogICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRU
cmFuc2Zvcm0uY29tYmluZWQoKSkKICAgICAgICAgICAgIC5tdWx0aXBseShtX2N1cnJlbnRUcmFu
c2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOwpAQCAtMjg1LDYgKzIxMywxMSBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiAgICAg
bV9jdXJyZW50T3BhY2l0eSA9IG9wYWNpdHk7CiB9CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRl
eHR1cmVNYXBwZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSgpCit7CisgICAgcmV0dXJuIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0u
Y29tYmluZWQoKSkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpKTsKK30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjpzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykK
IHsKQEAgLTMwNyw3ICsyNDAsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRLZWVwQ29udGVudFRleHR1
cmUoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBC
aXRtYXBUZXh0dXJlKiBzb3VyY2UsIEludFJlY3QmIHRhcmdldFJlY3QpCitzdGF0aWMgUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgQml0bWFwVGV4dHVyZSogc291
cmNlKQogewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCiAgICAgICAgIHJldHVybiBzb3VyY2U7
CkBAIC0zMTcsNTEgKzI1MCwxODQgQEAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
YXBwbHlGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIFQKIH0KICNlbmRp
ZgogCi12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVy
ZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyB2b2lkIHJlc29sdmVPdmVybGFw
cyhSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lvbiwgUmVnaW9u
IG5ld1JlZ2lvbikKIHsKLSAgICBpZiAoIWlzVmlzaWJsZSgpKQorICAgIFJlZ2lvbiBuZXdPdmVy
bGFwUmVnaW9uKG5ld1JlZ2lvbik7CisgICAgbmV3T3ZlcmxhcFJlZ2lvbi5pbnRlcnNlY3Qobm9u
T3ZlcmxhcFJlZ2lvbik7CisgICAgbm9uT3ZlcmxhcFJlZ2lvbi5zdWJ0cmFjdChuZXdPdmVybGFw
UmVnaW9uKTsKKyAgICBvdmVybGFwUmVnaW9uLnVuaXRlKG5ld092ZXJsYXBSZWdpb24pOworICAg
IG5ld1JlZ2lvbi5zdWJ0cmFjdChvdmVybGFwUmVnaW9uKTsKKyAgICBub25PdmVybGFwUmVnaW9u
LnVuaXRlKG5ld1JlZ2lvbik7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRl
T3ZlcmxhcFJlZ2lvbnMoUmVnaW9uJiBvdmVybGFwUmVnaW9uLCBSZWdpb24mIG5vbk92ZXJsYXBS
ZWdpb24sIGJvb2wgYWx3YXlzUmVzb2x2ZVNlbGZPdmVybGFwKQoreworICAgIGlmICghbV9zdGF0
ZS52aXNpYmxlIHx8ICFtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eSAqIG1fY3VycmVudE9wYWNpdHk7
Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1hc2tUZXh0dXJlID0gbV9zdGF0ZS5tYXNrTGF5
ZXIgPyBtX3N0YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpIDogMDsKKyAgICBGbG9hdFJlY3QgYm91
bmRpbmdSZWN0OworICAgIGlmIChtX2JhY2tpbmdTdG9yZSB8fCBtX3N0YXRlLm1hc2tzVG9Cb3Vu
ZHMgfHwgbV9zdGF0ZS5tYXNrTGF5ZXIgfHwgaGFzRmlsdGVycygpKQorICAgICAgICBib3VuZGlu
Z1JlY3QgPSBsYXllclJlY3QoKTsKKyAgICBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIgfHwgbV9z
dGF0ZS5zb2xpZENvbG9yLmFscGhhKCkpCisgICAgICAgIGJvdW5kaW5nUmVjdCA9IG1fc3RhdGUu
Y29udGVudHNSZWN0OwogCi0gICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlv
bnMob3B0aW9ucyk7Ci0gICAgcGFpbnRPcHRpb25zLm1hc2sgPSBtYXNrVGV4dHVyZS5nZXQoKTsK
KyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgaWYgKG1fY3VycmVudEZpbHRlcnMuaGFzT3V0
c2V0cygpKSB7CisgICAgICAgIEZpbHRlck91dHNldHMgb3V0c2V0cyA9IG1fY3VycmVudEZpbHRl
cnMub3V0c2V0cygpOworICAgICAgICBJbnRSZWN0IHVuZmlsdGVyZWRUYXJnZXRSZWN0KGJvdW5k
aW5nUmVjdCk7CisgICAgICAgIGJvdW5kaW5nUmVjdC5tb3ZlKHN0ZDo6bWF4KDAsIC1vdXRzZXRz
LmxlZnQoKSksIHN0ZDo6bWF4KDAsIC1vdXRzZXRzLnRvcCgpKSk7CisgICAgICAgIGJvdW5kaW5n
UmVjdC5leHBhbmQob3V0c2V0cy5sZWZ0KCkgKyBvdXRzZXRzLnJpZ2h0KCksIG91dHNldHMudG9w
KCkgKyBvdXRzZXRzLmJvdHRvbSgpKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHVuZmls
dGVyZWRUYXJnZXRSZWN0KTsKKyAgICB9CisjZW5kaWYKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHJlcGxpY2FNYXRyaXg7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAg
ICAgIHJlcGxpY2FNYXRyaXggPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIGJvdW5kaW5n
UmVjdC51bml0ZShyZXBsaWNhTWF0cml4Lm1hcFJlY3QoYm91bmRpbmdSZWN0KSk7CisgICAgfQog
Ci0gICAgaWYgKCFzaG91bGRQYWludFRvSW50ZXJtZWRpYXRlU3VyZmFjZSgpKSB7Ci0gICAgICAg
IHBhaW50T3B0aW9ucy5vcGFjaXR5ID0gb3BhY2l0eTsKLSAgICAgICAgcGFpbnRTZWxmQW5kQ2hp
bGRyZW5XaXRoUmVwbGljYShwYWludE9wdGlvbnMpOworICAgIGJvdW5kaW5nUmVjdCA9IG1fY3Vy
cmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFJlY3QoYm91bmRpbmdSZWN0KTsKKworICAgIC8v
IENvdW50IGFsbCBtYXNrcyBhbmQgZmlsdGVycyBhcyBvdmVybGFwIGxheWVycy4KKyAgICBpZiAo
aGFzRmlsdGVycygpIHx8IG1fc3RhdGUubWFza0xheWVyIHx8IChtX3N0YXRlLnJlcGxpY2FMYXll
ciAmJiBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpKSB7CisgICAgICAg
IFJlZ2lvbiBuZXdPdmVybGFwUmVnaW9uKGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0KSk7
CisgICAgICAgIG5vbk92ZXJsYXBSZWdpb24uc3VidHJhY3QobmV3T3ZlcmxhcFJlZ2lvbik7Cisg
ICAgICAgIG92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyBQcmVwYXJlIGEgc3VyZmFjZSB0byBwYWludCBpbnRvLgot
ICAgIC8vIFdlIHBhaW50IGludG8gdGhlIHN1cmZhY2UgaWdub3JpbmcgdGhlIG9wYWNpdHkvdHJh
bnNmb3JtIG9mIHRoZSBjdXJyZW50IGxheWVyLgotICAgIEludFJlY3Qgc3VyZmFjZVJlY3QgPSBp
bnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJm
YWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHN1cmZh
Y2VSZWN0LnNpemUoKSk7Ci0gICAgcGFpbnRPcHRpb25zLnN1cmZhY2UgPSBzdXJmYWNlOwotICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7Ci0gICAg
cGFpbnRPcHRpb25zLm9wYWNpdHkgPSAxOworICAgIFJlZ2lvbiBuZXdPdmVybGFwUmVnaW9uOwor
ICAgIFJlZ2lvbiBuZXdOb25PdmVybGFwUmVnaW9uKGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdS
ZWN0KSk7CisKKyAgICBpZiAoIW1fc3RhdGUubWFza3NUb0JvdW5kcykgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IFRleHR1cmVNYXBwZXJMYXllciogY2hpbGQgPSBtX2NoaWxkcmVuW2ldOworICAgICAgICAgICAg
Ym9vbCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXBGb3JDaGlsZHJlbiA9IGZhbHNlOworICAgICAg
ICAgICAgY2hpbGQtPmNvbXB1dGVPdmVybGFwUmVnaW9ucyhuZXdPdmVybGFwUmVnaW9uLCBuZXdO
b25PdmVybGFwUmVnaW9uLCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXBGb3JDaGlsZHJlbik7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKKyAgICAg
ICAgbmV3T3ZlcmxhcFJlZ2lvbi51bml0ZShyZXBsaWNhTWF0cml4Lm1hcFJlY3QobmV3T3Zlcmxh
cFJlZ2lvbi5ib3VuZHMoKSkpOworICAgICAgICBSZWdpb24gcmVwbGljYVJlZ2lvbihyZXBsaWNh
TWF0cml4Lm1hcFJlY3QobmV3Tm9uT3ZlcmxhcFJlZ2lvbi5ib3VuZHMoKSkpOworICAgICAgICBy
ZXNvbHZlT3ZlcmxhcHMobmV3T3ZlcmxhcFJlZ2lvbiwgbmV3Tm9uT3ZlcmxhcFJlZ2lvbiwgcmVw
bGljYVJlZ2lvbik7CisgICAgfQogCi0gICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IG1fY3Vy
cmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKLSAgICBwYWludE9wdGlvbnMub2Zm
c2V0ID0gLUludFNpemUoc3VyZmFjZVJlY3QueCgpLCBzdXJmYWNlUmVjdC55KCkpOworICAgIGlm
ICghYWx3YXlzUmVzb2x2ZVNlbGZPdmVybGFwICAmJiBzaG91bGRCbGVuZCgpKSB7CisgICAgICAg
IG5ld05vbk92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgICAgIG5l
d092ZXJsYXBSZWdpb24gPSBSZWdpb24oKTsKKyAgICB9CiAKLSAgICBwYWludFNlbGZBbmRDaGls
ZHJlbldpdGhSZXBsaWNhKHBhaW50T3B0aW9ucyk7CisgICAgb3ZlcmxhcFJlZ2lvbi51bml0ZShu
ZXdPdmVybGFwUmVnaW9uKTsKKyAgICByZXNvbHZlT3ZlcmxhcHMob3ZlcmxhcFJlZ2lvbiwgbm9u
T3ZlcmxhcFJlZ2lvbiwgbmV3Tm9uT3ZlcmxhcFJlZ2lvbik7Cit9CiAKLSAgICAvLyBJZiB3ZSBw
YWludGVkIHRoZSByZXBsaWNhLCB0aGUgbWFzayBpcyBhbHJlYWR5IGFwcGxpZWQgc28gd2UgZG9u
J3QgbmVlZCB0byBwYWludCBpdCBhZ2Fpbi4KLSAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIp
Ci0gICAgICAgIG1hc2tUZXh0dXJlID0gMDsKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWlu
dFVzaW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0
aW9ucykKK3sKKyAgICBSZWdpb24gb3ZlcmxhcFJlZ2lvbjsKKyAgICBSZWdpb24gbm9uT3Zlcmxh
cFJlZ2lvbjsKKyAgICBjb21wdXRlT3ZlcmxhcFJlZ2lvbnMob3ZlcmxhcFJlZ2lvbiwgbm9uT3Zl
cmxhcFJlZ2lvbik7CisgICAgaWYgKG92ZXJsYXBSZWdpb24uaXNFbXB0eSgpKSB7CisgICAgICAg
IHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2Eob3B0aW9ucyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSBub25PdmVybGFwUmVnaW9u
LnJlY3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkg
eworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCByZWN0c1tpXSk7CisgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJl
cGxpY2Eob3B0aW9ucyk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZW5kQ2xpcCgp
OworICAgIH0KKworICAgIHJlY3RzID0gb3ZlcmxhcFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCBy
ZWN0ID0gcmVjdHNbaV07CisgICAgICAgIGNvbnN0IHN0YXRpYyBpbnQgbWF4UmVjdERpbWVuc2lv
biA9IDIwMDA7CisgICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgp
OyB4ICs9IG1heFJlY3REaW1lbnNpb24pIHsKKyAgICAgICAgICAgIGZvciAoaW50IHkgPSByZWN0
LnkoKTsgeSA8IHJlY3QubWF4WSgpOyB5ICs9IG1heFJlY3REaW1lbnNpb24pIHsKKyAgICAgICAg
ICAgICAgICBJbnRSZWN0IHRpbGVSZWN0KHgsIHksIG1heFJlY3REaW1lbnNpb24sIG1heFJlY3RE
aW1lbnNpb24pOworICAgICAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChyZWN0KTsKKyAg
ICAgICAgICAgICAgICBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKG9wdGlvbnMsIHRpbGVS
ZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KIAordm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQoreworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFza01vZGUodHJ1ZSk7
CisgICAgcGFpbnRTZWxmKG9wdGlvbnMpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0
TWFza01vZGUoZmFsc2UpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZy
b21Qb29sKHNpemUpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3Vy
ZmFjZS5nZXQoKSk7CisgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucyk7CisgICAgaWYg
KG1fc3RhdGUubWFza0xheWVyKQorICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNr
KG9wdGlvbnMpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBzdXJmYWNlID0gYXBwbHlG
aWx0ZXJzKG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5n
ZXQoKSwgc3VyZmFjZVJlY3QpOworICAgIGlmICghbV9jdXJyZW50RmlsdGVycy5pc0VtcHR5KCkp
CisgICAgICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9jdXJyZW50RmlsdGVycywgb3B0aW9u
cy50ZXh0dXJlTWFwcGVyLCBzdXJmYWNlLmdldCgpKTsKICNlbmRpZgorICAgIG9wdGlvbnMudGV4
dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CisgICAgcmV0dXJuIHN1cmZh
Y2U7Cit9CiAKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbW1pdFN1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQor
ewogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNl
LmdldCgpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAg
dGFyZ2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25z
Lm9mZnNldC5oZWlnaHQoKSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMu
dHJhbnNmb3JtKTsKLSAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNm
b3JtLmNvbWJpbmVkKCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUo
KnN1cmZhY2UuZ2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlh
dGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FTdXJm
YWNlOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYWluU3VyZmFjZTsKKyAgICBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKKyAgICBwYWludE9wdGlv
bnMub2Zmc2V0ID0gLUludFNpemUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICBwYWludE9wdGlv
bnMub3BhY2l0eSA9IDE7CisgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KCk7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAgIHBh
aW50T3B0aW9ucy50cmFuc2Zvcm0gPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIHJlcGxp
Y2FTdXJmYWNlID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJlY3Quc2l6ZSgpKTsK
KyAgICAgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7
CisgICAgICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCisg
ICAgICAgICAgICBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5
TWFzayhwYWludE9wdGlvbnMpOworICAgIH0KIAotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+
ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0s
IG9wYWNpdHksIG1hc2tUZXh0dXJlLmdldCgpKTsKKyAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYg
b3B0aW9ucy5vcGFjaXR5ID09IDEpCisgICAgICAgIHJlcGxpY2FTdXJmYWNlID0gY29tbWl0U3Vy
ZmFjZShvcHRpb25zLCByZXBsaWNhU3VyZmFjZSwgcmVjdCwgMSk7CisKKyAgICBtYWluU3VyZmFj
ZSA9IHBhaW50SW50b1N1cmZhY2UocGFpbnRPcHRpb25zLCByZWN0LnNpemUoKSk7CisgICAgaWYg
KHJlcGxpY2FTdXJmYWNlKSB7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1
cmZhY2UocmVwbGljYVN1cmZhY2UuZ2V0KCkpOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXItPmRyYXdUZXh0dXJlKCptYWluU3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgcmVjdC5zaXplKCkpKTsKKyAgICAgICAgbWFpblN1cmZhY2UgPSByZXBsaWNhU3Vy
ZmFjZTsKKyAgICB9CisKKyAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIG1haW5TdXJmYWNlLCBy
ZWN0LCBvcHRpb25zLm9wYWNpdHkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFp
bnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3sK
KyAgICBpZiAoIWlzVmlzaWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3Vs
ZEJsZW5kKCkpIHsKKyAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShvcHRp
b25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOworICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0g
b3B0aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKKyAgICBwYWludFVzaW5nT3Zlcmxh
cFJlZ2lvbnMocGFpbnRPcHRpb25zKTsKIH0KIAogVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVy
ZU1hcHBlckxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2MWZiODI3NjcwODYw
M2UxMTBmYWNlZDQxODlkYjdkYTBiYzAzMWZhLi42MDJiMmMzOTQxNTUyZTViZDFlNGZhMWFiYzgz
ZDkyY2MwNjA0ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0zMSw2ICszMSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVnaW9uOwogY2xhc3MgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwogCkBA
IC03Myw2ICs3NCwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZv
aWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKKworICAgIGJv
b2wgaGFzRmlsdGVycygpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAg
ICAgICAgcmV0dXJuICFtX2N1cnJlbnRGaWx0ZXJzLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgc2V0RGVidWdWaXN1YWxz
KGJvb2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZs
b2F0IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKICAgICB2b2lk
IHNldFJlcGFpbnRDb3VudChpbnQpOwogICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllciopOwpAQCAtOTIsOCArMTAzLDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OwogICAg
IHZvaWQgY29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKTsKLSAgICBJbnRSZWN0IGludGVybWVk
aWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgSW50UmVj
dCBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpOwogCiAgICAgc3RhdGljIGludCBjb21wYXJlR3Jh
cGhpY3NMYXllcnNaVmFsdWUoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYik7CiAgICAgc3Rh
dGljIHZvaWQgc29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqID4mIGFycmF5
LCBpbnQgZmlyc3QsIGludCBsYXN0KTsKQEAgLTEwMSwxNSArMTEwLDIxIEBAIHByaXZhdGU6CiAg
ICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5n
U3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQg
YWRqdXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQ
b3NpdGlvbkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29u
c3Q7Ci0KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CiAgICAg
dm9pZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21Q
YXJlbnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAKKyAgICB2b2lkIGNvbXB1
dGVPdmVybGFwUmVnaW9ucyhSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3Zlcmxh
cFJlZ2lvbiwgYm9vbCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXAgPSB0cnVlKTsKKwogICAgIHZv
aWQgcGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOworICAg
IHZvaWQgcGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMmKTsKKyAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICB2
b2lkIHBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHBhaW50U2VsZihjb25zdCBUZXh0
dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGlsZHJlbihj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRD
aGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKKyAg
ICB2b2lkIGFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAKICAg
ICAvLyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QW5pbWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsK
QEAgLTEyNSw4ICsxNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBNdWx0aXBsZUxheWVyc1dpdGhD
b250ZW50cwogICAgIH07CiAKLSAgICBDb250ZW50c0xheWVyQ291bnQgY291bnRQb3RlbnRpYWxM
YXllcnNXaXRoQ29udGVudHMoKSBjb25zdDsKLSAgICBib29sIHNob3VsZFBhaW50VG9JbnRlcm1l
ZGlhdGVTdXJmYWNlKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRCbGVuZCgpIGNvbnN0OwogCiAg
ICAgaW5saW5lIEZsb2F0UmVjdCBsYXllclJlY3QoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5
ZTY2ZWU0N2RlZjgxMDExNS4uYjliYWRlZDMzNDczODFjYzBkYjI5ZjIxYzJhYWVkYjAwY2Y5MDU5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0
bWFwVGV4dHVyZSogbWFzayA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBm
bG9hdCBvcGFjaXR5ID0gMS4wKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDhj
MTMxZTYxOWUxYWUwMTc3MWMwY2ViMjU0MTUyNWRjYmU2MjU5MTcuLjUzZWUyZjBkZGE0ZDU4OWVj
NTk3MDRlYjM2NTczYzg3NDVjOWM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtLmNwcApAQCAtMTI3LDcgKzEyNyw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB2ZXJ0
ZXhUZW1wbGF0ZSA9CiAgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsK
IAogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2ZWMy
IHZfbWFza1RleENvb3JkOwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFzOwogCiAg
ICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWMyIGR1bW15UGFyYW1ldGVyKSB7IH0KQEAgLTE3Niw4
ICsxNzUsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4VGVtcGxhdGUgPQogICAgICAgICAg
ICAgLy8gVGhlIHRleHR1cmUgcG9zaXRpb24gbmVlZHMgdG8gYmUgY2xhbXBlZCB0byAwLi4xIGJl
Zm9yZSB0aGUgdGV4dHVyZSBtYXRyaXggaXMgYXBwbGllZC4KICAgICAgICAgICAgIHZlYzQgY2xh
bXBlZFBvc2l0aW9uID0gY2xhbXAodmVjNChwb3NpdGlvbiwgMC4sIDEuKSwgMC4sIDEuKTsKICAg
ICAgICAgICAgIHZfdGV4Q29vcmQgPSAodV90ZXh0dXJlU3BhY2VNYXRyaXggKiBjbGFtcGVkUG9z
aXRpb24pLnh5OwotCi0gICAgICAgICAgICB2X21hc2tUZXhDb29yZCA9IHBvc2l0aW9uOwogICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiB1X21vZGVsVmlld01h
dHJpeCAqIHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgICAgICAgIH0KICAgICApOwpAQCAtMjA0
LDEyICsyMDEsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAg
IFNUUklOR0lGWSgKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgIHVu
aWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOwotICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBz
X21hc2s7CiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfY29udGVudFRleHR1cmU7CiAgICAg
ICAgIHVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5OwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50
aWFsaWFzOwogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWlu
ZyB2ZWMyIHZfbWFza1RleENvb3JkOwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfZmlsdGVyQW1v
dW50OwogICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwogICAgICAgICB1bmlmb3Jt
IHZlYzIgdV9zaGFkb3dPZmZzZXQ7CkBAIC0yMjMsNyArMjE4LDYgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZShpbm91dCB2
ZWM0IGNvbG9yKSB7IGNvbG9yID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdl90ZXhDb29y
ZCk7IH0KICAgICAgICAgdm9pZCBhcHBseU9wYWNpdHkoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xv
ciAqPSB1X29wYWNpdHk7IH0KICAgICAgICAgdm9pZCBhcHBseUFudGlhbGlhc2luZyhpbm91dCB2
ZWM0IGNvbG9yKSB7IGNvbG9yICo9IGFudGlhbGlhcygpOyB9Ci0gICAgICAgIHZvaWQgYXBwbHlN
YXNrKGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdGV4dHVyZTJEKHNfbWFzaywgdl9tYXNr
VGV4Q29vcmQpLmE7IH0KIAogICAgICAgICB2b2lkIGFwcGx5R3JheXNjYWxlRmlsdGVyKGlub3V0
IHZlYzQgY29sb3IpCiAgICAgICAgIHsKQEAgLTMzNCw3ICszMjgsNiBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgICAgICAgICBhcHBseVRleHR1cmVJZk5lZWRl
ZChjb2xvcik7CiAgICAgICAgICAgICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xvcik7CiAg
ICAgICAgICAgICBhcHBseUFudGlhbGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAg
IGFwcGx5TWFza0lmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5T3BhY2l0eUlmTmVl
ZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5R3JheXNjYWxlRmlsdGVySWZOZWVkZWQoY29s
b3IpOwogICAgICAgICAgICAgYXBwbHlTZXBpYUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKQEAgLTM2
Miw3ICszNTUsNiBAQCBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFBhc3NSZQogICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhSZWN0KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU29saWRDb2xv
cik7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKE9wYWNpdHkpOwotICAgIFNFVF9BUFBM
SUVSX0ZST01fT1BUSU9OUyhNYXNrKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoQW50
aWFsaWFzaW5nKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoR3JheXNjYWxlRmlsdGVy
KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU2VwaWFGaWx0ZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCAwMzdlN2Q2OWQ5YTg3NzRmMWQzMDYx
YTc3OTMxYTJjMDNjOWRjMTQ2Li4zMmZhZTExNmNiZmEyZjgzNDliZDI3YjNhYzRiZTk5MzY5ZGNi
NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaApAQCAtNDIsNyAr
NDIsNiBAQCBwdWJsaWM6CiAgICAgICAgIFJlY3QgICAgICAgICAgICAgPSAxTCA8PCAxLAogICAg
ICAgICBTb2xpZENvbG9yICAgICAgID0gMUwgPDwgMiwKICAgICAgICAgT3BhY2l0eSAgICAgICAg
ICA9IDFMIDw8IDMsCi0gICAgICAgIE1hc2sgICAgICAgICAgICAgPSAxTCA8PCA0LAogICAgICAg
ICBBbnRpYWxpYXNpbmcgICAgID0gMUwgPDwgNSwKICAgICAgICAgR3JheXNjYWxlRmlsdGVyICA9
IDFMIDw8IDYsCiAgICAgICAgIFNlcGlhRmlsdGVyICAgICAgPSAxTCA8PCA3LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzcxNDJk
NzVkZDVhNzYzZjBiNjIyYTU2MzY1YWQ5YzIyZTgzOWUxMi4uOGQzODc3NmU5YjVmNTMzYTYwNWU3
M2NhNzZlMzNjYWJmZDk4YjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmUuY3BwCkBAIC00NCwxMCArNDQsMTAgQEAgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyU3Vy
ZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
KQordm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFj
aXR5KQogewogICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1
cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRy
YW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWlu
dFRvVGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9w
YWNpdHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRjZDEwMTRmYzg1ZWEzYTdlOTcx
YzhkZTA1ZjQxYTRmZDRiZDI2YzcuLjc5M2M2MWRjMzQyZmYwMjYzNTI3ODc0YzcxMjBkMzVlYjI4
MGM1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFj
ZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5l
ZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZpcnR1YWwgflRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlLmNwcAppbmRleCA5YjQwNTEzMWFiMGU3OTMyZmU5Yzg3ZmRiYzI1ODQ0Y2ViNTI0NDRi
Li4wNzA1N2VhMTQ5MTNlZWUwNjE1OWQ5NDZiNjQxYjJkMTM1NjEwYmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxl
Ojp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xh
eQogICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5
ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAot
dm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwg
Qml0bWFwVGV4dHVyZSogbWFzaywgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICh0ZXh0dXJlKCkuZ2V0KCkpCi0gICAg
ICAgIHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlKCkuZ2V0KCksIHJlY3QoKSwg
dHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgICAgICB0ZXh0dXJl
TWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwg
b3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGUuaAppbmRleCBhY2VmNjE4ZWQzZDYwZTMyYTc2M2JmNDBmMTVmY2YyYTM0
NzdlZThkLi4yYjQ1ZDkwMDc3OThlYjQ3MTI4ZDA3YzQ0OWQ3ZDBhNTgwOGZlZDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRt
YXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFn
ZURhdGEpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNz
TGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFn
IFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJp
dG1hcFRleHR1cmUqLCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJl
TWFwcGVyVGlsZSgpIHsgfQogCiAgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlLmNwcAppbmRleCA4MDk3OTIyMjY3ZTk5MGE4MTBmMjAyZDQ1N2E2MmZhZjlmYjg4ZDBi
Li40YTYwYzgxNTcyMjI4YTVkM2RmNThlYTUwMDRhYjNhMDNmN2FhNTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDcsMTIgKzQ3LDEy
IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5KQogewogICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1h
cHBlcik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFu
c2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RpbGVzW2ld
LnBhaW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBj
YWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKKyAg
ICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwg
b3BhY2l0eSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVj
dCgpKSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9y
ZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xv
ciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCA5MzliMTg1ZDdlYTM1NGYzYmI1Mzk4NWI4YTU2
N2U5MTY3NzY0ZmViLi5mYzFmOWJmNjdmNjExZmViOGM1YmRlNGY3ZjdmOTJiY2ZiNGNhMDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVN
YXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJ
bnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEw
NWMxY2JmYTU1ZGJlZmVmYjMyYzM2ZDg1ZjczM2JiYzZkZjM3NDguLmNkNWExMmQ5NjdiNjUwYjk5
MDhkZTEwMmM0YzI5MTMzYTUyZTBiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTA2LDEwICsxMDYsMTAgQEAgdm9p
ZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUp
CiAgICAgbV9wZW5kaW5nU2l6ZSA9IHNpemU7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxl
Kj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpw
YWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxl
cywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRp
bGVzW2ldLT5wYWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNh
bGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZXNbaV0tPnJlY3QoKSkpOworICAgICAg
ICB0aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBjYWxj
dWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKIH0KIAogVHJh
bnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNm
b3JtRm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpCkBAIC0xMTcsNyArMTE3LDcg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVk
VHJhbnNmb3JtRm9yUmVjdChjb25zdCBGbG8KICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KTsKIH0KIAotdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQor
dm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAg
IGlmIChtX3RpbGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyLDggKzE1Miw4
IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgLy8gU2VlIFRpbGVkQmFja2luZ1N0b3Jl
LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3Jt
ICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogCi0gICAgcGFpbnRUaWxl
c1RvVGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRq
dXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7Ci0gICAgcGFpbnRUaWxlc1Rv
VGV4dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNm
b3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIocHJldmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3Jt
LCBvcGFjaXR5LCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNU
b1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCgp
KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJv
cmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDgxOTg5NWY0OTJhZTVhY2VkZTdkMzlhZWUxYzRk
ODdiYzI2Y2NmYjkuLjQyMDE0NTRiZDdmNzVjMzYzYTI2OGI3MmIzODc1MTFkZTBlNzFhN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25z
KFRleHR1cmVNYXBwZXIqKTsKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSBjb25zdDsKICAgICB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKik7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBm
bG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKQEAgLTcwLDcg
KzcwLDcgQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAgICAg
IDogbV9zY2FsZSgxLikKICAgICB7IH0KLSAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mLCBUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IEZsb2F0UmVj
dCYpOworICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1h
cHBlclRpbGUqPiYsIFRleHR1cmVNYXBwZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1
c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgRmxvYXRSZWN0IHJl
Y3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUp
OyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAwNWU1YmRiODlmMjhmZjljZjVhYmJkNzIzYjJhMGQ2ZjAyN2FlN2Y4Li5i
ZDY3NjExY2E2YWY1M2U2NzBhYTBlNzY2ZTJkNGI2YjE4NmU1ODNmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTMtMDItMjUgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbVGV4bWFwXSBUZXh0dXJlTWFwcGVyIGlzIHRvbyBlYWdlciB0byB1c2UgaW50ZXJt
ZWRpYXRlIHN1cmZhY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEwNzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgYSBmZXcgcmVmLXRlc3RzIGZvciBjb3JyZWN0IG92ZXJsYXAgYmxlbmRp
bmcgaW4gYWNjZWxlYXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUuCisKKyAgICAgICAgKiBjb21wb3Np
dGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVu
LW9wYWNpdHktaHVnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFw
LWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNp
dHktbm8tb3ZlcmxhcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFw
LWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5
LWh1Z2UuaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMjAgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJv
dXNsYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWxsY2hlY2tlciBzaG91bGQgbm90IGNy
YXNoIGFmdGVyIHRleHQgaGFzIGNoYW5nZWQgYW5kIHNwZWxsY2hlY2sgcmVzdWx0cyBhcmUgc2Vy
dmVkIGZyb20gY2FjaGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJs
YXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OTA1ZTlhOTg5YWQyNjlmZTM2MTJiMjJkMzk0MTE0
M2UxYWE0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVy
bGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMzMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgCisg
ICAgICBkaXYgeworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAg
ICB9CisgICAgICAuc29saWQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAg
IHdpZHRoOiAyMTUwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOworICAgICAgfQorCisgICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41
OyB9CisgICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDEw
MHB4OyBsZWZ0OiAwcHg7fQorICAgICAgCisgICAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIC13
ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgICAgfQorICAgICAgKiB7IG1hcmdp
bjogMDsgcGFkZGluZzogMDsgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAgIDxkaXYg
Y2xhc3M9Im9wYWNpdHkiPgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGEiPjE8L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJzb2xpZCBiIj4yPC9kaXY+CisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktaHVnZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGlu
Zy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzFiMDY0ZWY5ZjViMGRh
YmRmM2UwOTcwNThhYTEyODM3MGM4YzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbApA
QCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAg
ICAgIAorICAgICAgZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94
OworICAgICAgfQorICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgICB3aWR0aDogMjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIH0KKworICAgICAgLm9wYWNpdHkgeyBvcGFj
aXR5OiAuNTsgfQorICAgICAgLmEgeyB0b3A6IDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5iIHsg
dG9wOiAxMDBweDsgbGVmdDogMHB4O30KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeworICAg
ICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0KKworICAgICAg
KiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAg
ICA8ZGl2IGNsYXNzPSJvcGFjaXR5IGNvbXBvc2l0ZWQiPgorICAgIDxkaXYgY2xhc3M9InNvbGlk
IGEgY29tcG9zaXRlZCI+MTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGIgY29tcG9zaXRl
ZCI+MjwvZGl2PgorICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcv
Y2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjli
ZDVmMTM2ZDI2YjQ2M2QzMDhhNzNlZjZhNWYwMDJlYjg0YzI4NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0
eS1uby1vdmVybGFwLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAKKyAgICAgIGRpdiB7CisgICAgICAgIC13
ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgIH0KKyAgICAgIC5zb2xpZCB7Cisg
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAg
ICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAg
IH0KKworICAgICAgLm9wYWNpdHkgeyBvcGFjaXR5OiAuNTsgfQorICAgICAgLmEgeyB0b3A6IDBw
eDsgbGVmdDogMHB4O30KKyAgICAgIC5iIHsgdG9wOiAyMDBweDsgbGVmdDogMjAwcHg7fQorICAg
ICAgLmMgeyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmQgeyB0b3A6IDBweDsgbGVm
dDogMjAwcHg7fQorICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICAgICAgLmNv
bXBvc2l0ZWQgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAg
ICAgIH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgICA8ZGl2IGNsYXNzPSJvcGFjaXR5
Ij4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGEiPjE8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9
InNvbGlkIGIiPjI8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGMiPjM8L2Rpdj4KKyAg
ICAgIDxkaXYgY2xhc3M9InNvbGlkIGQiPjwvZGl2PgorICAgIDwvZGl2PgorCis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxk
cmVuLW9wYWNpdHktbm8tb3ZlcmxhcC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MzE4NDBhMmM0ZGIyY2YyYTcxNTFlYjMxNTQzMzA2M2MzZDRlNmE1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1v
cGFjaXR5LW5vLW92ZXJsYXAuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgSFRNTD4K
KzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAgZGl2IHsKKyAgICAgICAgLXdlYmtp
dC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgfQorICAgICAgLnNvbGlkIHsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgfQor
CisgICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9CisgICAgICAuYSB7IHRvcDogMHB4OyBs
ZWZ0OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDIwMHB4OyBsZWZ0OiAyMDBweDt9CisgICAgICAu
YyB7IHRvcDogMjAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAuZCB7IHRvcDogMHB4OyBsZWZ0OiAy
MDBweDt9CisgICAgICAKKyAgICAgIC5jb21wb3NpdGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFu
c2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgICB9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRk
aW5nOiAwOyB9CisKKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgICAgPGRpdiBjbGFzcz0iY29t
cG9zaXRlZCBvcGFjaXR5Ij4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgYSI+
MTwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgY29tcG9zaXRlZCBiIj4yPC9kaXY+Cisg
ICAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3NpdGVkIGMiPjM8L2Rpdj4KKyAgICAgIDxkaXYg
Y2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVm
bGVjdGlvbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNDliMTRjYzAxMGQ1OGFjMmFhYTBhMTg5MTk0YjUwYTY1MjVlNTNhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGlu
Zy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgLnJlZmxlY3RlZCB7
CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6IDIxNTBweDsKKyAg
ICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cisg
ICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICAgICAgLXdlYmtpdC1ib3gtcmVmbGVjdDogYmVsb3cg
LTUwcHg7CisgICAgICB9CisgICAgICAKKyAgICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7
IH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgCisgIDxwPk9wYWNpdHkgc2hvdWxkIGJl
IGFwcGxpZWQgYWZ0ZXIgcmVmbGVjdGlvbiwgc28geW91IHNob3VsZCBzZWUgYSBncmVlbiByZWN0
YW5nbGUgYmVsb3cuIFRoZSBvdmVybGFwIGJldHdlZW4gdGhlIG9yaWdpbmFsIGFuZCByZWZsZWN0
aW9uIHNob3VsZCBub3QgYmUgdmlzaWJsZS48L3A+CisgIDxkaXYgY2xhc3M9InJlZmxlY3RlZCI+
MQorICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5odG1sIGIvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVn
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3ODE3OTRlOTk3YmY4MTQyNDU1ZjJmYjJlMGQxNDY0YzM3MGVm
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJs
ZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAucmVmbGVjdGVkIHsKKyAg
ICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDogMjE1MHB4OworICAgICAg
ICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAg
ICAgb3BhY2l0eTogMC41OworICAgICAgICAtd2Via2l0LWJveC1yZWZsZWN0OiBiZWxvdyAtNTBw
eDsKKyAgICAgIH0KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeyAtd2Via2l0LXRyYW5zZm9y
bTogdHJhbnNsYXRlWigwKTt9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisK
KyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgIAorICA8cD5PcGFjaXR5IHNob3VsZCBiZSBhcHBs
aWVkIGFmdGVyIHJlZmxlY3Rpb24sIHNvIHlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gcmVjdGFuZ2xl
IGJlbG93LiBUaGUgb3ZlcmxhcCBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBhbmQgcmVmbGVjdGlvbiBz
aG91bGQgbm90IGJlIHZpc2libGUuPC9wPgorICA8ZGl2IGNsYXNzPSJyZWZsZWN0ZWQgY29tcG9z
aXRlZCI+MQorICA8L2Rpdj4KKworPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190236</attachid>
            <date>2013-02-26 01:14:02 -0800</date>
            <delta_ts>2013-02-26 02:08:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110762-20130226101015.patch</filename>
            <type>text/plain</type>
            <size>82616</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYxZjU4ZjQ0NmM5ZWZl
ZDAwNzZkMzdjZjg0ZTQ3YzFkYmNlZjc2Yi4uNzczZjY1NDlkMjgwNmQ5NmRlYjliZmYxZTU2YTU2
NmI2ZTE4NzYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAxMy0wMi0yNSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXIgaXMgdG9vIGVhZ2VyIHRvIHVzZSBpbnRlcm1lZGlhdGUgc3VyZmFjZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA3NjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUg
d2F5IGludGVybWVkaWF0ZSBzdXJmYWNlcyBhcmUgaGFuZGxlZCBpbiBUZXh0dXJlTWFwcGVyTGF5
ZXIuCisgICAgICAgIEJlZm9yZWhhbmQsIHdlIHdvdWxkIGNyZWF0ZSBhbiBpbnRlcm1lZGlhdGUg
c3VyZmFjZSB3aGVuZXZlciB0aGVyZSBpcyBhIGNoYW5jZSBvZiBvdmVybGFwLCBhbmQKKyAgICAg
ICAgdGhlIGludGVybWVkaWF0ZSBzdXJmYWNlIHdvdWxkIGJlIHRoZSBsYXJnZXN0IHBvc3NpYmxl
LiBUaGUgcmVzdWx0IHdvdWxkIHRoZW4gYmUgZHJhd24gdG8gdGhlCisgICAgICAgIHRhcmdldCBz
dXJmYWNlIHdpdGggdGhlIGxheWVyJ3Mgb3BhY2l0eSBhbmQgbWFzay4KKyAgICAgICAgVGhpcyB3
b3VsZCBtYWtlIGl0IHNvIHRoYXQgKDEpIHN1cmZhY2VzIGFyZSBjcmVhdGVkIGV2ZW4gd2hlbiB0
aGV5J3JlIG5vdCBuZWVkZWQsIGkuZS4gd2hlbiB0aGVyZQorICAgICAgICBpcyBubyBhY3R1YWwg
b3ZlcmxhcCwgYW5kICgyKSBtYXNrIHdvdWxkbid0IGJlIGFwcGxpZWQgY29ycmVjdGx5LgorCisg
ICAgICAgIEluIHRoaXMgcGF0Y2ggdGhlIGJlaGF2aW9yIGlzIGNoYW5nZWQgc28gdGhhdCB0aGUg
YXJlYSB0byBiZSBwYWludGVkIGlzIGRpdmlkZWQgdG8gIm92ZXJsYXBwaW5nIgorICAgICAgICBh
bmQgIm5vbiBvdmVybGFwcGluZyIgcmVnaW9ucy4gVGhlIG5vbi1vdmVybGFwcGluZyByZWdpb25z
IGFyZSBwYWludGVkIGRpcmVjdGx5LCB3aGlsZSB0aGUgb3ZlcmxhcHBpbmcKKyAgICAgICAgcmVn
aW9ucyBhcmUgdGlsZWQgdG8gc21hbGxlciByZWN0YW5nbGVzIHBhaW50ZWQgdXNpbmcgYW4gaW50
ZXJtZWRpYXRlIHN1cmZhY2UuCisgICAgICAgIE1hc2tzIGFyZSBhcHBsaWVkIHRvIHRob3NlIGlu
dGVybWVkaWF0ZSBzdXJmYWNlcyBiYXNlZCBvbiB0aGUgdHJhbnNmb3JtIG9mIHRoZSBhY3R1YWwg
bWFzaywgbm90IGRyYXduCisgICAgICAgIHRvZ2V0aGVyIHdpdGggdGhlIGNvbnRlbnQgdGV4dHVy
ZSBsaWtlIGJlZm9yZS4KKworICAgICAgICBUaGlzIG9wdGltaXplcyBmb3IgdGhlIG1vcmUgY29t
bW9uIGNhc2Ugb2Ygb3BhY2l0eSBhbmltYXRpb25zIG9uIGEgbGFyZ2UgdHJlZSwgd2hpbGUgbWFr
aW5nIHRoZSBxdWl0ZQorICAgICAgICByYXJlIGNhc2Ugb2YgY29tcG9zaXRlZCBtYXNrcyBzbGln
aHRseSBsZXNzIG9wdGltaXplZCBidXQgYWx3YXlzIGNvcnJlY3QuCisKKyAgICAgICAgVGVzdHM6
IGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLmh0bWwK
KyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1v
cGFjaXR5LWh1Z2UuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXJQcml2YXRlUXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9HcmFwaGljc1N1cmZhY2UuaDoKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1Rl
eHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgICAgICAgICBSZW1vdmVkIHRoZSAibWFzayIgcGFyYW1ldGVyIGZyb20gVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIgYW5kIG92ZXJyaWRlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI6OlRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpzZXRN
YXNrTW9kZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI6OmlzSW5NYXNrTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpk
cmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXcpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRD
b2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAg
ICAgICAgICAgICBJbnN0ZWFkIG9mIHBhaW50aW5nIHRoZSBtYXNrIHRvZ2V0aGVyIHdpdGggdGhl
IHRleHR1cmUvY29sb3IsIHBhaW50IHRoZSBtYXNrCisgICAgICAgICAgICAgICAgYnkgZHJhd2lu
ZyB3aXRoIERlc3RpbmF0aW9uSW4gdG8gYW4gZXhpc3Rpbmcgc3VyZmFjZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNob3VsZEJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVz
b2x2ZU92ZXJsYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29t
cHV0ZU92ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6YXBwbHlNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRJbnRvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21taXRTdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJt
ZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50UmVjdXJzaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBw
ZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omhhc0ZpbHRl
cnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oOgorCiAyMDEzLTAyLTIz
ICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYW5pbWF0aW9uL3N0YXRlLWF0LWVuZC1ldmVudC10cmFu
c2Zvcm0tbGF5ZXIuaHRtbCBzaG93cyBhIHJlZCBzcXVhcmUgd2hlcmUgaXQgc2hvdWxkbid0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQz
MTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi4wMGI0OTY2OTI1ZmFmNjA2YzhmNjYwMzEyMjljYjMw
MzlhZGVlZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5k
ZXggZDBkZDIzZmU3ZGJkNDFkNmFmODFmOTA3YWFkOWRhMDMyYzAxYjRkYi4uNDJlYjZjMmU3MDUx
YzkwMjc1MGIyODgwZGVjNGZhMzc0M2IyMTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQg
b3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCAzZDYwMWZlMmY4NzY4
NmMwMjU4YjJhMGNlNjc2NTExYmU2OTllODVlLi4zMTFjYjJkN2Q2OTlkMTI1OWNmZGRjNDgxN2I0
YzMwMTg2YzczNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTkw
LDcgKzE5MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVmZmVy
KCkgY29uc3QKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQgLyogb3BhY2l0eSAqLywgQml0bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IGIzMDA5NmE2YTlhOGQ3NThhNzlkY2My
OWRjZTE2ZDU4YTg1OTc5NmQuLjhmMGViM2NiNGFlYjUzNGUzOGY5YjE3NjUwZGMxY2UzZmRmZTlj
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVi
bGljOgogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrPik7CiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCwgQml0bWFwVGV4dHVyZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUo
KSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggNjZiZGVhZWQxODVh
NTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMwZjdlYS4uOGQ1YjgxZDEwMjFjZDJiZTM4ZmM0MzIwOWJm
MzBmMGI2OTdlMTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3Bh
Y2l0eSk7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIElu
dFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdDsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0
aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRvUmdiKHF1aW50MzIgcGl4ZWwpCiB9CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0
cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBtX2NvbnRleHQtPm1hcmtM
YXllckNvbXBvc2l0ZWQoKTsKICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJlc3Rv
cmVDb250ZXh0KCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIK
ICAgICAgICAgY3VycmVudENvbnRleHQtPm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKIAog
ICAgICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1h
cHBlckdMKj4odGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWlu
dFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBHTCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBt
YXNrKTsKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRl
eG1hcEdMLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJiYjc4
ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAzYS4uMWY5NjliNWZkYzIxYWJjMjk0YWEwM2RkYTc3ZmEz
NWEzYjY5NjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFw
VGV4dHVyZSopCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQzOWUz
MjI0YzE1MjFlZTAwMzA0MGY1OTUuLmU3NGNkY2QwODk4NWNiYmNiYTNkMjhiNzZlNDU0MzYzMDUx
NjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01l
ZGlhUGxheWVyUHJpdmF0ZVF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7IH0K
ICAgICAvLyBDb25zdC1jYXN0aW5nIGhlcmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyJ3MgZnVuY3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBo
aWNzU3VyZmFjZS5jcHAKaW5kZXggYmFlZmE4YTE5MDg0MWFlYWIyYjQwYTJjZDA2NDc3MjBmMTYz
MzU5Yy4uMmE3YTRiMjQzYzRjYmU2OGFiZTJhYTkyNjE4OTFiNjA5NTdiMjE1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9H
cmFwaGljc1N1cmZhY2UuY3BwCkBAIC02Myw5ICs2Myw5IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNl
Ojpjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjCiAgICAgcGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1
cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewot
ICAgIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVj
dCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBwbGF0Zm9ybVBhaW50VG9UZXh0dXJl
TWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9
CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6ZnJvbnRCdWZmZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuaAppbmRleCBkYTQ5MzY5OThjNWQwZGQ3OTI4NTk1ZTIyMWM4ZmE5MjY5MWEzODc4Li43
MzFhZjJiNmQ2NWMzZGE5YWQ0NzI5YmI3NjI1NWYzOGRiZWY0ZDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFw
aGljc1N1cmZhY2VUb2tlbiYpOwogICAgIHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRh
cmdldCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
SW50UG9pbnQmIHNvdXJjZU9mZnNldCk7CiAgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1
cmUqIG1hc2spOworICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVpbnQz
Ml90IHN3YXBCdWZmZXJzKCk7CiAgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZXhwb3J0VG9rZW4o
KTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2so
KTsKICAgICB2b2lkIHBsYXRmb3JtQ29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWlu
dDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9p
ZCBwbGF0Zm9ybUNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB2
b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBv
cGFjaXR5KTsKICAgICB1aW50MzJfdCBwbGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3Q7CiAgICAg
dWludDMyX3QgcGxhdGZvcm1Td2FwQnVmZmVycygpOwogICAgIEludFNpemUgcGxhdGZvcm1TaXpl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDVl
MThhNTliOTY0NzQ4ZTcyMTgxNDFmZjFiYWFkYzk2OTkzMDNhOGYuLjNhMjMwNjM3ZjJhYWMyMTQ2
NGVjNzlkYzE5NTA2ZDMzZDY4MGRmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZh
Y2VHTFguY3BwCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAg
ICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAot
dm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBU
ZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIGlm
IChzaXplLmlzRW1wdHkoKSkKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLAogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNp
emUpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNm
b3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4
OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nh
c3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHRleHR1cmUs
IG1fcHJpdmF0ZS0+ZmxhZ3MoKSwgc2l6ZSwgcmVjdE9uQ29udGVudHMsIGFkanVzdGVkVHJhbnNm
b3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0
ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygpLCBz
aXplLCByZWN0T25Db250ZW50cywgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQogCiB1
aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dy
YXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAppbmRleCBiZjYyZmIxNWEwOWI0YzE4
MjMyNDExZjYzYTUzMTdiYWRkNmVhMjVjLi5jNGQyZDU0MTg0MmQ2YjE2Y2FlZDFhMTkzYTdlY2Ux
MjJjODFiYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAt
MzMzLDEzICszMzMsMTMgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21U
ZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUt
PmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGlj
c1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
KQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewog
ICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0
T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNm
b3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRl
bnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4
dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQo
KSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
VXNlQVJCVGV4dHVyZVJlY3QsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9y
bSwgb3BhY2l0eSwgbWFzayk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4
dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQo
KSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
VXNlQVJCVGV4dHVyZVJlY3QsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9y
bSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9u
dEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCmlu
ZGV4IDk1MDlmMDk4M2M2MjkwY2YwMGVkM2JjYWQ4YTliMTA5ODYyNWQ4N2YuLjA2ZjQyN2NmY2Fk
ODM2NDhkZmQ3OGQ1OTI1M2NiMGMwNDRmZjQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGlj
c1N1cmZhY2VXaW4uY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3Qm
IHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsK
IH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBC
aXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwog
ICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuY3BwCmluZGV4IDM3ZjcxNTRmMWM2OWQ5OGI0YTIzYjBjMGNkNzQ4ZWY1ZDlk
NzU5MDguLjJiMTNjNWU1NzQxZTFkYmM0MTZiMTEzNzcyNjJiYjcwZTVhMzcxODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTE0MSw2ICsxNDEsNyBAQCBUZXh0dXJlTWFwcGVyOjpUZXh0dXJlTWFw
cGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNjZWxlcmF0aW9uTW9kZSkKICAgICAsIG1fdGV4dERyYXdp
bmdNb2RlKFRleHRNb2RlRmlsbCkKICAgICAsIG1fdGV4dHVyZVBvb2woYWRvcHRQdHIobmV3IEJp
dG1hcFRleHR1cmVQb29sKCkpKQogICAgICwgbV9hY2NlbGVyYXRpb25Nb2RlKGFjY2VsZXJhdGlv
bk1vZGUpCisgICAgLCBtX21hc2tNb2RlKGZhbHNlKQogeyB9CiAKIFRleHR1cmVNYXBwZXI6On5U
ZXh0dXJlTWFwcGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGFkZWFmM2U3MThlMTMyNTAzODI5Yzkw
NGZjMGEyZDI3NTJjNDYxODYuLmFiMzJlNjliMTI3NGNhMzk4MWFlMDM5OTE1YjkzNzQ0NjRiYzM5
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wZiwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUgPSAwLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4w
ZiwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBDb2xvciYpID0gMDsKIAogICAgIC8vIG1ha2VzIGEgc3VyZmFjZSB0aGUg
dGFyZ2V0IGZvciB0aGUgZm9sbG93aW5nIGRyYXdUZXh0dXJlIGNhbGxzLgpAQCAtMTUzLDYgKzE1
Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQYWludEZsYWdz
ID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CiAKKyAgICB2b2lk
IHNldE1hc2tNb2RlKGJvb2wgbSkgeyBtX21hc2tNb2RlID0gbTsgfQorCiAgICAgdmlydHVhbCBJ
bnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYp
OwpAQCAtMTY2LDYgKzE2OCw4IEBAIHByb3RlY3RlZDoKIAogICAgIEdyYXBoaWNzQ29udGV4dCog
bV9jb250ZXh0OwogCisgICAgYm9vbCBpc0luTWFza01vZGUoKSBjb25zdCB7IHJldHVybiBtX21h
c2tNb2RlOyB9CisKIHByaXZhdGU6CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+IHBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQo
KTsKQEAgLTE3OSw2ICsxODMsNyBAQCBwcml2YXRlOgogICAgIFRleHREcmF3aW5nTW9kZUZsYWdz
IG1fdGV4dERyYXdpbmdNb2RlOwogICAgIE93blB0cjxCaXRtYXBUZXh0dXJlUG9vbD4gbV90ZXh0
dXJlUG9vbDsKICAgICBBY2NlbGVyYXRpb25Nb2RlIG1fYWNjZWxlcmF0aW9uTW9kZTsKKyAgICBi
b29sIG1fbWFza01vZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaAppbmRleCA2YmZiM2YxY2ZlNWIyZTE2NmM4MTNjMDMzZGFhZTY4YTE1MWRlZjdkLi5jNjAw
YWEyZTFiZDJmMTczN2EyOTc5OGUzNzYzNzZkMmQ1ZTk5YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXll
cjsKIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmU+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdS
ZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRDb3VudCAqLywgY29u
c3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
IHsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcAppbmRleCAzY2RkYzkzNjMxMTAzY2U4Nzc3YTQ1MzE4OWZlOGE3OGJi
YzgxNjgxLi40YTk2ZGFkMGM5NWQ1MjUyYzVjNWRiODU2YTE1YzViZjIyMjgyZGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQ
b2luCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBhY3F1aXJlVGV4dHVyZUZy
b21Qb29sKHNpemUpOwogICAgIGNvbnN0IHVjaGFyKiBiaXRzID0gaW1hZ2UuYml0cygpOwogICAg
IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpLT51cGRhdGVDb250
ZW50c05vU3dpenpsZShiaXRzLCBzb3VyY2VSZWN0LCBJbnRQb2ludDo6emVybygpLCBpbWFnZS5i
eXRlc1BlckxpbmUoKSk7Ci0gICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3QsIG1v
ZGVsVmlld01hdHJpeCwgMS4wZiwgMCwgQWxsRWRnZXMpOworICAgIGRyYXdUZXh0dXJlKCp0ZXh0
dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIEFsbEVkZ2VzKTsKIAogI2Vs
aWYgVVNFKENBSVJPKQogICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0cmluZzo6bnVtYmVy
KG51bWJlcikuYXNjaWkoKTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJH
TDo6ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0
UG9pbgogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJpdHMgPSBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9kYXRhKHN1cmZhY2UpOwogICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9zdHJpZGUoc3VyZmFjZSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4o
dGV4dHVyZS5nZXQoKSktPnVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGJpdHMsIHNvdXJjZVJlY3Qs
IEludFBvaW50Ojp6ZXJvKCksIHN0cmlkZSk7Ci0gICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRh
cmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgMS4wZiwgMCwgQWxsRWRnZXMpOworICAgIGRyYXdU
ZXh0dXJlKCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIEFsbEVk
Z2VzKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKICAgICBjYWlyb19k
ZXN0cm95KGNyKTsKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UG9pbgog
I2VuZGlmCiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShjb25zdCBCaXRt
YXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRl
eHR1cmUqIG1hc2ssIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0
IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBpZiAoIXRleHR1cmUuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC00MDMsMjAgKzQwMywxNyBAQCB2b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYgdGV4dHVyZSwgY29u
c3QgRmxvYXRSZWN0JgogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBCaXRtYXBUZXh0dXJl
R0wmIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHRleHR1
cmUpOwotICAgIGRyYXdUZXh0dXJlKHRleHR1cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFxdWUo
KSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4
LCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgIGRyYXdUZXh0dXJlKHRleHR1cmVH
TC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVyZUdM
LnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBleHBvc2VkRWRnZXMpOwogfQog
Ci12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVu
c2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0
dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2Vk
RWRnZXMpCiB7CiAgICAgYm9vbCB1c2VSZWN0ID0gZmxhZ3MgJiBTaG91bGRVc2VBUkJUZXh0dXJl
UmVjdDsKLSAgICBib29sIG1hc2tlZCA9ICEhbWFza1RleHR1cmU7CiAgICAgYm9vbCB1c2VBbnRp
YWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZwogICAgICAgICAmJiBl
eHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKICAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5tYXBR
dWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKIAogICAgIFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
VGV4dHVyZTsKLSAgICBpZiAobWFza2VkKQotICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpNYXNrOwogICAgIGlmICh1c2VSZWN0KQogICAgICAgICBvcHRpb25z
IHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0OwogICAgIGlmIChvcGFjaXR5IDwg
MSkKQEAgLTQyNiwxMiArNDIzLDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVy
ZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJCiAgICAgICAg
IGZsYWdzIHw9IFNob3VsZEFudGlhbGlhczsKICAgICB9CiAKLSAgICBpZiAobWFza2VkIHx8IHVz
ZUFudGlhbGlhc2luZyB8fCBvcGFjaXR5IDwgMSkKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nIHx8
IG9wYWNpdHkgPCAxKQogICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKIAogICAgIFJlZlB0
cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsKICAgICBwcm9ncmFtID0gZGF0
YSgpLnNoYXJlZEdMRGF0YSgpLmdldFNoYWRlclByb2dyYW0ob3B0aW9ucyk7Ci0gICAgZHJhd1Rl
eHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdzLCB0ZXh0
dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4dHVy
ZSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1
cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFj
aXR5KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29uc3Qg
Q29sb3ImIGNvbG9yKQpAQCAtNTA0LDExICs1MDEsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6
OmRyYXcoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bW8KICAgICBzaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgoc2hhZGVyUHJvZ3JhbS0+bW9kZWxWaWV3
TWF0cml4TG9jYXRpb24oKSwgbWF0cml4KTsKICAgICBzaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgo
c2hhZGVyUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCksIGRhdGEoKS5wcm9qZWN0
aW9uTWF0cml4KTsKIAotICAgIGlmIChmbGFncyAmIFNob3VsZEJsZW5kKSB7Ci0gICAgICAgIG1f
Y29udGV4dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250
ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpOworICAgIGlmIChpc0luTWFza01vZGUoKSkgewor
ICAgICAgICBtX2NvbnRleHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpaRVJPLCBH
cmFwaGljc0NvbnRleHQzRDo6U1JDX0FMUEhBKTsKICAgICAgICAgbV9jb250ZXh0M0QtPmVuYWJs
ZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOwotICAgIH0gZWxzZQotICAgICAgICBtX2NvbnRl
eHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChmbGFncyAmIFNob3VsZEJsZW5kKSB7CisgICAgICAgICAgICBtX2NvbnRleHQz
RC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNEOjpP
TkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5lbmFibGUoR3Jh
cGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2Nv
bnRleHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOworICAgIH0KIAogICAg
IGlmIChmbGFncyAmIFNob3VsZEFudGlhbGlhcykKICAgICAgICAgZHJhd0VkZ2VUcmlhbmdsZXMo
c2hhZGVyUHJvZ3JhbSk7CkBAIC01MTYsOCArNTE4LDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vCiAgICAgICAgIGRyYXdVbml0UmVjdChzaGFkZXJQcm9ncmFtLCBkcmF3aW5nTW9kZSk7CiAK
ICAgICBtX2NvbnRleHQzRC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlclByb2dyYW0t
PnZlcnRleExvY2F0aW9uKCkpOworICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3ND
b250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpOwor
ICAgIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKIH0KLXZv
aWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdz
LCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJp
dG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1Rl
eHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9ncmFt
LCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFtKHBy
b2dyYW0tPnByb2dyYW1JRCgpKTsKICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwpAQCAtNTMzLDE5ICs1MzgsMTAgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbSogcHIKICAgICBpZiAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkKICAgICAg
ICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLTEpOwogCi0KICAgICBwcm9ncmFtLT5z
ZXRNYXRyaXgocHJvZ3JhbS0+dGV4dHVyZVNwYWNlTWF0cml4TG9jYXRpb24oKSwgcGF0dGVyblRy
YW5zZm9ybSk7CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFtLT5vcGFjaXR5TG9j
YXRpb24oKSwgb3BhY2l0eSk7CiAKLSAgICBpZiAobWFza1RleHR1cmUgJiYgbWFza1RleHR1cmUt
PmlzVmFsaWQoKSkgewotICAgICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wqIG1hc2tUZXh0dXJl
R0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wqPihtYXNrVGV4dHVyZSk7Ci0g
ICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbWFza1RleHR1cmVHTC0+aWQoKSk7Ci0gICAgICAgIG1fY29udGV4dDNE
LT51bmlmb3JtMWkocHJvZ3JhbS0+bWFza0xvY2F0aW9uKCksIDEpOwotICAgICAgICBtX2NvbnRl
eHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAgIH0K
LQotICAgIGlmIChvcGFjaXR5IDwgMSB8fCBtYXNrVGV4dHVyZSkKKyAgICBpZiAob3BhY2l0eSA8
IDEpCiAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgZHJhdyhyZWN0LCBtb2Rl
bFZpZXdNYXRyaXgsIHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIGZs
YWdzKTsKQEAgLTk0Myw3ICs5MzksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0ZpbHRl
cmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNhbXBsZXIsIGNvbnN0IEJpdG1hcFRleAogCiAgICAg
cHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgZmlsdGVyLCBwYXNzLCBzYW1wbGVy
LmNvbnRlbnRTaXplKCksIHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KGNvbnRl
bnRUZXh0dXJlKS5pZCgpKTsKICAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdChJbnRQb2ludDo6emVy
bygpLCBzYW1wbGVyLmNvbnRlbnRTaXplKCkpOwotICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJv
Z3JhbShwcm9ncmFtLmdldCgpLCBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wmPihz
YW1wbGVyKS5pZCgpLCAwLCBJbnRTaXplKDEsIDEpLCB0YXJnZXRSZWN0LCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCAxLCAwKTsKKyAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3Jh
bS5nZXQoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oc2FtcGxlcikuaWQo
KSwgMCwgSW50U2l6ZSgxLCAxKSwgdGFyZ2V0UmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
MSk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBs
eUZpbHRlcnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQml0bWFwVGV4dHVy
ZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmgKaW5kZXggM2U4MGExNzgyZWMxNDg5MWZkN2JjY2MyZTk5MDkzYjk2ZGRkZTMx
NS4uYTQyMzQxZmYzNDE3ZDJkZmRhNGFjNTAxOGIwYWQ4YTMwYzQwOGI3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGV4dHVyZU1hcHBlciBp
bXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9yJiwg
ZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOdW1iZXIoaW50IG51bWJl
ciwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0
bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2ln
bmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJl
KFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVT
aXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUq
IG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAgdmly
dHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVk
IGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9
IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2Up
IE9WRVJSSURFOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBUZXh0dXJlTWFw
cGVyR0woKTsKIAotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVy
ZSk7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRy
aXgsIGZsb2F0IG9wYWNpdHkpOwogICAgIHZvaWQgZHJhdyhjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdpbmdNb2RlLCBGbGFncyk7CiAKICAgICB2b2lkIGRy
YXdVbml0UmVjdChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdpbmdN
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKaW5kZXggMWU0OWY5
YjZlY2E4OGQ2YTdjZmQ5MzE5MTIyMmMwNDgxMTAzOWQ3NS4uNTJhODQ4NzkyZDZmZjY2ZTY0Nzlh
YWRhMjUxNDI4MTM5ODZhNWQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZl
ci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6
YmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbgogI2VuZGlm
CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBC
aXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1h
cFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCAvKiBleHBvc2VkRWRnZXMgKi8pCit2b2lk
IFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVy
ZSYgdGV4dHVyZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCAvKiBleHBvc2VkRWRn
ZXMgKi8pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gY3VycmVudENvbnRleHQo
KTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0xMjIsMjIgKzEyMiw4IEBAIHZvaWQgVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJl
LCBjb25zdCBGCiAKICAgICBjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXImIHRleHR1cmVJ
bWFnZUJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlciY+
KHRleHR1cmUpOwogICAgIEltYWdlQnVmZmVyKiBpbWFnZSA9IHRleHR1cmVJbWFnZUJ1ZmZlci5t
X2ltYWdlLmdldCgpOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza2VkSW1hZ2U7Ci0KLSAg
ICBpZiAobWFza1RleHR1cmUgJiYgbWFza1RleHR1cmUtPmlzVmFsaWQoKSkgewotICAgICAgICBj
b25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIqIG1hc2sgPSBzdGF0aWNfY2FzdDxjb25zdCBC
aXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIqPihtYXNrVGV4dHVyZSk7Ci0gICAgICAgIG1hc2tlZElt
YWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtYXNrVGV4dHVyZS0+Y29udGVudFNpemUoKSk7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0NvbnRleHQgPSBtYXNrZWRJbWFnZS0+Y29udGV4
dCgpOwotICAgICAgICBtYXNrQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludDo6emVybygpLCBDb21wb3NpdGVDb3B5KTsKLSAgICAgICAg
aWYgKG9wYWNpdHkgPCAxKSB7Ci0gICAgICAgICAgICBtYXNrQ29udGV4dC0+c2V0QWxwaGEob3Bh
Y2l0eSk7Ci0gICAgICAgICAgICBvcGFjaXR5ID0gMTsKLSAgICAgICAgfQotICAgICAgICBtYXNr
Q29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2stPm1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIEludFBvaW50Ojp6ZXJvKCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwotICAg
ICAgICBpbWFnZSA9IG1hc2tlZEltYWdlLmdldCgpOwotICAgIH0KLQogICAgIGNvbnRleHQtPnNh
dmUoKTsKKyAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oaXNJbk1hc2tNb2RlKCkg
PyBDb21wb3NpdGVEZXN0aW5hdGlvbkluIDogQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgY29u
dGV4dC0+c2V0QWxwaGEob3BhY2l0eSk7CiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykKICAgICBj
b250ZXh0LT5jb25jYXQzRFRyYW5zZm9ybShtYXRyaXgpOwpAQCAtMTU1LDYgKzE0MSw3IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IFRyYW5zCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnRleHQtPnNh
dmUoKTsKKyAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oaXNJbk1hc2tNb2RlKCkg
PyBDb21wb3NpdGVEZXN0aW5hdGlvbkluIDogQ29tcG9zaXRlU291cmNlT3Zlcik7CiAjaWYgRU5B
QkxFKDNEX1JFTkRFUklORykKICAgICBjb250ZXh0LT5jb25jYXQzRFRyYW5zZm9ybShtYXRyaXgp
OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAppbmRleCA4MGU2OTQ0
MDU5MDU0NzYwN2U3MDMyNjFlNzkzMTU1ZGRlM2MyMGQ1Li4zNWYyYjQ0OWQ5NmRjMGJjOWI3YjBh
ZjE5OGFjMDQwY2Q5NGQ2ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5o
CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxlbWVu
dGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25z
dCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0
dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1
bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4
dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9z
ZWRFZGdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJp
bmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpIE9WRVJSSURFIHsgbV9jdXJyZW50U3Vy
ZmFjZSA9IHN1cmZhY2U7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4YTJjYzk5
MmI3MTEwNjY2MTA3YzFiZTAzMTNiYTRhZjk2YzZmYmFmLi4wYmU0OTZjZDk4ZTM4ZTFiN2I4OTk1
MmQwODliOThmZDY1ZWE1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjAs
NiArMjAsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJM
YXllci5oIgogCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI3LDcgKzI5LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyB7CiBwdWJsaWM6
CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2U7Ci0gICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IG1hc2s7CiAgICAgZmxvYXQgb3BhY2l0eTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB0cmFuc2Zvcm07CiAgICAgSW50U2l6ZSBvZmZzZXQ7CkBAIC0xMDgsOCArMTA5LDYgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zJiBvcHRpb25zKQogICAgIHRyYW5zZm9ybS5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zv
cm0uY29tYmluZWQoKSk7CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5vcGFjaXR5Owot
ICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrID0gb3B0aW9ucy5tYXNrOwotCiAgICAgaWYg
KG1fc3RhdGUuc29saWRDb2xvci5pc1ZhbGlkKCkgJiYgIW1fc3RhdGUuY29udGVudHNSZWN0Lmlz
RW1wdHkoKSkgewogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9y
KG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIGJsZW5kV2l0aE9wYWNpdHkobV9zdGF0
ZS5zb2xpZENvbG9yLCBvcGFjaXR5KSk7CiAgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0Jv
cmRlcnMpCkBAIC0xMjAsNyArMTE5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50
U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgIGlmICht
X2JhY2tpbmdTdG9yZSkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZS5kcmF3c0NvbnRlbnQgJiYg
bV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc3RhdGUuc2l6ZS5pc0VtcHR5KCkpOwogICAg
ICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fYmFja2luZ1N0
b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVyUmVj
dCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAgICAgICBtX2JhY2tpbmdT
dG9yZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBsYXllclJl
Y3QoKSwgdHJhbnNmb3JtLCBvcGFjaXR5KTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0RlYnVn
Qm9yZGVycykKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kcmF3Qm9yZGVyKG9wdGlvbnMu
dGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVnQm9y
ZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAgICAgICAvLyBPbmx5IGRyYXcg
cmVwYWludCBjb3VudCBmb3IgdGhlIG1haW4gYmFja2luZyBzdG9yZS4KQEAgLTEzMCw3ICsxMjks
NyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBw
ZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAKICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAg
ICAgICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9jb250ZW50
c0xheWVyLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3Rh
dGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1h
cHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiAgICAgICAg
IGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCiAgICAgICAgICAgICBtX2NvbnRlbnRzTGF5
ZXItPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmRlYnVnQm9yZGVy
Q29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRy
YW5zZm9ybSk7CiAgICAgfQpAQCAtMTY2LDgyICsxNjUsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMmIG8KICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7CiB9CiAKLUlu
dFJlY3QgVGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpCi17Ci0g
ICAgLy8gRklYTUU6IEFkZCBhbiBpbnZlcnNlIHRyYW5zZm9ybSB0byBMYXllclRyYW5zZm9ybS4K
LSAgICByZXR1cm4gaW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobV9jdXJyZW50VHJhbnNmb3JtLmNv
bWJpbmVkKCkuaW52ZXJzZSgpKTsKLX0KLQotSW50UmVjdCBUZXh0dXJlTWFwcGVyTGF5ZXI6Omlu
dGVybWVkaWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgp
Ci17Ci0gICAgSW50UmVjdCByZWN0OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxvY2FsVHJh
bnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KS5tdWx0aXBseShtX2N1cnJlbnRU
cmFuc2Zvcm0uY29tYmluZWQoKSk7Ci0gICAgcmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobG9jYWxU
cmFuc2Zvcm0ubWFwUmVjdChsYXllclJlY3QoKSkpOwotICAgIGlmICghbV9zdGF0ZS5tYXNrc1Rv
Qm91bmRzICYmICFtX3N0YXRlLm1hc2tMYXllcikgewotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICByZWN0LnVuaXRlKG1f
Y2hpbGRyZW5baV0tPmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KG1hdHJpeCkpOwotICAgIH0KLQot
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBpZiAobV9jdXJyZW50RmlsdGVycy5oYXNPdXRz
ZXRzKCkpIHsKLSAgICAgICAgRmlsdGVyT3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50RmlsdGVy
cy5vdXRzZXRzKCk7Ci0gICAgICAgIEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QocmVjdCk7
Ci0gICAgICAgIHJlY3QubW92ZShzdGQ6Om1heCgwLCAtb3V0c2V0cy5sZWZ0KCkpLCBzdGQ6Om1h
eCgwLCAtb3V0c2V0cy50b3AoKSkpOwotICAgICAgICByZWN0LmV4cGFuZChvdXRzZXRzLmxlZnQo
KSArIG91dHNldHMucmlnaHQoKSwgb3V0c2V0cy50b3AoKSArIG91dHNldHMuYm90dG9tKCkpOwot
ICAgICAgICByZWN0LnVuaXRlKHVuZmlsdGVyZWRUYXJnZXRSZWN0KTsKLSAgICB9Ci0jZW5kaWYK
LQotICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikKLSAgICAgICAgcmVjdC51bml0ZShtX3N0
YXRlLnJlcGxpY2FMYXllci0+aW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobWF0cml4KSk7Ci0KLSAg
ICByZXR1cm4gcmVjdDsKLX0KLQotVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c0xheWVyQ291
bnQgVGV4dHVyZU1hcHBlckxheWVyOjpjb3VudFBvdGVudGlhbExheWVyc1dpdGhDb250ZW50cygp
IGNvbnN0Citib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c2hvdWxkQmxlbmQoKSBjb25zdAogewot
ICAgIGludCBzZWxmTGF5ZXJzV2l0aENvbnRlbnRzID0gKG1fc3RhdGUuZHJhd3NDb250ZW50ID8g
MSA6IDApICsgKG1fY29udGVudHNMYXllciA/IDEgOiAwKTsKLSAgICBpbnQgcG90ZW50aWFsTGF5
ZXJzV2l0aENvbnRlbnRzID0gc2VsZkxheWVyc1dpdGhDb250ZW50cyArIG1fY2hpbGRyZW4uc2l6
ZSgpOwotCi0gICAgaWYgKCFwb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMpCi0gICAgICAgIHJl
dHVybiBOb0xheWVyc1dpdGhDb250ZW50OwotCi0gICAgaWYgKHBvdGVudGlhbExheWVyc1dpdGhD
b250ZW50cyA+IDEpCi0gICAgICAgIHJldHVybiBNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50czsK
LQotICAgIGlmIChtX2NoaWxkcmVuLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFNpbmdsZUxh
eWVyV2l0aENvbnRlbnRzOwotCi0gICAgcmV0dXJuIG1fY2hpbGRyZW4uZmlyc3QoKS0+Y291bnRQ
b3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMoKTsKLX0KKyAgICBpZiAobV9zdGF0ZS5wcmVzZXJ2
ZXMzRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1ib29sIFRleHR1cmVNYXBwZXJMYXllcjo6
c2hvdWxkUGFpbnRUb0ludGVybWVkaWF0ZVN1cmZhY2UoKSBjb25zdAotewogI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKICAgICBpZiAobV9jdXJyZW50RmlsdGVycy5zaXplKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogI2VuZGlmCi0gICAgYm9vbCBoYXNPcGFjaXR5ID0gbV9jdXJyZW50T3BhY2l0
eSA8IDAuOTk7Ci0gICAgYm9vbCBjYW5IYXZlTXVsdGlwbGVMYXllcnNXaXRoQ29udGVudCA9IGNv
dW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgPT0gTXVsdGlwbGVMYXllcnNXaXRoQ29u
dGVudHM7Ci0gICAgYm9vbCBoYXNSZXBsaWNhID0gISFtX3N0YXRlLnJlcGxpY2FMYXllcjsKLSAg
ICBib29sIGhhc01hc2sgPSAhIW1fc3RhdGUubWFza0xheWVyOwotCi0gICAgLy8gV2UgZG9uJ3Qg
dXNlIHR3by1wYXNzIGJsZW5kaW5nIGZvciBwcmVzZXJ2ZXMtM2QsIHRoYXQncyBpbiBzeW5jIHdp
dGggU2FmYXJpLgotICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAvLyBXZSBzaG91bGQgdXNlIGFuIGludGVybWVkaWF0ZSBzdXJmYWNlIHdo
ZW4gYmxlbmRpbmcgc2V2ZXJhbCBpdGVtcyB3aXRoIGFuIGFuY2VzdG9yIG9wYWNpdHkuCi0gICAg
Ly8gVGVzdGVkIGJ5IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb3BhY2l0eS5o
dG1sCi0gICAgaWYgKGhhc09wYWNpdHkgJiYgKGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250
ZW50IHx8IGhhc1JlcGxpY2EpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdlIHNo
b3VsZCB1c2UgYW4gaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd2l0aCBhIG1hc2tlZCBhbmNlc3Rvci4K
LSAgICAvLyBJbiB0aGUgY2FzZSBvZiByZXBsaWNhcyB0aGUgbWFzayBpcyBhcHBsaWVkIGJlZm9y
ZSByZXBsaWNhdGluZy4KLSAgICAvLyBUZXN0ZWQgYnkgY29tcG9zaXRpbmcvbWFza3MvbWFza2Vk
LWFuY2VzdG9yLmh0bWwKLSAgICBpZiAoaGFzTWFzayAmJiBjYW5IYXZlTXVsdGlwbGVMYXllcnNX
aXRoQ29udGVudCAmJiAhaGFzUmVwbGljYSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY3VycmVudE9wYWNpdHkgPCAxIHx8IG1fc3RhdGUu
bWFza0xheWVyIHx8IChtX3N0YXRlLnJlcGxpY2FMYXllciAmJiBtX3N0YXRlLnJlcGxpY2FMYXll
ci0+bV9zdGF0ZS5tYXNrTGF5ZXIpOwogfQogCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6aXNW
aXNpYmxlKCkgY29uc3QKQEAgLTI2MSwxMSArMTk0LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4dHVyZU1hcHBlclBh
aW4KIHsKICAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKICAgICAgICAgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyByZXBsaWNhT3B0aW9ucyhvcHRpb25zKTsKLSAgICAgICAgLy8gV2Ug
Y2hvb3NlIGVpdGhlciB0aGUgY29udGVudCdzIG1hc2sgb3IgdGhlIHJlcGxpY2EncyBtYXNrLgot
ICAgICAgICAvLyBGSVhNRTogYmxlbmQgdGhlIHR3byBpZiBib3RoIGV4aXN0LgotICAgICAgICBp
ZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyKQotICAgICAgICAgICAg
cmVwbGljYU9wdGlvbnMubWFzayA9IG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1hc2tM
YXllci0+dGV4dHVyZSgpOwotCiAgICAgICAgIHJlcGxpY2FPcHRpb25zLnRyYW5zZm9ybQogICAg
ICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zv
cm0uY29tYmluZWQoKSkKICAgICAgICAgICAgIC5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zvcm0u
Y29tYmluZWQoKS5pbnZlcnNlKCkpOwpAQCAtMjg1LDYgKzIxMywxMSBAQCB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiAgICAgbV9jdXJy
ZW50T3BhY2l0eSA9IG9wYWNpdHk7CiB9CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVN
YXBwZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSgpCit7CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0
aW9uTWF0cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmlu
ZWQoKSkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsK
K30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKQEAg
LTMwNyw3ICsyNDAsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRLZWVwQ29udGVudFRleHR1cmUoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBCaXRtYXBU
ZXh0dXJlKiBzb3VyY2UsIEludFJlY3QmIHRhcmdldFJlY3QpCitzdGF0aWMgUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgQml0bWFwVGV4dHVyZSogc291cmNlKQog
ewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCiAgICAgICAgIHJldHVybiBzb3VyY2U7CkBAIC0z
MTcsNTEgKzI1MCwxODQgQEAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIFQKIH0KICNlbmRpZgogCi12
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBl
clBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyB2b2lkIHJlc29sdmVPdmVybGFwcyhSZWdp
b24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lvbiwgUmVnaW9uIG5ld1Jl
Z2lvbikKIHsKLSAgICBpZiAoIWlzVmlzaWJsZSgpKQorICAgIFJlZ2lvbiBuZXdPdmVybGFwUmVn
aW9uKG5ld1JlZ2lvbik7CisgICAgbmV3T3ZlcmxhcFJlZ2lvbi5pbnRlcnNlY3Qobm9uT3Zlcmxh
cFJlZ2lvbik7CisgICAgbm9uT3ZlcmxhcFJlZ2lvbi5zdWJ0cmFjdChuZXdPdmVybGFwUmVnaW9u
KTsKKyAgICBvdmVybGFwUmVnaW9uLnVuaXRlKG5ld092ZXJsYXBSZWdpb24pOworICAgIG5ld1Jl
Z2lvbi5zdWJ0cmFjdChvdmVybGFwUmVnaW9uKTsKKyAgICBub25PdmVybGFwUmVnaW9uLnVuaXRl
KG5ld1JlZ2lvbik7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlT3Zlcmxh
cFJlZ2lvbnMoUmVnaW9uJiBvdmVybGFwUmVnaW9uLCBSZWdpb24mIG5vbk92ZXJsYXBSZWdpb24s
IGJvb2wgYWx3YXlzUmVzb2x2ZVNlbGZPdmVybGFwKQoreworICAgIGlmICghbV9zdGF0ZS52aXNp
YmxlIHx8ICFtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
ZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eSAqIG1fY3VycmVudE9wYWNpdHk7Ci0gICAg
UmVmUHRyPEJpdG1hcFRleHR1cmU+IG1hc2tUZXh0dXJlID0gbV9zdGF0ZS5tYXNrTGF5ZXIgPyBt
X3N0YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpIDogMDsKKyAgICBGbG9hdFJlY3QgYm91bmRpbmdS
ZWN0OworICAgIGlmIChtX2JhY2tpbmdTdG9yZSB8fCBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgfHwg
bV9zdGF0ZS5tYXNrTGF5ZXIgfHwgaGFzRmlsdGVycygpKQorICAgICAgICBib3VuZGluZ1JlY3Qg
PSBsYXllclJlY3QoKTsKKyAgICBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIgfHwgbV9zdGF0ZS5z
b2xpZENvbG9yLmFscGhhKCkpCisgICAgICAgIGJvdW5kaW5nUmVjdCA9IG1fc3RhdGUuY29udGVu
dHNSZWN0OwogCi0gICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMob3B0
aW9ucyk7Ci0gICAgcGFpbnRPcHRpb25zLm1hc2sgPSBtYXNrVGV4dHVyZS5nZXQoKTsKKyNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgaWYgKG1fY3VycmVudEZpbHRlcnMuaGFzT3V0c2V0cygp
KSB7CisgICAgICAgIEZpbHRlck91dHNldHMgb3V0c2V0cyA9IG1fY3VycmVudEZpbHRlcnMub3V0
c2V0cygpOworICAgICAgICBJbnRSZWN0IHVuZmlsdGVyZWRUYXJnZXRSZWN0KGJvdW5kaW5nUmVj
dCk7CisgICAgICAgIGJvdW5kaW5nUmVjdC5tb3ZlKHN0ZDo6bWF4KDAsIC1vdXRzZXRzLmxlZnQo
KSksIHN0ZDo6bWF4KDAsIC1vdXRzZXRzLnRvcCgpKSk7CisgICAgICAgIGJvdW5kaW5nUmVjdC5l
eHBhbmQob3V0c2V0cy5sZWZ0KCkgKyBvdXRzZXRzLnJpZ2h0KCksIG91dHNldHMudG9wKCkgKyBv
dXRzZXRzLmJvdHRvbSgpKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHVuZmlsdGVyZWRU
YXJnZXRSZWN0KTsKKyAgICB9CisjZW5kaWYKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJl
cGxpY2FNYXRyaXg7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAgIHJl
cGxpY2FNYXRyaXggPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIGJvdW5kaW5nUmVjdC51
bml0ZShyZXBsaWNhTWF0cml4Lm1hcFJlY3QoYm91bmRpbmdSZWN0KSk7CisgICAgfQogCi0gICAg
aWYgKCFzaG91bGRQYWludFRvSW50ZXJtZWRpYXRlU3VyZmFjZSgpKSB7Ci0gICAgICAgIHBhaW50
T3B0aW9ucy5vcGFjaXR5ID0gb3BhY2l0eTsKLSAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5X
aXRoUmVwbGljYShwYWludE9wdGlvbnMpOworICAgIGJvdW5kaW5nUmVjdCA9IG1fY3VycmVudFRy
YW5zZm9ybS5jb21iaW5lZCgpLm1hcFJlY3QoYm91bmRpbmdSZWN0KTsKKworICAgIC8vIENvdW50
IGFsbCBtYXNrcyBhbmQgZmlsdGVycyBhcyBvdmVybGFwIGxheWVycy4KKyAgICBpZiAoaGFzRmls
dGVycygpIHx8IG1fc3RhdGUubWFza0xheWVyIHx8IChtX3N0YXRlLnJlcGxpY2FMYXllciAmJiBt
X3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpKSB7CisgICAgICAgIFJlZ2lv
biBuZXdPdmVybGFwUmVnaW9uKGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0KSk7CisgICAg
ICAgIG5vbk92ZXJsYXBSZWdpb24uc3VidHJhY3QobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgICAg
IG92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICAvLyBQcmVwYXJlIGEgc3VyZmFjZSB0byBwYWludCBpbnRvLgotICAgIC8v
IFdlIHBhaW50IGludG8gdGhlIHN1cmZhY2UgaWdub3JpbmcgdGhlIG9wYWNpdHkvdHJhbnNmb3Jt
IG9mIHRoZSBjdXJyZW50IGxheWVyLgotICAgIEludFJlY3Qgc3VyZmFjZVJlY3QgPSBpbnRlcm1l
ZGlhdGVTdXJmYWNlUmVjdCgpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlID0g
b3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHN1cmZhY2VSZWN0
LnNpemUoKSk7Ci0gICAgcGFpbnRPcHRpb25zLnN1cmZhY2UgPSBzdXJmYWNlOwotICAgIG9wdGlv
bnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7Ci0gICAgcGFpbnRP
cHRpb25zLm9wYWNpdHkgPSAxOworICAgIFJlZ2lvbiBuZXdPdmVybGFwUmVnaW9uOworICAgIFJl
Z2lvbiBuZXdOb25PdmVybGFwUmVnaW9uKGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0KSk7
CisKKyAgICBpZiAoIW1fc3RhdGUubWFza3NUb0JvdW5kcykgeworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRleHR1
cmVNYXBwZXJMYXllciogY2hpbGQgPSBtX2NoaWxkcmVuW2ldOworICAgICAgICAgICAgYm9vbCBh
bHdheXNSZXNvbHZlU2VsZk92ZXJsYXBGb3JDaGlsZHJlbiA9IGZhbHNlOworICAgICAgICAgICAg
Y2hpbGQtPmNvbXB1dGVPdmVybGFwUmVnaW9ucyhuZXdPdmVybGFwUmVnaW9uLCBuZXdOb25PdmVy
bGFwUmVnaW9uLCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXBGb3JDaGlsZHJlbik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKKyAgICAgICAgbmV3
T3ZlcmxhcFJlZ2lvbi51bml0ZShyZXBsaWNhTWF0cml4Lm1hcFJlY3QobmV3T3ZlcmxhcFJlZ2lv
bi5ib3VuZHMoKSkpOworICAgICAgICBSZWdpb24gcmVwbGljYVJlZ2lvbihyZXBsaWNhTWF0cml4
Lm1hcFJlY3QobmV3Tm9uT3ZlcmxhcFJlZ2lvbi5ib3VuZHMoKSkpOworICAgICAgICByZXNvbHZl
T3ZlcmxhcHMobmV3T3ZlcmxhcFJlZ2lvbiwgbmV3Tm9uT3ZlcmxhcFJlZ2lvbiwgcmVwbGljYVJl
Z2lvbik7CisgICAgfQogCi0gICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IG1fY3VycmVudFRy
YW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKLSAgICBwYWludE9wdGlvbnMub2Zmc2V0ID0g
LUludFNpemUoc3VyZmFjZVJlY3QueCgpLCBzdXJmYWNlUmVjdC55KCkpOworICAgIGlmICghYWx3
YXlzUmVzb2x2ZVNlbGZPdmVybGFwICAmJiBzaG91bGRCbGVuZCgpKSB7CisgICAgICAgIG5ld05v
bk92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgICAgIG5ld092ZXJs
YXBSZWdpb24gPSBSZWdpb24oKTsKKyAgICB9CiAKLSAgICBwYWludFNlbGZBbmRDaGlsZHJlbldp
dGhSZXBsaWNhKHBhaW50T3B0aW9ucyk7CisgICAgb3ZlcmxhcFJlZ2lvbi51bml0ZShuZXdPdmVy
bGFwUmVnaW9uKTsKKyAgICByZXNvbHZlT3ZlcmxhcHMob3ZlcmxhcFJlZ2lvbiwgbm9uT3Zlcmxh
cFJlZ2lvbiwgbmV3Tm9uT3ZlcmxhcFJlZ2lvbik7Cit9CiAKLSAgICAvLyBJZiB3ZSBwYWludGVk
IHRoZSByZXBsaWNhLCB0aGUgbWFzayBpcyBhbHJlYWR5IGFwcGxpZWQgc28gd2UgZG9uJ3QgbmVl
ZCB0byBwYWludCBpdCBhZ2Fpbi4KLSAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpCi0gICAg
ICAgIG1hc2tUZXh0dXJlID0gMDsKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFVzaW5n
T3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykK
K3sKKyAgICBSZWdpb24gb3ZlcmxhcFJlZ2lvbjsKKyAgICBSZWdpb24gbm9uT3ZlcmxhcFJlZ2lv
bjsKKyAgICBjb21wdXRlT3ZlcmxhcFJlZ2lvbnMob3ZlcmxhcFJlZ2lvbiwgbm9uT3ZlcmxhcFJl
Z2lvbik7CisgICAgaWYgKG92ZXJsYXBSZWdpb24uaXNFbXB0eSgpKSB7CisgICAgICAgIHBhaW50
U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2Eob3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSBub25PdmVybGFwUmVnaW9uLnJlY3Rz
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgeworICAg
ICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCByZWN0c1tpXSk7CisgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2Eo
b3B0aW9ucyk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZW5kQ2xpcCgpOworICAg
IH0KKworICAgIHJlY3RzID0gb3ZlcmxhcFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCByZWN0ID0g
cmVjdHNbaV07CisgICAgICAgIGNvbnN0IHN0YXRpYyBpbnQgbWF4UmVjdERpbWVuc2lvbiA9IDIw
MDA7CisgICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyB4ICs9
IG1heFJlY3REaW1lbnNpb24pIHsKKyAgICAgICAgICAgIGZvciAoaW50IHkgPSByZWN0LnkoKTsg
eSA8IHJlY3QubWF4WSgpOyB5ICs9IG1heFJlY3REaW1lbnNpb24pIHsKKyAgICAgICAgICAgICAg
ICBJbnRSZWN0IHRpbGVSZWN0KHgsIHksIG1heFJlY3REaW1lbnNpb24sIG1heFJlY3REaW1lbnNp
b24pOworICAgICAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChyZWN0KTsKKyAgICAgICAg
ICAgICAgICBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKG9wdGlvbnMsIHRpbGVSZWN0KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KIAordm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25z
KQoreworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFza01vZGUodHJ1ZSk7CisgICAg
cGFpbnRTZWxmKG9wdGlvbnMpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFza01v
ZGUoZmFsc2UpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29s
KHNpemUpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5n
ZXQoKSk7CisgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucyk7CisgICAgaWYgKG1fc3Rh
dGUubWFza0xheWVyKQorICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNrKG9wdGlv
bnMpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBzdXJmYWNlID0gYXBwbHlGaWx0ZXJz
KG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5nZXQoKSwg
c3VyZmFjZVJlY3QpOworICAgIGlmICghbV9jdXJyZW50RmlsdGVycy5pc0VtcHR5KCkpCisgICAg
ICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9jdXJyZW50RmlsdGVycywgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLCBzdXJmYWNlLmdldCgpKTsKICNlbmRpZgorICAgIG9wdGlvbnMudGV4dHVyZU1h
cHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CisgICAgcmV0dXJuIHN1cmZhY2U7Cit9
CiAKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbW1pdFN1cmZhY2UoY29uc3Qg
VGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQorewogICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNlLmdldCgp
KTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAgdGFyZ2V0
VHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25zLm9mZnNl
dC5oZWlnaHQoKSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMudHJhbnNm
b3JtKTsKLSAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNv
bWJpbmVkKCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1cmZh
Y2UuZ2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CisgICAgcmV0dXJuIDA7
Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJm
YWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FTdXJmYWNlOwor
ICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYWluU3VyZmFjZTsKKyAgICBUZXh0dXJlTWFwcGVy
UGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKKyAgICBwYWludE9wdGlvbnMub2Zm
c2V0ID0gLUludFNpemUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICBwYWludE9wdGlvbnMub3Bh
Y2l0eSA9IDE7CisgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0
cml4KCk7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAgIHBhaW50T3B0
aW9ucy50cmFuc2Zvcm0gPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIHJlcGxpY2FTdXJm
YWNlID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJlY3Quc2l6ZSgpKTsKKyAgICAg
ICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisgICAg
ICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCisgICAgICAg
ICAgICBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5TWFzayhw
YWludE9wdGlvbnMpOworICAgIH0KIAotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1Rl
eHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9wYWNp
dHksIG1hc2tUZXh0dXJlLmdldCgpKTsKKyAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYgb3B0aW9u
cy5vcGFjaXR5ID09IDEpCisgICAgICAgIHJlcGxpY2FTdXJmYWNlID0gY29tbWl0U3VyZmFjZShv
cHRpb25zLCByZXBsaWNhU3VyZmFjZSwgcmVjdCwgMSk7CisKKyAgICBtYWluU3VyZmFjZSA9IHBh
aW50SW50b1N1cmZhY2UocGFpbnRPcHRpb25zLCByZWN0LnNpemUoKSk7CisgICAgaWYgKHJlcGxp
Y2FTdXJmYWNlKSB7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uo
cmVwbGljYVN1cmZhY2UuZ2V0KCkpOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRy
YXdUZXh0dXJlKCptYWluU3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8o
KSwgcmVjdC5zaXplKCkpKTsKKyAgICAgICAgbWFpblN1cmZhY2UgPSByZXBsaWNhU3VyZmFjZTsK
KyAgICB9CisKKyAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIG1haW5TdXJmYWNlLCByZWN0LCBv
cHRpb25zLm9wYWNpdHkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1
cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBp
ZiAoIWlzVmlzaWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3VsZEJsZW5k
KCkpIHsKKyAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShvcHRpb25zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMg
cGFpbnRPcHRpb25zKG9wdGlvbnMpOworICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0gb3B0aW9u
cy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKKyAgICBwYWludFVzaW5nT3ZlcmxhcFJlZ2lv
bnMocGFpbnRPcHRpb25zKTsKIH0KIAogVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVyZU1hcHBl
ckxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2MWZiODI3NjcwODYwM2UxMTBm
YWNlZDQxODlkYjdkYTBiYzAzMWZhLi42MDJiMmMzOTQxNTUyZTViZDFlNGZhMWFiYzgzZDkyY2Mw
NjA0ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0zMSw2ICszMSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVnaW9uOwogY2xhc3MgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwogCkBAIC03Myw2
ICs3NCwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZvaWQgc2V0
RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKKworICAgIGJvb2wgaGFz
RmlsdGVycygpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICAgICAg
cmV0dXJuICFtX2N1cnJlbnRGaWx0ZXJzLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgc2V0RGVidWdWaXN1YWxzKGJvb2wg
c2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZsb2F0IGRl
YnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKICAgICB2b2lkIHNldFJl
cGFpbnRDb3VudChpbnQpOwogICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllciopOwpAQCAtOTIsOCArMTAzLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OwogICAgIHZvaWQg
Y29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKTsKLSAgICBJbnRSZWN0IGludGVybWVkaWF0ZVN1
cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgSW50UmVjdCBpbnRl
cm1lZGlhdGVTdXJmYWNlUmVjdCgpOwogCiAgICAgc3RhdGljIGludCBjb21wYXJlR3JhcGhpY3NM
YXllcnNaVmFsdWUoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYik7CiAgICAgc3RhdGljIHZv
aWQgc29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqID4mIGFycmF5LCBpbnQg
Zmlyc3QsIGludCBsYXN0KTsKQEAgLTEwMSwxNSArMTEwLDIxIEBAIHByaXZhdGU6CiAgICAgUGFz
c1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUg
PyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQgYWRqdXN0
ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3NpdGlv
bkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29uc3Q7Ci0K
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CiAgICAgdm9pZCBh
ZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQo
KTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAKKyAgICB2b2lkIGNvbXB1dGVPdmVy
bGFwUmVnaW9ucyhSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lv
biwgYm9vbCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXAgPSB0cnVlKTsKKwogICAgIHZvaWQgcGFp
bnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOworICAgIHZvaWQg
cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMm
KTsKKyAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2UoY29uc3Qg
VGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHBh
aW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFw
cGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGlsZHJlbihjb25zdCBU
ZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGlsZHJl
bldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKKyAgICB2b2lk
IGFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAKICAgICAvLyBH
cmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0
ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKQEAgLTEy
NSw4ICsxNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50
cwogICAgIH07CiAKLSAgICBDb250ZW50c0xheWVyQ291bnQgY291bnRQb3RlbnRpYWxMYXllcnNX
aXRoQ29udGVudHMoKSBjb25zdDsKLSAgICBib29sIHNob3VsZFBhaW50VG9JbnRlcm1lZGlhdGVT
dXJmYWNlKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRCbGVuZCgpIGNvbnN0OwogCiAgICAgaW5s
aW5lIEZsb2F0UmVjdCBsYXllclJlY3QoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5ZTY2ZWU0
N2RlZjgxMDExNS4uYjliYWRlZDMzNDczODFjYzBkYjI5ZjIxYzJhYWVkYjAwY2Y5MDU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgewog
cHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0bWFwVGV4
dHVyZSogbWFzayA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBv
cGFjaXR5ID0gMS4wKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDhjMTMxZTYx
OWUxYWUwMTc3MWMwY2ViMjU0MTUyNWRjYmU2MjU5MTcuLjUzZWUyZjBkZGE0ZDU4OWVjNTk3MDRl
YjM2NTczYzg3NDVjOWM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmNwcApAQCAtMTI3LDcgKzEyNyw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB2ZXJ0ZXhUZW1w
bGF0ZSA9CiAgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsKIAogICAg
ICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2ZWMyIHZfbWFz
a1RleENvb3JkOwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFzOwogCiAgICAgICAg
IHZvaWQgbm9vcChpbm91dCB2ZWMyIGR1bW15UGFyYW1ldGVyKSB7IH0KQEAgLTE3Niw4ICsxNzUs
NiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4VGVtcGxhdGUgPQogICAgICAgICAgICAgLy8g
VGhlIHRleHR1cmUgcG9zaXRpb24gbmVlZHMgdG8gYmUgY2xhbXBlZCB0byAwLi4xIGJlZm9yZSB0
aGUgdGV4dHVyZSBtYXRyaXggaXMgYXBwbGllZC4KICAgICAgICAgICAgIHZlYzQgY2xhbXBlZFBv
c2l0aW9uID0gY2xhbXAodmVjNChwb3NpdGlvbiwgMC4sIDEuKSwgMC4sIDEuKTsKICAgICAgICAg
ICAgIHZfdGV4Q29vcmQgPSAodV90ZXh0dXJlU3BhY2VNYXRyaXggKiBjbGFtcGVkUG9zaXRpb24p
Lnh5OwotCi0gICAgICAgICAgICB2X21hc2tUZXhDb29yZCA9IHBvc2l0aW9uOwogICAgICAgICAg
ICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiB1X21vZGVsVmlld01hdHJpeCAq
IHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgICAgICAgIH0KICAgICApOwpAQCAtMjA0LDEyICsy
MDEsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAgIFNUUklO
R0lGWSgKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgIHVuaWZvcm0g
U2FtcGxlclR5cGUgc19zYW1wbGVyOwotICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX21hc2s7
CiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfY29udGVudFRleHR1cmU7CiAgICAgICAgIHVu
aWZvcm0gZmxvYXQgdV9vcGFjaXR5OwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFz
OwogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2ZWMy
IHZfbWFza1RleENvb3JkOwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfZmlsdGVyQW1vdW50Owog
ICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwogICAgICAgICB1bmlmb3JtIHZlYzIg
dV9zaGFkb3dPZmZzZXQ7CkBAIC0yMjMsNyArMjE4LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZy
YWdtZW50VGVtcGxhdGUgPQogICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZShpbm91dCB2ZWM0IGNv
bG9yKSB7IGNvbG9yID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdl90ZXhDb29yZCk7IH0K
ICAgICAgICAgdm9pZCBhcHBseU9wYWNpdHkoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAqPSB1
X29wYWNpdHk7IH0KICAgICAgICAgdm9pZCBhcHBseUFudGlhbGlhc2luZyhpbm91dCB2ZWM0IGNv
bG9yKSB7IGNvbG9yICo9IGFudGlhbGlhcygpOyB9Ci0gICAgICAgIHZvaWQgYXBwbHlNYXNrKGlu
b3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdGV4dHVyZTJEKHNfbWFzaywgdl9tYXNrVGV4Q29v
cmQpLmE7IH0KIAogICAgICAgICB2b2lkIGFwcGx5R3JheXNjYWxlRmlsdGVyKGlub3V0IHZlYzQg
Y29sb3IpCiAgICAgICAgIHsKQEAgLTMzNCw3ICszMjgsNiBAQCBzdGF0aWMgY29uc3QgY2hhciog
ZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgICAgICAgICBhcHBseVRleHR1cmVJZk5lZWRlZChjb2xv
cik7CiAgICAgICAgICAgICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xvcik7CiAgICAgICAg
ICAgICBhcHBseUFudGlhbGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAgIGFwcGx5
TWFza0lmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5T3BhY2l0eUlmTmVlZGVkKGNv
bG9yKTsKICAgICAgICAgICAgIGFwcGx5R3JheXNjYWxlRmlsdGVySWZOZWVkZWQoY29sb3IpOwog
ICAgICAgICAgICAgYXBwbHlTZXBpYUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKQEAgLTM2Miw3ICsz
NTUsNiBAQCBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFBhc3NSZQogICAgIFNFVF9BUFBMSUVSX0ZST01fT1BU
SU9OUyhSZWN0KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU29saWRDb2xvcik7CiAg
ICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKE9wYWNpdHkpOwotICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhNYXNrKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoQW50aWFsaWFz
aW5nKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoR3JheXNjYWxlRmlsdGVyKTsKICAg
ICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU2VwaWFGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCAwMzdlN2Q2OWQ5YTg3NzRmMWQzMDYxYTc3OTMx
YTJjMDNjOWRjMTQ2Li4zMmZhZTExNmNiZmEyZjgzNDliZDI3YjNhYzRiZTk5MzY5ZGNiNTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaApAQCAtNDIsNyArNDIsNiBA
QCBwdWJsaWM6CiAgICAgICAgIFJlY3QgICAgICAgICAgICAgPSAxTCA8PCAxLAogICAgICAgICBT
b2xpZENvbG9yICAgICAgID0gMUwgPDwgMiwKICAgICAgICAgT3BhY2l0eSAgICAgICAgICA9IDFM
IDw8IDMsCi0gICAgICAgIE1hc2sgICAgICAgICAgICAgPSAxTCA8PCA0LAogICAgICAgICBBbnRp
YWxpYXNpbmcgICAgID0gMUwgPDwgNSwKICAgICAgICAgR3JheXNjYWxlRmlsdGVyICA9IDFMIDw8
IDYsCiAgICAgICAgIFNlcGlhRmlsdGVyICAgICAgPSAxTCA8PCA3LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzcxNDJkNzVkZDVh
NzYzZjBiNjIyYTU2MzY1YWQ5YzIyZTgzOWUxMi4uOGQzODc3NmU5YjVmNTMzYTYwNWU3M2NhNzZl
MzNjYWJmZDk4YjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUuY3BwCkBAIC00NCwxMCArNDQsMTAgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJh
Y2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9p
ZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQog
ewogICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1cmZhY2Ut
PnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5zZm9y
bSwgb3BhY2l0eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4
dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRjZDEwMTRmYzg1ZWEzYTdlOTcxYzhkZTA1
ZjQxYTRmZDRiZDI2YzcuLjc5M2M2MWRjMzQyZmYwMjYzNTI3ODc0YzcxMjBkMzVlYjI4MGM1Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCkBA
IC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFjZShQYXNz
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCh1
aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IHRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
LmNwcAppbmRleCA5YjQwNTEzMWFiMGU3OTMyZmU5Yzg3ZmRiYzI1ODQ0Y2ViNTI0NDRiLi4wNzA1
N2VhMTQ5MTNlZWUwNjE1OWQ5NDZiNjQxYjJkMTM1NjEwYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
VGlsZS5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRh
dGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheQogICAg
IG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIHRh
cmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAotdm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFw
VGV4dHVyZSogbWFzaywgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBUZXh0dXJl
TWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgdW5zaWdu
ZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICh0ZXh0dXJlKCkuZ2V0KCkpCi0gICAgICAgIHRl
eHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlKCkuZ2V0KCksIHJlY3QoKSwgdHJhbnNm
b3JtLCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgICAgICB0ZXh0dXJlTWFwcGVy
LT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwgb3BhY2l0
eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJU
aWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclRpbGUuaAppbmRleCBhY2VmNjE4ZWQzZDYwZTMyYTc2M2JmNDBmMTVmY2YyYTM0NzdlZThk
Li4yYjQ1ZDkwMDc3OThlYjQ3MTI4ZDA3YzQ0OWQ3ZDBhNTgwOGZlZDlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclRpbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUNv
bnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0
dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEp
OwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIq
LCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0
ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoVGV4
dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRl
eHR1cmUqLCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludChUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwg
Y29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
VGlsZSgpIHsgfQogCiAgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
LmNwcAppbmRleCA4MDk3OTIyMjY3ZTk5MGE4MTBmMjAyZDQ1N2E2MmZhZjlmYjg4ZDBiLi40YTYw
YzgxNTcyMjI4YTVkM2RmNThlYTUwMDRhYjNhMDNmN2FhNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDcsMTIgKzQ3LDEyIEBAIFRy
YW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6YWRqdXN0
ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpy
ZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2sp
Cit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5
KQogewogICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1hcHBlcik7
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0g
KiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RpbGVzW2ldLnBhaW50
KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxh
dGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKKyAgICAgICAg
bV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0
eSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgpKSk7
CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgZmxv
YXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUuaAppbmRleCA5MzliMTg1ZDdlYTM1NGYzYmI1Mzk4NWI4YTU2N2U5MTY3
NzY0ZmViLi5mYzFmOWJmNjdmNjExZmViOGM1YmRlNGY3ZjdmOTJiY2ZiNGNhMDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3ICszOCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUo
KSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJX
aWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIq
LCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50
cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0
JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEwNWMxY2Jm
YTU1ZGJlZmVmYjMyYzM2ZDg1ZjczM2JiYzZkZjM3NDguLmNkNWExMmQ5NjdiNjUwYjk5MDhkZTEw
MmM0YzI5MTMzYTUyZTBiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTA2LDEwICsxMDYsMTAgQEAgdm9pZCBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAg
bV9wZW5kaW5nU2l6ZSA9IHNpemU7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6
OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mIHRp
bGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRp
bGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywgVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRpbGVzW2ld
LT5wYWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNhbGN1bGF0
ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZXNbaV0tPnJlY3QoKSkpOworICAgICAgICB0aWxl
c1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBjYWxjdWxhdGVF
eHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKIH0KIAogVHJhbnNmb3Jt
YXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNmb3JtRm9y
UmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpCkBAIC0xMTcsNyArMTE3LDcgQEAgVHJh
bnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNm
b3JtRm9yUmVjdChjb25zdCBGbG8KICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJl
Y3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmICht
X3RpbGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyLDggKzE1Miw4IEBAIHZv
aWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgLy8gU2VlIFRpbGVkQmFja2luZ1N0b3JlLgogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRq
dXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogCi0gICAgcGFpbnRUaWxlc1RvVGV4
dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRU
cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7Ci0gICAgcGFpbnRUaWxlc1RvVGV4dHVy
ZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBv
cGFjaXR5LCBtYXNrLCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIocHJl
dmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFj
aXR5LCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNUb1BhaW50
LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCgpKTsKIH0K
IAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldp
ZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5oCmluZGV4IDgxOTg5NWY0OTJhZTVhY2VkZTdkMzlhZWUxYzRkODdiYzI2
Y2NmYjkuLjQyMDE0NTRiZDdmNzVjMzYzYTI2OGI3MmIzODc1MTFkZTBlNzFhN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFRleHR1
cmVNYXBwZXIqKTsKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dDsKICAgICB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKik7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVN
YXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKQEAgLTcwLDcgKzcwLDcg
QEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAgICAgIDogbV9z
Y2FsZSgxLikKICAgICB7IH0KLSAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVj
dG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mLCBUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IEZsb2F0UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1hcHBlclRp
bGUqPiYsIFRleHR1cmVNYXBwZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0
LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRy
YW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgRmxvYXRSZWN0IHJlY3QoKSBj
b25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOyB9CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNWU1YmRiODlmMjhmZjljZjVhYmJkNzIzYjJhMGQ2ZjAyN2FlN2Y4Li5iZDY3NjEx
Y2E2YWY1M2U2NzBhYTBlNzY2ZTJkNGI2YjE4NmU1ODNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTMtMDItMjUgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBbVGV4bWFwXSBUZXh0dXJlTWFwcGVyIGlzIHRvbyBlYWdlciB0byB1c2UgaW50ZXJtZWRpYXRl
IHN1cmZhY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEwNzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgYSBmZXcgcmVmLXRlc3RzIGZvciBjb3JyZWN0IG92ZXJsYXAgYmxlbmRpbmcgaW4g
YWNjZWxlYXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9v
dmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNp
dHktaHVnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5k
aW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8t
b3ZlcmxhcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5k
aW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2Uu
aHRtbDogQWRkZWQuCisKIDIwMTMtMDItMjAgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWxsY2hlY2tlciBzaG91bGQgbm90IGNyYXNoIGFm
dGVyIHRleHQgaGFzIGNoYW5nZWQgYW5kIHNwZWxsY2hlY2sgcmVzdWx0cyBhcmUgc2VydmVkIGZy
b20gY2FjaGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5OTA1ZTlhOTg5YWQyNjlmZTM2MTJiMjJkMzk0MTE0M2UxYWE0
YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJs
ZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMzMg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAg
ICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgCisgICAgICBk
aXYgeworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICB9Cisg
ICAgICAuc29saWQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRo
OiAyMTUwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworICAgICAgfQorCisgICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9Cisg
ICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDEwMHB4OyBs
ZWZ0OiAwcHg7fQorICAgICAgCisgICAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQt
dHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgICAgfQorICAgICAgKiB7IG1hcmdpbjogMDsg
cGFkZGluZzogMDsgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAgIDxkaXYgY2xhc3M9
Im9wYWNpdHkiPgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGEiPjE8L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJzb2xpZCBiIj4yPC9kaXY+CisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHkt
aHVnZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGls
ZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzFiMDY0ZWY5ZjViMGRhYmRmM2Uw
OTcwNThhYTEyODM3MGM4YzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbApAQCAtMCww
ICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIAor
ICAgICAgZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAg
ICAgfQorICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICB3aWR0aDogMjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIH0KKworICAgICAgLm9wYWNpdHkgeyBvcGFjaXR5OiAu
NTsgfQorICAgICAgLmEgeyB0b3A6IDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5iIHsgdG9wOiAx
MDBweDsgbGVmdDogMHB4O30KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeworICAgICAgICAt
d2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0KKworICAgICAgKiB7IG1h
cmdpbjogMDsgcGFkZGluZzogMDsgfQorICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgICA8ZGl2
IGNsYXNzPSJvcGFjaXR5IGNvbXBvc2l0ZWQiPgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGEgY29t
cG9zaXRlZCI+MTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGIgY29tcG9zaXRlZCI+Mjwv
ZGl2PgorICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRy
ZW4tb3BhY2l0eS1uby1vdmVybGFwLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjliZDVmMTM2
ZDI2YjQ2M2QzMDhhNzNlZjZhNWYwMDJlYjg0YzI4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1v
dmVybGFwLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIEhUTUw+Cis8
aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAKKyAgICAgIGRpdiB7CisgICAgICAgIC13ZWJraXQt
Ym94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgIH0KKyAgICAgIC5zb2xpZCB7CisgICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIH0KKwor
ICAgICAgLm9wYWNpdHkgeyBvcGFjaXR5OiAuNTsgfQorICAgICAgLmEgeyB0b3A6IDBweDsgbGVm
dDogMHB4O30KKyAgICAgIC5iIHsgdG9wOiAyMDBweDsgbGVmdDogMjAwcHg7fQorICAgICAgLmMg
eyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmQgeyB0b3A6IDBweDsgbGVmdDogMjAw
cHg7fQorICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICAgICAgLmNvbXBvc2l0
ZWQgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0K
KworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgICA8ZGl2IGNsYXNzPSJvcGFjaXR5Ij4KKyAg
ICAgIDxkaXYgY2xhc3M9InNvbGlkIGEiPjE8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlk
IGIiPjI8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGMiPjM8L2Rpdj4KKyAgICAgIDxk
aXYgY2xhc3M9InNvbGlkIGQiPjwvZGl2PgorICAgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktbm8tb3ZlcmxhcC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1i
bGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzE4
NDBhMmM0ZGIyY2YyYTcxNTFlYjMxNTQzMzA2M2MzZDRlNmE1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5
LW5vLW92ZXJsYXAuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1s
PgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBt
ZWRpYT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAgZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gt
c2l6aW5nOiBib3JkZXItYm94OworICAgICAgfQorICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgfQorCisgICAg
ICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9CisgICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAw
cHg7fQorICAgICAgLmIgeyB0b3A6IDIwMHB4OyBsZWZ0OiAyMDBweDt9CisgICAgICAuYyB7IHRv
cDogMjAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAuZCB7IHRvcDogMHB4OyBsZWZ0OiAyMDBweDt9
CisgICAgICAKKyAgICAgIC5jb21wb3NpdGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06
IHRyYW5zbGF0ZVooMCk7CisgICAgICB9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAw
OyB9CisKKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRl
ZCBvcGFjaXR5Ij4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgYSI+MTwvZGl2
PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgY29tcG9zaXRlZCBiIj4yPC9kaXY+CisgICAgICA8
ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3NpdGVkIGMiPjM8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9
InNvbGlkIGNvbXBvc2l0ZWQgZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlv
bi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292
ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNDliMTRjYzAxMGQ1OGFjMmFhYTBhMTg5MTk0YjUwYTY1MjVlNTNhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZs
ZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgLnJlZmxlY3RlZCB7CisgICAg
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6IDIxNTBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAg
IG9wYWNpdHk6IDAuNTsKKyAgICAgICAgLXdlYmtpdC1ib3gtcmVmbGVjdDogYmVsb3cgLTUwcHg7
CisgICAgICB9CisgICAgICAKKyAgICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKwor
ICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgCisgIDxwPk9wYWNpdHkgc2hvdWxkIGJlIGFwcGxp
ZWQgYWZ0ZXIgcmVmbGVjdGlvbiwgc28geW91IHNob3VsZCBzZWUgYSBncmVlbiByZWN0YW5nbGUg
YmVsb3cuIFRoZSBvdmVybGFwIGJldHdlZW4gdGhlIG9yaWdpbmFsIGFuZCByZWZsZWN0aW9uIHNo
b3VsZCBub3QgYmUgdmlzaWJsZS48L3A+CisgIDxkaXYgY2xhc3M9InJlZmxlY3RlZCI+MQorICA8
L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3ODE3OTRlOTk3YmY4MTQyNDU1ZjJmYjJlMGQxNDY0YzM3MGVmOTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5n
L3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAucmVmbGVjdGVkIHsKKyAgICAgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDogMjE1MHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAgb3Bh
Y2l0eTogMC41OworICAgICAgICAtd2Via2l0LWJveC1yZWZsZWN0OiBiZWxvdyAtNTBweDsKKyAg
ICAgIH0KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJh
bnNsYXRlWigwKTt9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisKKyAgICA8
L3N0eWxlPgorICA8L2hlYWQ+CisgIAorICA8cD5PcGFjaXR5IHNob3VsZCBiZSBhcHBsaWVkIGFm
dGVyIHJlZmxlY3Rpb24sIHNvIHlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIGJlbG93
LiBUaGUgb3ZlcmxhcCBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBhbmQgcmVmbGVjdGlvbiBzaG91bGQg
bm90IGJlIHZpc2libGUuPC9wPgorICA8ZGl2IGNsYXNzPSJyZWZsZWN0ZWQgY29tcG9zaXRlZCI+
MQorICA8L2Rpdj4KKworPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190244</attachid>
            <date>2013-02-26 02:08:27 -0800</date>
            <delta_ts>2013-02-26 04:57:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110762-20130226110440.patch</filename>
            <type>text/plain</type>
            <size>83303</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYxZjU4ZjQ0NmM5ZWZl
ZDAwNzZkMzdjZjg0ZTQ3YzFkYmNlZjc2Yi4uNzczZjY1NDlkMjgwNmQ5NmRlYjliZmYxZTU2YTU2
NmI2ZTE4NzYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAxMy0wMi0yNSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXIgaXMgdG9vIGVhZ2VyIHRvIHVzZSBpbnRlcm1lZGlhdGUgc3VyZmFjZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA3NjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUg
d2F5IGludGVybWVkaWF0ZSBzdXJmYWNlcyBhcmUgaGFuZGxlZCBpbiBUZXh0dXJlTWFwcGVyTGF5
ZXIuCisgICAgICAgIEJlZm9yZWhhbmQsIHdlIHdvdWxkIGNyZWF0ZSBhbiBpbnRlcm1lZGlhdGUg
c3VyZmFjZSB3aGVuZXZlciB0aGVyZSBpcyBhIGNoYW5jZSBvZiBvdmVybGFwLCBhbmQKKyAgICAg
ICAgdGhlIGludGVybWVkaWF0ZSBzdXJmYWNlIHdvdWxkIGJlIHRoZSBsYXJnZXN0IHBvc3NpYmxl
LiBUaGUgcmVzdWx0IHdvdWxkIHRoZW4gYmUgZHJhd24gdG8gdGhlCisgICAgICAgIHRhcmdldCBz
dXJmYWNlIHdpdGggdGhlIGxheWVyJ3Mgb3BhY2l0eSBhbmQgbWFzay4KKyAgICAgICAgVGhpcyB3
b3VsZCBtYWtlIGl0IHNvIHRoYXQgKDEpIHN1cmZhY2VzIGFyZSBjcmVhdGVkIGV2ZW4gd2hlbiB0
aGV5J3JlIG5vdCBuZWVkZWQsIGkuZS4gd2hlbiB0aGVyZQorICAgICAgICBpcyBubyBhY3R1YWwg
b3ZlcmxhcCwgYW5kICgyKSBtYXNrIHdvdWxkbid0IGJlIGFwcGxpZWQgY29ycmVjdGx5LgorCisg
ICAgICAgIEluIHRoaXMgcGF0Y2ggdGhlIGJlaGF2aW9yIGlzIGNoYW5nZWQgc28gdGhhdCB0aGUg
YXJlYSB0byBiZSBwYWludGVkIGlzIGRpdmlkZWQgdG8gIm92ZXJsYXBwaW5nIgorICAgICAgICBh
bmQgIm5vbiBvdmVybGFwcGluZyIgcmVnaW9ucy4gVGhlIG5vbi1vdmVybGFwcGluZyByZWdpb25z
IGFyZSBwYWludGVkIGRpcmVjdGx5LCB3aGlsZSB0aGUgb3ZlcmxhcHBpbmcKKyAgICAgICAgcmVn
aW9ucyBhcmUgdGlsZWQgdG8gc21hbGxlciByZWN0YW5nbGVzIHBhaW50ZWQgdXNpbmcgYW4gaW50
ZXJtZWRpYXRlIHN1cmZhY2UuCisgICAgICAgIE1hc2tzIGFyZSBhcHBsaWVkIHRvIHRob3NlIGlu
dGVybWVkaWF0ZSBzdXJmYWNlcyBiYXNlZCBvbiB0aGUgdHJhbnNmb3JtIG9mIHRoZSBhY3R1YWwg
bWFzaywgbm90IGRyYXduCisgICAgICAgIHRvZ2V0aGVyIHdpdGggdGhlIGNvbnRlbnQgdGV4dHVy
ZSBsaWtlIGJlZm9yZS4KKworICAgICAgICBUaGlzIG9wdGltaXplcyBmb3IgdGhlIG1vcmUgY29t
bW9uIGNhc2Ugb2Ygb3BhY2l0eSBhbmltYXRpb25zIG9uIGEgbGFyZ2UgdHJlZSwgd2hpbGUgbWFr
aW5nIHRoZSBxdWl0ZQorICAgICAgICByYXJlIGNhc2Ugb2YgY29tcG9zaXRlZCBtYXNrcyBzbGln
aHRseSBsZXNzIG9wdGltaXplZCBidXQgYWx3YXlzIGNvcnJlY3QuCisKKyAgICAgICAgVGVzdHM6
IGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLmh0bWwK
KyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1v
cGFjaXR5LWh1Z2UuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXJQcml2YXRlUXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9HcmFwaGljc1N1cmZhY2UuaDoKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1Rl
eHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgICAgICAgICBSZW1vdmVkIHRoZSAibWFzayIgcGFyYW1ldGVyIGZyb20gVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIgYW5kIG92ZXJyaWRlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI6OlRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpzZXRN
YXNrTW9kZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI6OmlzSW5NYXNrTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpk
cmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXcpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRD
b2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAg
ICAgICAgICAgICBJbnN0ZWFkIG9mIHBhaW50aW5nIHRoZSBtYXNrIHRvZ2V0aGVyIHdpdGggdGhl
IHRleHR1cmUvY29sb3IsIHBhaW50IHRoZSBtYXNrCisgICAgICAgICAgICAgICAgYnkgZHJhd2lu
ZyB3aXRoIERlc3RpbmF0aW9uSW4gdG8gYW4gZXhpc3Rpbmcgc3VyZmFjZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNob3VsZEJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVz
b2x2ZU92ZXJsYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29t
cHV0ZU92ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6YXBwbHlNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRJbnRvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21taXRTdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJt
ZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50UmVjdXJzaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBw
ZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omhhc0ZpbHRl
cnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oOgorCiAyMDEzLTAyLTIz
ICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYW5pbWF0aW9uL3N0YXRlLWF0LWVuZC1ldmVudC10cmFu
c2Zvcm0tbGF5ZXIuaHRtbCBzaG93cyBhIHJlZCBzcXVhcmUgd2hlcmUgaXQgc2hvdWxkbid0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQz
MTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi5kZjBiMjYyOTI3YjUwYWZjNDcxYzYwM2I2OTQ4NWI3
NDY2YTVjYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlcgogICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0
dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQt
Pm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAgICAg
SW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQt
Pm1fY3VycmVudEhlaWdodCk7Ci0gICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+
bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0
eSwgbWFzayk7CisgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJl
LCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiAjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HX0dMKQogfQogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgK
aW5kZXggZDBkZDIzZmU3ZGJkNDFkNmFmODFmOTA3YWFkOWRhMDMyYzAxYjRkYi4uNDJlYjZjMmU3
MDUxYzkwMjc1MGIyODgwZGVjNGZhMzc0M2IyMTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0K
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVS
KQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxv
YXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCAzZDYwMWZlMmY4
NzY4NmMwMjU4YjJhMGNlNjc2NTExYmU2OTllODVlLi4zMTFjYjJkN2Q2OTlkMTI1OWNmZGRjNDgx
N2I0YzMwMTg2YzczNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAt
MTkwLDcgKzE5MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVm
ZmVyKCkgY29uc3QKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQgLyogb3BhY2l0eSAqLywgQml0bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IGIzMDA5NmE2YTlhOGQ3NThhNzlk
Y2MyOWRjZTE2ZDU4YTg1OTc5NmQuLjhmMGViM2NiNGFlYjUzNGUzOGY5YjE3NjUwZGMxY2UzZmRm
ZTljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrPik7CiAjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNp
emUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggNjZiZGVhZWQx
ODVhNTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMwZjdlYS4uOGQ1YjgxZDEwMjFjZDJiZTM4ZmM0MzIw
OWJmMzBmMGI2OTdlMTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQg
b3BhY2l0eSk7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFs
IEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdDsKQEAgLTIwOSw3ICsyMDksNyBAQCBz
dGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRvUmdiKHF1aW50MzIgcGl4ZWwpCiB9CiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBtX2NvbnRleHQtPm1h
cmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJl
c3RvcmVDb250ZXh0KCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIKICAgICAgICAgY3VycmVudENvbnRleHQtPm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsK
IAogICAgICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVy
ZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5w
YWludFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBHTCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5
LCBtYXNrKTsKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVy
KHRleG1hcEdMLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwogI2VuZGlmCiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJi
Yjc4ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAzYS4uMWY5NjliNWZkYzIxYWJjMjk0YWEwM2RkYTc3
ZmEzNWEzYjY5NjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0
bWFwVGV4dHVyZSopCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkp
CiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQz
OWUzMjI0YzE1MjFlZTAwMzA0MGY1OTUuLmU3NGNkY2QwODk4NWNiYmNiYTNkMjhiNzZlNDU0MzYz
MDUxNjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7
IH0KICAgICAvLyBDb25zdC1jYXN0aW5nIGhlcmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyJ3MgZnVuY3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVh
bCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0
IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NT
dXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dy
YXBoaWNzU3VyZmFjZS5jcHAKaW5kZXggYmFlZmE4YTE5MDg0MWFlYWIyYjQwYTJjZDA2NDc3MjBm
MTYzMzU5Yy4uMmE3YTRiMjQzYzRjYmU2OGFiZTJhYTkyNjE4OTFiNjA5NTdiMjE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NT
dXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HcmFwaGljc1N1cmZhY2UuY3BwCkBAIC02Myw5ICs2Myw5IEBAIHZvaWQgR3JhcGhpY3NTdXJm
YWNlOjpjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjCiAgICAgcGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRl
eHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQog
ewotICAgIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0
UmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBwbGF0Zm9ybVBhaW50VG9UZXh0
dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7
CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6ZnJvbnRCdWZmZXIoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGlj
c1N1cmZhY2UuaAppbmRleCBkYTQ5MzY5OThjNWQwZGQ3OTI4NTk1ZTIyMWM4ZmE5MjY5MWEzODc4
Li43MzFhZjJiNmQ2NWMzZGE5YWQ0NzI5YmI3NjI1NWYzOGRiZWY0ZDA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGlj
c1N1cmZhY2UuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBH
cmFwaGljc1N1cmZhY2VUb2tlbiYpOwogICAgIHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCk7CiAgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWlu
dDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRl
eHR1cmUqIG1hc2spOworICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVp
bnQzMl90IHN3YXBCdWZmZXJzKCk7CiAgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZXhwb3J0VG9r
ZW4oKTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGxhdGZvcm1Vbmxv
Y2soKTsKICAgICB2b2lkIHBsYXRmb3JtQ29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAg
dm9pZCBwbGF0Zm9ybUNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAg
ICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBwbGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3Q7CiAg
ICAgdWludDMyX3QgcGxhdGZvcm1Td2FwQnVmZmVycygpOwogICAgIEludFNpemUgcGxhdGZvcm1T
aXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4
IDVlMThhNTliOTY0NzQ4ZTcyMTgxNDFmZjFiYWFkYzk2OTkzMDNhOGYuLjNhMjMwNjM3ZjJhYWMy
MTQ2NGVjNzlkYzE5NTA2ZDMzZDY4MGRmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1
cmZhY2VHTFguY3BwCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMK
ICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0K
IAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRt
YXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9h
dCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAg
IGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyLAogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCks
IHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJh
bnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGlj
X2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHRleHR1
cmUsIG1fcHJpdmF0ZS0+ZmxhZ3MoKSwgc2l6ZSwgcmVjdE9uQ29udGVudHMsIGFkanVzdGVkVHJh
bnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wq
Pih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygp
LCBzaXplLCByZWN0T25Db250ZW50cywgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQog
CiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFj
L0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAppbmRleCBiZjYyZmIxNWEwOWI0
YzE4MjMyNDExZjYzYTUzMTdiYWRkNmVhMjVjLi5jNGQyZDU0MTg0MmQ2YjE2Y2FlZDFhMTkzYTdl
Y2UxMjJjODFiYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApA
QCAtMzMzLDEzICszMzMsMTMgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZy
b21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZh
dGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFw
aGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBt
YXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQog
ewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCBy
ZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJh
bnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNv
bnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4o
dGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJl
SUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hv
dWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5z
Zm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4o
dGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJl
SUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hv
dWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5z
Zm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1G
cm9udEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3Bw
CmluZGV4IDk1MDlmMDk4M2M2MjkwY2YwMGVkM2JjYWQ4YTliMTA5ODYyNWQ4N2YuLjA2ZjQyN2Nm
Y2FkODM2NDhkZmQ3OGQ1OTI1M2NiMGMwNDRmZjQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFw
aGljc1N1cmZhY2VXaW4uY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0
KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5
LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgp
OwogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuY3BwCmluZGV4IDM3ZjcxNTRmMWM2OWQ5OGI0YTIzYjBjMGNkNzQ4ZWY1
ZDlkNzU5MDguLjJiMTNjNWU1NzQxZTFkYmM0MTZiMTEzNzcyNjJiYjcwZTVhMzcxODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5jcHAKQEAgLTE0MSw2ICsxNDEsNyBAQCBUZXh0dXJlTWFwcGVyOjpUZXh0dXJl
TWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNjZWxlcmF0aW9uTW9kZSkKICAgICAsIG1fdGV4dERy
YXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKICAgICAsIG1fdGV4dHVyZVBvb2woYWRvcHRQdHIobmV3
IEJpdG1hcFRleHR1cmVQb29sKCkpKQogICAgICwgbV9hY2NlbGVyYXRpb25Nb2RlKGFjY2VsZXJh
dGlvbk1vZGUpCisgICAgLCBtX21hc2tNb2RlKGZhbHNlKQogeyB9CiAKIFRleHR1cmVNYXBwZXI6
On5UZXh0dXJlTWFwcGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGFkZWFmM2U3MThlMTMyNTAzODI5
YzkwNGZjMGEyZDI3NTJjNDYxODYuLmFiMzJlNjliMTI3NGNhMzk4MWFlMDM5OTE1YjkzNzQ0NjRi
YzM5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wZiwgY29uc3QgQml0bWFw
VGV4dHVyZSogbWFza1RleHR1cmUgPSAwLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdl
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJl
JiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0g
MS4wZiwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBDb2xvciYpID0gMDsKIAogICAgIC8vIG1ha2VzIGEgc3VyZmFjZSB0
aGUgdGFyZ2V0IGZvciB0aGUgZm9sbG93aW5nIGRyYXdUZXh0dXJlIGNhbGxzLgpAQCAtMTUzLDYg
KzE1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQYWludEZs
YWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CiAKKyAgICB2
b2lkIHNldE1hc2tNb2RlKGJvb2wgbSkgeyBtX21hc2tNb2RlID0gbTsgfQorCiAgICAgdmlydHVh
bCBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6
ZSYpOwpAQCAtMTY2LDYgKzE2OCw4IEBAIHByb3RlY3RlZDoKIAogICAgIEdyYXBoaWNzQ29udGV4
dCogbV9jb250ZXh0OwogCisgICAgYm9vbCBpc0luTWFza01vZGUoKSBjb25zdCB7IHJldHVybiBt
X21hc2tNb2RlOyB9CisKIHByaXZhdGU6CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAg
IHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+IHBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0
ZWQoKTsKQEAgLTE3OSw2ICsxODMsNyBAQCBwcml2YXRlOgogICAgIFRleHREcmF3aW5nTW9kZUZs
YWdzIG1fdGV4dERyYXdpbmdNb2RlOwogICAgIE93blB0cjxCaXRtYXBUZXh0dXJlUG9vbD4gbV90
ZXh0dXJlUG9vbDsKICAgICBBY2NlbGVyYXRpb25Nb2RlIG1fYWNjZWxlcmF0aW9uTW9kZTsKKyAg
ICBib29sIG1fbWFza01vZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaAppbmRleCA2YmZiM2YxY2ZlNWIyZTE2NmM4MTNjMDMzZGFhZTY4YTE1MWRlZjdkLi5j
NjAwYWEyZTFiZDJmMTczN2EyOTc5OGUzNzYzNzZkMmQ1ZTk5YzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgR3JhcGhpY3NM
YXllcjsKIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmU+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
dGV4dHVyZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRDb3VudCAqLywg
Y29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpIHsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCAzY2RkYzkzNjMxMTAzY2U4Nzc3YTQ1MzE4OWZlOGE3
OGJiYzgxNjgxLi40YTk2ZGFkMGM5NWQ1MjUyYzVjNWRiODU2YTE1YzViZjIyMjgyZGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxv
YXRQb2luCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBhY3F1aXJlVGV4dHVy
ZUZyb21Qb29sKHNpemUpOwogICAgIGNvbnN0IHVjaGFyKiBiaXRzID0gaW1hZ2UuYml0cygpOwog
ICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpLT51cGRhdGVD
b250ZW50c05vU3dpenpsZShiaXRzLCBzb3VyY2VSZWN0LCBJbnRQb2ludDo6emVybygpLCBpbWFn
ZS5ieXRlc1BlckxpbmUoKSk7Ci0gICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3Qs
IG1vZGVsVmlld01hdHJpeCwgMS4wZiwgMCwgQWxsRWRnZXMpOworICAgIGRyYXdUZXh0dXJlKCp0
ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIEFsbEVkZ2VzKTsKIAog
I2VsaWYgVVNFKENBSVJPKQogICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0cmluZzo6bnVt
YmVyKG51bWJlcikuYXNjaWkoKTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZs
b2F0UG9pbgogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJpdHMgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKHN1cmZhY2UpOwogICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdM
Kj4odGV4dHVyZS5nZXQoKSktPnVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGJpdHMsIHNvdXJjZVJl
Y3QsIEludFBvaW50Ojp6ZXJvKCksIHN0cmlkZSk7Ci0gICAgZHJhd1RleHR1cmUoKnRleHR1cmUs
IHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgMS4wZiwgMCwgQWxsRWRnZXMpOworICAgIGRy
YXdUZXh0dXJlKCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIEFs
bEVkZ2VzKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKICAgICBjYWly
b19kZXN0cm95KGNyKTsKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6
ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UG9p
bgogI2VuZGlmCiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShjb25zdCBC
aXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1h
cFRleHR1cmUqIG1hc2ssIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZs
b2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBpZiAoIXRleHR1cmUu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC00MDMsMjAgKzQwMywxNyBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYgdGV4dHVyZSwg
Y29uc3QgRmxvYXRSZWN0JgogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBCaXRtYXBUZXh0
dXJlR0wmIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHRl
eHR1cmUpOwotICAgIGRyYXdUZXh0dXJlKHRleHR1cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFx
dWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0
cml4LCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgIGRyYXdUZXh0dXJlKHRleHR1
cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVy
ZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBleHBvc2VkRWRnZXMpOwog
fQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUs
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVy
ZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0
ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBv
c2VkRWRnZXMpCiB7CiAgICAgYm9vbCB1c2VSZWN0ID0gZmxhZ3MgJiBTaG91bGRVc2VBUkJUZXh0
dXJlUmVjdDsKLSAgICBib29sIG1hc2tlZCA9ICEhbWFza1RleHR1cmU7CiAgICAgYm9vbCB1c2VB
bnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZwogICAgICAgICAm
JiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKICAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5t
YXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKIAogICAgIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6VGV4dHVyZTsKLSAgICBpZiAobWFza2VkKQotICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpNYXNrOwogICAgIGlmICh1c2VSZWN0KQogICAgICAgICBvcHRp
b25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0OwogICAgIGlmIChvcGFjaXR5
IDwgMSkKQEAgLTQyNiwxMiArNDIzLDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4
dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJCiAgICAg
ICAgIGZsYWdzIHw9IFNob3VsZEFudGlhbGlhczsKICAgICB9CiAKLSAgICBpZiAobWFza2VkIHx8
IHVzZUFudGlhbGlhc2luZyB8fCBvcGFjaXR5IDwgMSkKKyAgICBpZiAodXNlQW50aWFsaWFzaW5n
IHx8IG9wYWNpdHkgPCAxKQogICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKIAogICAgIFJl
ZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsKICAgICBwcm9ncmFtID0g
ZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmdldFNoYWRlclByb2dyYW0ob3B0aW9ucyk7Ci0gICAgZHJh
d1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdzLCB0
ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4
dHVyZSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRl
eHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBv
cGFjaXR5KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENvbG9yKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29u
c3QgQ29sb3ImIGNvbG9yKQpAQCAtNTA0LDExICs1MDEsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXcoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW8KICAgICBzaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgoc2hhZGVyUHJvZ3JhbS0+bW9kZWxW
aWV3TWF0cml4TG9jYXRpb24oKSwgbWF0cml4KTsKICAgICBzaGFkZXJQcm9ncmFtLT5zZXRNYXRy
aXgoc2hhZGVyUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCksIGRhdGEoKS5wcm9q
ZWN0aW9uTWF0cml4KTsKIAotICAgIGlmIChmbGFncyAmIFNob3VsZEJsZW5kKSB7Ci0gICAgICAg
IG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3ND
b250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpOworICAgIGlmIChpc0luTWFza01vZGUoKSkg
eworICAgICAgICBtX2NvbnRleHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpaRVJP
LCBHcmFwaGljc0NvbnRleHQzRDo6U1JDX0FMUEhBKTsKICAgICAgICAgbV9jb250ZXh0M0QtPmVu
YWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOwotICAgIH0gZWxzZQotICAgICAgICBtX2Nv
bnRleHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChmbGFncyAmIFNob3VsZEJsZW5kKSB7CisgICAgICAgICAgICBtX2NvbnRl
eHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNE
OjpPTkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5lbmFibGUo
R3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBt
X2NvbnRleHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOworICAgIH0KIAog
ICAgIGlmIChmbGFncyAmIFNob3VsZEFudGlhbGlhcykKICAgICAgICAgZHJhd0VkZ2VUcmlhbmds
ZXMoc2hhZGVyUHJvZ3JhbSk7CkBAIC01MTYsOCArNTE4LDExIEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vCiAgICAgICAgIGRyYXdVbml0UmVjdChzaGFkZXJQcm9ncmFtLCBkcmF3aW5nTW9kZSk7
CiAKICAgICBtX2NvbnRleHQzRC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlclByb2dy
YW0tPnZlcnRleExvY2F0aW9uKCkpOworICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3JhcGhp
Y3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEp
OworICAgIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKIH0K
LXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZs
YWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0
IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9n
cmFtLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFt
KHByb2dyYW0tPnByb2dyYW1JRCgpKTsKICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwpAQCAtNTMzLDE5ICs1MzgsMTAgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbSogcHIKICAgICBpZiAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkKICAg
ICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLTEpOwogCi0KICAgICBwcm9ncmFt
LT5zZXRNYXRyaXgocHJvZ3JhbS0+dGV4dHVyZVNwYWNlTWF0cml4TG9jYXRpb24oKSwgcGF0dGVy
blRyYW5zZm9ybSk7CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFtLT5vcGFjaXR5
TG9jYXRpb24oKSwgb3BhY2l0eSk7CiAKLSAgICBpZiAobWFza1RleHR1cmUgJiYgbWFza1RleHR1
cmUtPmlzVmFsaWQoKSkgewotICAgICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wqIG1hc2tUZXh0
dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wqPihtYXNrVGV4dHVyZSk7
Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgbWFza1RleHR1cmVHTC0+aWQoKSk7Ci0gICAgICAgIG1fY29udGV4
dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+bWFza0xvY2F0aW9uKCksIDEpOwotICAgICAgICBtX2Nv
bnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAg
IH0KLQotICAgIGlmIChvcGFjaXR5IDwgMSB8fCBtYXNrVGV4dHVyZSkKKyAgICBpZiAob3BhY2l0
eSA8IDEpCiAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgZHJhdyhyZWN0LCBt
b2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4s
IGZsYWdzKTsKQEAgLTk0Myw3ICs5MzksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0Zp
bHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNhbXBsZXIsIGNvbnN0IEJpdG1hcFRleAogCiAg
ICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgZmlsdGVyLCBwYXNzLCBzYW1w
bGVyLmNvbnRlbnRTaXplKCksIHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KGNv
bnRlbnRUZXh0dXJlKS5pZCgpKTsKICAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdChJbnRQb2ludDo6
emVybygpLCBzYW1wbGVyLmNvbnRlbnRTaXplKCkpOwotICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRo
UHJvZ3JhbShwcm9ncmFtLmdldCgpLCBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wm
PihzYW1wbGVyKS5pZCgpLCAwLCBJbnRTaXplKDEsIDEpLCB0YXJnZXRSZWN0LCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCAxLCAwKTsKKyAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJv
Z3JhbS5nZXQoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oc2FtcGxlciku
aWQoKSwgMCwgSW50U2l6ZSgxLCAxKSwgdGFyZ2V0UmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgMSk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjph
cHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQml0bWFwVGV4
dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmgKaW5kZXggM2U4MGExNzgyZWMxNDg5MWZkN2JjY2MyZTk5MDkzYjk2ZGRk
ZTMxNS4uYTQyMzQxZmYzNDE3ZDJkZmRhNGFjNTAxOGIwYWQ4YTMwYzQwOGI3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGV4dHVyZU1hcHBl
ciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9y
JiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOdW1iZXIoaW50IG51
bWJlciwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3Qg
Qml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVu
c2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0
dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1
cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2ln
bmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJl
KFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVT
aXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdl
cyA9IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZh
Y2UpIE9WRVJSSURFOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBUZXh0dXJl
TWFwcGVyR0woKTsKIAotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IElu
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4
dHVyZSk7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIGZsb2F0IG9wYWNpdHkpOwogICAgIHZvaWQgZHJhdyhjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdpbmdNb2RlLCBGbGFncyk7CiAKICAgICB2b2lk
IGRyYXdVbml0UmVjdChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdp
bmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKaW5kZXggMWU0
OWY5YjZlY2E4OGQ2YTdjZmQ5MzE5MTIyMmMwNDgxMTAzOWQ3NS4uNTJhODQ4NzkyZDZmZjY2ZTY0
NzlhYWRhMjUxNDI4MTM5ODZhNWQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZl
cjo6YmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbgogI2Vu
ZGlmCiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25z
dCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJp
dG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCAvKiBleHBvc2VkRWRnZXMgKi8pCit2
b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4
dHVyZSYgdGV4dHVyZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCAvKiBleHBvc2Vk
RWRnZXMgKi8pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gY3VycmVudENvbnRl
eHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0xMjIsMjIgKzEyMiw4IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0
dXJlLCBjb25zdCBGCiAKICAgICBjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXImIHRleHR1
cmVJbWFnZUJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZl
ciY+KHRleHR1cmUpOwogICAgIEltYWdlQnVmZmVyKiBpbWFnZSA9IHRleHR1cmVJbWFnZUJ1ZmZl
ci5tX2ltYWdlLmdldCgpOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza2VkSW1hZ2U7Ci0K
LSAgICBpZiAobWFza1RleHR1cmUgJiYgbWFza1RleHR1cmUtPmlzVmFsaWQoKSkgewotICAgICAg
ICBjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIqIG1hc2sgPSBzdGF0aWNfY2FzdDxjb25z
dCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIqPihtYXNrVGV4dHVyZSk7Ci0gICAgICAgIG1hc2tl
ZEltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtYXNrVGV4dHVyZS0+Y29udGVudFNpemUoKSk7
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0NvbnRleHQgPSBtYXNrZWRJbWFnZS0+Y29u
dGV4dCgpOwotICAgICAgICBtYXNrQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludDo6emVybygpLCBDb21wb3NpdGVDb3B5KTsKLSAgICAg
ICAgaWYgKG9wYWNpdHkgPCAxKSB7Ci0gICAgICAgICAgICBtYXNrQ29udGV4dC0+c2V0QWxwaGEo
b3BhY2l0eSk7Ci0gICAgICAgICAgICBvcGFjaXR5ID0gMTsKLSAgICAgICAgfQotICAgICAgICBt
YXNrQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2stPm1faW1hZ2UuZ2V0KCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIEludFBvaW50Ojp6ZXJvKCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwot
ICAgICAgICBpbWFnZSA9IG1hc2tlZEltYWdlLmdldCgpOwotICAgIH0KLQogICAgIGNvbnRleHQt
PnNhdmUoKTsKKyAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oaXNJbk1hc2tNb2Rl
KCkgPyBDb21wb3NpdGVEZXN0aW5hdGlvbkluIDogQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAg
Y29udGV4dC0+c2V0QWxwaGEob3BhY2l0eSk7CiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykKICAg
ICBjb250ZXh0LT5jb25jYXQzRFRyYW5zZm9ybShtYXRyaXgpOwpAQCAtMTU1LDYgKzE0MSw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnRleHQt
PnNhdmUoKTsKKyAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oaXNJbk1hc2tNb2Rl
KCkgPyBDb21wb3NpdGVEZXN0aW5hdGlvbkluIDogQ29tcG9zaXRlU291cmNlT3Zlcik7CiAjaWYg
RU5BQkxFKDNEX1JFTkRFUklORykKICAgICBjb250ZXh0LT5jb25jYXQzRFRyYW5zZm9ybShtYXRy
aXgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAppbmRleCA4MGU2
OTQ0MDU5MDU0NzYwN2U3MDMyNjFlNzkzMTU1ZGRlM2MyMGQ1Li4zNWYyYjQ0OWQ5NmRjMGJjOWI3
YjBhZjE5OGFjMDQwY2Q5NGQ2ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZl
ci5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxl
bWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9h
dCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBj
b25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBU
ZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJl
LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4
cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3Im
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpIE9WRVJSSURFIHsgbV9jdXJyZW50
U3VyZmFjZSA9IHN1cmZhY2U7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4YTJj
Yzk5MmI3MTEwNjY2MTA3YzFiZTAzMTNiYTRhZjk2YzZmYmFmLi4wYmU0OTZjZDk4ZTM4ZTFiN2I4
OTk1MmQwODliOThmZDY1ZWE1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAt
MjAsNiArMjAsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJMYXllci5oIgogCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI3LDcgKzI5LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyB7CiBwdWJs
aWM6CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2U7Ci0gICAgUmVmUHRyPEJpdG1h
cFRleHR1cmU+IG1hc2s7CiAgICAgZmxvYXQgb3BhY2l0eTsKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0cmFuc2Zvcm07CiAgICAgSW50U2l6ZSBvZmZzZXQ7CkBAIC0xMDgsOCArMTA5LDYgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFp
bnRPcHRpb25zJiBvcHRpb25zKQogICAgIHRyYW5zZm9ybS5tdWx0aXBseShtX2N1cnJlbnRUcmFu
c2Zvcm0uY29tYmluZWQoKSk7CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5vcGFjaXR5
OwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrID0gb3B0aW9ucy5tYXNrOwotCiAgICAg
aWYgKG1fc3RhdGUuc29saWRDb2xvci5pc1ZhbGlkKCkgJiYgIW1fc3RhdGUuY29udGVudHNSZWN0
LmlzRW1wdHkoKSkgewogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENv
bG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIGJsZW5kV2l0aE9wYWNpdHkobV9z
dGF0ZS5zb2xpZENvbG9yLCBvcGFjaXR5KSk7CiAgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1
Z0JvcmRlcnMpCkBAIC0xMjAsNyArMTE5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgIGlm
IChtX2JhY2tpbmdTdG9yZSkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZS5kcmF3c0NvbnRlbnQg
JiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc3RhdGUuc2l6ZS5pc0VtcHR5KCkpOwog
ICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fYmFja2lu
Z1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVy
UmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAgICAgICBtX2JhY2tp
bmdTdG9yZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBsYXll
clJlY3QoKSwgdHJhbnNmb3JtLCBvcGFjaXR5KTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0Rl
YnVnQm9yZGVycykKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kcmF3Qm9yZGVyKG9wdGlv
bnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVn
Qm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAgICAgICAvLyBPbmx5IGRy
YXcgcmVwYWludCBjb3VudCBmb3IgdGhlIG1haW4gYmFja2luZyBzdG9yZS4KQEAgLTEzMCw3ICsx
MjksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVN
YXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAKICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7
CiAgICAgICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9jb250
ZW50c0xheWVyLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1f
c3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVy
ZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiAgICAg
ICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCiAgICAgICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmRlYnVnQm9y
ZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbV9zdGF0ZS5jb250ZW50c1JlY3Qs
IHRyYW5zZm9ybSk7CiAgICAgfQpAQCAtMTY2LDgyICsxNjUsMTYgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMmIG8KICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7CiB9CiAK
LUludFJlY3QgVGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpCi17
Ci0gICAgLy8gRklYTUU6IEFkZCBhbiBpbnZlcnNlIHRyYW5zZm9ybSB0byBMYXllclRyYW5zZm9y
bS4KLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobV9jdXJyZW50VHJhbnNmb3Jt
LmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKLX0KLQotSW50UmVjdCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCi17Ci0gICAgSW50UmVjdCByZWN0OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxvY2Fs
VHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KS5tdWx0aXBseShtX2N1cnJl
bnRUcmFuc2Zvcm0uY29tYmluZWQoKSk7Ci0gICAgcmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobG9j
YWxUcmFuc2Zvcm0ubWFwUmVjdChsYXllclJlY3QoKSkpOwotICAgIGlmICghbV9zdGF0ZS5tYXNr
c1RvQm91bmRzICYmICFtX3N0YXRlLm1hc2tMYXllcikgewotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICByZWN0LnVuaXRl
KG1fY2hpbGRyZW5baV0tPmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KG1hdHJpeCkpOwotICAgIH0K
LQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBpZiAobV9jdXJyZW50RmlsdGVycy5oYXNP
dXRzZXRzKCkpIHsKLSAgICAgICAgRmlsdGVyT3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50Rmls
dGVycy5vdXRzZXRzKCk7Ci0gICAgICAgIEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QocmVj
dCk7Ci0gICAgICAgIHJlY3QubW92ZShzdGQ6Om1heCgwLCAtb3V0c2V0cy5sZWZ0KCkpLCBzdGQ6
Om1heCgwLCAtb3V0c2V0cy50b3AoKSkpOwotICAgICAgICByZWN0LmV4cGFuZChvdXRzZXRzLmxl
ZnQoKSArIG91dHNldHMucmlnaHQoKSwgb3V0c2V0cy50b3AoKSArIG91dHNldHMuYm90dG9tKCkp
OwotICAgICAgICByZWN0LnVuaXRlKHVuZmlsdGVyZWRUYXJnZXRSZWN0KTsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikKLSAgICAgICAgcmVjdC51bml0ZSht
X3N0YXRlLnJlcGxpY2FMYXllci0+aW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobWF0cml4KSk7Ci0K
LSAgICByZXR1cm4gcmVjdDsKLX0KLQotVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c0xheWVy
Q291bnQgVGV4dHVyZU1hcHBlckxheWVyOjpjb3VudFBvdGVudGlhbExheWVyc1dpdGhDb250ZW50
cygpIGNvbnN0Citib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c2hvdWxkQmxlbmQoKSBjb25zdAog
ewotICAgIGludCBzZWxmTGF5ZXJzV2l0aENvbnRlbnRzID0gKG1fc3RhdGUuZHJhd3NDb250ZW50
ID8gMSA6IDApICsgKG1fY29udGVudHNMYXllciA/IDEgOiAwKTsKLSAgICBpbnQgcG90ZW50aWFs
TGF5ZXJzV2l0aENvbnRlbnRzID0gc2VsZkxheWVyc1dpdGhDb250ZW50cyArIG1fY2hpbGRyZW4u
c2l6ZSgpOwotCi0gICAgaWYgKCFwb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMpCi0gICAgICAg
IHJldHVybiBOb0xheWVyc1dpdGhDb250ZW50OwotCi0gICAgaWYgKHBvdGVudGlhbExheWVyc1dp
dGhDb250ZW50cyA+IDEpCi0gICAgICAgIHJldHVybiBNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50
czsKLQotICAgIGlmIChtX2NoaWxkcmVuLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFNpbmds
ZUxheWVyV2l0aENvbnRlbnRzOwotCi0gICAgcmV0dXJuIG1fY2hpbGRyZW4uZmlyc3QoKS0+Y291
bnRQb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMoKTsKLX0KKyAgICBpZiAobV9zdGF0ZS5wcmVz
ZXJ2ZXMzRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1ib29sIFRleHR1cmVNYXBwZXJMYXll
cjo6c2hvdWxkUGFpbnRUb0ludGVybWVkaWF0ZVN1cmZhY2UoKSBjb25zdAotewogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICAgICBpZiAobV9jdXJyZW50RmlsdGVycy5zaXplKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogI2VuZGlmCi0gICAgYm9vbCBoYXNPcGFjaXR5ID0gbV9jdXJyZW50T3Bh
Y2l0eSA8IDAuOTk7Ci0gICAgYm9vbCBjYW5IYXZlTXVsdGlwbGVMYXllcnNXaXRoQ29udGVudCA9
IGNvdW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgPT0gTXVsdGlwbGVMYXllcnNXaXRo
Q29udGVudHM7Ci0gICAgYm9vbCBoYXNSZXBsaWNhID0gISFtX3N0YXRlLnJlcGxpY2FMYXllcjsK
LSAgICBib29sIGhhc01hc2sgPSAhIW1fc3RhdGUubWFza0xheWVyOwotCi0gICAgLy8gV2UgZG9u
J3QgdXNlIHR3by1wYXNzIGJsZW5kaW5nIGZvciBwcmVzZXJ2ZXMtM2QsIHRoYXQncyBpbiBzeW5j
IHdpdGggU2FmYXJpLgotICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBXZSBzaG91bGQgdXNlIGFuIGludGVybWVkaWF0ZSBzdXJmYWNl
IHdoZW4gYmxlbmRpbmcgc2V2ZXJhbCBpdGVtcyB3aXRoIGFuIGFuY2VzdG9yIG9wYWNpdHkuCi0g
ICAgLy8gVGVzdGVkIGJ5IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb3BhY2l0
eS5odG1sCi0gICAgaWYgKGhhc09wYWNpdHkgJiYgKGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhD
b250ZW50IHx8IGhhc1JlcGxpY2EpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdl
IHNob3VsZCB1c2UgYW4gaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd2l0aCBhIG1hc2tlZCBhbmNlc3Rv
ci4KLSAgICAvLyBJbiB0aGUgY2FzZSBvZiByZXBsaWNhcyB0aGUgbWFzayBpcyBhcHBsaWVkIGJl
Zm9yZSByZXBsaWNhdGluZy4KLSAgICAvLyBUZXN0ZWQgYnkgY29tcG9zaXRpbmcvbWFza3MvbWFz
a2VkLWFuY2VzdG9yLmh0bWwKLSAgICBpZiAoaGFzTWFzayAmJiBjYW5IYXZlTXVsdGlwbGVMYXll
cnNXaXRoQ29udGVudCAmJiAhaGFzUmVwbGljYSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY3VycmVudE9wYWNpdHkgPCAxIHx8IG1fc3Rh
dGUubWFza0xheWVyIHx8IChtX3N0YXRlLnJlcGxpY2FMYXllciAmJiBtX3N0YXRlLnJlcGxpY2FM
YXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpOwogfQogCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6
aXNWaXNpYmxlKCkgY29uc3QKQEAgLTI2MSwxMSArMTk0LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4dHVyZU1hcHBl
clBhaW4KIHsKICAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKICAgICAgICAgVGV4dHVy
ZU1hcHBlclBhaW50T3B0aW9ucyByZXBsaWNhT3B0aW9ucyhvcHRpb25zKTsKLSAgICAgICAgLy8g
V2UgY2hvb3NlIGVpdGhlciB0aGUgY29udGVudCdzIG1hc2sgb3IgdGhlIHJlcGxpY2EncyBtYXNr
LgotICAgICAgICAvLyBGSVhNRTogYmxlbmQgdGhlIHR3byBpZiBib3RoIGV4aXN0LgotICAgICAg
ICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyKQotICAgICAgICAg
ICAgcmVwbGljYU9wdGlvbnMubWFzayA9IG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1h
c2tMYXllci0+dGV4dHVyZSgpOwotCiAgICAgICAgIHJlcGxpY2FPcHRpb25zLnRyYW5zZm9ybQog
ICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFu
c2Zvcm0uY29tYmluZWQoKSkKICAgICAgICAgICAgIC5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zv
cm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOwpAQCAtMjg1LDYgKzIxMywxMSBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiAgICAgbV9j
dXJyZW50T3BhY2l0eSA9IG9wYWNpdHk7CiB9CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1
cmVNYXBwZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSgpCit7CisgICAgcmV0dXJuIFRyYW5zZm9y
bWF0aW9uTWF0cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29t
YmluZWQoKSkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgp
KTsKK30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsK
QEAgLTMwNyw3ICsyNDAsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRLZWVwQ29udGVudFRleHR1cmUo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBCaXRt
YXBUZXh0dXJlKiBzb3VyY2UsIEludFJlY3QmIHRhcmdldFJlY3QpCitzdGF0aWMgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgQml0bWFwVGV4dHVyZSogc291cmNl
KQogewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCiAgICAgICAgIHJldHVybiBzb3VyY2U7CkBA
IC0zMTcsNTEgKzI1MCwxODQgQEAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBw
bHlGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIFQKIH0KICNlbmRpZgog
Ci12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyB2b2lkIHJlc29sdmVPdmVybGFwcyhS
ZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lvbiwgUmVnaW9uIG5l
d1JlZ2lvbikKIHsKLSAgICBpZiAoIWlzVmlzaWJsZSgpKQorICAgIFJlZ2lvbiBuZXdPdmVybGFw
UmVnaW9uKG5ld1JlZ2lvbik7CisgICAgbmV3T3ZlcmxhcFJlZ2lvbi5pbnRlcnNlY3Qobm9uT3Zl
cmxhcFJlZ2lvbik7CisgICAgbm9uT3ZlcmxhcFJlZ2lvbi5zdWJ0cmFjdChuZXdPdmVybGFwUmVn
aW9uKTsKKyAgICBvdmVybGFwUmVnaW9uLnVuaXRlKG5ld092ZXJsYXBSZWdpb24pOworICAgIG5l
d1JlZ2lvbi5zdWJ0cmFjdChvdmVybGFwUmVnaW9uKTsKKyAgICBub25PdmVybGFwUmVnaW9uLnVu
aXRlKG5ld1JlZ2lvbik7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlT3Zl
cmxhcFJlZ2lvbnMoUmVnaW9uJiBvdmVybGFwUmVnaW9uLCBSZWdpb24mIG5vbk92ZXJsYXBSZWdp
b24sIGJvb2wgYWx3YXlzUmVzb2x2ZVNlbGZPdmVybGFwKQoreworICAgIGlmICghbV9zdGF0ZS52
aXNpYmxlIHx8ICFtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eSAqIG1fY3VycmVudE9wYWNpdHk7Ci0g
ICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1hc2tUZXh0dXJlID0gbV9zdGF0ZS5tYXNrTGF5ZXIg
PyBtX3N0YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpIDogMDsKKyAgICBGbG9hdFJlY3QgYm91bmRp
bmdSZWN0OworICAgIGlmIChtX2JhY2tpbmdTdG9yZSB8fCBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMg
fHwgbV9zdGF0ZS5tYXNrTGF5ZXIgfHwgaGFzRmlsdGVycygpKQorICAgICAgICBib3VuZGluZ1Jl
Y3QgPSBsYXllclJlY3QoKTsKKyAgICBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIgfHwgbV9zdGF0
ZS5zb2xpZENvbG9yLmFscGhhKCkpCisgICAgICAgIGJvdW5kaW5nUmVjdCA9IG1fc3RhdGUuY29u
dGVudHNSZWN0OwogCi0gICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMo
b3B0aW9ucyk7Ci0gICAgcGFpbnRPcHRpb25zLm1hc2sgPSBtYXNrVGV4dHVyZS5nZXQoKTsKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgaWYgKG1fY3VycmVudEZpbHRlcnMuaGFzT3V0c2V0
cygpKSB7CisgICAgICAgIEZpbHRlck91dHNldHMgb3V0c2V0cyA9IG1fY3VycmVudEZpbHRlcnMu
b3V0c2V0cygpOworICAgICAgICBJbnRSZWN0IHVuZmlsdGVyZWRUYXJnZXRSZWN0KGJvdW5kaW5n
UmVjdCk7CisgICAgICAgIGJvdW5kaW5nUmVjdC5tb3ZlKHN0ZDo6bWF4KDAsIC1vdXRzZXRzLmxl
ZnQoKSksIHN0ZDo6bWF4KDAsIC1vdXRzZXRzLnRvcCgpKSk7CisgICAgICAgIGJvdW5kaW5nUmVj
dC5leHBhbmQob3V0c2V0cy5sZWZ0KCkgKyBvdXRzZXRzLnJpZ2h0KCksIG91dHNldHMudG9wKCkg
KyBvdXRzZXRzLmJvdHRvbSgpKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHVuZmlsdGVy
ZWRUYXJnZXRSZWN0KTsKKyAgICB9CisjZW5kaWYKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHJlcGxpY2FNYXRyaXg7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAg
IHJlcGxpY2FNYXRyaXggPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIGJvdW5kaW5nUmVj
dC51bml0ZShyZXBsaWNhTWF0cml4Lm1hcFJlY3QoYm91bmRpbmdSZWN0KSk7CisgICAgfQogCi0g
ICAgaWYgKCFzaG91bGRQYWludFRvSW50ZXJtZWRpYXRlU3VyZmFjZSgpKSB7Ci0gICAgICAgIHBh
aW50T3B0aW9ucy5vcGFjaXR5ID0gb3BhY2l0eTsKLSAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRy
ZW5XaXRoUmVwbGljYShwYWludE9wdGlvbnMpOworICAgIGJvdW5kaW5nUmVjdCA9IG1fY3VycmVu
dFRyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFJlY3QoYm91bmRpbmdSZWN0KTsKKworICAgIC8vIENv
dW50IGFsbCBtYXNrcyBhbmQgZmlsdGVycyBhcyBvdmVybGFwIGxheWVycy4KKyAgICBpZiAoaGFz
RmlsdGVycygpIHx8IG1fc3RhdGUubWFza0xheWVyIHx8IChtX3N0YXRlLnJlcGxpY2FMYXllciAm
JiBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpKSB7CisgICAgICAgIFJl
Z2lvbiBuZXdPdmVybGFwUmVnaW9uKGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0KSk7Cisg
ICAgICAgIG5vbk92ZXJsYXBSZWdpb24uc3VidHJhY3QobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAg
ICAgIG92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICAvLyBQcmVwYXJlIGEgc3VyZmFjZSB0byBwYWludCBpbnRvLgotICAg
IC8vIFdlIHBhaW50IGludG8gdGhlIHN1cmZhY2UgaWdub3JpbmcgdGhlIG9wYWNpdHkvdHJhbnNm
b3JtIG9mIHRoZSBjdXJyZW50IGxheWVyLgotICAgIEludFJlY3Qgc3VyZmFjZVJlY3QgPSBpbnRl
cm1lZGlhdGVTdXJmYWNlUmVjdCgpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNl
ID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHN1cmZhY2VS
ZWN0LnNpemUoKSk7Ci0gICAgcGFpbnRPcHRpb25zLnN1cmZhY2UgPSBzdXJmYWNlOwotICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7Ci0gICAgcGFp
bnRPcHRpb25zLm9wYWNpdHkgPSAxOworICAgIFJlZ2lvbiBuZXdPdmVybGFwUmVnaW9uOworICAg
IFJlZ2lvbiBuZXdOb25PdmVybGFwUmVnaW9uKGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0
KSk7CisKKyAgICBpZiAoIW1fc3RhdGUubWFza3NUb0JvdW5kcykgeworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRl
eHR1cmVNYXBwZXJMYXllciogY2hpbGQgPSBtX2NoaWxkcmVuW2ldOworICAgICAgICAgICAgYm9v
bCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXBGb3JDaGlsZHJlbiA9IGZhbHNlOworICAgICAgICAg
ICAgY2hpbGQtPmNvbXB1dGVPdmVybGFwUmVnaW9ucyhuZXdPdmVybGFwUmVnaW9uLCBuZXdOb25P
dmVybGFwUmVnaW9uLCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXBGb3JDaGlsZHJlbik7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKKyAgICAgICAg
bmV3T3ZlcmxhcFJlZ2lvbi51bml0ZShyZXBsaWNhTWF0cml4Lm1hcFJlY3QobmV3T3ZlcmxhcFJl
Z2lvbi5ib3VuZHMoKSkpOworICAgICAgICBSZWdpb24gcmVwbGljYVJlZ2lvbihyZXBsaWNhTWF0
cml4Lm1hcFJlY3QobmV3Tm9uT3ZlcmxhcFJlZ2lvbi5ib3VuZHMoKSkpOworICAgICAgICByZXNv
bHZlT3ZlcmxhcHMobmV3T3ZlcmxhcFJlZ2lvbiwgbmV3Tm9uT3ZlcmxhcFJlZ2lvbiwgcmVwbGlj
YVJlZ2lvbik7CisgICAgfQogCi0gICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IG1fY3VycmVu
dFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKLSAgICBwYWludE9wdGlvbnMub2Zmc2V0
ID0gLUludFNpemUoc3VyZmFjZVJlY3QueCgpLCBzdXJmYWNlUmVjdC55KCkpOworICAgIGlmICgh
YWx3YXlzUmVzb2x2ZVNlbGZPdmVybGFwICAmJiBzaG91bGRCbGVuZCgpKSB7CisgICAgICAgIG5l
d05vbk92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgICAgIG5ld092
ZXJsYXBSZWdpb24gPSBSZWdpb24oKTsKKyAgICB9CiAKLSAgICBwYWludFNlbGZBbmRDaGlsZHJl
bldpdGhSZXBsaWNhKHBhaW50T3B0aW9ucyk7CisgICAgb3ZlcmxhcFJlZ2lvbi51bml0ZShuZXdP
dmVybGFwUmVnaW9uKTsKKyAgICByZXNvbHZlT3ZlcmxhcHMob3ZlcmxhcFJlZ2lvbiwgbm9uT3Zl
cmxhcFJlZ2lvbiwgbmV3Tm9uT3ZlcmxhcFJlZ2lvbik7Cit9CiAKLSAgICAvLyBJZiB3ZSBwYWlu
dGVkIHRoZSByZXBsaWNhLCB0aGUgbWFzayBpcyBhbHJlYWR5IGFwcGxpZWQgc28gd2UgZG9uJ3Qg
bmVlZCB0byBwYWludCBpdCBhZ2Fpbi4KLSAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpCi0g
ICAgICAgIG1hc2tUZXh0dXJlID0gMDsKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFVz
aW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9u
cykKK3sKKyAgICBSZWdpb24gb3ZlcmxhcFJlZ2lvbjsKKyAgICBSZWdpb24gbm9uT3ZlcmxhcFJl
Z2lvbjsKKyAgICBjb21wdXRlT3ZlcmxhcFJlZ2lvbnMob3ZlcmxhcFJlZ2lvbiwgbm9uT3Zlcmxh
cFJlZ2lvbik7CisgICAgaWYgKG92ZXJsYXBSZWdpb24uaXNFbXB0eSgpKSB7CisgICAgICAgIHBh
aW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2Eob3B0aW9ucyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSBub25PdmVybGFwUmVnaW9uLnJl
Y3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgewor
ICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCByZWN0c1tpXSk7CisgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxp
Y2Eob3B0aW9ucyk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZW5kQ2xpcCgpOwor
ICAgIH0KKworICAgIHJlY3RzID0gb3ZlcmxhcFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCByZWN0
ID0gcmVjdHNbaV07CisgICAgICAgIGNvbnN0IHN0YXRpYyBpbnQgbWF4UmVjdERpbWVuc2lvbiA9
IDIwMDA7CisgICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyB4
ICs9IG1heFJlY3REaW1lbnNpb24pIHsKKyAgICAgICAgICAgIGZvciAoaW50IHkgPSByZWN0Lnko
KTsgeSA8IHJlY3QubWF4WSgpOyB5ICs9IG1heFJlY3REaW1lbnNpb24pIHsKKyAgICAgICAgICAg
ICAgICBJbnRSZWN0IHRpbGVSZWN0KHgsIHksIG1heFJlY3REaW1lbnNpb24sIG1heFJlY3REaW1l
bnNpb24pOworICAgICAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChyZWN0KTsKKyAgICAg
ICAgICAgICAgICBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKG9wdGlvbnMsIHRpbGVSZWN0
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KIAordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRp
b25zKQoreworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFza01vZGUodHJ1ZSk7Cisg
ICAgcGFpbnRTZWxmKG9wdGlvbnMpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFz
a01vZGUoZmFsc2UpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFJlZlB0cjxCaXRtYXBUZXh0
dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Q
b29sKHNpemUpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFj
ZS5nZXQoKSk7CisgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucyk7CisgICAgaWYgKG1f
c3RhdGUubWFza0xheWVyKQorICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNrKG9w
dGlvbnMpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBzdXJmYWNlID0gYXBwbHlGaWx0
ZXJzKG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5nZXQo
KSwgc3VyZmFjZVJlY3QpOworICAgIGlmICghbV9jdXJyZW50RmlsdGVycy5pc0VtcHR5KCkpCisg
ICAgICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9jdXJyZW50RmlsdGVycywgb3B0aW9ucy50
ZXh0dXJlTWFwcGVyLCBzdXJmYWNlLmdldCgpKTsKICNlbmRpZgorICAgIG9wdGlvbnMudGV4dHVy
ZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CisgICAgcmV0dXJuIHN1cmZhY2U7
Cit9CiAKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbW1pdFN1cmZhY2UoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQorewog
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNlLmdl
dCgpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAgdGFy
Z2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25zLm9m
ZnNldC5oZWlnaHQoKSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMudHJh
bnNmb3JtKTsKLSAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3Jt
LmNvbWJpbmVkKCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1
cmZhY2UuZ2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlhdGVT
dXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCit7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FTdXJmYWNl
OworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYWluU3VyZmFjZTsKKyAgICBUZXh0dXJlTWFw
cGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKKyAgICBwYWludE9wdGlvbnMu
b2Zmc2V0ID0gLUludFNpemUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICBwYWludE9wdGlvbnMu
b3BhY2l0eSA9IDE7CisgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCk7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAgIHBhaW50
T3B0aW9ucy50cmFuc2Zvcm0gPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIHJlcGxpY2FT
dXJmYWNlID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJlY3Quc2l6ZSgpKTsKKyAg
ICAgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7Cisg
ICAgICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCisgICAg
ICAgICAgICBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5TWFz
ayhwYWludE9wdGlvbnMpOworICAgIH0KIAotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJh
d1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9w
YWNpdHksIG1hc2tUZXh0dXJlLmdldCgpKTsKKyAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYgb3B0
aW9ucy5vcGFjaXR5ID09IDEpCisgICAgICAgIHJlcGxpY2FTdXJmYWNlID0gY29tbWl0U3VyZmFj
ZShvcHRpb25zLCByZXBsaWNhU3VyZmFjZSwgcmVjdCwgMSk7CisKKyAgICBtYWluU3VyZmFjZSA9
IHBhaW50SW50b1N1cmZhY2UocGFpbnRPcHRpb25zLCByZWN0LnNpemUoKSk7CisgICAgaWYgKHJl
cGxpY2FTdXJmYWNlKSB7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZh
Y2UocmVwbGljYVN1cmZhY2UuZ2V0KCkpOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIt
PmRyYXdUZXh0dXJlKCptYWluU3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onpl
cm8oKSwgcmVjdC5zaXplKCkpKTsKKyAgICAgICAgbWFpblN1cmZhY2UgPSByZXBsaWNhU3VyZmFj
ZTsKKyAgICB9CisKKyAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIG1haW5TdXJmYWNlLCByZWN0
LCBvcHRpb25zLm9wYWNpdHkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRS
ZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBpZiAoIWlzVmlzaWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3VsZEJs
ZW5kKCkpIHsKKyAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShvcHRpb25z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOworICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0gb3B0
aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKKyAgICBwYWludFVzaW5nT3ZlcmxhcFJl
Z2lvbnMocGFpbnRPcHRpb25zKTsKIH0KIAogVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVyZU1h
cHBlckxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2MWZiODI3NjcwODYwM2Ux
MTBmYWNlZDQxODlkYjdkYTBiYzAzMWZhLi42MDJiMmMzOTQxNTUyZTViZDFlNGZhMWFiYzgzZDky
Y2MwNjA0ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0zMSw2ICszMSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVnaW9uOwogY2xhc3MgVGV4dHVyZU1hcHBl
clBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwogCkBAIC03
Myw2ICs3NCwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZvaWQg
c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKKworICAgIGJvb2wg
aGFzRmlsdGVycygpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICAg
ICAgcmV0dXJuICFtX2N1cnJlbnRGaWx0ZXJzLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgc2V0RGVidWdWaXN1YWxzKGJv
b2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZsb2F0
IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKICAgICB2b2lkIHNl
dFJlcGFpbnRDb3VudChpbnQpOwogICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllciopOwpAQCAtOTIsOCArMTAzLDYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OwogICAgIHZv
aWQgY29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKTsKLSAgICBJbnRSZWN0IGludGVybWVkaWF0
ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgSW50UmVjdCBp
bnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpOwogCiAgICAgc3RhdGljIGludCBjb21wYXJlR3JhcGhp
Y3NMYXllcnNaVmFsdWUoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYik7CiAgICAgc3RhdGlj
IHZvaWQgc29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqID4mIGFycmF5LCBp
bnQgZmlyc3QsIGludCBsYXN0KTsKQEAgLTEwMSwxNSArMTEwLDIxIEBAIHByaXZhdGU6CiAgICAg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5nU3Rv
cmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQgYWRq
dXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3Np
dGlvbkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29uc3Q7
Ci0KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CiAgICAgdm9p
ZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21QYXJl
bnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAKKyAgICB2b2lkIGNvbXB1dGVP
dmVybGFwUmVnaW9ucyhSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJl
Z2lvbiwgYm9vbCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXAgPSB0cnVlKTsKKwogICAgIHZvaWQg
cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOworICAgIHZv
aWQgcGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMmKTsKKyAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2UoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lk
IHBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHBhaW50U2VsZihjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGlsZHJlbihjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGls
ZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKKyAgICB2
b2lkIGFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAKICAgICAv
LyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5p
bWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKQEAg
LTEyNSw4ICsxNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBNdWx0aXBsZUxheWVyc1dpdGhDb250
ZW50cwogICAgIH07CiAKLSAgICBDb250ZW50c0xheWVyQ291bnQgY291bnRQb3RlbnRpYWxMYXll
cnNXaXRoQ29udGVudHMoKSBjb25zdDsKLSAgICBib29sIHNob3VsZFBhaW50VG9JbnRlcm1lZGlh
dGVTdXJmYWNlKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRCbGVuZCgpIGNvbnN0OwogCiAgICAg
aW5saW5lIEZsb2F0UmVjdCBsYXllclJlY3QoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5ZTY2
ZWU0N2RlZjgxMDExNS4uYjliYWRlZDMzNDczODFjYzBkYjI5ZjIxYzJhYWVkYjAwY2Y5MDU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIg
ewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0
cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0bWFw
VGV4dHVyZSogbWFzayA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9h
dCBvcGFjaXR5ID0gMS4wKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDhjMTMx
ZTYxOWUxYWUwMTc3MWMwY2ViMjU0MTUyNWRjYmU2MjU5MTcuLjUzZWUyZjBkZGE0ZDU4OWVjNTk3
MDRlYjM2NTczYzg3NDVjOWM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmNwcApAQCAtMTI3LDcgKzEyNyw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB2ZXJ0ZXhU
ZW1wbGF0ZSA9CiAgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsKIAog
ICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2ZWMyIHZf
bWFza1RleENvb3JkOwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFzOwogCiAgICAg
ICAgIHZvaWQgbm9vcChpbm91dCB2ZWMyIGR1bW15UGFyYW1ldGVyKSB7IH0KQEAgLTE3Niw4ICsx
NzUsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4VGVtcGxhdGUgPQogICAgICAgICAgICAg
Ly8gVGhlIHRleHR1cmUgcG9zaXRpb24gbmVlZHMgdG8gYmUgY2xhbXBlZCB0byAwLi4xIGJlZm9y
ZSB0aGUgdGV4dHVyZSBtYXRyaXggaXMgYXBwbGllZC4KICAgICAgICAgICAgIHZlYzQgY2xhbXBl
ZFBvc2l0aW9uID0gY2xhbXAodmVjNChwb3NpdGlvbiwgMC4sIDEuKSwgMC4sIDEuKTsKICAgICAg
ICAgICAgIHZfdGV4Q29vcmQgPSAodV90ZXh0dXJlU3BhY2VNYXRyaXggKiBjbGFtcGVkUG9zaXRp
b24pLnh5OwotCi0gICAgICAgICAgICB2X21hc2tUZXhDb29yZCA9IHBvc2l0aW9uOwogICAgICAg
ICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiB1X21vZGVsVmlld01hdHJp
eCAqIHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgICAgICAgIH0KICAgICApOwpAQCAtMjA0LDEy
ICsyMDEsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAgIFNU
UklOR0lGWSgKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgIHVuaWZv
cm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOwotICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX21h
c2s7CiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfY29udGVudFRleHR1cmU7CiAgICAgICAg
IHVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5OwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFs
aWFzOwogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2
ZWMyIHZfbWFza1RleENvb3JkOwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfZmlsdGVyQW1vdW50
OwogICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwogICAgICAgICB1bmlmb3JtIHZl
YzIgdV9zaGFkb3dPZmZzZXQ7CkBAIC0yMjMsNyArMjE4LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGZyYWdtZW50VGVtcGxhdGUgPQogICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZShpbm91dCB2ZWM0
IGNvbG9yKSB7IGNvbG9yID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdl90ZXhDb29yZCk7
IH0KICAgICAgICAgdm9pZCBhcHBseU9wYWNpdHkoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAq
PSB1X29wYWNpdHk7IH0KICAgICAgICAgdm9pZCBhcHBseUFudGlhbGlhc2luZyhpbm91dCB2ZWM0
IGNvbG9yKSB7IGNvbG9yICo9IGFudGlhbGlhcygpOyB9Ci0gICAgICAgIHZvaWQgYXBwbHlNYXNr
KGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdGV4dHVyZTJEKHNfbWFzaywgdl9tYXNrVGV4
Q29vcmQpLmE7IH0KIAogICAgICAgICB2b2lkIGFwcGx5R3JheXNjYWxlRmlsdGVyKGlub3V0IHZl
YzQgY29sb3IpCiAgICAgICAgIHsKQEAgLTMzNCw3ICszMjgsNiBAQCBzdGF0aWMgY29uc3QgY2hh
ciogZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgICAgICAgICBhcHBseVRleHR1cmVJZk5lZWRlZChj
b2xvcik7CiAgICAgICAgICAgICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xvcik7CiAgICAg
ICAgICAgICBhcHBseUFudGlhbGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAgIGFw
cGx5TWFza0lmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5T3BhY2l0eUlmTmVlZGVk
KGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5R3JheXNjYWxlRmlsdGVySWZOZWVkZWQoY29sb3Ip
OwogICAgICAgICAgICAgYXBwbHlTZXBpYUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKQEAgLTM2Miw3
ICszNTUsNiBAQCBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFBhc3NSZQogICAgIFNFVF9BUFBMSUVSX0ZST01f
T1BUSU9OUyhSZWN0KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU29saWRDb2xvcik7
CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKE9wYWNpdHkpOwotICAgIFNFVF9BUFBMSUVS
X0ZST01fT1BUSU9OUyhNYXNrKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoQW50aWFs
aWFzaW5nKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoR3JheXNjYWxlRmlsdGVyKTsK
ICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU2VwaWFGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCAwMzdlN2Q2OWQ5YTg3NzRmMWQzMDYxYTc3
OTMxYTJjMDNjOWRjMTQ2Li4zMmZhZTExNmNiZmEyZjgzNDliZDI3YjNhYzRiZTk5MzY5ZGNiNTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaApAQCAtNDIsNyArNDIs
NiBAQCBwdWJsaWM6CiAgICAgICAgIFJlY3QgICAgICAgICAgICAgPSAxTCA8PCAxLAogICAgICAg
ICBTb2xpZENvbG9yICAgICAgID0gMUwgPDwgMiwKICAgICAgICAgT3BhY2l0eSAgICAgICAgICA9
IDFMIDw8IDMsCi0gICAgICAgIE1hc2sgICAgICAgICAgICAgPSAxTCA8PCA0LAogICAgICAgICBB
bnRpYWxpYXNpbmcgICAgID0gMUwgPDwgNSwKICAgICAgICAgR3JheXNjYWxlRmlsdGVyICA9IDFM
IDw8IDYsCiAgICAgICAgIFNlcGlhRmlsdGVyICAgICAgPSAxTCA8PCA3LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJm
YWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzcxNDJkNzVk
ZDVhNzYzZjBiNjIyYTU2MzY1YWQ5YzIyZTgzOWUxMi4uOGQzODc3NmU5YjVmNTMzYTYwNWU3M2Nh
NzZlMzNjYWJmZDk4YjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmUuY3BwCkBAIC00NCwxMCArNDQsMTAgQEAgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0
CiAgICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFj
ZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQor
dm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5
KQogewogICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1cmZh
Y2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5z
Zm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRv
VGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9wYWNp
dHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRjZDEwMTRmYzg1ZWEzYTdlOTcxYzhk
ZTA1ZjQxYTRmZDRiZDI2YzcuLjc5M2M2MWRjMzQyZmYwMjYzNTI3ODc0YzcxMjBkMzVlYjI4MGM1
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5o
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFjZShQ
YXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRl
ZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IHRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBw
ZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJU
aWxlLmNwcAppbmRleCA5YjQwNTEzMWFiMGU3OTMyZmU5Yzg3ZmRiYzI1ODQ0Y2ViNTI0NDRiLi4w
NzA1N2VhMTQ5MTNlZWUwNjE1OWQ5NDZiNjQxYjJkMTM1NjEwYmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZS5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1
cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheQog
ICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIs
IHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAotdm9p
ZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0
bWFwVGV4dHVyZSogbWFzaywgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBUZXh0
dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICh0ZXh0dXJlKCkuZ2V0KCkpCi0gICAgICAg
IHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlKCkuZ2V0KCksIHJlY3QoKSwgdHJh
bnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgICAgICB0ZXh0dXJlTWFw
cGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwgb3Bh
Y2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuaAppbmRleCBhY2VmNjE4ZWQzZDYwZTMyYTc2M2JmNDBmMTVmY2YyYTM0Nzdl
ZThkLi4yYjQ1ZDkwMDc3OThlYjQ3MTI4ZDA3YzQ0OWQ3ZDBhNTgwOGZlZDlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBU
ZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURh
dGEpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5
ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVw
ZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
VGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1h
cFRleHR1cmUqLCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFw
cGVyVGlsZSgpIHsgfQogCiAgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmNwcAppbmRleCA4MDk3OTIyMjY3ZTk5MGE4MTBmMjAyZDQ1N2E2MmZhZjlmYjg4ZDBiLi40
YTYwYzgxNTcyMjI4YTVkM2RmNThlYTUwMDRhYjNhMDNmN2FhNTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDcsMTIgKzQ3LDEyIEBA
IFRyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6YWRq
dXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1h
c2spCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFj
aXR5KQogewogICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1hcHBl
cik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RpbGVzW2ldLnBh
aW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxj
dWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKKyAgICAg
ICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3Bh
Y2l0eSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgp
KSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwg
ZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCA5MzliMTg1ZDdlYTM1NGYzYmI1Mzk4NWI4YTU2N2U5
MTY3NzY0ZmViLi5mYzFmOWJmNjdmNjExZmViOGM1YmRlNGY3ZjdmOTJiY2ZiNGNhMDhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmUoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJl
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3Jk
ZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBw
ZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVDb250
ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRS
ZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEwNWMx
Y2JmYTU1ZGJlZmVmYjMyYzM2ZDg1ZjczM2JiYzZkZjM3NDguLmNkNWExMmQ5NjdiNjUwYjk5MDhk
ZTEwMmM0YzI5MTMzYTUyZTBiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTA2LDEwICsxMDYsMTAgQEAgdm9pZCBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAg
ICAgbV9wZW5kaW5nU2l6ZSA9IHNpemU7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4m
IHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWlu
dFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywg
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRpbGVz
W2ldLT5wYWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNhbGN1
bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZXNbaV0tPnJlY3QoKSkpOworICAgICAgICB0
aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBjYWxjdWxh
dGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKIH0KIAogVHJhbnNm
b3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNmb3Jt
Rm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpCkBAIC0xMTcsNyArMTE3LDcgQEAg
VHJhbnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJh
bnNmb3JtRm9yUmVjdChjb25zdCBGbG8KICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9p
ZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlm
IChtX3RpbGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyLDggKzE1Miw4IEBA
IHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgLy8gU2VlIFRpbGVkQmFja2luZ1N0b3JlLgog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICog
YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogCi0gICAgcGFpbnRUaWxlc1Rv
VGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0
ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7Ci0gICAgcGFpbnRUaWxlc1RvVGV4
dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3Jt
LCBvcGFjaXR5LCBtYXNrLCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIo
cHJldmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBv
cGFjaXR5LCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNUb1Bh
aW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCgpKTsK
IH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRl
cldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDgxOTg5NWY0OTJhZTVhY2VkZTdkMzlhZWUxYzRkODdi
YzI2Y2NmYjkuLjQyMDE0NTRiZDdmNzVjMzYzYTI2OGI3MmIzODc1MTFkZTBlNzFhN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFRl
eHR1cmVNYXBwZXIqKTsKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBj
b25zdDsKICAgICB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKik7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9h
dCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1
cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKQEAgLTcwLDcgKzcw
LDcgQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAgICAgIDog
bV9zY2FsZSgxLikKICAgICB7IH0KLSAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIo
VmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mLCBUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IEZsb2F0UmVjdCYp
OworICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1hcHBl
clRpbGUqPiYsIFRleHR1cmVNYXBwZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3Rl
ZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgRmxvYXRSZWN0IHJlY3Qo
KSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOyB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAwNWU1YmRiODlmMjhmZjljZjVhYmJkNzIzYjJhMGQ2ZjAyN2FlN2Y4Li5iZDY3
NjExY2E2YWY1M2U2NzBhYTBlNzY2ZTJkNGI2YjE4NmU1ODNmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTMtMDItMjUgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBbVGV4bWFwXSBUZXh0dXJlTWFwcGVyIGlzIHRvbyBlYWdlciB0byB1c2UgaW50ZXJtZWRp
YXRlIHN1cmZhY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgYSBmZXcgcmVmLXRlc3RzIGZvciBjb3JyZWN0IG92ZXJsYXAgYmxlbmRpbmcg
aW4gYWNjZWxlYXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUuCisKKyAgICAgICAgKiBjb21wb3NpdGlu
Zy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktaHVnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJs
ZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHkt
bm8tb3ZlcmxhcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJs
ZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1
Z2UuaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMjAgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNs
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWxsY2hlY2tlciBzaG91bGQgbm90IGNyYXNo
IGFmdGVyIHRleHQgaGFzIGNoYW5nZWQgYW5kIHNwZWxsY2hlY2sgcmVzdWx0cyBhcmUgc2VydmVk
IGZyb20gY2FjaGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAt
YmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OTA1ZTlhOTg5YWQyNjlmZTM2MTJiMjJkMzk0MTE0M2Ux
YWE0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFw
LWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
MzMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4K
KyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgCisgICAg
ICBkaXYgeworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICB9
CisgICAgICAuc29saWQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdp
ZHRoOiAyMTUwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOworICAgICAgfQorCisgICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9
CisgICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDEwMHB4
OyBsZWZ0OiAwcHg7fQorICAgICAgCisgICAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJr
aXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgICAgfQorICAgICAgKiB7IG1hcmdpbjog
MDsgcGFkZGluZzogMDsgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAgIDxkaXYgY2xh
c3M9Im9wYWNpdHkiPgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGEiPjE8L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJzb2xpZCBiIj4yPC9kaXY+CisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNp
dHktaHVnZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9j
aGlsZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzFiMDY0ZWY5ZjViMGRhYmRm
M2UwOTcwNThhYTEyODM3MGM4YzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbApAQCAt
MCwwICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAg
IAorICAgICAgZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94Owor
ICAgICAgfQorICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
ICAgICB3aWR0aDogMjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIH0KKworICAgICAgLm9wYWNpdHkgeyBvcGFjaXR5
OiAuNTsgfQorICAgICAgLmEgeyB0b3A6IDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5iIHsgdG9w
OiAxMDBweDsgbGVmdDogMHB4O30KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeworICAgICAg
ICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0KKworICAgICAgKiB7
IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgICA8
ZGl2IGNsYXNzPSJvcGFjaXR5IGNvbXBvc2l0ZWQiPgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGEg
Y29tcG9zaXRlZCI+MTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGIgY29tcG9zaXRlZCI+
MjwvZGl2PgorICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hp
bGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjliZDVm
MTM2ZDI2YjQ2M2QzMDhhNzNlZjZhNWYwMDJlYjg0YzI4NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1u
by1vdmVybGFwLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAKKyAgICAgIGRpdiB7CisgICAgICAgIC13ZWJr
aXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgIH0KKyAgICAgIC5zb2xpZCB7CisgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIH0K
KworICAgICAgLm9wYWNpdHkgeyBvcGFjaXR5OiAuNTsgfQorICAgICAgLmEgeyB0b3A6IDBweDsg
bGVmdDogMHB4O30KKyAgICAgIC5iIHsgdG9wOiAyMDBweDsgbGVmdDogMjAwcHg7fQorICAgICAg
LmMgeyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmQgeyB0b3A6IDBweDsgbGVmdDog
MjAwcHg7fQorICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICAgICAgLmNvbXBv
c2l0ZWQgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAg
IH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgICA8ZGl2IGNsYXNzPSJvcGFjaXR5Ij4K
KyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGEiPjE8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNv
bGlkIGIiPjI8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGMiPjM8L2Rpdj4KKyAgICAg
IDxkaXYgY2xhc3M9InNvbGlkIGQiPjwvZGl2PgorICAgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVu
LW9wYWNpdHktbm8tb3ZlcmxhcC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3Zlcmxh
cC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MzE4NDBhMmM0ZGIyY2YyYTcxNTFlYjMxNTQzMzA2M2MzZDRlNmE1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFj
aXR5LW5vLW92ZXJsYXAuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3Nz
IiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAgZGl2IHsKKyAgICAgICAgLXdlYmtpdC1i
b3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgfQorICAgICAgLnNvbGlkIHsKKyAgICAgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgfQorCisg
ICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9CisgICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0
OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDIwMHB4OyBsZWZ0OiAyMDBweDt9CisgICAgICAuYyB7
IHRvcDogMjAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAuZCB7IHRvcDogMHB4OyBsZWZ0OiAyMDBw
eDt9CisgICAgICAKKyAgICAgIC5jb21wb3NpdGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVooMCk7CisgICAgICB9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5n
OiAwOyB9CisKKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgICAgPGRpdiBjbGFzcz0iY29tcG9z
aXRlZCBvcGFjaXR5Ij4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgYSI+MTwv
ZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgY29tcG9zaXRlZCBiIj4yPC9kaXY+CisgICAg
ICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3NpdGVkIGMiPjM8L2Rpdj4KKyAgICAgIDxkaXYgY2xh
c3M9InNvbGlkIGNvbXBvc2l0ZWQgZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVj
dGlvbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNDliMTRjYzAxMGQ1OGFjMmFhYTBhMTg5MTk0YjUwYTY1MjVlNTNhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9y
ZWZsZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwh
RE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8c3R5
bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgLnJlZmxlY3RlZCB7Cisg
ICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6IDIxNTBweDsKKyAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAg
ICAgIG9wYWNpdHk6IDAuNTsKKyAgICAgICAgLXdlYmtpdC1ib3gtcmVmbGVjdDogYmVsb3cgLTUw
cHg7CisgICAgICB9CisgICAgICAKKyAgICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0K
KworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgCisgIDxwPk9wYWNpdHkgc2hvdWxkIGJlIGFw
cGxpZWQgYWZ0ZXIgcmVmbGVjdGlvbiwgc28geW91IHNob3VsZCBzZWUgYSBncmVlbiByZWN0YW5n
bGUgYmVsb3cuIFRoZSBvdmVybGFwIGJldHdlZW4gdGhlIG9yaWdpbmFsIGFuZCByZWZsZWN0aW9u
IHNob3VsZCBub3QgYmUgdmlzaWJsZS48L3A+CisgIDxkaXYgY2xhc3M9InJlZmxlY3RlZCI+MQor
ICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
b3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5odG1sIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE3ODE3OTRlOTk3YmY4MTQyNDU1ZjJmYjJlMGQxNDY0YzM3MGVmOTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5k
aW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAucmVmbGVjdGVkIHsKKyAgICAg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDogMjE1MHB4OworICAgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAg
b3BhY2l0eTogMC41OworICAgICAgICAtd2Via2l0LWJveC1yZWZsZWN0OiBiZWxvdyAtNTBweDsK
KyAgICAgIH0KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeyAtd2Via2l0LXRyYW5zZm9ybTog
dHJhbnNsYXRlWigwKTt9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisKKyAg
ICA8L3N0eWxlPgorICA8L2hlYWQ+CisgIAorICA8cD5PcGFjaXR5IHNob3VsZCBiZSBhcHBsaWVk
IGFmdGVyIHJlZmxlY3Rpb24sIHNvIHlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIGJl
bG93LiBUaGUgb3ZlcmxhcCBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBhbmQgcmVmbGVjdGlvbiBzaG91
bGQgbm90IGJlIHZpc2libGUuPC9wPgorICA8ZGl2IGNsYXNzPSJyZWZsZWN0ZWQgY29tcG9zaXRl
ZCI+MQorICA8L2Rpdj4KKworPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190262</attachid>
            <date>2013-02-26 04:57:35 -0800</date>
            <delta_ts>2013-02-26 08:02:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110762-20130226135348.patch</filename>
            <type>text/plain</type>
            <size>84942</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI0MmY5YTEzMTIxMTZm
MGZkNjcyNmNjNGFiOTUxMzhkZDAzNzcxNy4uMjQ2Mzg2ZGY2M2Y4YjE1NDBhOGM3ZGNmNTg5ZWU4
NzY4YjI5MmExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAxMy0wMi0yNSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXIgaXMgdG9vIGVhZ2VyIHRvIHVzZSBpbnRlcm1lZGlhdGUgc3VyZmFjZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA3NjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciB0aGUg
d2F5IGludGVybWVkaWF0ZSBzdXJmYWNlcyBhcmUgaGFuZGxlZCBpbiBUZXh0dXJlTWFwcGVyTGF5
ZXIuCisgICAgICAgIEJlZm9yZWhhbmQsIHdlIHdvdWxkIGNyZWF0ZSBhbiBpbnRlcm1lZGlhdGUg
c3VyZmFjZSB3aGVuZXZlciB0aGVyZSBpcyBhIGNoYW5jZSBvZiBvdmVybGFwLCBhbmQKKyAgICAg
ICAgdGhlIGludGVybWVkaWF0ZSBzdXJmYWNlIHdvdWxkIGJlIHRoZSBsYXJnZXN0IHBvc3NpYmxl
LiBUaGUgcmVzdWx0IHdvdWxkIHRoZW4gYmUgZHJhd24gdG8gdGhlCisgICAgICAgIHRhcmdldCBz
dXJmYWNlIHdpdGggdGhlIGxheWVyJ3Mgb3BhY2l0eSBhbmQgbWFzay4KKyAgICAgICAgVGhpcyB3
b3VsZCBtYWtlIGl0IHNvIHRoYXQgKDEpIHN1cmZhY2VzIGFyZSBjcmVhdGVkIGV2ZW4gd2hlbiB0
aGV5J3JlIG5vdCBuZWVkZWQsIGkuZS4gd2hlbiB0aGVyZQorICAgICAgICBpcyBubyBhY3R1YWwg
b3ZlcmxhcCwgYW5kICgyKSBtYXNrIHdvdWxkbid0IGJlIGFwcGxpZWQgY29ycmVjdGx5LgorCisg
ICAgICAgIEluIHRoaXMgcGF0Y2ggdGhlIGJlaGF2aW9yIGlzIGNoYW5nZWQgc28gdGhhdCB0aGUg
YXJlYSB0byBiZSBwYWludGVkIGlzIGRpdmlkZWQgdG8gIm92ZXJsYXBwaW5nIgorICAgICAgICBh
bmQgIm5vbiBvdmVybGFwcGluZyIgcmVnaW9ucy4gVGhlIG5vbi1vdmVybGFwcGluZyByZWdpb25z
IGFyZSBwYWludGVkIGRpcmVjdGx5LCB3aGlsZSB0aGUgb3ZlcmxhcHBpbmcKKyAgICAgICAgcmVn
aW9ucyBhcmUgdGlsZWQgdG8gc21hbGxlciByZWN0YW5nbGVzIHBhaW50ZWQgdXNpbmcgYW4gaW50
ZXJtZWRpYXRlIHN1cmZhY2UuCisgICAgICAgIE1hc2tzIGFyZSBhcHBsaWVkIHRvIHRob3NlIGlu
dGVybWVkaWF0ZSBzdXJmYWNlcyBiYXNlZCBvbiB0aGUgdHJhbnNmb3JtIG9mIHRoZSBhY3R1YWwg
bWFzaywgbm90IGRyYXduCisgICAgICAgIHRvZ2V0aGVyIHdpdGggdGhlIGNvbnRlbnQgdGV4dHVy
ZSBsaWtlIGJlZm9yZS4KKworICAgICAgICBUaGlzIG9wdGltaXplcyBmb3IgdGhlIG1vcmUgY29t
bW9uIGNhc2Ugb2Ygb3BhY2l0eSBhbmltYXRpb25zIG9uIGEgbGFyZ2UgdHJlZSwgd2hpbGUgbWFr
aW5nIHRoZSBxdWl0ZQorICAgICAgICByYXJlIGNhc2Ugb2YgY29tcG9zaXRlZCBtYXNrcyBzbGln
aHRseSBsZXNzIG9wdGltaXplZCBidXQgYWx3YXlzIGNvcnJlY3QuCisKKyAgICAgICAgVGVzdHM6
IGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLmh0bWwK
KyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1v
cGFjaXR5LWh1Z2UuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXJQcml2YXRlUXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9HcmFwaGljc1N1cmZhY2UuaDoKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1Rl
eHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9H
cmFwaGljc1N1cmZhY2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgICAgICAgICBSZW1vdmVkIHRoZSAibWFzayIgcGFyYW1ldGVyIGZyb20gVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIgYW5kIG92ZXJyaWRlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI6OlRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpzZXRN
YXNrTW9kZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI6OmlzSW5NYXNrTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpk
cmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXcpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRD
b2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAg
ICAgICAgICAgICBJbnN0ZWFkIG9mIHBhaW50aW5nIHRoZSBtYXNrIHRvZ2V0aGVyIHdpdGggdGhl
IHRleHR1cmUvY29sb3IsIHBhaW50IHRoZSBtYXNrCisgICAgICAgICAgICAgICAgYnkgZHJhd2lu
ZyB3aXRoIERlc3RpbmF0aW9uSW4gdG8gYW4gZXhpc3Rpbmcgc3VyZmFjZS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNob3VsZEJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVz
b2x2ZU92ZXJsYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29t
cHV0ZU92ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6YXBwbHlNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRJbnRvU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21taXRTdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJt
ZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50UmVjdXJzaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBw
ZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omhhc0ZpbHRl
cnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oOgorCiAyMDEzLTAyLTIz
ICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0g
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYW5pbWF0aW9uL3N0YXRlLWF0LWVuZC1ldmVudC10cmFu
c2Zvcm0tbGF5ZXIuaHRtbCBzaG93cyBhIHJlZCBzcXVhcmUgd2hlcmUgaXQgc2hvdWxkbid0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQz
MTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi5kZjBiMjYyOTI3YjUwYWZjNDcxYzYwM2I2OTQ4NWI3
NDY2YTVjYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4
LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlcgogICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0
dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQt
Pm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAgICAg
SW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQt
Pm1fY3VycmVudEhlaWdodCk7Ci0gICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+
bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0
eSwgbWFzayk7CisgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJl
LCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiAjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HX0dMKQogfQogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgK
aW5kZXggZDBkZDIzZmU3ZGJkNDFkNmFmODFmOTA3YWFkOWRhMDMyYzAxYjRkYi4uNDJlYjZjMmU3
MDUxYzkwMjc1MGIyODgwZGVjNGZhMzc0M2IyMTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0K
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVS
KQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxv
YXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBjMTkzNWNhYTQ0
ODEwYjI1OTQzNzhmYjcyZmIxZTEwYTEwNWQ2YWRlLi4xZDE1MGUzY2NlMzJlNTQyYTk0OGNhNzQw
NWI3MzczMDQ2YTFiNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAt
MTk3LDcgKzE5Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVm
ZmVyKCkgY29uc3QKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQgLyogb3BhY2l0eSAqLywgQml0bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IGIzMDA5NmE2YTlhOGQ3NThhNzlk
Y2MyOWRjZTE2ZDU4YTg1OTc5NmQuLjhmMGViM2NiNGFlYjUzNGUzOGY5YjE3NjUwZGMxY2UzZmRm
ZTljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrPik7CiAjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNp
emUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggNjZiZGVhZWQx
ODVhNTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMwZjdlYS4uOGQ1YjgxZDEwMjFjZDJiZTM4ZmM0MzIw
OWJmMzBmMGI2OTdlMTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQg
b3BhY2l0eSk7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFs
IEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdDsKQEAgLTIwOSw3ICsyMDksNyBAQCBz
dGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRvUmdiKHF1aW50MzIgcGl4ZWwpCiB9CiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBtX2NvbnRleHQtPm1h
cmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJl
c3RvcmVDb250ZXh0KCk7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIKICAgICAgICAgY3VycmVudENvbnRleHQtPm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsK
IAogICAgICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVy
ZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5w
YWludFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBHTCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5
LCBtYXNrKTsKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVy
KHRleG1hcEdMLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwogI2VuZGlmCiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJi
Yjc4ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAzYS4uMWY5NjliNWZkYzIxYWJjMjk0YWEwM2RkYTc3
ZmEzNWEzYjY5NjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0
bWFwVGV4dHVyZSopCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkp
CiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQz
OWUzMjI0YzE1MjFlZTAwMzA0MGY1OTUuLmU3NGNkY2QwODk4NWNiYmNiYTNkMjhiNzZlNDU0MzYz
MDUxNjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7
IH0KICAgICAvLyBDb25zdC1jYXN0aW5nIGhlcmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyJ3MgZnVuY3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVh
bCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0
IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NT
dXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dy
YXBoaWNzU3VyZmFjZS5jcHAKaW5kZXggYmFlZmE4YTE5MDg0MWFlYWIyYjQwYTJjZDA2NDc3MjBm
MTYzMzU5Yy4uMmE3YTRiMjQzYzRjYmU2OGFiZTJhYTkyNjE4OTFiNjA5NTdiMjE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NT
dXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HcmFwaGljc1N1cmZhY2UuY3BwCkBAIC02Myw5ICs2Myw5IEBAIHZvaWQgR3JhcGhpY3NTdXJm
YWNlOjpjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjCiAgICAgcGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRl
eHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQog
ewotICAgIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0
UmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBwbGF0Zm9ybVBhaW50VG9UZXh0
dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7
CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6ZnJvbnRCdWZmZXIoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGlj
c1N1cmZhY2UuaAppbmRleCBkYTQ5MzY5OThjNWQwZGQ3OTI4NTk1ZTIyMWM4ZmE5MjY5MWEzODc4
Li43MzFhZjJiNmQ2NWMzZGE5YWQ0NzI5YmI3NjI1NWYzOGRiZWY0ZDA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGlj
c1N1cmZhY2UuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBH
cmFwaGljc1N1cmZhY2VUb2tlbiYpOwogICAgIHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90
IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCk7CiAgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWlu
dDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRl
eHR1cmUqIG1hc2spOworICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVp
bnQzMl90IHN3YXBCdWZmZXJzKCk7CiAgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZXhwb3J0VG9r
ZW4oKTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGxhdGZvcm1Vbmxv
Y2soKTsKICAgICB2b2lkIHBsYXRmb3JtQ29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAg
dm9pZCBwbGF0Zm9ybUNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAg
ICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBwbGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3Q7CiAg
ICAgdWludDMyX3QgcGxhdGZvcm1Td2FwQnVmZmVycygpOwogICAgIEludFNpemUgcGxhdGZvcm1T
aXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4
IDQzOTFiNTljM2RmNjAxNGNlNzZmYjc2MmVmN2NhZDM1NTNmYTYzNzAuLjIzZjhhZmI0ODJlZTI5
MGMwZTU1MzU1MzA5MmY4ZTU2ODkzMzQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1
cmZhY2VHTFguY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMK
ICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0K
IAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRt
YXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9h
dCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAg
IGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIEdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyLAogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCks
IHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJh
bnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGlj
X2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHRleHR1
cmUsIG1fcHJpdmF0ZS0+ZmxhZ3MoKSwgc2l6ZSwgcmVjdE9uQ29udGVudHMsIGFkanVzdGVkVHJh
bnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wq
Pih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygp
LCBzaXplLCByZWN0T25Db250ZW50cywgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQog
CiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFj
L0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAppbmRleCBiZjYyZmIxNWEwOWI0
YzE4MjMyNDExZjYzYTUzMTdiYWRkNmVhMjVjLi5jNGQyZDU0MTg0MmQ2YjE2Y2FlZDFhMTkzYTdl
Y2UxMjJjODFiYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApA
QCAtMzMzLDEzICszMzMsMTMgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZy
b21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZh
dGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFw
aGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBt
YXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQog
ewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCBy
ZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJh
bnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNv
bnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4o
dGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJl
SUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hv
dWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5z
Zm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4o
dGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJl
SUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hv
dWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5z
Zm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1G
cm9udEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3Bw
CmluZGV4IDk1MDlmMDk4M2M2MjkwY2YwMGVkM2JjYWQ4YTliMTA5ODYyNWQ4N2YuLjA2ZjQyN2Nm
Y2FkODM2NDhkZmQ3OGQ1OTI1M2NiMGMwNDRmZjQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFw
aGljc1N1cmZhY2VXaW4uY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0
KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5
LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgp
OwogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXIuY3BwCmluZGV4IDM3ZjcxNTRmMWM2OWQ5OGI0YTIzYjBjMGNkNzQ4ZWY1
ZDlkNzU5MDguLjJiMTNjNWU1NzQxZTFkYmM0MTZiMTEzNzcyNjJiYjcwZTVhMzcxODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5jcHAKQEAgLTE0MSw2ICsxNDEsNyBAQCBUZXh0dXJlTWFwcGVyOjpUZXh0dXJl
TWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNjZWxlcmF0aW9uTW9kZSkKICAgICAsIG1fdGV4dERy
YXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKICAgICAsIG1fdGV4dHVyZVBvb2woYWRvcHRQdHIobmV3
IEJpdG1hcFRleHR1cmVQb29sKCkpKQogICAgICwgbV9hY2NlbGVyYXRpb25Nb2RlKGFjY2VsZXJh
dGlvbk1vZGUpCisgICAgLCBtX21hc2tNb2RlKGZhbHNlKQogeyB9CiAKIFRleHR1cmVNYXBwZXI6
On5UZXh0dXJlTWFwcGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IGFkZWFmM2U3MThlMTMyNTAzODI5
YzkwNGZjMGEyZDI3NTJjNDYxODYuLmFiMzJlNjliMTI3NGNhMzk4MWFlMDM5OTE1YjkzNzQ0NjRi
YzM5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wZiwgY29uc3QgQml0bWFw
VGV4dHVyZSogbWFza1RleHR1cmUgPSAwLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdl
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJl
JiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0g
MS4wZiwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBDb2xvciYpID0gMDsKIAogICAgIC8vIG1ha2VzIGEgc3VyZmFjZSB0
aGUgdGFyZ2V0IGZvciB0aGUgZm9sbG93aW5nIGRyYXdUZXh0dXJlIGNhbGxzLgpAQCAtMTUzLDYg
KzE1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQYWludEZs
YWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CiAKKyAgICB2
b2lkIHNldE1hc2tNb2RlKGJvb2wgbSkgeyBtX21hc2tNb2RlID0gbTsgfQorCiAgICAgdmlydHVh
bCBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6
ZSYpOwpAQCAtMTY2LDYgKzE2OCw4IEBAIHByb3RlY3RlZDoKIAogICAgIEdyYXBoaWNzQ29udGV4
dCogbV9jb250ZXh0OwogCisgICAgYm9vbCBpc0luTWFza01vZGUoKSBjb25zdCB7IHJldHVybiBt
X21hc2tNb2RlOyB9CisKIHByaXZhdGU6CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAg
IHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+IHBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0
ZWQoKTsKQEAgLTE3OSw2ICsxODMsNyBAQCBwcml2YXRlOgogICAgIFRleHREcmF3aW5nTW9kZUZs
YWdzIG1fdGV4dERyYXdpbmdNb2RlOwogICAgIE93blB0cjxCaXRtYXBUZXh0dXJlUG9vbD4gbV90
ZXh0dXJlUG9vbDsKICAgICBBY2NlbGVyYXRpb25Nb2RlIG1fYWNjZWxlcmF0aW9uTW9kZTsKKyAg
ICBib29sIG1fbWFza01vZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaAppbmRleCA2YmZiM2YxY2ZlNWIyZTE2NmM4MTNjMDMzZGFhZTY4YTE1MWRlZjdkLi5j
NjAwYWEyZTFiZDJmMTczN2EyOTc5OGUzNzYzNzZkMmQ1ZTk5YzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgR3JhcGhpY3NM
YXllcjsKIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmU+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
dGV4dHVyZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IC8qIHJlcGFpbnRDb3VudCAqLywg
Y29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpIHsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA1ZjJlNzFjZjI3YjIxNDE0ZTIyZWQwNjM5YzI5ZTE2
Y2YwNzE2ZDJmLi5hZWRkZGEyOWEwNmM1YTQ5NDVhZmQ1MzQwM2JkNzU5OTYxMjQ1MDM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxv
YXRQb2luCiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBhY3F1aXJlVGV4dHVy
ZUZyb21Qb29sKHNpemUpOwogICAgIGNvbnN0IHVjaGFyKiBiaXRzID0gaW1hZ2UuYml0cygpOwog
ICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCo+KHRleHR1cmUuZ2V0KCkpLT51cGRhdGVD
b250ZW50c05vU3dpenpsZShiaXRzLCBzb3VyY2VSZWN0LCBJbnRQb2ludDo6emVybygpLCBpbWFn
ZS5ieXRlc1BlckxpbmUoKSk7Ci0gICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3Qs
IG1vZGVsVmlld01hdHJpeCwgMS4wZiwgMCwgQWxsRWRnZXMpOworICAgIGRyYXdUZXh0dXJlKCp0
ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIEFsbEVkZ2VzKTsKIAog
I2VsaWYgVVNFKENBSVJPKQogICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0cmluZzo6bnVt
YmVyKG51bWJlcikuYXNjaWkoKTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZs
b2F0UG9pbgogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJpdHMgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9kYXRhKHN1cmZhY2UpOwogICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdM
Kj4odGV4dHVyZS5nZXQoKSktPnVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGJpdHMsIHNvdXJjZVJl
Y3QsIEludFBvaW50Ojp6ZXJvKCksIHN0cmlkZSk7Ci0gICAgZHJhd1RleHR1cmUoKnRleHR1cmUs
IHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgMS4wZiwgMCwgQWxsRWRnZXMpOworICAgIGRy
YXdUZXh0dXJlKCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIEFs
bEVkZ2VzKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKICAgICBjYWly
b19kZXN0cm95KGNyKTsKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6
ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UG9p
bgogI2VuZGlmCiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShjb25zdCBC
aXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1h
cFRleHR1cmUqIG1hc2ssIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZs
b2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBpZiAoIXRleHR1cmUu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC00MDMsMjAgKzQwMywxNyBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYgdGV4dHVyZSwg
Y29uc3QgRmxvYXRSZWN0JgogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBCaXRtYXBUZXh0
dXJlR0wmIHRleHR1cmVHTCA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHRl
eHR1cmUpOwotICAgIGRyYXdUZXh0dXJlKHRleHR1cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFx
dWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVyZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0
cml4LCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgIGRyYXdUZXh0dXJlKHRleHR1
cmVHTC5pZCgpLCB0ZXh0dXJlR0wuaXNPcGFxdWUoKSA/IDAgOiBTaG91bGRCbGVuZCwgdGV4dHVy
ZUdMLnNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBleHBvc2VkRWRnZXMpOwog
fQogCi12b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUs
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVy
ZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0
ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBv
c2VkRWRnZXMpCiB7CiAgICAgYm9vbCB1c2VSZWN0ID0gZmxhZ3MgJiBTaG91bGRVc2VBUkJUZXh0
dXJlUmVjdDsKLSAgICBib29sIG1hc2tlZCA9ICEhbWFza1RleHR1cmU7CiAgICAgYm9vbCB1c2VB
bnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZwogICAgICAgICAm
JiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKICAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5t
YXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKIAogICAgIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6VGV4dHVyZTsKLSAgICBpZiAobWFza2VkKQotICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpNYXNrOwogICAgIGlmICh1c2VSZWN0KQogICAgICAgICBvcHRp
b25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0OwogICAgIGlmIChvcGFjaXR5
IDwgMSkKQEAgLTQyNiwxMiArNDIzLDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4
dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJCiAgICAg
ICAgIGZsYWdzIHw9IFNob3VsZEFudGlhbGlhczsKICAgICB9CiAKLSAgICBpZiAobWFza2VkIHx8
IHVzZUFudGlhbGlhc2luZyB8fCBvcGFjaXR5IDwgMSkKKyAgICBpZiAodXNlQW50aWFsaWFzaW5n
IHx8IG9wYWNpdHkgPCAxKQogICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKIAogICAgIFJl
ZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbTsKICAgICBwcm9ncmFtID0g
ZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmdldFNoYWRlclByb2dyYW0ob3B0aW9ucyk7Ci0gICAgZHJh
d1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdzLCB0
ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5LCBtYXNrVGV4
dHVyZSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRl
eHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBv
cGFjaXR5KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENvbG9yKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29u
c3QgQ29sb3ImIGNvbG9yKQpAQCAtNTA0LDExICs1MDEsMTYgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXcoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW8KICAgICBzaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgoc2hhZGVyUHJvZ3JhbS0+bW9kZWxW
aWV3TWF0cml4TG9jYXRpb24oKSwgbWF0cml4KTsKICAgICBzaGFkZXJQcm9ncmFtLT5zZXRNYXRy
aXgoc2hhZGVyUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCksIGRhdGEoKS5wcm9q
ZWN0aW9uTWF0cml4KTsKIAotICAgIGlmIChmbGFncyAmIFNob3VsZEJsZW5kKSB7Ci0gICAgICAg
IG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3ND
b250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEpOworICAgIGlmIChpc0luTWFza01vZGUoKSkg
eworICAgICAgICBtX2NvbnRleHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpaRVJP
LCBHcmFwaGljc0NvbnRleHQzRDo6U1JDX0FMUEhBKTsKICAgICAgICAgbV9jb250ZXh0M0QtPmVu
YWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOwotICAgIH0gZWxzZQotICAgICAgICBtX2Nv
bnRleHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChmbGFncyAmIFNob3VsZEJsZW5kKSB7CisgICAgICAgICAgICBtX2NvbnRl
eHQzRC0+YmxlbmRGdW5jKEdyYXBoaWNzQ29udGV4dDNEOjpPTkUsIEdyYXBoaWNzQ29udGV4dDNE
OjpPTkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5lbmFibGUo
R3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBt
X2NvbnRleHQzRC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOworICAgIH0KIAog
ICAgIGlmIChmbGFncyAmIFNob3VsZEFudGlhbGlhcykKICAgICAgICAgZHJhd0VkZ2VUcmlhbmds
ZXMoc2hhZGVyUHJvZ3JhbSk7CkBAIC01MTYsOCArNTE4LDExIEBAIHZvaWQgVGV4dHVyZU1hcHBl
ckdMOjpkcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vCiAgICAgICAgIGRyYXdVbml0UmVjdChzaGFkZXJQcm9ncmFtLCBkcmF3aW5nTW9kZSk7
CiAKICAgICBtX2NvbnRleHQzRC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlclByb2dy
YW0tPnZlcnRleExvY2F0aW9uKCkpOworICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3JhcGhp
Y3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEp
OworICAgIG1fY29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKIH0K
LXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZs
YWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0
IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcm9n
cmFtLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFt
KHByb2dyYW0tPnByb2dyYW1JRCgpKTsKICAgICBtX2NvbnRleHQzRC0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwpAQCAtNTMzLDE5ICs1MzgsMTAgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbSogcHIKICAgICBpZiAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkKICAg
ICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLTEpOwogCi0KICAgICBwcm9ncmFt
LT5zZXRNYXRyaXgocHJvZ3JhbS0+dGV4dHVyZVNwYWNlTWF0cml4TG9jYXRpb24oKSwgcGF0dGVy
blRyYW5zZm9ybSk7CiAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xZihwcm9ncmFtLT5vcGFjaXR5
TG9jYXRpb24oKSwgb3BhY2l0eSk7CiAKLSAgICBpZiAobWFza1RleHR1cmUgJiYgbWFza1RleHR1
cmUtPmlzVmFsaWQoKSkgewotICAgICAgICBjb25zdCBCaXRtYXBUZXh0dXJlR0wqIG1hc2tUZXh0
dXJlR0wgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wqPihtYXNrVGV4dHVyZSk7
Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgbWFza1RleHR1cmVHTC0+aWQoKSk7Ci0gICAgICAgIG1fY29udGV4
dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+bWFza0xvY2F0aW9uKCksIDEpOwotICAgICAgICBtX2Nv
bnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAg
IH0KLQotICAgIGlmIChvcGFjaXR5IDwgMSB8fCBtYXNrVGV4dHVyZSkKKyAgICBpZiAob3BhY2l0
eSA8IDEpCiAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgZHJhdyhyZWN0LCBt
b2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4s
IGZsYWdzKTsKQEAgLTk0Myw3ICs5MzksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0Zp
bHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNhbXBsZXIsIGNvbnN0IEJpdG1hcFRleAogCiAg
ICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgZmlsdGVyLCBwYXNzLCBzYW1w
bGVyLmNvbnRlbnRTaXplKCksIHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KGNv
bnRlbnRUZXh0dXJlKS5pZCgpKTsKICAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdChJbnRQb2ludDo6
emVybygpLCBzYW1wbGVyLmNvbnRlbnRTaXplKCkpOwotICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRo
UHJvZ3JhbShwcm9ncmFtLmdldCgpLCBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wm
PihzYW1wbGVyKS5pZCgpLCAwLCBJbnRTaXplKDEsIDEpLCB0YXJnZXRSZWN0LCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCAxLCAwKTsKKyAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJv
Z3JhbS5nZXQoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oc2FtcGxlciku
aWQoKSwgMCwgSW50U2l6ZSgxLCAxKSwgdGFyZ2V0UmVjdCwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgMSk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjph
cHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQml0bWFwVGV4
dHVyZSYgY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmgKaW5kZXggYTJiNDdlYThjZGRmMzZlOGZjOGU2ZjQwOTFkYzkyNDdkOTQ5
NTg0MS4uMzAyZjNjNDljODA2NThlMWFiOGM4YjJjYmJjMGU3MmQ4MjE4MTU3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGV4dHVyZU1hcHBl
ciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENvbG9y
JiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOdW1iZXIoaW50IG51
bWJlciwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3Qg
Qml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVu
c2lnbmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0
dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1
cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2ln
bmVkIGV4cG9zZWRFZGdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJl
KFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVT
aXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdl
cyA9IEFsbEVkZ2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZh
Y2UpIE9WRVJSSURFOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICBUZXh0dXJl
TWFwcGVyR0woKTsKIAotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IElu
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4
dHVyZSk7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIGZsb2F0IG9wYWNpdHkpOwogICAgIHZvaWQgZHJhdyhjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdpbmdNb2RlLCBGbGFncyk7CiAKICAgICB2b2lk
IGRyYXdVbml0UmVjdChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIEdDM0RlbnVtIGRyYXdp
bmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKaW5kZXggMWU0
OWY5YjZlY2E4OGQ2YTdjZmQ5MzE5MTIyMmMwNDgxMTAzOWQ3NS4uNTJhODQ4NzkyZDZmZjY2ZTY0
NzlhYWRhMjUxNDI4MTM5ODZhNWQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZl
cjo6YmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbgogI2Vu
ZGlmCiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25z
dCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJp
dG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCB1bnNpZ25lZCAvKiBleHBvc2VkRWRnZXMgKi8pCit2
b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUoY29uc3QgQml0bWFwVGV4
dHVyZSYgdGV4dHVyZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCAvKiBleHBvc2Vk
RWRnZXMgKi8pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gY3VycmVudENvbnRl
eHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0xMjIsMjIgKzEyMiw4IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0
dXJlLCBjb25zdCBGCiAKICAgICBjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXImIHRleHR1
cmVJbWFnZUJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZl
ciY+KHRleHR1cmUpOwogICAgIEltYWdlQnVmZmVyKiBpbWFnZSA9IHRleHR1cmVJbWFnZUJ1ZmZl
ci5tX2ltYWdlLmdldCgpOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza2VkSW1hZ2U7Ci0K
LSAgICBpZiAobWFza1RleHR1cmUgJiYgbWFza1RleHR1cmUtPmlzVmFsaWQoKSkgewotICAgICAg
ICBjb25zdCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIqIG1hc2sgPSBzdGF0aWNfY2FzdDxjb25z
dCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIqPihtYXNrVGV4dHVyZSk7Ci0gICAgICAgIG1hc2tl
ZEltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtYXNrVGV4dHVyZS0+Y29udGVudFNpemUoKSk7
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0NvbnRleHQgPSBtYXNrZWRJbWFnZS0+Y29u
dGV4dCgpOwotICAgICAgICBtYXNrQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludDo6emVybygpLCBDb21wb3NpdGVDb3B5KTsKLSAgICAg
ICAgaWYgKG9wYWNpdHkgPCAxKSB7Ci0gICAgICAgICAgICBtYXNrQ29udGV4dC0+c2V0QWxwaGEo
b3BhY2l0eSk7Ci0gICAgICAgICAgICBvcGFjaXR5ID0gMTsKLSAgICAgICAgfQotICAgICAgICBt
YXNrQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2stPm1faW1hZ2UuZ2V0KCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIEludFBvaW50Ojp6ZXJvKCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwot
ICAgICAgICBpbWFnZSA9IG1hc2tlZEltYWdlLmdldCgpOwotICAgIH0KLQogICAgIGNvbnRleHQt
PnNhdmUoKTsKKyAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oaXNJbk1hc2tNb2Rl
KCkgPyBDb21wb3NpdGVEZXN0aW5hdGlvbkluIDogQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAg
Y29udGV4dC0+c2V0QWxwaGEob3BhY2l0eSk7CiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykKICAg
ICBjb250ZXh0LT5jb25jYXQzRFRyYW5zZm9ybShtYXRyaXgpOwpAQCAtMTU1LDYgKzE0MSw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnRleHQt
PnNhdmUoKTsKKyAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oaXNJbk1hc2tNb2Rl
KCkgPyBDb21wb3NpdGVEZXN0aW5hdGlvbkluIDogQ29tcG9zaXRlU291cmNlT3Zlcik7CiAjaWYg
RU5BQkxFKDNEX1JFTkRFUklORykKICAgICBjb250ZXh0LT5jb25jYXQzRFRyYW5zZm9ybShtYXRy
aXgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAppbmRleCA4MGU2
OTQ0MDU5MDU0NzYwN2U3MDMyNjFlNzkzMTU1ZGRlM2MyMGQ1Li4zNWYyYjQ0OWQ5NmRjMGJjOWI3
YjBhZjE5OGFjMDQwY2Q5NGQ2ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZl
ci5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxl
bWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9h
dCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBj
b25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBU
ZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJl
LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4
cG9zZWRFZGdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENvbG9yKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3Im
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpIE9WRVJSSURFIHsgbV9jdXJyZW50
U3VyZmFjZSA9IHN1cmZhY2U7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4YTJj
Yzk5MmI3MTEwNjY2MTA3YzFiZTAzMTNiYTRhZjk2YzZmYmFmLi4wYmU0OTZjZDk4ZTM4ZTFiN2I4
OTk1MmQwODliOThmZDY1ZWE1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAt
MjAsNiArMjAsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJMYXllci5oIgogCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI3LDcgKzI5LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyB7CiBwdWJs
aWM6CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2U7Ci0gICAgUmVmUHRyPEJpdG1h
cFRleHR1cmU+IG1hc2s7CiAgICAgZmxvYXQgb3BhY2l0eTsKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0cmFuc2Zvcm07CiAgICAgSW50U2l6ZSBvZmZzZXQ7CkBAIC0xMDgsOCArMTA5LDYgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFp
bnRPcHRpb25zJiBvcHRpb25zKQogICAgIHRyYW5zZm9ybS5tdWx0aXBseShtX2N1cnJlbnRUcmFu
c2Zvcm0uY29tYmluZWQoKSk7CiAKICAgICBmbG9hdCBvcGFjaXR5ID0gb3B0aW9ucy5vcGFjaXR5
OwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYXNrID0gb3B0aW9ucy5tYXNrOwotCiAgICAg
aWYgKG1fc3RhdGUuc29saWRDb2xvci5pc1ZhbGlkKCkgJiYgIW1fc3RhdGUuY29udGVudHNSZWN0
LmlzRW1wdHkoKSkgewogICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdTb2xpZENv
bG9yKG1fc3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIGJsZW5kV2l0aE9wYWNpdHkobV9z
dGF0ZS5zb2xpZENvbG9yLCBvcGFjaXR5KSk7CiAgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1
Z0JvcmRlcnMpCkBAIC0xMjAsNyArMTE5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50U2VsZihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogICAgIGlm
IChtX2JhY2tpbmdTdG9yZSkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZS5kcmF3c0NvbnRlbnQg
JiYgbV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYgIW1fc3RhdGUuc2l6ZS5pc0VtcHR5KCkpOwog
ICAgICAgICBBU1NFUlQoIWxheWVyUmVjdCgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIG1fYmFja2lu
Z1N0b3JlLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVy
UmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAgICAgICBtX2JhY2tp
bmdTdG9yZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBsYXll
clJlY3QoKSwgdHJhbnNmb3JtLCBvcGFjaXR5KTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0Rl
YnVnQm9yZGVycykKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kcmF3Qm9yZGVyKG9wdGlv
bnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVn
Qm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAgICAgICAvLyBPbmx5IGRy
YXcgcmVwYWludCBjb3VudCBmb3IgdGhlIG1haW4gYmFja2luZyBzdG9yZS4KQEAgLTEzMCw3ICsx
MjksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVN
YXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAKICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7
CiAgICAgICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9jb250
ZW50c0xheWVyLT5wYWludFRvVGV4dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1f
c3RhdGUuY29udGVudHNSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2suZ2V0KCkpOworICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9UZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVy
ZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiAgICAg
ICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCiAgICAgICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmRlYnVnQm9y
ZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbV9zdGF0ZS5jb250ZW50c1JlY3Qs
IHRyYW5zZm9ybSk7CiAgICAgfQpAQCAtMTY2LDgyICsxNjUsMTYgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMmIG8KICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7CiB9CiAK
LUludFJlY3QgVGV4dHVyZU1hcHBlckxheWVyOjppbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpCi17
Ci0gICAgLy8gRklYTUU6IEFkZCBhbiBpbnZlcnNlIHRyYW5zZm9ybSB0byBMYXllclRyYW5zZm9y
bS4KLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobV9jdXJyZW50VHJhbnNmb3Jt
LmNvbWJpbmVkKCkuaW52ZXJzZSgpKTsKLX0KLQotSW50UmVjdCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCi17Ci0gICAgSW50UmVjdCByZWN0OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxvY2Fs
VHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobWF0cml4KS5tdWx0aXBseShtX2N1cnJl
bnRUcmFuc2Zvcm0uY29tYmluZWQoKSk7Ci0gICAgcmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobG9j
YWxUcmFuc2Zvcm0ubWFwUmVjdChsYXllclJlY3QoKSkpOwotICAgIGlmICghbV9zdGF0ZS5tYXNr
c1RvQm91bmRzICYmICFtX3N0YXRlLm1hc2tMYXllcikgewotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICByZWN0LnVuaXRl
KG1fY2hpbGRyZW5baV0tPmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KG1hdHJpeCkpOwotICAgIH0K
LQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBpZiAobV9jdXJyZW50RmlsdGVycy5oYXNP
dXRzZXRzKCkpIHsKLSAgICAgICAgRmlsdGVyT3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50Rmls
dGVycy5vdXRzZXRzKCk7Ci0gICAgICAgIEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QocmVj
dCk7Ci0gICAgICAgIHJlY3QubW92ZShzdGQ6Om1heCgwLCAtb3V0c2V0cy5sZWZ0KCkpLCBzdGQ6
Om1heCgwLCAtb3V0c2V0cy50b3AoKSkpOwotICAgICAgICByZWN0LmV4cGFuZChvdXRzZXRzLmxl
ZnQoKSArIG91dHNldHMucmlnaHQoKSwgb3V0c2V0cy50b3AoKSArIG91dHNldHMuYm90dG9tKCkp
OwotICAgICAgICByZWN0LnVuaXRlKHVuZmlsdGVyZWRUYXJnZXRSZWN0KTsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikKLSAgICAgICAgcmVjdC51bml0ZSht
X3N0YXRlLnJlcGxpY2FMYXllci0+aW50ZXJtZWRpYXRlU3VyZmFjZVJlY3QobWF0cml4KSk7Ci0K
LSAgICByZXR1cm4gcmVjdDsKLX0KLQotVGV4dHVyZU1hcHBlckxheWVyOjpDb250ZW50c0xheWVy
Q291bnQgVGV4dHVyZU1hcHBlckxheWVyOjpjb3VudFBvdGVudGlhbExheWVyc1dpdGhDb250ZW50
cygpIGNvbnN0Citib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c2hvdWxkQmxlbmQoKSBjb25zdAog
ewotICAgIGludCBzZWxmTGF5ZXJzV2l0aENvbnRlbnRzID0gKG1fc3RhdGUuZHJhd3NDb250ZW50
ID8gMSA6IDApICsgKG1fY29udGVudHNMYXllciA/IDEgOiAwKTsKLSAgICBpbnQgcG90ZW50aWFs
TGF5ZXJzV2l0aENvbnRlbnRzID0gc2VsZkxheWVyc1dpdGhDb250ZW50cyArIG1fY2hpbGRyZW4u
c2l6ZSgpOwotCi0gICAgaWYgKCFwb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMpCi0gICAgICAg
IHJldHVybiBOb0xheWVyc1dpdGhDb250ZW50OwotCi0gICAgaWYgKHBvdGVudGlhbExheWVyc1dp
dGhDb250ZW50cyA+IDEpCi0gICAgICAgIHJldHVybiBNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50
czsKLQotICAgIGlmIChtX2NoaWxkcmVuLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFNpbmds
ZUxheWVyV2l0aENvbnRlbnRzOwotCi0gICAgcmV0dXJuIG1fY2hpbGRyZW4uZmlyc3QoKS0+Y291
bnRQb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMoKTsKLX0KKyAgICBpZiAobV9zdGF0ZS5wcmVz
ZXJ2ZXMzRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1ib29sIFRleHR1cmVNYXBwZXJMYXll
cjo6c2hvdWxkUGFpbnRUb0ludGVybWVkaWF0ZVN1cmZhY2UoKSBjb25zdAotewogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICAgICBpZiAobV9jdXJyZW50RmlsdGVycy5zaXplKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogI2VuZGlmCi0gICAgYm9vbCBoYXNPcGFjaXR5ID0gbV9jdXJyZW50T3Bh
Y2l0eSA8IDAuOTk7Ci0gICAgYm9vbCBjYW5IYXZlTXVsdGlwbGVMYXllcnNXaXRoQ29udGVudCA9
IGNvdW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgPT0gTXVsdGlwbGVMYXllcnNXaXRo
Q29udGVudHM7Ci0gICAgYm9vbCBoYXNSZXBsaWNhID0gISFtX3N0YXRlLnJlcGxpY2FMYXllcjsK
LSAgICBib29sIGhhc01hc2sgPSAhIW1fc3RhdGUubWFza0xheWVyOwotCi0gICAgLy8gV2UgZG9u
J3QgdXNlIHR3by1wYXNzIGJsZW5kaW5nIGZvciBwcmVzZXJ2ZXMtM2QsIHRoYXQncyBpbiBzeW5j
IHdpdGggU2FmYXJpLgotICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBXZSBzaG91bGQgdXNlIGFuIGludGVybWVkaWF0ZSBzdXJmYWNl
IHdoZW4gYmxlbmRpbmcgc2V2ZXJhbCBpdGVtcyB3aXRoIGFuIGFuY2VzdG9yIG9wYWNpdHkuCi0g
ICAgLy8gVGVzdGVkIGJ5IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb3BhY2l0
eS5odG1sCi0gICAgaWYgKGhhc09wYWNpdHkgJiYgKGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhD
b250ZW50IHx8IGhhc1JlcGxpY2EpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdl
IHNob3VsZCB1c2UgYW4gaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd2l0aCBhIG1hc2tlZCBhbmNlc3Rv
ci4KLSAgICAvLyBJbiB0aGUgY2FzZSBvZiByZXBsaWNhcyB0aGUgbWFzayBpcyBhcHBsaWVkIGJl
Zm9yZSByZXBsaWNhdGluZy4KLSAgICAvLyBUZXN0ZWQgYnkgY29tcG9zaXRpbmcvbWFza3MvbWFz
a2VkLWFuY2VzdG9yLmh0bWwKLSAgICBpZiAoaGFzTWFzayAmJiBjYW5IYXZlTXVsdGlwbGVMYXll
cnNXaXRoQ29udGVudCAmJiAhaGFzUmVwbGljYSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY3VycmVudE9wYWNpdHkgPCAxIHx8IG1fc3Rh
dGUubWFza0xheWVyIHx8IChtX3N0YXRlLnJlcGxpY2FMYXllciAmJiBtX3N0YXRlLnJlcGxpY2FM
YXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpOwogfQogCiBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6
aXNWaXNpYmxlKCkgY29uc3QKQEAgLTI2MSwxMSArMTk0LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4dHVyZU1hcHBl
clBhaW4KIHsKICAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKICAgICAgICAgVGV4dHVy
ZU1hcHBlclBhaW50T3B0aW9ucyByZXBsaWNhT3B0aW9ucyhvcHRpb25zKTsKLSAgICAgICAgLy8g
V2UgY2hvb3NlIGVpdGhlciB0aGUgY29udGVudCdzIG1hc2sgb3IgdGhlIHJlcGxpY2EncyBtYXNr
LgotICAgICAgICAvLyBGSVhNRTogYmxlbmQgdGhlIHR3byBpZiBib3RoIGV4aXN0LgotICAgICAg
ICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyKQotICAgICAgICAg
ICAgcmVwbGljYU9wdGlvbnMubWFzayA9IG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1h
c2tMYXllci0+dGV4dHVyZSgpOwotCiAgICAgICAgIHJlcGxpY2FPcHRpb25zLnRyYW5zZm9ybQog
ICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFu
c2Zvcm0uY29tYmluZWQoKSkKICAgICAgICAgICAgIC5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zv
cm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOwpAQCAtMjg1LDYgKzIxMywxMSBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiAgICAgbV9j
dXJyZW50T3BhY2l0eSA9IG9wYWNpdHk7CiB9CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1
cmVNYXBwZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSgpCit7CisgICAgcmV0dXJuIFRyYW5zZm9y
bWF0aW9uTWF0cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29t
YmluZWQoKSkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgp
KTsKK30KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsK
QEAgLTMwNyw3ICsyNDAsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRLZWVwQ29udGVudFRleHR1cmUo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBCaXRt
YXBUZXh0dXJlKiBzb3VyY2UsIEludFJlY3QmIHRhcmdldFJlY3QpCitzdGF0aWMgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgQml0bWFwVGV4dHVyZSogc291cmNl
KQogewogICAgIGlmICghZmlsdGVycy5zaXplKCkpCiAgICAgICAgIHJldHVybiBzb3VyY2U7CkBA
IC0zMTcsNTEgKzI1MCwxODQgQEAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBw
bHlGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIFQKIH0KICNlbmRpZgog
Ci12b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyB2b2lkIHJlc29sdmVPdmVybGFwcyhS
ZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lvbiwgUmVnaW9uIG5l
d1JlZ2lvbikKIHsKLSAgICBpZiAoIWlzVmlzaWJsZSgpKQorICAgIFJlZ2lvbiBuZXdPdmVybGFw
UmVnaW9uKG5ld1JlZ2lvbik7CisgICAgbmV3T3ZlcmxhcFJlZ2lvbi5pbnRlcnNlY3Qobm9uT3Zl
cmxhcFJlZ2lvbik7CisgICAgbm9uT3ZlcmxhcFJlZ2lvbi5zdWJ0cmFjdChuZXdPdmVybGFwUmVn
aW9uKTsKKyAgICBvdmVybGFwUmVnaW9uLnVuaXRlKG5ld092ZXJsYXBSZWdpb24pOworICAgIG5l
d1JlZ2lvbi5zdWJ0cmFjdChvdmVybGFwUmVnaW9uKTsKKyAgICBub25PdmVybGFwUmVnaW9uLnVu
aXRlKG5ld1JlZ2lvbik7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlT3Zl
cmxhcFJlZ2lvbnMoUmVnaW9uJiBvdmVybGFwUmVnaW9uLCBSZWdpb24mIG5vbk92ZXJsYXBSZWdp
b24sIGJvb2wgYWx3YXlzUmVzb2x2ZVNlbGZPdmVybGFwKQoreworICAgIGlmICghbV9zdGF0ZS52
aXNpYmxlIHx8ICFtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZmxvYXQgb3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eSAqIG1fY3VycmVudE9wYWNpdHk7Ci0g
ICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1hc2tUZXh0dXJlID0gbV9zdGF0ZS5tYXNrTGF5ZXIg
PyBtX3N0YXRlLm1hc2tMYXllci0+dGV4dHVyZSgpIDogMDsKKyAgICBGbG9hdFJlY3QgYm91bmRp
bmdSZWN0OworICAgIGlmIChtX2JhY2tpbmdTdG9yZSB8fCBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMg
fHwgbV9zdGF0ZS5tYXNrTGF5ZXIgfHwgaGFzRmlsdGVycygpKQorICAgICAgICBib3VuZGluZ1Jl
Y3QgPSBsYXllclJlY3QoKTsKKyAgICBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIgfHwgbV9zdGF0
ZS5zb2xpZENvbG9yLmFscGhhKCkpCisgICAgICAgIGJvdW5kaW5nUmVjdCA9IG1fc3RhdGUuY29u
dGVudHNSZWN0OwogCi0gICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMo
b3B0aW9ucyk7Ci0gICAgcGFpbnRPcHRpb25zLm1hc2sgPSBtYXNrVGV4dHVyZS5nZXQoKTsKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgaWYgKG1fY3VycmVudEZpbHRlcnMuaGFzT3V0c2V0
cygpKSB7CisgICAgICAgIEZpbHRlck91dHNldHMgb3V0c2V0cyA9IG1fY3VycmVudEZpbHRlcnMu
b3V0c2V0cygpOworICAgICAgICBJbnRSZWN0IHVuZmlsdGVyZWRUYXJnZXRSZWN0KGJvdW5kaW5n
UmVjdCk7CisgICAgICAgIGJvdW5kaW5nUmVjdC5tb3ZlKHN0ZDo6bWF4KDAsIC1vdXRzZXRzLmxl
ZnQoKSksIHN0ZDo6bWF4KDAsIC1vdXRzZXRzLnRvcCgpKSk7CisgICAgICAgIGJvdW5kaW5nUmVj
dC5leHBhbmQob3V0c2V0cy5sZWZ0KCkgKyBvdXRzZXRzLnJpZ2h0KCksIG91dHNldHMudG9wKCkg
KyBvdXRzZXRzLmJvdHRvbSgpKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHVuZmlsdGVy
ZWRUYXJnZXRSZWN0KTsKKyAgICB9CisjZW5kaWYKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHJlcGxpY2FNYXRyaXg7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAg
IHJlcGxpY2FNYXRyaXggPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIGJvdW5kaW5nUmVj
dC51bml0ZShyZXBsaWNhTWF0cml4Lm1hcFJlY3QoYm91bmRpbmdSZWN0KSk7CisgICAgfQogCi0g
ICAgaWYgKCFzaG91bGRQYWludFRvSW50ZXJtZWRpYXRlU3VyZmFjZSgpKSB7Ci0gICAgICAgIHBh
aW50T3B0aW9ucy5vcGFjaXR5ID0gb3BhY2l0eTsKLSAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRy
ZW5XaXRoUmVwbGljYShwYWludE9wdGlvbnMpOworICAgIGJvdW5kaW5nUmVjdCA9IG1fY3VycmVu
dFRyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFJlY3QoYm91bmRpbmdSZWN0KTsKKworICAgIC8vIENv
dW50IGFsbCBtYXNrcyBhbmQgZmlsdGVycyBhcyBvdmVybGFwIGxheWVycy4KKyAgICBpZiAoaGFz
RmlsdGVycygpIHx8IG1fc3RhdGUubWFza0xheWVyIHx8IChtX3N0YXRlLnJlcGxpY2FMYXllciAm
JiBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpKSB7CisgICAgICAgIFJl
Z2lvbiBuZXdPdmVybGFwUmVnaW9uKGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0KSk7Cisg
ICAgICAgIG5vbk92ZXJsYXBSZWdpb24uc3VidHJhY3QobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAg
ICAgIG92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICAvLyBQcmVwYXJlIGEgc3VyZmFjZSB0byBwYWludCBpbnRvLgotICAg
IC8vIFdlIHBhaW50IGludG8gdGhlIHN1cmZhY2UgaWdub3JpbmcgdGhlIG9wYWNpdHkvdHJhbnNm
b3JtIG9mIHRoZSBjdXJyZW50IGxheWVyLgotICAgIEludFJlY3Qgc3VyZmFjZVJlY3QgPSBpbnRl
cm1lZGlhdGVTdXJmYWNlUmVjdCgpOwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNl
ID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHN1cmZhY2VS
ZWN0LnNpemUoKSk7Ci0gICAgcGFpbnRPcHRpb25zLnN1cmZhY2UgPSBzdXJmYWNlOwotICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7Ci0gICAgcGFp
bnRPcHRpb25zLm9wYWNpdHkgPSAxOworICAgIFJlZ2lvbiBuZXdPdmVybGFwUmVnaW9uOworICAg
IFJlZ2lvbiBuZXdOb25PdmVybGFwUmVnaW9uKGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0
KSk7CisKKyAgICBpZiAoIW1fc3RhdGUubWFza3NUb0JvdW5kcykgeworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFRl
eHR1cmVNYXBwZXJMYXllciogY2hpbGQgPSBtX2NoaWxkcmVuW2ldOworICAgICAgICAgICAgYm9v
bCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXBGb3JDaGlsZHJlbiA9IGZhbHNlOworICAgICAgICAg
ICAgY2hpbGQtPmNvbXB1dGVPdmVybGFwUmVnaW9ucyhuZXdPdmVybGFwUmVnaW9uLCBuZXdOb25P
dmVybGFwUmVnaW9uLCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXBGb3JDaGlsZHJlbik7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKKyAgICAgICAg
bmV3T3ZlcmxhcFJlZ2lvbi51bml0ZShyZXBsaWNhTWF0cml4Lm1hcFJlY3QobmV3T3ZlcmxhcFJl
Z2lvbi5ib3VuZHMoKSkpOworICAgICAgICBSZWdpb24gcmVwbGljYVJlZ2lvbihyZXBsaWNhTWF0
cml4Lm1hcFJlY3QobmV3Tm9uT3ZlcmxhcFJlZ2lvbi5ib3VuZHMoKSkpOworICAgICAgICByZXNv
bHZlT3ZlcmxhcHMobmV3T3ZlcmxhcFJlZ2lvbiwgbmV3Tm9uT3ZlcmxhcFJlZ2lvbiwgcmVwbGlj
YVJlZ2lvbik7CisgICAgfQogCi0gICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IG1fY3VycmVu
dFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKTsKLSAgICBwYWludE9wdGlvbnMub2Zmc2V0
ID0gLUludFNpemUoc3VyZmFjZVJlY3QueCgpLCBzdXJmYWNlUmVjdC55KCkpOworICAgIGlmICgh
YWx3YXlzUmVzb2x2ZVNlbGZPdmVybGFwICAmJiBzaG91bGRCbGVuZCgpKSB7CisgICAgICAgIG5l
d05vbk92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgICAgIG5ld092
ZXJsYXBSZWdpb24gPSBSZWdpb24oKTsKKyAgICB9CiAKLSAgICBwYWludFNlbGZBbmRDaGlsZHJl
bldpdGhSZXBsaWNhKHBhaW50T3B0aW9ucyk7CisgICAgb3ZlcmxhcFJlZ2lvbi51bml0ZShuZXdP
dmVybGFwUmVnaW9uKTsKKyAgICByZXNvbHZlT3ZlcmxhcHMob3ZlcmxhcFJlZ2lvbiwgbm9uT3Zl
cmxhcFJlZ2lvbiwgbmV3Tm9uT3ZlcmxhcFJlZ2lvbik7Cit9CiAKLSAgICAvLyBJZiB3ZSBwYWlu
dGVkIHRoZSByZXBsaWNhLCB0aGUgbWFzayBpcyBhbHJlYWR5IGFwcGxpZWQgc28gd2UgZG9uJ3Qg
bmVlZCB0byBwYWludCBpdCBhZ2Fpbi4KLSAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpCi0g
ICAgICAgIG1hc2tUZXh0dXJlID0gMDsKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFVz
aW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9u
cykKK3sKKyAgICBSZWdpb24gb3ZlcmxhcFJlZ2lvbjsKKyAgICBSZWdpb24gbm9uT3ZlcmxhcFJl
Z2lvbjsKKyAgICBjb21wdXRlT3ZlcmxhcFJlZ2lvbnMob3ZlcmxhcFJlZ2lvbiwgbm9uT3Zlcmxh
cFJlZ2lvbik7CisgICAgaWYgKG92ZXJsYXBSZWdpb24uaXNFbXB0eSgpKSB7CisgICAgICAgIHBh
aW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2Eob3B0aW9ucyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSBub25PdmVybGFwUmVnaW9uLnJl
Y3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgewor
ICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCByZWN0c1tpXSk7CisgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxp
Y2Eob3B0aW9ucyk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZW5kQ2xpcCgpOwor
ICAgIH0KKworICAgIHJlY3RzID0gb3ZlcmxhcFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCByZWN0
ID0gcmVjdHNbaV07CisgICAgICAgIGNvbnN0IHN0YXRpYyBpbnQgbWF4UmVjdERpbWVuc2lvbiA9
IDIwMDA7CisgICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyB4
ICs9IG1heFJlY3REaW1lbnNpb24pIHsKKyAgICAgICAgICAgIGZvciAoaW50IHkgPSByZWN0Lnko
KTsgeSA8IHJlY3QubWF4WSgpOyB5ICs9IG1heFJlY3REaW1lbnNpb24pIHsKKyAgICAgICAgICAg
ICAgICBJbnRSZWN0IHRpbGVSZWN0KHgsIHksIG1heFJlY3REaW1lbnNpb24sIG1heFJlY3REaW1l
bnNpb24pOworICAgICAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChyZWN0KTsKKyAgICAg
ICAgICAgICAgICBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKG9wdGlvbnMsIHRpbGVSZWN0
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KIAordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRp
b25zKQoreworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFza01vZGUodHJ1ZSk7Cisg
ICAgcGFpbnRTZWxmKG9wdGlvbnMpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFz
a01vZGUoZmFsc2UpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFJlZlB0cjxCaXRtYXBUZXh0
dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Q
b29sKHNpemUpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFj
ZS5nZXQoKSk7CisgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucyk7CisgICAgaWYgKG1f
c3RhdGUubWFza0xheWVyKQorICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNrKG9w
dGlvbnMpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBzdXJmYWNlID0gYXBwbHlGaWx0
ZXJzKG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5nZXQo
KSwgc3VyZmFjZVJlY3QpOworICAgIGlmICghbV9jdXJyZW50RmlsdGVycy5pc0VtcHR5KCkpCisg
ICAgICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9jdXJyZW50RmlsdGVycywgb3B0aW9ucy50
ZXh0dXJlTWFwcGVyLCBzdXJmYWNlLmdldCgpKTsKICNlbmRpZgorICAgIG9wdGlvbnMudGV4dHVy
ZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CisgICAgcmV0dXJuIHN1cmZhY2U7
Cit9CiAKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbW1pdFN1cmZhY2UoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQorewog
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNlLmdl
dCgpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAgdGFy
Z2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25zLm9m
ZnNldC5oZWlnaHQoKSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMudHJh
bnNmb3JtKTsKLSAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3Jt
LmNvbWJpbmVkKCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnN1
cmZhY2UuZ2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlhdGVT
dXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCit7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FTdXJmYWNl
OworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYWluU3VyZmFjZTsKKyAgICBUZXh0dXJlTWFw
cGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKKyAgICBwYWludE9wdGlvbnMu
b2Zmc2V0ID0gLUludFNpemUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICBwYWludE9wdGlvbnMu
b3BhY2l0eSA9IDE7CisgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCk7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAgIHBhaW50
T3B0aW9ucy50cmFuc2Zvcm0gPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIHJlcGxpY2FT
dXJmYWNlID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJlY3Quc2l6ZSgpKTsKKyAg
ICAgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7Cisg
ICAgICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCisgICAg
ICAgICAgICBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5TWFz
ayhwYWludE9wdGlvbnMpOworICAgIH0KIAotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJh
d1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0sIG9w
YWNpdHksIG1hc2tUZXh0dXJlLmdldCgpKTsKKyAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYgb3B0
aW9ucy5vcGFjaXR5ID09IDEpCisgICAgICAgIHJlcGxpY2FTdXJmYWNlID0gY29tbWl0U3VyZmFj
ZShvcHRpb25zLCByZXBsaWNhU3VyZmFjZSwgcmVjdCwgMSk7CisKKyAgICBtYWluU3VyZmFjZSA9
IHBhaW50SW50b1N1cmZhY2UocGFpbnRPcHRpb25zLCByZWN0LnNpemUoKSk7CisgICAgaWYgKHJl
cGxpY2FTdXJmYWNlKSB7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZh
Y2UocmVwbGljYVN1cmZhY2UuZ2V0KCkpOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIt
PmRyYXdUZXh0dXJlKCptYWluU3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onpl
cm8oKSwgcmVjdC5zaXplKCkpKTsKKyAgICAgICAgbWFpblN1cmZhY2UgPSByZXBsaWNhU3VyZmFj
ZTsKKyAgICB9CisKKyAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIG1haW5TdXJmYWNlLCByZWN0
LCBvcHRpb25zLm9wYWNpdHkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRS
ZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBpZiAoIWlzVmlzaWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3VsZEJs
ZW5kKCkpIHsKKyAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShvcHRpb25z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOworICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0gb3B0
aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKKyAgICBwYWludFVzaW5nT3ZlcmxhcFJl
Z2lvbnMocGFpbnRPcHRpb25zKTsKIH0KIAogVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVyZU1h
cHBlckxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2MWZiODI3NjcwODYwM2Ux
MTBmYWNlZDQxODlkYjdkYTBiYzAzMWZhLi42MDJiMmMzOTQxNTUyZTViZDFlNGZhMWFiYzgzZDky
Y2MwNjA0ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0zMSw2ICszMSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVnaW9uOwogY2xhc3MgVGV4dHVyZU1hcHBl
clBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwogCkBAIC03
Myw2ICs3NCwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZvaWQg
c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKKworICAgIGJvb2wg
aGFzRmlsdGVycygpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICAg
ICAgcmV0dXJuICFtX2N1cnJlbnRGaWx0ZXJzLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgc2V0RGVidWdWaXN1YWxzKGJv
b2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZsb2F0
IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKICAgICB2b2lkIHNl
dFJlcGFpbnRDb3VudChpbnQpOwogICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllciopOwpAQCAtOTIsOCArMTAzLDYgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OwogICAgIHZv
aWQgY29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKTsKLSAgICBJbnRSZWN0IGludGVybWVkaWF0
ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgSW50UmVjdCBp
bnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpOwogCiAgICAgc3RhdGljIGludCBjb21wYXJlR3JhcGhp
Y3NMYXllcnNaVmFsdWUoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYik7CiAgICAgc3RhdGlj
IHZvaWQgc29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqID4mIGFycmF5LCBp
bnQgZmlyc3QsIGludCBsYXN0KTsKQEAgLTEwMSwxNSArMTEwLDIxIEBAIHByaXZhdGU6CiAgICAg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5nU3Rv
cmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQgYWRq
dXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3Np
dGlvbkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29uc3Q7
Ci0KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CiAgICAgdm9p
ZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21QYXJl
bnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAKKyAgICB2b2lkIGNvbXB1dGVP
dmVybGFwUmVnaW9ucyhSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJl
Z2lvbiwgYm9vbCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXAgPSB0cnVlKTsKKwogICAgIHZvaWQg
cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOworICAgIHZv
aWQgcGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMmKTsKKyAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2UoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lk
IHBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHBhaW50U2VsZihjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGlsZHJlbihjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGls
ZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKKyAgICB2
b2lkIGFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAKICAgICAv
LyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5p
bWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKQEAg
LTEyNSw4ICsxNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBNdWx0aXBsZUxheWVyc1dpdGhDb250
ZW50cwogICAgIH07CiAKLSAgICBDb250ZW50c0xheWVyQ291bnQgY291bnRQb3RlbnRpYWxMYXll
cnNXaXRoQ29udGVudHMoKSBjb25zdDsKLSAgICBib29sIHNob3VsZFBhaW50VG9JbnRlcm1lZGlh
dGVTdXJmYWNlKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRCbGVuZCgpIGNvbnN0OwogCiAgICAg
aW5saW5lIEZsb2F0UmVjdCBsYXllclJlY3QoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5ZTY2
ZWU0N2RlZjgxMDExNS4uYjliYWRlZDMzNDczODFjYzBkYjI5ZjIxYzJhYWVkYjAwY2Y5MDU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIg
ewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0
cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0bWFw
VGV4dHVyZSogbWFzayA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9h
dCBvcGFjaXR5ID0gMS4wKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDhjMTMx
ZTYxOWUxYWUwMTc3MWMwY2ViMjU0MTUyNWRjYmU2MjU5MTcuLjUzZWUyZjBkZGE0ZDU4OWVjNTk3
MDRlYjM2NTczYzg3NDVjOWM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmNwcApAQCAtMTI3LDcgKzEyNyw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB2ZXJ0ZXhU
ZW1wbGF0ZSA9CiAgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsKIAog
ICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2ZWMyIHZf
bWFza1RleENvb3JkOwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFzOwogCiAgICAg
ICAgIHZvaWQgbm9vcChpbm91dCB2ZWMyIGR1bW15UGFyYW1ldGVyKSB7IH0KQEAgLTE3Niw4ICsx
NzUsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4VGVtcGxhdGUgPQogICAgICAgICAgICAg
Ly8gVGhlIHRleHR1cmUgcG9zaXRpb24gbmVlZHMgdG8gYmUgY2xhbXBlZCB0byAwLi4xIGJlZm9y
ZSB0aGUgdGV4dHVyZSBtYXRyaXggaXMgYXBwbGllZC4KICAgICAgICAgICAgIHZlYzQgY2xhbXBl
ZFBvc2l0aW9uID0gY2xhbXAodmVjNChwb3NpdGlvbiwgMC4sIDEuKSwgMC4sIDEuKTsKICAgICAg
ICAgICAgIHZfdGV4Q29vcmQgPSAodV90ZXh0dXJlU3BhY2VNYXRyaXggKiBjbGFtcGVkUG9zaXRp
b24pLnh5OwotCi0gICAgICAgICAgICB2X21hc2tUZXhDb29yZCA9IHBvc2l0aW9uOwogICAgICAg
ICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiB1X21vZGVsVmlld01hdHJp
eCAqIHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgICAgICAgIH0KICAgICApOwpAQCAtMjA0LDEy
ICsyMDEsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAgIFNU
UklOR0lGWSgKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgIHVuaWZv
cm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOwotICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX21h
c2s7CiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfY29udGVudFRleHR1cmU7CiAgICAgICAg
IHVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5OwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFs
aWFzOwogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2
ZWMyIHZfbWFza1RleENvb3JkOwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfZmlsdGVyQW1vdW50
OwogICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwogICAgICAgICB1bmlmb3JtIHZl
YzIgdV9zaGFkb3dPZmZzZXQ7CkBAIC0yMjMsNyArMjE4LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGZyYWdtZW50VGVtcGxhdGUgPQogICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZShpbm91dCB2ZWM0
IGNvbG9yKSB7IGNvbG9yID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdl90ZXhDb29yZCk7
IH0KICAgICAgICAgdm9pZCBhcHBseU9wYWNpdHkoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAq
PSB1X29wYWNpdHk7IH0KICAgICAgICAgdm9pZCBhcHBseUFudGlhbGlhc2luZyhpbm91dCB2ZWM0
IGNvbG9yKSB7IGNvbG9yICo9IGFudGlhbGlhcygpOyB9Ci0gICAgICAgIHZvaWQgYXBwbHlNYXNr
KGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdGV4dHVyZTJEKHNfbWFzaywgdl9tYXNrVGV4
Q29vcmQpLmE7IH0KIAogICAgICAgICB2b2lkIGFwcGx5R3JheXNjYWxlRmlsdGVyKGlub3V0IHZl
YzQgY29sb3IpCiAgICAgICAgIHsKQEAgLTMzNCw3ICszMjgsNiBAQCBzdGF0aWMgY29uc3QgY2hh
ciogZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgICAgICAgICBhcHBseVRleHR1cmVJZk5lZWRlZChj
b2xvcik7CiAgICAgICAgICAgICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xvcik7CiAgICAg
ICAgICAgICBhcHBseUFudGlhbGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAgIGFw
cGx5TWFza0lmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5T3BhY2l0eUlmTmVlZGVk
KGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5R3JheXNjYWxlRmlsdGVySWZOZWVkZWQoY29sb3Ip
OwogICAgICAgICAgICAgYXBwbHlTZXBpYUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKQEAgLTM2Miw3
ICszNTUsNiBAQCBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFBhc3NSZQogICAgIFNFVF9BUFBMSUVSX0ZST01f
T1BUSU9OUyhSZWN0KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU29saWRDb2xvcik7
CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKE9wYWNpdHkpOwotICAgIFNFVF9BUFBMSUVS
X0ZST01fT1BUSU9OUyhNYXNrKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoQW50aWFs
aWFzaW5nKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoR3JheXNjYWxlRmlsdGVyKTsK
ICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU2VwaWFGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCAwMzdlN2Q2OWQ5YTg3NzRmMWQzMDYxYTc3
OTMxYTJjMDNjOWRjMTQ2Li4zMmZhZTExNmNiZmEyZjgzNDliZDI3YjNhYzRiZTk5MzY5ZGNiNTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaApAQCAtNDIsNyArNDIs
NiBAQCBwdWJsaWM6CiAgICAgICAgIFJlY3QgICAgICAgICAgICAgPSAxTCA8PCAxLAogICAgICAg
ICBTb2xpZENvbG9yICAgICAgID0gMUwgPDwgMiwKICAgICAgICAgT3BhY2l0eSAgICAgICAgICA9
IDFMIDw8IDMsCi0gICAgICAgIE1hc2sgICAgICAgICAgICAgPSAxTCA8PCA0LAogICAgICAgICBB
bnRpYWxpYXNpbmcgICAgID0gMUwgPDwgNSwKICAgICAgICAgR3JheXNjYWxlRmlsdGVyICA9IDFM
IDw8IDYsCiAgICAgICAgIFNlcGlhRmlsdGVyICAgICAgPSAxTCA8PCA3LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJm
YWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzcxNDJkNzVk
ZDVhNzYzZjBiNjIyYTU2MzY1YWQ5YzIyZTgzOWUxMi4uOGQzODc3NmU5YjVmNTMzYTYwNWU3M2Nh
NzZlMzNjYWJmZDk4YjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmUuY3BwCkBAIC00NCwxMCArNDQsMTAgQEAgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0
CiAgICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFj
ZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQor
dm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5
KQogewogICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1cmZh
Y2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5z
Zm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRv
VGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9wYWNp
dHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRjZDEwMTRmYzg1ZWEzYTdlOTcxYzhk
ZTA1ZjQxYTRmZDRiZDI2YzcuLjc5M2M2MWRjMzQyZmYwMjYzNTI3ODc0YzcxMjBkMzVlYjI4MGM1
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5o
CkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFjZShQ
YXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRl
ZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IHRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBw
ZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJU
aWxlLmNwcAppbmRleCA5YjQwNTEzMWFiMGU3OTMyZmU5Yzg3ZmRiYzI1ODQ0Y2ViNTI0NDRiLi4w
NzA1N2VhMTQ5MTNlZWUwNjE1OWQ5NDZiNjQxYjJkMTM1NjEwYmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZS5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1
cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheQog
ICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIs
IHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAotdm9p
ZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0
bWFwVGV4dHVyZSogbWFzaywgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBUZXh0
dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICh0ZXh0dXJlKCkuZ2V0KCkpCi0gICAgICAg
IHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlKCkuZ2V0KCksIHJlY3QoKSwgdHJh
bnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgICAgICB0ZXh0dXJlTWFw
cGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwgb3Bh
Y2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuaAppbmRleCBhY2VmNjE4ZWQzZDYwZTMyYTc2M2JmNDBmMTVmY2YyYTM0Nzdl
ZThkLi4yYjQ1ZDkwMDc3OThlYjQ3MTI4ZDA3YzQ0OWQ3ZDBhNTgwOGZlZDlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBU
ZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURh
dGEpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5
ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVw
ZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
VGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1h
cFRleHR1cmUqLCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFw
cGVyVGlsZSgpIHsgfQogCiAgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmNwcAppbmRleCA4MDk3OTIyMjY3ZTk5MGE4MTBmMjAyZDQ1N2E2MmZhZjlmYjg4ZDBiLi40
YTYwYzgxNTcyMjI4YTVkM2RmNThlYTUwMDRhYjNhMDNmN2FhNTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDcsMTIgKzQ3LDEyIEBA
IFRyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6YWRq
dXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1h
c2spCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFj
aXR5KQogewogICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1hcHBl
cik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zv
cm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RpbGVzW2ldLnBh
aW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxj
dWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKKyAgICAg
ICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3Bh
Y2l0eSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgp
KSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwg
ZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCA5MzliMTg1ZDdlYTM1NGYzYmI1Mzk4NWI4YTU2N2U5
MTY3NzY0ZmViLi5mYzFmOWJmNjdmNjExZmViOGM1YmRlNGY3ZjdmOTJiY2ZiNGNhMDhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmUoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJl
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3Jk
ZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBw
ZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVDb250
ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRS
ZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEwNWMx
Y2JmYTU1ZGJlZmVmYjMyYzM2ZDg1ZjczM2JiYzZkZjM3NDguLmNkNWExMmQ5NjdiNjUwYjk5MDhk
ZTEwMmM0YzI5MTMzYTUyZTBiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTA2LDEwICsxMDYsMTAgQEAgdm9pZCBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAg
ICAgbV9wZW5kaW5nU2l6ZSA9IHNpemU7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4m
IHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWlu
dFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywg
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRpbGVz
W2ldLT5wYWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNhbGN1
bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZXNbaV0tPnJlY3QoKSkpOworICAgICAgICB0
aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBjYWxjdWxh
dGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKIH0KIAogVHJhbnNm
b3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNmb3Jt
Rm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpCkBAIC0xMTcsNyArMTE3LDcgQEAg
VHJhbnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJh
bnNmb3JtRm9yUmVjdChjb25zdCBGbG8KICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9p
ZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlm
IChtX3RpbGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyLDggKzE1Miw4IEBA
IHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgLy8gU2VlIFRpbGVkQmFja2luZ1N0b3JlLgog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICog
YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogCi0gICAgcGFpbnRUaWxlc1Rv
VGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRqdXN0
ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7Ci0gICAgcGFpbnRUaWxlc1RvVGV4
dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3Jt
LCBvcGFjaXR5LCBtYXNrLCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIo
cHJldmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBv
cGFjaXR5LCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNUb1Bh
aW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCgpKTsK
IH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRl
cldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDgxOTg5NWY0OTJhZTVhY2VkZTdkMzlhZWUxYzRkODdi
YzI2Y2NmYjkuLjQyMDE0NTRiZDdmNzVjMzYzYTI2OGI3MmIzODc1MTFkZTBlNzFhN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFRl
eHR1cmVNYXBwZXIqKTsKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBj
b25zdDsKICAgICB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKik7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9h
dCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1
cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKQEAgLTcwLDcgKzcw
LDcgQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAgICAgIDog
bV9zY2FsZSgxLikKICAgICB7IH0KLSAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIo
VmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mLCBUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IEZsb2F0UmVjdCYp
OworICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1hcHBl
clRpbGUqPiYsIFRleHR1cmVNYXBwZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3Rl
ZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgRmxvYXRSZWN0IHJlY3Qo
KSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOyB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA5ZmIyYzQ5YWNhNzIzMmY3MjljMjhlYjcyY2YwODY3ZGE1OTY1NGY2Li5jMTkz
MGIzMzE3ZWZhY2E5YjAwYjE4YzVjZmEzOWFkZjc1NGJkOGM5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTMtMDItMjUgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBbVGV4bWFwXSBUZXh0dXJlTWFwcGVyIGlzIHRvbyBlYWdlciB0byB1c2UgaW50ZXJtZWRp
YXRlIHN1cmZhY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwNzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgYSBmZXcgcmVmLXRlc3RzIGZvciBjb3JyZWN0IG92ZXJsYXAgYmxlbmRpbmcg
aW4gYWNjZWxlYXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUuIAorICAgICAgICBTa2lwcGluZyB0aGUg
bmV3IHJlZmxlY3Rpb24gdGVzdCBvbiBNYWMvQ2hyb21pdW0gc2luY2UgaXQncyBub3QgcmVuZGVy
ZWQKKyAgICAgICAgcHJvcGVybHkgb24gdGhvc2UgcGxhdGZvcm1zLgorCisgICAgICAgICogY29t
cG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGls
ZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1v
cGFjaXR5LW5vLW92ZXJsYXAuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3Bh
Y2l0eS1odWdlLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTI2ICBUYWthc2hpIFRveW9zaGltYSAg
PHRveW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgVXNlci1BZ2VudCBoZWFkZXIg
aW4gb3BlbmluZyBoYW5kc2hha2UgaGVhZGVycy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVu
LW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5OTA1ZTlhOTg5YWQyNjlm
ZTM2MTJiMjJkMzk0MTE0M2UxYWE0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFk
PgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3Jl
ZW4iPgorICAgICAgCisgICAgICBkaXYgeworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJv
cmRlci1ib3g7CisgICAgICB9CisgICAgICAuc29saWQgeworICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgICAgIHdpZHRoOiAyMTUwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgfQorCisgICAgICAub3BhY2l0
eSB7IG9wYWNpdHk6IC41OyB9CisgICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAwcHg7fQorICAg
ICAgLmIgeyB0b3A6IDEwMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgCisgICAgICAuY29tcG9zaXRl
ZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgICAgfQor
ICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorCisgICAgPC9zdHlsZT4KKyAgPC9o
ZWFkPgorICAgIDxkaXYgY2xhc3M9Im9wYWNpdHkiPgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGEi
PjE8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzb2xpZCBiIj4yPC9kaXY+CisgIDwvZGl2PgorCis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5k
aW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
b3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NzFiMDY0ZWY5ZjViMGRhYmRmM2UwOTcwNThhYTEyODM3MGM4YzRlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFj
aXR5LWh1Z2UuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgor
ICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAgZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2l6
aW5nOiBib3JkZXItYm94OworICAgICAgfQorICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIw
MHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIH0KKworICAgICAg
Lm9wYWNpdHkgeyBvcGFjaXR5OiAuNTsgfQorICAgICAgLmEgeyB0b3A6IDBweDsgbGVmdDogMHB4
O30KKyAgICAgIC5iIHsgdG9wOiAxMDBweDsgbGVmdDogMHB4O30KKyAgICAgIAorICAgICAgLmNv
bXBvc2l0ZWQgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAg
ICAgIH0KKworICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICAgIDwvc3R5bGU+
CisgIDwvaGVhZD4KKyAgICA8ZGl2IGNsYXNzPSJvcGFjaXR5IGNvbXBvc2l0ZWQiPgorICAgIDxk
aXYgY2xhc3M9InNvbGlkIGEgY29tcG9zaXRlZCI+MTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNv
bGlkIGIgY29tcG9zaXRlZCI+MjwvZGl2PgorICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFj
aXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292
ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjliZDVmMTM2ZDI2YjQ2M2QzMDhhNzNlZjZhNWYwMDJlYjg0YzI4NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcv
Y2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNiBA
QAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAg
IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAKKyAgICAgIGRp
diB7CisgICAgICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgIH0KKyAg
ICAgIC5zb2xpZCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBncmVlbjsKKyAgICAgIH0KKworICAgICAgLm9wYWNpdHkgeyBvcGFjaXR5OiAuNTsgfQorICAg
ICAgLmEgeyB0b3A6IDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5iIHsgdG9wOiAyMDBweDsgbGVm
dDogMjAwcHg7fQorICAgICAgLmMgeyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmQg
eyB0b3A6IDBweDsgbGVmdDogMjAwcHg7fQorICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzog
MDsgfQorICAgICAgLmNvbXBvc2l0ZWQgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJh
bnNsYXRlWigwKTsKKyAgICAgIH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgICA8ZGl2
IGNsYXNzPSJvcGFjaXR5Ij4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGEiPjE8L2Rpdj4KKyAg
ICAgIDxkaXYgY2xhc3M9InNvbGlkIGIiPjI8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlk
IGMiPjM8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGQiPjwvZGl2PgorICAgIDwvZGl2
PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFw
LWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MzE4NDBhMmM0ZGIyY2YyYTcxNTFlYjMxNTQzMzA2M2MzZDRlNmE1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbApAQCAtMCwwICsxLDM3IEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgICAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAgZGl2IHsK
KyAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgfQorICAgICAg
LnNvbGlkIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTAw
cHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworICAgICAgfQorCisgICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9CisgICAgICAu
YSB7IHRvcDogMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDIwMHB4OyBsZWZ0OiAy
MDBweDt9CisgICAgICAuYyB7IHRvcDogMjAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAuZCB7IHRv
cDogMHB4OyBsZWZ0OiAyMDBweDt9CisgICAgICAKKyAgICAgIC5jb21wb3NpdGVkIHsKKyAgICAg
ICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgICB9CisgICAgICAqIHsg
bWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisKKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgICAg
PGRpdiBjbGFzcz0iY29tcG9zaXRlZCBvcGFjaXR5Ij4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlk
IGNvbXBvc2l0ZWQgYSI+MTwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgY29tcG9zaXRl
ZCBiIj4yPC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3NpdGVkIGMiPjM8L2Rp
dj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgZCI+PC9kaXY+CisgICAgPC9k
aXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJs
YXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1
Z2UtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDliMTRjYzAxMGQ1OGFjMmFhYTBhMTg5MTk0
YjUwYTY1MjVlNTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
b3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAg
ICAgLnJlZmxlY3RlZCB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgd2lk
dGg6IDIxNTBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47CisgICAgICAgIG9wYWNpdHk6IDAuNTsKKyAgICAgICAgLXdlYmtpdC1ib3gt
cmVmbGVjdDogYmVsb3cgLTUwcHg7CisgICAgICB9CisgICAgICAKKyAgICAgICogeyBtYXJnaW46
IDA7IHBhZGRpbmc6IDA7IH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgCisgIDxwPk9w
YWNpdHkgc2hvdWxkIGJlIGFwcGxpZWQgYWZ0ZXIgcmVmbGVjdGlvbiwgc28geW91IHNob3VsZCBz
ZWUgYSBncmVlbiByZWN0YW5nbGUgYmVsb3cuIFRoZSBvdmVybGFwIGJldHdlZW4gdGhlIG9yaWdp
bmFsIGFuZCByZWZsZWN0aW9uIHNob3VsZCBub3QgYmUgdmlzaWJsZS48L3A+CisgIDxkaXYgY2xh
c3M9InJlZmxlY3RlZCI+MQorICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVn
ZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0
aW9uLW9wYWNpdHktaHVnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3ODE3OTRlOTk3YmY4MTQyNDU1ZjJm
YjJlMGQxNDY0YzM3MGVmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKQEAgLTAs
MCArMSwyNSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAu
cmVmbGVjdGVkIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDog
MjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBncmVlbjsKKyAgICAgICAgb3BhY2l0eTogMC41OworICAgICAgICAtd2Via2l0LWJveC1yZWZs
ZWN0OiBiZWxvdyAtNTBweDsKKyAgICAgIH0KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeyAt
d2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTt9CisgICAgICAqIHsgbWFyZ2luOiAwOyBw
YWRkaW5nOiAwOyB9CisKKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgIAorICA8cD5PcGFjaXR5
IHNob3VsZCBiZSBhcHBsaWVkIGFmdGVyIHJlZmxlY3Rpb24sIHNvIHlvdSBzaG91bGQgc2VlIGEg
Z3JlZW4gcmVjdGFuZ2xlIGJlbG93LiBUaGUgb3ZlcmxhcCBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBh
bmQgcmVmbGVjdGlvbiBzaG91bGQgbm90IGJlIHZpc2libGUuPC9wPgorICA8ZGl2IGNsYXNzPSJy
ZWZsZWN0ZWQgY29tcG9zaXRlZCI+MQorICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTJhMGExY2NmYmRh
OGMwZjgyMjBiZGVmMWI0YWM2MDQyNWQwNjgyYS4uNTg1OWQ3YmNiMjNlZDllMjIzMDNiOWUzNjE4
OTk2YjQ4OGNmOTcwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCkBAIC0zNzgxLDYgKzM3ODEsOCBAQCB3ZWJraXQub3JnL2IvOTQzNTMgcGxh
dGZvcm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL292ZXJmbG93L292ZXJm
bAogd2Via2l0Lm9yZy9iLzk0MzUzIGNvbXBvc2l0aW5nL292ZXJmbG93L292ZXJmbG93LW92ZXJs
YXktd2l0aC10b3VjaC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTQzNTMgcGxhdGZv
cm0vY2hyb21pdW0vdmlydHVhbC9zb2Z0d2FyZWNvbXBvc2l0aW5nL292ZXJmbG93L292ZXJmbG93
LW92ZXJsYXktd2l0aC10b3VjaC5odG1sIFsgRmFpbHVyZSBdCiAKK3dlYmtpdC5vcmcvYi8xMTA4
NzEgY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisKIHdlYmtpdC5vcmcvYi85MDQ4OCBbIFdpbiBdIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmstcHJlZmxpZ2h0LW9wdGlvbnMuaHRtbCBbIFBhc3Mg
U2xvdyBdCiB3ZWJraXQub3JnL2IvOTA0ODggWyBXaW4gXSBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9l
eHRlbnNpb25zLXJlbG9hZC5odG1sIFsgUGFzcyBTbG93IF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyZGQxNTYyOTZlN2VjNmZmZmIwNzQwMDAxNDU5
YmUwOWU5YzkwNGU2Li44NTA4Mjc4OGVkMmE0MmJhMmExYjMwMjU4YjgzODJkNjZmMTZiNDdiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTE1LDYgKzkx
NSw5IEBAIGNvbXBvc2l0aW5nL292ZXJmbG93L3RleHRhcmVhLXNjcm9sbC10b3VjaC5odG1sCiBj
b21wb3NpdGluZy9vdmVyZmxvdy91cGRhdGluZy1zY3JvbGxpbmctY29udGVudC5odG1sCiBjb21w
b3NpdGluZy9vdmVyZmxvdy9zY3JvbGxpbmctd2l0aG91dC1wYWludGluZy5odG1sCiAKKyMgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDg3MQorY29tcG9zaXRpbmcv
b3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5odG1sCisKICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MDI3CiBmYXN0L2Jsb2NrL2Zsb2F0
LzAxNi5odG1sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190285</attachid>
            <date>2013-02-26 08:02:54 -0800</date>
            <delta_ts>2013-02-26 12:50:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110762-20130226165907.patch</filename>
            <type>text/plain</type>
            <size>85035</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI0MmY5YTEzMTIxMTZm
MGZkNjcyNmNjNGFiOTUxMzhkZDAzNzcxNy4uMTZhNDllMmE5NGM4OWVjNjMyN2JhZjlhZGUyZGE0
MDA1MzcyMmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMy0wMi0yNSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXIgaXMgdG9vIGVhZ2VyIHRvIHVzZSBpbnRlcm1lZGlhdGUgc3VyZmFjZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRoZSB3
YXkgaW50ZXJtZWRpYXRlIHN1cmZhY2VzIGFyZSBoYW5kbGVkIGluIFRleHR1cmVNYXBwZXJMYXll
ci4KKyAgICAgICAgQmVmb3JlaGFuZCwgd2Ugd291bGQgY3JlYXRlIGFuIGludGVybWVkaWF0ZSBz
dXJmYWNlIHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmNlIG9mIG92ZXJsYXAsIGFuZAorICAgICAg
ICB0aGUgaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd291bGQgYmUgdGhlIGxhcmdlc3QgcG9zc2libGUu
IFRoZSByZXN1bHQgd291bGQgdGhlbiBiZSBkcmF3biB0byB0aGUKKyAgICAgICAgdGFyZ2V0IHN1
cmZhY2Ugd2l0aCB0aGUgbGF5ZXIncyBvcGFjaXR5IGFuZCBtYXNrLgorCisgICAgICAgIFRoaXMg
d291bGQgbWFrZSBpdCBzbyB0aGF0ICgxKSBzdXJmYWNlcyBhcmUgY3JlYXRlZCBldmVuIHdoZW4g
dGhleSdyZSBub3QgbmVlZGVkLCBpLmUuIHdoZW4gdGhlcmUKKyAgICAgICAgaXMgbm8gYWN0dWFs
IG92ZXJsYXAsIGFuZCAoMikgbWFzayB3b3VsZG4ndCBiZSBhcHBsaWVkIGNvcnJlY3RseS4KKwor
ICAgICAgICBJbiB0aGlzIHBhdGNoIHRoZSBiZWhhdmlvciBpcyBjaGFuZ2VkIHNvIHRoYXQgdGhl
IGFyZWEgdG8gYmUgcGFpbnRlZCBpcyBkaXZpZGVkIHRvICJvdmVybGFwcGluZyIKKyAgICAgICAg
YW5kICJub24gb3ZlcmxhcHBpbmciIHJlZ2lvbnMuIFRoZSBub24tb3ZlcmxhcHBpbmcgcmVnaW9u
cyBhcmUgcGFpbnRlZCBkaXJlY3RseSwgd2hpbGUgdGhlIG92ZXJsYXBwaW5nCisgICAgICAgIHJl
Z2lvbnMgYXJlIHRpbGVkIHRvIHNtYWxsZXIgcmVjdGFuZ2xlcyBwYWludGVkIHVzaW5nIGFuIGlu
dGVybWVkaWF0ZSBzdXJmYWNlLgorICAgICAgICBNYXNrcyBhcmUgYXBwbGllZCB0byB0aG9zZSBp
bnRlcm1lZGlhdGUgc3VyZmFjZXMgYmFzZWQgb24gdGhlIHRyYW5zZm9ybSBvZiB0aGUgYWN0dWFs
IG1hc2ssIG5vdCBkcmF3bgorICAgICAgICB0b2dldGhlciB3aXRoIHRoZSBjb250ZW50IHRleHR1
cmUgbGlrZSBiZWZvcmUuCisKKyAgICAgICAgVGhpcyBvcHRpbWl6ZXMgZm9yIHRoZSBtb3JlIGNv
bW1vbiBjYXNlIG9mIG9wYWNpdHkgYW5pbWF0aW9ucyBvbiBhIGxhcmdlIHRyZWUsIHdoaWxlIG1h
a2luZyB0aGUgcXVpdGUKKyAgICAgICAgcmFyZSBjYXNlIG9mIGNvbXBvc2l0ZWQgbWFza3Mgc2xp
Z2h0bHkgbGVzcyBvcHRpbWl6ZWQgYnV0IGFsd2F5cyBjb3JyZWN0LgorCisgICAgICAgIFRlc3Rz
OiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS5odG1s
CisgICAgICAgICAgICAgICBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24t
b3BhY2l0eS1odWdlLmh0bWwKKyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLmh0bWwKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmg6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAo
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaDoKKyAgICAgICAgKE1l
ZGlhUGxheWVyUHJpdmF0ZVF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HcmFwaGljc1N1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmg6CisgICAgICAgIChHcmFwaGljc1N1cmZhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9U
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMv
R3JhcGhpY3NTdXJmYWNlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvd2luL0dyYXBoaWNzU3VyZmFjZVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAg
ICAgKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnBh
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmg6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgICAgICAgICAgUmVtb3ZlZCB0aGUgIm1hc2siIHBhcmFtZXRlciBmcm9tIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyIGFuZCBvdmVycmlkZXMsIHNpbmNlCisgICAgICAgICAgICAgICAgd2Ug
bm8gbG9uZ2VyIHBhaW50IHRoZSBjb250ZW50cyBhbmQgdGhlIG1hc2sgaW4gdGhlIHNhbWUgcGFz
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTW9kZSk6CisgICAgICAgIChUZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OmlzSW5NYXNrTW9kZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAgICAgICAgICAgICBJbnN0ZWFkIG9mIHBhaW50
aW5nIHRoZSBtYXNrIHRvZ2V0aGVyIHdpdGggdGhlIHRleHR1cmUvY29sb3IsIHBhaW50IHRoZSBt
YXNrCisgICAgICAgICAgICAgICAgYnkgZHJhd2luZyB3aXRoIERlc3RpbmF0aW9uSW4gdG8gYW4g
ZXhpc3Rpbmcgc3VyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNob3VsZEJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRo
UmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUZp
bHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZU92ZXJsYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZU92ZXJsYXBSZWdpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6YXBwbHlNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21taXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50UmVjdXJzaXZlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omhhc0ZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbS5oOgorCiAyMDEzLTAyLTIzICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYW5p
bWF0aW9uL3N0YXRlLWF0LWVuZC1ldmVudC10cmFuc2Zvcm0tbGF5ZXIuaHRtbCBzaG93cyBhIHJl
ZCBzcXVhcmUgd2hlcmUgaXQgc2hvdWxkbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQzMTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi5k
ZjBiMjYyOTI3YjUwYWZjNDcxYzYwM2I2OTQ4NWI3NDY2YTVjYzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBF
UikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1h
cFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBv
cGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0
Miw3ICsxNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgIFRleHR1cmVNYXBwZXJH
TCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVy
KTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpT
aG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFw
cGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRl
eHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCk7Ci0gICAgdGV4
bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNp
emUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzayk7CisgICAgdGV4bWFwR0wtPmRy
YXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdl
dFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HX0dMKQogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggZDBkZDIzZmU3ZGJkNDFkNmFmODFm
OTA3YWFkOWRhMDMyYzAxYjRkYi4uNDJlYjZjMmU3MDUxYzkwMjc1MGIyODgwZGVjNGZhMzc0M2Iy
MTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHls
ZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSog
bWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmNwcAppbmRleCBjMTkzNWNhYTQ0ODEwYjI1OTQzNzhmYjcyZmIxZTEwYTEwNWQ2
YWRlLi4xZDE1MGUzY2NlMzJlNTQyYTk0OGNhNzQwNWI3MzczMDQ2YTFiNDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVmZmVyKCkgY29uc3QKIH0KIAogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQg
Ki8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLywgQml0
bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0
YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAq
LykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oCmluZGV4IGIzMDA5NmE2YTlhOGQ3NThhNzlkY2MyOWRjZTE2ZDU4YTg1OTc5NmQuLjhmMGVi
M2NiNGFlYjUzNGUzOGY5YjE3NjUwZGMxY2UzZmRmZTljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250
ZXh0TG9zdENhbGxiYWNrPik7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIHZpcnR1
YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCkgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2
aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKaW5kZXggNjZiZGVhZWQxODVhNTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMw
ZjdlYS4uOGQ1YjgxZDEwMjFjZDJiZTM4ZmM0MzIwOWJmMzBmMGI2OTdlMTY4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH5HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CiAjZW5kaWYKICNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUo
KSBjb25zdDsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJn
clRvUmdiKHF1aW50MzIgcGl4ZWwpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRt
YXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQg
b3BhY2l0eSkKIHsKICAgICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBi
bGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJlc3RvcmVDb250ZXh0KCk7CkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgY3VycmVudENvbnRleHQt
Pm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKIAogICAgICAgICBUZXh0dXJlTWFwcGVyR0wq
IHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7
Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBH
TCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrKTsKKyAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleG1hcEdMLCB0YXJnZXRSZWN0LCBtYXRy
aXgsIG9wYWNpdHkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclBy
aXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJiYjc4ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAz
YS4uMWY5NjliNWZkYzIxYWJjMjk0YWEwM2RkYTc3ZmEzNWEzYjY5NjYzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVy
UHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwK
IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSopCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZh
dGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQzOWUzMjI0YzE1MjFlZTAwMzA0MGY1OTUuLmU3
NGNkY2QwODk4NWNiYmNiYTNkMjhiNzZlNDU0MzYzMDUxNjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRl
UXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxl
cmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7IH0KICAgICAvLyBDb25zdC1jYXN0aW5nIGhl
cmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyJ3MgZnVu
Y3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1h
c2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEg
cGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAKaW5kZXggYmFl
ZmE4YTE5MDg0MWFlYWIyYjQwYTJjZDA2NDc3MjBmMTYzMzU5Yy4uMmE3YTRiMjQzYzRjYmU2OGFi
ZTJhYTkyNjE4OTFiNjA5NTdiMjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCkBAIC02
Myw5ICs2Myw5IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpjb3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjCiAgICAgcGxhdGZvcm1Db3B5RnJv
bVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNz
U3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewotICAgIHBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBt
YXNrKTsKKyAgICBwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRh
cmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3Vy
ZmFjZTo6ZnJvbnRCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAppbmRleCBkYTQ5MzY5OThj
NWQwZGQ3OTI4NTk1ZTIyMWM4ZmE5MjY5MWEzODc4Li43MzFhZjJiNmQ2NWMzZGE5YWQ0NzI5YmI3
NjI1NWYzOGRiZWY0ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUo
Y29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYpOwogICAg
IHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCk7
CiAgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1
aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVpbnQzMl90IHN3YXBCdWZmZXJzKCk7CiAgICAg
R3JhcGhpY3NTdXJmYWNlVG9rZW4gZXhwb3J0VG9rZW4oKTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2soKTsKICAgICB2b2lkIHBsYXRmb3JtQ29w
eVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvcHlGcm9tVGV4dHVy
ZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lk
IHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFj
aXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBw
bGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3Q7CiAgICAgdWludDMyX3QgcGxhdGZvcm1Td2FwQnVm
ZmVycygpOwogICAgIEludFNpemUgcGxhdGZvcm1TaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJm
YWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDQzOTFiNTljM2RmNjAxNGNlNzZmYjc2MmVm
N2NhZDM1NTNmYTYzNzAuLjIzZjhhZmI0ODJlZTI5MGMwZTU1MzU1MzA5MmY4ZTU2ODkzMzQ0MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCkBAIC0zODUsNyArMzg1
LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQz
Ml90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4
dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFw
aGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUg
c2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTM5
Nyw3ICszOTcsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogICAgIEZsb2F0UmVjdCByZWN0
T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNm
b3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRl
bnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4
dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHRleHR1cmUsIG1fcHJpdmF0ZS0+ZmxhZ3MoKSwgc2l6
ZSwgcmVjdE9uQ29udGVudHMsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAg
ICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1
cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygpLCBzaXplLCByZWN0T25Db250ZW50cywgYWRq
dXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQogCiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcAppbmRleCBiZjYyZmIxNWEwOWI0YzE4MjMyNDExZjYzYTUzMTdiYWRkNmVhMjVj
Li5jNGQyZDU0MTg0MmQ2YjE2Y2FlZDFhMTkzYTdlY2UxMjJjODFiYTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAtMzMzLDEzICszMzMsMTMgQEAgdm9pZCBH
cmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJl
LCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJp
dmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6
ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3Jt
ID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJl
KG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUs
IHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJl
KG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUs
IHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQz
Ml90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhp
Y3NTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCmluZGV4IDk1MDlmMDk4M2M2MjkwY2YwMGVk
M2JjYWQ4YTliMTA5ODYyNWQ4N2YuLjA2ZjQyN2NmY2FkODM2NDhkZmQ3OGQ1OTI1M2NiMGMwNDRm
ZjQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCkBAIC00MjEs
NyArNDIxLDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlG
cm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9p
ZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIElu
dFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0T25Db250
ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCmluZGV4IDM3
ZjcxNTRmMWM2OWQ5OGI0YTIzYjBjMGNkNzQ4ZWY1ZDlkNzU5MDguLjFiNTRlYTMxMzc1NjhmMzVk
NWFiMzI5ODhlOTk5OTQzZWEzY2E1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKQEAgLTE0MSw2ICsx
NDEsNyBAQCBUZXh0dXJlTWFwcGVyOjpUZXh0dXJlTWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNj
ZWxlcmF0aW9uTW9kZSkKICAgICAsIG1fdGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKICAg
ICAsIG1fdGV4dHVyZVBvb2woYWRvcHRQdHIobmV3IEJpdG1hcFRleHR1cmVQb29sKCkpKQogICAg
ICwgbV9hY2NlbGVyYXRpb25Nb2RlKGFjY2VsZXJhdGlvbk1vZGUpCisgICAgLCBtX2lzTWFza01v
ZGUoZmFsc2UpCiB7IH0KIAogVGV4dHVyZU1hcHBlcjo6flRleHR1cmVNYXBwZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmgKaW5kZXggYWRlYWYzZTcxOGUxMzI1MDM4MjljOTA0ZmMwYTJkMjc1MmM0NjE4Ni4uNzEy
MDBlYzk4NzBjMzliZjYyZmY1ODQ4NDA5NDMxNjJkODFmOGMzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBA
IC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNv
bnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGlu
dCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0
IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZs
b2F0IG9wYWNpdHkgPSAxLjBmLCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSA9IDAs
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjBmLCB1bnNpZ25lZCBleHBvc2VkRWRn
ZXMgPSBBbGxFZGdlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikg
PSAwOwogCiAgICAgLy8gbWFrZXMgYSBzdXJmYWNlIHRoZSB0YXJnZXQgZm9yIHRoZSBmb2xsb3dp
bmcgZHJhd1RleHR1cmUgY2FsbHMuCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50RmxhZ3MgPSAwKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZW5kUGFpbnRpbmcoKSB7IH0KIAorICAgIHZvaWQgc2V0TWFza01vZGUoYm9vbCBtKSB7
IG1faXNNYXNrTW9kZSA9IG07IH0KKwogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6
ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBh
Y3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmKTsKQEAgLTE2Niw2ICsxNjgsOCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsKIAorICAgIGJv
b2wgaXNJbk1hc2tNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc01hc2tNb2RlOyB9CisKIHByaXZh
dGU6CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHN0YXRpYyBQYXNzT3duUHRyPFRl
eHR1cmVNYXBwZXI+IHBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKTsKQEAgLTE3OSw2ICsxODMs
NyBAQCBwcml2YXRlOgogICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1fdGV4dERyYXdpbmdNb2Rl
OwogICAgIE93blB0cjxCaXRtYXBUZXh0dXJlUG9vbD4gbV90ZXh0dXJlUG9vbDsKICAgICBBY2Nl
bGVyYXRpb25Nb2RlIG1fYWNjZWxlcmF0aW9uTW9kZTsKKyAgICBib29sIG1faXNNYXNrTW9kZTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IDZiZmIz
ZjFjZmU1YjJlMTY2YzgxM2MwMzNkYWFlNjhhMTUxZGVmN2QuLmM2MDBhYTJlMWJkMmYxNzM3YTI5
Nzk4ZTM3NjM3NmQyZDVlOTljMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwg
cHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0
bWFwVGV4dHVyZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENvdW50ICovLCBjb25zdCBDb2xvciYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgeyB9CiAgICAgdmlydHVh
bCB+VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CmluZGV4IDVmMmU3MWNmMjdiMjE0MTRlMjJlZDA2MzljMjllMTZjZjA3MTZkMmYuLmFlZGRkYTI5
YTA2YzVhNDk0NWFmZDUzNDAzYmQ3NTk5NjEyNDUwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdOdW1iZXIoaW50
IG51bWJlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW4KICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSk7CiAg
ICAgY29uc3QgdWNoYXIqIGJpdHMgPSBpbWFnZS5iaXRzKCk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0
bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSktPnVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGJp
dHMsIHNvdXJjZVJlY3QsIEludFBvaW50Ojp6ZXJvKCksIGltYWdlLmJ5dGVzUGVyTGluZSgpKTsK
LSAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAx
LjBmLCAwLCBBbGxFZGdlcyk7CisgICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3Qs
IG1vZGVsVmlld01hdHJpeCwgMS4wZiwgQWxsRWRnZXMpOwogCiAjZWxpZiBVU0UoQ0FJUk8pCiAg
ICAgQ1N0cmluZyBjb3VudGVyU3RyaW5nID0gU3RyaW5nOjpudW1iZXIobnVtYmVyKS5hc2NpaSgp
OwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3TnVtYmVyKGlu
dCBudW1iZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2luCiAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogYml0cyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFj
ZSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJm
YWNlKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKS0+
dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoYml0cywgc291cmNlUmVjdCwgSW50UG9pbnQ6Onplcm8o
KSwgc3RyaWRlKTsKLSAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxW
aWV3TWF0cml4LCAxLjBmLCAwLCBBbGxFZGdlcyk7CisgICAgZHJhd1RleHR1cmUoKnRleHR1cmUs
IHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgMS4wZiwgQWxsRWRnZXMpOwogCiAgICAgY2Fp
cm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwogICAgIGNhaXJvX2Rlc3Ryb3koY3IpOwpAQCAt
Mzk0LDcgKzM5NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3TnVtYmVyKGludCBudW1i
ZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2luCiAjZW5kaWYKIH0KIAotdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1
cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFzaywgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNv
bnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWdu
ZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICghdGV4dHVyZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTQwMywyMCArNDAzLDE3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3
VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdMID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZSk7Ci0gICAgZHJhd1Rl
eHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJs
ZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2ss
IGV4cG9zZWRFZGdlcyk7CisgICAgZHJhd1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVH
TC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJsZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRS
ZWN0LCBtYXRyaXgsIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdz
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVk
Z2VzKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBi
b29sIHVzZVJlY3QgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0OwotICAgIGJvb2wg
bWFza2VkID0gISFtYXNrVGV4dHVyZTsKICAgICBib29sIHVzZUFudGlhbGlhc2luZyA9IG1fZW5h
YmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nCiAgICAgICAgICYmIGV4cG9zZWRFZGdlcyA9PSBB
bGxFZGdlcwogICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQodGFyZ2V0UmVjdCku
aXNSZWN0aWxpbmVhcigpOwogCiAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlv
bnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlOwotICAgIGlm
IChtYXNrZWQpCi0gICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
Ok1hc2s7CiAgICAgaWYgKHVzZVJlY3QpCiAgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06OlJlY3Q7CiAgICAgaWYgKG9wYWNpdHkgPCAxKQpAQCAtNDI2LDEyICs0
MjMsMTIgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEkKICAgICAgICAgZmxhZ3MgfD0gU2hvdWxk
QW50aWFsaWFzOwogICAgIH0KIAotICAgIGlmIChtYXNrZWQgfHwgdXNlQW50aWFsaWFzaW5nIHx8
IG9wYWNpdHkgPCAxKQorICAgIGlmICh1c2VBbnRpYWxpYXNpbmcgfHwgb3BhY2l0eSA8IDEpCiAg
ICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtPiBwcm9ncmFtOwogICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRh
KCkuZ2V0U2hhZGVyUHJvZ3JhbShvcHRpb25zKTsKLSAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRS
ZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlKTsKKyAgICBkcmF3VGV4
dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1
cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogfQogCiB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBDb2xvciYgY29sb3IpCkBA
IC01MDQsMTEgKzUwMSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhdyhjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtbwogICAgIHNoYWRlclBy
b2dyYW0tPnNldE1hdHJpeChzaGFkZXJQcm9ncmFtLT5tb2RlbFZpZXdNYXRyaXhMb2NhdGlvbigp
LCBtYXRyaXgpOwogICAgIHNoYWRlclByb2dyYW0tPnNldE1hdHJpeChzaGFkZXJQcm9ncmFtLT5w
cm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgZGF0YSgpLnByb2plY3Rpb25NYXRyaXgpOwogCi0g
ICAgaWYgKGZsYWdzICYgU2hvdWxkQmxlbmQpIHsKLSAgICAgICAgbV9jb250ZXh0M0QtPmJsZW5k
RnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVT
X1NSQ19BTFBIQSk7CisgICAgaWYgKGlzSW5NYXNrTW9kZSgpKSB7CisgICAgICAgIG1fY29udGV4
dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6OlpFUk8sIEdyYXBoaWNzQ29udGV4dDNE
OjpTUkNfQUxQSEEpOwogICAgICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZsYWdz
ICYgU2hvdWxkQmxlbmQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3Jh
cGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQ
SEEpOworICAgICAgICAgICAgbV9jb250ZXh0M0QtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
QkxFTkQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxl
KEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAgfQogCiAgICAgaWYgKGZsYWdzICYgU2hv
dWxkQW50aWFsaWFzKQogICAgICAgICBkcmF3RWRnZVRyaWFuZ2xlcyhzaGFkZXJQcm9ncmFtKTsK
QEAgLTUxNiw4ICs1MTgsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXcoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW8KICAgICAgICAgZHJh
d1VuaXRSZWN0KHNoYWRlclByb2dyYW0sIGRyYXdpbmdNb2RlKTsKIAogICAgIG1fY29udGV4dDNE
LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24o
KSk7CisgICAgbV9jb250ZXh0M0QtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBH
cmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSk7CisgICAgbV9jb250ZXh0M0Qt
PmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOwogfQotdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bSogcHJvZ3JhbSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFz
a1RleHR1cmUpCisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1
cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9w
YWNpdHkpCiB7CiAgICAgbV9jb250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlE
KCkpOwogICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMCk7CkBAIC01MzMsMTkgKzUzOCwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcgog
ICAgIGlmIChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKQogICAgICAgICBwYXR0ZXJuVHJhbnNm
b3JtLnRyYW5zbGF0ZSgwLCAtMSk7CiAKLQogICAgIHByb2dyYW0tPnNldE1hdHJpeChwcm9ncmFt
LT50ZXh0dXJlU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPm9wYWNpdHlMb2NhdGlvbigpLCBvcGFjaXR5
KTsKIAotICAgIGlmIChtYXNrVGV4dHVyZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCogbWFza1RleHR1cmVHTCA9IHN0YXRpY19jYXN0
PGNvbnN0IEJpdG1hcFRleHR1cmVHTCo+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbV9jb250ZXh0
M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKTsKLSAgICAgICAg
bV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
YXNrVGV4dHVyZUdMLT5pZCgpKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xaShwcm9n
cmFtLT5tYXNrTG9jYXRpb24oKSwgMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgfQotCi0gICAgaWYgKG9wYWNp
dHkgPCAxIHx8IG1hc2tUZXh0dXJlKQorICAgIGlmIChvcGFjaXR5IDwgMSkKICAgICAgICAgZmxh
Z3MgfD0gU2hvdWxkQmxlbmQ7CiAKICAgICBkcmF3KHJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJv
Z3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgZmxhZ3MpOwpAQCAtOTQzLDcg
KzkzOSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFw
VGV4dHVyZSYgc2FtcGxlciwgY29uc3QgQml0bWFwVGV4CiAKICAgICBwcmVwYXJlRmlsdGVyUHJv
Z3JhbShwcm9ncmFtLmdldCgpLCBmaWx0ZXIsIHBhc3MsIHNhbXBsZXIuY29udGVudFNpemUoKSwg
c3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oY29udGVudFRleHR1cmUpLmlkKCkp
OwogICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHNhbXBsZXIuY29u
dGVudFNpemUoKSk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0
KCksIHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHNhbXBsZXIpLmlkKCksIDAs
IEludFNpemUoMSwgMSksIHRhcmdldFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIDEsIDAp
OworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCBzdGF0aWNf
Y2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wmPihzYW1wbGVyKS5pZCgpLCAwLCBJbnRTaXplKDEs
IDEpLCB0YXJnZXRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAxKTsKIH0KIAogUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVy
ZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRl
eCBhMmI0N2VhOGNkZGYzNmU4ZmM4ZTZmNDA5MWRjOTI0N2Q5NDk1ODQxLi4zMDJmM2M0OWM4MDY1
OGUxYWI4YzhiMmNiYmMwZTcyZDgyMTgxNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC01NCw4
ICs1NCw4IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxlbWVudGF0aW9uCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0
aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2Vz
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVu
c2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1Rl
eHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREU7CkBAIC0x
MDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIFRleHR1cmVNYXBwZXJHTCgpOwogCi0gICAg
dm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKKyAgICB2b2lkIGRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIHVp
bnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0
eSk7CiAgICAgdm9pZCBkcmF3KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgR0Mz
RGVudW0gZHJhd2luZ01vZGUsIEZsYWdzKTsKIAogICAgIHZvaWQgZHJhd1VuaXRSZWN0KFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgR0MzRGVudW0gZHJhd2luZ01vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCAxZTQ5ZjliNmVjYTg4ZDZhN2NmZDkz
MTkxMjIyYzA0ODExMDM5ZDc1Li41MmE4NDg3OTJkNmZmNjZlNjQ3OWFhZGEyNTE0MjgxMzk4NmE1
ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpiZWdpbkNsaXAoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29uCiAjZW5kaWYKIH0KIAotdm9pZCBUZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRl
eHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1Rl
eHR1cmUsIHVuc2lnbmVkIC8qIGV4cG9zZWRFZGdlcyAqLykKK3ZvaWQgVGV4dHVyZU1hcHBlcklt
YWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIC8qIGV4cG9zZWRFZGdlcyAqLykKIHsKICAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBjdXJyZW50Q29udGV4dCgpOwogICAgIGlmICghY29u
dGV4dCkKQEAgLTEyMiwyMiArMTIyLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6
OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEYKIAogICAg
IGNvbnN0IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlciYgdGV4dHVyZUltYWdlQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyJj4odGV4dHVyZSk7CiAgICAg
SW1hZ2VCdWZmZXIqIGltYWdlID0gdGV4dHVyZUltYWdlQnVmZmVyLm1faW1hZ2UuZ2V0KCk7Ci0g
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNrZWRJbWFnZTsKLQotICAgIGlmIChtYXNrVGV4dHVy
ZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGNvbnN0IEJpdG1hcFRleHR1
cmVJbWFnZUJ1ZmZlciogbWFzayA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVJbWFn
ZUJ1ZmZlcio+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbWFza2VkSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKG1hc2tUZXh0dXJlLT5jb250ZW50U2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0KiBtYXNrQ29udGV4dCA9IG1hc2tlZEltYWdlLT5jb250ZXh0KCk7Ci0gICAgICAgIG1h
c2tDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIElu
dFBvaW50Ojp6ZXJvKCksIENvbXBvc2l0ZUNvcHkpOwotICAgICAgICBpZiAob3BhY2l0eSA8IDEp
IHsKLSAgICAgICAgICAgIG1hc2tDb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsKLSAgICAgICAg
ICAgIG9wYWNpdHkgPSAxOwotICAgICAgICB9Ci0gICAgICAgIG1hc2tDb250ZXh0LT5kcmF3SW1h
Z2VCdWZmZXIobWFzay0+bV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9p
bnQ6Onplcm8oKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0gICAgICAgIGltYWdlID0gbWFz
a2VkSW1hZ2UuZ2V0KCk7Ci0gICAgfQotCiAgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihpc0luTWFza01vZGUoKSA/IENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4gOiBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICBjb250ZXh0LT5zZXRBbHBoYShv
cGFjaXR5KTsKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAgIGNvbnRleHQtPmNvbmNhdDNE
VHJhbnNmb3JtKG1hdHJpeCk7CkBAIC0xNTUsNiArMTQxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXI6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
VHJhbnMKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihpc0luTWFza01vZGUoKSA/IENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4gOiBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5H
KQogICAgIGNvbnRleHQtPmNvbmNhdDNEVHJhbnNmb3JtKG1hdHJpeCk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCmluZGV4IDgwZTY5NDQwNTkwNTQ3NjA3ZTcwMzI2
MWU3OTMxNTVkZGUzYzIwZDUuLjM1ZjJiNDQ5ZDk2ZGMwYmM5YjdiMGFmMTk4YWMwNDBjZDk0ZDY4
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1h
cFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBG
bG9hdFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFw
VGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREUgeyBtX2N1cnJlbnRTdXJmYWNlID0gc3VyZmFjZTt9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDhhMmNjOTkyYjcxMTA2NjYxMDdjMWJl
MDMxM2JhNGFmOTZjNmZiYWYuLjZhMGEwMjFhMzliMWFkZGY4YzhhYTczNmMwZThkZWQ2YTkyM2Vi
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAKKyNpbmNs
dWRlICJSZWdpb24uaCIKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMjcsNyArMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHsKIHB1YmxpYzoKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gc3VyZmFjZTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzazsKICAg
ICBmbG9hdCBvcGFjaXR5OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAg
ICBJbnRTaXplIG9mZnNldDsKQEAgLTEwOCw4ICsxMDksNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMp
CiAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKTsK
IAogICAgIGZsb2F0IG9wYWNpdHkgPSBvcHRpb25zLm9wYWNpdHk7Ci0gICAgUmVmUHRyPEJpdG1h
cFRleHR1cmU+IG1hc2sgPSBvcHRpb25zLm1hc2s7Ci0KICAgICBpZiAobV9zdGF0ZS5zb2xpZENv
bG9yLmlzVmFsaWQoKSAmJiAhbV9zdGF0ZS5jb250ZW50c1JlY3QuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1NvbGlkQ29sb3IobV9zdGF0ZS5jb250ZW50
c1JlY3QsIHRyYW5zZm9ybSwgYmxlbmRXaXRoT3BhY2l0eShtX3N0YXRlLnNvbGlkQ29sb3IsIG9w
YWNpdHkpKTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycykKQEAgLTEyMCw3
ICsxMTksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlKSB7
CiAgICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX3N0YXRlLmNvbnRlbnRz
VmlzaWJsZSAmJiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVCghbGF5
ZXJSZWN0KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50VG9UZXh0
dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSwg
b3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLT5wYWludFRvVGV4
dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0s
IG9wYWNpdHkpOwogICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzKQogICAgICAg
ICAgICAgbV9iYWNraW5nU3RvcmUtPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBt
X3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbGF5ZXJS
ZWN0KCksIHRyYW5zZm9ybSk7CiAgICAgICAgIC8vIE9ubHkgZHJhdyByZXBhaW50IGNvdW50IGZv
ciB0aGUgbWFpbiBiYWNraW5nIHN0b3JlLgpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucykKIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKCFs
YXllclJlY3QoKS5pc0VtcHR5KCkpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9U
ZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3Qs
IHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIG1fY29udGVudHNMYXll
ci0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmNv
bnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5KTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hv
d0RlYnVnQm9yZGVycykKICAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+ZHJhd0JvcmRlcihv
cHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5k
ZWJ1Z0JvcmRlcldpZHRoLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtKTsKICAgICB9
CkBAIC0xNjYsODIgKzE2NSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxm
QW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgbwogICAgICAgICBv
cHRpb25zLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKIH0KIAotSW50UmVjdCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KCkKLXsKLSAgICAvLyBGSVhNRTogQWRk
IGFuIGludmVyc2UgdHJhbnNmb3JtIHRvIExheWVyVHJhbnNmb3JtLgotICAgIHJldHVybiBpbnRl
cm1lZGlhdGVTdXJmYWNlUmVjdChtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCkpOwotfQotCi1JbnRSZWN0IFRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFj
ZVJlY3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBJbnRSZWN0
IHJlY3Q7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbG9jYWxUcmFuc2Zvcm0gPSBUcmFuc2Zv
cm1hdGlvbk1hdHJpeChtYXRyaXgpLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5l
ZCgpKTsKLSAgICByZWN0ID0gZW5jbG9zaW5nSW50UmVjdChsb2NhbFRyYW5zZm9ybS5tYXBSZWN0
KGxheWVyUmVjdCgpKSk7Ci0gICAgaWYgKCFtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgJiYgIW1fc3Rh
dGUubWFza0xheWVyKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJl
bi5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHJlY3QudW5pdGUobV9jaGlsZHJlbltpXS0+aW50
ZXJtZWRpYXRlU3VyZmFjZVJlY3QobWF0cml4KSk7Ci0gICAgfQotCi0jaWYgRU5BQkxFKENTU19G
SUxURVJTKQotICAgIGlmIChtX2N1cnJlbnRGaWx0ZXJzLmhhc091dHNldHMoKSkgewotICAgICAg
ICBGaWx0ZXJPdXRzZXRzIG91dHNldHMgPSBtX2N1cnJlbnRGaWx0ZXJzLm91dHNldHMoKTsKLSAg
ICAgICAgSW50UmVjdCB1bmZpbHRlcmVkVGFyZ2V0UmVjdChyZWN0KTsKLSAgICAgICAgcmVjdC5t
b3ZlKHN0ZDo6bWF4KDAsIC1vdXRzZXRzLmxlZnQoKSksIHN0ZDo6bWF4KDAsIC1vdXRzZXRzLnRv
cCgpKSk7Ci0gICAgICAgIHJlY3QuZXhwYW5kKG91dHNldHMubGVmdCgpICsgb3V0c2V0cy5yaWdo
dCgpLCBvdXRzZXRzLnRvcCgpICsgb3V0c2V0cy5ib3R0b20oKSk7Ci0gICAgICAgIHJlY3QudW5p
dGUodW5maWx0ZXJlZFRhcmdldFJlY3QpOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKG1fc3Rh
dGUucmVwbGljYUxheWVyKQotICAgICAgICByZWN0LnVuaXRlKG1fc3RhdGUucmVwbGljYUxheWVy
LT5pbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChtYXRyaXgpKTsKLQotICAgIHJldHVybiByZWN0Owot
fQotCi1UZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRzTGF5ZXJDb3VudCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmNvdW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgY29uc3QKK2Jvb2wgVGV4
dHVyZU1hcHBlckxheWVyOjpzaG91bGRCbGVuZCgpIGNvbnN0CiB7Ci0gICAgaW50IHNlbGZMYXll
cnNXaXRoQ29udGVudHMgPSAobV9zdGF0ZS5kcmF3c0NvbnRlbnQgPyAxIDogMCkgKyAobV9jb250
ZW50c0xheWVyID8gMSA6IDApOwotICAgIGludCBwb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMg
PSBzZWxmTGF5ZXJzV2l0aENvbnRlbnRzICsgbV9jaGlsZHJlbi5zaXplKCk7Ci0KLSAgICBpZiAo
IXBvdGVudGlhbExheWVyc1dpdGhDb250ZW50cykKLSAgICAgICAgcmV0dXJuIE5vTGF5ZXJzV2l0
aENvbnRlbnQ7Ci0KLSAgICBpZiAocG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzID4gMSkKLSAg
ICAgICAgcmV0dXJuIE11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnRzOwotCi0gICAgaWYgKG1fY2hp
bGRyZW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gU2luZ2xlTGF5ZXJXaXRoQ29udGVudHM7
Ci0KLSAgICByZXR1cm4gbV9jaGlsZHJlbi5maXJzdCgpLT5jb3VudFBvdGVudGlhbExheWVyc1dp
dGhDb250ZW50cygpOwotfQorICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLWJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzaG91bGRQYWludFRvSW50
ZXJtZWRpYXRlU3VyZmFjZSgpIGNvbnN0Ci17CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAg
IGlmIChtX2N1cnJlbnRGaWx0ZXJzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKLSAgICBib29sIGhhc09wYWNpdHkgPSBtX2N1cnJlbnRPcGFjaXR5IDwgMC45OTsKLSAgICBi
b29sIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ID0gY291bnRQb3RlbnRpYWxMYXll
cnNXaXRoQ29udGVudHMoKSA9PSBNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50czsKLSAgICBib29s
IGhhc1JlcGxpY2EgPSAhIW1fc3RhdGUucmVwbGljYUxheWVyOwotICAgIGJvb2wgaGFzTWFzayA9
ICEhbV9zdGF0ZS5tYXNrTGF5ZXI7Ci0KLSAgICAvLyBXZSBkb24ndCB1c2UgdHdvLXBhc3MgYmxl
bmRpbmcgZm9yIHByZXNlcnZlcy0zZCwgdGhhdCdzIGluIHN5bmMgd2l0aCBTYWZhcmkuCi0gICAg
aWYgKG1fc3RhdGUucHJlc2VydmVzM0QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8v
IFdlIHNob3VsZCB1c2UgYW4gaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd2hlbiBibGVuZGluZyBzZXZl
cmFsIGl0ZW1zIHdpdGggYW4gYW5jZXN0b3Igb3BhY2l0eS4KLSAgICAvLyBUZXN0ZWQgYnkgY29t
cG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1vcGFjaXR5Lmh0bWwKLSAgICBpZiAoaGFz
T3BhY2l0eSAmJiAoY2FuSGF2ZU11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnQgfHwgaGFzUmVwbGlj
YSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gV2Ugc2hvdWxkIHVzZSBhbiBpbnRl
cm1lZGlhdGUgc3VyZmFjZSB3aXRoIGEgbWFza2VkIGFuY2VzdG9yLgotICAgIC8vIEluIHRoZSBj
YXNlIG9mIHJlcGxpY2FzIHRoZSBtYXNrIGlzIGFwcGxpZWQgYmVmb3JlIHJlcGxpY2F0aW5nLgot
ICAgIC8vIFRlc3RlZCBieSBjb21wb3NpdGluZy9tYXNrcy9tYXNrZWQtYW5jZXN0b3IuaHRtbAot
ICAgIGlmIChoYXNNYXNrICYmIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ICYmICFo
YXNSZXBsaWNhKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbV9jdXJyZW50T3BhY2l0eSA8IDEgfHwgbV9zdGF0ZS5tYXNrTGF5ZXIgfHwgKG1f
c3RhdGUucmVwbGljYUxheWVyICYmIG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1hc2tM
YXllcik7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjppc1Zpc2libGUoKSBjb25zdApA
QCAtMjYxLDExICsxOTQsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5k
Q2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgogewogICAgIGlmICht
X3N0YXRlLnJlcGxpY2FMYXllcikgewogICAgICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
IHJlcGxpY2FPcHRpb25zKG9wdGlvbnMpOwotICAgICAgICAvLyBXZSBjaG9vc2UgZWl0aGVyIHRo
ZSBjb250ZW50J3MgbWFzayBvciB0aGUgcmVwbGljYSdzIG1hc2suCi0gICAgICAgIC8vIEZJWE1F
OiBibGVuZCB0aGUgdHdvIGlmIGJvdGggZXhpc3QuCi0gICAgICAgIGlmIChtX3N0YXRlLnJlcGxp
Y2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgICAgICByZXBsaWNhT3B0aW9ucy5t
YXNrID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCk7
Ci0KICAgICAgICAgcmVwbGljYU9wdGlvbnMudHJhbnNmb3JtCiAgICAgICAgICAgICAubXVsdGlw
bHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKQog
ICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVy
c2UoKSk7CkBAIC0yODUsNiArMjEzLDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRB
bmltYXRlZE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKICAgICBtX2N1cnJlbnRPcGFjaXR5ID0gb3Bh
Y2l0eTsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBlckxheWVyOjpyZXBs
aWNhVHJhbnNmb3JtKCkKK3sKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgobV9zdGF0
ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKS5tdWx0aXBseSht
X2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOworfQorCiAjaWYgRU5BQkxF
KENTU19GSUxURVJTKQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGVkRmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewpAQCAtMzA3LDcgKzI0MCw3IEBA
IHN0YXRpYyBib29sIHNob3VsZEtlZXBDb250ZW50VGV4dHVyZShjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMsIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEJpdG1hcFRleHR1cmUqIHNvdXJjZSwg
SW50UmVjdCYgdGFyZ2V0UmVjdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFw
cGx5RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBCaXRtYXBUZXh0dXJlKiBzb3VyY2UpCiB7CiAgICAgaWYgKCFmaWx0
ZXJzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHNvdXJjZTsKQEAgLTMxNyw1MSArMjUwLDE4NCBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycywgVAogfQogI2VuZGlmCiAKLXZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQorc3RhdGljIHZvaWQgcmVzb2x2ZU92ZXJsYXBzKFJlZ2lvbiBuZXdSZWdpb24sIFJl
Z2lvbiYgb3ZlcmxhcFJlZ2lvbiwgUmVnaW9uJiBub25PdmVybGFwUmVnaW9uKQogewotICAgIGlm
ICghaXNWaXNpYmxlKCkpCisgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdpb24obmV3UmVnaW9uKTsK
KyAgICBuZXdPdmVybGFwUmVnaW9uLmludGVyc2VjdChub25PdmVybGFwUmVnaW9uKTsKKyAgICBu
b25PdmVybGFwUmVnaW9uLnN1YnRyYWN0KG5ld092ZXJsYXBSZWdpb24pOworICAgIG92ZXJsYXBS
ZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgbmV3UmVnaW9uLnN1YnRyYWN0KG92
ZXJsYXBSZWdpb24pOworICAgIG5vbk92ZXJsYXBSZWdpb24udW5pdGUobmV3UmVnaW9uKTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVPdmVybGFwUmVnaW9ucyhSZWdpb24m
IG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lvbiwgYm9vbCBhbHdheXNSZXNv
bHZlU2VsZk92ZXJsYXApCit7CisgICAgaWYgKCFtX3N0YXRlLnZpc2libGUgfHwgIW1fc3RhdGUu
Y29udGVudHNWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBvcGFjaXR5ID0g
b3B0aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gbWFza1RleHR1cmUgPSBtX3N0YXRlLm1hc2tMYXllciA/IG1fc3RhdGUubWFza0xheWVy
LT50ZXh0dXJlKCkgOiAwOworICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CisgICAgaWYgKG1f
YmFja2luZ1N0b3JlIHx8IG1fc3RhdGUubWFza3NUb0JvdW5kcyB8fCBtX3N0YXRlLm1hc2tMYXll
ciB8fCBoYXNGaWx0ZXJzKCkpCisgICAgICAgIGJvdW5kaW5nUmVjdCA9IGxheWVyUmVjdCgpOwor
ICAgIGVsc2UgaWYgKG1fY29udGVudHNMYXllciB8fCBtX3N0YXRlLnNvbGlkQ29sb3IuYWxwaGEo
KSkKKyAgICAgICAgYm91bmRpbmdSZWN0ID0gbV9zdGF0ZS5jb250ZW50c1JlY3Q7CiAKLSAgICBU
ZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKLSAgICBwYWlu
dE9wdGlvbnMubWFzayA9IG1hc2tUZXh0dXJlLmdldCgpOworI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKKyAgICBpZiAobV9jdXJyZW50RmlsdGVycy5oYXNPdXRzZXRzKCkpIHsKKyAgICAgICAgRmls
dGVyT3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50RmlsdGVycy5vdXRzZXRzKCk7CisgICAgICAg
IEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QoYm91bmRpbmdSZWN0KTsKKyAgICAgICAgYm91
bmRpbmdSZWN0Lm1vdmUoc3RkOjptYXgoMCwgLW91dHNldHMubGVmdCgpKSwgc3RkOjptYXgoMCwg
LW91dHNldHMudG9wKCkpKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LmV4cGFuZChvdXRzZXRzLmxl
ZnQoKSArIG91dHNldHMucmlnaHQoKSwgb3V0c2V0cy50b3AoKSArIG91dHNldHMuYm90dG9tKCkp
OworICAgICAgICBib3VuZGluZ1JlY3QudW5pdGUodW5maWx0ZXJlZFRhcmdldFJlY3QpOworICAg
IH0KKyNlbmRpZgorCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYU1hdHJpeDsKKyAg
ICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKKyAgICAgICAgcmVwbGljYU1hdHJpeCA9IHJl
cGxpY2FUcmFuc2Zvcm0oKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHJlcGxpY2FNYXRy
aXgubWFwUmVjdChib3VuZGluZ1JlY3QpKTsKKyAgICB9CiAKLSAgICBpZiAoIXNob3VsZFBhaW50
VG9JbnRlcm1lZGlhdGVTdXJmYWNlKCkpIHsKLSAgICAgICAgcGFpbnRPcHRpb25zLm9wYWNpdHkg
PSBvcGFjaXR5OwotICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKHBhaW50
T3B0aW9ucyk7CisgICAgYm91bmRpbmdSZWN0ID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkubWFwUmVjdChib3VuZGluZ1JlY3QpOworCisgICAgLy8gQ291bnQgYWxsIG1hc2tzIGFuZCBm
aWx0ZXJzIGFzIG92ZXJsYXAgbGF5ZXJzLgorICAgIGlmIChoYXNGaWx0ZXJzKCkgfHwgbV9zdGF0
ZS5tYXNrTGF5ZXIgfHwgKG1fc3RhdGUucmVwbGljYUxheWVyICYmIG1fc3RhdGUucmVwbGljYUxh
eWVyLT5tX3N0YXRlLm1hc2tMYXllcikpIHsKKyAgICAgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdp
b24oZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ1JlY3QpKTsKKyAgICAgICAgbm9uT3ZlcmxhcFJl
Z2lvbi5zdWJ0cmFjdChuZXdPdmVybGFwUmVnaW9uKTsKKyAgICAgICAgb3ZlcmxhcFJlZ2lvbi51
bml0ZShuZXdPdmVybGFwUmVnaW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8v
IFByZXBhcmUgYSBzdXJmYWNlIHRvIHBhaW50IGludG8uCi0gICAgLy8gV2UgcGFpbnQgaW50byB0
aGUgc3VyZmFjZSBpZ25vcmluZyB0aGUgb3BhY2l0eS90cmFuc2Zvcm0gb2YgdGhlIGN1cnJlbnQg
bGF5ZXIuCi0gICAgSW50UmVjdCBzdXJmYWNlUmVjdCA9IGludGVybWVkaWF0ZVN1cmZhY2VSZWN0
KCk7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2UgPSBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc3VyZmFjZVJlY3Quc2l6ZSgpKTsKLSAgICBw
YWludE9wdGlvbnMuc3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVy
LT5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKLSAgICBwYWludE9wdGlvbnMub3BhY2l0eSA9
IDE7CisgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdpb247CisgICAgUmVnaW9uIG5ld05vbk92ZXJs
YXBSZWdpb24oZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ1JlY3QpKTsKKworICAgIGlmICghbV9z
dGF0ZS5tYXNrc1RvQm91bmRzKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9j
aGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBj
aGlsZCA9IG1fY2hpbGRyZW5baV07CisgICAgICAgICAgICBib29sIGFsd2F5c1Jlc29sdmVTZWxm
T3ZlcmxhcEZvckNoaWxkcmVuID0gZmFsc2U7CisgICAgICAgICAgICBjaGlsZC0+Y29tcHV0ZU92
ZXJsYXBSZWdpb25zKG5ld092ZXJsYXBSZWdpb24sIG5ld05vbk92ZXJsYXBSZWdpb24sIGFsd2F5
c1Jlc29sdmVTZWxmT3ZlcmxhcEZvckNoaWxkcmVuKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikgeworICAgICAgICBuZXdPdmVybGFwUmVnaW9uLnVu
aXRlKHJlcGxpY2FNYXRyaXgubWFwUmVjdChuZXdPdmVybGFwUmVnaW9uLmJvdW5kcygpKSk7Cisg
ICAgICAgIFJlZ2lvbiByZXBsaWNhUmVnaW9uKHJlcGxpY2FNYXRyaXgubWFwUmVjdChuZXdOb25P
dmVybGFwUmVnaW9uLmJvdW5kcygpKSk7CisgICAgICAgIHJlc29sdmVPdmVybGFwcyhyZXBsaWNh
UmVnaW9uLCBuZXdPdmVybGFwUmVnaW9uLCBuZXdOb25PdmVybGFwUmVnaW9uKTsKKyAgICB9CiAK
LSAgICBwYWludE9wdGlvbnMudHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkuaW52ZXJzZSgpOwotICAgIHBhaW50T3B0aW9ucy5vZmZzZXQgPSAtSW50U2l6ZShzdXJmYWNl
UmVjdC54KCksIHN1cmZhY2VSZWN0LnkoKSk7CisgICAgaWYgKCFhbHdheXNSZXNvbHZlU2VsZk92
ZXJsYXAgJiYgc2hvdWxkQmxlbmQoKSkgeworICAgICAgICBuZXdOb25PdmVybGFwUmVnaW9uLnVu
aXRlKG5ld092ZXJsYXBSZWdpb24pOworICAgICAgICBuZXdPdmVybGFwUmVnaW9uID0gUmVnaW9u
KCk7CisgICAgfQogCi0gICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShwYWludE9w
dGlvbnMpOworICAgIG92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAg
cmVzb2x2ZU92ZXJsYXBzKG5ld05vbk92ZXJsYXBSZWdpb24sIG92ZXJsYXBSZWdpb24sIG5vbk92
ZXJsYXBSZWdpb24pOworfQogCi0gICAgLy8gSWYgd2UgcGFpbnRlZCB0aGUgcmVwbGljYSwgdGhl
IG1hc2sgaXMgYWxyZWFkeSBhcHBsaWVkIHNvIHdlIGRvbid0IG5lZWQgdG8gcGFpbnQgaXQgYWdh
aW4uCi0gICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKQotICAgICAgICBtYXNrVGV4dHVyZSA9
IDA7Cit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNv
bnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgUmVnaW9uIG92
ZXJsYXBSZWdpb247CisgICAgUmVnaW9uIG5vbk92ZXJsYXBSZWdpb247CisgICAgY29tcHV0ZU92
ZXJsYXBSZWdpb25zKG92ZXJsYXBSZWdpb24sIG5vbk92ZXJsYXBSZWdpb24pOworICAgIGlmIChv
dmVybGFwUmVnaW9uLmlzRW1wdHkoKSkgeworICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldp
dGhSZXBsaWNhKG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9y
PEludFJlY3Q+IHJlY3RzID0gbm9uT3ZlcmxhcFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcmVjdHNbaV0pOwor
ICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKG9wdGlvbnMpOworICAgICAg
ICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKKyAgICB9CisKKyAgICByZWN0cyA9
IG92ZXJsYXBSZWdpb24ucmVjdHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3Rz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIEludFJlY3QgcmVjdCA9IHJlY3RzW2ldOworICAgICAg
ICBjb25zdCBzdGF0aWMgaW50IG1heFJlY3REaW1lbnNpb24gPSAyMDAwOworICAgICAgICBmb3Ig
KGludCB4ID0gcmVjdC54KCk7IHggPCByZWN0Lm1heFgoKTsgeCArPSBtYXhSZWN0RGltZW5zaW9u
KSB7CisgICAgICAgICAgICBmb3IgKGludCB5ID0gcmVjdC55KCk7IHkgPCByZWN0Lm1heFkoKTsg
eSArPSBtYXhSZWN0RGltZW5zaW9uKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVj
dCh4LCB5LCBtYXhSZWN0RGltZW5zaW9uLCBtYXhSZWN0RGltZW5zaW9uKTsKKyAgICAgICAgICAg
ICAgICB0aWxlUmVjdC5pbnRlcnNlY3QocmVjdCk7CisgICAgICAgICAgICAgICAgcGFpbnRXaXRo
SW50ZXJtZWRpYXRlU3VyZmFjZShvcHRpb25zLCB0aWxlUmVjdCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjphcHBseU1hc2so
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBvcHRpb25z
LnRleHR1cmVNYXBwZXItPnNldE1hc2tNb2RlKHRydWUpOworICAgIHBhaW50U2VsZihvcHRpb25z
KTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnNldE1hc2tNb2RlKGZhbHNlKTsKK30KKwor
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1
cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK3sKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlv
bnMudGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplKTsKKyAgICBvcHRp
b25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOworICAgIHBhaW50
U2VsZkFuZENoaWxkcmVuKG9wdGlvbnMpOworICAgIGlmIChtX3N0YXRlLm1hc2tMYXllcikKKyAg
ICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5TWFzayhvcHRpb25zKTsKICNpZiBFTkFCTEUo
Q1NTX0ZJTFRFUlMpCi0gICAgc3VyZmFjZSA9IGFwcGx5RmlsdGVycyhtX2N1cnJlbnRGaWx0ZXJz
LCBvcHRpb25zLnRleHR1cmVNYXBwZXIsIHN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0KTsKKyAg
ICBpZiAoIW1fY3VycmVudEZpbHRlcnMuaXNFbXB0eSgpKQorICAgICAgICBzdXJmYWNlID0gYXBw
bHlGaWx0ZXJzKG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFj
ZS5nZXQoKSk7CiAjZW5kaWYKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNl
KHN1cmZhY2UuZ2V0KCkpOworICAgIHJldHVybiBzdXJmYWNlOworfQogCitzdGF0aWMgUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBjb21taXRTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
dE9wdGlvbnMmIG9wdGlvbnMsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSwgY29u
c3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgb3BhY2l0eSkKK3sKICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmJpbmRTdXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CiAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdGFyZ2V0VHJhbnNmb3JtOwogICAgIHRhcmdldFRyYW5zZm9ybS50cmFuc2xh
dGUob3B0aW9ucy5vZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZzZXQuaGVpZ2h0KCkpOwogICAg
IHRhcmdldFRyYW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7Ci0gICAgdGFyZ2V0
VHJhbnNmb3JtLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKTsKKyAgICBv
cHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCpzdXJmYWNlLmdldCgpLCByZWN0LCB0
YXJnZXRUcmFuc2Zvcm0sIG9wYWNpdHkpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZShjb25zdCBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAg
IFJlZlB0cjxCaXRtYXBUZXh0dXJlPiByZXBsaWNhU3VyZmFjZTsKKyAgICBSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gbWFpblN1cmZhY2U7CisgICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWlu
dE9wdGlvbnMob3B0aW9ucyk7CisgICAgcGFpbnRPcHRpb25zLm9mZnNldCA9IC1JbnRTaXplKHJl
Y3QueCgpLCByZWN0LnkoKSk7CisgICAgcGFpbnRPcHRpb25zLm9wYWNpdHkgPSAxOworICAgIHBh
aW50T3B0aW9ucy50cmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworICAgIGlmICht
X3N0YXRlLnJlcGxpY2FMYXllcikgeworICAgICAgICBwYWludE9wdGlvbnMudHJhbnNmb3JtID0g
cmVwbGljYVRyYW5zZm9ybSgpOworICAgICAgICByZXBsaWNhU3VyZmFjZSA9IHBhaW50SW50b1N1
cmZhY2UocGFpbnRPcHRpb25zLCByZWN0LnNpemUoKSk7CisgICAgICAgIHBhaW50T3B0aW9ucy50
cmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworICAgICAgICBpZiAobV9zdGF0ZS5y
ZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyKQorICAgICAgICAgICAgbV9zdGF0ZS5yZXBs
aWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyLT5hcHBseU1hc2socGFpbnRPcHRpb25zKTsKKyAg
ICB9CiAKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCpzdXJmYWNlLmdl
dCgpLCBzdXJmYWNlUmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrVGV4dHVyZS5n
ZXQoKSk7CisgICAgaWYgKHJlcGxpY2FTdXJmYWNlICYmIG9wdGlvbnMub3BhY2l0eSA9PSAxKQor
ICAgICAgICByZXBsaWNhU3VyZmFjZSA9IGNvbW1pdFN1cmZhY2Uob3B0aW9ucywgcmVwbGljYVN1
cmZhY2UsIHJlY3QsIDEpOworCisgICAgbWFpblN1cmZhY2UgPSBwYWludEludG9TdXJmYWNlKHBh
aW50T3B0aW9ucywgcmVjdC5zaXplKCkpOworICAgIGlmIChyZXBsaWNhU3VyZmFjZSkgeworICAg
ICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHJlcGxpY2FTdXJmYWNlLmdl
dCgpKTsKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqbWFpblN1
cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIHJlY3Quc2l6ZSgpKSk7
CisgICAgICAgIG1haW5TdXJmYWNlID0gcmVwbGljYVN1cmZhY2U7CisgICAgfQorCisgICAgY29t
bWl0U3VyZmFjZShvcHRpb25zLCBtYWluU3VyZmFjZSwgcmVjdCwgb3B0aW9ucy5vcGFjaXR5KTsK
K30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50UmVjdXJzaXZlKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKCFpc1Zpc2libGUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG91bGRCbGVuZCgpKSB7CisgICAgICAgIHBh
aW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2Eob3B0aW9ucyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRp
b25zKTsKKyAgICBwYWludE9wdGlvbnMub3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eSAqIG1fY3Vy
cmVudE9wYWNpdHk7CisgICAgcGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKHBhaW50T3B0aW9ucyk7
CiB9CiAKIFRleHR1cmVNYXBwZXJMYXllcjo6flRleHR1cmVNYXBwZXJMYXllcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmgKaW5kZXggNjFmYjgyNzY3MDg2MDNlMTEwZmFjZWQ0MTg5ZGI3ZGEwYmMw
MzFmYS4uNjAyYjJjMzk0MTU1MmU1YmQxZTRmYTFhYmM4M2Q5MmNjMDYwNGY4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFJlZ2lvbjsKIGNsYXNzIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnM7CiBjbGFz
cyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjsKIApAQCAtNzMsNiArNzQsMTYgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYpOwogI2VuZGlmCisKKyAgICBib29sIGhhc0ZpbHRlcnMoKSBjb25zdAor
ICAgIHsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgICAgIHJldHVybiAhbV9jdXJyZW50
RmlsdGVycy5pc0VtcHR5KCk7CisjZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KyAgICB9CisKICAgICB2b2lkIHNldERlYnVnVmlzdWFscyhib29sIHNob3dEZWJ1Z0JvcmRlcnMs
IGNvbnN0IENvbG9yJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoLCBi
b29sIHNob3dSZXBhaW50Q291bnRlcik7CiAgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50KTsK
ICAgICB2b2lkIHNldENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqKTsK
QEAgLTkyLDggKzEwMyw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY29uc3QgVGV4dHVyZU1h
cHBlckxheWVyKiByb290TGF5ZXIoKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVUcmFuc2Zvcm1z
UmVjdXJzaXZlKCk7Ci0gICAgSW50UmVjdCBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIEludFJlY3QgaW50ZXJtZWRpYXRlU3VyZmFjZVJl
Y3QoKTsKIAogICAgIHN0YXRpYyBpbnQgY29tcGFyZUdyYXBoaWNzTGF5ZXJzWlZhbHVlKGNvbnN0
IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpOwogICAgIHN0YXRpYyB2b2lkIHNvcnRCeVpPcmRlcihW
ZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKiA+JiBhcnJheSwgaW50IGZpcnN0LCBpbnQgbGFzdCk7
CkBAIC0xMDEsMTUgKzExMCwyMSBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1fYmFja2luZ1N0b3JlID8gbV9iYWNraW5nU3RvcmUt
PnRleHR1cmUoKSA6IDA7IH0KICAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRpb25EZWx0YTsgfQogICAgIGJv
b2wgaXNBbmNlc3RvckZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0OwotCisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggcmVwbGljYVRyYW5zZm9ybSgpOwogICAgIHZvaWQgYWRkQ2hpbGQoVGV4dHVyZU1h
cHBlckxheWVyKik7CiAgICAgdm9pZCByZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgdm9pZCByZW1v
dmVBbGxDaGlsZHJlbigpOwogCisgICAgdm9pZCBjb21wdXRlT3ZlcmxhcFJlZ2lvbnMoUmVnaW9u
JiBvdmVybGFwUmVnaW9uLCBSZWdpb24mIG5vbk92ZXJsYXBSZWdpb24sIGJvb2wgYWx3YXlzUmVz
b2x2ZVNlbGZPdmVybGFwID0gdHJ1ZSk7CisKICAgICB2b2lkIHBhaW50UmVjdXJzaXZlKGNvbnN0
IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKKyAgICB2b2lkIHBhaW50VXNpbmdPdmVybGFw
UmVnaW9ucyhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CisgICAgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiBwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
dE9wdGlvbnMmLCBjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCBwYWludFdpdGhJbnRlcm1lZGlh
dGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRSZWN0
Jik7CiAgICAgdm9pZCBwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYp
OwogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CisgICAgdm9pZCBhcHBseU1hc2soY29uc3Qg
VGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogCiAgICAgLy8gR3JhcGhpY3NMYXllckFuaW1h
dGlvbjo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGVkVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CkBAIC0xMjUsOCArMTQwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgTXVsdGlwbGVMYXllcnNXaXRoQ29udGVudHMKICAgICB9OwogCi0gICAg
Q29udGVudHNMYXllckNvdW50IGNvdW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgY29u
c3Q7Ci0gICAgYm9vbCBzaG91bGRQYWludFRvSW50ZXJtZWRpYXRlU3VyZmFjZSgpIGNvbnN0Owor
ICAgIGJvb2wgc2hvdWxkQmxlbmQoKSBjb25zdDsKIAogICAgIGlubGluZSBGbG9hdFJlY3QgbGF5
ZXJSZWN0KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ci5oCmluZGV4IGY0ODc5NTI2NzY4MDE5MDg1Y2JkZWY4OWU2NmVlNDdkZWY4MTAxMTUuLmI5YmFk
ZWQzMzQ3MzgxY2MwZGIyOWYyMWMyYWFlZGIwMGNmOTA1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjAsIEJpdG1hcFRleHR1cmUqIG1hc2sgPSAwKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
cmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBjb2xv
ciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAppbmRleCA4YzEzMWU2MTllMWFlMDE3NzFjMGNlYjI1
NDE1MjVkY2JlNjI1OTE3Li41M2VlMmYwZGRhNGQ1ODllYzU5NzA0ZWIzNjU3M2M4NzQ1YzljNzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTEyNyw3
ICsxMjcsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4VGVtcGxhdGUgPQogICAgICAgICB1
bmlmb3JtIG1hdDQgdV90ZXh0dXJlU3BhY2VNYXRyaXg7CiAKICAgICAgICAgdmFyeWluZyB2ZWMy
IHZfdGV4Q29vcmQ7Ci0gICAgICAgIHZhcnlpbmcgdmVjMiB2X21hc2tUZXhDb29yZDsKICAgICAg
ICAgdmFyeWluZyBmbG9hdCB2X2FudGlhbGlhczsKIAogICAgICAgICB2b2lkIG5vb3AoaW5vdXQg
dmVjMiBkdW1teVBhcmFtZXRlcikgeyB9CkBAIC0xNzYsOCArMTc1LDYgQEAgc3RhdGljIGNvbnN0
IGNoYXIqIHZlcnRleFRlbXBsYXRlID0KICAgICAgICAgICAgIC8vIFRoZSB0ZXh0dXJlIHBvc2l0
aW9uIG5lZWRzIHRvIGJlIGNsYW1wZWQgdG8gMC4uMSBiZWZvcmUgdGhlIHRleHR1cmUgbWF0cml4
IGlzIGFwcGxpZWQuCiAgICAgICAgICAgICB2ZWM0IGNsYW1wZWRQb3NpdGlvbiA9IGNsYW1wKHZl
YzQocG9zaXRpb24sIDAuLCAxLiksIDAuLCAxLik7CiAgICAgICAgICAgICB2X3RleENvb3JkID0g
KHVfdGV4dHVyZVNwYWNlTWF0cml4ICogY2xhbXBlZFBvc2l0aW9uKS54eTsKLQotICAgICAgICAg
ICAgdl9tYXNrVGV4Q29vcmQgPSBwb3NpdGlvbjsKICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0g
dV9wcm9qZWN0aW9uTWF0cml4ICogdV9tb2RlbFZpZXdNYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAw
LiwgMS4pOwogICAgICAgICB9CiAgICAgKTsKQEAgLTIwNCwxMiArMjAxLDEwIEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlID0KICAgICBTVFJJTkdJRlkoCiAgICAgICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogICAgICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2Ft
cGxlcjsKLSAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19tYXNrOwogICAgICAgICB1bmlmb3Jt
IHNhbXBsZXIyRCBzX2NvbnRlbnRUZXh0dXJlOwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfb3Bh
Y2l0eTsKICAgICAgICAgdmFyeWluZyBmbG9hdCB2X2FudGlhbGlhczsKICAgICAgICAgdmFyeWlu
ZyB2ZWMyIHZfdGV4Q29vcmQ7Ci0gICAgICAgIHZhcnlpbmcgdmVjMiB2X21hc2tUZXhDb29yZDsK
ICAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2ZpbHRlckFtb3VudDsKICAgICAgICAgdW5pZm9ybSB2
ZWMyIHVfYmx1clJhZGl1czsKICAgICAgICAgdW5pZm9ybSB2ZWMyIHVfc2hhZG93T2Zmc2V0OwpA
QCAtMjIzLDcgKzIxOCw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlID0K
ICAgICAgICAgdm9pZCBhcHBseVRleHR1cmUoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciA9IFNh
bXBsZXJGdW5jdGlvbihzX3NhbXBsZXIsIHZfdGV4Q29vcmQpOyB9CiAgICAgICAgIHZvaWQgYXBw
bHlPcGFjaXR5KGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdV9vcGFjaXR5OyB9CiAgICAg
ICAgIHZvaWQgYXBwbHlBbnRpYWxpYXNpbmcoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAqPSBh
bnRpYWxpYXMoKTsgfQotICAgICAgICB2b2lkIGFwcGx5TWFzayhpbm91dCB2ZWM0IGNvbG9yKSB7
IGNvbG9yICo9IHRleHR1cmUyRChzX21hc2ssIHZfbWFza1RleENvb3JkKS5hOyB9CiAKICAgICAg
ICAgdm9pZCBhcHBseUdyYXlzY2FsZUZpbHRlcihpbm91dCB2ZWM0IGNvbG9yKQogICAgICAgICB7
CkBAIC0zMzQsNyArMzI4LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGUg
PQogICAgICAgICAgICAgYXBwbHlUZXh0dXJlSWZOZWVkZWQoY29sb3IpOwogICAgICAgICAgICAg
YXBwbHlTb2xpZENvbG9ySWZOZWVkZWQoY29sb3IpOwogICAgICAgICAgICAgYXBwbHlBbnRpYWxp
YXNpbmdJZk5lZWRlZChjb2xvcik7Ci0gICAgICAgICAgICBhcHBseU1hc2tJZk5lZWRlZChjb2xv
cik7CiAgICAgICAgICAgICBhcHBseU9wYWNpdHlJZk5lZWRlZChjb2xvcik7CiAgICAgICAgICAg
ICBhcHBseUdyYXlzY2FsZUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5
U2VwaWFGaWx0ZXJJZk5lZWRlZChjb2xvcik7CkBAIC0zNjIsNyArMzU1LDYgQEAgUGFzc1JlZlB0
cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
OmNyZWF0ZShQYXNzUmUKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoUmVjdCk7CiAgICAg
U0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFNvbGlkQ29sb3IpOwogICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhPcGFjaXR5KTsKLSAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoTWFzayk7
CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKEFudGlhbGlhc2luZyk7CiAgICAgU0VUX0FQ
UExJRVJfRlJPTV9PUFRJT05TKEdyYXlzY2FsZUZpbHRlcik7CiAgICAgU0VUX0FQUExJRVJfRlJP
TV9PUFRJT05TKFNlcGlhRmlsdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmgKaW5kZXggMDM3ZTdkNjlkOWE4Nzc0ZjFkMzA2MWE3NzkzMWEyYzAzYzlkYzE0Ni4uMzJm
YWUxMTZjYmZhMmY4MzQ5YmQyN2IzYWM0YmU5OTM2OWRjYjUxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKQEAgLTQyLDcgKzQyLDYgQEAgcHVibGljOgogICAgICAg
ICBSZWN0ICAgICAgICAgICAgID0gMUwgPDwgMSwKICAgICAgICAgU29saWRDb2xvciAgICAgICA9
IDFMIDw8IDIsCiAgICAgICAgIE9wYWNpdHkgICAgICAgICAgPSAxTCA8PCAzLAotICAgICAgICBN
YXNrICAgICAgICAgICAgID0gMUwgPDwgNCwKICAgICAgICAgQW50aWFsaWFzaW5nICAgICA9IDFM
IDw8IDUsCiAgICAgICAgIEdyYXlzY2FsZUZpbHRlciAgPSAxTCA8PCA2LAogICAgICAgICBTZXBp
YUZpbHRlciAgICAgID0gMUwgPDwgNywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmUuY3BwCmluZGV4IGM3MTQyZDc1ZGQ1YTc2M2YwYjYyMmE1NjM2NWFk
OWMyMmU4MzllMTIuLjhkMzg3NzZlOWI1ZjUzM2E2MDVlNzNjYTc2ZTMzY2FiZmQ5OGI3YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcApA
QCAtNDQsMTAgKzQ0LDEwIEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBl
clN1cmZhY2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAogICAgIHJldHVybiBlbXB0eVRl
eHR1cmU7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwg
ZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBpZiAobV9ncmFw
aGljc1N1cmZhY2UpCi0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1h
cHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2sp
OworICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVy
ZU1hcHBlciwgdGFyZ2V0UmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5n
U3RvcmUuaAppbmRleCA0Y2QxMDE0ZmM4NWVhM2E3ZTk3MWM4ZGUwNWY0MWE0ZmQ0YmQyNmM3Li43
OTNjNjFkYzM0MmZmMDI2MzUyNzg3NGM3MTIwZDM1ZWIyODBjNTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaApAQCAtMzcsNyArMzcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRHcmFwaGljc1N1cmZhY2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1
cmZhY2U+KTsKICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQodWludDMyX3QgZnJvbnRCdWZm
ZXIpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBC
aXRtYXBUZXh0dXJlKik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0KTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZSgpIHsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAKaW5kZXggOWI0MDUx
MzFhYjBlNzkzMmZlOWM4N2ZkYmMyNTg0NGNlYjUyNDQ0Yi4uMDcwNTdlYTE0OTEzZWVlMDYxNTlk
OTQ2YjY0MWIyZDEzNTYxMGJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCkBAIC02OSwx
MCArNjksMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXkKICAgICBtX3RleHR1cmUtPnVwZGF0
ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0LCBzb3VyY2VP
ZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGU6
OnBhaW50KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2ssIGNv
bnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnBhaW50
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykK
IHsKICAgICBpZiAodGV4dHVyZSgpLmdldCgpKQotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3
VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFz
aywgZXhwb3NlZEVkZ2VzKTsKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKnRl
eHR1cmUoKS5nZXQoKSwgcmVjdCgpLCB0cmFuc2Zvcm0sIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmgKaW5kZXgg
YWNlZjYxOGVkM2Q2MGUzMmE3NjNiZjQwZjE1ZmNmMmEzNDc3ZWU4ZC4uMmI0NWQ5MDA3Nzk4ZWI0
NzEyOGQwN2M0NDlkN2QwYTU4MDhmZWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFw
cGVyKiwgSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVu
dHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKICAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3QgSW50UmVjdCYs
IEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBVcGRhdGVDYW5Nb2RpZnlPcmlnaW5h
bEltYWdlRGF0YSk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFRleHR1cmVNYXBwZXIqLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKiwgY29uc3QgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoVGV4dHVyZU1hcHBl
ciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIGNvbnN0IHVuc2lnbmVkIGV4
cG9zZWRFZGdlcyk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGUoKSB7IH0KIAogICAg
IGV4cGxpY2l0IFRleHR1cmVNYXBwZXJUaWxlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggODA5Nzky
MjI2N2U5OTBhODEwZjIwMmQ0NTdhNjJmYWY5ZmI4OGQwYi4uNGE2MGM4MTU3MjIyOGE1ZDNkZjU4
ZWE1MDA0YWIzYTAzZjdhYTU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ3LDEyICs0NywxMiBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNmb3JtRm9yUmVj
dChjbwogICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCks
IHRhcmdldFJlY3QpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
IHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICB1cGRhdGVD
b250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1cmVNYXBwZXIpOwogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zv
cm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxl
cy5zaXplKCk7ICsraSkKLSAgICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBh
ZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdl
cyhyZWN0KCksIG1fdGlsZXNbaV0ucmVjdCgpKSk7CisgICAgICAgIG1fdGlsZXNbaV0ucGFpbnQo
dGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIGNhbGN1bGF0ZUV4cG9z
ZWRUaWxlRWRnZXMocmVjdCgpLCBtX3RpbGVzW2ldLnJlY3QoKSkpOwogfQogCiB2b2lkIFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgK
aW5kZXggOTM5YjE4NWQ3ZWEzNTRmM2JiNTM5ODViOGE1NjdlOTE2Nzc2NGZlYi4uZmMxZjliZjY3
ZjYxMWZlYjhjNWJkZTRmN2Y3ZjkyYmNmYjRjYTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFw
VGV4dHVyZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBmbG9hdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4
dHVyZU1hcHBlciosIGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFpbnRDb3Vu
dCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpIE9WRVJSSURFOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlcios
IEltYWdlKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6
OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAxMDVjMWNiZmE1NWRiZWZlZmIzMmMzNmQ4
NWY3MzNiYmM2ZGYzNzQ4Li5jZDVhMTJkOTY3YjY1MGI5OTA4ZGUxMDJjNGMyOTEzM2E1MmUwYjk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdT
dG9yZS5jcHAKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIG1fcGVuZGluZ1NpemUgPSBz
aXplOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0
dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywgVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwg
ZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaywgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBl
cihWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGUqPiYgdGlsZXMsIFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9w
YWNpdHksIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHRpbGVzLnNpemUoKTsgKytpKQotICAgICAgICB0aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1h
cHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2Vz
KHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKKyAgICAgICAgdGlsZXNbaV0tPnBhaW50KHRleHR1
cmVNYXBwZXIsIHRyYW5zZm9ybSwgb3BhY2l0eSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhy
ZWN0LCB0aWxlc1tpXS0+cmVjdCgpKSk7CiB9CiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0KQpAQCAtMTE3LDcgKzExNyw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3Qg
RmxvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwg
dGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxv
YXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBpZiAobV90aWxlcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE1Miw4ICsxNTIsOCBAQCB2b2lkIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLAogICAgIC8vIFNlZSBUaWxlZEJhY2tpbmdTdG9yZS4KICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybSAqIGFkanVzdGVkVHJhbnNmb3JtRm9y
UmVjdCh0YXJnZXRSZWN0KTsKIAotICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIocHJldmlv
dXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5
LCBtYXNrLCByZWN0KCkpOwotICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNUb1Bh
aW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzaywgcmVj
dCgpKTsKKyAgICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHByZXZpb3VzVGlsZXNUb1BhaW50
LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCgpKTsKKyAg
ICBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKHRpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwg
YWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIHJlY3QoKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApp
bmRleCA4MTk4OTVmNDkyYWU1YWNlZGU3ZDM5YWVlMWM0ZDg3YmMyNmNjZmI5Li40MjAxNDU0YmQ3
Zjc1YzM2M2EyNjhiNzJiMzg3NTExZGUwZTcxYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0dXJlTWFwcGVyKik7CiAgICAg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3Jk
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFwcGVyKiwgaW50IHJlcGFp
bnRDb3VudCwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIE9WRVJSSURFOwogCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUoKQogICAgICAgICA6IG1fc2NhbGUoMS4pCiAgICAgeyB9
Ci0gICAgdm9pZCBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVy
VGlsZSo+JiwgVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxv
YXQsIEJpdG1hcFRleHR1cmUqLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBhaW50VGls
ZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mLCBUZXh0dXJlTWFw
cGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0
Jik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpOwogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9zaXplKTsgfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWZiMmM0OWFj
YTcyMzJmNzI5YzI4ZWI3MmNmMDg2N2RhNTk2NTRmNi4uNmUxY2FiNWVkY2VmY2NjZmFkMGM5MDA0
ODliNmY2OTA3YWRjNGYwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTI1ICBObydh
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1RleG1hcF0gVGV4dHVy
ZU1hcHBlciBpcyB0b28gZWFnZXIgdG8gdXNlIGludGVybWVkaWF0ZSBzdXJmYWNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBmZXcgcmVm
LXRlc3RzIGZvciBjb3JyZWN0IG92ZXJsYXAgYmxlbmRpbmcgaW4gYWNjZWxlYXJhdGVkIGNvbXBv
c2l0aW5nIG1vZGUuIAorICAgICAgICBTa2lwcGluZyB0aGUgbmV3IHJlZmxlY3Rpb24gdGVzdCBv
biBNYWMvQ2hyb21pdW0gc2luY2UgaXQncyBub3QgcmVuZGVyZWQKKyAgICAgICAgcHJvcGVybHkg
b24gdGhvc2UgcGxhdGZvcm1zLgorCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVu
ZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UuaHRt
bDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJl
bi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogY29t
cG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRt
bDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0
aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3Np
dGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLmh0bWw6IEFkZGVk
LgorCiAyMDEzLTAyLTI2ICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBBZGQgVXNlci1BZ2VudCBoZWFkZXIgaW4gb3BlbmluZyBoYW5kc2hha2Ug
aGVhZGVycy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5OTA1ZTlhOTg5YWQyNjlmZTM2MTJiMjJkMzk0MTE0M2UxYWE0
YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJs
ZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMzMg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAg
ICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgCisgICAgICBk
aXYgeworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICB9Cisg
ICAgICAuc29saWQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRo
OiAyMTUwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworICAgICAgfQorCisgICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9Cisg
ICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDEwMHB4OyBs
ZWZ0OiAwcHg7fQorICAgICAgCisgICAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQt
dHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgICAgfQorICAgICAgKiB7IG1hcmdpbjogMDsg
cGFkZGluZzogMDsgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAgIDxkaXYgY2xhc3M9
Im9wYWNpdHkiPgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGEiPjE8L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJzb2xpZCBiIj4yPC9kaXY+CisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHkt
aHVnZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGls
ZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzFiMDY0ZWY5ZjViMGRhYmRmM2Uw
OTcwNThhYTEyODM3MGM4YzRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UuaHRtbApAQCAtMCww
ICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIAor
ICAgICAgZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAg
ICAgfQorICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICB3aWR0aDogMjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIH0KKworICAgICAgLm9wYWNpdHkgeyBvcGFjaXR5OiAu
NTsgfQorICAgICAgLmEgeyB0b3A6IDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5iIHsgdG9wOiAx
MDBweDsgbGVmdDogMHB4O30KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeworICAgICAgICAt
d2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0KKworICAgICAgKiB7IG1h
cmdpbjogMDsgcGFkZGluZzogMDsgfQorICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgICA8ZGl2
IGNsYXNzPSJvcGFjaXR5IGNvbXBvc2l0ZWQiPgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGEgY29t
cG9zaXRlZCI+MTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGIgY29tcG9zaXRlZCI+Mjwv
ZGl2PgorICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRy
ZW4tb3BhY2l0eS1uby1vdmVybGFwLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjliZDVmMTM2
ZDI2YjQ2M2QzMDhhNzNlZjZhNWYwMDJlYjg0YzI4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1v
dmVybGFwLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIEhUTUw+Cis8
aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAKKyAgICAgIGRpdiB7CisgICAgICAgIC13ZWJraXQt
Ym94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgIH0KKyAgICAgIC5zb2xpZCB7CisgICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIH0KKwor
ICAgICAgLm9wYWNpdHkgeyBvcGFjaXR5OiAuNTsgfQorICAgICAgLmEgeyB0b3A6IDBweDsgbGVm
dDogMHB4O30KKyAgICAgIC5iIHsgdG9wOiAyMDBweDsgbGVmdDogMjAwcHg7fQorICAgICAgLmMg
eyB0b3A6IDIwMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmQgeyB0b3A6IDBweDsgbGVmdDogMjAw
cHg7fQorICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorICAgICAgLmNvbXBvc2l0
ZWQgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0K
KworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgICA8ZGl2IGNsYXNzPSJvcGFjaXR5Ij4KKyAg
ICAgIDxkaXYgY2xhc3M9InNvbGlkIGEiPjE8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlk
IGIiPjI8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGMiPjM8L2Rpdj4KKyAgICAgIDxk
aXYgY2xhc3M9InNvbGlkIGQiPjwvZGl2PgorICAgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktbm8tb3ZlcmxhcC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1i
bGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzE4
NDBhMmM0ZGIyY2YyYTcxNTFlYjMxNTQzMzA2M2MzZDRlNmE1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5
LW5vLW92ZXJsYXAuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1s
PgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBt
ZWRpYT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAgZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gt
c2l6aW5nOiBib3JkZXItYm94OworICAgICAgfQorICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgfQorCisgICAg
ICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9CisgICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAw
cHg7fQorICAgICAgLmIgeyB0b3A6IDIwMHB4OyBsZWZ0OiAyMDBweDt9CisgICAgICAuYyB7IHRv
cDogMjAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAuZCB7IHRvcDogMHB4OyBsZWZ0OiAyMDBweDt9
CisgICAgICAKKyAgICAgIC5jb21wb3NpdGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06
IHRyYW5zbGF0ZVooMCk7CisgICAgICB9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAw
OyB9CisKKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRl
ZCBvcGFjaXR5Ij4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgYSI+MTwvZGl2
PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgY29tcG9zaXRlZCBiIj4yPC9kaXY+CisgICAgICA8
ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3NpdGVkIGMiPjM8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9
InNvbGlkIGNvbXBvc2l0ZWQgZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlv
bi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292
ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2UtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNDliMTRjYzAxMGQ1OGFjMmFhYTBhMTg5MTk0YjUwYTY1MjVlNTNhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZs
ZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgLnJlZmxlY3RlZCB7CisgICAg
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgd2lkdGg6IDIxNTBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAg
IG9wYWNpdHk6IDAuNTsKKyAgICAgICAgLXdlYmtpdC1ib3gtcmVmbGVjdDogYmVsb3cgLTUwcHg7
CisgICAgICB9CisgICAgICAKKyAgICAgICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKwor
ICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgCisgIDxwPk9wYWNpdHkgc2hvdWxkIGJlIGFwcGxp
ZWQgYWZ0ZXIgcmVmbGVjdGlvbiwgc28geW91IHNob3VsZCBzZWUgYSBncmVlbiByZWN0YW5nbGUg
YmVsb3cuIFRoZSBvdmVybGFwIGJldHdlZW4gdGhlIG9yaWdpbmFsIGFuZCByZWZsZWN0aW9uIHNo
b3VsZCBub3QgYmUgdmlzaWJsZS48L3A+CisgIDxkaXYgY2xhc3M9InJlZmxlY3RlZCI+MQorICA8
L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3ODE3OTRlOTk3YmY4MTQyNDU1ZjJmYjJlMGQxNDY0YzM3MGVmOTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5n
L3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgICAucmVmbGVjdGVkIHsKKyAgICAgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3aWR0aDogMjE1MHB4OworICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAgb3Bh
Y2l0eTogMC41OworICAgICAgICAtd2Via2l0LWJveC1yZWZsZWN0OiBiZWxvdyAtNTBweDsKKyAg
ICAgIH0KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJh
bnNsYXRlWigwKTt9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisKKyAgICA8
L3N0eWxlPgorICA8L2hlYWQ+CisgIAorICA8cD5PcGFjaXR5IHNob3VsZCBiZSBhcHBsaWVkIGFm
dGVyIHJlZmxlY3Rpb24sIHNvIHlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIGJlbG93
LiBUaGUgb3ZlcmxhcCBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBhbmQgcmVmbGVjdGlvbiBzaG91bGQg
bm90IGJlIHZpc2libGUuPC9wPgorICA8ZGl2IGNsYXNzPSJyZWZsZWN0ZWQgY29tcG9zaXRlZCI+
MQorICA8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTJhMGExY2NmYmRhOGMwZjgyMjBiZGVmMWI0YWM2MDQy
NWQwNjgyYS4uNTg1OWQ3YmNiMjNlZDllMjIzMDNiOWUzNjE4OTk2YjQ4OGNmOTcwZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNzgx
LDYgKzM3ODEsOCBAQCB3ZWJraXQub3JnL2IvOTQzNTMgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVh
bC9zb2Z0d2FyZWNvbXBvc2l0aW5nL292ZXJmbG93L292ZXJmbAogd2Via2l0Lm9yZy9iLzk0MzUz
IGNvbXBvc2l0aW5nL292ZXJmbG93L292ZXJmbG93LW92ZXJsYXktd2l0aC10b3VjaC5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTQzNTMgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9z
b2Z0d2FyZWNvbXBvc2l0aW5nL292ZXJmbG93L292ZXJmbG93LW92ZXJsYXktd2l0aC10b3VjaC5o
dG1sIFsgRmFpbHVyZSBdCiAKK3dlYmtpdC5vcmcvYi8xMTA4NzEgY29tcG9zaXRpbmcvb3Zlcmxh
cC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCisKIHdlYmtpdC5vcmcvYi85MDQ4OCBbIFdpbiBdIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmstcHJlZmxpZ2h0LW9wdGlvbnMuaHRtbCBbIFBhc3MgU2xvdyBdCiB3ZWJraXQub3JnL2Iv
OTA0ODggWyBXaW4gXSBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXJlbG9hZC5odG1s
IFsgUGFzcyBTbG93IF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCAyZGQxNTYyOTZlN2VjNmZmZmIwNzQwMDAxNDU5YmUwOWU5YzkwNGU2Li44NTA4Mjc4
OGVkMmE0MmJhMmExYjMwMjU4YjgzODJkNjZmMTZiNDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTE1LDYgKzkxNSw5IEBAIGNvbXBvc2l0aW5nL292
ZXJmbG93L3RleHRhcmVhLXNjcm9sbC10b3VjaC5odG1sCiBjb21wb3NpdGluZy9vdmVyZmxvdy91
cGRhdGluZy1zY3JvbGxpbmctY29udGVudC5odG1sCiBjb21wb3NpdGluZy9vdmVyZmxvdy9zY3Jv
bGxpbmctd2l0aG91dC1wYWludGluZy5odG1sCiAKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDg3MQorY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZs
ZWN0aW9uLW9wYWNpdHktaHVnZS5odG1sCisKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1MDI3CiBmYXN0L2Jsb2NrL2Zsb2F0LzAxNi5odG1sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190343</attachid>
            <date>2013-02-26 12:51:04 -0800</date>
            <delta_ts>2013-02-26 23:40:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110762-20130226214714.patch</filename>
            <type>text/plain</type>
            <size>85058</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI0MmY5YTEzMTIxMTZm
MGZkNjcyNmNjNGFiOTUxMzhkZDAzNzcxNy4uMTZhNDllMmE5NGM4OWVjNjMyN2JhZjlhZGUyZGE0
MDA1MzcyMmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMy0wMi0yNSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXIgaXMgdG9vIGVhZ2VyIHRvIHVzZSBpbnRlcm1lZGlhdGUgc3VyZmFjZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRoZSB3
YXkgaW50ZXJtZWRpYXRlIHN1cmZhY2VzIGFyZSBoYW5kbGVkIGluIFRleHR1cmVNYXBwZXJMYXll
ci4KKyAgICAgICAgQmVmb3JlaGFuZCwgd2Ugd291bGQgY3JlYXRlIGFuIGludGVybWVkaWF0ZSBz
dXJmYWNlIHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmNlIG9mIG92ZXJsYXAsIGFuZAorICAgICAg
ICB0aGUgaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd291bGQgYmUgdGhlIGxhcmdlc3QgcG9zc2libGUu
IFRoZSByZXN1bHQgd291bGQgdGhlbiBiZSBkcmF3biB0byB0aGUKKyAgICAgICAgdGFyZ2V0IHN1
cmZhY2Ugd2l0aCB0aGUgbGF5ZXIncyBvcGFjaXR5IGFuZCBtYXNrLgorCisgICAgICAgIFRoaXMg
d291bGQgbWFrZSBpdCBzbyB0aGF0ICgxKSBzdXJmYWNlcyBhcmUgY3JlYXRlZCBldmVuIHdoZW4g
dGhleSdyZSBub3QgbmVlZGVkLCBpLmUuIHdoZW4gdGhlcmUKKyAgICAgICAgaXMgbm8gYWN0dWFs
IG92ZXJsYXAsIGFuZCAoMikgbWFzayB3b3VsZG4ndCBiZSBhcHBsaWVkIGNvcnJlY3RseS4KKwor
ICAgICAgICBJbiB0aGlzIHBhdGNoIHRoZSBiZWhhdmlvciBpcyBjaGFuZ2VkIHNvIHRoYXQgdGhl
IGFyZWEgdG8gYmUgcGFpbnRlZCBpcyBkaXZpZGVkIHRvICJvdmVybGFwcGluZyIKKyAgICAgICAg
YW5kICJub24gb3ZlcmxhcHBpbmciIHJlZ2lvbnMuIFRoZSBub24tb3ZlcmxhcHBpbmcgcmVnaW9u
cyBhcmUgcGFpbnRlZCBkaXJlY3RseSwgd2hpbGUgdGhlIG92ZXJsYXBwaW5nCisgICAgICAgIHJl
Z2lvbnMgYXJlIHRpbGVkIHRvIHNtYWxsZXIgcmVjdGFuZ2xlcyBwYWludGVkIHVzaW5nIGFuIGlu
dGVybWVkaWF0ZSBzdXJmYWNlLgorICAgICAgICBNYXNrcyBhcmUgYXBwbGllZCB0byB0aG9zZSBp
bnRlcm1lZGlhdGUgc3VyZmFjZXMgYmFzZWQgb24gdGhlIHRyYW5zZm9ybSBvZiB0aGUgYWN0dWFs
IG1hc2ssIG5vdCBkcmF3bgorICAgICAgICB0b2dldGhlciB3aXRoIHRoZSBjb250ZW50IHRleHR1
cmUgbGlrZSBiZWZvcmUuCisKKyAgICAgICAgVGhpcyBvcHRpbWl6ZXMgZm9yIHRoZSBtb3JlIGNv
bW1vbiBjYXNlIG9mIG9wYWNpdHkgYW5pbWF0aW9ucyBvbiBhIGxhcmdlIHRyZWUsIHdoaWxlIG1h
a2luZyB0aGUgcXVpdGUKKyAgICAgICAgcmFyZSBjYXNlIG9mIGNvbXBvc2l0ZWQgbWFza3Mgc2xp
Z2h0bHkgbGVzcyBvcHRpbWl6ZWQgYnV0IGFsd2F5cyBjb3JyZWN0LgorCisgICAgICAgIFRlc3Rz
OiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS5odG1s
CisgICAgICAgICAgICAgICBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24t
b3BhY2l0eS1odWdlLmh0bWwKKyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLmh0bWwKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmg6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAo
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaDoKKyAgICAgICAgKE1l
ZGlhUGxheWVyUHJpdmF0ZVF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HcmFwaGljc1N1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmg6CisgICAgICAgIChHcmFwaGljc1N1cmZhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9U
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMv
R3JhcGhpY3NTdXJmYWNlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvd2luL0dyYXBoaWNzU3VyZmFjZVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAg
ICAgKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnBh
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmg6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgICAgICAgICAgUmVtb3ZlZCB0aGUgIm1hc2siIHBhcmFtZXRlciBmcm9tIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyIGFuZCBvdmVycmlkZXMsIHNpbmNlCisgICAgICAgICAgICAgICAgd2Ug
bm8gbG9uZ2VyIHBhaW50IHRoZSBjb250ZW50cyBhbmQgdGhlIG1hc2sgaW4gdGhlIHNhbWUgcGFz
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTW9kZSk6CisgICAgICAgIChUZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OmlzSW5NYXNrTW9kZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAgICAgICAgICAgICBJbnN0ZWFkIG9mIHBhaW50
aW5nIHRoZSBtYXNrIHRvZ2V0aGVyIHdpdGggdGhlIHRleHR1cmUvY29sb3IsIHBhaW50IHRoZSBt
YXNrCisgICAgICAgICAgICAgICAgYnkgZHJhd2luZyB3aXRoIERlc3RpbmF0aW9uSW4gdG8gYW4g
ZXhpc3Rpbmcgc3VyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNob3VsZEJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRo
UmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUZp
bHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZU92ZXJsYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZU92ZXJsYXBSZWdpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6YXBwbHlNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21taXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50UmVjdXJzaXZlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omhhc0ZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbS5oOgorCiAyMDEzLTAyLTIzICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYW5p
bWF0aW9uL3N0YXRlLWF0LWVuZC1ldmVudC10cmFuc2Zvcm0tbGF5ZXIuaHRtbCBzaG93cyBhIHJl
ZCBzcXVhcmUgd2hlcmUgaXQgc2hvdWxkbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQzMTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi5k
ZjBiMjYyOTI3YjUwYWZjNDcxYzYwM2I2OTQ4NWI3NDY2YTVjYzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBF
UikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1h
cFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBv
cGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0
Miw3ICsxNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgIFRleHR1cmVNYXBwZXJH
TCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVy
KTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpT
aG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFw
cGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRl
eHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCk7Ci0gICAgdGV4
bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNp
emUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzayk7CisgICAgdGV4bWFwR0wtPmRy
YXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdl
dFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HX0dMKQogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggZDBkZDIzZmU3ZGJkNDFkNmFmODFm
OTA3YWFkOWRhMDMyYzAxYjRkYi4uNDJlYjZjMmU3MDUxYzkwMjc1MGIyODgwZGVjNGZhMzc0M2Iy
MTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHls
ZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSog
bWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmNwcAppbmRleCBjMTkzNWNhYTQ0ODEwYjI1OTQzNzhmYjcyZmIxZTEwYTEwNWQ2
YWRlLi4xZDE1MGUzY2NlMzJlNTQyYTk0OGNhNzQwNWI3MzczMDQ2YTFiNDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVmZmVyKCkgY29uc3QKIH0KIAogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQg
Ki8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLywgQml0
bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0
YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAq
LykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oCmluZGV4IGIzMDA5NmE2YTlhOGQ3NThhNzlkY2MyOWRjZTE2ZDU4YTg1OTc5NmQuLjhmMGVi
M2NiNGFlYjUzNGUzOGY5YjE3NjUwZGMxY2UzZmRmZTljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250
ZXh0TG9zdENhbGxiYWNrPik7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIHZpcnR1
YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCkgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2
aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKaW5kZXggNjZiZGVhZWQxODVhNTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMw
ZjdlYS4uOGQ1YjgxZDEwMjFjZDJiZTM4ZmM0MzIwOWJmMzBmMGI2OTdlMTY4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH5HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CiAjZW5kaWYKICNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUo
KSBjb25zdDsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJn
clRvUmdiKHF1aW50MzIgcGl4ZWwpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRt
YXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQg
b3BhY2l0eSkKIHsKICAgICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBi
bGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJlc3RvcmVDb250ZXh0KCk7CkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgY3VycmVudENvbnRleHQt
Pm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKIAogICAgICAgICBUZXh0dXJlTWFwcGVyR0wq
IHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7
Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBH
TCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrKTsKKyAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleG1hcEdMLCB0YXJnZXRSZWN0LCBtYXRy
aXgsIG9wYWNpdHkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclBy
aXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJiYjc4ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAz
YS4uMWY5NjliNWZkYzIxYWJjMjk0YWEwM2RkYTc3ZmEzNWEzYjY5NjYzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVy
UHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwK
IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSopCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZh
dGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQzOWUzMjI0YzE1MjFlZTAwMzA0MGY1OTUuLmU3
NGNkY2QwODk4NWNiYmNiYTNkMjhiNzZlNDU0MzYzMDUxNjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRl
UXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxl
cmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7IH0KICAgICAvLyBDb25zdC1jYXN0aW5nIGhl
cmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyJ3MgZnVu
Y3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1h
c2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEg
cGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAKaW5kZXggYmFl
ZmE4YTE5MDg0MWFlYWIyYjQwYTJjZDA2NDc3MjBmMTYzMzU5Yy4uMmE3YTRiMjQzYzRjYmU2OGFi
ZTJhYTkyNjE4OTFiNjA5NTdiMjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCkBAIC02
Myw5ICs2Myw5IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpjb3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjCiAgICAgcGxhdGZvcm1Db3B5RnJv
bVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNz
U3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewotICAgIHBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBt
YXNrKTsKKyAgICBwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRh
cmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3Vy
ZmFjZTo6ZnJvbnRCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAppbmRleCBkYTQ5MzY5OThj
NWQwZGQ3OTI4NTk1ZTIyMWM4ZmE5MjY5MWEzODc4Li43MzFhZjJiNmQ2NWMzZGE5YWQ0NzI5YmI3
NjI1NWYzOGRiZWY0ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUo
Y29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYpOwogICAg
IHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCk7
CiAgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1
aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVpbnQzMl90IHN3YXBCdWZmZXJzKCk7CiAgICAg
R3JhcGhpY3NTdXJmYWNlVG9rZW4gZXhwb3J0VG9rZW4oKTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2soKTsKICAgICB2b2lkIHBsYXRmb3JtQ29w
eVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvcHlGcm9tVGV4dHVy
ZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lk
IHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFj
aXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBw
bGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3Q7CiAgICAgdWludDMyX3QgcGxhdGZvcm1Td2FwQnVm
ZmVycygpOwogICAgIEludFNpemUgcGxhdGZvcm1TaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJm
YWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDQzOTFiNTljM2RmNjAxNGNlNzZmYjc2MmVm
N2NhZDM1NTNmYTYzNzAuLjIzZjhhZmI0ODJlZTI5MGMwZTU1MzU1MzA5MmY4ZTU2ODkzMzQ0MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCkBAIC0zODUsNyArMzg1
LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQz
Ml90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4
dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFw
aGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUg
c2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTM5
Nyw3ICszOTcsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogICAgIEZsb2F0UmVjdCByZWN0
T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNm
b3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRl
bnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4
dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHRleHR1cmUsIG1fcHJpdmF0ZS0+ZmxhZ3MoKSwgc2l6
ZSwgcmVjdE9uQ29udGVudHMsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAg
ICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1
cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygpLCBzaXplLCByZWN0T25Db250ZW50cywgYWRq
dXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQogCiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcAppbmRleCBiZjYyZmIxNWEwOWI0YzE4MjMyNDExZjYzYTUzMTdiYWRkNmVhMjVj
Li5jNGQyZDU0MTg0MmQ2YjE2Y2FlZDFhMTkzYTdlY2UxMjJjODFiYTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAtMzMzLDEzICszMzMsMTMgQEAgdm9pZCBH
cmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJl
LCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJp
dmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6
ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3Jt
ID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJl
KG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUs
IHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJl
KG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUs
IHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQz
Ml90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhp
Y3NTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCmluZGV4IDk1MDlmMDk4M2M2MjkwY2YwMGVk
M2JjYWQ4YTliMTA5ODYyNWQ4N2YuLjA2ZjQyN2NmY2FkODM2NDhkZmQ3OGQ1OTI1M2NiMGMwNDRm
ZjQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCkBAIC00MjEs
NyArNDIxLDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlG
cm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9p
ZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIElu
dFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0T25Db250
ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCmluZGV4IDM3
ZjcxNTRmMWM2OWQ5OGI0YTIzYjBjMGNkNzQ4ZWY1ZDlkNzU5MDguLjFiNTRlYTMxMzc1NjhmMzVk
NWFiMzI5ODhlOTk5OTQzZWEzY2E1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKQEAgLTE0MSw2ICsx
NDEsNyBAQCBUZXh0dXJlTWFwcGVyOjpUZXh0dXJlTWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNj
ZWxlcmF0aW9uTW9kZSkKICAgICAsIG1fdGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKICAg
ICAsIG1fdGV4dHVyZVBvb2woYWRvcHRQdHIobmV3IEJpdG1hcFRleHR1cmVQb29sKCkpKQogICAg
ICwgbV9hY2NlbGVyYXRpb25Nb2RlKGFjY2VsZXJhdGlvbk1vZGUpCisgICAgLCBtX2lzTWFza01v
ZGUoZmFsc2UpCiB7IH0KIAogVGV4dHVyZU1hcHBlcjo6flRleHR1cmVNYXBwZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmgKaW5kZXggYWRlYWYzZTcxOGUxMzI1MDM4MjljOTA0ZmMwYTJkMjc1MmM0NjE4Ni4uNzEy
MDBlYzk4NzBjMzliZjYyZmY1ODQ4NDA5NDMxNjJkODFmOGMzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBA
IC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNv
bnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGlu
dCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0
IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZs
b2F0IG9wYWNpdHkgPSAxLjBmLCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSA9IDAs
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjBmLCB1bnNpZ25lZCBleHBvc2VkRWRn
ZXMgPSBBbGxFZGdlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikg
PSAwOwogCiAgICAgLy8gbWFrZXMgYSBzdXJmYWNlIHRoZSB0YXJnZXQgZm9yIHRoZSBmb2xsb3dp
bmcgZHJhd1RleHR1cmUgY2FsbHMuCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50RmxhZ3MgPSAwKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZW5kUGFpbnRpbmcoKSB7IH0KIAorICAgIHZvaWQgc2V0TWFza01vZGUoYm9vbCBtKSB7
IG1faXNNYXNrTW9kZSA9IG07IH0KKwogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6
ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBh
Y3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmKTsKQEAgLTE2Niw2ICsxNjgsOCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsKIAorICAgIGJv
b2wgaXNJbk1hc2tNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc01hc2tNb2RlOyB9CisKIHByaXZh
dGU6CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHN0YXRpYyBQYXNzT3duUHRyPFRl
eHR1cmVNYXBwZXI+IHBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKTsKQEAgLTE3OSw2ICsxODMs
NyBAQCBwcml2YXRlOgogICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1fdGV4dERyYXdpbmdNb2Rl
OwogICAgIE93blB0cjxCaXRtYXBUZXh0dXJlUG9vbD4gbV90ZXh0dXJlUG9vbDsKICAgICBBY2Nl
bGVyYXRpb25Nb2RlIG1fYWNjZWxlcmF0aW9uTW9kZTsKKyAgICBib29sIG1faXNNYXNrTW9kZTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IDZiZmIz
ZjFjZmU1YjJlMTY2YzgxM2MwMzNkYWFlNjhhMTUxZGVmN2QuLmM2MDBhYTJlMWJkMmYxNzM3YTI5
Nzk4ZTM3NjM3NmQyZDVlOTljMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwg
cHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0
bWFwVGV4dHVyZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENvdW50ICovLCBjb25zdCBDb2xvciYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgeyB9CiAgICAgdmlydHVh
bCB+VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CmluZGV4IDVmMmU3MWNmMjdiMjE0MTRlMjJlZDA2MzljMjllMTZjZjA3MTZkMmYuLmFlZGRkYTI5
YTA2YzVhNDk0NWFmZDUzNDAzYmQ3NTk5NjEyNDUwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdOdW1iZXIoaW50
IG51bWJlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW4KICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSk7CiAg
ICAgY29uc3QgdWNoYXIqIGJpdHMgPSBpbWFnZS5iaXRzKCk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0
bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSktPnVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGJp
dHMsIHNvdXJjZVJlY3QsIEludFBvaW50Ojp6ZXJvKCksIGltYWdlLmJ5dGVzUGVyTGluZSgpKTsK
LSAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAx
LjBmLCAwLCBBbGxFZGdlcyk7CisgICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3Qs
IG1vZGVsVmlld01hdHJpeCwgMS4wZiwgQWxsRWRnZXMpOwogCiAjZWxpZiBVU0UoQ0FJUk8pCiAg
ICAgQ1N0cmluZyBjb3VudGVyU3RyaW5nID0gU3RyaW5nOjpudW1iZXIobnVtYmVyKS5hc2NpaSgp
OwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3TnVtYmVyKGlu
dCBudW1iZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2luCiAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogYml0cyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFj
ZSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJm
YWNlKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKS0+
dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoYml0cywgc291cmNlUmVjdCwgSW50UG9pbnQ6Onplcm8o
KSwgc3RyaWRlKTsKLSAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxW
aWV3TWF0cml4LCAxLjBmLCAwLCBBbGxFZGdlcyk7CisgICAgZHJhd1RleHR1cmUoKnRleHR1cmUs
IHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgMS4wZiwgQWxsRWRnZXMpOwogCiAgICAgY2Fp
cm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwogICAgIGNhaXJvX2Rlc3Ryb3koY3IpOwpAQCAt
Mzk0LDcgKzM5NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3TnVtYmVyKGludCBudW1i
ZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2luCiAjZW5kaWYKIH0KIAotdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1
cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFzaywgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNv
bnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWdu
ZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICghdGV4dHVyZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTQwMywyMCArNDAzLDE3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3
VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdMID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZSk7Ci0gICAgZHJhd1Rl
eHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJs
ZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2ss
IGV4cG9zZWRFZGdlcyk7CisgICAgZHJhd1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVH
TC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJsZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRS
ZWN0LCBtYXRyaXgsIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdz
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVk
Z2VzKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBi
b29sIHVzZVJlY3QgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0OwotICAgIGJvb2wg
bWFza2VkID0gISFtYXNrVGV4dHVyZTsKICAgICBib29sIHVzZUFudGlhbGlhc2luZyA9IG1fZW5h
YmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nCiAgICAgICAgICYmIGV4cG9zZWRFZGdlcyA9PSBB
bGxFZGdlcwogICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQodGFyZ2V0UmVjdCku
aXNSZWN0aWxpbmVhcigpOwogCiAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlv
bnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlOwotICAgIGlm
IChtYXNrZWQpCi0gICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
Ok1hc2s7CiAgICAgaWYgKHVzZVJlY3QpCiAgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06OlJlY3Q7CiAgICAgaWYgKG9wYWNpdHkgPCAxKQpAQCAtNDI2LDEyICs0
MjMsMTIgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEkKICAgICAgICAgZmxhZ3MgfD0gU2hvdWxk
QW50aWFsaWFzOwogICAgIH0KIAotICAgIGlmIChtYXNrZWQgfHwgdXNlQW50aWFsaWFzaW5nIHx8
IG9wYWNpdHkgPCAxKQorICAgIGlmICh1c2VBbnRpYWxpYXNpbmcgfHwgb3BhY2l0eSA8IDEpCiAg
ICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtPiBwcm9ncmFtOwogICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRh
KCkuZ2V0U2hhZGVyUHJvZ3JhbShvcHRpb25zKTsKLSAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRS
ZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlKTsKKyAgICBkcmF3VGV4
dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1
cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogfQogCiB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBDb2xvciYgY29sb3IpCkBA
IC01MDQsMTEgKzUwMSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhdyhjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtbwogICAgIHNoYWRlclBy
b2dyYW0tPnNldE1hdHJpeChzaGFkZXJQcm9ncmFtLT5tb2RlbFZpZXdNYXRyaXhMb2NhdGlvbigp
LCBtYXRyaXgpOwogICAgIHNoYWRlclByb2dyYW0tPnNldE1hdHJpeChzaGFkZXJQcm9ncmFtLT5w
cm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgZGF0YSgpLnByb2plY3Rpb25NYXRyaXgpOwogCi0g
ICAgaWYgKGZsYWdzICYgU2hvdWxkQmxlbmQpIHsKLSAgICAgICAgbV9jb250ZXh0M0QtPmJsZW5k
RnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVT
X1NSQ19BTFBIQSk7CisgICAgaWYgKGlzSW5NYXNrTW9kZSgpKSB7CisgICAgICAgIG1fY29udGV4
dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6OlpFUk8sIEdyYXBoaWNzQ29udGV4dDNE
OjpTUkNfQUxQSEEpOwogICAgICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZsYWdz
ICYgU2hvdWxkQmxlbmQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3Jh
cGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQ
SEEpOworICAgICAgICAgICAgbV9jb250ZXh0M0QtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
QkxFTkQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxl
KEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAgfQogCiAgICAgaWYgKGZsYWdzICYgU2hv
dWxkQW50aWFsaWFzKQogICAgICAgICBkcmF3RWRnZVRyaWFuZ2xlcyhzaGFkZXJQcm9ncmFtKTsK
QEAgLTUxNiw4ICs1MTgsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXcoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW8KICAgICAgICAgZHJh
d1VuaXRSZWN0KHNoYWRlclByb2dyYW0sIGRyYXdpbmdNb2RlKTsKIAogICAgIG1fY29udGV4dDNE
LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24o
KSk7CisgICAgbV9jb250ZXh0M0QtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBH
cmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSk7CisgICAgbV9jb250ZXh0M0Qt
PmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOwogfQotdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bSogcHJvZ3JhbSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFz
a1RleHR1cmUpCisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1
cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9w
YWNpdHkpCiB7CiAgICAgbV9jb250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlE
KCkpOwogICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMCk7CkBAIC01MzMsMTkgKzUzOCwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcgog
ICAgIGlmIChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKQogICAgICAgICBwYXR0ZXJuVHJhbnNm
b3JtLnRyYW5zbGF0ZSgwLCAtMSk7CiAKLQogICAgIHByb2dyYW0tPnNldE1hdHJpeChwcm9ncmFt
LT50ZXh0dXJlU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPm9wYWNpdHlMb2NhdGlvbigpLCBvcGFjaXR5
KTsKIAotICAgIGlmIChtYXNrVGV4dHVyZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCogbWFza1RleHR1cmVHTCA9IHN0YXRpY19jYXN0
PGNvbnN0IEJpdG1hcFRleHR1cmVHTCo+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbV9jb250ZXh0
M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKTsKLSAgICAgICAg
bV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
YXNrVGV4dHVyZUdMLT5pZCgpKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xaShwcm9n
cmFtLT5tYXNrTG9jYXRpb24oKSwgMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgfQotCi0gICAgaWYgKG9wYWNp
dHkgPCAxIHx8IG1hc2tUZXh0dXJlKQorICAgIGlmIChvcGFjaXR5IDwgMSkKICAgICAgICAgZmxh
Z3MgfD0gU2hvdWxkQmxlbmQ7CiAKICAgICBkcmF3KHJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJv
Z3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgZmxhZ3MpOwpAQCAtOTQzLDcg
KzkzOSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFw
VGV4dHVyZSYgc2FtcGxlciwgY29uc3QgQml0bWFwVGV4CiAKICAgICBwcmVwYXJlRmlsdGVyUHJv
Z3JhbShwcm9ncmFtLmdldCgpLCBmaWx0ZXIsIHBhc3MsIHNhbXBsZXIuY29udGVudFNpemUoKSwg
c3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oY29udGVudFRleHR1cmUpLmlkKCkp
OwogICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHNhbXBsZXIuY29u
dGVudFNpemUoKSk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0
KCksIHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHNhbXBsZXIpLmlkKCksIDAs
IEludFNpemUoMSwgMSksIHRhcmdldFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIDEsIDAp
OworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCBzdGF0aWNf
Y2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wmPihzYW1wbGVyKS5pZCgpLCAwLCBJbnRTaXplKDEs
IDEpLCB0YXJnZXRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAxKTsKIH0KIAogUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVy
ZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRl
eCBhMmI0N2VhOGNkZGYzNmU4ZmM4ZTZmNDA5MWRjOTI0N2Q5NDk1ODQxLi4zMDJmM2M0OWM4MDY1
OGUxYWI4YzhiMmNiYmMwZTcyZDgyMTgxNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC01NCw4
ICs1NCw4IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxlbWVudGF0aW9uCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0
aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2Vz
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVu
c2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1Rl
eHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREU7CkBAIC0x
MDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIFRleHR1cmVNYXBwZXJHTCgpOwogCi0gICAg
dm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKKyAgICB2b2lkIGRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIHVp
bnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0
eSk7CiAgICAgdm9pZCBkcmF3KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgR0Mz
RGVudW0gZHJhd2luZ01vZGUsIEZsYWdzKTsKIAogICAgIHZvaWQgZHJhd1VuaXRSZWN0KFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgR0MzRGVudW0gZHJhd2luZ01vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCAxZTQ5ZjliNmVjYTg4ZDZhN2NmZDkz
MTkxMjIyYzA0ODExMDM5ZDc1Li41MmE4NDg3OTJkNmZmNjZlNjQ3OWFhZGEyNTE0MjgxMzk4NmE1
ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpiZWdpbkNsaXAoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29uCiAjZW5kaWYKIH0KIAotdm9pZCBUZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRl
eHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1Rl
eHR1cmUsIHVuc2lnbmVkIC8qIGV4cG9zZWRFZGdlcyAqLykKK3ZvaWQgVGV4dHVyZU1hcHBlcklt
YWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIC8qIGV4cG9zZWRFZGdlcyAqLykKIHsKICAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBjdXJyZW50Q29udGV4dCgpOwogICAgIGlmICghY29u
dGV4dCkKQEAgLTEyMiwyMiArMTIyLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6
OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEYKIAogICAg
IGNvbnN0IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlciYgdGV4dHVyZUltYWdlQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyJj4odGV4dHVyZSk7CiAgICAg
SW1hZ2VCdWZmZXIqIGltYWdlID0gdGV4dHVyZUltYWdlQnVmZmVyLm1faW1hZ2UuZ2V0KCk7Ci0g
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNrZWRJbWFnZTsKLQotICAgIGlmIChtYXNrVGV4dHVy
ZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGNvbnN0IEJpdG1hcFRleHR1
cmVJbWFnZUJ1ZmZlciogbWFzayA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVJbWFn
ZUJ1ZmZlcio+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbWFza2VkSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKG1hc2tUZXh0dXJlLT5jb250ZW50U2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0KiBtYXNrQ29udGV4dCA9IG1hc2tlZEltYWdlLT5jb250ZXh0KCk7Ci0gICAgICAgIG1h
c2tDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIElu
dFBvaW50Ojp6ZXJvKCksIENvbXBvc2l0ZUNvcHkpOwotICAgICAgICBpZiAob3BhY2l0eSA8IDEp
IHsKLSAgICAgICAgICAgIG1hc2tDb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsKLSAgICAgICAg
ICAgIG9wYWNpdHkgPSAxOwotICAgICAgICB9Ci0gICAgICAgIG1hc2tDb250ZXh0LT5kcmF3SW1h
Z2VCdWZmZXIobWFzay0+bV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9p
bnQ6Onplcm8oKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0gICAgICAgIGltYWdlID0gbWFz
a2VkSW1hZ2UuZ2V0KCk7Ci0gICAgfQotCiAgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihpc0luTWFza01vZGUoKSA/IENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4gOiBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICBjb250ZXh0LT5zZXRBbHBoYShv
cGFjaXR5KTsKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAgIGNvbnRleHQtPmNvbmNhdDNE
VHJhbnNmb3JtKG1hdHJpeCk7CkBAIC0xNTUsNiArMTQxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXI6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
VHJhbnMKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihpc0luTWFza01vZGUoKSA/IENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4gOiBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5H
KQogICAgIGNvbnRleHQtPmNvbmNhdDNEVHJhbnNmb3JtKG1hdHJpeCk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCmluZGV4IDgwZTY5NDQwNTkwNTQ3NjA3ZTcwMzI2
MWU3OTMxNTVkZGUzYzIwZDUuLjM1ZjJiNDQ5ZDk2ZGMwYmM5YjdiMGFmMTk4YWMwNDBjZDk0ZDY4
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1h
cFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBG
bG9hdFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFw
VGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREUgeyBtX2N1cnJlbnRTdXJmYWNlID0gc3VyZmFjZTt9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDhhMmNjOTkyYjcxMTA2NjYxMDdjMWJl
MDMxM2JhNGFmOTZjNmZiYWYuLjEwYmVmMjYzYmQzZTE4ZGI2OTMzZDZjOWYzYzVlZDFiZDY3MjEz
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAKKyNpbmNs
dWRlICJSZWdpb24uaCIKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMjcsNyArMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHsKIHB1YmxpYzoKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gc3VyZmFjZTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzazsKICAg
ICBmbG9hdCBvcGFjaXR5OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAg
ICBJbnRTaXplIG9mZnNldDsKQEAgLTEwOCw4ICsxMDksNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMp
CiAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKTsK
IAogICAgIGZsb2F0IG9wYWNpdHkgPSBvcHRpb25zLm9wYWNpdHk7Ci0gICAgUmVmUHRyPEJpdG1h
cFRleHR1cmU+IG1hc2sgPSBvcHRpb25zLm1hc2s7Ci0KICAgICBpZiAobV9zdGF0ZS5zb2xpZENv
bG9yLmlzVmFsaWQoKSAmJiAhbV9zdGF0ZS5jb250ZW50c1JlY3QuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1NvbGlkQ29sb3IobV9zdGF0ZS5jb250ZW50
c1JlY3QsIHRyYW5zZm9ybSwgYmxlbmRXaXRoT3BhY2l0eShtX3N0YXRlLnNvbGlkQ29sb3IsIG9w
YWNpdHkpKTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycykKQEAgLTEyMCw3
ICsxMTksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlKSB7
CiAgICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX3N0YXRlLmNvbnRlbnRz
VmlzaWJsZSAmJiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVCghbGF5
ZXJSZWN0KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50VG9UZXh0
dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSwg
b3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLT5wYWludFRvVGV4
dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0s
IG9wYWNpdHkpOwogICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzKQogICAgICAg
ICAgICAgbV9iYWNraW5nU3RvcmUtPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBt
X3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbGF5ZXJS
ZWN0KCksIHRyYW5zZm9ybSk7CiAgICAgICAgIC8vIE9ubHkgZHJhdyByZXBhaW50IGNvdW50IGZv
ciB0aGUgbWFpbiBiYWNraW5nIHN0b3JlLgpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucykKIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKCFs
YXllclJlY3QoKS5pc0VtcHR5KCkpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9U
ZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3Qs
IHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIG1fY29udGVudHNMYXll
ci0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmNv
bnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5KTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hv
d0RlYnVnQm9yZGVycykKICAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+ZHJhd0JvcmRlcihv
cHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5k
ZWJ1Z0JvcmRlcldpZHRoLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtKTsKICAgICB9
CkBAIC0xNjYsODIgKzE2NSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxm
QW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgbwogICAgICAgICBv
cHRpb25zLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKIH0KIAotSW50UmVjdCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KCkKLXsKLSAgICAvLyBGSVhNRTogQWRk
IGFuIGludmVyc2UgdHJhbnNmb3JtIHRvIExheWVyVHJhbnNmb3JtLgotICAgIHJldHVybiBpbnRl
cm1lZGlhdGVTdXJmYWNlUmVjdChtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCkpOwotfQotCi1JbnRSZWN0IFRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFj
ZVJlY3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBJbnRSZWN0
IHJlY3Q7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbG9jYWxUcmFuc2Zvcm0gPSBUcmFuc2Zv
cm1hdGlvbk1hdHJpeChtYXRyaXgpLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5l
ZCgpKTsKLSAgICByZWN0ID0gZW5jbG9zaW5nSW50UmVjdChsb2NhbFRyYW5zZm9ybS5tYXBSZWN0
KGxheWVyUmVjdCgpKSk7Ci0gICAgaWYgKCFtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgJiYgIW1fc3Rh
dGUubWFza0xheWVyKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJl
bi5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHJlY3QudW5pdGUobV9jaGlsZHJlbltpXS0+aW50
ZXJtZWRpYXRlU3VyZmFjZVJlY3QobWF0cml4KSk7Ci0gICAgfQotCi0jaWYgRU5BQkxFKENTU19G
SUxURVJTKQotICAgIGlmIChtX2N1cnJlbnRGaWx0ZXJzLmhhc091dHNldHMoKSkgewotICAgICAg
ICBGaWx0ZXJPdXRzZXRzIG91dHNldHMgPSBtX2N1cnJlbnRGaWx0ZXJzLm91dHNldHMoKTsKLSAg
ICAgICAgSW50UmVjdCB1bmZpbHRlcmVkVGFyZ2V0UmVjdChyZWN0KTsKLSAgICAgICAgcmVjdC5t
b3ZlKHN0ZDo6bWF4KDAsIC1vdXRzZXRzLmxlZnQoKSksIHN0ZDo6bWF4KDAsIC1vdXRzZXRzLnRv
cCgpKSk7Ci0gICAgICAgIHJlY3QuZXhwYW5kKG91dHNldHMubGVmdCgpICsgb3V0c2V0cy5yaWdo
dCgpLCBvdXRzZXRzLnRvcCgpICsgb3V0c2V0cy5ib3R0b20oKSk7Ci0gICAgICAgIHJlY3QudW5p
dGUodW5maWx0ZXJlZFRhcmdldFJlY3QpOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKG1fc3Rh
dGUucmVwbGljYUxheWVyKQotICAgICAgICByZWN0LnVuaXRlKG1fc3RhdGUucmVwbGljYUxheWVy
LT5pbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChtYXRyaXgpKTsKLQotICAgIHJldHVybiByZWN0Owot
fQotCi1UZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRzTGF5ZXJDb3VudCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmNvdW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgY29uc3QKK2Jvb2wgVGV4
dHVyZU1hcHBlckxheWVyOjpzaG91bGRCbGVuZCgpIGNvbnN0CiB7Ci0gICAgaW50IHNlbGZMYXll
cnNXaXRoQ29udGVudHMgPSAobV9zdGF0ZS5kcmF3c0NvbnRlbnQgPyAxIDogMCkgKyAobV9jb250
ZW50c0xheWVyID8gMSA6IDApOwotICAgIGludCBwb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMg
PSBzZWxmTGF5ZXJzV2l0aENvbnRlbnRzICsgbV9jaGlsZHJlbi5zaXplKCk7Ci0KLSAgICBpZiAo
IXBvdGVudGlhbExheWVyc1dpdGhDb250ZW50cykKLSAgICAgICAgcmV0dXJuIE5vTGF5ZXJzV2l0
aENvbnRlbnQ7Ci0KLSAgICBpZiAocG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzID4gMSkKLSAg
ICAgICAgcmV0dXJuIE11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnRzOwotCi0gICAgaWYgKG1fY2hp
bGRyZW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gU2luZ2xlTGF5ZXJXaXRoQ29udGVudHM7
Ci0KLSAgICByZXR1cm4gbV9jaGlsZHJlbi5maXJzdCgpLT5jb3VudFBvdGVudGlhbExheWVyc1dp
dGhDb250ZW50cygpOwotfQorICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLWJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzaG91bGRQYWludFRvSW50
ZXJtZWRpYXRlU3VyZmFjZSgpIGNvbnN0Ci17CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAg
IGlmIChtX2N1cnJlbnRGaWx0ZXJzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKLSAgICBib29sIGhhc09wYWNpdHkgPSBtX2N1cnJlbnRPcGFjaXR5IDwgMC45OTsKLSAgICBi
b29sIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ID0gY291bnRQb3RlbnRpYWxMYXll
cnNXaXRoQ29udGVudHMoKSA9PSBNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50czsKLSAgICBib29s
IGhhc1JlcGxpY2EgPSAhIW1fc3RhdGUucmVwbGljYUxheWVyOwotICAgIGJvb2wgaGFzTWFzayA9
ICEhbV9zdGF0ZS5tYXNrTGF5ZXI7Ci0KLSAgICAvLyBXZSBkb24ndCB1c2UgdHdvLXBhc3MgYmxl
bmRpbmcgZm9yIHByZXNlcnZlcy0zZCwgdGhhdCdzIGluIHN5bmMgd2l0aCBTYWZhcmkuCi0gICAg
aWYgKG1fc3RhdGUucHJlc2VydmVzM0QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8v
IFdlIHNob3VsZCB1c2UgYW4gaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd2hlbiBibGVuZGluZyBzZXZl
cmFsIGl0ZW1zIHdpdGggYW4gYW5jZXN0b3Igb3BhY2l0eS4KLSAgICAvLyBUZXN0ZWQgYnkgY29t
cG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1vcGFjaXR5Lmh0bWwKLSAgICBpZiAoaGFz
T3BhY2l0eSAmJiAoY2FuSGF2ZU11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnQgfHwgaGFzUmVwbGlj
YSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gV2Ugc2hvdWxkIHVzZSBhbiBpbnRl
cm1lZGlhdGUgc3VyZmFjZSB3aXRoIGEgbWFza2VkIGFuY2VzdG9yLgotICAgIC8vIEluIHRoZSBj
YXNlIG9mIHJlcGxpY2FzIHRoZSBtYXNrIGlzIGFwcGxpZWQgYmVmb3JlIHJlcGxpY2F0aW5nLgot
ICAgIC8vIFRlc3RlZCBieSBjb21wb3NpdGluZy9tYXNrcy9tYXNrZWQtYW5jZXN0b3IuaHRtbAot
ICAgIGlmIChoYXNNYXNrICYmIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ICYmICFo
YXNSZXBsaWNhKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbV9jdXJyZW50T3BhY2l0eSA8IDEgfHwgbV9zdGF0ZS5tYXNrTGF5ZXIgfHwgKG1f
c3RhdGUucmVwbGljYUxheWVyICYmIG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1hc2tM
YXllcik7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjppc1Zpc2libGUoKSBjb25zdApA
QCAtMjYxLDExICsxOTQsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5k
Q2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgogewogICAgIGlmICht
X3N0YXRlLnJlcGxpY2FMYXllcikgewogICAgICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
IHJlcGxpY2FPcHRpb25zKG9wdGlvbnMpOwotICAgICAgICAvLyBXZSBjaG9vc2UgZWl0aGVyIHRo
ZSBjb250ZW50J3MgbWFzayBvciB0aGUgcmVwbGljYSdzIG1hc2suCi0gICAgICAgIC8vIEZJWE1F
OiBibGVuZCB0aGUgdHdvIGlmIGJvdGggZXhpc3QuCi0gICAgICAgIGlmIChtX3N0YXRlLnJlcGxp
Y2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgICAgICByZXBsaWNhT3B0aW9ucy5t
YXNrID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCk7
Ci0KICAgICAgICAgcmVwbGljYU9wdGlvbnMudHJhbnNmb3JtCiAgICAgICAgICAgICAubXVsdGlw
bHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKQog
ICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVy
c2UoKSk7CkBAIC0yODUsNiArMjEzLDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRB
bmltYXRlZE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKICAgICBtX2N1cnJlbnRPcGFjaXR5ID0gb3Bh
Y2l0eTsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBlckxheWVyOjpyZXBs
aWNhVHJhbnNmb3JtKCkKK3sKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgobV9zdGF0
ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKS5tdWx0aXBseSht
X2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOworfQorCiAjaWYgRU5BQkxF
KENTU19GSUxURVJTKQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGVkRmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewpAQCAtMzA3LDcgKzI0MCw3IEBA
IHN0YXRpYyBib29sIHNob3VsZEtlZXBDb250ZW50VGV4dHVyZShjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMsIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEJpdG1hcFRleHR1cmUqIHNvdXJjZSwg
SW50UmVjdCYgdGFyZ2V0UmVjdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFw
cGx5RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBCaXRtYXBUZXh0dXJlKiBzb3VyY2UpCiB7CiAgICAgaWYgKCFmaWx0
ZXJzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHNvdXJjZTsKQEAgLTMxNyw1MSArMjUwLDE4NCBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycywgVAogfQogI2VuZGlmCiAKLXZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQorc3RhdGljIHZvaWQgcmVzb2x2ZU92ZXJsYXBzKFJlZ2lvbiBuZXdSZWdpb24sIFJl
Z2lvbiYgb3ZlcmxhcFJlZ2lvbiwgUmVnaW9uJiBub25PdmVybGFwUmVnaW9uKQogewotICAgIGlm
ICghaXNWaXNpYmxlKCkpCisgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdpb24obmV3UmVnaW9uKTsK
KyAgICBuZXdPdmVybGFwUmVnaW9uLmludGVyc2VjdChub25PdmVybGFwUmVnaW9uKTsKKyAgICBu
b25PdmVybGFwUmVnaW9uLnN1YnRyYWN0KG5ld092ZXJsYXBSZWdpb24pOworICAgIG92ZXJsYXBS
ZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgbmV3UmVnaW9uLnN1YnRyYWN0KG92
ZXJsYXBSZWdpb24pOworICAgIG5vbk92ZXJsYXBSZWdpb24udW5pdGUobmV3UmVnaW9uKTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVPdmVybGFwUmVnaW9ucyhSZWdpb24m
IG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lvbiwgYm9vbCBhbHdheXNSZXNv
bHZlU2VsZk92ZXJsYXApCit7CisgICAgaWYgKCFtX3N0YXRlLnZpc2libGUgfHwgIW1fc3RhdGUu
Y29udGVudHNWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBvcGFjaXR5ID0g
b3B0aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gbWFza1RleHR1cmUgPSBtX3N0YXRlLm1hc2tMYXllciA/IG1fc3RhdGUubWFza0xheWVy
LT50ZXh0dXJlKCkgOiAwOworICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CisgICAgaWYgKG1f
YmFja2luZ1N0b3JlIHx8IG1fc3RhdGUubWFza3NUb0JvdW5kcyB8fCBtX3N0YXRlLm1hc2tMYXll
ciB8fCBoYXNGaWx0ZXJzKCkpCisgICAgICAgIGJvdW5kaW5nUmVjdCA9IGxheWVyUmVjdCgpOwor
ICAgIGVsc2UgaWYgKG1fY29udGVudHNMYXllciB8fCBtX3N0YXRlLnNvbGlkQ29sb3IuYWxwaGEo
KSkKKyAgICAgICAgYm91bmRpbmdSZWN0ID0gbV9zdGF0ZS5jb250ZW50c1JlY3Q7CiAKLSAgICBU
ZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKLSAgICBwYWlu
dE9wdGlvbnMubWFzayA9IG1hc2tUZXh0dXJlLmdldCgpOworI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKKyAgICBpZiAobV9jdXJyZW50RmlsdGVycy5oYXNPdXRzZXRzKCkpIHsKKyAgICAgICAgRmls
dGVyT3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50RmlsdGVycy5vdXRzZXRzKCk7CisgICAgICAg
IEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QoYm91bmRpbmdSZWN0KTsKKyAgICAgICAgYm91
bmRpbmdSZWN0Lm1vdmUoc3RkOjptYXgoMCwgLW91dHNldHMubGVmdCgpKSwgc3RkOjptYXgoMCwg
LW91dHNldHMudG9wKCkpKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LmV4cGFuZChvdXRzZXRzLmxl
ZnQoKSArIG91dHNldHMucmlnaHQoKSwgb3V0c2V0cy50b3AoKSArIG91dHNldHMuYm90dG9tKCkp
OworICAgICAgICBib3VuZGluZ1JlY3QudW5pdGUodW5maWx0ZXJlZFRhcmdldFJlY3QpOworICAg
IH0KKyNlbmRpZgorCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYU1hdHJpeDsKKyAg
ICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKKyAgICAgICAgcmVwbGljYU1hdHJpeCA9IHJl
cGxpY2FUcmFuc2Zvcm0oKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHJlcGxpY2FNYXRy
aXgubWFwUmVjdChib3VuZGluZ1JlY3QpKTsKKyAgICB9CiAKLSAgICBpZiAoIXNob3VsZFBhaW50
VG9JbnRlcm1lZGlhdGVTdXJmYWNlKCkpIHsKLSAgICAgICAgcGFpbnRPcHRpb25zLm9wYWNpdHkg
PSBvcGFjaXR5OwotICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKHBhaW50
T3B0aW9ucyk7CisgICAgYm91bmRpbmdSZWN0ID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkubWFwUmVjdChib3VuZGluZ1JlY3QpOworCisgICAgLy8gQ291bnQgYWxsIG1hc2tzIGFuZCBm
aWx0ZXJzIGFzIG92ZXJsYXAgbGF5ZXJzLgorICAgIGlmIChoYXNGaWx0ZXJzKCkgfHwgbV9zdGF0
ZS5tYXNrTGF5ZXIgfHwgKG1fc3RhdGUucmVwbGljYUxheWVyICYmIG1fc3RhdGUucmVwbGljYUxh
eWVyLT5tX3N0YXRlLm1hc2tMYXllcikpIHsKKyAgICAgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdp
b24oZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ1JlY3QpKTsKKyAgICAgICAgbm9uT3ZlcmxhcFJl
Z2lvbi5zdWJ0cmFjdChuZXdPdmVybGFwUmVnaW9uKTsKKyAgICAgICAgb3ZlcmxhcFJlZ2lvbi51
bml0ZShuZXdPdmVybGFwUmVnaW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8v
IFByZXBhcmUgYSBzdXJmYWNlIHRvIHBhaW50IGludG8uCi0gICAgLy8gV2UgcGFpbnQgaW50byB0
aGUgc3VyZmFjZSBpZ25vcmluZyB0aGUgb3BhY2l0eS90cmFuc2Zvcm0gb2YgdGhlIGN1cnJlbnQg
bGF5ZXIuCi0gICAgSW50UmVjdCBzdXJmYWNlUmVjdCA9IGludGVybWVkaWF0ZVN1cmZhY2VSZWN0
KCk7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2UgPSBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc3VyZmFjZVJlY3Quc2l6ZSgpKTsKLSAgICBw
YWludE9wdGlvbnMuc3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVy
LT5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKLSAgICBwYWludE9wdGlvbnMub3BhY2l0eSA9
IDE7CisgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdpb247CisgICAgUmVnaW9uIG5ld05vbk92ZXJs
YXBSZWdpb24oZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ1JlY3QpKTsKKworICAgIGlmICghbV9z
dGF0ZS5tYXNrc1RvQm91bmRzKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9j
aGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBj
aGlsZCA9IG1fY2hpbGRyZW5baV07CisgICAgICAgICAgICBib29sIGFsd2F5c1Jlc29sdmVTZWxm
T3ZlcmxhcEZvckNoaWxkcmVuID0gZmFsc2U7CisgICAgICAgICAgICBjaGlsZC0+Y29tcHV0ZU92
ZXJsYXBSZWdpb25zKG5ld092ZXJsYXBSZWdpb24sIG5ld05vbk92ZXJsYXBSZWdpb24sIGFsd2F5
c1Jlc29sdmVTZWxmT3ZlcmxhcEZvckNoaWxkcmVuKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikgeworICAgICAgICBuZXdPdmVybGFwUmVnaW9uLnVu
aXRlKHJlcGxpY2FNYXRyaXgubWFwUmVjdChuZXdPdmVybGFwUmVnaW9uLmJvdW5kcygpKSk7Cisg
ICAgICAgIFJlZ2lvbiByZXBsaWNhUmVnaW9uKHJlcGxpY2FNYXRyaXgubWFwUmVjdChuZXdOb25P
dmVybGFwUmVnaW9uLmJvdW5kcygpKSk7CisgICAgICAgIHJlc29sdmVPdmVybGFwcyhyZXBsaWNh
UmVnaW9uLCBuZXdPdmVybGFwUmVnaW9uLCBuZXdOb25PdmVybGFwUmVnaW9uKTsKKyAgICB9CiAK
LSAgICBwYWludE9wdGlvbnMudHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkuaW52ZXJzZSgpOwotICAgIHBhaW50T3B0aW9ucy5vZmZzZXQgPSAtSW50U2l6ZShzdXJmYWNl
UmVjdC54KCksIHN1cmZhY2VSZWN0LnkoKSk7CisgICAgaWYgKCFhbHdheXNSZXNvbHZlU2VsZk92
ZXJsYXAgJiYgc2hvdWxkQmxlbmQoKSkgeworICAgICAgICBuZXdOb25PdmVybGFwUmVnaW9uLnVu
aXRlKG5ld092ZXJsYXBSZWdpb24pOworICAgICAgICBuZXdPdmVybGFwUmVnaW9uID0gUmVnaW9u
KCk7CisgICAgfQogCi0gICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShwYWludE9w
dGlvbnMpOworICAgIG92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAg
cmVzb2x2ZU92ZXJsYXBzKG5ld05vbk92ZXJsYXBSZWdpb24sIG92ZXJsYXBSZWdpb24sIG5vbk92
ZXJsYXBSZWdpb24pOworfQogCi0gICAgLy8gSWYgd2UgcGFpbnRlZCB0aGUgcmVwbGljYSwgdGhl
IG1hc2sgaXMgYWxyZWFkeSBhcHBsaWVkIHNvIHdlIGRvbid0IG5lZWQgdG8gcGFpbnQgaXQgYWdh
aW4uCi0gICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKQotICAgICAgICBtYXNrVGV4dHVyZSA9
IDA7Cit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNv
bnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgUmVnaW9uIG92
ZXJsYXBSZWdpb247CisgICAgUmVnaW9uIG5vbk92ZXJsYXBSZWdpb247CisgICAgY29tcHV0ZU92
ZXJsYXBSZWdpb25zKG92ZXJsYXBSZWdpb24sIG5vbk92ZXJsYXBSZWdpb24pOworICAgIGlmIChv
dmVybGFwUmVnaW9uLmlzRW1wdHkoKSkgeworICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldp
dGhSZXBsaWNhKG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9y
PEludFJlY3Q+IHJlY3RzID0gbm9uT3ZlcmxhcFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcmVjdHNbaV0pOwor
ICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKG9wdGlvbnMpOworICAgICAg
ICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKKyAgICB9CisKKyAgICByZWN0cyA9
IG92ZXJsYXBSZWdpb24ucmVjdHMoKTsKKyAgICBJbnRTaXplIG1heFRleHR1cmVTaXplID0gb3B0
aW9ucy50ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCByZWN0ID0gcmVj
dHNbaV07CisgICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyB4
ICs9IG1heFRleHR1cmVTaXplLndpZHRoKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50IHkgPSBy
ZWN0LnkoKTsgeSA8IHJlY3QubWF4WSgpOyB5ICs9IG1heFRleHR1cmVTaXplLmhlaWdodCgpKSB7
CisgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdChJbnRQb2ludCh4LCB5KSwgbWF4VGV4
dHVyZVNpemUpOworICAgICAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChyZWN0KTsKKyAg
ICAgICAgICAgICAgICBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKG9wdGlvbnMsIHRpbGVS
ZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KIAordm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQoreworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFza01vZGUodHJ1ZSk7
CisgICAgcGFpbnRTZWxmKG9wdGlvbnMpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0
TWFza01vZGUoZmFsc2UpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZy
b21Qb29sKHNpemUpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3Vy
ZmFjZS5nZXQoKSk7CisgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucyk7CisgICAgaWYg
KG1fc3RhdGUubWFza0xheWVyKQorICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNr
KG9wdGlvbnMpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBzdXJmYWNlID0gYXBwbHlG
aWx0ZXJzKG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5n
ZXQoKSwgc3VyZmFjZVJlY3QpOworICAgIGlmICghbV9jdXJyZW50RmlsdGVycy5pc0VtcHR5KCkp
CisgICAgICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9jdXJyZW50RmlsdGVycywgb3B0aW9u
cy50ZXh0dXJlTWFwcGVyLCBzdXJmYWNlLmdldCgpKTsKICNlbmRpZgorICAgIG9wdGlvbnMudGV4
dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CisgICAgcmV0dXJuIHN1cmZh
Y2U7Cit9CiAKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbW1pdFN1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQor
ewogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNl
LmdldCgpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAg
dGFyZ2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25z
Lm9mZnNldC5oZWlnaHQoKSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMu
dHJhbnNmb3JtKTsKLSAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNm
b3JtLmNvbWJpbmVkKCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUo
KnN1cmZhY2UuZ2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlh
dGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FTdXJm
YWNlOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYWluU3VyZmFjZTsKKyAgICBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKKyAgICBwYWludE9wdGlv
bnMub2Zmc2V0ID0gLUludFNpemUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICBwYWludE9wdGlv
bnMub3BhY2l0eSA9IDE7CisgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KCk7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAgIHBh
aW50T3B0aW9ucy50cmFuc2Zvcm0gPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIHJlcGxp
Y2FTdXJmYWNlID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJlY3Quc2l6ZSgpKTsK
KyAgICAgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7
CisgICAgICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCisg
ICAgICAgICAgICBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5
TWFzayhwYWludE9wdGlvbnMpOworICAgIH0KIAotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+
ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0s
IG9wYWNpdHksIG1hc2tUZXh0dXJlLmdldCgpKTsKKyAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYg
b3B0aW9ucy5vcGFjaXR5ID09IDEpCisgICAgICAgIHJlcGxpY2FTdXJmYWNlID0gY29tbWl0U3Vy
ZmFjZShvcHRpb25zLCByZXBsaWNhU3VyZmFjZSwgcmVjdCwgMSk7CisKKyAgICBtYWluU3VyZmFj
ZSA9IHBhaW50SW50b1N1cmZhY2UocGFpbnRPcHRpb25zLCByZWN0LnNpemUoKSk7CisgICAgaWYg
KHJlcGxpY2FTdXJmYWNlKSB7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1
cmZhY2UocmVwbGljYVN1cmZhY2UuZ2V0KCkpOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXItPmRyYXdUZXh0dXJlKCptYWluU3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgcmVjdC5zaXplKCkpKTsKKyAgICAgICAgbWFpblN1cmZhY2UgPSByZXBsaWNhU3Vy
ZmFjZTsKKyAgICB9CisKKyAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIG1haW5TdXJmYWNlLCBy
ZWN0LCBvcHRpb25zLm9wYWNpdHkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFp
bnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3sK
KyAgICBpZiAoIWlzVmlzaWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3Vs
ZEJsZW5kKCkpIHsKKyAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShvcHRp
b25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOworICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0g
b3B0aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKKyAgICBwYWludFVzaW5nT3Zlcmxh
cFJlZ2lvbnMocGFpbnRPcHRpb25zKTsKIH0KIAogVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVy
ZU1hcHBlckxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2MWZiODI3NjcwODYw
M2UxMTBmYWNlZDQxODlkYjdkYTBiYzAzMWZhLi42MDJiMmMzOTQxNTUyZTViZDFlNGZhMWFiYzgz
ZDkyY2MwNjA0ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0zMSw2ICszMSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVnaW9uOwogY2xhc3MgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwogCkBA
IC03Myw2ICs3NCwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZv
aWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKKworICAgIGJv
b2wgaGFzRmlsdGVycygpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAg
ICAgICAgcmV0dXJuICFtX2N1cnJlbnRGaWx0ZXJzLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgc2V0RGVidWdWaXN1YWxz
KGJvb2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZs
b2F0IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKICAgICB2b2lk
IHNldFJlcGFpbnRDb3VudChpbnQpOwogICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllciopOwpAQCAtOTIsOCArMTAzLDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OwogICAg
IHZvaWQgY29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKTsKLSAgICBJbnRSZWN0IGludGVybWVk
aWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgSW50UmVj
dCBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpOwogCiAgICAgc3RhdGljIGludCBjb21wYXJlR3Jh
cGhpY3NMYXllcnNaVmFsdWUoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYik7CiAgICAgc3Rh
dGljIHZvaWQgc29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqID4mIGFycmF5
LCBpbnQgZmlyc3QsIGludCBsYXN0KTsKQEAgLTEwMSwxNSArMTEwLDIxIEBAIHByaXZhdGU6CiAg
ICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5n
U3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQg
YWRqdXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQ
b3NpdGlvbkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29u
c3Q7Ci0KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CiAgICAg
dm9pZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21Q
YXJlbnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAKKyAgICB2b2lkIGNvbXB1
dGVPdmVybGFwUmVnaW9ucyhSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3Zlcmxh
cFJlZ2lvbiwgYm9vbCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXAgPSB0cnVlKTsKKwogICAgIHZv
aWQgcGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOworICAg
IHZvaWQgcGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMmKTsKKyAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICB2
b2lkIHBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHBhaW50U2VsZihjb25zdCBUZXh0
dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGlsZHJlbihj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRD
aGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKKyAg
ICB2b2lkIGFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAKICAg
ICAvLyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QW5pbWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsK
QEAgLTEyNSw4ICsxNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBNdWx0aXBsZUxheWVyc1dpdGhD
b250ZW50cwogICAgIH07CiAKLSAgICBDb250ZW50c0xheWVyQ291bnQgY291bnRQb3RlbnRpYWxM
YXllcnNXaXRoQ29udGVudHMoKSBjb25zdDsKLSAgICBib29sIHNob3VsZFBhaW50VG9JbnRlcm1l
ZGlhdGVTdXJmYWNlKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRCbGVuZCgpIGNvbnN0OwogCiAg
ICAgaW5saW5lIEZsb2F0UmVjdCBsYXllclJlY3QoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5
ZTY2ZWU0N2RlZjgxMDExNS4uYjliYWRlZDMzNDczODFjYzBkYjI5ZjIxYzJhYWVkYjAwY2Y5MDU5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0
bWFwVGV4dHVyZSogbWFzayA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBm
bG9hdCBvcGFjaXR5ID0gMS4wKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDhj
MTMxZTYxOWUxYWUwMTc3MWMwY2ViMjU0MTUyNWRjYmU2MjU5MTcuLjUzZWUyZjBkZGE0ZDU4OWVj
NTk3MDRlYjM2NTczYzg3NDVjOWM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtLmNwcApAQCAtMTI3LDcgKzEyNyw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB2ZXJ0
ZXhUZW1wbGF0ZSA9CiAgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsK
IAogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2ZWMy
IHZfbWFza1RleENvb3JkOwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFzOwogCiAg
ICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWMyIGR1bW15UGFyYW1ldGVyKSB7IH0KQEAgLTE3Niw4
ICsxNzUsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4VGVtcGxhdGUgPQogICAgICAgICAg
ICAgLy8gVGhlIHRleHR1cmUgcG9zaXRpb24gbmVlZHMgdG8gYmUgY2xhbXBlZCB0byAwLi4xIGJl
Zm9yZSB0aGUgdGV4dHVyZSBtYXRyaXggaXMgYXBwbGllZC4KICAgICAgICAgICAgIHZlYzQgY2xh
bXBlZFBvc2l0aW9uID0gY2xhbXAodmVjNChwb3NpdGlvbiwgMC4sIDEuKSwgMC4sIDEuKTsKICAg
ICAgICAgICAgIHZfdGV4Q29vcmQgPSAodV90ZXh0dXJlU3BhY2VNYXRyaXggKiBjbGFtcGVkUG9z
aXRpb24pLnh5OwotCi0gICAgICAgICAgICB2X21hc2tUZXhDb29yZCA9IHBvc2l0aW9uOwogICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiB1X21vZGVsVmlld01h
dHJpeCAqIHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgICAgICAgIH0KICAgICApOwpAQCAtMjA0
LDEyICsyMDEsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAg
IFNUUklOR0lGWSgKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgIHVu
aWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOwotICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBz
X21hc2s7CiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfY29udGVudFRleHR1cmU7CiAgICAg
ICAgIHVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5OwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50
aWFsaWFzOwogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWlu
ZyB2ZWMyIHZfbWFza1RleENvb3JkOwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfZmlsdGVyQW1v
dW50OwogICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwogICAgICAgICB1bmlmb3Jt
IHZlYzIgdV9zaGFkb3dPZmZzZXQ7CkBAIC0yMjMsNyArMjE4LDYgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZShpbm91dCB2
ZWM0IGNvbG9yKSB7IGNvbG9yID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdl90ZXhDb29y
ZCk7IH0KICAgICAgICAgdm9pZCBhcHBseU9wYWNpdHkoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xv
ciAqPSB1X29wYWNpdHk7IH0KICAgICAgICAgdm9pZCBhcHBseUFudGlhbGlhc2luZyhpbm91dCB2
ZWM0IGNvbG9yKSB7IGNvbG9yICo9IGFudGlhbGlhcygpOyB9Ci0gICAgICAgIHZvaWQgYXBwbHlN
YXNrKGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdGV4dHVyZTJEKHNfbWFzaywgdl9tYXNr
VGV4Q29vcmQpLmE7IH0KIAogICAgICAgICB2b2lkIGFwcGx5R3JheXNjYWxlRmlsdGVyKGlub3V0
IHZlYzQgY29sb3IpCiAgICAgICAgIHsKQEAgLTMzNCw3ICszMjgsNiBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgICAgICAgICBhcHBseVRleHR1cmVJZk5lZWRl
ZChjb2xvcik7CiAgICAgICAgICAgICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xvcik7CiAg
ICAgICAgICAgICBhcHBseUFudGlhbGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAg
IGFwcGx5TWFza0lmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5T3BhY2l0eUlmTmVl
ZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5R3JheXNjYWxlRmlsdGVySWZOZWVkZWQoY29s
b3IpOwogICAgICAgICAgICAgYXBwbHlTZXBpYUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKQEAgLTM2
Miw3ICszNTUsNiBAQCBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFBhc3NSZQogICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhSZWN0KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU29saWRDb2xv
cik7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKE9wYWNpdHkpOwotICAgIFNFVF9BUFBM
SUVSX0ZST01fT1BUSU9OUyhNYXNrKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoQW50
aWFsaWFzaW5nKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoR3JheXNjYWxlRmlsdGVy
KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU2VwaWFGaWx0ZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCAwMzdlN2Q2OWQ5YTg3NzRmMWQzMDYx
YTc3OTMxYTJjMDNjOWRjMTQ2Li4zMmZhZTExNmNiZmEyZjgzNDliZDI3YjNhYzRiZTk5MzY5ZGNi
NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaApAQCAtNDIsNyAr
NDIsNiBAQCBwdWJsaWM6CiAgICAgICAgIFJlY3QgICAgICAgICAgICAgPSAxTCA8PCAxLAogICAg
ICAgICBTb2xpZENvbG9yICAgICAgID0gMUwgPDwgMiwKICAgICAgICAgT3BhY2l0eSAgICAgICAg
ICA9IDFMIDw8IDMsCi0gICAgICAgIE1hc2sgICAgICAgICAgICAgPSAxTCA8PCA0LAogICAgICAg
ICBBbnRpYWxpYXNpbmcgICAgID0gMUwgPDwgNSwKICAgICAgICAgR3JheXNjYWxlRmlsdGVyICA9
IDFMIDw8IDYsCiAgICAgICAgIFNlcGlhRmlsdGVyICAgICAgPSAxTCA8PCA3LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzcxNDJk
NzVkZDVhNzYzZjBiNjIyYTU2MzY1YWQ5YzIyZTgzOWUxMi4uOGQzODc3NmU5YjVmNTMzYTYwNWU3
M2NhNzZlMzNjYWJmZDk4YjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmUuY3BwCkBAIC00NCwxMCArNDQsMTAgQEAgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyU3Vy
ZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
KQordm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFj
aXR5KQogewogICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1
cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRy
YW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWlu
dFRvVGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9w
YWNpdHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRjZDEwMTRmYzg1ZWEzYTdlOTcx
YzhkZTA1ZjQxYTRmZDRiZDI2YzcuLjc5M2M2MWRjMzQyZmYwMjYzNTI3ODc0YzcxMjBkMzVlYjI4
MGM1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFj
ZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5l
ZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZpcnR1YWwgflRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlLmNwcAppbmRleCA5YjQwNTEzMWFiMGU3OTMyZmU5Yzg3ZmRiYzI1ODQ0Y2ViNTI0NDRi
Li4wNzA1N2VhMTQ5MTNlZWUwNjE1OWQ5NDZiNjQxYjJkMTM1NjEwYmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxl
Ojp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xh
eQogICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5
ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAot
dm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwg
Qml0bWFwVGV4dHVyZSogbWFzaywgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICh0ZXh0dXJlKCkuZ2V0KCkpCi0gICAg
ICAgIHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlKCkuZ2V0KCksIHJlY3QoKSwg
dHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgICAgICB0ZXh0dXJl
TWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwg
b3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGUuaAppbmRleCBhY2VmNjE4ZWQzZDYwZTMyYTc2M2JmNDBmMTVmY2YyYTM0
NzdlZThkLi4yYjQ1ZDkwMDc3OThlYjQ3MTI4ZDA3YzQ0OWQ3ZDBhNTgwOGZlZDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRt
YXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFn
ZURhdGEpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNz
TGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFn
IFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJp
dG1hcFRleHR1cmUqLCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJl
TWFwcGVyVGlsZSgpIHsgfQogCiAgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlLmNwcAppbmRleCA4MDk3OTIyMjY3ZTk5MGE4MTBmMjAyZDQ1N2E2MmZhZjlmYjg4ZDBi
Li40YTYwYzgxNTcyMjI4YTVkM2RmNThlYTUwMDRhYjNhMDNmN2FhNTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDcsMTIgKzQ3LDEy
IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5KQogewogICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1h
cHBlcik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFu
c2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RpbGVzW2ld
LnBhaW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBj
YWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKKyAg
ICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwg
b3BhY2l0eSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVj
dCgpKSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9y
ZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xv
ciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCA5MzliMTg1ZDdlYTM1NGYzYmI1Mzk4NWI4YTU2
N2U5MTY3NzY0ZmViLi5mYzFmOWJmNjdmNjExZmViOGM1YmRlNGY3ZjdmOTJiY2ZiNGNhMDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVN
YXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJ
bnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEw
NWMxY2JmYTU1ZGJlZmVmYjMyYzM2ZDg1ZjczM2JiYzZkZjM3NDguLmNkNWExMmQ5NjdiNjUwYjk5
MDhkZTEwMmM0YzI5MTMzYTUyZTBiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTA2LDEwICsxMDYsMTAgQEAgdm9p
ZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUp
CiAgICAgbV9wZW5kaW5nU2l6ZSA9IHNpemU7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxl
Kj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpw
YWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxl
cywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRp
bGVzW2ldLT5wYWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNh
bGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZXNbaV0tPnJlY3QoKSkpOworICAgICAg
ICB0aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBjYWxj
dWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKIH0KIAogVHJh
bnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNm
b3JtRm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpCkBAIC0xMTcsNyArMTE3LDcg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVk
VHJhbnNmb3JtRm9yUmVjdChjb25zdCBGbG8KICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KTsKIH0KIAotdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQor
dm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAg
IGlmIChtX3RpbGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyLDggKzE1Miw4
IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgLy8gU2VlIFRpbGVkQmFja2luZ1N0b3Jl
LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3Jt
ICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogCi0gICAgcGFpbnRUaWxl
c1RvVGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRq
dXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7Ci0gICAgcGFpbnRUaWxlc1Rv
VGV4dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNm
b3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIocHJldmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3Jt
LCBvcGFjaXR5LCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNU
b1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCgp
KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJv
cmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDgxOTg5NWY0OTJhZTVhY2VkZTdkMzlhZWUxYzRk
ODdiYzI2Y2NmYjkuLjQyMDE0NTRiZDdmNzVjMzYzYTI2OGI3MmIzODc1MTFkZTBlNzFhN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25z
KFRleHR1cmVNYXBwZXIqKTsKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSBjb25zdDsKICAgICB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKik7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBm
bG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKQEAgLTcwLDcg
KzcwLDcgQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAgICAg
IDogbV9zY2FsZSgxLikKICAgICB7IH0KLSAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mLCBUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IEZsb2F0UmVj
dCYpOworICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1h
cHBlclRpbGUqPiYsIFRleHR1cmVNYXBwZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1
c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgRmxvYXRSZWN0IHJl
Y3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUp
OyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA5ZmIyYzQ5YWNhNzIzMmY3MjljMjhlYjcyY2YwODY3ZGE1OTY1NGY2Li42
ZTFjYWI1ZWRjZWZjY2NmYWQwYzkwMDQ4OWI2ZjY5MDdhZGM0ZjBkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTMtMDItMjUgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbVGV4bWFwXSBUZXh0dXJlTWFwcGVyIGlzIHRvbyBlYWdlciB0byB1c2UgaW50ZXJt
ZWRpYXRlIHN1cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTA3NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBhIGZldyByZWYtdGVzdHMgZm9yIGNvcnJlY3Qgb3ZlcmxhcCBibGVuZGlu
ZyBpbiBhY2NlbGVhcmF0ZWQgY29tcG9zaXRpbmcgbW9kZS4gCisgICAgICAgIFNraXBwaW5nIHRo
ZSBuZXcgcmVmbGVjdGlvbiB0ZXN0IG9uIE1hYy9DaHJvbWl1bSBzaW5jZSBpdCdzIG5vdCByZW5k
ZXJlZAorICAgICAgICBwcm9wZXJseSBvbiB0aG9zZSBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBj
b21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2No
aWxkcmVuLW9wYWNpdHktaHVnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9v
dmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVu
LW9wYWNpdHktbm8tb3ZlcmxhcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9v
dmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1v
cGFjaXR5LWh1Z2UuaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMjYgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBVc2VyLUFnZW50IGhlYWRl
ciBpbiBvcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXJzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRy
ZW4tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk5MDVlOWE5ODlhZDI2
OWZlMzYxMmIyMmQzOTQxMTQzZTFhYTRhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhl
YWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNj
cmVlbiI+CisgICAgICAKKyAgICAgIGRpdiB7CisgICAgICAgIC13ZWJraXQtYm94LXNpemluZzog
Ym9yZGVyLWJveDsKKyAgICAgIH0KKyAgICAgIC5zb2xpZCB7CisgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDIxNTBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICB9CisKKyAgICAgIC5vcGFj
aXR5IHsgb3BhY2l0eTogLjU7IH0KKyAgICAgIC5hIHsgdG9wOiAwcHg7IGxlZnQ6IDBweDt9Cisg
ICAgICAuYiB7IHRvcDogMTAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAKKyAgICAgIC5jb21wb3Np
dGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgICB9
CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisKKyAgICA8L3N0eWxlPgorICA8
L2hlYWQ+CisgICAgPGRpdiBjbGFzcz0ib3BhY2l0eSI+CisgICAgPGRpdiBjbGFzcz0ic29saWQg
YSI+MTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGIiPjI8L2Rpdj4KKyAgPC9kaXY+CisK
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ3MWIwNjRlZjlmNWIwZGFiZGYzZTA5NzA1OGFhMTI4MzcwYzhjNGUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktaHVnZS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1l
ZGlhPSJzY3JlZW4iPgorICAgICAgCisgICAgICBkaXYgeworICAgICAgICAtd2Via2l0LWJveC1z
aXppbmc6IGJvcmRlci1ib3g7CisgICAgICB9CisgICAgICAuc29saWQgeworICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAyMTUwcHg7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgfQorCisgICAg
ICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9CisgICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAw
cHg7fQorICAgICAgLmIgeyB0b3A6IDEwMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgCisgICAgICAu
Y29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwor
ICAgICAgfQorCisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisgICAgPC9zdHls
ZT4KKyAgPC9oZWFkPgorICAgIDxkaXYgY2xhc3M9Im9wYWNpdHkgY29tcG9zaXRlZCI+CisgICAg
PGRpdiBjbGFzcz0ic29saWQgYSBjb21wb3NpdGVkIj4xPC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
c29saWQgYiBjb21wb3NpdGVkIj4yPC9kaXY+CisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktbm8tb3ZlcmxhcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
b3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mOWJkNWYxMzZkMjZiNDYzZDMwOGE3M2VmNmE1ZjAwMmViODRjMjg3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGlu
Zy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDM2
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cisg
ICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAg
ZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgfQor
ICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworICAgICAgfQorCisgICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9Cisg
ICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDIwMHB4OyBs
ZWZ0OiAyMDBweDt9CisgICAgICAuYyB7IHRvcDogMjAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAu
ZCB7IHRvcDogMHB4OyBsZWZ0OiAyMDBweDt9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5n
OiAwOyB9CisgICAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0
cmFuc2xhdGVaKDApOworICAgICAgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAgIDxk
aXYgY2xhc3M9Im9wYWNpdHkiPgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgYSI+MTwvZGl2Pgor
ICAgICAgPGRpdiBjbGFzcz0ic29saWQgYiI+MjwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29s
aWQgYyI+MzwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgZCI+PC9kaXY+CisgICAgPC9k
aXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJs
YXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLmh0bWwgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3Zlcmxh
cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczMTg0MGEyYzRkYjJjZjJhNzE1MWViMzE1NDMzMDYzYzNkNGU2
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJs
ZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC5odG1sCkBAIC0wLDAgKzEsMzcgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgCisgICAgICBkaXYg
eworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICB9CisgICAg
ICAuc29saWQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47CisgICAgICB9CisKKyAgICAgIC5vcGFjaXR5IHsgb3BhY2l0eTogLjU7IH0KKyAgICAg
IC5hIHsgdG9wOiAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAuYiB7IHRvcDogMjAwcHg7IGxlZnQ6
IDIwMHB4O30KKyAgICAgIC5jIHsgdG9wOiAyMDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5kIHsg
dG9wOiAwcHg7IGxlZnQ6IDIwMHB4O30KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeworICAg
ICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0KKyAgICAgICog
eyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAg
ICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIG9wYWNpdHkiPgorICAgICAgPGRpdiBjbGFzcz0ic29s
aWQgY29tcG9zaXRlZCBhIj4xPC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3Np
dGVkIGIiPjI8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgYyI+Mzwv
ZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgY29tcG9zaXRlZCBkIj48L2Rpdj4KKyAgICA8
L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHkt
aHVnZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0OWIxNGNjMDEwZDU4YWMyYWFhMGExODkx
OTRiNTBhNjUyNWU1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAg
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Cisg
ICAgICAucmVmbGVjdGVkIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3
aWR0aDogMjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKKyAgICAgICAgb3BhY2l0eTogMC41OworICAgICAgICAtd2Via2l0LWJv
eC1yZWZsZWN0OiBiZWxvdyAtNTBweDsKKyAgICAgIH0KKyAgICAgIAorICAgICAgKiB7IG1hcmdp
bjogMDsgcGFkZGluZzogMDsgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAKKyAgPHA+
T3BhY2l0eSBzaG91bGQgYmUgYXBwbGllZCBhZnRlciByZWZsZWN0aW9uLCBzbyB5b3Ugc2hvdWxk
IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBiZWxvdy4gVGhlIG92ZXJsYXAgYmV0d2VlbiB0aGUgb3Jp
Z2luYWwgYW5kIHJlZmxlY3Rpb24gc2hvdWxkIG5vdCBiZSB2aXNpYmxlLjwvcD4KKyAgPGRpdiBj
bGFzcz0icmVmbGVjdGVkIj4xCisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1o
dWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxl
Y3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc4MTc5NGU5OTdiZjgxNDI0NTVm
MmZiMmUwZDE0NjRjMzcwZWY5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2UuaHRtbApAQCAt
MCwwICsxLDI1IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAg
IC5yZWZsZWN0ZWQgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIHdpZHRo
OiAyMTUwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworICAgICAgICBvcGFjaXR5OiAwLjU7CisgICAgICAgIC13ZWJraXQtYm94LXJl
ZmxlY3Q6IGJlbG93IC01MHB4OworICAgICAgfQorICAgICAgCisgICAgICAuY29tcG9zaXRlZCB7
IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO30KKyAgICAgICogeyBtYXJnaW46IDA7
IHBhZGRpbmc6IDA7IH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgCisgIDxwPk9wYWNp
dHkgc2hvdWxkIGJlIGFwcGxpZWQgYWZ0ZXIgcmVmbGVjdGlvbiwgc28geW91IHNob3VsZCBzZWUg
YSBncmVlbiByZWN0YW5nbGUgYmVsb3cuIFRoZSBvdmVybGFwIGJldHdlZW4gdGhlIG9yaWdpbmFs
IGFuZCByZWZsZWN0aW9uIHNob3VsZCBub3QgYmUgdmlzaWJsZS48L3A+CisgIDxkaXYgY2xhc3M9
InJlZmxlY3RlZCBjb21wb3NpdGVkIj4xCisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MmEwYTFjY2Zi
ZGE4YzBmODIyMGJkZWYxYjRhYzYwNDI1ZDA2ODJhLi41ODU5ZDdiY2IyM2VkOWUyMjMwM2I5ZTM2
MTg5OTZiNDg4Y2Y5NzBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTM3ODEsNiArMzc4MSw4IEBAIHdlYmtpdC5vcmcvYi85NDM1MyBw
bGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3Zl
cmZsCiB3ZWJraXQub3JnL2IvOTQzNTMgY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctb3Zl
cmxheS13aXRoLXRvdWNoLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85NDM1MyBwbGF0
Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZs
b3ctb3ZlcmxheS13aXRoLXRvdWNoLmh0bWwgWyBGYWlsdXJlIF0KIAord2Via2l0Lm9yZy9iLzEx
MDg3MSBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdl
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KKwogd2Via2l0Lm9yZy9iLzkwNDg4IFsgV2luIF0g
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay1wcmVmbGlnaHQtb3B0aW9ucy5odG1sIFsgUGFz
cyBTbG93IF0KIHdlYmtpdC5vcmcvYi85MDQ4OCBbIFdpbiBdIGluc3BlY3Rvci9leHRlbnNpb25z
L2V4dGVuc2lvbnMtcmVsb2FkLmh0bWwgWyBQYXNzIFNsb3cgXQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDJkZDE1NjI5NmU3ZWM2ZmZmYjA3NDAwMDE0
NTliZTA5ZTljOTA0ZTYuLjg1MDgyNzg4ZWQyYTQyYmEyYTFiMzAyNThiODM4MmQ2NmYxNmI0N2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC05MTUsNiAr
OTE1LDkgQEAgY29tcG9zaXRpbmcvb3ZlcmZsb3cvdGV4dGFyZWEtc2Nyb2xsLXRvdWNoLmh0bWwK
IGNvbXBvc2l0aW5nL292ZXJmbG93L3VwZGF0aW5nLXNjcm9sbGluZy1jb250ZW50Lmh0bWwKIGNv
bXBvc2l0aW5nL292ZXJmbG93L3Njcm9sbGluZy13aXRob3V0LXBhaW50aW5nLmh0bWwKIAorIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwODcxCitjb21wb3NpdGlu
Zy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKKwogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUwMjcKIGZhc3QvYmxvY2svZmxv
YXQvMDE2Lmh0bWwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190453</attachid>
            <date>2013-02-26 23:41:21 -0800</date>
            <delta_ts>2013-02-27 01:45:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110762-20130227083729.patch</filename>
            <type>text/plain</type>
            <size>85018</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI0MmY5YTEzMTIxMTZm
MGZkNjcyNmNjNGFiOTUxMzhkZDAzNzcxNy4uMTZhNDllMmE5NGM4OWVjNjMyN2JhZjlhZGUyZGE0
MDA1MzcyMmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMy0wMi0yNSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXIgaXMgdG9vIGVhZ2VyIHRvIHVzZSBpbnRlcm1lZGlhdGUgc3VyZmFjZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRoZSB3
YXkgaW50ZXJtZWRpYXRlIHN1cmZhY2VzIGFyZSBoYW5kbGVkIGluIFRleHR1cmVNYXBwZXJMYXll
ci4KKyAgICAgICAgQmVmb3JlaGFuZCwgd2Ugd291bGQgY3JlYXRlIGFuIGludGVybWVkaWF0ZSBz
dXJmYWNlIHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmNlIG9mIG92ZXJsYXAsIGFuZAorICAgICAg
ICB0aGUgaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd291bGQgYmUgdGhlIGxhcmdlc3QgcG9zc2libGUu
IFRoZSByZXN1bHQgd291bGQgdGhlbiBiZSBkcmF3biB0byB0aGUKKyAgICAgICAgdGFyZ2V0IHN1
cmZhY2Ugd2l0aCB0aGUgbGF5ZXIncyBvcGFjaXR5IGFuZCBtYXNrLgorCisgICAgICAgIFRoaXMg
d291bGQgbWFrZSBpdCBzbyB0aGF0ICgxKSBzdXJmYWNlcyBhcmUgY3JlYXRlZCBldmVuIHdoZW4g
dGhleSdyZSBub3QgbmVlZGVkLCBpLmUuIHdoZW4gdGhlcmUKKyAgICAgICAgaXMgbm8gYWN0dWFs
IG92ZXJsYXAsIGFuZCAoMikgbWFzayB3b3VsZG4ndCBiZSBhcHBsaWVkIGNvcnJlY3RseS4KKwor
ICAgICAgICBJbiB0aGlzIHBhdGNoIHRoZSBiZWhhdmlvciBpcyBjaGFuZ2VkIHNvIHRoYXQgdGhl
IGFyZWEgdG8gYmUgcGFpbnRlZCBpcyBkaXZpZGVkIHRvICJvdmVybGFwcGluZyIKKyAgICAgICAg
YW5kICJub24gb3ZlcmxhcHBpbmciIHJlZ2lvbnMuIFRoZSBub24tb3ZlcmxhcHBpbmcgcmVnaW9u
cyBhcmUgcGFpbnRlZCBkaXJlY3RseSwgd2hpbGUgdGhlIG92ZXJsYXBwaW5nCisgICAgICAgIHJl
Z2lvbnMgYXJlIHRpbGVkIHRvIHNtYWxsZXIgcmVjdGFuZ2xlcyBwYWludGVkIHVzaW5nIGFuIGlu
dGVybWVkaWF0ZSBzdXJmYWNlLgorICAgICAgICBNYXNrcyBhcmUgYXBwbGllZCB0byB0aG9zZSBp
bnRlcm1lZGlhdGUgc3VyZmFjZXMgYmFzZWQgb24gdGhlIHRyYW5zZm9ybSBvZiB0aGUgYWN0dWFs
IG1hc2ssIG5vdCBkcmF3bgorICAgICAgICB0b2dldGhlciB3aXRoIHRoZSBjb250ZW50IHRleHR1
cmUgbGlrZSBiZWZvcmUuCisKKyAgICAgICAgVGhpcyBvcHRpbWl6ZXMgZm9yIHRoZSBtb3JlIGNv
bW1vbiBjYXNlIG9mIG9wYWNpdHkgYW5pbWF0aW9ucyBvbiBhIGxhcmdlIHRyZWUsIHdoaWxlIG1h
a2luZyB0aGUgcXVpdGUKKyAgICAgICAgcmFyZSBjYXNlIG9mIGNvbXBvc2l0ZWQgbWFza3Mgc2xp
Z2h0bHkgbGVzcyBvcHRpbWl6ZWQgYnV0IGFsd2F5cyBjb3JyZWN0LgorCisgICAgICAgIFRlc3Rz
OiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS5odG1s
CisgICAgICAgICAgICAgICBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24t
b3BhY2l0eS1odWdlLmh0bWwKKyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLmh0bWwKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmg6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAo
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaDoKKyAgICAgICAgKE1l
ZGlhUGxheWVyUHJpdmF0ZVF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HcmFwaGljc1N1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmg6CisgICAgICAgIChHcmFwaGljc1N1cmZhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9U
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMv
R3JhcGhpY3NTdXJmYWNlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvd2luL0dyYXBoaWNzU3VyZmFjZVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAg
ICAgKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnBh
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmg6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgICAgICAgICAgUmVtb3ZlZCB0aGUgIm1hc2siIHBhcmFtZXRlciBmcm9tIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyIGFuZCBvdmVycmlkZXMsIHNpbmNlCisgICAgICAgICAgICAgICAgd2Ug
bm8gbG9uZ2VyIHBhaW50IHRoZSBjb250ZW50cyBhbmQgdGhlIG1hc2sgaW4gdGhlIHNhbWUgcGFz
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTW9kZSk6CisgICAgICAgIChUZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OmlzSW5NYXNrTW9kZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAgICAgICAgICAgICBJbnN0ZWFkIG9mIHBhaW50
aW5nIHRoZSBtYXNrIHRvZ2V0aGVyIHdpdGggdGhlIHRleHR1cmUvY29sb3IsIHBhaW50IHRoZSBt
YXNrCisgICAgICAgICAgICAgICAgYnkgZHJhd2luZyB3aXRoIERlc3RpbmF0aW9uSW4gdG8gYW4g
ZXhpc3Rpbmcgc3VyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNob3VsZEJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRo
UmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUZp
bHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZU92ZXJsYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZU92ZXJsYXBSZWdpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6YXBwbHlNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21taXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50UmVjdXJzaXZlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omhhc0ZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbS5oOgorCiAyMDEzLTAyLTIzICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYW5p
bWF0aW9uL3N0YXRlLWF0LWVuZC1ldmVudC10cmFuc2Zvcm0tbGF5ZXIuaHRtbCBzaG93cyBhIHJl
ZCBzcXVhcmUgd2hlcmUgaXQgc2hvdWxkbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQzMTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi5k
ZjBiMjYyOTI3YjUwYWZjNDcxYzYwM2I2OTQ4NWI3NDY2YTVjYzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBF
UikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1h
cFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBv
cGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0
Miw3ICsxNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgIFRleHR1cmVNYXBwZXJH
TCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVy
KTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpT
aG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFw
cGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRl
eHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCk7Ci0gICAgdGV4
bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNp
emUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzayk7CisgICAgdGV4bWFwR0wtPmRy
YXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdl
dFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HX0dMKQogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggZDBkZDIzZmU3ZGJkNDFkNmFmODFm
OTA3YWFkOWRhMDMyYzAxYjRkYi4uNDJlYjZjMmU3MDUxYzkwMjc1MGIyODgwZGVjNGZhMzc0M2Iy
MTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHls
ZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSog
bWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmNwcAppbmRleCBjMTkzNWNhYTQ0ODEwYjI1OTQzNzhmYjcyZmIxZTEwYTEwNWQ2
YWRlLi4xZDE1MGUzY2NlMzJlNTQyYTk0OGNhNzQwNWI3MzczMDQ2YTFiNDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVmZmVyKCkgY29uc3QKIH0KIAogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQg
Ki8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLywgQml0
bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0
YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAq
LykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oCmluZGV4IGIzMDA5NmE2YTlhOGQ3NThhNzlkY2MyOWRjZTE2ZDU4YTg1OTc5NmQuLjhmMGVi
M2NiNGFlYjUzNGUzOGY5YjE3NjUwZGMxY2UzZmRmZTljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250
ZXh0TG9zdENhbGxiYWNrPik7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIHZpcnR1
YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCkgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2
aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKaW5kZXggNjZiZGVhZWQxODVhNTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMw
ZjdlYS4uOGQ1YjgxZDEwMjFjZDJiZTM4ZmM0MzIwOWJmMzBmMGI2OTdlMTY4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH5HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CiAjZW5kaWYKICNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUo
KSBjb25zdDsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJn
clRvUmdiKHF1aW50MzIgcGl4ZWwpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRt
YXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQg
b3BhY2l0eSkKIHsKICAgICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBi
bGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJlc3RvcmVDb250ZXh0KCk7CkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgY3VycmVudENvbnRleHQt
Pm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKIAogICAgICAgICBUZXh0dXJlTWFwcGVyR0wq
IHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7
Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBH
TCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrKTsKKyAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleG1hcEdMLCB0YXJnZXRSZWN0LCBtYXRy
aXgsIG9wYWNpdHkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclBy
aXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJiYjc4ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAz
YS4uMWY5NjliNWZkYzIxYWJjMjk0YWEwM2RkYTc3ZmEzNWEzYjY5NjYzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVy
UHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwK
IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSopCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZh
dGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQzOWUzMjI0YzE1MjFlZTAwMzA0MGY1OTUuLmU3
NGNkY2QwODk4NWNiYmNiYTNkMjhiNzZlNDU0MzYzMDUxNjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRl
UXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxl
cmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7IH0KICAgICAvLyBDb25zdC1jYXN0aW5nIGhl
cmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyJ3MgZnVu
Y3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1h
c2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEg
cGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAKaW5kZXggYmFl
ZmE4YTE5MDg0MWFlYWIyYjQwYTJjZDA2NDc3MjBmMTYzMzU5Yy4uMmE3YTRiMjQzYzRjYmU2OGFi
ZTJhYTkyNjE4OTFiNjA5NTdiMjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCkBAIC02
Myw5ICs2Myw5IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpjb3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjCiAgICAgcGxhdGZvcm1Db3B5RnJv
bVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNz
U3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewotICAgIHBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBt
YXNrKTsKKyAgICBwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRh
cmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3Vy
ZmFjZTo6ZnJvbnRCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAppbmRleCBkYTQ5MzY5OThj
NWQwZGQ3OTI4NTk1ZTIyMWM4ZmE5MjY5MWEzODc4Li43MzFhZjJiNmQ2NWMzZGE5YWQ0NzI5YmI3
NjI1NWYzOGRiZWY0ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUo
Y29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYpOwogICAg
IHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCk7
CiAgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1
aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVpbnQzMl90IHN3YXBCdWZmZXJzKCk7CiAgICAg
R3JhcGhpY3NTdXJmYWNlVG9rZW4gZXhwb3J0VG9rZW4oKTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2soKTsKICAgICB2b2lkIHBsYXRmb3JtQ29w
eVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvcHlGcm9tVGV4dHVy
ZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lk
IHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFj
aXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBw
bGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3Q7CiAgICAgdWludDMyX3QgcGxhdGZvcm1Td2FwQnVm
ZmVycygpOwogICAgIEludFNpemUgcGxhdGZvcm1TaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJm
YWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDQzOTFiNTljM2RmNjAxNGNlNzZmYjc2MmVm
N2NhZDM1NTNmYTYzNzAuLjIzZjhhZmI0ODJlZTI5MGMwZTU1MzU1MzA5MmY4ZTU2ODkzMzQ0MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCkBAIC0zODUsNyArMzg1
LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQz
Ml90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4
dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFw
aGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUg
c2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTM5
Nyw3ICszOTcsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogICAgIEZsb2F0UmVjdCByZWN0
T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNm
b3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRl
bnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4
dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHRleHR1cmUsIG1fcHJpdmF0ZS0+ZmxhZ3MoKSwgc2l6
ZSwgcmVjdE9uQ29udGVudHMsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAg
ICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1
cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygpLCBzaXplLCByZWN0T25Db250ZW50cywgYWRq
dXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQogCiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcAppbmRleCBiZjYyZmIxNWEwOWI0YzE4MjMyNDExZjYzYTUzMTdiYWRkNmVhMjVj
Li5jNGQyZDU0MTg0MmQ2YjE2Y2FlZDFhMTkzYTdlY2UxMjJjODFiYTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAtMzMzLDEzICszMzMsMTMgQEAgdm9pZCBH
cmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJl
LCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJp
dmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6
ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3Jt
ID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJl
KG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUs
IHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJl
KG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUs
IHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQz
Ml90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhp
Y3NTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCmluZGV4IDk1MDlmMDk4M2M2MjkwY2YwMGVk
M2JjYWQ4YTliMTA5ODYyNWQ4N2YuLjA2ZjQyN2NmY2FkODM2NDhkZmQ3OGQ1OTI1M2NiMGMwNDRm
ZjQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCkBAIC00MjEs
NyArNDIxLDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlG
cm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9p
ZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIElu
dFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0T25Db250
ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCmluZGV4IDM3
ZjcxNTRmMWM2OWQ5OGI0YTIzYjBjMGNkNzQ4ZWY1ZDlkNzU5MDguLjFiNTRlYTMxMzc1NjhmMzVk
NWFiMzI5ODhlOTk5OTQzZWEzY2E1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKQEAgLTE0MSw2ICsx
NDEsNyBAQCBUZXh0dXJlTWFwcGVyOjpUZXh0dXJlTWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNj
ZWxlcmF0aW9uTW9kZSkKICAgICAsIG1fdGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKICAg
ICAsIG1fdGV4dHVyZVBvb2woYWRvcHRQdHIobmV3IEJpdG1hcFRleHR1cmVQb29sKCkpKQogICAg
ICwgbV9hY2NlbGVyYXRpb25Nb2RlKGFjY2VsZXJhdGlvbk1vZGUpCisgICAgLCBtX2lzTWFza01v
ZGUoZmFsc2UpCiB7IH0KIAogVGV4dHVyZU1hcHBlcjo6flRleHR1cmVNYXBwZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmgKaW5kZXggYWRlYWYzZTcxOGUxMzI1MDM4MjljOTA0ZmMwYTJkMjc1MmM0NjE4Ni4uNzEy
MDBlYzk4NzBjMzliZjYyZmY1ODQ4NDA5NDMxNjJkODFmOGMzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBA
IC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNv
bnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGlu
dCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0
IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZs
b2F0IG9wYWNpdHkgPSAxLjBmLCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSA9IDAs
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjBmLCB1bnNpZ25lZCBleHBvc2VkRWRn
ZXMgPSBBbGxFZGdlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikg
PSAwOwogCiAgICAgLy8gbWFrZXMgYSBzdXJmYWNlIHRoZSB0YXJnZXQgZm9yIHRoZSBmb2xsb3dp
bmcgZHJhd1RleHR1cmUgY2FsbHMuCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50RmxhZ3MgPSAwKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZW5kUGFpbnRpbmcoKSB7IH0KIAorICAgIHZvaWQgc2V0TWFza01vZGUoYm9vbCBtKSB7
IG1faXNNYXNrTW9kZSA9IG07IH0KKwogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6
ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBh
Y3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmKTsKQEAgLTE2Niw2ICsxNjgsOCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsKIAorICAgIGJv
b2wgaXNJbk1hc2tNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc01hc2tNb2RlOyB9CisKIHByaXZh
dGU6CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHN0YXRpYyBQYXNzT3duUHRyPFRl
eHR1cmVNYXBwZXI+IHBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKTsKQEAgLTE3OSw2ICsxODMs
NyBAQCBwcml2YXRlOgogICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1fdGV4dERyYXdpbmdNb2Rl
OwogICAgIE93blB0cjxCaXRtYXBUZXh0dXJlUG9vbD4gbV90ZXh0dXJlUG9vbDsKICAgICBBY2Nl
bGVyYXRpb25Nb2RlIG1fYWNjZWxlcmF0aW9uTW9kZTsKKyAgICBib29sIG1faXNNYXNrTW9kZTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IDZiZmIz
ZjFjZmU1YjJlMTY2YzgxM2MwMzNkYWFlNjhhMTUxZGVmN2QuLmM2MDBhYTJlMWJkMmYxNzM3YTI5
Nzk4ZTM3NjM3NmQyZDVlOTljMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwg
cHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0
bWFwVGV4dHVyZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENvdW50ICovLCBjb25zdCBDb2xvciYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgeyB9CiAgICAgdmlydHVh
bCB+VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CmluZGV4IDVmMmU3MWNmMjdiMjE0MTRlMjJlZDA2MzljMjllMTZjZjA3MTZkMmYuLmFlZGRkYTI5
YTA2YzVhNDk0NWFmZDUzNDAzYmQ3NTk5NjEyNDUwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdOdW1iZXIoaW50
IG51bWJlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW4KICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSk7CiAg
ICAgY29uc3QgdWNoYXIqIGJpdHMgPSBpbWFnZS5iaXRzKCk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0
bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSktPnVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGJp
dHMsIHNvdXJjZVJlY3QsIEludFBvaW50Ojp6ZXJvKCksIGltYWdlLmJ5dGVzUGVyTGluZSgpKTsK
LSAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAx
LjBmLCAwLCBBbGxFZGdlcyk7CisgICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3Qs
IG1vZGVsVmlld01hdHJpeCwgMS4wZiwgQWxsRWRnZXMpOwogCiAjZWxpZiBVU0UoQ0FJUk8pCiAg
ICAgQ1N0cmluZyBjb3VudGVyU3RyaW5nID0gU3RyaW5nOjpudW1iZXIobnVtYmVyKS5hc2NpaSgp
OwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3TnVtYmVyKGlu
dCBudW1iZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2luCiAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogYml0cyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFj
ZSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJm
YWNlKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKS0+
dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoYml0cywgc291cmNlUmVjdCwgSW50UG9pbnQ6Onplcm8o
KSwgc3RyaWRlKTsKLSAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxW
aWV3TWF0cml4LCAxLjBmLCAwLCBBbGxFZGdlcyk7CisgICAgZHJhd1RleHR1cmUoKnRleHR1cmUs
IHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgMS4wZiwgQWxsRWRnZXMpOwogCiAgICAgY2Fp
cm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwogICAgIGNhaXJvX2Rlc3Ryb3koY3IpOwpAQCAt
Mzk0LDcgKzM5NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3TnVtYmVyKGludCBudW1i
ZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2luCiAjZW5kaWYKIH0KIAotdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1
cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFzaywgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNv
bnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWdu
ZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICghdGV4dHVyZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTQwMywyMCArNDAzLDE3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3
VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdMID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZSk7Ci0gICAgZHJhd1Rl
eHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJs
ZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2ss
IGV4cG9zZWRFZGdlcyk7CisgICAgZHJhd1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVH
TC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJsZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRS
ZWN0LCBtYXRyaXgsIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdz
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVk
Z2VzKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBi
b29sIHVzZVJlY3QgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0OwotICAgIGJvb2wg
bWFza2VkID0gISFtYXNrVGV4dHVyZTsKICAgICBib29sIHVzZUFudGlhbGlhc2luZyA9IG1fZW5h
YmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nCiAgICAgICAgICYmIGV4cG9zZWRFZGdlcyA9PSBB
bGxFZGdlcwogICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQodGFyZ2V0UmVjdCku
aXNSZWN0aWxpbmVhcigpOwogCiAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlv
bnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlOwotICAgIGlm
IChtYXNrZWQpCi0gICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
Ok1hc2s7CiAgICAgaWYgKHVzZVJlY3QpCiAgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06OlJlY3Q7CiAgICAgaWYgKG9wYWNpdHkgPCAxKQpAQCAtNDI2LDEyICs0
MjMsMTIgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEkKICAgICAgICAgZmxhZ3MgfD0gU2hvdWxk
QW50aWFsaWFzOwogICAgIH0KIAotICAgIGlmIChtYXNrZWQgfHwgdXNlQW50aWFsaWFzaW5nIHx8
IG9wYWNpdHkgPCAxKQorICAgIGlmICh1c2VBbnRpYWxpYXNpbmcgfHwgb3BhY2l0eSA8IDEpCiAg
ICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtPiBwcm9ncmFtOwogICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRh
KCkuZ2V0U2hhZGVyUHJvZ3JhbShvcHRpb25zKTsKLSAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRS
ZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlKTsKKyAgICBkcmF3VGV4
dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1
cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogfQogCiB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBDb2xvciYgY29sb3IpCkBA
IC01MDQsMTEgKzUwMSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhdyhjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtbwogICAgIHNoYWRlclBy
b2dyYW0tPnNldE1hdHJpeChzaGFkZXJQcm9ncmFtLT5tb2RlbFZpZXdNYXRyaXhMb2NhdGlvbigp
LCBtYXRyaXgpOwogICAgIHNoYWRlclByb2dyYW0tPnNldE1hdHJpeChzaGFkZXJQcm9ncmFtLT5w
cm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgZGF0YSgpLnByb2plY3Rpb25NYXRyaXgpOwogCi0g
ICAgaWYgKGZsYWdzICYgU2hvdWxkQmxlbmQpIHsKLSAgICAgICAgbV9jb250ZXh0M0QtPmJsZW5k
RnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVT
X1NSQ19BTFBIQSk7CisgICAgaWYgKGlzSW5NYXNrTW9kZSgpKSB7CisgICAgICAgIG1fY29udGV4
dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6OlpFUk8sIEdyYXBoaWNzQ29udGV4dDNE
OjpTUkNfQUxQSEEpOwogICAgICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZsYWdz
ICYgU2hvdWxkQmxlbmQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3Jh
cGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQ
SEEpOworICAgICAgICAgICAgbV9jb250ZXh0M0QtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
QkxFTkQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxl
KEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAgfQogCiAgICAgaWYgKGZsYWdzICYgU2hv
dWxkQW50aWFsaWFzKQogICAgICAgICBkcmF3RWRnZVRyaWFuZ2xlcyhzaGFkZXJQcm9ncmFtKTsK
QEAgLTUxNiw4ICs1MTgsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXcoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW8KICAgICAgICAgZHJh
d1VuaXRSZWN0KHNoYWRlclByb2dyYW0sIGRyYXdpbmdNb2RlKTsKIAogICAgIG1fY29udGV4dDNE
LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24o
KSk7CisgICAgbV9jb250ZXh0M0QtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBH
cmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSk7CisgICAgbV9jb250ZXh0M0Qt
PmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOwogfQotdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bSogcHJvZ3JhbSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFz
a1RleHR1cmUpCisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1
cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9w
YWNpdHkpCiB7CiAgICAgbV9jb250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlE
KCkpOwogICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMCk7CkBAIC01MzMsMTkgKzUzOCwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcgog
ICAgIGlmIChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKQogICAgICAgICBwYXR0ZXJuVHJhbnNm
b3JtLnRyYW5zbGF0ZSgwLCAtMSk7CiAKLQogICAgIHByb2dyYW0tPnNldE1hdHJpeChwcm9ncmFt
LT50ZXh0dXJlU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPm9wYWNpdHlMb2NhdGlvbigpLCBvcGFjaXR5
KTsKIAotICAgIGlmIChtYXNrVGV4dHVyZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCogbWFza1RleHR1cmVHTCA9IHN0YXRpY19jYXN0
PGNvbnN0IEJpdG1hcFRleHR1cmVHTCo+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbV9jb250ZXh0
M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKTsKLSAgICAgICAg
bV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
YXNrVGV4dHVyZUdMLT5pZCgpKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xaShwcm9n
cmFtLT5tYXNrTG9jYXRpb24oKSwgMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgfQotCi0gICAgaWYgKG9wYWNp
dHkgPCAxIHx8IG1hc2tUZXh0dXJlKQorICAgIGlmIChvcGFjaXR5IDwgMSkKICAgICAgICAgZmxh
Z3MgfD0gU2hvdWxkQmxlbmQ7CiAKICAgICBkcmF3KHJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJv
Z3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgZmxhZ3MpOwpAQCAtOTQzLDcg
KzkzOSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFw
VGV4dHVyZSYgc2FtcGxlciwgY29uc3QgQml0bWFwVGV4CiAKICAgICBwcmVwYXJlRmlsdGVyUHJv
Z3JhbShwcm9ncmFtLmdldCgpLCBmaWx0ZXIsIHBhc3MsIHNhbXBsZXIuY29udGVudFNpemUoKSwg
c3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oY29udGVudFRleHR1cmUpLmlkKCkp
OwogICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHNhbXBsZXIuY29u
dGVudFNpemUoKSk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0
KCksIHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHNhbXBsZXIpLmlkKCksIDAs
IEludFNpemUoMSwgMSksIHRhcmdldFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIDEsIDAp
OworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCBzdGF0aWNf
Y2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wmPihzYW1wbGVyKS5pZCgpLCAwLCBJbnRTaXplKDEs
IDEpLCB0YXJnZXRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAxKTsKIH0KIAogUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVy
ZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRl
eCBhMmI0N2VhOGNkZGYzNmU4ZmM4ZTZmNDA5MWRjOTI0N2Q5NDk1ODQxLi4zMDJmM2M0OWM4MDY1
OGUxYWI4YzhiMmNiYmMwZTcyZDgyMTgxNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC01NCw4
ICs1NCw4IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxlbWVudGF0aW9uCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0
aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2Vz
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVu
c2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1Rl
eHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREU7CkBAIC0x
MDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIFRleHR1cmVNYXBwZXJHTCgpOwogCi0gICAg
dm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKKyAgICB2b2lkIGRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIHVp
bnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0
eSk7CiAgICAgdm9pZCBkcmF3KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgR0Mz
RGVudW0gZHJhd2luZ01vZGUsIEZsYWdzKTsKIAogICAgIHZvaWQgZHJhd1VuaXRSZWN0KFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgR0MzRGVudW0gZHJhd2luZ01vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCAxZTQ5ZjliNmVjYTg4ZDZhN2NmZDkz
MTkxMjIyYzA0ODExMDM5ZDc1Li41MmE4NDg3OTJkNmZmNjZlNjQ3OWFhZGEyNTE0MjgxMzk4NmE1
ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpiZWdpbkNsaXAoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29uCiAjZW5kaWYKIH0KIAotdm9pZCBUZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRl
eHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1Rl
eHR1cmUsIHVuc2lnbmVkIC8qIGV4cG9zZWRFZGdlcyAqLykKK3ZvaWQgVGV4dHVyZU1hcHBlcklt
YWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIC8qIGV4cG9zZWRFZGdlcyAqLykKIHsKICAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBjdXJyZW50Q29udGV4dCgpOwogICAgIGlmICghY29u
dGV4dCkKQEAgLTEyMiwyMiArMTIyLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6
OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEYKIAogICAg
IGNvbnN0IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlciYgdGV4dHVyZUltYWdlQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyJj4odGV4dHVyZSk7CiAgICAg
SW1hZ2VCdWZmZXIqIGltYWdlID0gdGV4dHVyZUltYWdlQnVmZmVyLm1faW1hZ2UuZ2V0KCk7Ci0g
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNrZWRJbWFnZTsKLQotICAgIGlmIChtYXNrVGV4dHVy
ZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGNvbnN0IEJpdG1hcFRleHR1
cmVJbWFnZUJ1ZmZlciogbWFzayA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVJbWFn
ZUJ1ZmZlcio+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbWFza2VkSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKG1hc2tUZXh0dXJlLT5jb250ZW50U2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0KiBtYXNrQ29udGV4dCA9IG1hc2tlZEltYWdlLT5jb250ZXh0KCk7Ci0gICAgICAgIG1h
c2tDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIElu
dFBvaW50Ojp6ZXJvKCksIENvbXBvc2l0ZUNvcHkpOwotICAgICAgICBpZiAob3BhY2l0eSA8IDEp
IHsKLSAgICAgICAgICAgIG1hc2tDb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsKLSAgICAgICAg
ICAgIG9wYWNpdHkgPSAxOwotICAgICAgICB9Ci0gICAgICAgIG1hc2tDb250ZXh0LT5kcmF3SW1h
Z2VCdWZmZXIobWFzay0+bV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9p
bnQ6Onplcm8oKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0gICAgICAgIGltYWdlID0gbWFz
a2VkSW1hZ2UuZ2V0KCk7Ci0gICAgfQotCiAgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihpc0luTWFza01vZGUoKSA/IENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4gOiBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICBjb250ZXh0LT5zZXRBbHBoYShv
cGFjaXR5KTsKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAgIGNvbnRleHQtPmNvbmNhdDNE
VHJhbnNmb3JtKG1hdHJpeCk7CkBAIC0xNTUsNiArMTQxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXI6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
VHJhbnMKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihpc0luTWFza01vZGUoKSA/IENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4gOiBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5H
KQogICAgIGNvbnRleHQtPmNvbmNhdDNEVHJhbnNmb3JtKG1hdHJpeCk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCmluZGV4IDgwZTY5NDQwNTkwNTQ3NjA3ZTcwMzI2
MWU3OTMxNTVkZGUzYzIwZDUuLjM1ZjJiNDQ5ZDk2ZGMwYmM5YjdiMGFmMTk4YWMwNDBjZDk0ZDY4
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1h
cFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBG
bG9hdFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFw
VGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREUgeyBtX2N1cnJlbnRTdXJmYWNlID0gc3VyZmFjZTt9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDhhMmNjOTkyYjcxMTA2NjYxMDdjMWJl
MDMxM2JhNGFmOTZjNmZiYWYuLjEwYmVmMjYzYmQzZTE4ZGI2OTMzZDZjOWYzYzVlZDFiZDY3MjEz
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAKKyNpbmNs
dWRlICJSZWdpb24uaCIKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMjcsNyArMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHsKIHB1YmxpYzoKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gc3VyZmFjZTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzazsKICAg
ICBmbG9hdCBvcGFjaXR5OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAg
ICBJbnRTaXplIG9mZnNldDsKQEAgLTEwOCw4ICsxMDksNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMp
CiAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKTsK
IAogICAgIGZsb2F0IG9wYWNpdHkgPSBvcHRpb25zLm9wYWNpdHk7Ci0gICAgUmVmUHRyPEJpdG1h
cFRleHR1cmU+IG1hc2sgPSBvcHRpb25zLm1hc2s7Ci0KICAgICBpZiAobV9zdGF0ZS5zb2xpZENv
bG9yLmlzVmFsaWQoKSAmJiAhbV9zdGF0ZS5jb250ZW50c1JlY3QuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1NvbGlkQ29sb3IobV9zdGF0ZS5jb250ZW50
c1JlY3QsIHRyYW5zZm9ybSwgYmxlbmRXaXRoT3BhY2l0eShtX3N0YXRlLnNvbGlkQ29sb3IsIG9w
YWNpdHkpKTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycykKQEAgLTEyMCw3
ICsxMTksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlKSB7
CiAgICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX3N0YXRlLmNvbnRlbnRz
VmlzaWJsZSAmJiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVCghbGF5
ZXJSZWN0KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50VG9UZXh0
dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSwg
b3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLT5wYWludFRvVGV4
dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0s
IG9wYWNpdHkpOwogICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzKQogICAgICAg
ICAgICAgbV9iYWNraW5nU3RvcmUtPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBt
X3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbGF5ZXJS
ZWN0KCksIHRyYW5zZm9ybSk7CiAgICAgICAgIC8vIE9ubHkgZHJhdyByZXBhaW50IGNvdW50IGZv
ciB0aGUgbWFpbiBiYWNraW5nIHN0b3JlLgpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucykKIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKCFs
YXllclJlY3QoKS5pc0VtcHR5KCkpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9U
ZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3Qs
IHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIG1fY29udGVudHNMYXll
ci0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmNv
bnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5KTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hv
d0RlYnVnQm9yZGVycykKICAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+ZHJhd0JvcmRlcihv
cHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5k
ZWJ1Z0JvcmRlcldpZHRoLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtKTsKICAgICB9
CkBAIC0xNjYsODIgKzE2NSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxm
QW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgbwogICAgICAgICBv
cHRpb25zLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKIH0KIAotSW50UmVjdCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KCkKLXsKLSAgICAvLyBGSVhNRTogQWRk
IGFuIGludmVyc2UgdHJhbnNmb3JtIHRvIExheWVyVHJhbnNmb3JtLgotICAgIHJldHVybiBpbnRl
cm1lZGlhdGVTdXJmYWNlUmVjdChtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCkpOwotfQotCi1JbnRSZWN0IFRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFj
ZVJlY3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBJbnRSZWN0
IHJlY3Q7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbG9jYWxUcmFuc2Zvcm0gPSBUcmFuc2Zv
cm1hdGlvbk1hdHJpeChtYXRyaXgpLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5l
ZCgpKTsKLSAgICByZWN0ID0gZW5jbG9zaW5nSW50UmVjdChsb2NhbFRyYW5zZm9ybS5tYXBSZWN0
KGxheWVyUmVjdCgpKSk7Ci0gICAgaWYgKCFtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgJiYgIW1fc3Rh
dGUubWFza0xheWVyKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJl
bi5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHJlY3QudW5pdGUobV9jaGlsZHJlbltpXS0+aW50
ZXJtZWRpYXRlU3VyZmFjZVJlY3QobWF0cml4KSk7Ci0gICAgfQotCi0jaWYgRU5BQkxFKENTU19G
SUxURVJTKQotICAgIGlmIChtX2N1cnJlbnRGaWx0ZXJzLmhhc091dHNldHMoKSkgewotICAgICAg
ICBGaWx0ZXJPdXRzZXRzIG91dHNldHMgPSBtX2N1cnJlbnRGaWx0ZXJzLm91dHNldHMoKTsKLSAg
ICAgICAgSW50UmVjdCB1bmZpbHRlcmVkVGFyZ2V0UmVjdChyZWN0KTsKLSAgICAgICAgcmVjdC5t
b3ZlKHN0ZDo6bWF4KDAsIC1vdXRzZXRzLmxlZnQoKSksIHN0ZDo6bWF4KDAsIC1vdXRzZXRzLnRv
cCgpKSk7Ci0gICAgICAgIHJlY3QuZXhwYW5kKG91dHNldHMubGVmdCgpICsgb3V0c2V0cy5yaWdo
dCgpLCBvdXRzZXRzLnRvcCgpICsgb3V0c2V0cy5ib3R0b20oKSk7Ci0gICAgICAgIHJlY3QudW5p
dGUodW5maWx0ZXJlZFRhcmdldFJlY3QpOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKG1fc3Rh
dGUucmVwbGljYUxheWVyKQotICAgICAgICByZWN0LnVuaXRlKG1fc3RhdGUucmVwbGljYUxheWVy
LT5pbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChtYXRyaXgpKTsKLQotICAgIHJldHVybiByZWN0Owot
fQotCi1UZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRzTGF5ZXJDb3VudCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmNvdW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgY29uc3QKK2Jvb2wgVGV4
dHVyZU1hcHBlckxheWVyOjpzaG91bGRCbGVuZCgpIGNvbnN0CiB7Ci0gICAgaW50IHNlbGZMYXll
cnNXaXRoQ29udGVudHMgPSAobV9zdGF0ZS5kcmF3c0NvbnRlbnQgPyAxIDogMCkgKyAobV9jb250
ZW50c0xheWVyID8gMSA6IDApOwotICAgIGludCBwb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMg
PSBzZWxmTGF5ZXJzV2l0aENvbnRlbnRzICsgbV9jaGlsZHJlbi5zaXplKCk7Ci0KLSAgICBpZiAo
IXBvdGVudGlhbExheWVyc1dpdGhDb250ZW50cykKLSAgICAgICAgcmV0dXJuIE5vTGF5ZXJzV2l0
aENvbnRlbnQ7Ci0KLSAgICBpZiAocG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzID4gMSkKLSAg
ICAgICAgcmV0dXJuIE11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnRzOwotCi0gICAgaWYgKG1fY2hp
bGRyZW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gU2luZ2xlTGF5ZXJXaXRoQ29udGVudHM7
Ci0KLSAgICByZXR1cm4gbV9jaGlsZHJlbi5maXJzdCgpLT5jb3VudFBvdGVudGlhbExheWVyc1dp
dGhDb250ZW50cygpOwotfQorICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLWJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzaG91bGRQYWludFRvSW50
ZXJtZWRpYXRlU3VyZmFjZSgpIGNvbnN0Ci17CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAg
IGlmIChtX2N1cnJlbnRGaWx0ZXJzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKLSAgICBib29sIGhhc09wYWNpdHkgPSBtX2N1cnJlbnRPcGFjaXR5IDwgMC45OTsKLSAgICBi
b29sIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ID0gY291bnRQb3RlbnRpYWxMYXll
cnNXaXRoQ29udGVudHMoKSA9PSBNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50czsKLSAgICBib29s
IGhhc1JlcGxpY2EgPSAhIW1fc3RhdGUucmVwbGljYUxheWVyOwotICAgIGJvb2wgaGFzTWFzayA9
ICEhbV9zdGF0ZS5tYXNrTGF5ZXI7Ci0KLSAgICAvLyBXZSBkb24ndCB1c2UgdHdvLXBhc3MgYmxl
bmRpbmcgZm9yIHByZXNlcnZlcy0zZCwgdGhhdCdzIGluIHN5bmMgd2l0aCBTYWZhcmkuCi0gICAg
aWYgKG1fc3RhdGUucHJlc2VydmVzM0QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8v
IFdlIHNob3VsZCB1c2UgYW4gaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd2hlbiBibGVuZGluZyBzZXZl
cmFsIGl0ZW1zIHdpdGggYW4gYW5jZXN0b3Igb3BhY2l0eS4KLSAgICAvLyBUZXN0ZWQgYnkgY29t
cG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1vcGFjaXR5Lmh0bWwKLSAgICBpZiAoaGFz
T3BhY2l0eSAmJiAoY2FuSGF2ZU11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnQgfHwgaGFzUmVwbGlj
YSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gV2Ugc2hvdWxkIHVzZSBhbiBpbnRl
cm1lZGlhdGUgc3VyZmFjZSB3aXRoIGEgbWFza2VkIGFuY2VzdG9yLgotICAgIC8vIEluIHRoZSBj
YXNlIG9mIHJlcGxpY2FzIHRoZSBtYXNrIGlzIGFwcGxpZWQgYmVmb3JlIHJlcGxpY2F0aW5nLgot
ICAgIC8vIFRlc3RlZCBieSBjb21wb3NpdGluZy9tYXNrcy9tYXNrZWQtYW5jZXN0b3IuaHRtbAot
ICAgIGlmIChoYXNNYXNrICYmIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ICYmICFo
YXNSZXBsaWNhKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbV9jdXJyZW50T3BhY2l0eSA8IDEgfHwgbV9zdGF0ZS5tYXNrTGF5ZXIgfHwgKG1f
c3RhdGUucmVwbGljYUxheWVyICYmIG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1hc2tM
YXllcik7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjppc1Zpc2libGUoKSBjb25zdApA
QCAtMjYxLDExICsxOTQsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5k
Q2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgogewogICAgIGlmICht
X3N0YXRlLnJlcGxpY2FMYXllcikgewogICAgICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
IHJlcGxpY2FPcHRpb25zKG9wdGlvbnMpOwotICAgICAgICAvLyBXZSBjaG9vc2UgZWl0aGVyIHRo
ZSBjb250ZW50J3MgbWFzayBvciB0aGUgcmVwbGljYSdzIG1hc2suCi0gICAgICAgIC8vIEZJWE1F
OiBibGVuZCB0aGUgdHdvIGlmIGJvdGggZXhpc3QuCi0gICAgICAgIGlmIChtX3N0YXRlLnJlcGxp
Y2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgICAgICByZXBsaWNhT3B0aW9ucy5t
YXNrID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCk7
Ci0KICAgICAgICAgcmVwbGljYU9wdGlvbnMudHJhbnNmb3JtCiAgICAgICAgICAgICAubXVsdGlw
bHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKQog
ICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVy
c2UoKSk7CkBAIC0yODUsNiArMjEzLDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRB
bmltYXRlZE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKICAgICBtX2N1cnJlbnRPcGFjaXR5ID0gb3Bh
Y2l0eTsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBlckxheWVyOjpyZXBs
aWNhVHJhbnNmb3JtKCkKK3sKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgobV9zdGF0
ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKS5tdWx0aXBseSht
X2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOworfQorCiAjaWYgRU5BQkxF
KENTU19GSUxURVJTKQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGVkRmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewpAQCAtMzA3LDcgKzI0MCw3IEBA
IHN0YXRpYyBib29sIHNob3VsZEtlZXBDb250ZW50VGV4dHVyZShjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMsIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEJpdG1hcFRleHR1cmUqIHNvdXJjZSwg
SW50UmVjdCYgdGFyZ2V0UmVjdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFw
cGx5RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBCaXRtYXBUZXh0dXJlKiBzb3VyY2UpCiB7CiAgICAgaWYgKCFmaWx0
ZXJzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHNvdXJjZTsKQEAgLTMxNyw1MSArMjUwLDE4NCBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycywgVAogfQogI2VuZGlmCiAKLXZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQorc3RhdGljIHZvaWQgcmVzb2x2ZU92ZXJsYXBzKFJlZ2lvbiBuZXdSZWdpb24sIFJl
Z2lvbiYgb3ZlcmxhcFJlZ2lvbiwgUmVnaW9uJiBub25PdmVybGFwUmVnaW9uKQogewotICAgIGlm
ICghaXNWaXNpYmxlKCkpCisgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdpb24obmV3UmVnaW9uKTsK
KyAgICBuZXdPdmVybGFwUmVnaW9uLmludGVyc2VjdChub25PdmVybGFwUmVnaW9uKTsKKyAgICBu
b25PdmVybGFwUmVnaW9uLnN1YnRyYWN0KG5ld092ZXJsYXBSZWdpb24pOworICAgIG92ZXJsYXBS
ZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgbmV3UmVnaW9uLnN1YnRyYWN0KG92
ZXJsYXBSZWdpb24pOworICAgIG5vbk92ZXJsYXBSZWdpb24udW5pdGUobmV3UmVnaW9uKTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVPdmVybGFwUmVnaW9ucyhSZWdpb24m
IG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lvbiwgYm9vbCBhbHdheXNSZXNv
bHZlU2VsZk92ZXJsYXApCit7CisgICAgaWYgKCFtX3N0YXRlLnZpc2libGUgfHwgIW1fc3RhdGUu
Y29udGVudHNWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBvcGFjaXR5ID0g
b3B0aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gbWFza1RleHR1cmUgPSBtX3N0YXRlLm1hc2tMYXllciA/IG1fc3RhdGUubWFza0xheWVy
LT50ZXh0dXJlKCkgOiAwOworICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CisgICAgaWYgKG1f
YmFja2luZ1N0b3JlIHx8IG1fc3RhdGUubWFza3NUb0JvdW5kcyB8fCBtX3N0YXRlLm1hc2tMYXll
ciB8fCBoYXNGaWx0ZXJzKCkpCisgICAgICAgIGJvdW5kaW5nUmVjdCA9IGxheWVyUmVjdCgpOwor
ICAgIGVsc2UgaWYgKG1fY29udGVudHNMYXllciB8fCBtX3N0YXRlLnNvbGlkQ29sb3IuYWxwaGEo
KSkKKyAgICAgICAgYm91bmRpbmdSZWN0ID0gbV9zdGF0ZS5jb250ZW50c1JlY3Q7CiAKLSAgICBU
ZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKLSAgICBwYWlu
dE9wdGlvbnMubWFzayA9IG1hc2tUZXh0dXJlLmdldCgpOworI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKKyAgICBpZiAobV9jdXJyZW50RmlsdGVycy5oYXNPdXRzZXRzKCkpIHsKKyAgICAgICAgRmls
dGVyT3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50RmlsdGVycy5vdXRzZXRzKCk7CisgICAgICAg
IEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QoYm91bmRpbmdSZWN0KTsKKyAgICAgICAgYm91
bmRpbmdSZWN0Lm1vdmUoc3RkOjptYXgoMCwgLW91dHNldHMubGVmdCgpKSwgc3RkOjptYXgoMCwg
LW91dHNldHMudG9wKCkpKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LmV4cGFuZChvdXRzZXRzLmxl
ZnQoKSArIG91dHNldHMucmlnaHQoKSwgb3V0c2V0cy50b3AoKSArIG91dHNldHMuYm90dG9tKCkp
OworICAgICAgICBib3VuZGluZ1JlY3QudW5pdGUodW5maWx0ZXJlZFRhcmdldFJlY3QpOworICAg
IH0KKyNlbmRpZgorCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYU1hdHJpeDsKKyAg
ICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKKyAgICAgICAgcmVwbGljYU1hdHJpeCA9IHJl
cGxpY2FUcmFuc2Zvcm0oKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHJlcGxpY2FNYXRy
aXgubWFwUmVjdChib3VuZGluZ1JlY3QpKTsKKyAgICB9CiAKLSAgICBpZiAoIXNob3VsZFBhaW50
VG9JbnRlcm1lZGlhdGVTdXJmYWNlKCkpIHsKLSAgICAgICAgcGFpbnRPcHRpb25zLm9wYWNpdHkg
PSBvcGFjaXR5OwotICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKHBhaW50
T3B0aW9ucyk7CisgICAgYm91bmRpbmdSZWN0ID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkubWFwUmVjdChib3VuZGluZ1JlY3QpOworCisgICAgLy8gQ291bnQgYWxsIG1hc2tzIGFuZCBm
aWx0ZXJzIGFzIG92ZXJsYXAgbGF5ZXJzLgorICAgIGlmIChoYXNGaWx0ZXJzKCkgfHwgbV9zdGF0
ZS5tYXNrTGF5ZXIgfHwgKG1fc3RhdGUucmVwbGljYUxheWVyICYmIG1fc3RhdGUucmVwbGljYUxh
eWVyLT5tX3N0YXRlLm1hc2tMYXllcikpIHsKKyAgICAgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdp
b24oZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ1JlY3QpKTsKKyAgICAgICAgbm9uT3ZlcmxhcFJl
Z2lvbi5zdWJ0cmFjdChuZXdPdmVybGFwUmVnaW9uKTsKKyAgICAgICAgb3ZlcmxhcFJlZ2lvbi51
bml0ZShuZXdPdmVybGFwUmVnaW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8v
IFByZXBhcmUgYSBzdXJmYWNlIHRvIHBhaW50IGludG8uCi0gICAgLy8gV2UgcGFpbnQgaW50byB0
aGUgc3VyZmFjZSBpZ25vcmluZyB0aGUgb3BhY2l0eS90cmFuc2Zvcm0gb2YgdGhlIGN1cnJlbnQg
bGF5ZXIuCi0gICAgSW50UmVjdCBzdXJmYWNlUmVjdCA9IGludGVybWVkaWF0ZVN1cmZhY2VSZWN0
KCk7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2UgPSBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc3VyZmFjZVJlY3Quc2l6ZSgpKTsKLSAgICBw
YWludE9wdGlvbnMuc3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVy
LT5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKLSAgICBwYWludE9wdGlvbnMub3BhY2l0eSA9
IDE7CisgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdpb247CisgICAgUmVnaW9uIG5ld05vbk92ZXJs
YXBSZWdpb24oZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ1JlY3QpKTsKKworICAgIGlmICghbV9z
dGF0ZS5tYXNrc1RvQm91bmRzKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9j
aGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBj
aGlsZCA9IG1fY2hpbGRyZW5baV07CisgICAgICAgICAgICBib29sIGFsd2F5c1Jlc29sdmVTZWxm
T3ZlcmxhcEZvckNoaWxkcmVuID0gZmFsc2U7CisgICAgICAgICAgICBjaGlsZC0+Y29tcHV0ZU92
ZXJsYXBSZWdpb25zKG5ld092ZXJsYXBSZWdpb24sIG5ld05vbk92ZXJsYXBSZWdpb24sIGFsd2F5
c1Jlc29sdmVTZWxmT3ZlcmxhcEZvckNoaWxkcmVuKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikgeworICAgICAgICBuZXdPdmVybGFwUmVnaW9uLnVu
aXRlKHJlcGxpY2FNYXRyaXgubWFwUmVjdChuZXdPdmVybGFwUmVnaW9uLmJvdW5kcygpKSk7Cisg
ICAgICAgIFJlZ2lvbiByZXBsaWNhUmVnaW9uKHJlcGxpY2FNYXRyaXgubWFwUmVjdChuZXdOb25P
dmVybGFwUmVnaW9uLmJvdW5kcygpKSk7CisgICAgICAgIHJlc29sdmVPdmVybGFwcyhyZXBsaWNh
UmVnaW9uLCBuZXdPdmVybGFwUmVnaW9uLCBuZXdOb25PdmVybGFwUmVnaW9uKTsKKyAgICB9CiAK
LSAgICBwYWludE9wdGlvbnMudHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkuaW52ZXJzZSgpOwotICAgIHBhaW50T3B0aW9ucy5vZmZzZXQgPSAtSW50U2l6ZShzdXJmYWNl
UmVjdC54KCksIHN1cmZhY2VSZWN0LnkoKSk7CisgICAgaWYgKCFhbHdheXNSZXNvbHZlU2VsZk92
ZXJsYXAgJiYgc2hvdWxkQmxlbmQoKSkgeworICAgICAgICBuZXdOb25PdmVybGFwUmVnaW9uLnVu
aXRlKG5ld092ZXJsYXBSZWdpb24pOworICAgICAgICBuZXdPdmVybGFwUmVnaW9uID0gUmVnaW9u
KCk7CisgICAgfQogCi0gICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShwYWludE9w
dGlvbnMpOworICAgIG92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAg
cmVzb2x2ZU92ZXJsYXBzKG5ld05vbk92ZXJsYXBSZWdpb24sIG92ZXJsYXBSZWdpb24sIG5vbk92
ZXJsYXBSZWdpb24pOworfQogCi0gICAgLy8gSWYgd2UgcGFpbnRlZCB0aGUgcmVwbGljYSwgdGhl
IG1hc2sgaXMgYWxyZWFkeSBhcHBsaWVkIHNvIHdlIGRvbid0IG5lZWQgdG8gcGFpbnQgaXQgYWdh
aW4uCi0gICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKQotICAgICAgICBtYXNrVGV4dHVyZSA9
IDA7Cit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNv
bnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgUmVnaW9uIG92
ZXJsYXBSZWdpb247CisgICAgUmVnaW9uIG5vbk92ZXJsYXBSZWdpb247CisgICAgY29tcHV0ZU92
ZXJsYXBSZWdpb25zKG92ZXJsYXBSZWdpb24sIG5vbk92ZXJsYXBSZWdpb24pOworICAgIGlmIChv
dmVybGFwUmVnaW9uLmlzRW1wdHkoKSkgeworICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldp
dGhSZXBsaWNhKG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9y
PEludFJlY3Q+IHJlY3RzID0gbm9uT3ZlcmxhcFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcmVjdHNbaV0pOwor
ICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKG9wdGlvbnMpOworICAgICAg
ICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKKyAgICB9CisKKyAgICByZWN0cyA9
IG92ZXJsYXBSZWdpb24ucmVjdHMoKTsKKyAgICBJbnRTaXplIG1heFRleHR1cmVTaXplID0gb3B0
aW9ucy50ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCByZWN0ID0gcmVj
dHNbaV07CisgICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyB4
ICs9IG1heFRleHR1cmVTaXplLndpZHRoKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50IHkgPSBy
ZWN0LnkoKTsgeSA8IHJlY3QubWF4WSgpOyB5ICs9IG1heFRleHR1cmVTaXplLmhlaWdodCgpKSB7
CisgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdChJbnRQb2ludCh4LCB5KSwgbWF4VGV4
dHVyZVNpemUpOworICAgICAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChyZWN0KTsKKyAg
ICAgICAgICAgICAgICBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKG9wdGlvbnMsIHRpbGVS
ZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KIAordm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQoreworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFza01vZGUodHJ1ZSk7
CisgICAgcGFpbnRTZWxmKG9wdGlvbnMpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0
TWFza01vZGUoZmFsc2UpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZy
b21Qb29sKHNpemUpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3Vy
ZmFjZS5nZXQoKSk7CisgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucyk7CisgICAgaWYg
KG1fc3RhdGUubWFza0xheWVyKQorICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNr
KG9wdGlvbnMpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBzdXJmYWNlID0gYXBwbHlG
aWx0ZXJzKG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5n
ZXQoKSwgc3VyZmFjZVJlY3QpOworICAgIGlmICghbV9jdXJyZW50RmlsdGVycy5pc0VtcHR5KCkp
CisgICAgICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9jdXJyZW50RmlsdGVycywgb3B0aW9u
cy50ZXh0dXJlTWFwcGVyLCBzdXJmYWNlLmdldCgpKTsKICNlbmRpZgorICAgIG9wdGlvbnMudGV4
dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CisgICAgcmV0dXJuIHN1cmZh
Y2U7Cit9CiAKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbW1pdFN1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQor
ewogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNl
LmdldCgpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAg
dGFyZ2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25z
Lm9mZnNldC5oZWlnaHQoKSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMu
dHJhbnNmb3JtKTsKLSAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNm
b3JtLmNvbWJpbmVkKCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUo
KnN1cmZhY2UuZ2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlh
dGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FTdXJm
YWNlOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYWluU3VyZmFjZTsKKyAgICBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKKyAgICBwYWludE9wdGlv
bnMub2Zmc2V0ID0gLUludFNpemUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICBwYWludE9wdGlv
bnMub3BhY2l0eSA9IDE7CisgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KCk7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAgIHBh
aW50T3B0aW9ucy50cmFuc2Zvcm0gPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIHJlcGxp
Y2FTdXJmYWNlID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJlY3Quc2l6ZSgpKTsK
KyAgICAgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7
CisgICAgICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCisg
ICAgICAgICAgICBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5
TWFzayhwYWludE9wdGlvbnMpOworICAgIH0KIAotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+
ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0s
IG9wYWNpdHksIG1hc2tUZXh0dXJlLmdldCgpKTsKKyAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYg
b3B0aW9ucy5vcGFjaXR5ID09IDEpCisgICAgICAgIHJlcGxpY2FTdXJmYWNlID0gY29tbWl0U3Vy
ZmFjZShvcHRpb25zLCByZXBsaWNhU3VyZmFjZSwgcmVjdCwgMSk7CisKKyAgICBtYWluU3VyZmFj
ZSA9IHBhaW50SW50b1N1cmZhY2UocGFpbnRPcHRpb25zLCByZWN0LnNpemUoKSk7CisgICAgaWYg
KHJlcGxpY2FTdXJmYWNlKSB7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1
cmZhY2UocmVwbGljYVN1cmZhY2UuZ2V0KCkpOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXItPmRyYXdUZXh0dXJlKCptYWluU3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgcmVjdC5zaXplKCkpKTsKKyAgICAgICAgbWFpblN1cmZhY2UgPSByZXBsaWNhU3Vy
ZmFjZTsKKyAgICB9CisKKyAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIG1haW5TdXJmYWNlLCBy
ZWN0LCBvcHRpb25zLm9wYWNpdHkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFp
bnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3sK
KyAgICBpZiAoIWlzVmlzaWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3Vs
ZEJsZW5kKCkpIHsKKyAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShvcHRp
b25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOworICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0g
b3B0aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKKyAgICBwYWludFVzaW5nT3Zlcmxh
cFJlZ2lvbnMocGFpbnRPcHRpb25zKTsKIH0KIAogVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVy
ZU1hcHBlckxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2MWZiODI3NjcwODYw
M2UxMTBmYWNlZDQxODlkYjdkYTBiYzAzMWZhLi42MDJiMmMzOTQxNTUyZTViZDFlNGZhMWFiYzgz
ZDkyY2MwNjA0ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0zMSw2ICszMSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVnaW9uOwogY2xhc3MgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwogCkBA
IC03Myw2ICs3NCwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZv
aWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKKworICAgIGJv
b2wgaGFzRmlsdGVycygpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAg
ICAgICAgcmV0dXJuICFtX2N1cnJlbnRGaWx0ZXJzLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgc2V0RGVidWdWaXN1YWxz
KGJvb2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZs
b2F0IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKICAgICB2b2lk
IHNldFJlcGFpbnRDb3VudChpbnQpOwogICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllciopOwpAQCAtOTIsOCArMTAzLDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OwogICAg
IHZvaWQgY29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKTsKLSAgICBJbnRSZWN0IGludGVybWVk
aWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgSW50UmVj
dCBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpOwogCiAgICAgc3RhdGljIGludCBjb21wYXJlR3Jh
cGhpY3NMYXllcnNaVmFsdWUoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYik7CiAgICAgc3Rh
dGljIHZvaWQgc29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqID4mIGFycmF5
LCBpbnQgZmlyc3QsIGludCBsYXN0KTsKQEAgLTEwMSwxNSArMTEwLDIxIEBAIHByaXZhdGU6CiAg
ICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5n
U3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQg
YWRqdXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQ
b3NpdGlvbkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29u
c3Q7Ci0KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CiAgICAg
dm9pZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21Q
YXJlbnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAKKyAgICB2b2lkIGNvbXB1
dGVPdmVybGFwUmVnaW9ucyhSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3Zlcmxh
cFJlZ2lvbiwgYm9vbCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXAgPSB0cnVlKTsKKwogICAgIHZv
aWQgcGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOworICAg
IHZvaWQgcGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMmKTsKKyAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICB2
b2lkIHBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHBhaW50U2VsZihjb25zdCBUZXh0
dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGlsZHJlbihj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRD
aGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKKyAg
ICB2b2lkIGFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAKICAg
ICAvLyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QW5pbWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsK
QEAgLTEyNSw4ICsxNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBNdWx0aXBsZUxheWVyc1dpdGhD
b250ZW50cwogICAgIH07CiAKLSAgICBDb250ZW50c0xheWVyQ291bnQgY291bnRQb3RlbnRpYWxM
YXllcnNXaXRoQ29udGVudHMoKSBjb25zdDsKLSAgICBib29sIHNob3VsZFBhaW50VG9JbnRlcm1l
ZGlhdGVTdXJmYWNlKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRCbGVuZCgpIGNvbnN0OwogCiAg
ICAgaW5saW5lIEZsb2F0UmVjdCBsYXllclJlY3QoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5
ZTY2ZWU0N2RlZjgxMDExNS4uYjliYWRlZDMzNDczODFjYzBkYjI5ZjIxYzJhYWVkYjAwY2Y5MDU5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0
bWFwVGV4dHVyZSogbWFzayA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBm
bG9hdCBvcGFjaXR5ID0gMS4wKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDhj
MTMxZTYxOWUxYWUwMTc3MWMwY2ViMjU0MTUyNWRjYmU2MjU5MTcuLjUzZWUyZjBkZGE0ZDU4OWVj
NTk3MDRlYjM2NTczYzg3NDVjOWM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtLmNwcApAQCAtMTI3LDcgKzEyNyw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB2ZXJ0
ZXhUZW1wbGF0ZSA9CiAgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsK
IAogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2ZWMy
IHZfbWFza1RleENvb3JkOwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFzOwogCiAg
ICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWMyIGR1bW15UGFyYW1ldGVyKSB7IH0KQEAgLTE3Niw4
ICsxNzUsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4VGVtcGxhdGUgPQogICAgICAgICAg
ICAgLy8gVGhlIHRleHR1cmUgcG9zaXRpb24gbmVlZHMgdG8gYmUgY2xhbXBlZCB0byAwLi4xIGJl
Zm9yZSB0aGUgdGV4dHVyZSBtYXRyaXggaXMgYXBwbGllZC4KICAgICAgICAgICAgIHZlYzQgY2xh
bXBlZFBvc2l0aW9uID0gY2xhbXAodmVjNChwb3NpdGlvbiwgMC4sIDEuKSwgMC4sIDEuKTsKICAg
ICAgICAgICAgIHZfdGV4Q29vcmQgPSAodV90ZXh0dXJlU3BhY2VNYXRyaXggKiBjbGFtcGVkUG9z
aXRpb24pLnh5OwotCi0gICAgICAgICAgICB2X21hc2tUZXhDb29yZCA9IHBvc2l0aW9uOwogICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiB1X21vZGVsVmlld01h
dHJpeCAqIHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgICAgICAgIH0KICAgICApOwpAQCAtMjA0
LDEyICsyMDEsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAg
IFNUUklOR0lGWSgKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgIHVu
aWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOwotICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBz
X21hc2s7CiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfY29udGVudFRleHR1cmU7CiAgICAg
ICAgIHVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5OwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50
aWFsaWFzOwogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWlu
ZyB2ZWMyIHZfbWFza1RleENvb3JkOwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfZmlsdGVyQW1v
dW50OwogICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwogICAgICAgICB1bmlmb3Jt
IHZlYzIgdV9zaGFkb3dPZmZzZXQ7CkBAIC0yMjMsNyArMjE4LDYgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZShpbm91dCB2
ZWM0IGNvbG9yKSB7IGNvbG9yID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdl90ZXhDb29y
ZCk7IH0KICAgICAgICAgdm9pZCBhcHBseU9wYWNpdHkoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xv
ciAqPSB1X29wYWNpdHk7IH0KICAgICAgICAgdm9pZCBhcHBseUFudGlhbGlhc2luZyhpbm91dCB2
ZWM0IGNvbG9yKSB7IGNvbG9yICo9IGFudGlhbGlhcygpOyB9Ci0gICAgICAgIHZvaWQgYXBwbHlN
YXNrKGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdGV4dHVyZTJEKHNfbWFzaywgdl9tYXNr
VGV4Q29vcmQpLmE7IH0KIAogICAgICAgICB2b2lkIGFwcGx5R3JheXNjYWxlRmlsdGVyKGlub3V0
IHZlYzQgY29sb3IpCiAgICAgICAgIHsKQEAgLTMzNCw3ICszMjgsNiBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgICAgICAgICBhcHBseVRleHR1cmVJZk5lZWRl
ZChjb2xvcik7CiAgICAgICAgICAgICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xvcik7CiAg
ICAgICAgICAgICBhcHBseUFudGlhbGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAg
IGFwcGx5TWFza0lmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5T3BhY2l0eUlmTmVl
ZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5R3JheXNjYWxlRmlsdGVySWZOZWVkZWQoY29s
b3IpOwogICAgICAgICAgICAgYXBwbHlTZXBpYUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKQEAgLTM2
Miw3ICszNTUsNiBAQCBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFBhc3NSZQogICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhSZWN0KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU29saWRDb2xv
cik7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKE9wYWNpdHkpOwotICAgIFNFVF9BUFBM
SUVSX0ZST01fT1BUSU9OUyhNYXNrKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoQW50
aWFsaWFzaW5nKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoR3JheXNjYWxlRmlsdGVy
KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU2VwaWFGaWx0ZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCAwMzdlN2Q2OWQ5YTg3NzRmMWQzMDYx
YTc3OTMxYTJjMDNjOWRjMTQ2Li4zMmZhZTExNmNiZmEyZjgzNDliZDI3YjNhYzRiZTk5MzY5ZGNi
NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaApAQCAtNDIsNyAr
NDIsNiBAQCBwdWJsaWM6CiAgICAgICAgIFJlY3QgICAgICAgICAgICAgPSAxTCA8PCAxLAogICAg
ICAgICBTb2xpZENvbG9yICAgICAgID0gMUwgPDwgMiwKICAgICAgICAgT3BhY2l0eSAgICAgICAg
ICA9IDFMIDw8IDMsCi0gICAgICAgIE1hc2sgICAgICAgICAgICAgPSAxTCA8PCA0LAogICAgICAg
ICBBbnRpYWxpYXNpbmcgICAgID0gMUwgPDwgNSwKICAgICAgICAgR3JheXNjYWxlRmlsdGVyICA9
IDFMIDw8IDYsCiAgICAgICAgIFNlcGlhRmlsdGVyICAgICAgPSAxTCA8PCA3LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzcxNDJk
NzVkZDVhNzYzZjBiNjIyYTU2MzY1YWQ5YzIyZTgzOWUxMi4uOGQzODc3NmU5YjVmNTMzYTYwNWU3
M2NhNzZlMzNjYWJmZDk4YjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmUuY3BwCkBAIC00NCwxMCArNDQsMTAgQEAgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyU3Vy
ZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
KQordm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFj
aXR5KQogewogICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1
cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRy
YW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWlu
dFRvVGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9w
YWNpdHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRjZDEwMTRmYzg1ZWEzYTdlOTcx
YzhkZTA1ZjQxYTRmZDRiZDI2YzcuLjc5M2M2MWRjMzQyZmYwMjYzNTI3ODc0YzcxMjBkMzVlYjI4
MGM1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFj
ZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5l
ZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZpcnR1YWwgflRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlLmNwcAppbmRleCA5YjQwNTEzMWFiMGU3OTMyZmU5Yzg3ZmRiYzI1ODQ0Y2ViNTI0NDRi
Li4wNzA1N2VhMTQ5MTNlZWUwNjE1OWQ5NDZiNjQxYjJkMTM1NjEwYmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxl
Ojp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xh
eQogICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5
ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAot
dm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwg
Qml0bWFwVGV4dHVyZSogbWFzaywgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICh0ZXh0dXJlKCkuZ2V0KCkpCi0gICAg
ICAgIHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlKCkuZ2V0KCksIHJlY3QoKSwg
dHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgICAgICB0ZXh0dXJl
TWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwg
b3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGUuaAppbmRleCBhY2VmNjE4ZWQzZDYwZTMyYTc2M2JmNDBmMTVmY2YyYTM0
NzdlZThkLi4yYjQ1ZDkwMDc3OThlYjQ3MTI4ZDA3YzQ0OWQ3ZDBhNTgwOGZlZDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRt
YXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFn
ZURhdGEpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNz
TGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFn
IFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJp
dG1hcFRleHR1cmUqLCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJl
TWFwcGVyVGlsZSgpIHsgfQogCiAgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlLmNwcAppbmRleCA4MDk3OTIyMjY3ZTk5MGE4MTBmMjAyZDQ1N2E2MmZhZjlmYjg4ZDBi
Li40YTYwYzgxNTcyMjI4YTVkM2RmNThlYTUwMDRhYjNhMDNmN2FhNTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDcsMTIgKzQ3LDEy
IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5KQogewogICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1h
cHBlcik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFu
c2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RpbGVzW2ld
LnBhaW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBj
YWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKKyAg
ICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwg
b3BhY2l0eSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVj
dCgpKSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9y
ZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xv
ciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCA5MzliMTg1ZDdlYTM1NGYzYmI1Mzk4NWI4YTU2
N2U5MTY3NzY0ZmViLi5mYzFmOWJmNjdmNjExZmViOGM1YmRlNGY3ZjdmOTJiY2ZiNGNhMDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVN
YXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJ
bnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEw
NWMxY2JmYTU1ZGJlZmVmYjMyYzM2ZDg1ZjczM2JiYzZkZjM3NDguLmNkNWExMmQ5NjdiNjUwYjk5
MDhkZTEwMmM0YzI5MTMzYTUyZTBiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTA2LDEwICsxMDYsMTAgQEAgdm9p
ZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUp
CiAgICAgbV9wZW5kaW5nU2l6ZSA9IHNpemU7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxl
Kj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpw
YWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxl
cywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRp
bGVzW2ldLT5wYWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNh
bGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZXNbaV0tPnJlY3QoKSkpOworICAgICAg
ICB0aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBjYWxj
dWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKIH0KIAogVHJh
bnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNm
b3JtRm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpCkBAIC0xMTcsNyArMTE3LDcg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVk
VHJhbnNmb3JtRm9yUmVjdChjb25zdCBGbG8KICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KTsKIH0KIAotdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQor
dm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAg
IGlmIChtX3RpbGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyLDggKzE1Miw4
IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgLy8gU2VlIFRpbGVkQmFja2luZ1N0b3Jl
LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3Jt
ICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogCi0gICAgcGFpbnRUaWxl
c1RvVGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRq
dXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7Ci0gICAgcGFpbnRUaWxlc1Rv
VGV4dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNm
b3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIocHJldmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3Jt
LCBvcGFjaXR5LCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNU
b1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCgp
KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJv
cmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDgxOTg5NWY0OTJhZTVhY2VkZTdkMzlhZWUxYzRk
ODdiYzI2Y2NmYjkuLjQyMDE0NTRiZDdmNzVjMzYzYTI2OGI3MmIzODc1MTFkZTBlNzFhN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25z
KFRleHR1cmVNYXBwZXIqKTsKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSBjb25zdDsKICAgICB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKik7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBm
bG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKQEAgLTcwLDcg
KzcwLDcgQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAgICAg
IDogbV9zY2FsZSgxLikKICAgICB7IH0KLSAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mLCBUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IEZsb2F0UmVj
dCYpOworICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1h
cHBlclRpbGUqPiYsIFRleHR1cmVNYXBwZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1
c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgRmxvYXRSZWN0IHJl
Y3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUp
OyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA5ZmIyYzQ5YWNhNzIzMmY3MjljMjhlYjcyY2YwODY3ZGE1OTY1NGY2Li42
ZTFjYWI1ZWRjZWZjY2NmYWQwYzkwMDQ4OWI2ZjY5MDdhZGM0ZjBkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTMtMDItMjUgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbVGV4bWFwXSBUZXh0dXJlTWFwcGVyIGlzIHRvbyBlYWdlciB0byB1c2UgaW50ZXJt
ZWRpYXRlIHN1cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTA3NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBhIGZldyByZWYtdGVzdHMgZm9yIGNvcnJlY3Qgb3ZlcmxhcCBibGVuZGlu
ZyBpbiBhY2NlbGVhcmF0ZWQgY29tcG9zaXRpbmcgbW9kZS4gCisgICAgICAgIFNraXBwaW5nIHRo
ZSBuZXcgcmVmbGVjdGlvbiB0ZXN0IG9uIE1hYy9DaHJvbWl1bSBzaW5jZSBpdCdzIG5vdCByZW5k
ZXJlZAorICAgICAgICBwcm9wZXJseSBvbiB0aG9zZSBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBj
b21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2No
aWxkcmVuLW9wYWNpdHktaHVnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9v
dmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVu
LW9wYWNpdHktbm8tb3ZlcmxhcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9v
dmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1v
cGFjaXR5LWh1Z2UuaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMjYgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBVc2VyLUFnZW50IGhlYWRl
ciBpbiBvcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXJzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRy
ZW4tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk5MDVlOWE5ODlhZDI2
OWZlMzYxMmIyMmQzOTQxMTQzZTFhYTRhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhl
YWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNj
cmVlbiI+CisgICAgICAKKyAgICAgIGRpdiB7CisgICAgICAgIC13ZWJraXQtYm94LXNpemluZzog
Ym9yZGVyLWJveDsKKyAgICAgIH0KKyAgICAgIC5zb2xpZCB7CisgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDIxNTBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICB9CisKKyAgICAgIC5vcGFj
aXR5IHsgb3BhY2l0eTogLjU7IH0KKyAgICAgIC5hIHsgdG9wOiAwcHg7IGxlZnQ6IDBweDt9Cisg
ICAgICAuYiB7IHRvcDogMTAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAKKyAgICAgIC5jb21wb3Np
dGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgICB9
CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisKKyAgICA8L3N0eWxlPgorICA8
L2hlYWQ+CisgICAgPGRpdiBjbGFzcz0ib3BhY2l0eSI+CisgICAgPGRpdiBjbGFzcz0ic29saWQg
YSI+MTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGIiPjI8L2Rpdj4KKyAgPC9kaXY+CisK
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ3MWIwNjRlZjlmNWIwZGFiZGYzZTA5NzA1OGFhMTI4MzcwYzhjNGUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktaHVnZS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1l
ZGlhPSJzY3JlZW4iPgorICAgICAgCisgICAgICBkaXYgeworICAgICAgICAtd2Via2l0LWJveC1z
aXppbmc6IGJvcmRlci1ib3g7CisgICAgICB9CisgICAgICAuc29saWQgeworICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAyMTUwcHg7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgfQorCisgICAg
ICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9CisgICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAw
cHg7fQorICAgICAgLmIgeyB0b3A6IDEwMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgCisgICAgICAu
Y29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwor
ICAgICAgfQorCisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisgICAgPC9zdHls
ZT4KKyAgPC9oZWFkPgorICAgIDxkaXYgY2xhc3M9Im9wYWNpdHkgY29tcG9zaXRlZCI+CisgICAg
PGRpdiBjbGFzcz0ic29saWQgYSBjb21wb3NpdGVkIj4xPC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
c29saWQgYiBjb21wb3NpdGVkIj4yPC9kaXY+CisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktbm8tb3ZlcmxhcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
b3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mOWJkNWYxMzZkMjZiNDYzZDMwOGE3M2VmNmE1ZjAwMmViODRjMjg3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGlu
Zy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDM2
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cisg
ICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAg
ZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgfQor
ICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworICAgICAgfQorCisgICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9Cisg
ICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDIwMHB4OyBs
ZWZ0OiAyMDBweDt9CisgICAgICAuYyB7IHRvcDogMjAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAu
ZCB7IHRvcDogMHB4OyBsZWZ0OiAyMDBweDt9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5n
OiAwOyB9CisgICAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0
cmFuc2xhdGVaKDApOworICAgICAgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAgIDxk
aXYgY2xhc3M9Im9wYWNpdHkiPgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgYSI+MTwvZGl2Pgor
ICAgICAgPGRpdiBjbGFzcz0ic29saWQgYiI+MjwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29s
aWQgYyI+MzwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgZCI+PC9kaXY+CisgICAgPC9k
aXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJs
YXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLmh0bWwgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3Zlcmxh
cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczMTg0MGEyYzRkYjJjZjJhNzE1MWViMzE1NDMzMDYzYzNkNGU2
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJs
ZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC5odG1sCkBAIC0wLDAgKzEsMzcgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgCisgICAgICBkaXYg
eworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICB9CisgICAg
ICAuc29saWQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47CisgICAgICB9CisKKyAgICAgIC5vcGFjaXR5IHsgb3BhY2l0eTogLjU7IH0KKyAgICAg
IC5hIHsgdG9wOiAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAuYiB7IHRvcDogMjAwcHg7IGxlZnQ6
IDIwMHB4O30KKyAgICAgIC5jIHsgdG9wOiAyMDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5kIHsg
dG9wOiAwcHg7IGxlZnQ6IDIwMHB4O30KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeworICAg
ICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0KKyAgICAgICog
eyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAg
ICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIG9wYWNpdHkiPgorICAgICAgPGRpdiBjbGFzcz0ic29s
aWQgY29tcG9zaXRlZCBhIj4xPC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3Np
dGVkIGIiPjI8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgYyI+Mzwv
ZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgY29tcG9zaXRlZCBkIj48L2Rpdj4KKyAgICA8
L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHkt
aHVnZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0OWIxNGNjMDEwZDU4YWMyYWFhMGExODkx
OTRiNTBhNjUyNWU1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAg
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Cisg
ICAgICAucmVmbGVjdGVkIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3
aWR0aDogMjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKKyAgICAgICAgb3BhY2l0eTogMC41OworICAgICAgICAtd2Via2l0LWJv
eC1yZWZsZWN0OiBiZWxvdyAtNTBweDsKKyAgICAgIH0KKyAgICAgIAorICAgICAgKiB7IG1hcmdp
bjogMDsgcGFkZGluZzogMDsgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAKKyAgPHA+
T3BhY2l0eSBzaG91bGQgYmUgYXBwbGllZCBhZnRlciByZWZsZWN0aW9uLCBzbyB5b3Ugc2hvdWxk
IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBiZWxvdy4gVGhlIG92ZXJsYXAgYmV0d2VlbiB0aGUgb3Jp
Z2luYWwgYW5kIHJlZmxlY3Rpb24gc2hvdWxkIG5vdCBiZSB2aXNpYmxlLjwvcD4KKyAgPGRpdiBj
bGFzcz0icmVmbGVjdGVkIj4xCisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1o
dWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxl
Y3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc4MTc5NGU5OTdiZjgxNDI0NTVm
MmZiMmUwZDE0NjRjMzcwZWY5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2UuaHRtbApAQCAt
MCwwICsxLDI1IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAg
IC5yZWZsZWN0ZWQgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIHdpZHRo
OiAyMTUwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworICAgICAgICBvcGFjaXR5OiAwLjU7CisgICAgICAgIC13ZWJraXQtYm94LXJl
ZmxlY3Q6IGJlbG93IC01MHB4OworICAgICAgfQorICAgICAgCisgICAgICAuY29tcG9zaXRlZCB7
IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO30KKyAgICAgICogeyBtYXJnaW46IDA7
IHBhZGRpbmc6IDA7IH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgCisgIDxwPk9wYWNp
dHkgc2hvdWxkIGJlIGFwcGxpZWQgYWZ0ZXIgcmVmbGVjdGlvbiwgc28geW91IHNob3VsZCBzZWUg
YSBncmVlbiByZWN0YW5nbGUgYmVsb3cuIFRoZSBvdmVybGFwIGJldHdlZW4gdGhlIG9yaWdpbmFs
IGFuZCByZWZsZWN0aW9uIHNob3VsZCBub3QgYmUgdmlzaWJsZS48L3A+CisgIDxkaXYgY2xhc3M9
InJlZmxlY3RlZCBjb21wb3NpdGVkIj4xCisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MmEwYTFjY2Zi
ZGE4YzBmODIyMGJkZWYxYjRhYzYwNDI1ZDA2ODJhLi41NmQ4YTJiYmFkNTU0YzcyZDEwOTIyYThm
MmNkODgzZDVlMDUyMDFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTM3ODEsNiArMzc4MSw4IEBAIHdlYmtpdC5vcmcvYi85NDM1MyBw
bGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3Zl
cmZsCiB3ZWJraXQub3JnL2IvOTQzNTMgY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctb3Zl
cmxheS13aXRoLXRvdWNoLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85NDM1MyBwbGF0
Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZs
b3ctb3ZlcmxheS13aXRoLXRvdWNoLmh0bWwgWyBGYWlsdXJlIF0KIAord2Via2l0Lm9yZy9iLzEx
MDg3MSBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nLyBbIFNraXAgXQorCiB3ZWJraXQub3Jn
L2IvOTA0ODggWyBXaW4gXSBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrLXByZWZsaWdodC1v
cHRpb25zLmh0bWwgWyBQYXNzIFNsb3cgXQogd2Via2l0Lm9yZy9iLzkwNDg4IFsgV2luIF0gaW5z
cGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1yZWxvYWQuaHRtbCBbIFBhc3MgU2xvdyBdCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMmRkMTU2Mjk2
ZTdlYzZmZmZiMDc0MDAwMTQ1OWJlMDllOWM5MDRlNi4uODUwODI3ODhlZDJhNDJiYTJhMWIzMDI1
OGI4MzgyZDY2ZjE2YjQ3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTkxNSw2ICs5MTUsOSBAQCBjb21wb3NpdGluZy9vdmVyZmxvdy90ZXh0YXJlYS1z
Y3JvbGwtdG91Y2guaHRtbAogY29tcG9zaXRpbmcvb3ZlcmZsb3cvdXBkYXRpbmctc2Nyb2xsaW5n
LWNvbnRlbnQuaHRtbAogY29tcG9zaXRpbmcvb3ZlcmZsb3cvc2Nyb2xsaW5nLXdpdGhvdXQtcGFp
bnRpbmcuaHRtbAogCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTA4NzEKK2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1
Z2UuaHRtbAorCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTAy
NwogZmFzdC9ibG9jay9mbG9hdC8wMTYuaHRtbAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190467</attachid>
            <date>2013-02-27 01:45:41 -0800</date>
            <delta_ts>2013-02-27 08:18:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110762-20130227104153.patch</filename>
            <type>text/plain</type>
            <size>85112</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI0MmY5YTEzMTIxMTZm
MGZkNjcyNmNjNGFiOTUxMzhkZDAzNzcxNy4uMTZhNDllMmE5NGM4OWVjNjMyN2JhZjlhZGUyZGE0
MDA1MzcyMmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMy0wMi0yNSAgTm8n
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtUZXhtYXBdIFRleHR1
cmVNYXBwZXIgaXMgdG9vIGVhZ2VyIHRvIHVzZSBpbnRlcm1lZGlhdGUgc3VyZmFjZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRoZSB3
YXkgaW50ZXJtZWRpYXRlIHN1cmZhY2VzIGFyZSBoYW5kbGVkIGluIFRleHR1cmVNYXBwZXJMYXll
ci4KKyAgICAgICAgQmVmb3JlaGFuZCwgd2Ugd291bGQgY3JlYXRlIGFuIGludGVybWVkaWF0ZSBz
dXJmYWNlIHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmNlIG9mIG92ZXJsYXAsIGFuZAorICAgICAg
ICB0aGUgaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd291bGQgYmUgdGhlIGxhcmdlc3QgcG9zc2libGUu
IFRoZSByZXN1bHQgd291bGQgdGhlbiBiZSBkcmF3biB0byB0aGUKKyAgICAgICAgdGFyZ2V0IHN1
cmZhY2Ugd2l0aCB0aGUgbGF5ZXIncyBvcGFjaXR5IGFuZCBtYXNrLgorCisgICAgICAgIFRoaXMg
d291bGQgbWFrZSBpdCBzbyB0aGF0ICgxKSBzdXJmYWNlcyBhcmUgY3JlYXRlZCBldmVuIHdoZW4g
dGhleSdyZSBub3QgbmVlZGVkLCBpLmUuIHdoZW4gdGhlcmUKKyAgICAgICAgaXMgbm8gYWN0dWFs
IG92ZXJsYXAsIGFuZCAoMikgbWFzayB3b3VsZG4ndCBiZSBhcHBsaWVkIGNvcnJlY3RseS4KKwor
ICAgICAgICBJbiB0aGlzIHBhdGNoIHRoZSBiZWhhdmlvciBpcyBjaGFuZ2VkIHNvIHRoYXQgdGhl
IGFyZWEgdG8gYmUgcGFpbnRlZCBpcyBkaXZpZGVkIHRvICJvdmVybGFwcGluZyIKKyAgICAgICAg
YW5kICJub24gb3ZlcmxhcHBpbmciIHJlZ2lvbnMuIFRoZSBub24tb3ZlcmxhcHBpbmcgcmVnaW9u
cyBhcmUgcGFpbnRlZCBkaXJlY3RseSwgd2hpbGUgdGhlIG92ZXJsYXBwaW5nCisgICAgICAgIHJl
Z2lvbnMgYXJlIHRpbGVkIHRvIHNtYWxsZXIgcmVjdGFuZ2xlcyBwYWludGVkIHVzaW5nIGFuIGlu
dGVybWVkaWF0ZSBzdXJmYWNlLgorICAgICAgICBNYXNrcyBhcmUgYXBwbGllZCB0byB0aG9zZSBp
bnRlcm1lZGlhdGUgc3VyZmFjZXMgYmFzZWQgb24gdGhlIHRyYW5zZm9ybSBvZiB0aGUgYWN0dWFs
IG1hc2ssIG5vdCBkcmF3bgorICAgICAgICB0b2dldGhlciB3aXRoIHRoZSBjb250ZW50IHRleHR1
cmUgbGlrZSBiZWZvcmUuCisKKyAgICAgICAgVGhpcyBvcHRpbWl6ZXMgZm9yIHRoZSBtb3JlIGNv
bW1vbiBjYXNlIG9mIG9wYWNpdHkgYW5pbWF0aW9ucyBvbiBhIGxhcmdlIHRyZWUsIHdoaWxlIG1h
a2luZyB0aGUgcXVpdGUKKyAgICAgICAgcmFyZSBjYXNlIG9mIGNvbXBvc2l0ZWQgbWFza3Mgc2xp
Z2h0bHkgbGVzcyBvcHRpbWl6ZWQgYnV0IGFsd2F5cyBjb3JyZWN0LgorCisgICAgICAgIFRlc3Rz
OiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS5odG1s
CisgICAgICAgICAgICAgICBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24t
b3BhY2l0eS1odWdlLmh0bWwKKyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLmh0bWwKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmg6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAo
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaDoKKyAgICAgICAgKE1l
ZGlhUGxheWVyUHJpdmF0ZVF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HcmFwaGljc1N1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmg6CisgICAgICAgIChHcmFwaGljc1N1cmZhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9U
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMv
R3JhcGhpY3NTdXJmYWNlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvd2luL0dyYXBoaWNzU3VyZmFjZVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAg
ICAgKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnBh
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRp
bGUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmg6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgICAgICAgICAgUmVtb3ZlZCB0aGUgIm1hc2siIHBhcmFtZXRlciBmcm9tIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyIGFuZCBvdmVycmlkZXMsIHNpbmNlCisgICAgICAgICAgICAgICAgd2Ug
bm8gbG9uZ2VyIHBhaW50IHRoZSBjb250ZW50cyBhbmQgdGhlIG1hc2sgaW4gdGhlIHNhbWUgcGFz
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OlRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpzZXRNYXNrTW9kZSk6CisgICAgICAgIChUZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OmlzSW5NYXNrTW9kZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdGaWx0ZXJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlcjo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyOjpkcmF3U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyKToKKyAgICAgICAgICAgICAgICBJbnN0ZWFkIG9mIHBhaW50
aW5nIHRoZSBtYXNrIHRvZ2V0aGVyIHdpdGggdGhlIHRleHR1cmUvY29sb3IsIHBhaW50IHRoZSBt
YXNrCisgICAgICAgICAgICAgICAgYnkgZHJhd2luZyB3aXRoIERlc3RpbmF0aW9uSW4gdG8gYW4g
ZXhpc3Rpbmcgc3VyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNob3VsZEJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRo
UmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUZp
bHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZU92ZXJsYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZU92ZXJsYXBSZWdpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6YXBwbHlNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21taXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50UmVjdXJzaXZlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omhhc0ZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbS5oOgorCiAyMDEzLTAyLTIzICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYW5p
bWF0aW9uL3N0YXRlLWF0LWVuZC1ldmVudC10cmFuc2Zvcm0tbGF5ZXIuaHRtbCBzaG93cyBhIHJl
ZCBzcXVhcmUgd2hlcmUgaXQgc2hvdWxkbid0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmNwcAppbmRleCBjZDBlMDliODRlNzVkMTQzMTZlYzMyNzM2NzgxZGI1YWVkZWI5NjUyLi5k
ZjBiMjYyOTI3YjUwYWZjNDcxYzYwM2I2OTQ4NWI3NDY2YTVjYzBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiB9
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBF
UikKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1h
cFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBv
cGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0
Miw3ICsxNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgIFRleHR1cmVNYXBwZXJH
TCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVy
KTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpT
aG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFw
cGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRl
eHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCk7Ci0gICAgdGV4
bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNp
emUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzayk7CisgICAgdGV4bWFwR0wtPmRy
YXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdl
dFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HX0dMKQogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggZDBkZDIzZmU3ZGJkNDFkNmFmODFm
OTA3YWFkOWRhMDMyYzAxYjRkYi4uNDJlYjZjMmU3MDUxYzkwMjc1MGIyODgwZGVjNGZhMzc0M2Iy
MTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHls
ZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSog
bWFzayk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmNwcAppbmRleCBjMTkzNWNhYTQ0ODEwYjI1OTQzNzhmYjcyZmIxZTEwYTEwNWQ2
YWRlLi4xZDE1MGUzY2NlMzJlNTQyYTk0OGNhNzQwNWI3MzczMDQ2YTFiNDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVmZmVyKCkgY29uc3QKIH0KIAogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQg
Ki8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLywgQml0
bWFwVGV4dHVyZSogLyogbWFzayAqLykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0
YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAq
LykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oCmluZGV4IGIzMDA5NmE2YTlhOGQ3NThhNzlkY2MyOWRjZTE2ZDU4YTg1OTc5NmQuLjhmMGVi
M2NiNGFlYjUzNGUzOGY5YjE3NjUwZGMxY2UzZmRmZTljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgcGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250
ZXh0TG9zdENhbGxiYWNrPik7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIHZpcnR1
YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCkgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2
aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKaW5kZXggNjZiZGVhZWQxODVhNTRlZTM5MzUzMGFkOWEwOWZhNmM0YTMw
ZjdlYS4uOGQ1YjgxZDEwMjFjZDJiZTM4ZmM0MzIwOWJmMzBmMGI2OTdlMTY4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH5HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CiAjZW5kaWYKICNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUo
KSBjb25zdDsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJn
clRvUmdiKHF1aW50MzIgcGl4ZWwpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRt
YXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQg
b3BhY2l0eSkKIHsKICAgICBtX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBi
bGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFuZFJlc3RvcmVDb250ZXh0KCk7CkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgY3VycmVudENvbnRleHQt
Pm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKIAogICAgICAgICBUZXh0dXJlTWFwcGVyR0wq
IHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7
Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXhtYXBH
TCwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrKTsKKyAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleG1hcEdMLCB0YXJnZXRSZWN0LCBtYXRy
aXgsIG9wYWNpdHkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclBy
aXZhdGVRdC5jcHAKaW5kZXggZTA4M2UyOTczMmJiYjc4ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAz
YS4uMWY5NjliNWZkYzIxYWJjMjk0YWEwM2RkYTc3ZmEzNWEzYjY5NjYzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVy
UHJpdmF0ZVF0LmNwcApAQCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwK
IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUXQ6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSopCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVF0OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZh
dGVRdC5oCmluZGV4IDhlMzFjOWQ2ZGM4MTNkNjQzOWUzMjI0YzE1MjFlZTAwMzA0MGY1OTUuLmU3
NGNkY2QwODk4NWNiYmNiYTNkMjhiNzZlNDU0MzYzMDUxNjdkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRl
UXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxl
cmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSB7IH0KICAgICAvLyBDb25zdC1jYXN0aW5nIGhl
cmUgaXMgc2FmZSwgc2luY2UgYWxsIG9mIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyJ3MgZnVu
Y3Rpb25zIGFyZSBjb25zdC5nCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1h
c2spOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEg
cGxhdGZvcm1NZWRpYSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAKaW5kZXggYmFl
ZmE4YTE5MDg0MWFlYWIyYjQwYTJjZDA2NDc3MjBmMTYzMzU5Yy4uMmE3YTRiMjQzYzRjYmU2OGFi
ZTJhYTkyNjE4OTFiNjA5NTdiMjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCkBAIC02
Myw5ICs2Myw5IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpjb3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjCiAgICAgcGxhdGZvcm1Db3B5RnJv
bVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCit2b2lkIEdyYXBoaWNz
U3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewotICAgIHBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5LCBt
YXNrKTsKKyAgICBwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRh
cmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzU3Vy
ZmFjZTo6ZnJvbnRCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAppbmRleCBkYTQ5MzY5OThj
NWQwZGQ3OTI4NTk1ZTIyMWM4ZmE5MjY5MWEzODc4Li43MzFhZjJiNmQ2NWMzZGE5YWQ0NzI5YmI3
NjI1NWYzOGRiZWY0ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUo
Y29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYpOwogICAg
IHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCk7
CiAgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOworICAgIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1
aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVpbnQzMl90IHN3YXBCdWZmZXJzKCk7CiAgICAg
R3JhcGhpY3NTdXJmYWNlVG9rZW4gZXhwb3J0VG9rZW4oKTsKQEAgLTk5LDcgKzk5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2soKTsKICAgICB2b2lkIHBsYXRmb3JtQ29w
eVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUNvcHlGcm9tVGV4dHVy
ZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lk
IHBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFj
aXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKKyAgICB2b2lkIHBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICAgICB1aW50MzJfdCBw
bGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3Q7CiAgICAgdWludDMyX3QgcGxhdGZvcm1Td2FwQnVm
ZmVycygpOwogICAgIEludFNpemUgcGxhdGZvcm1TaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJm
YWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDQzOTFiNTljM2RmNjAxNGNlNzZmYjc2MmVm
N2NhZDM1NTNmYTYzNzAuLjIzZjhhZmI0ODJlZTI5MGMwZTU1MzU1MzA5MmY4ZTU2ODkzMzQ0MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCkBAIC0zODUsNyArMzg1
LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQz
Ml90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4
dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFw
aGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUg
c2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTM5
Nyw3ICszOTcsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogICAgIEZsb2F0UmVjdCByZWN0
T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNm
b3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRl
bnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4
dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHRleHR1cmUsIG1fcHJpdmF0ZS0+ZmxhZ3MoKSwgc2l6
ZSwgcmVjdE9uQ29udGVudHMsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrKTsKKyAg
ICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1
cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygpLCBzaXplLCByZWN0T25Db250ZW50cywgYWRq
dXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQogCiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcAppbmRleCBiZjYyZmIxNWEwOWI0YzE4MjMyNDExZjYzYTUzMTdiYWRkNmVhMjVj
Li5jNGQyZDU0MTg0MmQ2YjE2Y2FlZDFhMTkzYTdlY2UxMjJjODFiYTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJm
YWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAtMzMzLDEzICszMzMsMTMgQEAgdm9pZCBH
cmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJl
LCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBm
bG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9pZCBHcmFwaGljc1N1cmZhY2U6
OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIEludFNpemUgc2l6ZSA9IG1fcHJp
dmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6
ZXJvKCksIHNpemUpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3Jt
ID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7Ci0gICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJl
KG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUs
IHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJl
KG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCB8IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUs
IHJlY3RPbkNvbnRlbnRzLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9CiAKIHVpbnQz
Ml90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhp
Y3NTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCmluZGV4IDk1MDlmMDk4M2M2MjkwY2YwMGVk
M2JjYWQ4YTliMTA5ODYyNWQ4N2YuLjA2ZjQyN2NmY2FkODM2NDhkZmQ3OGQ1OTI1M2NiMGMwNDRm
ZjQ5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZhY2VXaW4uY3BwCkBAIC00MjEs
NyArNDIxLDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKICAgICBtX3ByaXZhdGUtPmNvcHlG
cm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQordm9p
ZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIElu
dFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOwogICAgIEZsb2F0UmVjdCByZWN0T25Db250
ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCmluZGV4IDM3
ZjcxNTRmMWM2OWQ5OGI0YTIzYjBjMGNkNzQ4ZWY1ZDlkNzU5MDguLjFiNTRlYTMxMzc1NjhmMzVk
NWFiMzI5ODhlOTk5OTQzZWEzY2E1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKQEAgLTE0MSw2ICsx
NDEsNyBAQCBUZXh0dXJlTWFwcGVyOjpUZXh0dXJlTWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNj
ZWxlcmF0aW9uTW9kZSkKICAgICAsIG1fdGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKICAg
ICAsIG1fdGV4dHVyZVBvb2woYWRvcHRQdHIobmV3IEJpdG1hcFRleHR1cmVQb29sKCkpKQogICAg
ICwgbV9hY2NlbGVyYXRpb25Nb2RlKGFjY2VsZXJhdGlvbk1vZGUpCisgICAgLCBtX2lzTWFza01v
ZGUoZmFsc2UpCiB7IH0KIAogVGV4dHVyZU1hcHBlcjo6flRleHR1cmVNYXBwZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmgKaW5kZXggYWRlYWYzZTcxOGUxMzI1MDM4MjljOTA0ZmMwYTJkMjc1MmM0NjE4Ni4uNzEy
MDBlYzk4NzBjMzliZjYyZmY1ODQ4NDA5NDMxNjJkODFmOGMzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBA
IC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKGNv
bnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGlu
dCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0
IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZs
b2F0IG9wYWNpdHkgPSAxLjBmLCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSA9IDAs
IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjBmLCB1bnNpZ25lZCBleHBvc2VkRWRn
ZXMgPSBBbGxFZGdlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikg
PSAwOwogCiAgICAgLy8gbWFrZXMgYSBzdXJmYWNlIHRoZSB0YXJnZXQgZm9yIHRoZSBmb2xsb3dp
bmcgZHJhd1RleHR1cmUgY2FsbHMuCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50RmxhZ3MgPSAwKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZW5kUGFpbnRpbmcoKSB7IH0KIAorICAgIHZvaWQgc2V0TWFza01vZGUoYm9vbCBtKSB7
IG1faXNNYXNrTW9kZSA9IG07IH0KKwogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6
ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBh
Y3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmKTsKQEAgLTE2Niw2ICsxNjgsOCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsKIAorICAgIGJv
b2wgaXNJbk1hc2tNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc01hc2tNb2RlOyB9CisKIHByaXZh
dGU6CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHN0YXRpYyBQYXNzT3duUHRyPFRl
eHR1cmVNYXBwZXI+IHBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKTsKQEAgLTE3OSw2ICsxODMs
NyBAQCBwcml2YXRlOgogICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1fdGV4dERyYXdpbmdNb2Rl
OwogICAgIE93blB0cjxCaXRtYXBUZXh0dXJlUG9vbD4gbV90ZXh0dXJlUG9vbDsKICAgICBBY2Nl
bGVyYXRpb25Nb2RlIG1fYWNjZWxlcmF0aW9uTW9kZTsKKyAgICBib29sIG1faXNNYXNrTW9kZTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmluZGV4IDZiZmIz
ZjFjZmU1YjJlMTY2YzgxM2MwMzNkYWFlNjhhMTUxZGVmN2QuLmM2MDBhYTJlMWJkMmYxNzM3YTI5
Nzk4ZTM3NjM3NmQyZDVlOTljMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciwg
cHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZT4gewogcHVibGljOgog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0
bWFwVGV4dHVyZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENvdW50ICovLCBjb25zdCBDb2xvciYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgeyB9CiAgICAgdmlydHVh
bCB+VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CmluZGV4IDVmMmU3MWNmMjdiMjE0MTRlMjJlZDA2MzljMjllMTZjZjA3MTZkMmYuLmFlZGRkYTI5
YTA2YzVhNDk0NWFmZDUzNDAzYmQ3NTk5NjEyNDUwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdOdW1iZXIoaW50
IG51bWJlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW4KICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSk7CiAg
ICAgY29uc3QgdWNoYXIqIGJpdHMgPSBpbWFnZS5iaXRzKCk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0
bWFwVGV4dHVyZUdMKj4odGV4dHVyZS5nZXQoKSktPnVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGJp
dHMsIHNvdXJjZVJlY3QsIEludFBvaW50Ojp6ZXJvKCksIGltYWdlLmJ5dGVzUGVyTGluZSgpKTsK
LSAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCAx
LjBmLCAwLCBBbGxFZGdlcyk7CisgICAgZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3Qs
IG1vZGVsVmlld01hdHJpeCwgMS4wZiwgQWxsRWRnZXMpOwogCiAjZWxpZiBVU0UoQ0FJUk8pCiAg
ICAgQ1N0cmluZyBjb3VudGVyU3RyaW5nID0gU3RyaW5nOjpudW1iZXIobnVtYmVyKS5hc2NpaSgp
OwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3TnVtYmVyKGlu
dCBudW1iZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2luCiAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogYml0cyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFj
ZSk7CiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJm
YWNlKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlLmdldCgpKS0+
dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoYml0cywgc291cmNlUmVjdCwgSW50UG9pbnQ6Onplcm8o
KSwgc3RyaWRlKTsKLSAgICBkcmF3VGV4dHVyZSgqdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxW
aWV3TWF0cml4LCAxLjBmLCAwLCBBbGxFZGdlcyk7CisgICAgZHJhd1RleHR1cmUoKnRleHR1cmUs
IHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgMS4wZiwgQWxsRWRnZXMpOwogCiAgICAgY2Fp
cm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwogICAgIGNhaXJvX2Rlc3Ryb3koY3IpOwpAQCAt
Mzk0LDcgKzM5NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3TnVtYmVyKGludCBudW1i
ZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRQb2luCiAjZW5kaWYKIH0KIAotdm9p
ZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1
cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFzaywgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNv
bnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWdu
ZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICghdGV4dHVyZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTQwMywyMCArNDAzLDE3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3
VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdMID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZSk7Ci0gICAgZHJhd1Rl
eHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJs
ZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2ss
IGV4cG9zZWRFZGdlcyk7CisgICAgZHJhd1RleHR1cmUodGV4dHVyZUdMLmlkKCksIHRleHR1cmVH
TC5pc09wYXF1ZSgpID8gMCA6IFNob3VsZEJsZW5kLCB0ZXh0dXJlR0wuc2l6ZSgpLCB0YXJnZXRS
ZWN0LCBtYXRyaXgsIG9wYWNpdHksIGV4cG9zZWRFZGdlcyk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzIGZsYWdz
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVk
Z2VzKQordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBi
b29sIHVzZVJlY3QgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0OwotICAgIGJvb2wg
bWFza2VkID0gISFtYXNrVGV4dHVyZTsKICAgICBib29sIHVzZUFudGlhbGlhc2luZyA9IG1fZW5h
YmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nCiAgICAgICAgICYmIGV4cG9zZWRFZGdlcyA9PSBB
bGxFZGdlcwogICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQodGFyZ2V0UmVjdCku
aXNSZWN0aWxpbmVhcigpOwogCiAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlv
bnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlOwotICAgIGlm
IChtYXNrZWQpCi0gICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
Ok1hc2s7CiAgICAgaWYgKHVzZVJlY3QpCiAgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06OlJlY3Q7CiAgICAgaWYgKG9wYWNpdHkgPCAxKQpAQCAtNDI2LDEyICs0
MjMsMTIgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEkKICAgICAgICAgZmxhZ3MgfD0gU2hvdWxk
QW50aWFsaWFzOwogICAgIH0KIAotICAgIGlmIChtYXNrZWQgfHwgdXNlQW50aWFsaWFzaW5nIHx8
IG9wYWNpdHkgPCAxKQorICAgIGlmICh1c2VBbnRpYWxpYXNpbmcgfHwgb3BhY2l0eSA8IDEpCiAg
ICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtPiBwcm9ncmFtOwogICAgIHByb2dyYW0gPSBkYXRhKCkuc2hhcmVkR0xEYXRh
KCkuZ2V0U2hhZGVyUHJvZ3JhbShvcHRpb25zKTsKLSAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRS
ZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIG1hc2tUZXh0dXJlKTsKKyAgICBkcmF3VGV4
dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1
cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogfQogCiB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBjb25zdCBDb2xvciYgY29sb3IpCkBA
IC01MDQsMTEgKzUwMSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhdyhjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtbwogICAgIHNoYWRlclBy
b2dyYW0tPnNldE1hdHJpeChzaGFkZXJQcm9ncmFtLT5tb2RlbFZpZXdNYXRyaXhMb2NhdGlvbigp
LCBtYXRyaXgpOwogICAgIHNoYWRlclByb2dyYW0tPnNldE1hdHJpeChzaGFkZXJQcm9ncmFtLT5w
cm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgZGF0YSgpLnByb2plY3Rpb25NYXRyaXgpOwogCi0g
ICAgaWYgKGZsYWdzICYgU2hvdWxkQmxlbmQpIHsKLSAgICAgICAgbV9jb250ZXh0M0QtPmJsZW5k
RnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVT
X1NSQ19BTFBIQSk7CisgICAgaWYgKGlzSW5NYXNrTW9kZSgpKSB7CisgICAgICAgIG1fY29udGV4
dDNELT5ibGVuZEZ1bmMoR3JhcGhpY3NDb250ZXh0M0Q6OlpFUk8sIEdyYXBoaWNzQ29udGV4dDNE
OjpTUkNfQUxQSEEpOwogICAgICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGZsYWdz
ICYgU2hvdWxkQmxlbmQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5ibGVuZEZ1bmMoR3Jh
cGhpY3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQ
SEEpOworICAgICAgICAgICAgbV9jb250ZXh0M0QtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
QkxFTkQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5kaXNhYmxl
KEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAgfQogCiAgICAgaWYgKGZsYWdzICYgU2hv
dWxkQW50aWFsaWFzKQogICAgICAgICBkcmF3RWRnZVRyaWFuZ2xlcyhzaGFkZXJQcm9ncmFtKTsK
QEAgLTUxNiw4ICs1MTgsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXcoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW8KICAgICAgICAgZHJh
d1VuaXRSZWN0KHNoYWRlclByb2dyYW0sIGRyYXdpbmdNb2RlKTsKIAogICAgIG1fY29udGV4dDNE
LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24o
KSk7CisgICAgbV9jb250ZXh0M0QtPmJsZW5kRnVuYyhHcmFwaGljc0NvbnRleHQzRDo6T05FLCBH
cmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSk7CisgICAgbV9jb250ZXh0M0Qt
PmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpOwogfQotdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bSogcHJvZ3JhbSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFz
a1RleHR1cmUpCisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0qIHByb2dyYW0sIHVpbnQzMl90IHRleHR1
cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9w
YWNpdHkpCiB7CiAgICAgbV9jb250ZXh0M0QtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlE
KCkpOwogICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMCk7CkBAIC01MzMsMTkgKzUzOCwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiBwcgog
ICAgIGlmIChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKQogICAgICAgICBwYXR0ZXJuVHJhbnNm
b3JtLnRyYW5zbGF0ZSgwLCAtMSk7CiAKLQogICAgIHByb2dyYW0tPnNldE1hdHJpeChwcm9ncmFt
LT50ZXh0dXJlU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBt
X2NvbnRleHQzRC0+dW5pZm9ybTFmKHByb2dyYW0tPm9wYWNpdHlMb2NhdGlvbigpLCBvcGFjaXR5
KTsKIAotICAgIGlmIChtYXNrVGV4dHVyZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCogbWFza1RleHR1cmVHTCA9IHN0YXRpY19jYXN0
PGNvbnN0IEJpdG1hcFRleHR1cmVHTCo+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbV9jb250ZXh0
M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKTsKLSAgICAgICAg
bV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
YXNrVGV4dHVyZUdMLT5pZCgpKTsKLSAgICAgICAgbV9jb250ZXh0M0QtPnVuaWZvcm0xaShwcm9n
cmFtLT5tYXNrTG9jYXRpb24oKSwgMSk7Ci0gICAgICAgIG1fY29udGV4dDNELT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCk7Ci0gICAgfQotCi0gICAgaWYgKG9wYWNp
dHkgPCAxIHx8IG1hc2tUZXh0dXJlKQorICAgIGlmIChvcGFjaXR5IDwgMSkKICAgICAgICAgZmxh
Z3MgfD0gU2hvdWxkQmxlbmQ7CiAKICAgICBkcmF3KHJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJv
Z3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgZmxhZ3MpOwpAQCAtOTQzLDcg
KzkzOSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFw
VGV4dHVyZSYgc2FtcGxlciwgY29uc3QgQml0bWFwVGV4CiAKICAgICBwcmVwYXJlRmlsdGVyUHJv
Z3JhbShwcm9ncmFtLmdldCgpLCBmaWx0ZXIsIHBhc3MsIHNhbXBsZXIuY29udGVudFNpemUoKSwg
c3RhdGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4oY29udGVudFRleHR1cmUpLmlkKCkp
OwogICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHNhbXBsZXIuY29u
dGVudFNpemUoKSk7Ci0gICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0
KCksIHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVHTCY+KHNhbXBsZXIpLmlkKCksIDAs
IEludFNpemUoMSwgMSksIHRhcmdldFJlY3QsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIDEsIDAp
OworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCBzdGF0aWNf
Y2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlR0wmPihzYW1wbGVyKS5pZCgpLCAwLCBJbnRTaXplKDEs
IDEpLCB0YXJnZXRSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAxKTsKIH0KIAogUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBCaXRtYXBUZXh0dXJlJiBjb250ZW50VGV4dHVy
ZSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRl
eCBhMmI0N2VhOGNkZGYzNmU4ZmM4ZTZmNDA5MWRjOTI0N2Q5NDk1ODQxLi4zMDJmM2M0OWM4MDY1
OGUxYWI4YzhiMmNiYmMwZTcyZDgyMTgxNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC01NCw4
ICs1NCw4IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0dXJlTWFwcGVyIGltcGxlbWVudGF0aW9uCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0
aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNrVGV4dHVyZSwgdW5zaWduZWQgZXhwb3NlZEVkZ2Vz
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVu
c2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1Rl
eHR1cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0
ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IENvbG9yJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREU7CkBAIC0x
MDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIFRleHR1cmVNYXBwZXJHTCgpOwogCi0gICAg
dm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0qLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKKyAgICB2b2lkIGRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSosIHVp
bnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0
eSk7CiAgICAgdm9pZCBkcmF3KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgR0Mz
RGVudW0gZHJhd2luZ01vZGUsIEZsYWdzKTsKIAogICAgIHZvaWQgZHJhd1VuaXRSZWN0KFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKiwgR0MzRGVudW0gZHJhd2luZ01vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCAxZTQ5ZjliNmVjYTg4ZDZhN2NmZDkz
MTkxMjIyYzA0ODExMDM5ZDc1Li41MmE4NDg3OTJkNmZmNjZlNjQ3OWFhZGEyNTE0MjgxMzk4NmE1
ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpiZWdpbkNsaXAoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29uCiAjZW5kaWYKIH0KIAotdm9pZCBUZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRl
eHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1Rl
eHR1cmUsIHVuc2lnbmVkIC8qIGV4cG9zZWRFZGdlcyAqLykKK3ZvaWQgVGV4dHVyZU1hcHBlcklt
YWdlQnVmZmVyOjpkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIC8qIGV4cG9zZWRFZGdlcyAqLykKIHsKICAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBjdXJyZW50Q29udGV4dCgpOwogICAgIGlmICghY29u
dGV4dCkKQEAgLTEyMiwyMiArMTIyLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6
OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEYKIAogICAg
IGNvbnN0IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlciYgdGV4dHVyZUltYWdlQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyJj4odGV4dHVyZSk7CiAgICAg
SW1hZ2VCdWZmZXIqIGltYWdlID0gdGV4dHVyZUltYWdlQnVmZmVyLm1faW1hZ2UuZ2V0KCk7Ci0g
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNrZWRJbWFnZTsKLQotICAgIGlmIChtYXNrVGV4dHVy
ZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGNvbnN0IEJpdG1hcFRleHR1
cmVJbWFnZUJ1ZmZlciogbWFzayA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVJbWFn
ZUJ1ZmZlcio+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbWFza2VkSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKG1hc2tUZXh0dXJlLT5jb250ZW50U2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0KiBtYXNrQ29udGV4dCA9IG1hc2tlZEltYWdlLT5jb250ZXh0KCk7Ci0gICAgICAgIG1h
c2tDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIElu
dFBvaW50Ojp6ZXJvKCksIENvbXBvc2l0ZUNvcHkpOwotICAgICAgICBpZiAob3BhY2l0eSA8IDEp
IHsKLSAgICAgICAgICAgIG1hc2tDb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsKLSAgICAgICAg
ICAgIG9wYWNpdHkgPSAxOwotICAgICAgICB9Ci0gICAgICAgIG1hc2tDb250ZXh0LT5kcmF3SW1h
Z2VCdWZmZXIobWFzay0+bV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9p
bnQ6Onplcm8oKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0gICAgICAgIGltYWdlID0gbWFz
a2VkSW1hZ2UuZ2V0KCk7Ci0gICAgfQotCiAgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihpc0luTWFza01vZGUoKSA/IENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4gOiBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICBjb250ZXh0LT5zZXRBbHBoYShv
cGFjaXR5KTsKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogICAgIGNvbnRleHQtPmNvbmNhdDNE
VHJhbnNmb3JtKG1hdHJpeCk7CkBAIC0xNTUsNiArMTQxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXI6OmRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
VHJhbnMKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihpc0luTWFza01vZGUoKSA/IENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4gOiBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5H
KQogICAgIGNvbnRleHQtPmNvbmNhdDNEVHJhbnNmb3JtKG1hdHJpeCk7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCmluZGV4IDgwZTY5NDQwNTkwNTQ3NjA3ZTcwMzI2
MWU3OTMxNTVkZGUzYzIwZDUuLjM1ZjJiNDQ5ZDk2ZGMwYmM5YjdiMGFmMTk4YWMwNDBjZDk0ZDY4
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIHVuc2lnbmVkIGV4cG9zZWRF
ZGdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1h
cFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBG
bG9hdFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFw
VGV4dHVyZSogc3VyZmFjZSkgT1ZFUlJJREUgeyBtX2N1cnJlbnRTdXJmYWNlID0gc3VyZmFjZTt9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDhhMmNjOTkyYjcxMTA2NjYxMDdjMWJl
MDMxM2JhNGFmOTZjNmZiYWYuLjEwYmVmMjYzYmQzZTE4ZGI2OTMzZDZjOWYzYzVlZDFiZDY3MjEz
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAKKyNpbmNs
dWRlICJSZWdpb24uaCIKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMjcsNyArMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHsKIHB1YmxpYzoKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gc3VyZmFjZTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFzazsKICAg
ICBmbG9hdCBvcGFjaXR5OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAg
ICBJbnRTaXplIG9mZnNldDsKQEAgLTEwOCw4ICsxMDksNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMp
CiAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKTsK
IAogICAgIGZsb2F0IG9wYWNpdHkgPSBvcHRpb25zLm9wYWNpdHk7Ci0gICAgUmVmUHRyPEJpdG1h
cFRleHR1cmU+IG1hc2sgPSBvcHRpb25zLm1hc2s7Ci0KICAgICBpZiAobV9zdGF0ZS5zb2xpZENv
bG9yLmlzVmFsaWQoKSAmJiAhbV9zdGF0ZS5jb250ZW50c1JlY3QuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1NvbGlkQ29sb3IobV9zdGF0ZS5jb250ZW50
c1JlY3QsIHRyYW5zZm9ybSwgYmxlbmRXaXRoT3BhY2l0eShtX3N0YXRlLnNvbGlkQ29sb3IsIG9w
YWNpdHkpKTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hvd0RlYnVnQm9yZGVycykKQEAgLTEyMCw3
ICsxMTksNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlKSB7
CiAgICAgICAgIEFTU0VSVChtX3N0YXRlLmRyYXdzQ29udGVudCAmJiBtX3N0YXRlLmNvbnRlbnRz
VmlzaWJsZSAmJiAhbV9zdGF0ZS5zaXplLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVCghbGF5
ZXJSZWN0KCkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9iYWNraW5nU3RvcmUtPnBhaW50VG9UZXh0
dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbGF5ZXJSZWN0KCksIHRyYW5zZm9ybSwg
b3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLT5wYWludFRvVGV4
dHVyZU1hcHBlcihvcHRpb25zLnRleHR1cmVNYXBwZXIsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0s
IG9wYWNpdHkpOwogICAgICAgICBpZiAobV9zdGF0ZS5zaG93RGVidWdCb3JkZXJzKQogICAgICAg
ICAgICAgbV9iYWNraW5nU3RvcmUtPmRyYXdCb3JkZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBt
X3N0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIG1fc3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbGF5ZXJS
ZWN0KCksIHRyYW5zZm9ybSk7CiAgICAgICAgIC8vIE9ubHkgZHJhdyByZXBhaW50IGNvdW50IGZv
ciB0aGUgbWFpbiBiYWNraW5nIHN0b3JlLgpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYg
b3B0aW9ucykKIAogICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKCFs
YXllclJlY3QoKS5pc0VtcHR5KCkpOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnBhaW50VG9U
ZXh0dXJlTWFwcGVyKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9zdGF0ZS5jb250ZW50c1JlY3Qs
IHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzay5nZXQoKSk7CisgICAgICAgIG1fY29udGVudHNMYXll
ci0+cGFpbnRUb1RleHR1cmVNYXBwZXIob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX3N0YXRlLmNv
bnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBvcGFjaXR5KTsKICAgICAgICAgaWYgKG1fc3RhdGUuc2hv
d0RlYnVnQm9yZGVycykKICAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+ZHJhd0JvcmRlcihv
cHRpb25zLnRleHR1cmVNYXBwZXIsIG1fc3RhdGUuZGVidWdCb3JkZXJDb2xvciwgbV9zdGF0ZS5k
ZWJ1Z0JvcmRlcldpZHRoLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtKTsKICAgICB9
CkBAIC0xNjYsODIgKzE2NSwxNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxm
QW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgbwogICAgICAgICBv
cHRpb25zLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKIH0KIAotSW50UmVjdCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmludGVybWVkaWF0ZVN1cmZhY2VSZWN0KCkKLXsKLSAgICAvLyBGSVhNRTogQWRk
IGFuIGludmVyc2UgdHJhbnNmb3JtIHRvIExheWVyVHJhbnNmb3JtLgotICAgIHJldHVybiBpbnRl
cm1lZGlhdGVTdXJmYWNlUmVjdChtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCkpOwotfQotCi1JbnRSZWN0IFRleHR1cmVNYXBwZXJMYXllcjo6aW50ZXJtZWRpYXRlU3VyZmFj
ZVJlY3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBJbnRSZWN0
IHJlY3Q7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbG9jYWxUcmFuc2Zvcm0gPSBUcmFuc2Zv
cm1hdGlvbk1hdHJpeChtYXRyaXgpLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5l
ZCgpKTsKLSAgICByZWN0ID0gZW5jbG9zaW5nSW50UmVjdChsb2NhbFRyYW5zZm9ybS5tYXBSZWN0
KGxheWVyUmVjdCgpKSk7Ci0gICAgaWYgKCFtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgJiYgIW1fc3Rh
dGUubWFza0xheWVyKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJl
bi5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHJlY3QudW5pdGUobV9jaGlsZHJlbltpXS0+aW50
ZXJtZWRpYXRlU3VyZmFjZVJlY3QobWF0cml4KSk7Ci0gICAgfQotCi0jaWYgRU5BQkxFKENTU19G
SUxURVJTKQotICAgIGlmIChtX2N1cnJlbnRGaWx0ZXJzLmhhc091dHNldHMoKSkgewotICAgICAg
ICBGaWx0ZXJPdXRzZXRzIG91dHNldHMgPSBtX2N1cnJlbnRGaWx0ZXJzLm91dHNldHMoKTsKLSAg
ICAgICAgSW50UmVjdCB1bmZpbHRlcmVkVGFyZ2V0UmVjdChyZWN0KTsKLSAgICAgICAgcmVjdC5t
b3ZlKHN0ZDo6bWF4KDAsIC1vdXRzZXRzLmxlZnQoKSksIHN0ZDo6bWF4KDAsIC1vdXRzZXRzLnRv
cCgpKSk7Ci0gICAgICAgIHJlY3QuZXhwYW5kKG91dHNldHMubGVmdCgpICsgb3V0c2V0cy5yaWdo
dCgpLCBvdXRzZXRzLnRvcCgpICsgb3V0c2V0cy5ib3R0b20oKSk7Ci0gICAgICAgIHJlY3QudW5p
dGUodW5maWx0ZXJlZFRhcmdldFJlY3QpOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKG1fc3Rh
dGUucmVwbGljYUxheWVyKQotICAgICAgICByZWN0LnVuaXRlKG1fc3RhdGUucmVwbGljYUxheWVy
LT5pbnRlcm1lZGlhdGVTdXJmYWNlUmVjdChtYXRyaXgpKTsKLQotICAgIHJldHVybiByZWN0Owot
fQotCi1UZXh0dXJlTWFwcGVyTGF5ZXI6OkNvbnRlbnRzTGF5ZXJDb3VudCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmNvdW50UG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzKCkgY29uc3QKK2Jvb2wgVGV4
dHVyZU1hcHBlckxheWVyOjpzaG91bGRCbGVuZCgpIGNvbnN0CiB7Ci0gICAgaW50IHNlbGZMYXll
cnNXaXRoQ29udGVudHMgPSAobV9zdGF0ZS5kcmF3c0NvbnRlbnQgPyAxIDogMCkgKyAobV9jb250
ZW50c0xheWVyID8gMSA6IDApOwotICAgIGludCBwb3RlbnRpYWxMYXllcnNXaXRoQ29udGVudHMg
PSBzZWxmTGF5ZXJzV2l0aENvbnRlbnRzICsgbV9jaGlsZHJlbi5zaXplKCk7Ci0KLSAgICBpZiAo
IXBvdGVudGlhbExheWVyc1dpdGhDb250ZW50cykKLSAgICAgICAgcmV0dXJuIE5vTGF5ZXJzV2l0
aENvbnRlbnQ7Ci0KLSAgICBpZiAocG90ZW50aWFsTGF5ZXJzV2l0aENvbnRlbnRzID4gMSkKLSAg
ICAgICAgcmV0dXJuIE11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnRzOwotCi0gICAgaWYgKG1fY2hp
bGRyZW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gU2luZ2xlTGF5ZXJXaXRoQ29udGVudHM7
Ci0KLSAgICByZXR1cm4gbV9jaGlsZHJlbi5maXJzdCgpLT5jb3VudFBvdGVudGlhbExheWVyc1dp
dGhDb250ZW50cygpOwotfQorICAgIGlmIChtX3N0YXRlLnByZXNlcnZlczNEKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLWJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzaG91bGRQYWludFRvSW50
ZXJtZWRpYXRlU3VyZmFjZSgpIGNvbnN0Ci17CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAg
IGlmIChtX2N1cnJlbnRGaWx0ZXJzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKLSAgICBib29sIGhhc09wYWNpdHkgPSBtX2N1cnJlbnRPcGFjaXR5IDwgMC45OTsKLSAgICBi
b29sIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ID0gY291bnRQb3RlbnRpYWxMYXll
cnNXaXRoQ29udGVudHMoKSA9PSBNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50czsKLSAgICBib29s
IGhhc1JlcGxpY2EgPSAhIW1fc3RhdGUucmVwbGljYUxheWVyOwotICAgIGJvb2wgaGFzTWFzayA9
ICEhbV9zdGF0ZS5tYXNrTGF5ZXI7Ci0KLSAgICAvLyBXZSBkb24ndCB1c2UgdHdvLXBhc3MgYmxl
bmRpbmcgZm9yIHByZXNlcnZlcy0zZCwgdGhhdCdzIGluIHN5bmMgd2l0aCBTYWZhcmkuCi0gICAg
aWYgKG1fc3RhdGUucHJlc2VydmVzM0QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8v
IFdlIHNob3VsZCB1c2UgYW4gaW50ZXJtZWRpYXRlIHN1cmZhY2Ugd2hlbiBibGVuZGluZyBzZXZl
cmFsIGl0ZW1zIHdpdGggYW4gYW5jZXN0b3Igb3BhY2l0eS4KLSAgICAvLyBUZXN0ZWQgYnkgY29t
cG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1vcGFjaXR5Lmh0bWwKLSAgICBpZiAoaGFz
T3BhY2l0eSAmJiAoY2FuSGF2ZU11bHRpcGxlTGF5ZXJzV2l0aENvbnRlbnQgfHwgaGFzUmVwbGlj
YSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gV2Ugc2hvdWxkIHVzZSBhbiBpbnRl
cm1lZGlhdGUgc3VyZmFjZSB3aXRoIGEgbWFza2VkIGFuY2VzdG9yLgotICAgIC8vIEluIHRoZSBj
YXNlIG9mIHJlcGxpY2FzIHRoZSBtYXNrIGlzIGFwcGxpZWQgYmVmb3JlIHJlcGxpY2F0aW5nLgot
ICAgIC8vIFRlc3RlZCBieSBjb21wb3NpdGluZy9tYXNrcy9tYXNrZWQtYW5jZXN0b3IuaHRtbAot
ICAgIGlmIChoYXNNYXNrICYmIGNhbkhhdmVNdWx0aXBsZUxheWVyc1dpdGhDb250ZW50ICYmICFo
YXNSZXBsaWNhKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gbV9jdXJyZW50T3BhY2l0eSA8IDEgfHwgbV9zdGF0ZS5tYXNrTGF5ZXIgfHwgKG1f
c3RhdGUucmVwbGljYUxheWVyICYmIG1fc3RhdGUucmVwbGljYUxheWVyLT5tX3N0YXRlLm1hc2tM
YXllcik7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjppc1Zpc2libGUoKSBjb25zdApA
QCAtMjYxLDExICsxOTQsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5k
Q2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgogewogICAgIGlmICht
X3N0YXRlLnJlcGxpY2FMYXllcikgewogICAgICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
IHJlcGxpY2FPcHRpb25zKG9wdGlvbnMpOwotICAgICAgICAvLyBXZSBjaG9vc2UgZWl0aGVyIHRo
ZSBjb250ZW50J3MgbWFzayBvciB0aGUgcmVwbGljYSdzIG1hc2suCi0gICAgICAgIC8vIEZJWE1F
OiBibGVuZCB0aGUgdHdvIGlmIGJvdGggZXhpc3QuCi0gICAgICAgIGlmIChtX3N0YXRlLnJlcGxp
Y2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCi0gICAgICAgICAgICByZXBsaWNhT3B0aW9ucy5t
YXNrID0gbV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fc3RhdGUubWFza0xheWVyLT50ZXh0dXJlKCk7
Ci0KICAgICAgICAgcmVwbGljYU9wdGlvbnMudHJhbnNmb3JtCiAgICAgICAgICAgICAubXVsdGlw
bHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKQog
ICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVy
c2UoKSk7CkBAIC0yODUsNiArMjEzLDExIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRB
bmltYXRlZE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKICAgICBtX2N1cnJlbnRPcGFjaXR5ID0gb3Bh
Y2l0eTsKIH0KIAorVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBlckxheWVyOjpyZXBs
aWNhVHJhbnNmb3JtKCkKK3sKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgobV9zdGF0
ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKS5tdWx0aXBseSht
X2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkpOworfQorCiAjaWYgRU5BQkxF
KENTU19GSUxURVJTKQogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGVkRmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewpAQCAtMzA3LDcgKzI0MCw3IEBA
IHN0YXRpYyBib29sIHNob3VsZEtlZXBDb250ZW50VGV4dHVyZShjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMsIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEJpdG1hcFRleHR1cmUqIHNvdXJjZSwg
SW50UmVjdCYgdGFyZ2V0UmVjdCkKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFw
cGx5RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBCaXRtYXBUZXh0dXJlKiBzb3VyY2UpCiB7CiAgICAgaWYgKCFmaWx0
ZXJzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHNvdXJjZTsKQEAgLTMxNyw1MSArMjUwLDE4NCBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycywgVAogfQogI2VuZGlmCiAKLXZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpwYWludFJlY3Vyc2l2ZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQorc3RhdGljIHZvaWQgcmVzb2x2ZU92ZXJsYXBzKFJlZ2lvbiBuZXdSZWdpb24sIFJl
Z2lvbiYgb3ZlcmxhcFJlZ2lvbiwgUmVnaW9uJiBub25PdmVybGFwUmVnaW9uKQogewotICAgIGlm
ICghaXNWaXNpYmxlKCkpCisgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdpb24obmV3UmVnaW9uKTsK
KyAgICBuZXdPdmVybGFwUmVnaW9uLmludGVyc2VjdChub25PdmVybGFwUmVnaW9uKTsKKyAgICBu
b25PdmVybGFwUmVnaW9uLnN1YnRyYWN0KG5ld092ZXJsYXBSZWdpb24pOworICAgIG92ZXJsYXBS
ZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAgbmV3UmVnaW9uLnN1YnRyYWN0KG92
ZXJsYXBSZWdpb24pOworICAgIG5vbk92ZXJsYXBSZWdpb24udW5pdGUobmV3UmVnaW9uKTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbXB1dGVPdmVybGFwUmVnaW9ucyhSZWdpb24m
IG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJlZ2lvbiwgYm9vbCBhbHdheXNSZXNv
bHZlU2VsZk92ZXJsYXApCit7CisgICAgaWYgKCFtX3N0YXRlLnZpc2libGUgfHwgIW1fc3RhdGUu
Y29udGVudHNWaXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCBvcGFjaXR5ID0g
b3B0aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gbWFza1RleHR1cmUgPSBtX3N0YXRlLm1hc2tMYXllciA/IG1fc3RhdGUubWFza0xheWVy
LT50ZXh0dXJlKCkgOiAwOworICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CisgICAgaWYgKG1f
YmFja2luZ1N0b3JlIHx8IG1fc3RhdGUubWFza3NUb0JvdW5kcyB8fCBtX3N0YXRlLm1hc2tMYXll
ciB8fCBoYXNGaWx0ZXJzKCkpCisgICAgICAgIGJvdW5kaW5nUmVjdCA9IGxheWVyUmVjdCgpOwor
ICAgIGVsc2UgaWYgKG1fY29udGVudHNMYXllciB8fCBtX3N0YXRlLnNvbGlkQ29sb3IuYWxwaGEo
KSkKKyAgICAgICAgYm91bmRpbmdSZWN0ID0gbV9zdGF0ZS5jb250ZW50c1JlY3Q7CiAKLSAgICBU
ZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKLSAgICBwYWlu
dE9wdGlvbnMubWFzayA9IG1hc2tUZXh0dXJlLmdldCgpOworI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKKyAgICBpZiAobV9jdXJyZW50RmlsdGVycy5oYXNPdXRzZXRzKCkpIHsKKyAgICAgICAgRmls
dGVyT3V0c2V0cyBvdXRzZXRzID0gbV9jdXJyZW50RmlsdGVycy5vdXRzZXRzKCk7CisgICAgICAg
IEludFJlY3QgdW5maWx0ZXJlZFRhcmdldFJlY3QoYm91bmRpbmdSZWN0KTsKKyAgICAgICAgYm91
bmRpbmdSZWN0Lm1vdmUoc3RkOjptYXgoMCwgLW91dHNldHMubGVmdCgpKSwgc3RkOjptYXgoMCwg
LW91dHNldHMudG9wKCkpKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LmV4cGFuZChvdXRzZXRzLmxl
ZnQoKSArIG91dHNldHMucmlnaHQoKSwgb3V0c2V0cy50b3AoKSArIG91dHNldHMuYm90dG9tKCkp
OworICAgICAgICBib3VuZGluZ1JlY3QudW5pdGUodW5maWx0ZXJlZFRhcmdldFJlY3QpOworICAg
IH0KKyNlbmRpZgorCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYU1hdHJpeDsKKyAg
ICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpIHsKKyAgICAgICAgcmVwbGljYU1hdHJpeCA9IHJl
cGxpY2FUcmFuc2Zvcm0oKTsKKyAgICAgICAgYm91bmRpbmdSZWN0LnVuaXRlKHJlcGxpY2FNYXRy
aXgubWFwUmVjdChib3VuZGluZ1JlY3QpKTsKKyAgICB9CiAKLSAgICBpZiAoIXNob3VsZFBhaW50
VG9JbnRlcm1lZGlhdGVTdXJmYWNlKCkpIHsKLSAgICAgICAgcGFpbnRPcHRpb25zLm9wYWNpdHkg
PSBvcGFjaXR5OwotICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKHBhaW50
T3B0aW9ucyk7CisgICAgYm91bmRpbmdSZWN0ID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkubWFwUmVjdChib3VuZGluZ1JlY3QpOworCisgICAgLy8gQ291bnQgYWxsIG1hc2tzIGFuZCBm
aWx0ZXJzIGFzIG92ZXJsYXAgbGF5ZXJzLgorICAgIGlmIChoYXNGaWx0ZXJzKCkgfHwgbV9zdGF0
ZS5tYXNrTGF5ZXIgfHwgKG1fc3RhdGUucmVwbGljYUxheWVyICYmIG1fc3RhdGUucmVwbGljYUxh
eWVyLT5tX3N0YXRlLm1hc2tMYXllcikpIHsKKyAgICAgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdp
b24oZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ1JlY3QpKTsKKyAgICAgICAgbm9uT3ZlcmxhcFJl
Z2lvbi5zdWJ0cmFjdChuZXdPdmVybGFwUmVnaW9uKTsKKyAgICAgICAgb3ZlcmxhcFJlZ2lvbi51
bml0ZShuZXdPdmVybGFwUmVnaW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8v
IFByZXBhcmUgYSBzdXJmYWNlIHRvIHBhaW50IGludG8uCi0gICAgLy8gV2UgcGFpbnQgaW50byB0
aGUgc3VyZmFjZSBpZ25vcmluZyB0aGUgb3BhY2l0eS90cmFuc2Zvcm0gb2YgdGhlIGN1cnJlbnQg
bGF5ZXIuCi0gICAgSW50UmVjdCBzdXJmYWNlUmVjdCA9IGludGVybWVkaWF0ZVN1cmZhY2VSZWN0
KCk7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2UgPSBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc3VyZmFjZVJlY3Quc2l6ZSgpKTsKLSAgICBw
YWludE9wdGlvbnMuc3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVy
LT5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKLSAgICBwYWludE9wdGlvbnMub3BhY2l0eSA9
IDE7CisgICAgUmVnaW9uIG5ld092ZXJsYXBSZWdpb247CisgICAgUmVnaW9uIG5ld05vbk92ZXJs
YXBSZWdpb24oZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ1JlY3QpKTsKKworICAgIGlmICghbV9z
dGF0ZS5tYXNrc1RvQm91bmRzKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9j
aGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBj
aGlsZCA9IG1fY2hpbGRyZW5baV07CisgICAgICAgICAgICBib29sIGFsd2F5c1Jlc29sdmVTZWxm
T3ZlcmxhcEZvckNoaWxkcmVuID0gZmFsc2U7CisgICAgICAgICAgICBjaGlsZC0+Y29tcHV0ZU92
ZXJsYXBSZWdpb25zKG5ld092ZXJsYXBSZWdpb24sIG5ld05vbk92ZXJsYXBSZWdpb24sIGFsd2F5
c1Jlc29sdmVTZWxmT3ZlcmxhcEZvckNoaWxkcmVuKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikgeworICAgICAgICBuZXdPdmVybGFwUmVnaW9uLnVu
aXRlKHJlcGxpY2FNYXRyaXgubWFwUmVjdChuZXdPdmVybGFwUmVnaW9uLmJvdW5kcygpKSk7Cisg
ICAgICAgIFJlZ2lvbiByZXBsaWNhUmVnaW9uKHJlcGxpY2FNYXRyaXgubWFwUmVjdChuZXdOb25P
dmVybGFwUmVnaW9uLmJvdW5kcygpKSk7CisgICAgICAgIHJlc29sdmVPdmVybGFwcyhyZXBsaWNh
UmVnaW9uLCBuZXdPdmVybGFwUmVnaW9uLCBuZXdOb25PdmVybGFwUmVnaW9uKTsKKyAgICB9CiAK
LSAgICBwYWludE9wdGlvbnMudHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkuaW52ZXJzZSgpOwotICAgIHBhaW50T3B0aW9ucy5vZmZzZXQgPSAtSW50U2l6ZShzdXJmYWNl
UmVjdC54KCksIHN1cmZhY2VSZWN0LnkoKSk7CisgICAgaWYgKCFhbHdheXNSZXNvbHZlU2VsZk92
ZXJsYXAgJiYgc2hvdWxkQmxlbmQoKSkgeworICAgICAgICBuZXdOb25PdmVybGFwUmVnaW9uLnVu
aXRlKG5ld092ZXJsYXBSZWdpb24pOworICAgICAgICBuZXdPdmVybGFwUmVnaW9uID0gUmVnaW9u
KCk7CisgICAgfQogCi0gICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShwYWludE9w
dGlvbnMpOworICAgIG92ZXJsYXBSZWdpb24udW5pdGUobmV3T3ZlcmxhcFJlZ2lvbik7CisgICAg
cmVzb2x2ZU92ZXJsYXBzKG5ld05vbk92ZXJsYXBSZWdpb24sIG92ZXJsYXBSZWdpb24sIG5vbk92
ZXJsYXBSZWdpb24pOworfQogCi0gICAgLy8gSWYgd2UgcGFpbnRlZCB0aGUgcmVwbGljYSwgdGhl
IG1hc2sgaXMgYWxyZWFkeSBhcHBsaWVkIHNvIHdlIGRvbid0IG5lZWQgdG8gcGFpbnQgaXQgYWdh
aW4uCi0gICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKQotICAgICAgICBtYXNrVGV4dHVyZSA9
IDA7Cit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNv
bnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgUmVnaW9uIG92
ZXJsYXBSZWdpb247CisgICAgUmVnaW9uIG5vbk92ZXJsYXBSZWdpb247CisgICAgY29tcHV0ZU92
ZXJsYXBSZWdpb25zKG92ZXJsYXBSZWdpb24sIG5vbk92ZXJsYXBSZWdpb24pOworICAgIGlmIChv
dmVybGFwUmVnaW9uLmlzRW1wdHkoKSkgeworICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldp
dGhSZXBsaWNhKG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9y
PEludFJlY3Q+IHJlY3RzID0gbm9uT3ZlcmxhcFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcmVjdHNbaV0pOwor
ICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKG9wdGlvbnMpOworICAgICAg
ICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKKyAgICB9CisKKyAgICByZWN0cyA9
IG92ZXJsYXBSZWdpb24ucmVjdHMoKTsKKyAgICBJbnRTaXplIG1heFRleHR1cmVTaXplID0gb3B0
aW9ucy50ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCByZWN0ID0gcmVj
dHNbaV07CisgICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyB4
ICs9IG1heFRleHR1cmVTaXplLndpZHRoKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50IHkgPSBy
ZWN0LnkoKTsgeSA8IHJlY3QubWF4WSgpOyB5ICs9IG1heFRleHR1cmVTaXplLmhlaWdodCgpKSB7
CisgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdChJbnRQb2ludCh4LCB5KSwgbWF4VGV4
dHVyZVNpemUpOworICAgICAgICAgICAgICAgIHRpbGVSZWN0LmludGVyc2VjdChyZWN0KTsKKyAg
ICAgICAgICAgICAgICBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKG9wdGlvbnMsIHRpbGVS
ZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KIAordm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBv
cHRpb25zKQoreworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0TWFza01vZGUodHJ1ZSk7
CisgICAgcGFpbnRTZWxmKG9wdGlvbnMpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+c2V0
TWFza01vZGUoZmFsc2UpOworfQorCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZy
b21Qb29sKHNpemUpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3Vy
ZmFjZS5nZXQoKSk7CisgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucyk7CisgICAgaWYg
KG1fc3RhdGUubWFza0xheWVyKQorICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNr
KG9wdGlvbnMpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBzdXJmYWNlID0gYXBwbHlG
aWx0ZXJzKG1fY3VycmVudEZpbHRlcnMsIG9wdGlvbnMudGV4dHVyZU1hcHBlciwgc3VyZmFjZS5n
ZXQoKSwgc3VyZmFjZVJlY3QpOworICAgIGlmICghbV9jdXJyZW50RmlsdGVycy5pc0VtcHR5KCkp
CisgICAgICAgIHN1cmZhY2UgPSBhcHBseUZpbHRlcnMobV9jdXJyZW50RmlsdGVycywgb3B0aW9u
cy50ZXh0dXJlTWFwcGVyLCBzdXJmYWNlLmdldCgpKTsKICNlbmRpZgorICAgIG9wdGlvbnMudGV4
dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CisgICAgcmV0dXJuIHN1cmZh
Y2U7Cit9CiAKK3N0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGNvbW1pdFN1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBzdXJmYWNlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQor
ewogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNl
LmdldCgpKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0YXJnZXRUcmFuc2Zvcm07CiAgICAg
dGFyZ2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShvcHRpb25zLm9mZnNldC53aWR0aCgpLCBvcHRpb25z
Lm9mZnNldC5oZWlnaHQoKSk7CiAgICAgdGFyZ2V0VHJhbnNmb3JtLm11bHRpcGx5KG9wdGlvbnMu
dHJhbnNmb3JtKTsKLSAgICB0YXJnZXRUcmFuc2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNm
b3JtLmNvbWJpbmVkKCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUo
KnN1cmZhY2UuZ2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlh
dGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHJlcGxpY2FTdXJm
YWNlOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtYWluU3VyZmFjZTsKKyAgICBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKKyAgICBwYWludE9wdGlv
bnMub2Zmc2V0ID0gLUludFNpemUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICBwYWludE9wdGlv
bnMub3BhY2l0eSA9IDE7CisgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0
aW9uTWF0cml4KCk7CisgICAgaWYgKG1fc3RhdGUucmVwbGljYUxheWVyKSB7CisgICAgICAgIHBh
aW50T3B0aW9ucy50cmFuc2Zvcm0gPSByZXBsaWNhVHJhbnNmb3JtKCk7CisgICAgICAgIHJlcGxp
Y2FTdXJmYWNlID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJlY3Quc2l6ZSgpKTsK
KyAgICAgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7
CisgICAgICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIpCisg
ICAgICAgICAgICBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5
TWFzayhwYWludE9wdGlvbnMpOworICAgIH0KIAotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+
ZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHN1cmZhY2VSZWN0LCB0YXJnZXRUcmFuc2Zvcm0s
IG9wYWNpdHksIG1hc2tUZXh0dXJlLmdldCgpKTsKKyAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYg
b3B0aW9ucy5vcGFjaXR5ID09IDEpCisgICAgICAgIHJlcGxpY2FTdXJmYWNlID0gY29tbWl0U3Vy
ZmFjZShvcHRpb25zLCByZXBsaWNhU3VyZmFjZSwgcmVjdCwgMSk7CisKKyAgICBtYWluU3VyZmFj
ZSA9IHBhaW50SW50b1N1cmZhY2UocGFpbnRPcHRpb25zLCByZWN0LnNpemUoKSk7CisgICAgaWYg
KHJlcGxpY2FTdXJmYWNlKSB7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1
cmZhY2UocmVwbGljYVN1cmZhY2UuZ2V0KCkpOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXItPmRyYXdUZXh0dXJlKCptYWluU3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgcmVjdC5zaXplKCkpKTsKKyAgICAgICAgbWFpblN1cmZhY2UgPSByZXBsaWNhU3Vy
ZmFjZTsKKyAgICB9CisKKyAgICBjb21taXRTdXJmYWNlKG9wdGlvbnMsIG1haW5TdXJmYWNlLCBy
ZWN0LCBvcHRpb25zLm9wYWNpdHkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFp
bnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKK3sK
KyAgICBpZiAoIWlzVmlzaWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3Vs
ZEJsZW5kKCkpIHsKKyAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShvcHRp
b25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOworICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0g
b3B0aW9ucy5vcGFjaXR5ICogbV9jdXJyZW50T3BhY2l0eTsKKyAgICBwYWludFVzaW5nT3Zlcmxh
cFJlZ2lvbnMocGFpbnRPcHRpb25zKTsKIH0KIAogVGV4dHVyZU1hcHBlckxheWVyOjp+VGV4dHVy
ZU1hcHBlckxheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2MWZiODI3NjcwODYw
M2UxMTBmYWNlZDQxODlkYjdkYTBiYzAzMWZhLi42MDJiMmMzOTQxNTUyZTViZDFlNGZhMWFiYzgz
ZDkyY2MwNjA0ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0zMSw2ICszMSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVnaW9uOwogY2xhc3MgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwogCkBA
IC03Myw2ICs3NCwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZv
aWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKKworICAgIGJv
b2wgaGFzRmlsdGVycygpIGNvbnN0CisgICAgeworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAg
ICAgICAgcmV0dXJuICFtX2N1cnJlbnRGaWx0ZXJzLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgc2V0RGVidWdWaXN1YWxz
KGJvb2wgc2hvd0RlYnVnQm9yZGVycywgY29uc3QgQ29sb3ImIGRlYnVnQm9yZGVyQ29sb3IsIGZs
b2F0IGRlYnVnQm9yZGVyV2lkdGgsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKICAgICB2b2lk
IHNldFJlcGFpbnRDb3VudChpbnQpOwogICAgIHZvaWQgc2V0Q29udGVudHNMYXllcihUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllciopOwpAQCAtOTIsOCArMTAzLDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBjb25zdCBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OwogICAg
IHZvaWQgY29tcHV0ZVRyYW5zZm9ybXNSZWN1cnNpdmUoKTsKLSAgICBJbnRSZWN0IGludGVybWVk
aWF0ZVN1cmZhY2VSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgSW50UmVj
dCBpbnRlcm1lZGlhdGVTdXJmYWNlUmVjdCgpOwogCiAgICAgc3RhdGljIGludCBjb21wYXJlR3Jh
cGhpY3NMYXllcnNaVmFsdWUoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCogYik7CiAgICAgc3Rh
dGljIHZvaWQgc29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqID4mIGFycmF5
LCBpbnQgZmlyc3QsIGludCBsYXN0KTsKQEAgLTEwMSwxNSArMTEwLDIxIEBAIHByaXZhdGU6CiAg
ICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5n
U3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQogICAgIEZsb2F0UG9pbnQg
YWRqdXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQ
b3NpdGlvbkRlbHRhOyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29u
c3Q7Ci0KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CiAgICAg
dm9pZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlbW92ZUZyb21Q
YXJlbnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAKKyAgICB2b2lkIGNvbXB1
dGVPdmVybGFwUmVnaW9ucyhSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3Zlcmxh
cFJlZ2lvbiwgYm9vbCBhbHdheXNSZXNvbHZlU2VsZk92ZXJsYXAgPSB0cnVlKTsKKwogICAgIHZv
aWQgcGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOworICAg
IHZvaWQgcGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9w
dGlvbnMmKTsKKyAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICB2
b2lkIHBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHBhaW50U2VsZihjb25zdCBUZXh0
dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRDaGlsZHJlbihj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBwYWludFNlbGZBbmRD
aGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKKyAg
ICB2b2lkIGFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAKICAg
ICAvLyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QW5pbWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsK
QEAgLTEyNSw4ICsxNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBNdWx0aXBsZUxheWVyc1dpdGhD
b250ZW50cwogICAgIH07CiAKLSAgICBDb250ZW50c0xheWVyQ291bnQgY291bnRQb3RlbnRpYWxM
YXllcnNXaXRoQ29udGVudHMoKSBjb25zdDsKLSAgICBib29sIHNob3VsZFBhaW50VG9JbnRlcm1l
ZGlhdGVTdXJmYWNlKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRCbGVuZCgpIGNvbnN0OwogCiAg
ICAgaW5saW5lIEZsb2F0UmVjdCBsYXllclJlY3QoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggZjQ4Nzk1MjY3NjgwMTkwODVjYmRlZjg5
ZTY2ZWU0N2RlZjgxMDExNS4uYjliYWRlZDMzNDczODFjYzBkYjI5ZjIxYzJhYWVkYjAwY2Y5MDU5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCwgQml0
bWFwVGV4dHVyZSogbWFzayA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBm
bG9hdCBvcGFjaXR5ID0gMS4wKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDhj
MTMxZTYxOWUxYWUwMTc3MWMwY2ViMjU0MTUyNWRjYmU2MjU5MTcuLjUzZWUyZjBkZGE0ZDU4OWVj
NTk3MDRlYjM2NTczYzg3NDVjOWM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtLmNwcApAQCAtMTI3LDcgKzEyNyw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB2ZXJ0
ZXhUZW1wbGF0ZSA9CiAgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsK
IAogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWluZyB2ZWMy
IHZfbWFza1RleENvb3JkOwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50aWFsaWFzOwogCiAg
ICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWMyIGR1bW15UGFyYW1ldGVyKSB7IH0KQEAgLTE3Niw4
ICsxNzUsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4VGVtcGxhdGUgPQogICAgICAgICAg
ICAgLy8gVGhlIHRleHR1cmUgcG9zaXRpb24gbmVlZHMgdG8gYmUgY2xhbXBlZCB0byAwLi4xIGJl
Zm9yZSB0aGUgdGV4dHVyZSBtYXRyaXggaXMgYXBwbGllZC4KICAgICAgICAgICAgIHZlYzQgY2xh
bXBlZFBvc2l0aW9uID0gY2xhbXAodmVjNChwb3NpdGlvbiwgMC4sIDEuKSwgMC4sIDEuKTsKICAg
ICAgICAgICAgIHZfdGV4Q29vcmQgPSAodV90ZXh0dXJlU3BhY2VNYXRyaXggKiBjbGFtcGVkUG9z
aXRpb24pLnh5OwotCi0gICAgICAgICAgICB2X21hc2tUZXhDb29yZCA9IHBvc2l0aW9uOwogICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiB1X21vZGVsVmlld01h
dHJpeCAqIHZlYzQocG9zaXRpb24sIDAuLCAxLik7CiAgICAgICAgIH0KICAgICApOwpAQCAtMjA0
LDEyICsyMDEsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAg
IFNUUklOR0lGWSgKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgIHVu
aWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOwotICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBz
X21hc2s7CiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfY29udGVudFRleHR1cmU7CiAgICAg
ICAgIHVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5OwogICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfYW50
aWFsaWFzOwogICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdmFyeWlu
ZyB2ZWMyIHZfbWFza1RleENvb3JkOwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfZmlsdGVyQW1v
dW50OwogICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwogICAgICAgICB1bmlmb3Jt
IHZlYzIgdV9zaGFkb3dPZmZzZXQ7CkBAIC0yMjMsNyArMjE4LDYgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIGZyYWdtZW50VGVtcGxhdGUgPQogICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZShpbm91dCB2
ZWM0IGNvbG9yKSB7IGNvbG9yID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdl90ZXhDb29y
ZCk7IH0KICAgICAgICAgdm9pZCBhcHBseU9wYWNpdHkoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xv
ciAqPSB1X29wYWNpdHk7IH0KICAgICAgICAgdm9pZCBhcHBseUFudGlhbGlhc2luZyhpbm91dCB2
ZWM0IGNvbG9yKSB7IGNvbG9yICo9IGFudGlhbGlhcygpOyB9Ci0gICAgICAgIHZvaWQgYXBwbHlN
YXNrKGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdGV4dHVyZTJEKHNfbWFzaywgdl9tYXNr
VGV4Q29vcmQpLmE7IH0KIAogICAgICAgICB2b2lkIGFwcGx5R3JheXNjYWxlRmlsdGVyKGlub3V0
IHZlYzQgY29sb3IpCiAgICAgICAgIHsKQEAgLTMzNCw3ICszMjgsNiBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgICAgICAgICBhcHBseVRleHR1cmVJZk5lZWRl
ZChjb2xvcik7CiAgICAgICAgICAgICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xvcik7CiAg
ICAgICAgICAgICBhcHBseUFudGlhbGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKLSAgICAgICAgICAg
IGFwcGx5TWFza0lmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5T3BhY2l0eUlmTmVl
ZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5R3JheXNjYWxlRmlsdGVySWZOZWVkZWQoY29s
b3IpOwogICAgICAgICAgICAgYXBwbHlTZXBpYUZpbHRlcklmTmVlZGVkKGNvbG9yKTsKQEAgLTM2
Miw3ICszNTUsNiBAQCBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFBhc3NSZQogICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhSZWN0KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU29saWRDb2xv
cik7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKE9wYWNpdHkpOwotICAgIFNFVF9BUFBM
SUVSX0ZST01fT1BUSU9OUyhNYXNrKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoQW50
aWFsaWFzaW5nKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoR3JheXNjYWxlRmlsdGVy
KTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoU2VwaWFGaWx0ZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCAwMzdlN2Q2OWQ5YTg3NzRmMWQzMDYx
YTc3OTMxYTJjMDNjOWRjMTQ2Li4zMmZhZTExNmNiZmEyZjgzNDliZDI3YjNhYzRiZTk5MzY5ZGNi
NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaApAQCAtNDIsNyAr
NDIsNiBAQCBwdWJsaWM6CiAgICAgICAgIFJlY3QgICAgICAgICAgICAgPSAxTCA8PCAxLAogICAg
ICAgICBTb2xpZENvbG9yICAgICAgID0gMUwgPDwgMiwKICAgICAgICAgT3BhY2l0eSAgICAgICAg
ICA9IDFMIDw8IDMsCi0gICAgICAgIE1hc2sgICAgICAgICAgICAgPSAxTCA8PCA0LAogICAgICAg
ICBBbnRpYWxpYXNpbmcgICAgID0gMUwgPDwgNSwKICAgICAgICAgR3JheXNjYWxlRmlsdGVyICA9
IDFMIDw8IDYsCiAgICAgICAgIFNlcGlhRmlsdGVyICAgICAgPSAxTCA8PCA3LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzcxNDJk
NzVkZDVhNzYzZjBiNjIyYTU2MzY1YWQ5YzIyZTgzOWUxMi4uOGQzODc3NmU5YjVmNTMzYTYwNWU3
M2NhNzZlMzNjYWJmZDk4YjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1
cmZhY2VCYWNraW5nU3RvcmUuY3BwCkBAIC00NCwxMCArNDQsMTAgQEAgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGVtcHR5VGV4dHVyZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyU3Vy
ZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
KQordm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFj
aXR5KQogewogICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKLSAgICAgICAgbV9ncmFwaGljc1N1
cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRy
YW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWlu
dFRvVGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9w
YWNpdHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRjZDEwMTRmYzg1ZWEzYTdlOTcx
YzhkZTA1ZjQxYTRmZDRiZDI2YzcuLjc5M2M2MWRjMzQyZmYwMjYzNTI3ODc0YzcxMjBkMzVlYjI4
MGM1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZS5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFj
ZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwogICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5l
ZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOwogICAgIHZpcnR1YWwgflRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkgeyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJUaWxlLmNwcAppbmRleCA5YjQwNTEzMWFiMGU3OTMyZmU5Yzg3ZmRiYzI1ODQ0Y2ViNTI0NDRi
Li4wNzA1N2VhMTQ5MTNlZWUwNjE1OWQ5NDZiNjQxYjJkMTM1NjEwYmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZS5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxl
Ojp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xh
eQogICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5
ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAot
dm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwg
Qml0bWFwVGV4dHVyZSogbWFzaywgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQordm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICh0ZXh0dXJlKCkuZ2V0KCkpCi0gICAg
ICAgIHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCp0ZXh0dXJlKCkuZ2V0KCksIHJlY3QoKSwg
dHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBleHBvc2VkRWRnZXMpOworICAgICAgICB0ZXh0dXJl
TWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwg
b3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGUuaAppbmRleCBhY2VmNjE4ZWQzZDYwZTMyYTc2M2JmNDBmMTVmY2YyYTM0
NzdlZThkLi4yYjQ1ZDkwMDc3OThlYjQ3MTI4ZDA3YzQ0OWQ3ZDBhNTgwOGZlZDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGUuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRt
YXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFn
ZURhdGEpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNz
TGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFn
IFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJp
dG1hcFRleHR1cmUqLCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCwgY29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJl
TWFwcGVyVGlsZSgpIHsgfQogCiAgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlLmNwcAppbmRleCA4MDk3OTIyMjY3ZTk5MGE4MTBmMjAyZDQ1N2E2MmZhZjlmYjg4ZDBi
Li40YTYwYzgxNTcyMjI4YTVkM2RmNThlYTUwMDRhYjNhMDNmN2FhNTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNDcsMTIgKzQ3LDEy
IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
YWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KGNvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5KQogewogICAgIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQodGV4dHVyZU1h
cHBlcik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFu
c2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RpbGVzW2ld
LnBhaW50KHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCBtYXNrLCBj
YWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QoKSwgbV90aWxlc1tpXS5yZWN0KCkpKTsKKyAg
ICAgICAgbV90aWxlc1tpXS5wYWludCh0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwg
b3BhY2l0eSwgY2FsY3VsYXRlRXhwb3NlZFRpbGVFZGdlcyhyZWN0KCksIG1fdGlsZXNbaV0ucmVj
dCgpKSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9y
ZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xv
ciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCA5MzliMTg1ZDdlYTM1NGYzYmI1Mzk4NWI4YTU2
N2U5MTY3NzY0ZmViLi5mYzFmOWJmNjdmNjExZmViOGM1YmRlNGY3ZjdmOTJiY2ZiNGNhMDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC0zOCw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0
dXJlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVN
YXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJ
bnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEw
NWMxY2JmYTU1ZGJlZmVmYjMyYzM2ZDg1ZjczM2JiYzZkZjM3NDguLmNkNWExMmQ5NjdiNjUwYjk5
MDhkZTEwMmM0YzI5MTMzYTUyZTBiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMTA2LDEwICsxMDYsMTAgQEAgdm9p
ZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUp
CiAgICAgbV9wZW5kaW5nU2l6ZSA9IHNpemU7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU6OnBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxl
Kj4mIHRpbGVzLCBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpw
YWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxl
cywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRp
bGVzW2ldLT5wYWludCh0ZXh0dXJlTWFwcGVyLCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIGNh
bGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCwgdGlsZXNbaV0tPnJlY3QoKSkpOworICAgICAg
ICB0aWxlc1tpXS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBjYWxj
dWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGVzW2ldLT5yZWN0KCkpKTsKIH0KIAogVHJh
bnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJhbnNm
b3JtRm9yUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpCkBAIC0xMTcsNyArMTE3LDcg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXggQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmFkanVzdGVk
VHJhbnNmb3JtRm9yUmVjdChjb25zdCBGbG8KICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnJlY3RUb1JlY3QocmVjdCgpLCB0YXJnZXRSZWN0KTsKIH0KIAotdm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQor
dm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAg
IGlmIChtX3RpbGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyLDggKzE1Miw4
IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgLy8gU2VlIFRpbGVkQmFja2luZ1N0b3Jl
LgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3Jt
ICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogCi0gICAgcGFpbnRUaWxl
c1RvVGV4dHVyZU1hcHBlcihwcmV2aW91c1RpbGVzVG9QYWludCwgdGV4dHVyZU1hcHBlciwgYWRq
dXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIG1hc2ssIHJlY3QoKSk7Ci0gICAgcGFpbnRUaWxlc1Rv
VGV4dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNm
b3JtLCBvcGFjaXR5LCBtYXNrLCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIocHJldmlvdXNUaWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3Jt
LCBvcGFjaXR5LCByZWN0KCkpOworICAgIHBhaW50VGlsZXNUb1RleHR1cmVNYXBwZXIodGlsZXNU
b1BhaW50LCB0ZXh0dXJlTWFwcGVyLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCgp
KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJv
cmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDgxOTg5NWY0OTJhZTVhY2VkZTdkMzlhZWUxYzRk
ODdiYzI2Y2NmYjkuLjQyMDE0NTRiZDdmNzVjMzYzYTI2OGI3MmIzODc1MTFkZTBlNzFhN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25z
KFRleHR1cmVNYXBwZXIqKTsKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSBjb25zdDsKICAgICB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKik7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBm
bG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CiAKQEAgLTcwLDcg
KzcwLDcgQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCiAgICAgICAg
IDogbV9zY2FsZSgxLikKICAgICB7IH0KLSAgICB2b2lkIHBhaW50VGlsZXNUb1RleHR1cmVNYXBw
ZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJUaWxlKj4mLCBUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IEZsb2F0UmVj
dCYpOworICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1h
cHBlclRpbGUqPiYsIFRleHR1cmVNYXBwZXIqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1
c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgRmxvYXRSZWN0IHJl
Y3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUp
OyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA5ZmIyYzQ5YWNhNzIzMmY3MjljMjhlYjcyY2YwODY3ZGE1OTY1NGY2Li42
ZTFjYWI1ZWRjZWZjY2NmYWQwYzkwMDQ4OWI2ZjY5MDdhZGM0ZjBkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTMtMDItMjUgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbVGV4bWFwXSBUZXh0dXJlTWFwcGVyIGlzIHRvbyBlYWdlciB0byB1c2UgaW50ZXJt
ZWRpYXRlIHN1cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTA3NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBhIGZldyByZWYtdGVzdHMgZm9yIGNvcnJlY3Qgb3ZlcmxhcCBibGVuZGlu
ZyBpbiBhY2NlbGVhcmF0ZWQgY29tcG9zaXRpbmcgbW9kZS4gCisgICAgICAgIFNraXBwaW5nIHRo
ZSBuZXcgcmVmbGVjdGlvbiB0ZXN0IG9uIE1hYy9DaHJvbWl1bSBzaW5jZSBpdCdzIG5vdCByZW5k
ZXJlZAorICAgICAgICBwcm9wZXJseSBvbiB0aG9zZSBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBj
b21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2No
aWxkcmVuLW9wYWNpdHktaHVnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9v
dmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVu
LW9wYWNpdHktbm8tb3ZlcmxhcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9v
dmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1v
cGFjaXR5LWh1Z2UuaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMjYgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBVc2VyLUFnZW50IGhlYWRl
ciBpbiBvcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXJzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LWh1Z2UtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRy
ZW4tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk5MDVlOWE5ODlhZDI2
OWZlMzYxMmIyMmQzOTQxMTQzZTFhYTRhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhl
YWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNj
cmVlbiI+CisgICAgICAKKyAgICAgIGRpdiB7CisgICAgICAgIC13ZWJraXQtYm94LXNpemluZzog
Ym9yZGVyLWJveDsKKyAgICAgIH0KKyAgICAgIC5zb2xpZCB7CisgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDIxNTBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICB9CisKKyAgICAgIC5vcGFj
aXR5IHsgb3BhY2l0eTogLjU7IH0KKyAgICAgIC5hIHsgdG9wOiAwcHg7IGxlZnQ6IDBweDt9Cisg
ICAgICAuYiB7IHRvcDogMTAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAKKyAgICAgIC5jb21wb3Np
dGVkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgICB9
CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisKKyAgICA8L3N0eWxlPgorICA8
L2hlYWQ+CisgICAgPGRpdiBjbGFzcz0ib3BhY2l0eSI+CisgICAgPGRpdiBjbGFzcz0ic29saWQg
YSI+MTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNvbGlkIGIiPjI8L2Rpdj4KKyAgPC9kaXY+CisK
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJsYXAtYmxl
bmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1odWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktaHVnZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ3MWIwNjRlZjlmNWIwZGFiZGYzZTA5NzA1OGFhMTI4MzcwYzhjNGUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktaHVnZS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1l
ZGlhPSJzY3JlZW4iPgorICAgICAgCisgICAgICBkaXYgeworICAgICAgICAtd2Via2l0LWJveC1z
aXppbmc6IGJvcmRlci1ib3g7CisgICAgICB9CisgICAgICAuc29saWQgeworICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAyMTUwcHg7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgfQorCisgICAg
ICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9CisgICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAw
cHg7fQorICAgICAgLmIgeyB0b3A6IDEwMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgCisgICAgICAu
Y29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwor
ICAgICAgfQorCisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisgICAgPC9zdHls
ZT4KKyAgPC9oZWFkPgorICAgIDxkaXYgY2xhc3M9Im9wYWNpdHkgY29tcG9zaXRlZCI+CisgICAg
PGRpdiBjbGFzcz0ic29saWQgYSBjb21wb3NpdGVkIj4xPC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
c29saWQgYiBjb21wb3NpdGVkIj4yPC9kaXY+CisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9w
YWNpdHktbm8tb3ZlcmxhcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
b3ZlcmxhcC1ibGVuZGluZy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mOWJkNWYxMzZkMjZiNDYzZDMwOGE3M2VmNmE1ZjAwMmViODRjMjg3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGlu
Zy9jaGlsZHJlbi1vcGFjaXR5LW5vLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDM2
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cisg
ICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAgIAorICAgICAg
ZGl2IHsKKyAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgfQor
ICAgICAgLnNvbGlkIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworICAgICAgfQorCisgICAgICAub3BhY2l0eSB7IG9wYWNpdHk6IC41OyB9Cisg
ICAgICAuYSB7IHRvcDogMHB4OyBsZWZ0OiAwcHg7fQorICAgICAgLmIgeyB0b3A6IDIwMHB4OyBs
ZWZ0OiAyMDBweDt9CisgICAgICAuYyB7IHRvcDogMjAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAu
ZCB7IHRvcDogMHB4OyBsZWZ0OiAyMDBweDt9CisgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5n
OiAwOyB9CisgICAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0
cmFuc2xhdGVaKDApOworICAgICAgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAgIDxk
aXYgY2xhc3M9Im9wYWNpdHkiPgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgYSI+MTwvZGl2Pgor
ICAgICAgPGRpdiBjbGFzcz0ic29saWQgYiI+MjwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29s
aWQgYyI+MzwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgZCI+PC9kaXY+CisgICAgPC9k
aXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJs
YXAtYmxlbmRpbmcvY2hpbGRyZW4tb3BhY2l0eS1uby1vdmVybGFwLmh0bWwgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3Zlcmxh
cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczMTg0MGEyYzRkYjJjZjJhNzE1MWViMzE1NDMzMDYzYzNkNGU2
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJs
ZW5kaW5nL2NoaWxkcmVuLW9wYWNpdHktbm8tb3ZlcmxhcC5odG1sCkBAIC0wLDAgKzEsMzcgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgCisgICAgICBkaXYg
eworICAgICAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICB9CisgICAg
ICAuc29saWQgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47CisgICAgICB9CisKKyAgICAgIC5vcGFjaXR5IHsgb3BhY2l0eTogLjU7IH0KKyAgICAg
IC5hIHsgdG9wOiAwcHg7IGxlZnQ6IDBweDt9CisgICAgICAuYiB7IHRvcDogMjAwcHg7IGxlZnQ6
IDIwMHB4O30KKyAgICAgIC5jIHsgdG9wOiAyMDBweDsgbGVmdDogMHB4O30KKyAgICAgIC5kIHsg
dG9wOiAwcHg7IGxlZnQ6IDIwMHB4O30KKyAgICAgIAorICAgICAgLmNvbXBvc2l0ZWQgeworICAg
ICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIH0KKyAgICAgICog
eyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAg
ICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIG9wYWNpdHkiPgorICAgICAgPGRpdiBjbGFzcz0ic29s
aWQgY29tcG9zaXRlZCBhIj4xPC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJzb2xpZCBjb21wb3Np
dGVkIGIiPjI8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InNvbGlkIGNvbXBvc2l0ZWQgYyI+Mzwv
ZGl2PgorICAgICAgPGRpdiBjbGFzcz0ic29saWQgY29tcG9zaXRlZCBkIj48L2Rpdj4KKyAgICA8
L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHktaHVnZS1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmxhcC1ibGVuZGluZy9yZWZsZWN0aW9uLW9wYWNpdHkt
aHVnZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0OWIxNGNjMDEwZDU4YWMyYWFhMGExODkx
OTRiNTBhNjUyNWU1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAg
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Cisg
ICAgICAucmVmbGVjdGVkIHsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICB3
aWR0aDogMjE1MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKKyAgICAgICAgb3BhY2l0eTogMC41OworICAgICAgICAtd2Via2l0LWJv
eC1yZWZsZWN0OiBiZWxvdyAtNTBweDsKKyAgICAgIH0KKyAgICAgIAorICAgICAgKiB7IG1hcmdp
bjogMDsgcGFkZGluZzogMDsgfQorCisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICAKKyAgPHA+
T3BhY2l0eSBzaG91bGQgYmUgYXBwbGllZCBhZnRlciByZWZsZWN0aW9uLCBzbyB5b3Ugc2hvdWxk
IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBiZWxvdy4gVGhlIG92ZXJsYXAgYmV0d2VlbiB0aGUgb3Jp
Z2luYWwgYW5kIHJlZmxlY3Rpb24gc2hvdWxkIG5vdCBiZSB2aXNpYmxlLjwvcD4KKyAgPGRpdiBj
bGFzcz0icmVmbGVjdGVkIj4xCisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1o
dWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nL3JlZmxl
Y3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc4MTc5NGU5OTdiZjgxNDI0NTVm
MmZiMmUwZDE0NjRjMzcwZWY5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL292ZXJsYXAtYmxlbmRpbmcvcmVmbGVjdGlvbi1vcGFjaXR5LWh1Z2UuaHRtbApAQCAt
MCwwICsxLDI1IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAg
IC5yZWZsZWN0ZWQgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIHdpZHRo
OiAyMTUwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworICAgICAgICBvcGFjaXR5OiAwLjU7CisgICAgICAgIC13ZWJraXQtYm94LXJl
ZmxlY3Q6IGJlbG93IC01MHB4OworICAgICAgfQorICAgICAgCisgICAgICAuY29tcG9zaXRlZCB7
IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO30KKyAgICAgICogeyBtYXJnaW46IDA7
IHBhZGRpbmc6IDA7IH0KKworICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgCisgIDxwPk9wYWNp
dHkgc2hvdWxkIGJlIGFwcGxpZWQgYWZ0ZXIgcmVmbGVjdGlvbiwgc28geW91IHNob3VsZCBzZWUg
YSBncmVlbiByZWN0YW5nbGUgYmVsb3cuIFRoZSBvdmVybGFwIGJldHdlZW4gdGhlIG9yaWdpbmFs
IGFuZCByZWZsZWN0aW9uIHNob3VsZCBub3QgYmUgdmlzaWJsZS48L3A+CisgIDxkaXYgY2xhc3M9
InJlZmxlY3RlZCBjb21wb3NpdGVkIj4xCisgIDwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MmEwYTFjY2Zi
ZGE4YzBmODIyMGJkZWYxYjRhYzYwNDI1ZDA2ODJhLi5kOWZjYjEwMmU0MDY0YzRkZGFmOWI2NThl
MGFiMzZlNjNiMDQ4MmMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTM3ODEsNiArMzc4MSw5IEBAIHdlYmtpdC5vcmcvYi85NDM1MyBw
bGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3Zl
cmZsCiB3ZWJraXQub3JnL2IvOTQzNTMgY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctb3Zl
cmxheS13aXRoLXRvdWNoLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85NDM1MyBwbGF0
Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvb3ZlcmZsb3cvb3ZlcmZs
b3ctb3ZlcmxheS13aXRoLXRvdWNoLmh0bWwgWyBGYWlsdXJlIF0KIAord2Via2l0Lm9yZy9iLzEx
MDg3MSBjb21wb3NpdGluZy9vdmVybGFwLWJsZW5kaW5nLyBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzExMDg3MSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL3NvZnR3YXJlY29tcG9zaXRpbmcvb3Zl
cmxhcC1ibGVuZGluZy8gWyBTa2lwIF0KKwogd2Via2l0Lm9yZy9iLzkwNDg4IFsgV2luIF0gaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay1wcmVmbGlnaHQtb3B0aW9ucy5odG1sIFsgUGFzcyBT
bG93IF0KIHdlYmtpdC5vcmcvYi85MDQ4OCBbIFdpbiBdIGluc3BlY3Rvci9leHRlbnNpb25zL2V4
dGVuc2lvbnMtcmVsb2FkLmh0bWwgWyBQYXNzIFNsb3cgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDJkZDE1NjI5NmU3ZWM2ZmZmYjA3NDAwMDE0NTli
ZTA5ZTljOTA0ZTYuLjg1MDgyNzg4ZWQyYTQyYmEyYTFiMzAyNThiODM4MmQ2NmYxNmI0N2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC05MTUsNiArOTE1
LDkgQEAgY29tcG9zaXRpbmcvb3ZlcmZsb3cvdGV4dGFyZWEtc2Nyb2xsLXRvdWNoLmh0bWwKIGNv
bXBvc2l0aW5nL292ZXJmbG93L3VwZGF0aW5nLXNjcm9sbGluZy1jb250ZW50Lmh0bWwKIGNvbXBv
c2l0aW5nL292ZXJmbG93L3Njcm9sbGluZy13aXRob3V0LXBhaW50aW5nLmh0bWwKIAorIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwODcxCitjb21wb3NpdGluZy9v
dmVybGFwLWJsZW5kaW5nL3JlZmxlY3Rpb24tb3BhY2l0eS1odWdlLmh0bWwKKwogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUwMjcKIGZhc3QvYmxvY2svZmxvYXQv
MDE2Lmh0bWwKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>