<?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>217339</bug_id>
          
          <creation_ts>2020-10-05 14:41:46 -0700</creation_ts>
          <short_desc>[GPU Process] Support CanvasRenderingContext2D.drawImage() with HTMLVideoElement</short_desc>
          <delta_ts>2021-02-17 16:35:36 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=218184</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>217397</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1694870</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-05 14:41:46 -0700</bug_when>
    <thetext>Support CanvasRenderingContext2D.drawImage() with HTMLVideoElement

Covered by existing layout tests in fast/canvas and canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694893</commentid>
    <comment_count>1</comment_count>
      <attachid>410570</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-05 15:27:14 -0700</bug_when>
    <thetext>Created attachment 410570
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695152</commentid>
    <comment_count>2</comment_count>
      <attachid>410639</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-06 08:22:25 -0700</bug_when>
    <thetext>Created attachment 410639
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695210</commentid>
    <comment_count>3</comment_count>
      <attachid>410656</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-06 10:37:36 -0700</bug_when>
    <thetext>Created attachment 410656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695295</commentid>
    <comment_count>4</comment_count>
      <attachid>410690</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-06 13:46:33 -0700</bug_when>
    <thetext>Created attachment 410690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695318</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-06 14:39:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/69409029&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695400</commentid>
    <comment_count>6</comment_count>
      <attachid>410690</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-06 17:22:32 -0700</bug_when>
    <thetext>Comment on attachment 410690
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        details.

I guess we can enable some tests in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695420</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-06 17:57:30 -0700</bug_when>
    <thetext>(In reply to Peng Liu from comment #6)
&gt; Comment on attachment 410690 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410690&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        details.
&gt; 
&gt; I guess we can enable some tests in this patch?

The entirety of fast/canvas, canvas, imported/w3c/canvas and imported/w3c/web-platform-tests/html/canvas are skipped at the moment. This code should be covered by the following tests once we enable those directories:

• imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/canvas-createImageBitmap-video-resize.html
• fast/canvas/canvas-createPattern-video-loading.html
• fast/canvas/canvas-createPattern-video-modify.html
• imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-drawImage.html
• imported/w3c/web-platform-tests/html/canvas/element/imagebitmap/createImageBitmap-flipY.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695564</commentid>
    <comment_count>8</comment_count>
      <attachid>410690</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-07 09:08:16 -0700</bug_when>
    <thetext>Comment on attachment 410690
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:1263
&gt; +    player.setVisible(true);

Surprised that this:

1) is needed.
2) is needed every time.
3) is harmless from a side effect point of view

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1937
&gt; +void GraphicsContext::paintFrameForMedia(MediaPlayer&amp; player, const FloatRect&amp; destination)

Annoying that this repeats the code from the non-CG version. Is there a better way to factor this?

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1947
&gt; +    player.setVisible(true);

Ditto.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:1242
&gt; +    // Should be handled by the delegate.

Ugly but OK.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2589
&gt; +    static Ref&lt;PaintFrameForMedia&gt; create(MediaPlayer&amp; player, const FloatRect&amp; destination)

Should not inline this kind of function. The constructor can get inclined instead. Better for efficiency and for class definition brevity.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2603
&gt; +    static Ref&lt;PaintFrameForMedia&gt; create(MediaPlayerIdentifier identifier, const FloatRect&amp; destination)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695584</commentid>
    <comment_count>9</comment_count>
      <attachid>410690</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-07 10:19:55 -0700</bug_when>
    <thetext>Comment on attachment 410690
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:1263
&gt;&gt; +    player.setVisible(true);
&gt; 
&gt; Surprised that this:
&gt; 
&gt; 1) is needed.
&gt; 2) is needed every time.
&gt; 3) is harmless from a side effect point of view

Good catch! After taking a closer look, it shouldn’t be necessary at all — I removed this line.

My intent had been to preserve the logic in `HTMLVideoElement::paintCurrentFrameInContext` when playing the drawing item back in the GPUP. However, since `MediaPlayerPrivateRemote::setVisible` will make the remote-side MediaPlayer visible anyways, doing this in GraphicsContext is redundant.

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1937
&gt;&gt; +void GraphicsContext::paintFrameForMedia(MediaPlayer&amp; player, const FloatRect&amp; destination)
&gt; 
&gt; Annoying that this repeats the code from the non-CG version. Is there a better way to factor this?

I had done it this way to avoid changing behavior when using the Nicosia-specific `CairoOperationRecorder` as the `GraphicsContextImpl` — I’ve changed this to avoid duplicating the logic in CoreGraphics platform code by instead doing it like this:
• Add a `GraphicsContextImpl::canPaintFrameForMedia` method that returns `true` for the display list recorder, and false in other GraphicsContextImpl subclasses where it’s not implemented.
• Move `GraphicsContext::paintFrameForMedia` into the common `GraphicsContext.cpp` file, and consult `canPaintFrameForMedia` before delegating the call to `m_impl`.

(This way, we can avoid code duplication, and also keep Nicosia working).

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1947
&gt;&gt; +    player.setVisible(true);
&gt; 
&gt; Ditto.

Removed!

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:1242
&gt;&gt; +    // Should be handled by the delegate.
&gt; 
&gt; Ugly but OK.

Indeed. I hatched a plan (with @thorton) to fix this:

We’re thinking of a design where we push logic for applying the display list item out of the delegate (in this case, RemoteImageBufferProxy) and into `PaintFrameForMedia::apply` and `PutImageData::apply`. Instead of a `DisplayList::Replayer::Delegate::apply`, we would then have a `DisplayList::Replayer::Delegate::willApply` method that will prepare the Display List item for playback. In the case of PaintFrameForMedia, we could set a pointer to the `MediaPlayer`, and in the case of `PutImageData`, it could be something like telling the display list item about the `ImageBuffer`.

I’m planning to explore this in a followup.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2589
&gt;&gt; +    static Ref&lt;PaintFrameForMedia&gt; create(MediaPlayer&amp; player, const FloatRect&amp; destination)
&gt; 
&gt; Should not inline this kind of function. The constructor can get inclined instead. Better for efficiency and for class definition brevity.

Sounds good — made this out of line. That said, the other static `create` methods in this file are also currently inline; I’ll put together a followup patch to mass move these too.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2603
&gt;&gt; +    static Ref&lt;PaintFrameForMedia&gt; create(MediaPlayerIdentifier identifier, const FloatRect&amp; destination)
&gt; 
&gt; Ditto.

👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695587</commentid>
    <comment_count>10</comment_count>
      <attachid>410758</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-10-07 10:27:28 -0700</bug_when>
    <thetext>Created attachment 410758
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695645</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-07 13:13:29 -0700</bug_when>
    <thetext>Committed r268145: &lt;https://trac.webkit.org/changeset/268145&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410758.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410570</attachid>
            <date>2020-10-05 15:27:14 -0700</date>
            <delta_ts>2020-10-06 08:22:23 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-217339-20201005152713.patch</filename>
            <type>text/plain</type>
            <size>79409</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk1OWUyZjA0NWM3OGQx
NTdmYmQ3ZTU0NjY1ZjEwNzU4ZDIyMzU2My4uODc3NGI2N2RhNzRjZmE5YTgwMGZmNDE2YzY2OTg4
NzEwMjI5OTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTEwLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gU3VwcG9ydCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlKCkgd2l0aCBIVE1M
VmlkZW9FbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTczMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRGcmFtZUZvck1lZGlhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OnBsYXllclByaXZhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OnBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNyZWF0ZUhh
bmRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJIYW5k
bGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJIYW5kbGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllckhhbmRsZTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZTo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpwYWludEZyYW1lRm9yTWVkaWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYTo6UGFpbnRGcmFtZUZvck1lZGlhKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE6OmFwcGx5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE6
OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWlu
dEZyYW1lRm9yTWVkaWE6OnBsYXllckhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRGcmFtZUZvck1lZGlh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJELmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKwogMjAyMC0xMC0wMyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJv
Y2Vzc10gU3VwcG9ydCBkcmF3aW5nIHRleHQgaW4gMkQgY2FudmFzIHdpdGggZm9udCBmZWF0dXJl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA3ZTdkMmJlNzk3ZWJhY2JmYjljNzMyYzBjMmMzMGJkMGJiMjQ1NGY2Li5l
N2JmNjlhN2VhZTAxNjNjOGFkYzFhMDRiMjM1NjU0NzkzYjJkMDliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYwIEBACisyMDIwLTEwLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU3VwcG9ydCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuZHJhd0ltYWdlKCkgd2l0aCBIVE1MVmlkZW9FbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczMzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5OjpiYWNrZW5kKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6YXBwbHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxheWVySWQp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVBsYXllck1lc3NhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNQ
bGF5ZXJNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OmdldFByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpSZW1vdGVNZWRpYVBsYXllclByb3h5KToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE06OnNldFBsYXllcklkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkZWxldGVSZW1vdGVNZWRpYVBsYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXll
cklkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkaWRSZWNl
aXZlUGxheWVyTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29j
b2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKwogMjAy
MC0xMC0wMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtHUFUgUHJvY2Vzc10gU3VwcG9ydCBkcmF3aW5nIHRleHQgaW4gMkQgY2FudmFzIHdpdGgg
Zm9udCBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGMxOGQ1YjBjOGVjNWM3ODdjMzdmNjg0ODkxMzdjNTg0ZTAwNDFj
NDEuLjUzMGNkN2UwNWQ3ODgyNWM4YTg5MWM4ZDBhNTM2MjQxZmFlMzk3ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUxMzUs
NiArNTEzNSw3IEBACiAJCUYzQUJGRTBDMTMwRTlEQTAwMEU3RjdEMSAvKiBJbnN0cnVtZW50aW5n
QWdlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
M0FCRkUwQjEzMEU5REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5oICovOyB9Owog
CQlGM0Q0NjE0OTExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzRDQ2MTQ3MTE2MUQ1MzIwMENB
MEQwOSAvKiBKU0Vycm9ySGFuZGxlci5oICovOyB9OwogCQlGNDAzRTc4NzIzNjNCNThDMDAwNDQ1
NTAgLyogRW50ZXJLZXlIaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDAzRTc4NTIzNjNCNThDMDAwNDQ1NTAgLyogRW50ZXJLZXlIaW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQyOTI2MTgy
NTI2NEQ0NDAwMDA3ODk4IC8qIE1lZGlhUGxheWVySGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyog
TWVkaWFQbGF5ZXJIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGNDMzRTkwMzFEQkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2Fy
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzM0U5
MDIxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDQwRTc3QTIzM0Q5NEQ3MDA2M0Y5
QUIgLyogTmF2aWdhdG9yQ2xpcGJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDQwRTc2RjIzM0Q5NEQzMDA2M0Y5QUIgLyogTmF2aWdhdG9yQ2xp
cGJvYXJkLmggKi87IH07CiAJCUY0NDBFNzdCMjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmRJ
dGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQw
RTc3MDIzM0Q5NEQ0MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oICovOyB9OwpAQCAtMTYxNTgs
NiArMTYxNTksNyBAQAogCQlGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFcnJvckhhbmRsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwM0U3ODUyMzYzQjU4QzAwMDQ0NTUwIC8q
IEVudGVyS2V5SGludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbnRlcktleUhpbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwM0U3ODYyMzYzQjU4QzAwMDQ0NTUwIC8qIEVudGVyS2V5
SGludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbnRlcktleUhpbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNDI5MjYxNzI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5
ZXJIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJIYW5kbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyQ0VCNTQyMTQwMzFFRTAwMkRDQTcyIC8qIEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGb250QXR0cmlidXRl
Q2hhbmdlc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMzRTkwMjFE
QkJEQkEyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdGF0aWNQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0MzNFOTA0MURCQkRCQzIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY1Bhc3RlYm9hcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjYyMTYsNiArMjYyMTgsNyBAQAogCQkJCTUwMUJBQUE4MTM5NTBFMkMw
MEY3QUNFQiAvKiBXaW5kUnVsZS5oICovLAogCQkJCTM3OTkxOTk0MTIwMERERjQwMEVBMDQxQyAv
KiBXT0ZGRmlsZUZvcm1hdC5jcHAgKi8sCiAJCQkJMzc5OTE5OTUxMjAwRERGNDAwRUEwNDFDIC8q
IFdPRkZGaWxlRm9ybWF0LmggKi8sCisJCQkJRjQyOTI2MTcyNTI2NEQ0NDAwMDA3ODk4IC8qIE1l
ZGlhUGxheWVySGFuZGxlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwNjIyLDYgKzMwNjI1LDcgQEAKIAkJCQkxQTU2OUNG
QzBEN0UyQjgyMDA3QzM5ODMgLyogY19ydW50aW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2
OUNGRTBEN0UyQjgyMDA3QzM5ODMgLyogY191dGlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
N0MwNDZDNDFFNDI1MDhCMDA3MjAxRTcgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGNDI5MjYxODI1MjY0RDQ0MDAwMDc4OTggLyogTWVkaWFQbGF5ZXJI
YW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzNTNFMUU2MUY5MTc0MzEwMEEzNDIwOCAvKiBD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMxQTA5
NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM2NEI0Q0MwQ0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggOGRmYWJiMzIy
YzQwMDBiYTY2OTg2MTU4OGMxYmFkYzdhZGYzOTgyZi4uYzlmMjhiZDJiODM0MmNmMDFhNTczNDk1
MDE3MzQwMmM2NDg2YTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnMKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIHBsYXllci0+c2V0VmlzaWJsZSh0cnVlKTsgLy8gTWFrZSBwbGF5
ZXIgdmlzaWJsZSBvciBpdCB3b24ndCBkcmF3LgotICAgIHBsYXllci0+cGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoY29udGV4dCwgZGVzdFJlY3QpOworICAgIGNvbnRleHQucGFpbnRGcmFtZUZv
ck1lZGlhKCpwbGF5ZXIsIGRlc3RSZWN0KTsKIH0KIAogYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wq
IGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCAyNjVjYjU3ZDM5Mzk1MDM4YTYyOWYzNWJjZDY4NjNhYTQ0NDM5YzY3Li43YWY1NTAyYzU4ZmNj
NDkyMDFkN2JmNmU4MTllNmRjMDk5NWQyZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTMzLDYgKzMzLDggQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2lu
Y2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC0x
MjM5LDYgKzEyNDEsNyBAQCBWZWN0b3I8RmxvYXRQb2ludD4gR3JhcGhpY3NDb250ZXh0OjpjZW50
ZXJMaW5lQW5kQ3V0T2ZmQ29ybmVycyhib29sIGlzVmVydGljYWxMaQogfQogCiAjaWYgIVVTRShD
RykKKwogYm9vbCBHcmFwaGljc0NvbnRleHQ6OnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI1MSw2ICsxMjU0LDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXREZXN0aW5hdGlvbkZvclJlY3QoY29uc3QgU3RyaW5nJiwgY29uc3QgRmxv
YXRSZWN0JikKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGREZXN0aW5hdGlvbkF0UG9pbnQoY29u
c3QgU3RyaW5nJiwgY29uc3QgRmxvYXRQb2ludCYpCiB7CiB9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwbGF5ZXIuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBwbGF5ZXIucGxh
eWVyUHJpdmF0ZSgpLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCgqdGhpcywgZGVzdGluYXRp
b24pOworfQorCiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwODhmMmU1Mzk2YjliNDM4NTg4N2VjMDFm
YWNhOGU3ZGQ5MGUxODA3Li5kYjRjMDAyZWNjZDIyZTZmZTk0MDg3YzY5ZjkxMjhkNDI4OTkyN2Jm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaApAQCAtOTIsNiArOTIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBj
bGFzcyBJbnRSZWN0OworY2xhc3MgTWVkaWFQbGF5ZXI7CiBjbGFzcyBSb3VuZGVkUmVjdDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogY2xhc3MgUGF0aDsKQEAgLTUxNiw2ICs1MTcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50ZnVsUGFpbnREZXRlY3RlZCgpIHsgbV9j
b250ZW5mdWxQYWludERldGVjdGVkID0gdHJ1ZTsgfQogICAgIGJvb2wgY29udGVuZnVsUGFpbnRE
ZXRlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVuZnVsUGFpbnREZXRlY3RlZDsgfQogCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKTsKKwogI2lmIE9TKFdJTkRPV1MpCiAgICAgSERD
IGdldFdpbmRvd3NDb250ZXh0KGNvbnN0IEludFJlY3QmLCBib29sIHN1cHBvcnRBbHBoYUJsZW5k
KTsgLy8gVGhlIHBhc3NlZCBpbiByZWN0IGlzIHVzZWQgdG8gY3JlYXRlIGEgYml0bWFwIGZvciBj
b21wb3NpdGluZyBpbnNpZGUgdHJhbnNwYXJlbmN5IGxheWVycy4KICAgICB2b2lkIHJlbGVhc2VX
aW5kb3dzQ29udGV4dChIREMsIGNvbnN0IEludFJlY3QmLCBib29sIHN1cHBvcnRBbHBoYUJsZW5k
KTsgLy8gVGhlIHBhc3NlZCBpbiBIREMgc2hvdWxkIGJlIHRoZSBvbmUgaGFuZGVkIGJhY2sgYnkg
Z2V0V2luZG93c0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGJjOWMxYzJlY2MwY2JmYzM4MjZh
YTFlMDE5MTMxYzg5MzcyZDNmZS4uNTUxZTAzYTA0MDhiYjdhMWFkNWQ5YWMwNGQ3Y2M0MDMyOWI1
OTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdG
dW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQ
bGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDkwMmY1
ODk5N2Y3MjZjZmIxN2E2MjZiZDllOTQ2NWU1OWRkZWNiMDcuLmZiNDk0MTY0ZGFiNjkxNzQxNzdj
MDA5MDI5OWQ2NWQ2ZTQ2NzM3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb250
ZW50VHlwZS5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCkBAIC0zMDQsNiArMzA1LDE2IEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB0ZXh0
UGxhaW4oKQogICAgIHJldHVybiB0ZXh0UGxhaW47CiB9CiAKK2NvbnN0IE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZSogTWVkaWFQbGF5ZXI6OnBsYXllclByaXZhdGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK01lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZSogTWVkaWFQbGF5ZXI6OnBsYXllclByaXZhdGUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUu
Z2V0KCk7Cit9CisKIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om1lZGlh
RW5naW5lKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKTsKQEAgLTk2
NywxMSArOTc4LDYgQEAgdm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBw
LCBjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgbV9wcml2YXRlLT5wYWludChwLCByKTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiBwLCBjb25zdCBGbG9hdFJlY3QmIHIpCi17Ci0gICAgbV9wcml2YXRlLT5wYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChwLCByKTsKLX0KLQogYm9vbCBNZWRpYVBsYXllcjo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIHJldHVybiBtX3By
aXZhdGUtPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJl
LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBs
eUFscGhhLCBmbGlwWSk7CkBAIC0xNjA5LDYgKzE2MTUsMTEgQEAgdm9pZCBNZWRpYVBsYXllcjo6
YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKICAgICBtX3ByaXZhdGUtPmF1ZGlvT3V0cHV0RGV2
aWNlQ2hhbmdlZCgpOwogfQogCitNZWRpYVBsYXllckhhbmRsZSBNZWRpYVBsYXllcjo6Y3JlYXRl
SGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jcmVhdGVIYW5kbGUoKTsK
K30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogY29uc3QgTG9nZ2VyJiBNZWRpYVBsYXll
cjo6bWVkaWFQbGF5ZXJMb2dnZXIoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggZDQ2NzMxYTJiYWRmODg1NzAxODAxOTg4MTU2MjMy
YzM0YjFmZGZlNi4uNTM1NzkwZDlkZjE4OWQyZDYzZDllMGE0MWFlZDJiNDJiZmIwYzM3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC03
OSw2ICs3OSw3IEBAIGNsYXNzIFRleHRUcmFja1JlcHJlc2VudGF0aW9uOwogCiBzdHJ1Y3QgQ29v
a2llOwogc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKK3N0cnVjdCBNZWRpYVBsYXllckhh
bmRsZTsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIHN0cnVjdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzIHsKQEAgLTQyMSw3ICs0MjIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUpOwogCiAg
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2
b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpOwogCiAgICAgLy8gY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkg
aXMgdXNlZCB0byBkbyB0aGUgR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IHdpdGhvdXQgYSByZWFkYmFj
ayB0byBzeXN0ZW0gbWVtb3J5LgogICAgIC8vIFRoZSBmaXJzdCBmaXZlIHBhcmFtZXRlcnMgZGVu
b3RlIHRoZSBjb3JyZXNwb25kaW5nIEdyYXBoaWNzQ29udGV4dCwgZGVzdGluYXRpb24gdGV4dHVy
ZSwgcmVxdWVzdGVkIGxldmVsLCByZXF1ZXN0ZWQgdHlwZSBhbmQgdGhlIHJlcXVpcmVkIGludGVy
bmFsRm9ybWF0IGZvciBkZXN0aW5hdGlvbiB0ZXh0dXJlLgpAQCAtNjI5LDcgKzYyOSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5n
JiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBNZWRpYVBsYXllclJlcXVlc3RJ
bnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgY2FsbGJhY2spIHsgY2xpZW50KCkucmVxdWVz
dEluc3RhbGxNaXNzaW5nUGx1Z2lucyhkZXRhaWxzLCBkZXNjcmlwdGlvbiwgY2FsbGJhY2spOyB9
CiAjZW5kaWYKIAotICAgIGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVy
UHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsgfQorICAgIGNvbnN0IE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVyUHJpdmF0ZSgpIGNvbnN0OworICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVyUHJpdmF0ZSgpOwogCiAgICAgRHluYW1p
Y1JhbmdlTW9kZSBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9w
cmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOyB9CiAgICAgdm9pZCBzZXRQcmVmZXJyZWREeW5hbWlj
UmFuZ2VNb2RlKER5bmFtaWNSYW5nZU1vZGUpOwpAQCAtNjM4LDYgKzYzOSw4IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgYXVkaW9PdXRwdXREZXZpY2VJZE92ZXJyaWRlKCkgY29uc3Q7CiAgICAgdm9p
ZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKTsKIAorICAgIE1lZGlhUGxheWVySGFuZGxlIGNy
ZWF0ZUhhbmRsZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50Jik7CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmLCBNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVySGFuZGxlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTli
YzYzOWJjZTkzN2U0NWJkZDBjYWY1NTcxNjBkNGM2NjliMWM4OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVySGFuZGxlLmgKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIE1lZGlh
UGxheWVySWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgTWVkaWFQbGF5ZXJJZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJUeXBlPjsKKworc3RydWN0IE1l
ZGlhUGxheWVySGFuZGxlIHsKKyAgICBNZWRpYVBsYXllcklkZW50aWZpZXIgbWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxNZWRpYVBsYXllckhhbmRsZT4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgTWVkaWFQbGF5ZXJIYW5kbGU6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbWVkaWFQbGF5ZXJJZGVudGlmaWVyOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxNZWRpYVBsYXllckhhbmRsZT4gTWVk
aWFQbGF5ZXJIYW5kbGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFs
PE1lZGlhUGxheWVySWRlbnRpZmllcj4gbWVkaWFQbGF5ZXJJZGVudGlmaWVyOworICAgIGRlY29k
ZXIgPj4gbWVkaWFQbGF5ZXJJZGVudGlmaWVyOworICAgIGlmICghbWVkaWFQbGF5ZXJJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICptZWRp
YVBsYXllcklkZW50aWZpZXIgfX07Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaAppbmRleCA4MTI1MzMwMjc2ZGQ1NDRlMWZjYWJkYTE3ZDYzNmNiY2Y4N2JhZDU3Li4yNjAz
MDNlNGFmNjE3NjJjZjhhMDk3YjIyYmEwNGMzZTM2M2NmMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJIYW5kbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVS
YW5nZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjkxLDYgKzI5Miw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZShEeW5hbWlj
UmFuZ2VNb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5n
ZWQoKSB7IH0KKworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXJIYW5kbGUgY3JlYXRlSGFuZGxlKCkg
Y29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXJIYW5kbGUgeyB9OyB9CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCAzZDQ2YTUwNTNiMTdjOWEzZWY5Zjgy
YjIwYjRkOTcxZjAyYTU0M2U2Li4zNDc2MGFlYzFjZmIyZDAwYWQ5NGI5ZTdhMzhkNmJjZGFhOTcz
ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTQzMiw2ICs0
MzIsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0RyYXdpbmdDb21t
YW5kcyhjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWMKICAgICAvLyBGSVhNRTogTm90IGltcGxl
bWVudGVkLgogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGFpbnRGcmFtZUZvck1lZGlhKE1l
ZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxl
bWVudGVkLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0FJ
Uk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IDMxYmE3MTYxN2VmYTQ1
NmMxMWYwNDNhMTlhNDQ5M2ZkNTg1YjIzZTUuLmYzNTI4MGNlN2YxOGMzN2VkMTFkOWMyODQ5NzJl
M2FiOWU1MGY3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC0xMDcs
NiArMTA3LDcgQEAgcHVibGljOgogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXll
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIAogICAgIHZv
aWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAppbmRleCA2M2ZiNWRkNjFiYWJjY2NmNzA5MDRlNTZkMmY5ZDRlNWFkNThjYWM1Li4yNzZm
YmNkNmIzNDExZGNhY2FhYzM2Yjc3ZDIzZWFhYmVhNTNmM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJ
bWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiUGF0
aC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCkBAIC0x
OTMyLDYgKzE5MzQsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZERlc3RpbmF0aW9uQXRQ
b2ludChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEZsb2F0UG9pbnQKICAgICBDR1BERkNvbnRl
eHRBZGREZXN0aW5hdGlvbkF0UG9pbnQoY29udGV4dCwgbmFtZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCB0cmFuc2Zvcm1lZFBvaW50KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBhaW50
RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5wYWludEZyYW1lRm9yTWVkaWEo
cGxheWVyLCBkZXN0aW5hdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbGF5
ZXIuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBwbGF5ZXIucGxheWVyUHJpdmF0ZSgpLT5wYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dCgqdGhpcywgZGVzdGluYXRpb24pOworfQorCiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCA2MTA2NGE4ODYzYjQwZjE5MDVkYWE0MDUzMzg3
YzIyNGI2NDIzYThhLi5hNjM4MzY5MjFkOGRmY2ExNjYzOGJkODZhYTkzM2VmYTdlMjY0ZDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtODMsNiArODMsNyBAQCBlbnVtIGNsYXNzIEl0ZW1U
eXBlIDogdWludDhfdCB7CiAgICAgRmlsbFBhdGgsCiAgICAgRmlsbEVsbGlwc2UsCiAgICAgUHV0
SW1hZ2VEYXRhLAorICAgIFBhaW50RnJhbWVGb3JNZWRpYSwKICAgICBTdHJva2VSZWN0LAogICAg
IFN0cm9rZVBhdGgsCiAgICAgU3Ryb2tlRWxsaXBzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcAppbmRleCBkYmYxODg0YTIxYTM0OWY2YWEwMzMzN2Y3NmVkNTkyOTIzYzA0ZGUz
Li4yZjEzZDNlMWE2Y2VhMTdkZDcwZjk1ZDcyN2JkZDVjY2I0YjhjNTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRGlz
cGxheUxpc3RSZXBsYXllci5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTE0NSw2ICsx
NDYsOCBAQCBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKICAgICAg
ICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxGaWxsRWxsaXBzZT4oaXRlbSkpOwogICAgIGNhc2Ug
SXRlbVR5cGU6OlB1dEltYWdlRGF0YToKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxQ
dXRJbWFnZURhdGE+KGl0ZW0pKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVk
aWE6CisgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8UGFpbnRGcmFtZUZvck1lZGlhPihp
dGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgcmV0dXJuIHNp
emVvZihkb3duY2FzdDxTdHJva2VSZWN0PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlUGF0aDoKQEAgLTEyMTgsNiArMTIyMSwzNSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUHV0SW1hZ2VEYXRhJiBpdGVtKQogICAgIHJldHVy
biB0czsKIH0KIAorUGFpbnRGcmFtZUZvck1lZGlhOjpQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQ
bGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKKyAgICA6IERyYXdp
bmdJdGVtKEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWEpCisgICAgLCBtX3BsYXllckhhbmRs
ZShwbGF5ZXIuY3JlYXRlSGFuZGxlKCkpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9u
KQoreworfQorCitQYWludEZyYW1lRm9yTWVkaWE6OlBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBN
ZWRpYVBsYXllckhhbmRsZSYgaGFuZGxlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQor
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYSkKKyAgICAsIG1f
cGxheWVySGFuZGxlKGhhbmRsZSkKKyAgICAsIG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCit7
Cit9CisKK1BhaW50RnJhbWVGb3JNZWRpYTo6flBhaW50RnJhbWVGb3JNZWRpYSgpID0gZGVmYXVs
dDsKKwordm9pZCBQYWludEZyYW1lRm9yTWVkaWE6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0Cit7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtKQoreworICAgIHRz
IDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJuIHRz
OworfQorCiBTdHJva2VSZWN0OjpTdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxv
YXQgbGluZVdpZHRoKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OlN0cm9rZVJlY3QpCiAg
ICAgLCBtX3JlY3QocmVjdCkKQEAgLTE0NDgsNiArMTQ4MCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDogdHMgPDwgImZpbGwtcGF0aCI7IGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOiB0cyA8PCAiZmlsbC1lbGxpcHNlIjsgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB0cyA8PCAicHV0LWltYWdlLWRhdGEiOyBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHRzIDw8ICJwYWlu
dC1mcmFtZS1mb3ItbWVkaWEiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0
OiB0cyA8PCAic3Ryb2tlLXJlY3QiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQ
YXRoOiB0cyA8PCAic3Ryb2tlLXBhdGgiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VFbGxpcHNlOiB0cyA8PCAic3Ryb2tlLWVsbGlwc2UiOyBicmVhazsKQEAgLTE1ODcsNiArMTYy
MCw5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0m
IGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgogICAgICAgICB0cyA8PCBk
b3duY2FzdDxQdXRJbWFnZURhdGE+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PFBhaW50
RnJhbWVGb3JNZWRpYT4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZVJlY3Q6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KGl0ZW0pOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGYwNTU4
NjllMTdhYWE5NjY0ZWI1M2ZiMWJlZTc5NTgwNjQyOGQzNjMuLjkzMTY3YzE2ZDcxMTYyYTM1Yzdl
MzNiOTBmMDhhMDExZmY5NTllM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllckhhbmRsZS5o
IgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CkBAIC00NCw2ICs0NSw3IEBAIGNsYXNzIFRleHRTdHJlYW07
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlRGF0YTsKK2NsYXNzIE1lZGlhUGxh
eWVyOwogc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOwogCiBuYW1lc3BhY2UgRGlzcGxheUxp
c3QgewpAQCAtMjU4Miw2ICsyNTg0LDU5IEBAIE9wdGlvbmFsPFJlZjxQdXRJbWFnZURhdGE+PiBQ
dXRJbWFnZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiBQdXRJbWFn
ZURhdGE6OmNyZWF0ZSgqaW5wdXRGb3JtYXQsIFdURk1vdmUoKmltYWdlRGF0YSksICpzcmNSZWN0
LCAqZGVzdFBvaW50LCAqZGVzdEZvcm1hdCk7CiB9CiAKK2NsYXNzIFBhaW50RnJhbWVGb3JNZWRp
YSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQYWludEZy
YW1lRm9yTWVkaWE+IGNyZWF0ZShNZWRpYVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFpbnRG
cmFtZUZvck1lZGlhKHBsYXllciwgZGVzdGluYXRpb24pKTsKKyAgICB9CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5QYWludEZyYW1lRm9yTWVkaWEoKTsKKworICAgIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CisgICAg
Y29uc3QgTWVkaWFQbGF5ZXJIYW5kbGUmIHBsYXllckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxheWVySGFuZGxlOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFJlZjxQYWludEZyYW1lRm9yTWVkaWE+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2
YXRlOgorICAgIHN0YXRpYyBSZWY8UGFpbnRGcmFtZUZvck1lZGlhPiBjcmVhdGUoY29uc3QgTWVk
aWFQbGF5ZXJIYW5kbGUmIHBsYXllckhhbmRsZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhaW50RnJhbWVGb3JNZWRp
YShwbGF5ZXJIYW5kbGUsIGRlc3RpbmF0aW9uKSk7CisgICAgfQorCisgICAgUGFpbnRGcmFtZUZv
ck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbik7CisgICAg
V0VCQ09SRV9FWFBPUlQgUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVySGFuZGxl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbik7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgTWVkaWFQbGF5ZXJIYW5kbGUgbV9w
bGF5ZXJIYW5kbGU7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247Cit9OworCit0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQYWludEZyYW1lRm9yTWVkaWE6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF5ZXJIYW5kbGU7CisgICAg
ZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
T3B0aW9uYWw8UmVmPFBhaW50RnJhbWVGb3JNZWRpYT4+IFBhaW50RnJhbWVGb3JNZWRpYTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJIYW5kbGU+
IHBsYXllckhhbmRsZTsKKyAgICBkZWNvZGVyID4+IHBsYXllckhhbmRsZTsKKyAgICBpZiAoIXBs
YXllckhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAg
ICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIFBhaW50RnJhbWVGb3JNZWRpYTo6Y3JlYXRlKCpwbGF5ZXJIYW5kbGUsICpkZXN0aW5h
dGlvbik7Cit9CisKIGNsYXNzIFN0cm9rZVJlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U3Ryb2tlUmVjdD4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgbGluZVdpZHRoKQpAQCAtMjk4Myw2ICszMDM4LDkgQEAgdm9pZCBJdGVtOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFn
ZURhdGE6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8UHV0SW1hZ2VEYXRhPigqdGhpcyk7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToK
KyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxQYWludEZyYW1lRm9yTWVkaWE+KCp0aGlzKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAg
ZW5jb2RlciA8PCBkb3duY2FzdDxTdHJva2VSZWN0PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMzE5MCw2ICszMjQ4LDEwIEBAIE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBQdXRJbWFnZURhdGE6OmRl
Y29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8
SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpQYWludEZyYW1lRm9yTWVkaWE6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBQYWludEZyYW1l
Rm9yTWVkaWE6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgICAgICBpZiAoYXV0byBpdGVtID0gU3Ryb2tl
UmVjdDo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CkBAIC0zMjkxLDYgKzMzNTMsNyBAQCBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRmlsbFBhdGgpCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRmlsbEVsbGlwc2UpCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oUHV0SW1hZ2VEYXRhKQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFBhaW50RnJhbWVGb3JNZWRpYSkKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VSZWN0KQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFN0cm9rZVBhdGgpCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ryb2tlRWxsaXBzZSkKQEAgLTMzNTIsNiAr
MzQxNSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxs
UGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlLAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhLAorICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhLAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdCwKICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IGJkMDQzOGM2YTRiMjU2Yzg4NTZiYjEyOWEzYWI1ZmEyM2U3OGRj
OGEuLmU0M2Y3NmMzOGFmZjUxN2Q4ZDQ2ZmY3MDM3ZjgwYjNmOGI1NTZlMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM4OSw2ICszODksMTEgQEAgdm9p
ZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIENvbG9yU3BhY2UgY28KICAgICBhcHBlbmRJdGVtKENsaXBUb0RyYXdpbmdDb21tYW5k
czo6Y3JlYXRlKGRlc3RpbmF0aW9uLCBjb2xvclNwYWNlLCByZWNvcmRpbmdDb250ZXh0LT50YWtl
RGlzcGxheUxpc3QoKSkpOwogfQogCit2b2lkIFJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEo
TWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAg
ICBhcHBlbmRJdGVtKFBhaW50RnJhbWVGb3JNZWRpYTo6Y3JlYXRlKHBsYXllciwgZGVzdGluYXRp
b24pKTsKK30KKwogdm9pZCBSZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICAvLyBGSVhNRTogdGhpcyBjaGFuZ2VzIHRoZSBiYXNl
Q1RNLCB3aGljaCB3aWxsIGludmFsaWRhdGUgYWxsIG9mIG91ciBjYWNoZWQgZXh0ZW50cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGQyNzBjNWQ5MDhhYzY4ZDc4
MDgzNjNiYmE5MWIyZTc2MWFlZGM5MmIuLjk0ZDhiYTJiYmVhNGJkODQ5NmQ2ZGZjY2RlNDI5MmQ1
NzJhMTQ4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTM3
LDYgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0
IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3Jh
cGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlh
KE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcAppbmRleCBjZWEyYTZlYTA0NDUzNGZmNDU0NGVhMjEwOWMyNjE3ZDc5N2NhMmYxLi4zMDRm
YWNiYWIxNTIxNzkxZGFhODZkYjE1MzE3NTNlMzg2NzEwODRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtMTA5NSw0
ICsxMDk1LDkgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwKICAgICAvLyBGSVhNRTogTm90IGlt
cGxlbWVudGVkLgogfQogCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OnBhaW50RnJhbWVG
b3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYpCit7CisgICAgLy8gRklYTUU6
IE5vdCBpbXBsZW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGRl
MjRhYjhiZDUyNDMyY2UyOTNhODBmNmI0Zjk4NjBmMjIyZmE3ZmYuLjNiZDZlODdmYjY3MWMxZjRm
MTI1MzM4NzQyOWNmOWQwNTIzYTc5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OkludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCA1ODk0MGEzYjgxMzRkYjE5NTA1ZTY5MjFkNWE1NjMw
OTU5MWU4MzhkLi4xMTFhN2MyYWQ2OTVjMjY3MTJiMTAzZDFiNjI4NWIyYTIxODhkNzNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtNDQxLDYgKzQ0MSwxMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yUwogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQu
CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5
ZXImLCBjb25zdCBGbG9hdFJlY3QmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQu
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShESVJFQ1QyRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA4ZjExMTc3NjkzYThiYjEw
YmNiNDg0NzlmMTlhODg5MTEyODNjYWU0Li41OWJmZjEwMDZmNmFmNzc1ZDY0ZDhlMTQ2N2Y4OWRj
NmE4Y2UzMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC0xMDQs
NiArMTA0LDcgQEAgcHVibGljOgogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXll
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIAogICAgIHZv
aWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IGVkOTdhZmE0MmJkZWYzYWNjYTY5NTEz
ZTI0NmVjNWZiOTNkYzcwYzYuLjA3ZTI5ZDU3MTBiNjAyZTk5MGI1YzAxNmRiMTYxOGQxYTUxN2U0
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMjI2LDcg
KzIyNiw3IEBAIHZvaWQgUmVuZGVyVmlkZW86OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgIHBhaW50SW50b1JlY3Qo
cGFpbnRJbmZvLCByZWN0KTsKICAgICBlbHNlIGlmICghdmlkZW9FbGVtZW50KCkuaXNGdWxsc2Ny
ZWVuKCkgfHwgIW1lZGlhUGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpIHsK
ICAgICAgICAgaWYgKHBhaW50SW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZp
b3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCi0gICAgICAgICAgICBtZWRpYVBsYXllci0+
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CisgICAgICAgICAgICBj
b250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqbWVkaWFQbGF5ZXIsIHJlY3QpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtZWRpYVBsYXllci0+cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCmluZGV4IDJl
OTIwZWZkZGMxNzlmNjNmZDRmZDI0YmNmNzkxMzI0MTA5NWU2MzUuLmE0ZDA1ZWFlZjU0OTQxNmZk
YjY0MjU5NTJlMGI0Y2YzYWEyMDVlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LmgKQEAgLTU5LDYgKzU5LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
Y3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogICAgIHZvaWQg
Y29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKIAorICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgYmFja2VuZCgpIHsgcmV0dXJuIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OyB9CisKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKICAgICBJbWFnZUJ1ZmZl
cklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApp
bmRleCA4MWI4OTc4ZDBlNzkxMTU3ZjljN2U0OTcwMzk4MTdlNDc5NTllNTE0Li45N2E5NjQzYjQw
ODE1ZTdjZDVlZWZiNTIzYjkwM2EyM2E4NzY5NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KQEAgLTg0LDE0
ICs4NSwzNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZm
ZXI6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOwogICAgIH0KIAotICAgIGJv
b2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYpIG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgaWYgKGl0ZW0udHlwZSgpICE9IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoaXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQ
dXRJbWFnZURhdGEpIHsKKyAgICAgICAgICAgIGF1dG8mIHB1dEltYWdlRGF0YUl0ZW0gPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhJj4oaXRlbSk7CisgICAg
ICAgICAgICBwdXRJbWFnZURhdGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJ
bWFnZURhdGFJdGVtLmltYWdlRGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0
SW1hZ2VEYXRhSXRlbS5kZXN0UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXRl
bS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9y
TWVkaWEpIHsKKyAgICAgICAgICAgIGFwcGx5KHN0YXRpY19jYXN0PFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpQYWludEZyYW1lRm9yTWVkaWEmPihpdGVtKSwgY29udGV4dCk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICB2b2lkIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEm
IGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKKyAgICB7CisgICAgICAg
IGF1dG8gcHJvY2VzcyA9IGJhY2tlbmQoKS5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7Cisg
ICAgICAgIGlmICghcHJvY2VzcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRv
IHBsYXllclByb3h5ID0gcHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5n
ZXRQcm94eShpdGVtLnBsYXllckhhbmRsZSgpLm1lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAg
ICAgIGlmICghcGxheWVyUHJveHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0
byBwbGF5ZXIgPSBwbGF5ZXJQcm94eS0+bWVkaWFQbGF5ZXIoKTsKKyAgICAgICAgaWYgKCFwbGF5
ZXIpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRl
bSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmPihpdGVt
KTsKLSAgICAgICAgcHV0SW1hZ2VEYXRhKHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3JtYXQoKSwg
cHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURhdGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNSZWN0KCks
IHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBvaW50KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdEZvcm1h
dCgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNvbnRleHQucGFpbnRGcmFtZUZv
ck1lZGlhKCpwbGF5ZXIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CiAgICAgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBkYmI1NWJhM2MyMjBkZTg2ZjE4YTUzM2Nm
YTA4NzE4ZjM4OTI0ZjA4Li43NTNhNWM4YmE5N2ZlNzIwODMxMDU4ZTg0YzVjZDgzYjRiMTc1NTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMTIxLDYgKzEyMSwxMSBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0CiAgICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERyYXdp
bmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBmbHVzaElkZW50aWZpZXIpOwogfQogCitH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Omdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CmluZGV4IDY3NjRhYzEwYzVlN2UwMmE0Yzk3ODc3YjljNWU1NWNhMGI3OGNiMWUuLmEwOTUyYmFm
YjNjMTUzMmQ3ZGM5OTAwNmViNDBmMzFiZjkxZDI1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyOyB9CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCBmNWQ1MDgz
YzhjMDc1ZmRhZWVjN2JiNzcxYjU1YTg1MTY5MmIxNWI1Li42YWY4NGM2NTdiNjA3OGUwOWY2Yjli
MmUyNzhmN2E0MzA3NmY4NDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcApAQCAtNDYs
NyArNDYsNyBAQCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZQogCiBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6On5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkoKSA9IGRlZmF1bHQ7CiAKLXZv
aWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYg
b3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1J
ZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24pCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxNZWRpYVBs
YXllcklkZW50aWZpZXI+JiYgb3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24pCiB7CiAgICAgYXV0
byBwcml2YXRlQ0RNID0gTGVnYWN5Q0RNOjpjcmVhdGUoa2V5U3lzdGVtKTsKICAgICBpZiAoIXBy
aXZhdGVDRE0pIHsKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8TWUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgcGxheWVySWQ7CisgICAgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIHBsYXllcklkOwogICAg
IGlmIChvcHRpb25hbFBsYXllcklkKQogICAgICAgICBwbGF5ZXJJZCA9IFdURk1vdmUob3B0aW9u
YWxQbGF5ZXJJZC52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCmluZGV4IDUzNTUz
ODQ4ODY1OTk4MWQ4Zjg4M2I0Y2ExZWNjYWMyMzVhMzlmZWQuLmQxZDMxMzM4ZDFiMGY4YTQ2N2Mx
ZGU0ODAyMWZlYWJhNzZjN2ZkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKQEAgLTI4LDEw
ICsyOCwxMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFQbGF5ZXJIYW5kbGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwotICAg
IHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
bW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik+JiYpOworICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZp
ZXI+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYm
KT4mJik7CiAgICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCAwMDc0NGZiZmQ0ZDAyYzFmOWMzZDc5YTAwZjUwNDlmOTE1M2I3ZjQ5Li5kYjYwOWM5M2Ey
YjgxZDcyZDJhMzAwZjIyMmU5YjMyMjhhYjJlNjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCiBtZXNzYWdlcyAtPiBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlQ0RN
KFN0cmluZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllcj4gcGxheWVySWQpIC0+IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXIgaWQpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlQ0RNKFN0cmluZyBrZXlTeXN0ZW0sIE9w
dGlvbmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcj4gcGxheWVySWQpIC0+IChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQpIFN5bmNocm9ub3VzCiAgICAgU3VwcG9y
dHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSkg
LT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAppbmRleCAyZDE3
YTg5MWFhYjExZWRlNmRiZWQ3YzBmZDAyZDI4NTI3MWU4MzYxLi5kOWJmNTIyNzJjMzcyOTE1NzVi
NWIzOTMyNjJlNzcyMTNiOTMwZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKQEAgLTM2LDEyICszNiwxMiBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNy
ZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gZmFjdG9yeSwgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYmIHBsYXllcklkLCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6TGVnYWN5Q0RNPiYmIGNkbSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lD
RE1Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eT4gZmFjdG9yeSwgTWVkaWFQbGF5ZXJJZGVudGlmaWVyJiYgcGxheWVy
SWQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+JiYgY2RtKQogewogICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+KG5ldyBSZW1vdGVMZWdh
Y3lDRE1Qcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHBsYXllcklkKSwgV1RGTW92ZShj
ZG0pKSk7CiB9CiAKLVJlbW90ZUxlZ2FjeUNETVByb3h5OjpSZW1vdGVMZWdhY3lDRE1Qcm94eShX
ZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYgcGxheWVySWQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpMZWdhY3lDRE0+JiYgY2RtKQorUmVtb3RlTGVnYWN5Q0RNUHJveHk6OlJlbW90ZUxlZ2Fj
eUNETVByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3Rvcnks
IE1lZGlhUGxheWVySWRlbnRpZmllciYmIHBsYXllcklkLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TGVnYWN5Q0RNPiYmIGNkbSkKICAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQog
ICAgICwgbV9wbGF5ZXJJZChXVEZNb3ZlKHBsYXllcklkKSkKICAgICAsIG1fY2RtKFdURk1vdmUo
Y2RtKSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3JlYXRl
U2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ3JlYXRlU2Vzc2lvbkMKICAgICBjYWxs
YmFjayhXVEZNb3ZlKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94
eTo6c2V0UGxheWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
cj4mJiBwbGF5ZXJJZCkKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXllcklkKE9w
dGlvbmFsPE1lZGlhUGxheWVySWRlbnRpZmllcj4mJiBwbGF5ZXJJZCkKIHsKICAgICBpZiAoIXBs
YXllcklkKQogICAgICAgICBtX3BsYXllcklkID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCAyYjZkMTdh
OWE0NTcxZTM0ODg0Y2ZmOGNhOWJlZWMzMzMxZjgyMDZlLi42YTVjNjcyNWNhYTliZGI4NjdhYjg2
YjhjNTdmMzZkZTJjODk2ZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtNTAsMTQgKzUwLDE0IEBAIGNsYXNz
IFJlbW90ZUxlZ2FjeUNETVByb3h5CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6TGVnYWN5Q0RNQ2xp
ZW50CiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5
PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+LCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdh
Y3lDRE0+JiYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJv
eHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4sIFdlYkNvcmU6
Ok1lZGlhUGxheWVySWRlbnRpZmllciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5
Q0RNPiYmKTsKICAgICB+UmVtb3RlTGVnYWN5Q0RNUHJveHkoKTsKIAogICAgIFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQo
KTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk7Ci0gICAgUmVtb3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHk+JiYsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImJiwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJik7CisgICAgUmVtb3RlTGVnYWN5Q0RN
UHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYsIFdlYkNvcmU6Ok1l
ZGlhUGxheWVySWRlbnRpZmllciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RN
PiYmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTY4LDEz
ICs2OCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJp
bmcmLCBTdXBwb3J0c01JTUVUeXBlQ2FsbGJhY2smJik7CiAgICAgdXNpbmcgQ3JlYXRlU2Vzc2lv
bkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
SWRlbnRpZmllciYmKT47CiAgICAgdm9pZCBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENy
ZWF0ZVNlc3Npb25DYWxsYmFjayYmKTsKLSAgICB2b2lkIHNldFBsYXllcklkKE9wdGlvbmFsPE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYpOworICAgIHZvaWQgc2V0UGxheWVy
SWQoT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmKTsKIAogICAgIC8v
IExlZ2FjeUNETUNsaWVudAogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXllcj4gY2RtTWVk
aWFQbGF5ZXIoY29uc3QgV2ViQ29yZTo6TGVnYWN5Q0RNKikgY29uc3QgZmluYWw7CiAKICAgICBX
ZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OwotICAgIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9wbGF5ZXJJZDsKKyAgICBXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXIgbV9wbGF5ZXJJZDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TGVnYWN5Q0RNPiBtX2NkbTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5p
bgppbmRleCA4NzFiYThiZDg3ZTdkOTI3MDdjYzA5ZDhmM2NjNDBkNmY0OGRmY2IzLi45YjQ2YTgy
M2RiMzRjYTAyYTRlOTY4ZjVhNzFiMWI3NWM2ZjhlZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVMZWdhY3lDRE1Q
cm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBTdXBwb3J0c01JTUVUeXBlKFN0cmluZyBtaW1lVHlw
ZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5bmNocm9ub3VzCiAgICAgQ3JlYXRlU2Vzc2lvbihTdHJp
bmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgLT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXIgaWQpIFN5bmNocm9ub3VzCi0gICAgU2V0UGxheWVySWQoT3B0aW9u
YWw8V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJZCkK
KyAgICBTZXRQbGF5ZXJJZChPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXI+
IHBsYXllcklkKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IGViMTUwY2IzMGFlMTg3YWU5NDk0ODZiYjRhMmFlMWMxNWNjNDVmNWUuLjExMTg1NzI1N2Nj
N2JmM2MwZjM3MGE3ZGQyOWYxMWQ3ZGZiMWEzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcApAQCAtNTksNyArNTksNyBAQCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKIHsKIH0KIAotdm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciBpZCwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyIGVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9u
JiYgcHJveHlDb25maWd1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlh
UGxheWVyQ29uZmlndXJhdGlvbiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVu
dGlmaWVyIGlkLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5l
SWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24mJiBwcm94eUNv
bmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25m
aWd1cmF0aW9uJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFtX3Byb3hp
ZXMuY29udGFpbnMoaWQpKTsKIApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHBsYXllckNvbmZpZ3VyYXRpb24pOwogfQogCi12
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkZWxldGVNZWRpYVBsYXllcihNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQordm9pZCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlk
KQogewogICAgIGlmIChhdXRvIHByb3h5ID0gbV9wcm94aWVzLnRha2UoaWQpKQogICAgICAgICBw
cm94eS0+aW52YWxpZGF0ZSgpOwpAQCAtMTk0LDE3ICsxOTQsMTcgQEAgdm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmcKIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2
ZVBsYXllck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgaWYgKGF1dG8qIHBsYXllciA9IG1fcHJveGllcy5nZXQobWFrZU9i
amVjdElkZW50aWZpZXI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllclR5cGU+KGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgaWYgKGF1dG8qIHBsYXllciA9IG1fcHJveGll
cy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8TWVkaWFQbGF5ZXJJZGVudGlmaWVyVHlwZT4oZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgcGxheWVyLT5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYgZW5jb2RlcikKIHsKLSAgICBpZiAoYXV0byogcGxheWVyID0gbV9wcm94aWVzLmdldCht
YWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlw
ZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICBpZiAoYXV0byogcGxheWVyID0gbV9w
cm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJUeXBl
PihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICBwbGF5ZXItPmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKIH0KIAotUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KGNv
bnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImIGlkKQorUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eSogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KGNvbnN0
IE1lZGlhUGxheWVySWRlbnRpZmllciYgaWQpCiB7CiAgICAgYXV0byByZXN1bHRzID0gbV9wcm94
aWVzLmZpbmQoaWQpOwogICAgIGlmIChyZXN1bHRzICE9IG1fcHJveGllcy5lbmQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXggNTFlNzFlNzc3Mzc4YjhkYWZiOWM3YzYyNzAyYjkx
YTY3NWZhMWViZC4uM2ZiODhjMDQ0Y2EyMDk5MzkyNzQxNTE4OWFmYmM5YzgwMjg2MTFlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTI4LDExICsyOCwxMSBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlRyYWNrUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckhhbmRsZS5oPgogI2luY2x1ZGUgPHd0Zi9M
b2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02OCwxNSArNjgsMTUgQEAg
cHVibGljOgogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNl
bmRpZgogCi0gICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSogZ2V0UHJveHkoY29uc3QgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYpOworICAgIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHkqIGdldFByb3h5KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciYpOwogCiBw
cml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCi0gICAgdm9pZCBjcmVhdGVN
ZWRpYVBsYXllcihNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVy
UHJveHlDb25maWd1cmF0aW9uJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQ
bGF5ZXJDb25maWd1cmF0aW9uJik+JiYpOwotICAgIHZvaWQgZGVsZXRlTWVkaWFQbGF5ZXIoTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVNZWRpYVBs
YXllcihXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZp
Z3VyYXRpb24mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZp
Z3VyYXRpb24mKT4mJik7CisgICAgdm9pZCBkZWxldGVNZWRpYVBsYXllcihXZWJDb3JlOjpNZWRp
YVBsYXllcklkZW50aWZpZXIpOwogCiAgICAgLy8gTWVkaWEgcGxheWVyIGZhY3RvcnkKICAgICB2
b2lkIGdldFN1cHBvcnRlZFR5cGVzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4m
Jik7CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYp
OwogICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgSGFzaE1hcDxNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eT4+IG1fcHJveGllczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+PiBtX3Byb3hp
ZXM7CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNGNiZDQ2MTRiNjJiOGMzZTdkNGY1NmNh
OTUwYzk0NDc2MTI5OTMyZi4uOGRmMzU2YTRjYmJjNjNkNDViNjdiMDViY2MwMmJkODAyNzNmNzc4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MjQsOCArMjQsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRlTWVk
aWFQbGF5ZXIoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb25maWd1cmF0aW9uIHByb3h5Q29uZmlndXJhdGlvbikgLT4gKHN0cnVjdCBXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBB
c3luYwotICAgICBEZWxldGVNZWRpYVBsYXllcihXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIgaWQpCisgICAgQ3JlYXRlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyIGlkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHN0cnVjdCBX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uIHByb3h5Q29uZmlndXJh
dGlvbikgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBw
bGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYworICAgIERlbGV0ZU1lZGlhUGxheWVyKFdlYkNvcmU6
Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZCkKIAogICAgIEdldFN1cHBvcnRlZFR5cGVzKGVudW06
dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
cmVtb3RlRW5naW5lSWRlbnRpZmllcikgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5jaHJv
bm91cwogICAgIFN1cHBvcnRzVHlwZUFuZENvZGVjcyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHR5cGUpIC0+
IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIHN1
cHBvcnQpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggNGVjYTY3MTZlZWMzZWE1
M2NkYjY5MDFjOGYyYzNmZTc1YzZmYmMxNC4uNTVjOGYwN2Q3OGJiNjMxOWZmYzRjOGJlMWEyMGU2
NzQxNmU2ZTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6OlJlbW90ZU1lZGlhUGxheWVyUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkmIG1hbmFnZXIsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyUHJveHlD
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK1JlbW90ZU1lZGlhUGxheWVyUHJveHk6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIG1hbmFn
ZXIsIE1lZGlhUGxheWVySWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRl
bnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKQogICAgIDogbV9pZChpZCkKICAgICAsIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92
ZShjb25uZWN0aW9uKSkKICAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5k
ZXggNDFiNTM2NmY4YzRjOTQ1NGMzMTU4YTFjNWE2MzdjNmM1MDM1NjgwNy4uY2Q0MGMyMjk5M2Qy
MjA2NzUzYjkzYzYzYWI3NGVkYTkzMDNjZjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0yOCw3ICsy
OCw2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgotI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5o
IgpAQCAtNDAsNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJIYW5kbGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC03NiwxMCAr
NzYsMTAgQEAgY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBmaW5hbAogICAgICwgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eSYsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24mJik7CisgICAgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYsIFdlYkNvcmU6
Ok1lZGlhUGxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXll
clByb3h5Q29uZmlndXJhdGlvbiYmKTsKICAgICB+UmVtb3RlTWVkaWFQbGF5ZXJQcm94eSgpOwog
Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVuZGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQorICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBp
ZGVuZGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIHZvaWQgaW52YWxpZGF0ZSgp
OwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQpAQCAtMjc2LDcgKzI3Niw3
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZSosIFJl
ZjxSZW1vdGVWaWRlb1RyYWNrUHJveHk+PiBtX3ZpZGVvVHJhY2tzOwogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIFJlZjxSZW1vdGVUZXh0VHJhY2tQcm94eT4+
IG1fdGV4dFRyYWNrczsKIAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
bV9pZDsKKyAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgbV9pZDsKICAgICBSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwogICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhUGxheWVyPiBtX3BsYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IDcwZDNkODhmMmJmNGE2ZjFjZmM0ZjE4ODcwNGVkNjc3MGU0OTc3YWYuLmNjZTNj
NjBiZGE3ZDQ5MGE0NjYwN2YxMWYyMGYwMjNjMmY5MjE1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjE1LDYgKzIxNSw3IEBAIGRlZiB0eXBlc190aGF0
X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVy
JywKKyAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3knLApA
QCAtMjQzLDcgKzI0NCw2IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xh
cmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQnLAogICAgICAg
ICAnV2ViS2l0OjpMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0
OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UERGUGx1Z2luSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyJywKQEAgLTYxNCw2
ICs2MTQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6
OktleXByZXNzQ29tbWFuZCc6IFsnPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUnOiBb
JzxXZWJDb3JlL0xlZ2FjeUNETVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tC
YWNrRm9yd2FyZExpc3QnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKKyAgICAg
ICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvTWVkaWFQbGF5
ZXJIYW5kbGUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOjpIYXNBY3Rpdml0eSc6IFsnPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3knOiBbJzxXZWJDb3JlL0Rv
Y3VtZW50TG9hZGVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpOZXR3b3JrVHJhbnNhY3Rpb25J
bmZvcm1hdGlvbic6IFsnPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPiddLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGFi
YWYyNjg3MzIxNGJjNjk2MjU1MDA0ODNkYjE3ZmZiYjQ0NzhlNy4uNDQ4MWMwM2E1ZWUzNDNjNzJl
ZDM1MTE3YzM5N2MwZDg3MzhhYmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTYzLDcgKzIxNjMsNiBAQAogCQkwNzkyMzE0MjIz
OUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUyIC8q
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4RTIg
LyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3OTRCNEFCMjQ0NTFCQjkwMDAxQjlDNCAvKiBNZWRpYVVzYWdlTWFuYWdlckNv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFVc2FnZU1hbmFnZXJDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5NEI0QUMyNDQ1MUJCOTAwMDFCOUM0IC8q
IE1lZGlhVXNhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVXNhZ2VNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OTRCNEFFMjQ0NTI0QjAwMDAxQjlDNCAv
KiBNZWRpYVVzYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVVzYWdlTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTAwLDcgKzU0OTksNiBA
QAogCQkJCTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwICovLAogCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLAotCQkJCTA3OTIzMTRFMjM5RDVGNTMw
MDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8sCiAJCQkJ
OUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovLAogCQkJ
CTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHku
Y3BwICovLAogCQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHkuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA0ZDRh
MWZjNWI0MmNjYjFhYWM1N2JiNTQ4ZjFkNGYxMGMwZGViM2NmLi45Njk0YmFhNTQxOTE0MmYzYmY5
YjJiZjA1ZTJiODkzNGQ3NDk1MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBA
IC05MSw3ICs5MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogI2VuZGlmCiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpCi1NZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1h
bmFnZXIpCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZShNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50
aWZpZXIgZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIHBsYXllcklkZW50
aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKICAgICA6IG1fcGxheWVy
KHBsYXllcikKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBsYXll
ci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKQEAgLTExNTYsNiArMTE1NiwxMSBAQCBXVEZMb2dDaGFu
bmVsJiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAogfQogI2Vu
ZGlmCiAKK01lZGlhUGxheWVySGFuZGxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRl
SGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBtX2lkIH07Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDFkOGRi
NzgyYjdiODQyNDYxMGQ1ZGMxN2FhMzc2YzljNzdlYjc4OWMuLmEwZTNjYmFiMjEwOTNiZTY4ZjI5
NjIwOTI0ODNmMTE3ODI0YThmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtNjks
MTIgKzY5LDEyIEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBmaW5hbAogI2VuZGlm
CiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU+IGNyZWF0ZShXZWJDb3JlOjpNZWRpYVBsYXllciogcGxheWVyLCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+IGNyZWF0ZShXZWJDb3JlOjpNZWRpYVBsYXllciog
cGxheWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIg
cmVtb3RlRW5naW5lSWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKICAgICB7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4ocGxheWVyLCBy
ZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBtYW5hZ2VyKTsKICAgICB9CiAKLSAg
ICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXIqLCBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYpOworICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShXZWJDb3JlOjpNZWRpYVBsYXllciosIFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImKTsKICAgICB+TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlKCk7CiAKICAgICB2b2lkIHNldENvbmZpZ3VyYXRpb24oUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uJiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmKTsK
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX2lu
dmFsaWQgPSB0cnVlOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
bW90ZUVuZ2luZUlkZW50aWZpZXI7IH0KLSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGl0ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGl0ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYW5h
Z2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOyB9CiAKICAgICB2b2lkIG5l
dHdvcmtTdGF0ZUNoYW5nZWQoUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKQEAgLTI2Miw2ICsy
NjIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVjdCwg
R0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJv
b2wpIGZpbmFsOwogICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSBmaW5hbDsKIAorICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySGFuZGxlIGNyZWF0
ZUhhbmRsZSgpIGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCBzZXRQcmVsb2FkKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpQcmVsb2FkKSBmaW5hbDsKIAogICAgIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9G
cmFtZSgpIGNvbnN0IGZpbmFsOwpAQCAtMzY4LDcgKzM3MCw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9yZW1vdGVFbmdpbmVJZGVudGlmaWVy
OwotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZDsKKyAgICBXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgbV9pZDsKICAgICBSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0
ZSBtX2NhY2hlZFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2YjNjNTlmYmU0MmI2YmMxYTMw
NjcxZTcwMGE1NzM0ZGRiOWY1My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSAsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0K
LSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotZW51bSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZSB7IH07Ci11c2lu
ZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZT47Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAppbmRleCA4MWM2MDNiMGYzZmZjOTczZTg5ZjBm
ODBlMDNmM2I2ZTVhMWRhYTIwLi5lNWE2ZDk0ZWJhY2Y1MzhkMWRmZjkxNTg2MWZjZjk2MjgxOGRl
YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE0uY3BwCkBAIC03NCwxMiArNzQsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbihX
ZWJDb3IKICAgICByZXR1cm4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKG1fZmFjdG9y
eSwgV1RGTW92ZShpZCkpOwogfQogCi12b2lkIFJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVySWQo
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKK3ZvaWQgUmVtb3RlTGVnYWN5
Q0RNOjpzZXRQbGF5ZXJJZChNZWRpYVBsYXllcklkZW50aWZpZXIgaWQpCiB7CiAgICAgaWYgKCFt
X2ZhY3RvcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXI+IG9wdGlvbmFsSWQ7CisgICAgT3B0aW9uYWw8TWVkaWFQbGF5
ZXJJZGVudGlmaWVyPiBvcHRpb25hbElkOwogICAgIGlmIChpZCkKICAgICAgICAgb3B0aW9uYWxJ
ZCA9IGlkOwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OlNldFBsYXllcklkKG9wdGlv
bmFsSWQpLCBtX2lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmgKaW5kZXggZjU0Y2QzY2M0Mjk0MTcxNjYxOWY1
MDNiNjNmOTczYjExYTFlMjI0MC4uMTMxZTY3OWQ1NTE4YjlhZjM0MmU0OWU2OGViNWJiMWY4NzAx
NWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETS5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCi0jaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETVByaXZhdGUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySGFuZGxlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oV2Vi
Q29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOwotICAgIHZvaWQgc2V0UGxheWVy
SWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRQbGF5
ZXJJZChXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFJl
bW90ZUxlZ2FjeUNETShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYsIFJlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcAppbmRleCA5OGZh
YTMyMjcyMzNjMGYxMWQwNjZlOWE4MzdhZDljYzY4NDkxNmI2Li42NTgwZjc4ZjMwMjk4OWFkM2Ri
NmYwMDljY2QzM2E4MGZjZmEyMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKQEAgLTEw
OCw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKFdlYkNvcmU6OgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyPiBwbGF5ZXJJZDsKKyAgICBPcHRpb25hbDxNZWRpYVBsYXllcklkZW50aWZpZXI+IHBs
YXllcklkOwogICAgIGlmIChhdXRvIHBsYXllciA9IGNkbS0+bWVkaWFQbGF5ZXIoKSkKICAgICAg
ICAgcGxheWVySWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLm1lZGlhUGxheWVyTWFuYWdlcigp
LmZpbmRSZW1vdGVQbGF5ZXJJZChwbGF5ZXItPnBsYXllclByaXZhdGUoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRleCBjMjg5ZWU3OGY1NmRmZmY4M2ZhZmEwY2QzNmFjZGE4
M2EzODc3NmJiLi42MWJiYThiMjY2ZWRmYmY1YTI5NGNiNjEzNTM0N2FhNmYxNzlhYTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpjcmVhdGVSZW0KICAgICBhdXRvIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBwbGF5ZXIt
PmRvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKICAgICBwcm94eUNvbmZpZ3VyYXRpb24uZG9jdW1l
bnRTZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAKLSAgICBhdXRvIGlk
ZW50aWZpZXIgPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OworICAgIGF1dG8gaWRlbnRpZmllciA9IE1lZGlhUGxheWVySWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKICAgICBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlv
bjsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyksIGlkZW50aWZpZXIsIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBXVEZNb3Zl
KGRvY3VtZW50U2VjdXJpdHlPcmlnaW4pXShhdXRvJiYgcGxheWVyQ29uZmlndXJhdGlvbikgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC0xODMsMTMgKzE4MywxMyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNyZWF0ZVJlbQogICAgIHJldHVybiByZW1vdGVQbGF5ZXI7CiB9CiAKLXZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkZWxldGVSZW1vdGVNZWRpYVBsYXllcihNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQordm9pZCBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI6OmRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVySWRlbnRpZmllciBpZCkK
IHsKICAgICBtX3BsYXllcnMudGFrZShpZCk7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkRlbGV0ZU1lZGlhUGxheWVyKGlkKSwgMCk7CiB9CiAKLU1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpmaW5kUmVtb3RlUGxheWVySWQo
Y29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBwbGF5ZXIpCitNZWRpYVBsYXllcklk
ZW50aWZpZXIgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpmaW5kUmVtb3RlUGxheWVySWQoY29u
c3QgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBwbGF5ZXIpCiB7CiAgICAgZm9yIChhdXRv
IHBhaXIgOiBtX3BsYXllcnMpIHsKICAgICAgICAgaWYgKHBhaXIudmFsdWUgPT0gcGxheWVyKQpA
QCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhCiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjpkaWRSZWNlaXZlUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBpZiAoY29uc3Qg
YXV0byYgcGxheWVyID0gbV9wbGF5ZXJzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
KSkKKyAgICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0gbV9wbGF5ZXJzLmdldChtYWtlT2JqZWN0
SWRlbnRpZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKQogICAgICAgICBwbGF5ZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAppbmRleCA3MTg2ZmY0ZjMxMjQ2
ZDgxN2ZjMjRkYmIzZDRmMTAxMjVlZDk5M2NhLi45Y2I5ZjhhNDBkZThiYmY3MjJlODJhMDZhMTMx
NDI2MTBlZmQ1NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKQEAgLTI4LDcgKzI4LDYg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXll
clN0YXRlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKQEAg
LTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckhhbmRsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY4LDkgKzY4
LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUGxheWVyTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAgIHZvaWQgZGVsZXRlUmVtb3RlTWVkaWFQ
bGF5ZXIoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisgICAgdm9pZCBkZWxl
dGVSZW1vdGVNZWRpYVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIpOwogCi0g
ICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBmaW5kUmVtb3RlUGxheWVySWQo
Y29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKik7CisgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGZpbmRSZW1vdGVQbGF5ZXJJZChjb25zdCBXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqKTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVSZW1v
dGVNZWRpYVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllciosIFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6
CiAKICAgICBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUmIHR5cGVDYWNoZShXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOwogCi0gICAgSGFzaE1h
cDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZT4+IG1fcGxheWVyczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6Ok1lZGlhUGxh
eWVySWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+PiBtX3BsYXll
cnM7CiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogICAgIG11dGFibGUgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBudWxscHRyIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KaW5kZXggZDU3NzY2Mjg4
OTkzMGU1MjY3NzM1OTFlNjM4MzBiMDYxYWNhZjIyMy4uYWU3YTlkM2FmNGIzNWRiZTU1NjNlMjJh
MDNjNTJjMGQ5OWJhN2M3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUNvY29hLm1tCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1NZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXImIG1hbmFnZXIpCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIHBsYXll
cklkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICA6IG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dn
ZXIoKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRp
ZmllcigpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410639</attachid>
            <date>2020-10-06 08:22:25 -0700</date>
            <delta_ts>2020-10-06 10:37:35 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-217339-20201006082224.patch</filename>
            <type>text/plain</type>
            <size>80210</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk1OWUyZjA0NWM3OGQx
NTdmYmQ3ZTU0NjY1ZjEwNzU4ZDIyMzU2My4uMjQyMjkwMGQwOTA0NzhhOWE0YThlNzNlMzYzNzNh
NGIyOTFmYTMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTEwLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gU3VwcG9ydCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlKCkgd2l0aCBIVE1M
VmlkZW9FbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTczMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRGcmFtZUZvck1lZGlhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OnBsYXllclByaXZhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OnBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNyZWF0ZUhh
bmRsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJIYW5k
bGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJIYW5kbGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllckhhbmRsZTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZTo6Y3JlYXRlSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpwYWludEZyYW1lRm9yTWVkaWEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYTo6UGFpbnRGcmFtZUZv
ck1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVk
aWE6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRv
cjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JN
ZWRpYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1l
Rm9yTWVkaWE6OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpQYWludEZyYW1lRm9yTWVkaWE6OnBsYXllckhhbmRsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVk
aWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWly
b09wZXJhdGlvblJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RDo6cGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWludFJlcGxhY2Vk
KToKKwogMjAyMC0xMC0wMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gU3VwcG9ydCBkcmF3aW5nIHRleHQgaW4gMkQgY2Fu
dmFzIHdpdGggZm9udCBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ZTdkMmJlNzk3ZWJhY2JmYjljNzMy
YzBjMmMzMGJkMGJiMjQ1NGY2Li5lN2JmNjlhN2VhZTAxNjNjOGFkYzFhMDRiMjM1NjU0NzkzYjJk
MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIwLTEwLTA1ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU3VwcG9y
dCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlKCkgd2l0aCBIVE1MVmlkZW9FbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTcz
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3Jr
IGluIHByb2dyZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpiYWNrZW5kKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6YXBwbHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNv
bnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETVByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94
eTo6UmVtb3RlTGVnYWN5Q0RNUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1Qcm94eTo6c2V0UGxheWVySWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVBs
YXllck1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpSZW1vdGVNZWRpYVBsYXll
clByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRlSGFuZGxlIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE06OnNldFBsYXllcklkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbW90ZU1lZGlhUGxh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkZWxldGVS
ZW1vdGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpkaWRSZWNlaXZlUGxheWVyTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlKToKKwogMjAyMC0xMC0wMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gU3VwcG9ydCBkcmF3aW5nIHRl
eHQgaW4gMkQgY2FudmFzIHdpdGggZm9udCBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
Yzg3NDhhMjE2MjdjYzMzNGNlMjJiZTQ2OTNlNmZjODUzZmUzYTYwZC4uMDAzNjU5ZTgxZTg2NjQ0
MmMxYmRkZTY5Yzk2MjM5Zjg1ZWFiNWY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTg3LDYg
KzExODcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
RW51bXMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVySGFuZGxlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYzE4ZDViMGM4ZWM1Yzc4N2MzN2Y2ODQ4OTEzN2M1ODRlMDA0MWM0MS4uMGNmOWU0NjA3
YWFhYzRmNzBiMGFiZmE3NWQzMjhkMjMyNmM0NzAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTEzNSw2ICs1MTM1LDcgQEAK
IAkJRjNBQkZFMEMxMzBFOURBMDAwRTdGN0QxIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzQUJGRTBCMTMwRTlE
QTAwMEU3RjdEMSAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmggKi87IH07CiAJCUYzRDQ2MTQ5MTE2
MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJy
b3JIYW5kbGVyLmggKi87IH07CiAJCUY0MDNFNzg3MjM2M0I1OEMwMDA0NDU1MCAvKiBFbnRlcktl
eUhpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
MDNFNzg1MjM2M0I1OEMwMDA0NDU1MCAvKiBFbnRlcktleUhpbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDI5MjYxODI1MjY0RDQ0MDAwMDc4
OTggLyogTWVkaWFQbGF5ZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0MjkyNjE3MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXllckhh
bmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0MzNFOTAzMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMzRTkwMjFEQkJEQkEyMDBF
RjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUY0NDBFNzdBMjMzRDk0RDcwMDYzRjlBQiAvKiBOYXZpZ2F0
b3JDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NDBFNzZGMjMzRDk0RDMwMDYzRjlBQiAvKiBOYXZpZ2F0b3JDbGlwYm9hcmQuaCAqLzsg
fTsKIAkJRjQ0MEU3N0IyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzcwMjMzRDk0RDQw
MDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggKi87IH07CkBAIC0xNjE1OCw2ICsxNjE1OSw3IEBA
CiAJCUYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Vycm9ySGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDAzRTc4NTIzNjNCNThDMDAwNDQ1NTAgLyogRW50ZXJLZXlIaW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVudGVyS2V5SGludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDAzRTc4NjIzNjNCNThDMDAwNDQ1NTAgLyogRW50ZXJLZXlIaW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEVudGVyS2V5SGludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0MjkyNjE3MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXllckhhbmRsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllckhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDJDRUI1NDIxNDAzMUVFMDAyRENBNzIgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXND
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzNFOTAyMURCQkRCQTIwMEVGMEQx
NCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0YXRpY1Bhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzM0U5
MDQxREJCREJDMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RhdGljUGFzdGVib2FyZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNjE1Myw2ICsyNjE1NSw3IEBACiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1l
ZGlhUGxheWVyLmNwcCAqLywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQ
bGF5ZXIuaCAqLywKIAkJCQlDRDUyMDlFMzFCMEJEODM4MDA3NzE4NEUgLyogTWVkaWFQbGF5ZXJF
bnVtcy5oICovLAorCQkJCUY0MjkyNjE3MjUyNjRENDQwMDAwNzg5OCAvKiBNZWRpYVBsYXllckhh
bmRsZS5oICovLAogCQkJCTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclBy
aXZhdGUuaCAqLywKIAkJCQlDRDY0MUVCMTE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQ
cml2YXRlLmggKi8sCiAJCQkJQ0REQzFFNzkxOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNl
UHJpdmF0ZUNsaWVudC5oICovLApAQCAtMzI5NTYsNiArMzI5NTksNyBAQAogCQkJCTA3N0I2NDEz
MUI5NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTQ0NjEzRTQwQ0Q2ODFBMjAwRkFEQTc1IC8qIE1lZGlhUGxheWVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRDUyMDlFNDFCMEJEODM4MDA3NzE4NEUgLyogTWVkaWFQbGF5
ZXJFbnVtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQyOTI2MTgyNTI2NEQ0NDAwMDA3ODk4IC8q
IE1lZGlhUGxheWVySGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzI1RUZBOTIzOUFENzkz
MDBBNTM4QTkgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZG
MEQwRTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCA4ZGZhYmIzMjJjNDAwMGJhNjY5ODYxNTg4
YzFiYWRjN2FkZjM5ODJmLi5jOWYyOGJkMmI4MzQyY2YwMWE1NzM0OTUwMTczNDAyYzY0ODZhNTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTI5Nyw3ICsy
OTcsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgcGxheWVyLT5zZXRWaXNpYmxlKHRydWUpOyAvLyBNYWtlIHBsYXllciB2aXNpYmxlIG9yIGl0
IHdvbid0IGRyYXcuCi0gICAgcGxheWVyLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChjb250
ZXh0LCBkZXN0UmVjdCk7CisgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwg
ZGVzdFJlY3QpOwogfQogCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZv
cm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDI2NWNiNTdkMzkzOTUw
MzhhNjI5ZjM1YmNkNjg2M2FhNDQ0MzljNjcuLjdhZjU1MDJjNThmY2M0OTIwMWQ3YmY2ZTgxOWU2
ZGMwOTk1ZDJmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEltcGwuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTEyMzksNiArMTI0MSw3IEBA
IFZlY3RvcjxGbG9hdFBvaW50PiBHcmFwaGljc0NvbnRleHQ6OmNlbnRlckxpbmVBbmRDdXRPZmZD
b3JuZXJzKGJvb2wgaXNWZXJ0aWNhbExpCiB9CiAKICNpZiAhVVNFKENHKQorCiBib29sIEdyYXBo
aWNzQ29udGV4dDo6c3VwcG9ydHNJbnRlcm5hbExpbmtzKCkgY29uc3QKIHsKICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMjUxLDYgKzEyNTQsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldERl
c3RpbmF0aW9uRm9yUmVjdChjb25zdCBTdHJpbmcmLCBjb25zdCBGbG9hdFJlY3QmKQogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmFkZERlc3RpbmF0aW9uQXRQb2ludChjb25zdCBTdHJpbmcmLCBjb25z
dCBGbG9hdFBvaW50JikKIHsKIH0KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBhaW50RnJhbWVG
b3JNZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
KQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHBsYXllci5zZXRWaXNpYmxlKHRydWUpOworICAgIHBsYXllci5wbGF5ZXJQcml2YXRlKCktPnBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KCp0aGlzLCBkZXN0aW5hdGlvbik7Cit9CisKICNlbmRp
ZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCmluZGV4IDA4OGYyZTUzOTZiOWI0Mzg1ODg3ZWMwMWZhY2E4ZTdkZDkwZTE4MDcu
LmRiNGMwMDJlY2NkMjJlNmZlOTQwODdjNjlmOTEyOGQ0Mjg5OTI3YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC05Miw2
ICs5Miw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGw7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFJlY3Q7Citj
bGFzcyBNZWRpYVBsYXllcjsKIGNsYXNzIFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w7CiBjbGFzcyBQYXRoOwpAQCAtNTE2LDYgKzUxNyw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENvbnRlbnRmdWxQYWludERldGVjdGVkKCkgeyBtX2NvbnRlbmZ1bFBhaW50RGV0
ZWN0ZWQgPSB0cnVlOyB9CiAgICAgYm9vbCBjb250ZW5mdWxQYWludERldGVjdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW5mdWxQYWludERldGVjdGVkOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pOworCiAjaWYgT1MoV0lORE9XUykKICAgICBIREMgZ2V0V2luZG93c0NvbnRl
eHQoY29uc3QgSW50UmVjdCYsIGJvb2wgc3VwcG9ydEFscGhhQmxlbmQpOyAvLyBUaGUgcGFzc2Vk
IGluIHJlY3QgaXMgdXNlZCB0byBjcmVhdGUgYSBiaXRtYXAgZm9yIGNvbXBvc2l0aW5nIGluc2lk
ZSB0cmFuc3BhcmVuY3kgbGF5ZXJzLgogICAgIHZvaWQgcmVsZWFzZVdpbmRvd3NDb250ZXh0KEhE
QywgY29uc3QgSW50UmVjdCYsIGJvb2wgc3VwcG9ydEFscGhhQmxlbmQpOyAvLyBUaGUgcGFzc2Vk
IGluIEhEQyBzaG91bGQgYmUgdGhlIG9uZSBoYW5kZWQgYmFjayBieSBnZXRXaW5kb3dzQ29udGV4
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuaAppbmRleCA4YmM5YzFjMmVjYzBjYmZjMzgyNmFhMWUwMTkxMzFjODkzNzJk
M2ZlLi41NTFlMDNhMDQwOGJiN2ExYWQ1ZDlhYzA0ZDdjYzQwMzI5YjU5MDFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCkBAIC0xMDcsNiArMTA3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCBjbGlw
Qm91bmRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24pID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggOTAyZjU4OTk3ZjcyNmNmYjE3YTYy
NmJkOWU5NDY1ZTU5ZGRlY2IwNy4uZmI0OTQxNjRkYWI2OTE3NDE3N2MwMDkwMjk5ZDY1ZDZlNDY3
Mzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCiAjaW5j
bHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKQEAgLTMwNCw2
ICszMDUsMTYgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHRleHRQbGFpbigpCiAgICAgcmV0
dXJuIHRleHRQbGFpbjsKIH0KIAorY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBN
ZWRpYVBsYXllcjo6cGxheWVyUHJpdmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS5nZXQoKTsKK30KKworTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBNZWRpYVBsYXllcjo6
cGxheWVyUHJpdmF0ZSgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwogY29u
c3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bWVkaWFFbmdpbmUoTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byYg
ZW5naW5lcyA9IGluc3RhbGxlZE1lZGlhRW5naW5lcygpOwpAQCAtOTY3LDExICs5NzgsNiBAQCB2
b2lkIE1lZGlhUGxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVj
dCYgcikKICAgICBtX3ByaXZhdGUtPnBhaW50KHAsIHIpOwogfQogCi12b2lkIE1lZGlhUGxheWVy
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZs
b2F0UmVjdCYgcikKLXsKLSAgICBtX3ByaXZhdGUtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KHAsIHIpOwotfQotCiBib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmpl
Y3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgZmxpcFkpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsK
QEAgLTE2MDksNiArMTYxNSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyOjphdWRpb091dHB1dERldmlj
ZUNoYW5nZWQoKQogICAgIG1fcHJpdmF0ZS0+YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCk7CiB9
CiAKK01lZGlhUGxheWVySGFuZGxlIE1lZGlhUGxheWVyOjpjcmVhdGVIYW5kbGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZUhhbmRsZSgpOworfQorCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiBjb25zdCBMb2dnZXImIE1lZGlhUGxheWVyOjptZWRpYVBsYXllckxv
Z2dlcigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAppbmRleCBkNDY3MzFhMmJhZGY4ODU3MDE4MDE5ODgxNTYyMzJjMzRiMWZkZmU2Li41MzU3
OTBkOWRmMTg5ZDJkNjNkOWUwYTQxYWVkMmI0MmJmYjBjMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xh
c3MgVGV4dFRyYWNrUmVwcmVzZW50YXRpb247CiAKIHN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgR3Jh
cGhpY3NEZXZpY2VBZGFwdGVyOworc3RydWN0IE1lZGlhUGxheWVySGFuZGxlOwogc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIAogc3RydWN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMg
ewpAQCAtNDIxLDcgKzQyMiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENsb3NlZENhcHRpb25z
VmlzaWJsZShib29sIGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CiAKICAgICB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgcGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICAg
ICAvLyBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBpcyB1c2VkIHRvIGRvIHRo
ZSBHUFUtR1BVIHRleHR1cmVzIGNvcHkgd2l0aG91dCBhIHJlYWRiYWNrIHRvIHN5c3RlbSBtZW1v
cnkuCiAgICAgLy8gVGhlIGZpcnN0IGZpdmUgcGFyYW1ldGVycyBkZW5vdGUgdGhlIGNvcnJlc3Bv
bmRpbmcgR3JhcGhpY3NDb250ZXh0LCBkZXN0aW5hdGlvbiB0ZXh0dXJlLCByZXF1ZXN0ZWQgbGV2
ZWwsIHJlcXVlc3RlZCB0eXBlIGFuZCB0aGUgcmVxdWlyZWQgaW50ZXJuYWxGb3JtYXQgZm9yIGRl
c3RpbmF0aW9uIHRleHR1cmUuCkBAIC02MjksNyArNjI5LDggQEAgcHVibGljOgogICAgIHZvaWQg
cmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1
Z2luc0NhbGxiYWNrJiBjYWxsYmFjaykgeyBjbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQ
bHVnaW5zKGRldGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFjayk7IH0KICNlbmRpZgogCi0gICAg
Y29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBwbGF5ZXJQcml2YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CisgICAgY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlKiBwbGF5ZXJQcml2YXRlKCkgY29uc3Q7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlKiBwbGF5ZXJQcml2YXRlKCk7CiAKICAgICBEeW5hbWljUmFuZ2VNb2RlIHByZWZl
cnJlZER5bmFtaWNSYW5nZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3ByZWZlcnJlZER5bmFtaWNS
YW5nZU1vZGU7IH0KICAgICB2b2lkIHNldFByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUoRHluYW1p
Y1JhbmdlTW9kZSk7CkBAIC02MzgsNiArNjM5LDggQEAgcHVibGljOgogICAgIFN0cmluZyBhdWRp
b091dHB1dERldmljZUlkT3ZlcnJpZGUoKSBjb25zdDsKICAgICB2b2lkIGF1ZGlvT3V0cHV0RGV2
aWNlQ2hhbmdlZCgpOwogCisgICAgTWVkaWFQbGF5ZXJIYW5kbGUgY3JlYXRlSGFuZGxlKCkgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmKTsKICAg
ICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllckhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJIYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2ZhZDE2M2E1N2IzM2I0OThh
OTFiZjU1YmFlNDcwOWEwNDljYmI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJIYW5kbGUuaApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmll
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gTWVkaWFQbGF5ZXJJZGVudGlmaWVy
VHlwZSB7IH07Cit1c2luZyBNZWRpYVBsYXllcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PE1lZGlhUGxheWVySWRlbnRpZmllclR5cGU+OworCitzdHJ1Y3QgTWVkaWFQbGF5ZXJIYW5kbGUg
eworICAgIE1lZGlhUGxheWVySWRlbnRpZmllciBtZWRpYVBsYXllcklkZW50aWZpZXI7CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE1lZGlhUGxheWVySGFu
ZGxlPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBNZWRpYVBsYXllckhhbmRsZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCBtZWRpYVBsYXllcklkZW50aWZpZXI7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IERlY29kZXI+IE9wdGlvbmFsPE1lZGlhUGxheWVySGFuZGxlPiBNZWRpYVBsYXllckhhbmRsZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJJZGVu
dGlmaWVyPiBtZWRpYVBsYXllcklkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBtZWRpYVBsYXll
cklkZW50aWZpZXI7CisgICAgaWYgKCFtZWRpYVBsYXllcklkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgKm1lZGlhUGxheWVySWRlbnRpZmll
ciB9fTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCA4MTI1MzMw
Mjc2ZGQ1NDRlMWZjYWJkYTE3ZDYzNmNiY2Y4N2JhZDU3Li4yNjAzMDNlNGFmNjE3NjJjZjhhMDk3
YjIyYmEwNGMzZTM2M2NmMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVO
QUJMRShWSURFTykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJIYW5kbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMjkxLDYgKzI5Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0UHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZShEeW5hbWljUmFuZ2VNb2RlKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKSB7IH0KKworICAgIHZp
cnR1YWwgTWVkaWFQbGF5ZXJIYW5kbGUgY3JlYXRlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gTWVk
aWFQbGF5ZXJIYW5kbGUgeyB9OyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcAppbmRleCAzZDQ2YTUwNTNiMTdjOWEzZWY5ZjgyYjIwYjRkOTcxZjAyYTU0M2U2
Li5iNjViNGQ2NDQwNmJlYjc2YzQwOWQzZThjNjU0OTc1Y2E5ZjdlYjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTQzMiw2ICs0MzIsMTEgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmLCBDb2xvclNwYWMKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQogCit2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6cGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVy
JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IDMxYmE3MTYxN2VmYTQ1NmMxMWYwNDNh
MTlhNDQ5M2ZkNTg1YjIzZTUuLmYzNTI4MGNlN2YxOGMzN2VkMTFkOWMyODQ5NzJlM2FiOWU1MGY3
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC0xMDcsNiArMTA3LDcg
QEAgcHVibGljOgogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgYXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRl
eCA2M2ZiNWRkNjFiYWJjY2NmNzA5MDRlNTZkMmY5ZDRlNWFkNThjYWM1Li4yNzZmYmNkNmIzNDEx
ZGNhY2FhYzM2Yjc3ZDIzZWFhYmVhNTNmM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zNyw2
ICszNyw4IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2lu
Y2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCkBAIC0xOTMyLDYgKzE5
MzQsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZERlc3RpbmF0aW9uQXRQb2ludChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IEZsb2F0UG9pbnQKICAgICBDR1BERkNvbnRleHRBZGREZXN0
aW5hdGlvbkF0UG9pbnQoY29udGV4dCwgbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB0cmFu
c2Zvcm1lZFBvaW50KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OnBhaW50RnJhbWVGb3JN
ZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQor
eworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5wYWludEZyYW1lRm9yTWVkaWEocGxheWVyLCBk
ZXN0aW5hdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwbGF5ZXIuc2V0Vmlz
aWJsZSh0cnVlKTsKKyAgICBwbGF5ZXIucGxheWVyUHJpdmF0ZSgpLT5wYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dCgqdGhpcywgZGVzdGluYXRpb24pOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAppbmRleCA2MTA2NGE4ODYzYjQwZjE5MDVkYWE0MDUzMzg3YzIyNGI2NDIz
YThhLi5hNjM4MzY5MjFkOGRmY2ExNjYzOGJkODZhYTkzM2VmYTdlMjY0ZDgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaApAQCAtODMsNiArODMsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWlu
dDhfdCB7CiAgICAgRmlsbFBhdGgsCiAgICAgRmlsbEVsbGlwc2UsCiAgICAgUHV0SW1hZ2VEYXRh
LAorICAgIFBhaW50RnJhbWVGb3JNZWRpYSwKICAgICBTdHJva2VSZWN0LAogICAgIFN0cm9rZVBh
dGgsCiAgICAgU3Ryb2tlRWxsaXBzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cAppbmRleCBkYmYxODg0YTIxYTM0OWY2YWEwMzMzN2Y3NmVkNTkyOTIzYzA0ZGUzLi4yZjEzZDNl
MWE2Y2VhMTdkZDcwZjk1ZDcyN2JkZDVjY2I0YjhjNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RS
ZXBsYXllci5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRh
LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTE0NSw2ICsxNDYsOCBAQCBz
aXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJu
IHNpemVvZihkb3duY2FzdDxGaWxsRWxsaXBzZT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6
OlB1dEltYWdlRGF0YToKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxQdXRJbWFnZURh
dGE+KGl0ZW0pKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CisgICAg
ICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8UGFpbnRGcmFtZUZvck1lZGlhPihpdGVtKSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3du
Y2FzdDxTdHJva2VSZWN0PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoK
QEAgLTEyMTgsNiArMTIyMSwzNSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgUHV0SW1hZ2VEYXRhJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0K
IAorUGFpbnRGcmFtZUZvck1lZGlhOjpQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBs
YXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKKyAgICA6IERyYXdpbmdJdGVtKEl0
ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWEpCisgICAgLCBtX3BsYXllckhhbmRsZShwbGF5ZXIu
Y3JlYXRlSGFuZGxlKCkpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQoreworfQor
CitQYWludEZyYW1lRm9yTWVkaWE6OlBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXll
ckhhbmRsZSYgaGFuZGxlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQorICAgIDogRHJh
d2luZ0l0ZW0oSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYSkKKyAgICAsIG1fcGxheWVySGFu
ZGxlKGhhbmRsZSkKKyAgICAsIG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCit7Cit9CisKK1Bh
aW50RnJhbWVGb3JNZWRpYTo6flBhaW50RnJhbWVGb3JNZWRpYSgpID0gZGVmYXVsdDsKKwordm9p
ZCBQYWludEZyYW1lRm9yTWVkaWE6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7Cisg
ICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtKQoreworICAgIHRzIDw8IHN0YXRp
Y19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJk
ZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJuIHRzOworfQorCiBT
dHJva2VSZWN0OjpTdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdp
ZHRoKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OlN0cm9rZVJlY3QpCiAgICAgLCBtX3Jl
Y3QocmVjdCkKQEAgLTE0NDgsNiArMTQ4MCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUGF0aDogdHMgPDwgImZpbGwtcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxFbGxpcHNlOiB0cyA8PCAiZmlsbC1lbGxpcHNlIjsgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB0cyA8PCAicHV0LWltYWdlLWRhdGEiOyBicmVhazsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHRzIDw8ICJwYWludC1mcmFtZS1m
b3ItbWVkaWEiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OiB0cyA8PCAi
c3Ryb2tlLXJlY3QiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOiB0cyA8
PCAic3Ryb2tlLXBhdGgiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNl
OiB0cyA8PCAic3Ryb2tlLWVsbGlwc2UiOyBicmVhazsKQEAgLTE1ODcsNiArMTYyMCw5IEBAIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0pCiAg
ICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxQ
dXRJbWFnZURhdGE+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQ
YWludEZyYW1lRm9yTWVkaWE6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PFBhaW50RnJhbWVGb3JN
ZWRpYT4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJl
Y3Q6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KGl0ZW0pOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGYwNTU4NjllMTdhYWE5
NjY0ZWI1M2ZiMWJlZTc5NTgwNjQyOGQzNjMuLjkzMTY3YzE2ZDcxMTYyYTM1YzdlMzNiOTBmMDhh
MDExZmY5NTllM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllckhhbmRsZS5oIgogI2luY2x1
ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
VHlwZUNhc3RzLmg+CkBAIC00NCw2ICs0NSw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlRGF0YTsKK2NsYXNzIE1lZGlhUGxheWVyOwogc3Ry
dWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewpAQCAt
MjU4Miw2ICsyNTg0LDU5IEBAIE9wdGlvbmFsPFJlZjxQdXRJbWFnZURhdGE+PiBQdXRJbWFnZURh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiBQdXRJbWFnZURhdGE6OmNy
ZWF0ZSgqaW5wdXRGb3JtYXQsIFdURk1vdmUoKmltYWdlRGF0YSksICpzcmNSZWN0LCAqZGVzdFBv
aW50LCAqZGVzdEZvcm1hdCk7CiB9CiAKK2NsYXNzIFBhaW50RnJhbWVGb3JNZWRpYSA6IHB1Ymxp
YyBEcmF3aW5nSXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQYWludEZyYW1lRm9yTWVk
aWE+IGNyZWF0ZShNZWRpYVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFpbnRGcmFtZUZvck1l
ZGlhKHBsYXllciwgZGVzdGluYXRpb24pKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5QYWludEZyYW1lRm9yTWVkaWEoKTsKKworICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CisgICAgY29uc3QgTWVk
aWFQbGF5ZXJIYW5kbGUmIHBsYXllckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVySGFu
ZGxlOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJl
ZjxQYWludEZyYW1lRm9yTWVkaWE+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAg
IHN0YXRpYyBSZWY8UGFpbnRGcmFtZUZvck1lZGlhPiBjcmVhdGUoY29uc3QgTWVkaWFQbGF5ZXJI
YW5kbGUmIHBsYXllckhhbmRsZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhaW50RnJhbWVGb3JNZWRpYShwbGF5ZXJI
YW5kbGUsIGRlc3RpbmF0aW9uKSk7CisgICAgfQorCisgICAgUGFpbnRGcmFtZUZvck1lZGlhKE1l
ZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbik7CisgICAgV0VCQ09SRV9F
WFBPUlQgUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVySGFuZGxlJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbik7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgTWVkaWFQbGF5ZXJIYW5kbGUgbV9wbGF5ZXJIYW5k
bGU7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBQYWludEZyYW1lRm9yTWVkaWE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF5ZXJIYW5kbGU7CisgICAgZW5jb2RlciA8
PCBtX2Rlc3RpbmF0aW9uOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8
UmVmPFBhaW50RnJhbWVGb3JNZWRpYT4+IFBhaW50RnJhbWVGb3JNZWRpYTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJIYW5kbGU+IHBsYXllckhh
bmRsZTsKKyAgICBkZWNvZGVyID4+IHBsYXllckhhbmRsZTsKKyAgICBpZiAoIXBsYXllckhhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRl
c3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFBh
aW50RnJhbWVGb3JNZWRpYTo6Y3JlYXRlKCpwbGF5ZXJIYW5kbGUsICpkZXN0aW5hdGlvbik7Cit9
CisKIGNsYXNzIFN0cm9rZVJlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8U3Ryb2tlUmVjdD4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxv
YXQgbGluZVdpZHRoKQpAQCAtMjk4Myw2ICszMDM4LDkgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CiAg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8UHV0SW1hZ2VEYXRhPigqdGhpcyk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKKyAgICAgICAg
ZW5jb2RlciA8PCBkb3duY2FzdDxQYWludEZyYW1lRm9yTWVkaWE+KCp0aGlzKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgZW5jb2RlciA8
PCBkb3duY2FzdDxTdHJva2VSZWN0PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzE5MCw2
ICszMjQ4LDEwIEBAIE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBQdXRJbWFnZURhdGE6OmRlY29kZShkZWNv
ZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RG
TW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZy
YW1lRm9yTWVkaWE6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBQYWludEZyYW1lRm9yTWVkaWE6
OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpTdHJva2VSZWN0OgogICAgICAgICBpZiAoYXV0byBpdGVtID0gU3Ryb2tlUmVjdDo6ZGVj
b2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJ
dGVtPihXVEZNb3ZlKCppdGVtKSk7CkBAIC0zMjkxLDYgKzMzNTMsNyBAQCBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRmlsbFBhdGgpCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRmlsbEVsbGlwc2UpCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oUHV0SW1hZ2VEYXRhKQorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFBhaW50RnJhbWVGb3JNZWRpYSkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VSZWN0KQogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFN0cm9rZVBhdGgpCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ryb2tlRWxsaXBzZSkKQEAgLTMzNTIsNiArMzQxNSw3IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0aCwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlLAogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhLAorICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhLAogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlN0cm9rZVBhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTdHJva2VFbGxpcHNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCmluZGV4IGJkMDQzOGM2YTRiMjU2Yzg4NTZiYjEyOWEzYWI1ZmEyM2U3OGRjOGEuLmU0M2Y3
NmMzOGFmZjUxN2Q4ZDQ2ZmY3MDM3ZjgwYjNmOGI1NTZlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM4OSw2ICszODksMTEgQEAgdm9pZCBSZWNvcmRl
cjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENv
bG9yU3BhY2UgY28KICAgICBhcHBlbmRJdGVtKENsaXBUb0RyYXdpbmdDb21tYW5kczo6Y3JlYXRl
KGRlc3RpbmF0aW9uLCBjb2xvclNwYWNlLCByZWNvcmRpbmdDb250ZXh0LT50YWtlRGlzcGxheUxp
c3QoKSkpOwogfQogCit2b2lkIFJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5
ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBhcHBlbmRJ
dGVtKFBhaW50RnJhbWVGb3JNZWRpYTo6Y3JlYXRlKHBsYXllciwgZGVzdGluYXRpb24pKTsKK30K
Kwogdm9pZCBSZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcikKIHsKICAgICAvLyBGSVhNRTogdGhpcyBjaGFuZ2VzIHRoZSBiYXNlQ1RNLCB3aGlj
aCB3aWxsIGludmFsaWRhdGUgYWxsIG9mIG91ciBjYWNoZWQgZXh0ZW50cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGQyNzBjNWQ5MDhhYzY4ZDc4MDgzNjNiYmE5
MWIyZTc2MWFlZGM5MmIuLjk0ZDhiYTJiYmVhNGJkODQ5NmQ2ZGZjY2RlNDI5MmQ1NzJhMTQ4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTM3LDYgKzEzNyw3
IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxh
eWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgCiAgICAg
dm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRl
eCBjZWEyYTZlYTA0NDUzNGZmNDU0NGVhMjEwOWMyNjE3ZDc5N2NhMmYxLi4zMDRmYWNiYWIxNTIx
NzkxZGFhODZkYjE1MzE3NTNlMzg2NzEwODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtMTA5NSw0ICsxMDk1LDkg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVk
LgogfQogCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OnBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBs
ZW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGRlMjRhYjhiZDUy
NDMyY2UyOTNhODBmNmI0Zjk4NjBmMjIyZmE3ZmYuLjNiZDZlODdmYjY3MWMxZjRmMTI1MzM4NzQy
OWNmOWQwNTIzYTc5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OkludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1h
Z2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBGdW5jdGlvbjx2
b2lkKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBh
aW50RnJhbWVGb3JNZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhcHBseURldmljZVNj
YWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJELmNwcAppbmRleCA1ODk0MGEzYjgxMzRkYjE5NTA1ZTY5MjFkNWE1NjMwOTU5MWU4Mzhk
Li5jNTNkOGJmODVjMDk5Mzg4MjkyNDhmODJkZGQ5MWM5ZGUzM2MwNzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtNDQxLDYgKzQ0MSwxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYsIENvbG9yUwogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9CiAKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQ
bGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50
ZWQuCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShESVJFQ1Qy
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA4ZjExMTc3NjkzYThi
YjEwYmNiNDg0NzlmMTlhODg5MTEyODNjYWU0Li41OWJmZjEwMDZmNmFmNzc1ZDY0ZDhlMTQ2N2Y4
OWRjNmE4Y2UzMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC0x
MDQsNiArMTA0LDcgQEAgcHVibGljOgogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRl
OwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29u
dGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBs
YXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIAogICAg
IHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IGVkOTdhZmE0MmJkZWYzYWNjYTY5
NTEzZTI0NmVjNWZiOTNkYzcwYzYuLjA3ZTI5ZDU3MTBiNjAyZTk5MGI1YzAxNmRiMTYxOGQxYTUx
N2U0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMjI2
LDcgKzIyNiw3IEBAIHZvaWQgUmVuZGVyVmlkZW86OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgIHBhaW50SW50b1Jl
Y3QocGFpbnRJbmZvLCByZWN0KTsKICAgICBlbHNlIGlmICghdmlkZW9FbGVtZW50KCkuaXNGdWxs
c2NyZWVuKCkgfHwgIW1lZGlhUGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkp
IHsKICAgICAgICAgaWYgKHBhaW50SW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVo
YXZpb3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCi0gICAgICAgICAgICBtZWRpYVBsYXll
ci0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CisgICAgICAgICAg
ICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqbWVkaWFQbGF5ZXIsIHJlY3QpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtZWRpYVBsYXllci0+cGFpbnQoY29udGV4dCwgcmVjdCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCmluZGV4
IDJlOTIwZWZkZGMxNzlmNjNmZDRmZDI0YmNmNzkxMzI0MTA5NWU2MzUuLmE0ZDA1ZWFlZjU0OTQx
NmZkYjY0MjU5NTJlMGI0Y2YzYWEyMDVlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5LmgKQEAgLTU5LDYgKzU5LDggQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogICAgIHZv
aWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKIAorICAg
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgYmFja2VuZCgpIHsgcmV0dXJuIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OyB9CisKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKICAgICBJbWFnZUJ1
ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aAppbmRleCA4MWI4OTc4ZDBlNzkxMTU3ZjljN2U0OTcwMzk4MTdlNDc5NTllNTE0Li45N2E5NjQz
YjQwODE1ZTdjZDVlZWZiNTIzYjkwM2EyM2E4NzY5NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VC
dWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KQEAgLTg0
LDE0ICs4NSwzNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOwogICAgIH0KIAotICAg
IGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYpIG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgaWYgKGl0ZW0udHlwZSgpICE9IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoaXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpQdXRJbWFnZURhdGEpIHsKKyAgICAgICAgICAgIGF1dG8mIHB1dEltYWdlRGF0YUl0ZW0gPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhJj4oaXRlbSk7Cisg
ICAgICAgICAgICBwdXRJbWFnZURhdGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBw
dXRJbWFnZURhdGFJdGVtLmltYWdlRGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwg
cHV0SW1hZ2VEYXRhSXRlbS5kZXN0UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0
KCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
aXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1l
Rm9yTWVkaWEpIHsKKyAgICAgICAgICAgIGFwcGx5KHN0YXRpY19jYXN0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEmPihpdGVtKSwgY29udGV4dCk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICB2b2lkIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVk
aWEmIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKKyAgICB7CisgICAg
ICAgIGF1dG8gcHJvY2VzcyA9IGJhY2tlbmQoKS5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7
CisgICAgICAgIGlmICghcHJvY2VzcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBh
dXRvIHBsYXllclByb3h5ID0gcHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
KS5nZXRQcm94eShpdGVtLnBsYXllckhhbmRsZSgpLm1lZGlhUGxheWVySWRlbnRpZmllcik7Cisg
ICAgICAgIGlmICghcGxheWVyUHJveHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
YXV0byBwbGF5ZXIgPSBwbGF5ZXJQcm94eS0+bWVkaWFQbGF5ZXIoKTsKKyAgICAgICAgaWYgKCFw
bGF5ZXIpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRh
SXRlbSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmPihp
dGVtKTsKLSAgICAgICAgcHV0SW1hZ2VEYXRhKHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3JtYXQo
KSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURhdGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNSZWN0
KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBvaW50KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdEZv
cm1hdCgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNvbnRleHQucGFpbnRGcmFt
ZUZvck1lZGlhKCpwbGF5ZXIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CiAgICAgfQogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBkYmI1NWJhM2MyMjBkZTg2ZjE4YTUz
M2NmYTA4NzE4ZjM4OTI0ZjA4Li43NTNhNWM4YmE5N2ZlNzIwODMxMDU4ZTg0YzVjZDgzYjRiMTc1
NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMTIxLDYgKzEyMSwx
MSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0CiAgICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBmbHVzaElkZW50aWZpZXIpOwogfQog
CitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCmluZGV4IDY3NjRhYzEwYzVlN2UwMmE0Yzk3ODc3YjljNWU1NWNhMGI3OGNiMWUuLmEwOTUy
YmFmYjNjMTUzMmQ3ZGM5OTAwNmViNDBmMzFiZjkxZDI1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyOyB9CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCBmNWQ1
MDgzYzhjMDc1ZmRhZWVjN2JiNzcxYjU1YTg1MTY5MmIxNWI1Li42YWY4NGM2NTdiNjA3OGUwOWY2
YjliMmUyNzhmN2E0MzA3NmY4NDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcApAQCAt
NDYsNyArNDYsNyBAQCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZQogCiBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHk6On5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkoKSA9IGRlZmF1bHQ7CiAK
LXZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+
JiYgb3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lD
RE1JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24pCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxNZWRp
YVBsYXllcklkZW50aWZpZXI+JiYgb3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24pCiB7CiAgICAg
YXV0byBwcml2YXRlQ0RNID0gTGVnYWN5Q0RNOjpjcmVhdGUoa2V5U3lzdGVtKTsKICAgICBpZiAo
IXByaXZhdGVDRE0pIHsKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8TWUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgcGxheWVySWQ7CisgICAgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIHBsYXllcklkOwog
ICAgIGlmIChvcHRpb25hbFBsYXllcklkKQogICAgICAgICBwbGF5ZXJJZCA9IFdURk1vdmUob3B0
aW9uYWxQbGF5ZXJJZC52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCmluZGV4IDUz
NTUzODQ4ODY1OTk4MWQ4Zjg4M2I0Y2ExZWNjYWMyMzVhMzlmZWQuLmQxZDMxMzM4ZDFiMGY4YTQ2
N2MxZGU0ODAyMWZlYWJhNzZjN2ZkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKQEAgLTI4
LDEwICsyOCwxMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFQbGF5ZXJIYW5kbGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwot
ICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik+JiYpOworICAgIHZvaWQgY3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50
aWZpZXI+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmll
ciYmKT4mJik7CiAgICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAwMDc0NGZiZmQ0ZDAyYzFmOWMzZDc5YTAwZjUwNDlmOTE1M2I3ZjQ5Li5kYjYwOWM5
M2EyYjgxZDcyZDJhMzAwZjIyMmU5YjMyMjhhYjJlNjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCiBtZXNzYWdlcyAt
PiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRl
Q0RNKFN0cmluZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllcj4gcGxheWVySWQpIC0+IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUlk
ZW50aWZpZXIgaWQpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlQ0RNKFN0cmluZyBrZXlTeXN0ZW0s
IE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcj4gcGxheWVySWQpIC0+IChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQpIFN5bmNocm9ub3VzCiAgICAgU3Vw
cG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlw
ZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAppbmRleCAy
ZDE3YTg5MWFhYjExZWRlNmRiZWQ3YzBmZDAyZDI4NTI3MWU4MzYxLi5kOWJmNTIyNzJjMzcyOTE1
NzViNWIzOTMyNjJlNzcyMTNiOTMwZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKQEAgLTM2LDEyICszNiwx
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6
OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gZmFjdG9yeSwgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYmIHBsYXllcklkLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6TGVnYWN5Q0RNPiYmIGNkbSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE1Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eT4gZmFjdG9yeSwgTWVkaWFQbGF5ZXJJZGVudGlmaWVyJiYgcGxh
eWVySWQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+JiYgY2RtKQogewogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+KG5ldyBSZW1vdGVM
ZWdhY3lDRE1Qcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHBsYXllcklkKSwgV1RGTW92
ZShjZG0pKSk7CiB9CiAKLVJlbW90ZUxlZ2FjeUNETVByb3h5OjpSZW1vdGVMZWdhY3lDRE1Qcm94
eShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYgcGxheWVySWQsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpMZWdhY3lDRE0+JiYgY2RtKQorUmVtb3RlTGVnYWN5Q0RNUHJveHk6OlJlbW90ZUxl
Z2FjeUNETVByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3Rv
cnksIE1lZGlhUGxheWVySWRlbnRpZmllciYmIHBsYXllcklkLCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TGVnYWN5Q0RNPiYmIGNkbSkKICAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rvcnkp
KQogICAgICwgbV9wbGF5ZXJJZChXVEZNb3ZlKHBsYXllcklkKSkKICAgICAsIG1fY2RtKFdURk1v
dmUoY2RtKSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3Jl
YXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ3JlYXRlU2Vzc2lvbkMKICAgICBj
YWxsYmFjayhXVEZNb3ZlKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBSZW1vdGVMZWdhY3lDRE1Q
cm94eTo6c2V0UGxheWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
Zmllcj4mJiBwbGF5ZXJJZCkKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXllcklk
KE9wdGlvbmFsPE1lZGlhUGxheWVySWRlbnRpZmllcj4mJiBwbGF5ZXJJZCkKIHsKICAgICBpZiAo
IXBsYXllcklkKQogICAgICAgICBtX3BsYXllcklkID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCAyYjZk
MTdhOWE0NTcxZTM0ODg0Y2ZmOGNhOWJlZWMzMzMxZjgyMDZlLi42YTVjNjcyNWNhYTliZGI4Njdh
Yjg2YjhjNTdmMzZkZTJjODk2ZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtNTAsMTQgKzUwLDE0IEBAIGNs
YXNzIFJlbW90ZUxlZ2FjeUNETVByb3h5CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6TGVnYWN5Q0RN
Q2xpZW50CiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVBy
b3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+LCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpM
ZWdhY3lDRE0+JiYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RN
UHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4sIFdlYkNv
cmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVn
YWN5Q0RNPiYmKTsKICAgICB+UmVtb3RlTGVnYWN5Q0RNUHJveHkoKTsKIAogICAgIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5n
ZXQoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk7Ci0gICAgUmVtb3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk+JiYsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImJiwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJik7CisgICAgUmVtb3RlTGVnYWN5
Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYsIFdlYkNvcmU6
Ok1lZGlhUGxheWVySWRlbnRpZmllciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5
Q0RNPiYmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTY4
LDEzICs2OCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBT
dHJpbmcmLCBTdXBwb3J0c01JTUVUeXBlQ2FsbGJhY2smJik7CiAgICAgdXNpbmcgQ3JlYXRlU2Vz
c2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uSWRlbnRpZmllciYmKT47CiAgICAgdm9pZCBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENyZWF0ZVNlc3Npb25DYWxsYmFjayYmKTsKLSAgICB2b2lkIHNldFBsYXllcklkKE9wdGlvbmFs
PE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYpOworICAgIHZvaWQgc2V0UGxh
eWVySWQoT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmKTsKIAogICAg
IC8vIExlZ2FjeUNETUNsaWVudAogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXllcj4gY2Rt
TWVkaWFQbGF5ZXIoY29uc3QgV2ViQ29yZTo6TGVnYWN5Q0RNKikgY29uc3QgZmluYWw7CiAKICAg
ICBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OwotICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9wbGF5ZXJJZDsKKyAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllcklkZW50aWZpZXIgbV9wbGF5ZXJJZDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6TGVnYWN5Q0RNPiBtX2NkbTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdl
cy5pbgppbmRleCA4NzFiYThiZDg3ZTdkOTI3MDdjYzA5ZDhmM2NjNDBkNmY0OGRmY2IzLi45YjQ2
YTgyM2RiMzRjYTAyYTRlOTY4ZjVhNzFiMWI3NWM2ZjhlZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBACiBtZXNzYWdlcyAtPiBSZW1vdGVMZWdhY3lD
RE1Qcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBTdXBwb3J0c01JTUVUeXBlKFN0cmluZyBtaW1l
VHlwZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5bmNocm9ub3VzCiAgICAgQ3JlYXRlU2Vzc2lvbihT
dHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgLT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWQpIFN5bmNocm9ub3VzCi0gICAgU2V0UGxheWVySWQoT3B0
aW9uYWw8V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJ
ZCkKKyAgICBTZXRQbGF5ZXJJZChPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZp
ZXI+IHBsYXllcklkKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IGViMTUwY2IzMGFlMTg3YWU5NDk0ODZiYjRhMmFlMWMxNWNjNDVmNWUuLjExMTg1NzI1
N2NjN2JmM2MwZjM3MGE3ZGQyOWYxMWQ3ZGZiMWEzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcApAQCAtNTksNyArNTksNyBAQCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKIHsKIH0KIAotdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0
aW9uJiYgcHJveHlDb25maWd1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1l
ZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyIGlkLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5n
aW5lSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24mJiBwcm94
eUNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJD
b25maWd1cmF0aW9uJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFtX3By
b3hpZXMuY29udGFpbnMoaWQpKTsKIApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHBsYXllckNvbmZpZ3VyYXRpb24pOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkZWxldGVNZWRpYVBsYXllcihN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQordm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVy
IGlkKQogewogICAgIGlmIChhdXRvIHByb3h5ID0gbV9wcm94aWVzLnRha2UoaWQpKQogICAgICAg
ICBwcm94eS0+aW52YWxpZGF0ZSgpOwpAQCAtMTk0LDE3ICsxOTQsMTcgQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oTWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmcKIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVj
ZWl2ZVBsYXllck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgaWYgKGF1dG8qIHBsYXllciA9IG1fcHJveGllcy5nZXQobWFr
ZU9iamVjdElkZW50aWZpZXI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllclR5cGU+
KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgaWYgKGF1dG8qIHBsYXllciA9IG1fcHJv
eGllcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8TWVkaWFQbGF5ZXJJZGVudGlmaWVyVHlwZT4o
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgcGxheWVyLT5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYgZW5jb2RlcikKIHsKLSAgICBpZiAoYXV0byogcGxheWVyID0gbV9wcm94aWVzLmdl
dChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
VHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICBpZiAoYXV0byogcGxheWVyID0g
bV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJU
eXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICBwbGF5ZXItPmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKIH0KIAotUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eSogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5
KGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImIGlkKQorUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KGNv
bnN0IE1lZGlhUGxheWVySWRlbnRpZmllciYgaWQpCiB7CiAgICAgYXV0byByZXN1bHRzID0gbV9w
cm94aWVzLmZpbmQoaWQpOwogICAgIGlmIChyZXN1bHRzICE9IG1fcHJveGllcy5lbmQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXggNTFlNzFlNzc3Mzc4YjhkYWZiOWM3YzYyNzAy
YjkxYTY3NWZhMWViZC4uM2ZiODhjMDQ0Y2EyMDk5MzkyNzQxNTE4OWFmYmM5YzgwMjg2MTFlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTI4LDExICsyOCwxMSBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckhhbmRsZS5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02OCwxNSArNjgsMTUg
QEAgcHVibGljOgogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgogCi0gICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSogZ2V0UHJveHkoY29uc3QgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYpOworICAgIFJlbW90ZU1lZGlhUGxheWVy
UHJveHkqIGdldFByb3h5KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciYpOwog
CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCi0gICAgdm9pZCBjcmVh
dGVNZWRpYVBsYXllcihNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb25maWd1cmF0aW9uJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uJik+JiYpOwotICAgIHZvaWQgZGVsZXRlTWVkaWFQbGF5ZXIo
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVNZWRp
YVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNv
bmZpZ3VyYXRpb24mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24mKT4mJik7CisgICAgdm9pZCBkZWxldGVNZWRpYVBsYXllcihXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXIpOwogCiAgICAgLy8gTWVkaWEgcGxheWVyIGZhY3RvcnkKICAg
ICB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
KT4mJik7CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiYpOwogICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgSGFzaE1hcDxNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eT4+IG1fcHJveGllczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+PiBtX3By
b3hpZXM7CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNGNiZDQ2MTRiNjJiOGMzZTdkNGY1
NmNhOTUwYzk0NDc2MTI5OTMyZi4uOGRmMzU2YTRjYmJjNjNkNDViNjdiMDViY2MwMmJkODAyNzNm
Nzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMjQsOCArMjQsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgQ3JlYXRl
TWVkaWFQbGF5ZXIoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlk
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHlDb25maWd1cmF0aW9uIHByb3h5Q29uZmlndXJhdGlvbikgLT4gKHN0cnVjdCBX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9u
KSBBc3luYwotICAgICBEZWxldGVNZWRpYVBsYXllcihXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgaWQpCisgICAgQ3JlYXRlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJJZGVudGlmaWVyIGlkLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHN0cnVj
dCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uIHByb3h5Q29uZmln
dXJhdGlvbikgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlv
biBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYworICAgIERlbGV0ZU1lZGlhUGxheWVyKFdlYkNv
cmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZCkKIAogICAgIEdldFN1cHBvcnRlZFR5cGVzKGVu
dW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcikgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBTeW5j
aHJvbm91cwogICAgIFN1cHBvcnRzVHlwZUFuZENvZGVjcyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHR5cGUp
IC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBl
IHN1cHBvcnQpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggNGVjYTY3MTZlZWMz
ZWE1M2NkYjY5MDFjOGYyYzNmZTc1YzZmYmMxNC4uNTVjOGYwN2Q3OGJiNjMxOWZmYzRjOGJlMWEy
MGU2NzQxNmU2ZTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OlJlbW90ZU1lZGlhUGxheWVyUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkmIG1hbmFnZXIsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHlDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK1JlbW90ZU1lZGlhUGxheWVyUHJveHk6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIG1h
bmFnZXIsIE1lZGlhUGxheWVySWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5l
SWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKQogICAgIDogbV9pZChpZCkKICAgICAsIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fbWFuYWdlcihtYW5hZ2VyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgK
aW5kZXggNDFiNTM2NmY4YzRjOTQ1NGMzMTU4YTFjNWE2MzdjNmM1MDM1NjgwNy4uY2Q0MGMyMjk5
M2QyMjA2NzUzYjkzYzYzYWI3NGVkYTkzMDNjZjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlv
bi5oIgpAQCAtNDAsNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJIYW5kbGUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC03Niwx
MCArNzYsMTAgQEAgY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBmaW5hbAogICAgICwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eSYsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24mJik7CisgICAgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYsIFdlYkNv
cmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBs
YXllclByb3h5Q29uZmlndXJhdGlvbiYmKTsKICAgICB+UmVtb3RlTWVkaWFQbGF5ZXJQcm94eSgp
OwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVuZGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmll
ciBpZGVuZGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQpAQCAtMjc2LDcgKzI3
Niw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZSos
IFJlZjxSZW1vdGVWaWRlb1RyYWNrUHJveHk+PiBtX3ZpZGVvVHJhY2tzOwogICAgIEhhc2hNYXA8
V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIFJlZjxSZW1vdGVUZXh0VHJhY2tQcm94
eT4+IG1fdGV4dFRyYWNrczsKIAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgbV9pZDsKKyAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgbV9pZDsKICAgICBS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwogICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgUmVmUHRyPFdlYkNvcmU6
Ok1lZGlhUGxheWVyPiBtX3BsYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDcwZDNkODhmMmJmNGE2ZjFjZmM0ZjE4ODcwNGVkNjc3MGU0OTc3YWYuLmNj
ZTNjNjBiZGE3ZDQ5MGE0NjYwN2YxMWYyMGYwMjNjMmY5MjE1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjE1LDYgKzIxNSw3IEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3kn
LApAQCAtMjQzLDcgKzI0NCw2IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sSUQnLAogICAg
ICAgICAnV2ViS2l0OjpMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
S2l0OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3Jk
ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UERGUGx1Z2luSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OlBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyJywKQEAgLTYx
NCw2ICs2MTQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNv
cmU6OktleXByZXNzQ29tbWFuZCc6IFsnPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUn
OiBbJzxXZWJDb3JlL0xlZ2FjeUNETVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Okxv
Y2tCYWNrRm9yd2FyZExpc3QnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKKyAg
ICAgICAgJ1dlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvTWVkaWFQ
bGF5ZXJIYW5kbGUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpIYXNBY3Rpdml0eSc6IFsnPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3knOiBbJzxXZWJDb3Jl
L0RvY3VtZW50TG9hZGVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpOZXR3b3JrVHJhbnNhY3Rp
b25JbmZvcm1hdGlvbic6IFsnPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPiddLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZGFiYWYyNjg3MzIxNGJjNjk2MjU1MDA0ODNkYjE3ZmZiYjQ0NzhlNy4uNDQ4MWMwM2E1ZWUzNDNj
NzJlZDM1MTE3YzM5N2MwZDg3MzhhYmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTYzLDcgKzIxNjMsNiBAQAogCQkwNzkyMzE0
MjIzOUNCQ0I1MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc5MjMxNDUyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5MjMxNDYyMzlDQkNCNzAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzkyMzE0RTIzOUQ1RjUzMDA5NTk4
RTIgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3OTRCNEFCMjQ0NTFCQjkwMDAxQjlDNCAvKiBNZWRpYVVzYWdlTWFuYWdl
ckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFVc2FnZU1hbmFnZXJDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5NEI0QUMyNDQ1MUJCOTAwMDFCOUM0
IC8qIE1lZGlhVXNhZ2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVXNhZ2VNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OTRCNEFFMjQ0NTI0QjAwMDAxQjlD
NCAvKiBNZWRpYVVzYWdlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVVzYWdl
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTAwLDcgKzU0OTks
NiBAQAogCQkJCTA3OTIzMTMxMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwICovLAogCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLAotCQkJCTA3OTIzMTRFMjM5RDVG
NTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8sCiAJ
CQkJOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovLAog
CQkJCTlCNUJFQzI5MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHkuY3BwICovLAogCQkJCTlCNUJFQzI4MjQwMTAxNTgwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA0
ZDRhMWZjNWI0MmNjYjFhYWM1N2JiNTQ4ZjFkNGYxMGMwZGViM2NmLi45Njk0YmFhNTQxOTE0MmYz
YmY5YjJiZjA1ZTJiODkzNGQ3NDk1MGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogI2VuZGlmCiAKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCi1NZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIm
IG1hbmFnZXIpCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZShNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIHBsYXllcklk
ZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKICAgICA6IG1fcGxh
eWVyKHBsYXllcikKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBs
YXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKQEAgLTExNTYsNiArMTE1NiwxMSBAQCBXVEZMb2dD
aGFubmVsJiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAogfQog
I2VuZGlmCiAKK01lZGlhUGxheWVySGFuZGxlIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3Jl
YXRlSGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyBtX2lkIH07Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDFk
OGRiNzgyYjdiODQyNDYxMGQ1ZGMxN2FhMzc2YzljNzdlYjc4OWMuLmEwZTNjYmFiMjEwOTNiZTY4
ZjI5NjIwOTI0ODNmMTE3ODI0YThmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAt
NjksMTIgKzY5LDEyIEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBmaW5hbAogI2Vu
ZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU+IGNyZWF0ZShXZWJDb3JlOjpNZWRpYVBsYXllciogcGxheWVyLCBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRl
bnRpZmllciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVudGlmaWVyLCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1hbmFnZXIpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+IGNyZWF0ZShXZWJDb3JlOjpNZWRpYVBsYXll
ciogcGxheWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKICAgICB7CiAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4ocGxheWVy
LCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBtYW5hZ2VyKTsKICAgICB9CiAK
LSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXIqLCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYpOworICAg
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShXZWJDb3JlOjpNZWRpYVBsYXllciosIFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImKTsKICAgICB+TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlKCk7CiAKICAgICB2b2lkIHNldENvbmZpZ3VyYXRpb24oUmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
KTsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBt
X2ludmFsaWQgPSB0cnVlOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlbW90ZUVuZ2luZUlkZW50aWZpZXI7IH0KLSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIGl0ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGl0ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
OyB9CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9t
YW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOyB9CiAKICAgICB2b2lk
IG5ldHdvcmtTdGF0ZUNoYW5nZWQoUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmKTsKQEAgLTI2Miw2
ICsyNjIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiwgUGxhdGZvcm1HTE9iamVj
dCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2ws
IGJvb2wpIGZpbmFsOwogICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKSBmaW5hbDsKIAorICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySGFuZGxlIGNy
ZWF0ZUhhbmRsZSgpIGNvbnN0IGZpbmFsOworCiAgICAgdm9pZCBzZXRQcmVsb2FkKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpQcmVsb2FkKSBmaW5hbDsKIAogICAgIGJvb2wgaGFzQXZhaWxhYmxlVmlk
ZW9GcmFtZSgpIGNvbnN0IGZpbmFsOwpAQCAtMzY4LDcgKzM3MCw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1fbWFuYWdlcjsKICAgICBXZWJDb3JlOjpNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9yZW1vdGVFbmdpbmVJZGVudGlm
aWVyOwotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZDsKKyAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgbV9pZDsKICAgICBSZW1vdGVNZWRpYVBsYXll
ckNvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJT
dGF0ZSBtX2NhY2hlZFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2YjNjNTlmYmU0MmI2YmMx
YTMwNjcxZTcwMGE1NzM0ZGRiOWY1My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSAsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
Ci0KLSNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotZW51bSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZSB7IH07Ci11
c2luZyBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZT47Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAppbmRleCA4MWM2MDNiMGYzZmZjOTczZTg5
ZjBmODBlMDNmM2I2ZTVhMWRhYTIwLi5lNWE2ZDk0ZWJhY2Y1MzhkMWRmZjkxNTg2MWZjZjk2Mjgx
OGRlYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVMZWdhY3lDRE0uY3BwCkBAIC03NCwxMiArNzQsMTIgQEAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lv
bihXZWJDb3IKICAgICByZXR1cm4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKG1fZmFj
dG9yeSwgV1RGTW92ZShpZCkpOwogfQogCi12b2lkIFJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVy
SWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKK3ZvaWQgUmVtb3RlTGVn
YWN5Q0RNOjpzZXRQbGF5ZXJJZChNZWRpYVBsYXllcklkZW50aWZpZXIgaWQpCiB7CiAgICAgaWYg
KCFtX2ZhY3RvcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE9wdGlvbmFsPE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+IG9wdGlvbmFsSWQ7CisgICAgT3B0aW9uYWw8TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyPiBvcHRpb25hbElkOwogICAgIGlmIChpZCkKICAgICAgICAgb3B0aW9u
YWxJZCA9IGlkOwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OlNldFBsYXllcklkKG9w
dGlvbmFsSWQpLCBtX2lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmgKaW5kZXggZjU0Y2QzY2M0Mjk0MTcxNjYx
OWY1MDNiNjNmOTczYjExYTFlMjI0MC4uMTMxZTY3OWQ1NTE4YjlhZjM0MmU0OWU2OGViNWJiMWY4
NzAxNWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETS5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCi0jaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2Fj
eUNETUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETVByaXZhdGUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySGFuZGxlLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOwotICAgIHZvaWQgc2V0UGxh
eWVySWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisgICAgdm9pZCBzZXRQ
bGF5ZXJJZChXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAg
IFJlbW90ZUxlZ2FjeUNETShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYsIFJlbW90
ZUxlZ2FjeUNETUlkZW50aWZpZXImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcAppbmRleCA5
OGZhYTMyMjcyMzNjMGYxMWQwNjZlOWE4MzdhZDljYzY4NDkxNmI2Li42NTgwZjc4ZjMwMjk4OWFk
M2RiNmYwMDljY2QzM2E4MGZjZmEyMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKQEAg
LTEwOCw3ICsxMDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKFdlYkNvcmU6OgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBPcHRpb25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyPiBwbGF5ZXJJZDsKKyAgICBPcHRpb25hbDxNZWRpYVBsYXllcklkZW50aWZpZXI+
IHBsYXllcklkOwogICAgIGlmIChhdXRvIHBsYXllciA9IGNkbS0+bWVkaWFQbGF5ZXIoKSkKICAg
ICAgICAgcGxheWVySWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLm1lZGlhUGxheWVyTWFuYWdl
cigpLmZpbmRSZW1vdGVQbGF5ZXJJZChwbGF5ZXItPnBsYXllclByaXZhdGUoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRleCBjMjg5ZWU3OGY1NmRmZmY4M2ZhZmEwY2QzNmFj
ZGE4M2EzODc3NmJiLi42MWJiYThiMjY2ZWRmYmY1YTI5NGNiNjEzNTM0N2FhNmYxNzlhYTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpjcmVhdGVSZW0KICAgICBhdXRvIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBwbGF5
ZXItPmRvY3VtZW50U2VjdXJpdHlPcmlnaW4oKTsKICAgICBwcm94eUNvbmZpZ3VyYXRpb24uZG9j
dW1lbnRTZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAKLSAgICBhdXRv
IGlkZW50aWZpZXIgPSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOworICAgIGF1dG8gaWRlbnRpZmllciA9IE1lZGlhUGxheWVySWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsKICAgICBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJh
dGlvbjsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGlkZW50aWZpZXIsIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBXVEZN
b3ZlKGRvY3VtZW50U2VjdXJpdHlPcmlnaW4pXShhdXRvJiYgcGxheWVyQ29uZmlndXJhdGlvbikg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC0xODMsMTMgKzE4MywxMyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OmNyZWF0ZVJlbQogICAgIHJldHVybiByZW1vdGVQbGF5ZXI7CiB9CiAKLXZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkZWxldGVSZW1vdGVNZWRpYVBsYXllcihNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQordm9pZCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVySWRlbnRpZmllciBp
ZCkKIHsKICAgICBtX3BsYXllcnMudGFrZShpZCk7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OkRlbGV0ZU1lZGlhUGxheWVyKGlkKSwgMCk7CiB9CiAKLU1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpmaW5kUmVtb3RlUGxheWVy
SWQoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBwbGF5ZXIpCitNZWRpYVBsYXll
cklkZW50aWZpZXIgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpmaW5kUmVtb3RlUGxheWVySWQo
Y29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBwbGF5ZXIpCiB7CiAgICAgZm9yIChh
dXRvIHBhaXIgOiBtX3BsYXllcnMpIHsKICAgICAgICAgaWYgKHBhaXIudmFsdWUgPT0gcGxheWVy
KQpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhCiAKIHZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkaWRSZWNlaXZlUGxheWVyTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBpZiAoY29u
c3QgYXV0byYgcGxheWVyID0gbV9wbGF5ZXJzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCkpKSkKKyAgICBpZiAoY29uc3QgYXV0byYgcGxheWVyID0gbV9wbGF5ZXJzLmdldChtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0
aW9uSUQoKSkpKQogICAgICAgICBwbGF5ZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAppbmRleCA3MTg2ZmY0ZjMx
MjQ2ZDgxN2ZjMjRkYmIzZDRmMTAxMjVlZDk5M2NhLi45Y2I5ZjhhNDBkZThiYmY3MjJlODJhMDZh
MTMxNDI2MTBlZmQ1NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKQEAgLTI4LDcgKzI4
LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllclN0YXRlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIK
QEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckhhbmRsZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY4LDkg
KzY4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUGxheWVyTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAgIHZvaWQgZGVsZXRlUmVtb3RlTWVk
aWFQbGF5ZXIoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisgICAgdm9pZCBk
ZWxldGVSZW1vdGVNZWRpYVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIpOwog
Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBmaW5kUmVtb3RlUGxheWVy
SWQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKik7CisgICAgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGZpbmRSZW1vdGVQbGF5ZXJJZChjb25zdCBXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqKTsKIAogcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVS
ZW1vdGVNZWRpYVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllciosIFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CkBAIC04OCw3ICs4OCw3IEBAIHByaXZh
dGU6CiAKICAgICBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUmIHR5cGVDYWNoZShXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOwogCi0gICAgSGFz
aE1hcDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZT4+IG1fcGxheWVyczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6Ok1lZGlh
UGxheWVySWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+PiBtX3Bs
YXllcnM7CiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogICAgIG11dGFibGUgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBudWxscHRyIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KaW5kZXggZDU3NzY2
Mjg4OTkzMGU1MjY3NzM1OTFlNjM4MzBiMDYxYWNhZjIyMy4uYWU3YTlkM2FmNGIzNWRiZTU1NjNl
MjJhMDNjNTJjMGQ5OWJhN2M3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUNvY29hLm1tCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1NZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXImIG1hbmFnZXIpCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZShNZWRpYVBsYXllciogcGxheWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIHBs
YXllcklkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICA6IG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJM
b2dnZXIoKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRl
bnRpZmllcigpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410656</attachid>
            <date>2020-10-06 10:37:36 -0700</date>
            <delta_ts>2020-10-06 13:46:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217339-20201006103735.patch</filename>
            <type>text/plain</type>
            <size>83635</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3OTU0NzFjNzJhMjZh
NzQ4NGE1OGJmOWFjYTVhYzQwNzMxOWUyOS4uOWU5YzY5ODRiZjM4YmRlNjM5MjUxNjkzMWY2M2Mz
OTgwNDg2NDFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIwLTEwLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gU3VwcG9ydCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlKCkgd2l0aCBIVE1M
VmlkZW9FbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTczMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHBhaW50aW5nIHRoZSBjdXJyZW50IHZpZGVvIGZy
YW1lIGludG8gYSBjYW52YXMgMkQgZ3JhcGhpY3MgY29udGV4dC4gU2VlIGJlbG93IGZvciBtb3Jl
CisgICAgICAgIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KworICAgICAgICBGbGlwIHRoaXMgYXJvdW5kIHRvIGNhbGwgYEdyYXBoaWNzQ29udGV4dDo6cGFp
bnRGcmFtZUZvck1lZGlhYCB3aXRoIHRoZSBgTWVkaWFQbGF5ZXJgLCBpbnN0ZWFkIG9mIGNhbGxp
bmcgaW50bworICAgICAgICBgTWVkaWFQbGF5ZXJgIHdpdGggdGhlIGdyYXBoaWNzIGNvbnRleHQu
IFNlZSBjaGFuZ2VzIGJlbG93LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRG
cmFtZUZvck1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKworICAgICAgICBBZGQgYSBgcGFpbnRGcmFtZUZvck1lZGlhYCBtZXRob2QgdGhhdCB0
YWtlcyBhIGBNZWRpYVBsYXllcmAgcmVwcmVzZW50aW5nIGEgdmlkZW8sIGFuZCBwYWludHMgdGhl
IGN1cnJlbnQgZnJhbWUKKyAgICAgICAgb2YgdGhlIHZpZGVvIGludG8gdGhlIGNvbnRleHQuIElm
IHRoZSBncmFwaGljcyBjb250ZXh0IGlzIGJhY2tlZCBieSBhbiBwbGF0Zm9ybSBjb250ZXh0IChp
LmUuIGBtX2ltcGxgIGlzCisgICAgICAgIGBudWxscHRyYCksIHRoZW4gd2Ugc2ltcGx5IGNhbGwg
dGhyb3VnaCB0byBgTWVkaWFQbGF5ZXJgJ3MgcHJpdmF0ZSBpbXBsIHRvIHBhaW50IGludG8gdGhl
IGNvbnRleHQuIE90aGVyd2lzZSwgd2UKKyAgICAgICAgZm9yd2FyZCB0aGUgY2FsbCB0byB0aGUg
YEdyYXBoaWNzQ29udGV4dEltcGxgIChzZWUgdGhlIGNoYW5nZXMgdG8gYERpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwYCBiZWxvdykuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmg6CisKKyAgICAgICAgQWRkIGEgbmV3IHZpcnR1YWwgZnVuY3Rpb24gdG8g
cGFpbnQgdGhlIGN1cnJlbnQgZnJhbWUgb2YgdGhlIGdpdmVuIGBNZWRpYVBsYXllcmAgaW50byB0
aGUgZGVzdGluYXRpb24gcmVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVIYW5kbGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorCisg
ICAgICAgIFJlbW92ZSB0aGUgZXhpc3RpbmcgYHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0YCBt
ZXRob2Qgb24gYE1lZGlhUGxheWVyYCwgd2hpY2ggY3VycmVudGx5IHRha2VzIGEgZ3JhcGhpY3MK
KyAgICAgICAgY29udGV4dC4gSW5zdGVhZCwgbW92ZSBgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHRgIHRvIGBHcmFwaGljc0NvbnRleHRgLCByZW5hbWUgaXQgdG8gYHBhaW50RnJhbWVGb3JNZWRp
YWAsIGFuZAorICAgICAgICBwYXNzIGl0IGEgYE1lZGlhUGxheWVyYC4gQWRkaXRpb25hbGx5LCBl
eHBvc2UgYSBoZWxwZXIgbWV0aG9kIHRvIGdldCBhIG5vbi1jb25zdCBgTWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYWNlYCwKKyAgICAgICAgYW5kIG1vdmUgYm90aCBtZXRob2QgZGVmaW5pdGlvbnMg
dG8gdGhlIGltcGxlbWVudGF0aW9uIGZpbGUgdG8gYXZvaWQgc3R5bGUgY2hlY2tlciBlcnJvcnMg
ZHVlIHRvIGBNZWRpYVBsYXllcmAKKyAgICAgICAgaXRzZWxmIGJlaW5nIGBXRUJDT1JFX0VYUE9S
VGAtZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckhhbmRsZS5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmguCisKKyAgICAgICAgTW92ZSB3aGF0IGlzIGN1
cnJlbnRseSBgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcmAgaW50byBXZWJDb3Jl
LCBhbmQgZ2l2ZSBpdCB0aGUgbW9yZSBnZW5lcmFsIChhbmQKKyAgICAgICAgaW1wb3J0YW50bHks
IG5vbi1HUFUtcHJvY2Vzcy1zcGVjaWZpYykgbmFtZSBvZiBgTWVkaWFQbGF5ZXJJZGVudGlmaWVy
YC4gQWRkaXRpb25hbGx5LCBpbnRyb2R1Y2UgYW4gZW5jb2RhYmxlCisgICAgICAgIGBNZWRpYVBs
YXllckhhbmRsZWAgY2xhc3MgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiB3aGljaCBtYXkgYmUg
dXNlZCB0byBpZGVudGlmeSBhIGBNZWRpYVBsYXllcmAuIEZvciB0aGUgdGltZQorICAgICAgICBi
ZWluZywgdGhpcyBqdXN0IGluY2x1ZGVzIGEgYE1lZGlhUGxheWVySWRlbnRpZmllcmAuCisKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVySGFuZGxlOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJIYW5kbGU6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNyZWF0ZUhhbmRsZSBjb25zdCk6CisKKyAgICAgICAg
QWRkIGEgbmV3IHByaXZhdGUgaW1wbCBtZXRob2QgdGhhdCByZXR1cm5zIGEgYE1lZGlhUGxheWVy
YCBoYW5kbGUuIFdpdGggcmVzcGVjdCB0byB0aGUgR1BVIHByb2Nlc3Mgc3BlY2lmaWNhbGx5LAor
ICAgICAgICBgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlYCBjcmVhdGVzIGEgaGFuZGxlIHdpdGgg
dGhlIG1lZGlhIHBsYXllciBpZGVudGlmaWVyIHVzZWQgdG8gaWRlbnRpdHkgdGhlIG1lZGlhIHBs
YXllcgorICAgICAgICBpbnN0YW5jZSBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpwYWludEZyYW1lRm9yTWVk
aWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRGcmFtZUZv
ck1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6
ZUluQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JN
ZWRpYTo6UGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpQYWludEZyYW1lRm9yTWVkaWE6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlBhaW50RnJhbWVGb3JNZWRpYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE6OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE6OnBsYXllckhhbmRsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlh
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJh
bWVGb3JNZWRpYTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpwYWludEZyYW1lRm9yTWVkaWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisKKyAgICAgICAgQWRkIGEgbmV3IGRpc3Bs
YXkgbGlzdCBpdGVtLCBgUGFpbnRGcmFtZUZvck1lZGlhYCwgdGhhdCBwYWludHMgdGhlIGN1cnJl
bnQgZnJhbWUgb2YgYSBnaXZlbiBgTWVkaWFQbGF5ZXJgLiBUaGlzCisgICAgICAgIHdvcmtzIGJ5
IHNlcmlhbGl6aW5nIGFuZCB0aGVuIGRlc2VyaWFsaXppbmcgYSBgTWVkaWFQbGF5ZXJIYW5kbGVg
IGFuZCBkZXN0aW5hdGlvbiByZWN0OyBzaW1pbGFyIHRvCisgICAgICAgIGBQdXRJbWFnZURhdGFg
LCB0aGUgcmVwbGF5ZXIgZGVsZWdhdGUgaXMgcmVzcG9uc2libGUgZm9yIGFwcGx5aW5nIHRoaXMg
aXRlbSBieSBtYXBwaW5nIHRoZSBgTWVkaWFQbGF5ZXJIYW5kbGVgCisgICAgICAgIHRvIGEgY29u
Y3JldGUgYE1lZGlhUGxheWVyYCBpbnN0YW5jZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAg
ICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6cGFpbnRGcmFtZUZvck1lZGlh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQ6OnBhaW50RnJhbWVGb3JNZWRpYSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWRlbzo6cGFpbnRSZXBsYWNlZCk6CisKIDIwMjAtMTAtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoKSB0byBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIGV2ZXJ5d2hlcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMGNlZTU1Y2VkZjcxN2NhM2RjNTQ2MGJmM2YwNzNmNDQ3M2ViYTE4YS4uOWQwYTk4MzYx
NTYzMzRjODg2ODAyZWZlNzhiOTI3Y2U5MDI3YjRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBA
QAorMjAyMC0xMC0wNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIFN1cHBvcnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmRy
YXdJbWFnZSgpIHdpdGggSFRNTFZpZGVvRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBzdXBwb3J0IGZvciBwYWludGluZyB0
aGUgY3VycmVudCB2aWRlbyBmcmFtZSBpbnRvIGEgY2FudmFzIDJEIGdyYXBoaWNzIGNvbnRleHQu
IFNlZSBiZWxvdyAoYW5kCisgICAgICAgIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZykgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6CisKKyAgICAgICAgTWFzcyByZW5hbWUgYE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJgIHRvIGBXZWJDb3JlOjpNZWRpYVBsYXllcklk
ZW50aWZpZXJgLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eTo6YmFja2VuZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OmFwcGx5KToKKworICAgICAgICBSZWZhY3RvciBgYXBwbHlgIHNvIHRoYXQgaXQgdHJl
YXRzIGBQdXRJbWFnZURhdGFgIGFuZCBgUGFpbnRGcmFtZUZvck1lZGlhYCBhcyBzcGVjaWFsIGNh
c2VzLCBhbmQgb3RoZXJ3aXNlCisgICAgICAgIHJldHVybnMgYGZhbHNlYCBieSBkZWZhdWx0LiBJ
bXBsZW1lbnQgYGFwcGx5YCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgZGlzcGxheSBsaXN0IGl0ZW0g
aXMgYFBhaW50RnJhbWVGb3JNZWRpYWAgYnkKKyAgICAgICAgdXNpbmcgdGhlIGBNZWRpYVBsYXll
ckhhbmRsZWAgdG8gbG9vayB1cCB0aGUgcGxhdGZvcm0gYE1lZGlhUGxheWVyYCBpbnN0YW5jZSwg
YW5kIHRoZW4gY2FsbGluZworICAgICAgICBgR3JhcGhpY3NDb250ZXh0OjpwYWludEZyYW1lRm9y
TWVkaWFgIHdpdGggdGhpcyBgTWVkaWFQbGF5ZXJgLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
Y29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk6OmNyZWF0ZUNETSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVBy
b3h5OjpSZW1vdGVMZWdhY3lDRE1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETVByb3h5OjpzZXRQbGF5ZXJJZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkZWxldGVNZWRpYVBsYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZl
UGxheWVyTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpkaWRSZWNlaXZlU3luY1BsYXllck1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0UHJveHkpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlJlbW90ZU1lZGlhUGxh
eWVyUHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVIYW5kbGUgY29u
c3QpOgorCisgICAgICAgIENyZWF0ZSBhIGBNZWRpYVBsYXllckhhbmRsZWAgYnkgcmV0dXJuaW5n
IHRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlbW90ZSBgTWVkaWFQbGF5ZXJg
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpzZXRQbGF5ZXJJZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjcmVhdGVSZW1vdGVNZWRpYVBs
YXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZGVsZXRl
UmVtb3RlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXI6OmZpbmRSZW1vdGVQbGF5ZXJJZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6ZGlkUmVjZWl2ZVBsYXllck1lc3NhZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZSk6CisKKyAgICAgICAgTW9yZSBtYXNzIHJlbmFtaW5nIGZyb20gYE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJgIHRvIGBXZWJDb3JlOjpNZWRpYVBsYXllcklk
ZW50aWZpZXJgLgorCiAyMDIwLTEwLTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkg
dG8gc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSBldmVyeXdoZXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpp
bmRleCA0NjkxMTAyZGM5ZmY0NTBkNTAxNjVkMGQ2YjFhZWFlZmNhMzgxNzAwLi5hMmQxOTY1ZWYy
MjI2ZWEwZjdlOGZiOWZiYzEzNjRmMjgzMmI2YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEx
ODcsNiArMTE4Nyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJFbnVtcy5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJIYW5kbGUuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBkN2JkMzcwOTIwOWFhZWNiNzljN2NkNmFkYjE1ZDJlMTBlNzliOTkzLi5iNTJj
MDBiY2IzMzI5YTgzOTRlZTFlNDc2ZmU4NjBmZjBhY2Q3OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTQyLDYgKzUxNDIs
NyBAQAogCQlGM0FCRkUwQzEzMEU5REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNBQkZFMEIx
MzBFOURBMDAwRTdGN0QxIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuaCAqLzsgfTsKIAkJRjNENDYx
NDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyog
SlNFcnJvckhhbmRsZXIuaCAqLzsgfTsKIAkJRjQwM0U3ODcyMzYzQjU4QzAwMDQ0NTUwIC8qIEVu
dGVyS2V5SGludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQwM0U3ODUyMzYzQjU4QzAwMDQ0NTUwIC8qIEVudGVyS2V5SGludC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0MjkyNjE4MjUyNjRENDQw
MDAwNzg5OCAvKiBNZWRpYVBsYXllckhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyOTI2MTcyNTI2NEQ0NDAwMDA3ODk4IC8qIE1lZGlhUGxh
eWVySGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRjQzM0U5MDMxREJCREJBMjAwRUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzNFOTAyMURCQkRC
QTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ0MEU3N0EyMzNEOTRENzAwNjNGOUFCIC8qIE5h
dmlnYXRvckNsaXBib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ0MEU3NkYyMzNEOTREMzAwNjNGOUFCIC8qIE5hdmlnYXRvckNsaXBib2FyZC5o
ICovOyB9OwogCQlGNDQwRTc3QjIzM0Q5NEQ3MDA2M0Y5QUIgLyogQ2xpcGJvYXJkSXRlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MEU3NzAyMzNE
OTRENDAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCAqLzsgfTsKQEAgLTE2MTk5LDYgKzE2MjAw
LDcgQEAKIAkJRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXJyb3JIYW5kbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MDNFNzg1MjM2M0I1OEMwMDA0NDU1MCAvKiBFbnRlcktl
eUhpbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW50ZXJLZXlIaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0MDNFNzg2MjM2M0I1OEMwMDA0NDU1MCAvKiBFbnRlcktleUhpbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRW50ZXJLZXlIaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjQyOTI2MTcyNTI2NEQ0NDAwMDA3ODk4IC8qIE1lZGlhUGxheWVySGFuZGxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVySGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0MkNFQjU0MjE0MDMxRUUwMDJEQ0E3MiAvKiBGb250QXR0cmlidXRlQ2hh
bmdlc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9udEF0dHJpYnV0ZUNoYW5nZXND
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzM0U5MDIxREJCREJBMjAw
RUYwRDE0IC8qIFN0YXRpY1Bhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RhdGljUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDMzRTkwNDFEQkJEQkMyMDBFRjBEMTQgLyogU3RhdGljUGFzdGVib2FyZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdGF0aWNQYXN0ZWJvYXJkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI2MjA1LDYgKzI2MjA3LDcgQEAKIAkJCQlFNEI0MUUwQzBDQkY5MEJEMDBBRjJFQ0Ug
LyogTWVkaWFQbGF5ZXIuY3BwICovLAogCQkJCUU0QjQxRTBEMENCRjkwQkQwMEFGMkVDRSAvKiBN
ZWRpYVBsYXllci5oICovLAogCQkJCUNENTIwOUUzMUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRpYVBs
YXllckVudW1zLmggKi8sCisJCQkJRjQyOTI2MTcyNTI2NEQ0NDAwMDA3ODk4IC8qIE1lZGlhUGxh
eWVySGFuZGxlLmggKi8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZS5oICovLAogCQkJCUNENjQxRUIxMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNv
dXJjZVByaXZhdGUuaCAqLywKIAkJCQlDRERDMUU3OTE4QTk1MkYzMDAyN0E5RDQgLyogTWVkaWFT
b3VyY2VQcml2YXRlQ2xpZW50LmggKi8sCkBAIC0zMzA0Miw2ICszMzA0NSw3IEBACiAJCQkJMDc3
QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNFNDBDRDY4MUEyMDBGQURBNzUgLyogTWVkaWFQbGF5
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTIwOUU0MUIwQkQ4MzgwMDc3MTg0RSAvKiBNZWRp
YVBsYXllckVudW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDI5MjYxODI1MjY0RDQ0MDAwMDc4
OTggLyogTWVkaWFQbGF5ZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MjVFRkE5MjM5
QUQ3OTMwMEE1MzhBOSAvKiBNZWRpYVBsYXllclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCURGOUFGRDcyMTNGQzMxRDgwMDE1RkVCNyAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDhkZmFiYjMyMmM0MDAwYmE2Njk4
NjE1ODhjMWJhZGM3YWRmMzk4MmYuLmM5ZjI4YmQyYjgzNDJjZjAxYTU3MzQ5NTAxNzM0MDJjNjQ4
NmE1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjk3
LDcgKzI5Nyw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBwbGF5ZXItPnNldFZpc2libGUodHJ1ZSk7IC8vIE1ha2UgcGxheWVyIHZpc2libGUg
b3IgaXQgd29uJ3QgZHJhdy4KLSAgICBwbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KGNvbnRleHQsIGRlc3RSZWN0KTsKKyAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxh
eWVyLCBkZXN0UmVjdCk7CiB9CiAKIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBQ
bGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMjY1Y2I1N2Qz
OTM5NTAzOGE2MjlmMzViY2Q2ODYzYWE0NDQzOWM2Ny4uN2FmNTUwMmM1OGZjYzQ5MjAxZDdiZjZl
ODE5ZTZkYzA5OTVkMmZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0SW1wbC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJUZXh0
UnVuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMTIzOSw2ICsxMjQx
LDcgQEAgVmVjdG9yPEZsb2F0UG9pbnQ+IEdyYXBoaWNzQ29udGV4dDo6Y2VudGVyTGluZUFuZEN1
dE9mZkNvcm5lcnMoYm9vbCBpc1ZlcnRpY2FsTGkKIH0KIAogI2lmICFVU0UoQ0cpCisKIGJvb2wg
R3JhcGhpY3NDb250ZXh0OjpzdXBwb3J0c0ludGVybmFsTGlua3MoKSBjb25zdAogewogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEyNTEsNiArMTI1NCwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0RGVzdGluYXRpb25Gb3JSZWN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IEZsb2F0UmVjdCYpCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkRGVzdGluYXRpb25BdFBvaW50KGNvbnN0IFN0cmluZyYs
IGNvbnN0IEZsb2F0UG9pbnQmKQogewogfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGFpbnRG
cmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcGxheWVyLnNldFZpc2libGUodHJ1ZSk7CisgICAgcGxheWVyLnBsYXllclByaXZhdGUo
KS0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoKnRoaXMsIGRlc3RpbmF0aW9uKTsKK30KKwog
I2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggMDg4ZjJlNTM5NmI5YjQzODU4ODdlYzAxZmFjYThlN2RkOTBl
MTgwNy4uZGI0YzAwMmVjY2QyMmU2ZmU5NDA4N2M2OWY5MTI4ZDQyODk5MjdiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTkyLDYgKzkyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVj
dDsKK2NsYXNzIE1lZGlhUGxheWVyOwogY2xhc3MgUm91bmRlZFJlY3Q7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDsKIGNsYXNzIFBhdGg7CkBAIC01MTYsNiArNTE3LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Q29udGVudGZ1bFBhaW50RGV0ZWN0ZWQoKSB7IG1fY29udGVuZnVsUGFp
bnREZXRlY3RlZCA9IHRydWU7IH0KICAgICBib29sIGNvbnRlbmZ1bFBhaW50RGV0ZWN0ZWQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbmZ1bFBhaW50RGV0ZWN0ZWQ7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbik7CisKICNpZiBPUyhXSU5ET1dTKQogICAgIEhEQyBnZXRXaW5kb3dz
Q29udGV4dChjb25zdCBJbnRSZWN0JiwgYm9vbCBzdXBwb3J0QWxwaGFCbGVuZCk7IC8vIFRoZSBw
YXNzZWQgaW4gcmVjdCBpcyB1c2VkIHRvIGNyZWF0ZSBhIGJpdG1hcCBmb3IgY29tcG9zaXRpbmcg
aW5zaWRlIHRyYW5zcGFyZW5jeSBsYXllcnMuCiAgICAgdm9pZCByZWxlYXNlV2luZG93c0NvbnRl
eHQoSERDLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBzdXBwb3J0QWxwaGFCbGVuZCk7IC8vIFRoZSBw
YXNzZWQgaW4gSERDIHNob3VsZCBiZSB0aGUgb25lIGhhbmRlZCBiYWNrIGJ5IGdldFdpbmRvd3ND
b250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDhiYzljMWMyZWNjMGNiZmMzODI2YWExZTAxOTEzMWM4
OTM3MmQzZmUuLjU1MWUwM2EwNDA4YmI3YTFhZDVkOWFjMDRkN2NjNDAzMjliNTkwMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRSZWN0
IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFj
ZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgPSAwOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBh
cHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA5MDJmNTg5OTdmNzI2Y2Zi
MTdhNjI2YmQ5ZTk0NjVlNTlkZGVjYjA3Li5mYjQ5NDE2NGRhYjY5MTc0MTc3YzAwOTAyOTlkNjVk
NmU0NjczNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIK
ICNpbmNsdWRlICJEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAt
MzA0LDYgKzMwNSwxNiBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFBsYWluKCkKICAg
ICByZXR1cm4gdGV4dFBsYWluOwogfQogCitjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2UqIE1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLmdldCgpOworfQorCitNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIE1lZGlhUGxh
eWVyOjpwbGF5ZXJQcml2YXRlKCkKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQor
CiBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjptZWRpYUVuZ2luZShNZWRp
YVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBh
dXRvJiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCk7CkBAIC05NjcsMTEgKzk3OCw2
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgRmxv
YXRSZWN0JiByKQogICAgIG1fcHJpdmF0ZS0+cGFpbnQocCwgcik7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXI6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgcCwgY29u
c3QgRmxvYXRSZWN0JiByKQotewotICAgIG1fcHJpdmF0ZS0+cGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQocCwgcik7Ci19Ci0KIGJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxp
cFkpOwpAQCAtMTYwOSw2ICsxNjE1LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmF1ZGlvT3V0cHV0
RGV2aWNlQ2hhbmdlZCgpCiAgICAgbV9wcml2YXRlLT5hdWRpb091dHB1dERldmljZUNoYW5nZWQo
KTsKIH0KIAorTWVkaWFQbGF5ZXJIYW5kbGUgTWVkaWFQbGF5ZXI6OmNyZWF0ZUhhbmRsZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3JlYXRlSGFuZGxlKCk7Cit9CisKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKIGNvbnN0IExvZ2dlciYgTWVkaWFQbGF5ZXI6Om1lZGlhUGxh
eWVyTG9nZ2VyKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCmluZGV4IGQ0NjczMWEyYmFkZjg4NTcwMTgwMTk4ODE1NjIzMmMzNGIxZmRmZTYu
LjUzNTc5MGQ5ZGYxODlkMmQ2M2Q5ZTBhNDFhZWQyYjQyYmZiMGMzN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNzksNiArNzksNyBA
QCBjbGFzcyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjsKIAogc3RydWN0IENvb2tpZTsKIHN0cnVj
dCBHcmFwaGljc0RldmljZUFkYXB0ZXI7CitzdHJ1Y3QgTWVkaWFQbGF5ZXJIYW5kbGU7CiBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyB7CkBAIC00MjEsNyArNDIyLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xvc2VkQ2Fw
dGlvbnNWaXNpYmxlKGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKTsKIAogICAgIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAogICAgIC8vIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGlzIHVzZWQgdG8g
ZG8gdGhlIEdQVS1HUFUgdGV4dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJhY2sgdG8gc3lzdGVt
IG1lbW9yeS4KICAgICAvLyBUaGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRlbm90ZSB0aGUgY29y
cmVzcG9uZGluZyBHcmFwaGljc0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1cmUsIHJlcXVlc3Rl
ZCBsZXZlbCwgcmVxdWVzdGVkIHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRlcm5hbEZvcm1hdCBm
b3IgZGVzdGluYXRpb24gdGV4dHVyZS4KQEAgLTYyOSw3ICs2MjksOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywg
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3Np
bmdQbHVnaW5zQ2FsbGJhY2smIGNhbGxiYWNrKSB7IGNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlz
c2luZ1BsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsgfQogI2VuZGlmCiAK
LSAgICBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHBsYXllclByaXZhdGUoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7IH0KKyAgICBjb25zdCBNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2UqIHBsYXllclByaXZhdGUoKSBjb25zdDsKKyAgICBNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2UqIHBsYXllclByaXZhdGUoKTsKIAogICAgIER5bmFtaWNSYW5nZU1vZGUg
cHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZmVycmVkRHlu
YW1pY1JhbmdlTW9kZTsgfQogICAgIHZvaWQgc2V0UHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZShE
eW5hbWljUmFuZ2VNb2RlKTsKQEAgLTYzOCw2ICs2MzksOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IGF1ZGlvT3V0cHV0RGV2aWNlSWRPdmVycmlkZSgpIGNvbnN0OwogICAgIHZvaWQgYXVkaW9PdXRw
dXREZXZpY2VDaGFuZ2VkKCk7CiAKKyAgICBNZWRpYVBsYXllckhhbmRsZSBjcmVhdGVIYW5kbGUo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYp
OwogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiwgTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVySGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllckhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjZmFkMTYzYTU3YjMz
YjQ5OGE5MWJmNTViYWU0NzA5YTA0OWNiYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckhhbmRsZS5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVu
dGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBNZWRpYVBsYXllcklkZW50
aWZpZXJUeXBlIHsgfTsKK3VzaW5nIE1lZGlhUGxheWVySWRlbnRpZmllciA9IE9iamVjdElkZW50
aWZpZXI8TWVkaWFQbGF5ZXJJZGVudGlmaWVyVHlwZT47CisKK3N0cnVjdCBNZWRpYVBsYXllckhh
bmRsZSB7CisgICAgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIG1lZGlhUGxheWVySWRlbnRpZmllcjsK
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWVkaWFQbGF5
ZXJIYW5kbGU+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIE1lZGlhUGxheWVySGFuZGxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IG1lZGlhUGxheWVySWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8TWVkaWFQbGF5ZXJIYW5kbGU+IE1lZGlhUGxheWVySGFu
ZGxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxNZWRpYVBsYXll
cklkZW50aWZpZXI+IG1lZGlhUGxheWVySWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IG1lZGlh
UGxheWVySWRlbnRpZmllcjsKKyAgICBpZiAoIW1lZGlhUGxheWVySWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyAqbWVkaWFQbGF5ZXJJZGVu
dGlmaWVyIH19OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDgx
MjUzMzAyNzZkZDU0NGUxZmNhYmRhMTdkNjM2Y2JjZjg3YmFkNTcuLjI2MDMwM2U0YWY2MTc2MmNm
OGEwOTdiMjJiYTA0YzNlMzYzY2YwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJN
ZWRpYVBsYXllckhhbmRsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yOTEsNiArMjkyLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRQcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlKER5bmFtaWNSYW5nZU1vZGUpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpIHsgfQorCisg
ICAgdmlydHVhbCBNZWRpYVBsYXllckhhbmRsZSBjcmVhdGVIYW5kbGUoKSBjb25zdCB7IHJldHVy
biBNZWRpYVBsYXllckhhbmRsZSB7IH07IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDNkNDZhNTA1M2IxN2M5YTNlZjlmODJiMjBiNGQ5NzFmMDJh
NTQzZTYuLmI2NWI0ZDY0NDA2YmViNzZjNDA5ZDNlOGM2NTQ5NzVjYTlmN2ViNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtNDMyLDYgKzQzMiwxMSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYsIENvbG9yU3BhYwogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9CiAK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQ
bGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50
ZWQuCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDQUlSTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggMzFiYTcxNjE3ZWZhNDU2YzEx
ZjA0M2ExOWE0NDkzZmQ1ODViMjNlNS4uZjM1MjgwY2U3ZjE4YzM3ZWQxMWQ5YzI4NDk3MmUzYWI5
ZTUwZjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTEwNyw2ICsx
MDcsNyBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBh
cHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CmluZGV4IDYzZmI1ZGQ2MWJhYmNjY2Y3MDkwNGU1NmQyZjlkNGU1YWQ1OGNhYzUuLjI3NmZiY2Q2
YjM0MTFkY2FjYWFjMzZiNzdkMjNlYWFiZWE1M2YzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAg
LTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5
ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJQYXRoLmgi
CiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKQEAgLTE5MzIs
NiArMTkzNCwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkRGVzdGluYXRpb25BdFBvaW50
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRmxvYXRQb2ludAogICAgIENHUERGQ29udGV4dEFk
ZERlc3RpbmF0aW9uQXRQb2ludChjb250ZXh0LCBuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IHRyYW5zZm9ybWVkUG9pbnQpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGFpbnRGcmFt
ZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24pCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnBhaW50RnJhbWVGb3JNZWRpYShwbGF5
ZXIsIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBsYXllci5z
ZXRWaXNpYmxlKHRydWUpOworICAgIHBsYXllci5wbGF5ZXJQcml2YXRlKCktPnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KCp0aGlzLCBkZXN0aW5hdGlvbik7Cit9CisKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDYxMDY0YTg4NjNiNDBmMTkwNWRhYTQwNTMzODdjMjI0
YjY0MjNhOGEuLmE2MzgzNjkyMWQ4ZGZjYTE2NjM4YmQ4NmFhOTMzZWZhN2UyNjRkODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCkBAIC04Myw2ICs4Myw3IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUg
OiB1aW50OF90IHsKICAgICBGaWxsUGF0aCwKICAgICBGaWxsRWxsaXBzZSwKICAgICBQdXRJbWFn
ZURhdGEsCisgICAgUGFpbnRGcmFtZUZvck1lZGlhLAogICAgIFN0cm9rZVJlY3QsCiAgICAgU3Ry
b2tlUGF0aCwKICAgICBTdHJva2VFbGxpcHNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCmluZGV4IGRiZjE4ODRhMjFhMzQ5ZjZhYTAzMzM3Zjc2ZWQ1OTI5MjNjMDRkZTMuLjJm
MTNkM2UxYTZjZWExN2RkNzBmOTVkNzI3YmRkNWNjYjRiOGM1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEaXNwbGF5
TGlzdFJlcGxheWVyLmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJJbWFn
ZURhdGEuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtMTQ1LDYgKzE0Niw4
IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICBy
ZXR1cm4gc2l6ZW9mKGRvd25jYXN0PEZpbGxFbGxpcHNlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVt
VHlwZTo6UHV0SW1hZ2VEYXRhOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PFB1dElt
YWdlRGF0YT4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToK
KyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxQYWludEZyYW1lRm9yTWVkaWE+KGl0ZW0p
KTsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgICAgICByZXR1cm4gc2l6ZW9m
KGRvd25jYXN0PFN0cm9rZVJlY3Q+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQ
YXRoOgpAQCAtMTIxOCw2ICsxMjIxLDM1IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQdXRJbWFnZURhdGEmIGl0ZW0pCiAgICAgcmV0dXJuIHRz
OwogfQogCitQYWludEZyYW1lRm9yTWVkaWE6OlBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXll
ciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQorICAgIDogRHJhd2luZ0l0
ZW0oSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYSkKKyAgICAsIG1fcGxheWVySGFuZGxlKHBs
YXllci5jcmVhdGVIYW5kbGUoKSkKKyAgICAsIG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCit7
Cit9CisKK1BhaW50RnJhbWVGb3JNZWRpYTo6UGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlh
UGxheWVySGFuZGxlJiBoYW5kbGUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCisgICAg
OiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhKQorICAgICwgbV9wbGF5
ZXJIYW5kbGUoaGFuZGxlKQorICAgICwgbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKK3sKK30K
KworUGFpbnRGcmFtZUZvck1lZGlhOjp+UGFpbnRGcmFtZUZvck1lZGlhKCkgPSBkZWZhdWx0Owor
Cit2b2lkIFBhaW50RnJhbWVGb3JNZWRpYTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QK
K3sKKyAgICAvLyBTaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgZGVsZWdhdGUuCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBQYWludEZyYW1lRm9yTWVkaWEmIGl0ZW0pCit7CisgICAgdHMgPDwg
c3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsKKyAgICB0cy5kdW1wUHJvcGVy
dHkoImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigpKTsKKyAgICByZXR1cm4gdHM7Cit9
CisKIFN0cm9rZVJlY3Q6OlN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBs
aW5lV2lkdGgpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6U3Ryb2tlUmVjdCkKICAgICAs
IG1fcmVjdChyZWN0KQpAQCAtMTQ0OCw2ICsxNDgwLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxQYXRoOiB0cyA8PCAiZmlsbC1wYXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbEVsbGlwc2U6IHRzIDw8ICJmaWxsLWVsbGlwc2UiOyBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHRzIDw8ICJwdXQtaW1hZ2UtZGF0YSI7IGJyZWFr
OworICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYTogdHMgPDwgInBhaW50LWZy
YW1lLWZvci1tZWRpYSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6IHRz
IDw8ICJzdHJva2UtcmVjdCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6
IHRzIDw8ICJzdHJva2UtcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVs
bGlwc2U6IHRzIDw8ICJzdHJva2UtZWxsaXBzZSI7IGJyZWFrOwpAQCAtMTU4Nyw2ICsxNjIwLDkg
QEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRl
bSkKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CiAgICAgICAgIHRzIDw8IGRvd25j
YXN0PFB1dEltYWdlRGF0YT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5
cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8UGFpbnRGcmFt
ZUZvck1lZGlhPihpdGVtKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlUmVjdDoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8U3Ryb2tlUmVjdD4oaXRlbSk7CiAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZjA1NTg2OWUx
N2FhYTk2NjRlYjUzZmIxYmVlNzk1ODA2NDI4ZDM2My4uOTMxNjdjMTZkNzExNjJhMzVjN2UzM2I5
MGYwOGEwMTFmZjk1OWUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVySGFuZGxlLmgiCiAj
aW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
PHd0Zi9UeXBlQ2FzdHMuaD4KQEAgLTQ0LDYgKzQ1LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VEYXRhOworY2xhc3MgTWVkaWFQbGF5ZXI7
CiBzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnM7CiAKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CkBAIC0yNTgyLDYgKzI1ODQsNTkgQEAgT3B0aW9uYWw8UmVmPFB1dEltYWdlRGF0YT4+IFB1dElt
YWdlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJuIFB1dEltYWdlRGF0
YTo6Y3JlYXRlKCppbnB1dEZvcm1hdCwgV1RGTW92ZSgqaW1hZ2VEYXRhKSwgKnNyY1JlY3QsICpk
ZXN0UG9pbnQsICpkZXN0Rm9ybWF0KTsKIH0KIAorY2xhc3MgUGFpbnRGcmFtZUZvck1lZGlhIDog
cHVibGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhaW50RnJhbWVG
b3JNZWRpYT4gY3JlYXRlKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWludEZyYW1l
Rm9yTWVkaWEocGxheWVyLCBkZXN0aW5hdGlvbikpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflBhaW50RnJhbWVGb3JNZWRpYSgpOworCisgICAgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKyAgICBjb25z
dCBNZWRpYVBsYXllckhhbmRsZSYgcGxheWVySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5
ZXJIYW5kbGU7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8UmVmPFBhaW50RnJhbWVGb3JNZWRpYT4+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6
CisgICAgc3RhdGljIFJlZjxQYWludEZyYW1lRm9yTWVkaWE+IGNyZWF0ZShjb25zdCBNZWRpYVBs
YXllckhhbmRsZSYgcGxheWVySGFuZGxlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFpbnRGcmFtZUZvck1lZGlhKHBs
YXllckhhbmRsZSwgZGVzdGluYXRpb24pKTsKKyAgICB9CisKKyAgICBQYWludEZyYW1lRm9yTWVk
aWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBQYWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXJIYW5kbGUmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBNZWRpYVBsYXllckhhbmRsZSBtX3BsYXll
ckhhbmRsZTsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKK307CisKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIFBhaW50RnJhbWVGb3JNZWRpYTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3BsYXllckhhbmRsZTsKKyAgICBlbmNv
ZGVyIDw8IG1fZGVzdGluYXRpb247Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRp
b25hbDxSZWY8UGFpbnRGcmFtZUZvck1lZGlhPj4gUGFpbnRGcmFtZUZvck1lZGlhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxNZWRpYVBsYXllckhhbmRsZT4gcGxh
eWVySGFuZGxlOworICAgIGRlY29kZXIgPj4gcGxheWVySGFuZGxlOworICAgIGlmICghcGxheWVy
SGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlm
ICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gUGFpbnRGcmFtZUZvck1lZGlhOjpjcmVhdGUoKnBsYXllckhhbmRsZSwgKmRlc3RpbmF0aW9u
KTsKK30KKwogY2xhc3MgU3Ryb2tlUmVjdCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxTdHJva2VSZWN0PiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBmbG9hdCBsaW5lV2lkdGgpCkBAIC0yOTgzLDYgKzMwMzgsOSBAQCB2b2lkIEl0ZW06OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0
YToKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxQdXRJbWFnZURhdGE+KCp0aGlzKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgorICAg
ICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFBhaW50RnJhbWVGb3JNZWRpYT4oKnRoaXMpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgICAgICBlbmNv
ZGVyIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0z
MTkwLDYgKzMyNDgsMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFB1dEltYWdlRGF0YTo6ZGVjb2Rl
KGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVt
PihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OlBh
aW50RnJhbWVGb3JNZWRpYToKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFBhaW50RnJhbWVGb3JN
ZWRpYTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBTdHJva2VSZWN0
OjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9j
YXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKQEAgLTMyOTEsNiArMzM1Myw3IEBAIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSkK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsUGF0aCkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShGaWxsRWxsaXBzZSkKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShQdXRJbWFnZURhdGEpCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oUGFpbnRGcmFtZUZvck1lZGlhKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFN0cm9rZVJlY3QpCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ryb2tlUGF0aCkKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VFbGxpcHNlKQpAQCAtMzM1Miw2ICszNDE1
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRo
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2UsCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEsCisgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWEsCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0LAogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKaW5kZXggYmQwNDM4YzZhNGIyNTZjODg1NmJiMTI5YTNhYjVmYTIzZTc4ZGM4YS4u
ZTQzZjc2YzM4YWZmNTE3ZDhkNDZmZjcwMzdmODBiM2Y4YjU1NmUzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzg5LDYgKzM4OSwxMSBAQCB2b2lkIFJl
Y29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgQ29sb3JTcGFjZSBjbwogICAgIGFwcGVuZEl0ZW0oQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpj
cmVhdGUoZGVzdGluYXRpb24sIGNvbG9yU3BhY2UsIHJlY29yZGluZ0NvbnRleHQtPnRha2VEaXNw
bGF5TGlzdCgpKSk7CiB9CiAKK3ZvaWQgUmVjb3JkZXI6OnBhaW50RnJhbWVGb3JNZWRpYShNZWRp
YVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQoreworICAgIGFw
cGVuZEl0ZW0oUGFpbnRGcmFtZUZvck1lZGlhOjpjcmVhdGUocGxheWVyLCBkZXN0aW5hdGlvbikp
OworfQorCiB2b2lkIFJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKQogewogICAgIC8vIEZJWE1FOiB0aGlzIGNoYW5nZXMgdGhlIGJhc2VDVE0s
IHdoaWNoIHdpbGwgaW52YWxpZGF0ZSBhbGwgb2Ygb3VyIGNhY2hlZCBleHRlbnRzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZDI3MGM1ZDkwOGFjNjhkNzgwODM2
M2JiYTkxYjJlNzYxYWVkYzkyYi4uOTRkOGJhMmJiZWE0YmQ4NDk2ZDZkZmNjZGU0MjkyZDU3MmEx
NDhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMzcsNiAr
MTM3LDcgQEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGlj
c0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVk
aWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICAK
ICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
CmluZGV4IGNlYTJhNmVhMDQ0NTM0ZmY0NTQ0ZWEyMTA5YzI2MTdkNzk3Y2EyZjEuLjMwNGZhY2Jh
YjE1MjE3OTFkYWE4NmRiMTUzMTc1M2UzODY3MTA4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC0xMDk1LDQgKzEw
OTUsOSBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5k
cyhjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLAogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVt
ZW50ZWQuCiB9CiAKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6cGFpbnRGcmFtZUZvck1l
ZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkLgorfQorCiB9IC8vIG5hbWVzcGFjZSBOaWNvc2lhCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggZGUyNGFi
OGJkNTI0MzJjZTI5M2E4MGY2YjRmOTg2MGYyMjJmYTdmZi4uM2JkNmU4N2ZiNjcxYzFmNGYxMjUz
Mzg3NDI5Y2Y5ZDA1MjNhNzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlw
VG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgcGFpbnRGcmFtZUZvck1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFwcGx5RGV2
aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuY3BwCmluZGV4IDU4OTQwYTNiODEzNGRiMTk1MDVlNjkyMWQ1YTU2MzA5NTkx
ZTgzOGQuLmM1M2Q4YmY4NWMwOTkzODgyOTI0OGY4MmRkZDkxYzlkZTMzYzA3ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC00NDEsNiArNDQxLDExIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiwgQ29sb3JTCiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0K
IAordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OnBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBs
ZW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKERJ
UkVDVDJEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDhmMTExNzc2
OTNhOGJiMTBiY2I0ODQ3OWYxOWE4ODkxMTI4M2NhZTQuLjU5YmZmMTAwNmY2YWY3NzVkNjRkOGUx
NDY3Zjg5ZGM2YThjZTMyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgK
QEAgLTEwNCw2ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhp
Y3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1l
ZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAg
CiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggZWQ5N2FmYTQyYmRlZjNh
Y2NhNjk1MTNlMjQ2ZWM1ZmI5M2RjNzBjNi4uMDdlMjlkNTcxMGI2MDJlOTkwYjVjMDE2ZGIxNjE4
ZDFhNTE3ZTRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBA
IC0yMjYsNyArMjI2LDcgQEAgdm9pZCBSZW5kZXJWaWRlbzo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgcGFpbnRJ
bnRvUmVjdChwYWludEluZm8sIHJlY3QpOwogICAgIGVsc2UgaWYgKCF2aWRlb0VsZW1lbnQoKS5p
c0Z1bGxzY3JlZW4oKSB8fCAhbWVkaWFQbGF5ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJp
bmcoKSkgewogICAgICAgICBpZiAocGFpbnRJbmZvLnBhaW50QmVoYXZpb3IuY29udGFpbnMoUGFp
bnRCZWhhdmlvcjo6RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSkKLSAgICAgICAgICAgIG1lZGlh
UGxheWVyLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChjb250ZXh0LCByZWN0KTsKKyAgICAg
ICAgICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCptZWRpYVBsYXllciwgcmVjdCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1lZGlhUGxheWVyLT5wYWludChjb250ZXh0LCByZWN0
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgK
aW5kZXggMmU5MjBlZmRkYzE3OWY2M2ZkNGZkMjRiY2Y3OTEzMjQxMDk1ZTYzNS4uYTRkMDVlYWVm
NTQ5NDE2ZmRiNjQyNTk1MmUwYjRjZjNhYTIwNWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaApAQCAtNTksNiArNTksOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAg
ICAgdm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIpOwog
CisgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBiYWNrZW5kKCkgeyByZXR1cm4gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7IH0KKwogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogICAgIElt
YWdlQnVmZmVySWRlbnRpZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCmluZGV4IDgxYjg5NzhkMGU3OTExNTdmOWM3ZTQ5NzAzOTgxN2U0Nzk1OWU1MTQuLjk3
YTk2NDNiNDA4MTVlN2NkNWVlZmI1MjNiOTAzYTIzYTg3Njk2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5j
bHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgpA
QCAtODQsMTQgKzg1LDM3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CiAgICAgfQog
Ci0gICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Jikgb3ZlcnJpZGUKKyAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoaXRlbS50eXBlKCkgIT0gV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRJbWFnZURhdGEpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChpdGVtLnR5cGUoKSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlB1dEltYWdlRGF0YSkgeworICAgICAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRl
bSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmPihpdGVt
KTsKKyAgICAgICAgICAgIHB1dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0Rm9ybWF0
KCksIHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0uc3JjUmVj
dCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RG
b3JtYXQoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChpdGVtLnR5cGUoKSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50
RnJhbWVGb3JNZWRpYSkgeworICAgICAgICAgICAgYXBwbHkoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYSY+KGl0ZW0pLCBjb250ZXh0KTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHZvaWQgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVG
b3JNZWRpYSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorICAgIHsK
KyAgICAgICAgYXV0byBwcm9jZXNzID0gYmFja2VuZCgpLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKTsKKyAgICAgICAgaWYgKCFwcm9jZXNzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGF1dG8gcGxheWVyUHJveHkgPSBwcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eSgpLmdldFByb3h5KGl0ZW0ucGxheWVySGFuZGxlKCkubWVkaWFQbGF5ZXJJZGVudGlmaWVy
KTsKKyAgICAgICAgaWYgKCFwbGF5ZXJQcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIHBsYXllciA9IHBsYXllclByb3h5LT5tZWRpYVBsYXllcigpOworICAgICAgICBp
ZiAoIXBsYXllcikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvJiBwdXRJbWFn
ZURhdGFJdGVtID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0
YSY+KGl0ZW0pOwotICAgICAgICBwdXRJbWFnZURhdGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZv
cm1hdCgpLCBwdXRJbWFnZURhdGFJdGVtLmltYWdlRGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNy
Y1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5k
ZXN0Rm9ybWF0KCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY29udGV4dC5wYWlu
dEZyYW1lRm9yTWVkaWEoKnBsYXllciwgaXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGRiYjU1YmEzYzIyMGRlODZm
MThhNTMzY2ZhMDg3MThmMzg5MjRmMDguLjc1M2E1YzhiYTk3ZmU3MjA4MzEwNThlODRjNWNkODNi
NGIxNzU1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0xMjEsNiAr
MTIxLDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVm
ZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QKICAgICAgICAgaW1hZ2VCdWZmZXItPmZs
dXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoZGlzcGxheUxpc3QsIGZsdXNoSWRlbnRpZmllcik7
CiB9CiAKK0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmgKaW5kZXggNjc2NGFjMTBjNWU3ZTAyYTRjOTc4NzdiOWM1ZTU1Y2EwYjc4Y2IxZS4u
YTA5NTJiYWZiM2MxNTMyZDdkYzk5MDA2ZWI0MGYzMWJmOTFkMjUzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CiAKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXI7IH0KKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCmluZGV4
IGY1ZDUwODNjOGMwNzVmZGFlZWM3YmI3NzFiNTVhODUxNjkyYjE1YjUuLjZhZjg0YzY1N2I2MDc4
ZTA5ZjZiOWIyZTI3OGY3YTQzMDc2Zjg0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2NlCiAKIFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6flJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSgpID0gZGVmYXVs
dDsKIAotdm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
Zmllcj4mJiBvcHRpb25hbFBsYXllcklkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXImJik+JiYgY29tcGxldGlvbikKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFs
PE1lZGlhUGxheWVySWRlbnRpZmllcj4mJiBvcHRpb25hbFBsYXllcklkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik+JiYgY29tcGxldGlvbikKIHsK
ICAgICBhdXRvIHByaXZhdGVDRE0gPSBMZWdhY3lDRE06OmNyZWF0ZShrZXlTeXN0ZW0pOwogICAg
IGlmICghcHJpdmF0ZUNETSkgewpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25h
bDxNZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllciBwbGF5ZXJJZDsKKyAgICBNZWRpYVBsYXllcklkZW50aWZpZXIgcGxheWVy
SWQ7CiAgICAgaWYgKG9wdGlvbmFsUGxheWVySWQpCiAgICAgICAgIHBsYXllcklkID0gV1RGTW92
ZShvcHRpb25hbFBsYXllcklkLnZhbHVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKaW5k
ZXggNTM1NTM4NDg4NjU5OTgxZDhmODgzYjRjYTFlY2NhYzIzNWEzOWZlZC4uZDFkMzEzMzhkMWIw
ZjhhNDY3YzFkZTQ4MDIxZmVhYmE3NmM3ZmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaApA
QCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVBsYXllckhhbmRsZS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIC8vIE1lc3Nh
Z2VzCi0gICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFs
PE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVD
RE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllcj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVu
dGlmaWVyJiYpPiYmKTsKICAgICB2b2lkIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDAwNzQ0ZmJmZDRkMDJjMWY5YzNkNzlhMDBmNTA0OWY5MTUzYjdmNDkuLmRi
NjA5YzkzYTJiODFkNzJkMmEzMDBmMjIyZTliMzIyOGFiMmU2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBD
cmVhdGVDRE0oU3RyaW5nIGtleVN5c3RlbSwgT3B0aW9uYWw8V2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJZCkgLT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllciBpZCkgU3luY2hyb25vdXMKKyAgICBDcmVhdGVDRE0oU3RyaW5nIGtleVN5
c3RlbSwgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiBwbGF5ZXJJZCkg
LT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZCkgU3luY2hyb25vdXMKICAg
ICBTdXBwb3J0c0tleVN5c3RlbShTdHJpbmcga2V5U3lzdGVtLCBPcHRpb25hbDxTdHJpbmc+IG1p
bWVUeXBlKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCmlu
ZGV4IDJkMTdhODkxYWFiMTFlZGU2ZGJlZDdjMGZkMDJkMjg1MjcxZTgzNjEuLmQ5YmY1MjI3MmMz
NzI5MTU3NWI1YjM5MzI2MmU3NzIxM2I5MzBkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtMzYsMTIg
KzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiBSZW1vdGVMZWdhY3lDRE1Q
cm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBmYWN0b3J5
LCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYgcGxheWVySWQsIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+JiYgY2RtKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxlZ2FjeUNETVByb3h5PiBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBmYWN0b3J5LCBNZWRpYVBsYXllcklkZW50aWZpZXIm
JiBwbGF5ZXJJZCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJiBjZG0pCiB7
CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4obmV3IFJl
bW90ZUxlZ2FjeUNETVByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUocGxheWVySWQpLCBX
VEZNb3ZlKGNkbSkpKTsKIH0KIAotUmVtb3RlTGVnYWN5Q0RNUHJveHk6OlJlbW90ZUxlZ2FjeUNE
TVByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImJiBwbGF5ZXJJZCwgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJiBjZG0pCitSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVt
b3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYg
ZmFjdG9yeSwgTWVkaWFQbGF5ZXJJZGVudGlmaWVyJiYgcGxheWVySWQsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpMZWdhY3lDRE0+JiYgY2RtKQogICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFj
dG9yeSkpCiAgICAgLCBtX3BsYXllcklkKFdURk1vdmUocGxheWVySWQpKQogICAgICwgbV9jZG0o
V1RGTW92ZShjZG0pKQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETVByb3h5
OjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDcmVhdGVTZXNzaW9uQwog
ICAgIGNhbGxiYWNrKFdURk1vdmUoaWRlbnRpZmllcikpOwogfQogCi12b2lkIFJlbW90ZUxlZ2Fj
eUNETVByb3h5OjpzZXRQbGF5ZXJJZChPcHRpb25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyPiYmIHBsYXllcklkKQordm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxh
eWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmIHBsYXllcklkKQogewogICAg
IGlmICghcGxheWVySWQpCiAgICAgICAgIG1fcGxheWVySWQgPSB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4
IDJiNmQxN2E5YTQ1NzFlMzQ4ODRjZmY4Y2E5YmVlYzMzMzFmODIwNmUuLjZhNWM2NzI1Y2FhOWJk
Yjg2N2FiODZiOGM1N2YzNmRlMmM4OTZkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC01MCwxNCArNTAsMTQg
QEAgY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHkKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpMZWdh
Y3lDRE1DbGllbnQKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1Q
cm94eT4gewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5
Q0RNUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4sIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkxlZ2FjeUNETT4mJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE1Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Piwg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpMZWdhY3lDRE0+JiYpOwogICAgIH5SZW1vdGVMZWdhY3lDRE1Qcm94eSgpOwogCiAgICAgUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0
b3J5LmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eTsKLSAgICBSZW1vdGVMZWdhY3lDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eT4mJiwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNPiYmKTsKKyAgICBSZW1vdGVM
ZWdhY3lDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpM
ZWdhY3lDRE0+JiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpA
QCAtNjgsMTMgKzY4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayYmKTsKICAgICB1c2luZyBDcmVh
dGVTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyJiYpPjsKICAgICB2b2lkIGNyZWF0ZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYpOwotICAgIHZvaWQgc2V0UGxheWVySWQoT3B0
aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJik7CisgICAgdm9pZCBz
ZXRQbGF5ZXJJZChPcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXI+JiYpOwog
CiAgICAgLy8gTGVnYWN5Q0RNQ2xpZW50CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVy
PiBjZG1NZWRpYVBsYXllcihjb25zdCBXZWJDb3JlOjpMZWdhY3lDRE0qKSBjb25zdCBmaW5hbDsK
IAogICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7Ci0g
ICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX3BsYXllcklkOworICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBtX3BsYXllcklkOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+IG1fY2RtOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDg3MWJhOGJkODdlN2Q5MjcwN2NjMDlkOGYzY2M0MGQ2ZjQ4ZGZjYjMu
LjliNDZhODIzZGIzNGNhMDJhNGU5NjhmNWE3MWIxYjc1YzZmOGVlNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAKIG1lc3NhZ2VzIC0+IFJlbW90ZUxl
Z2FjeUNETVByb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIFN1cHBvcnRzTUlNRVR5cGUoU3RyaW5n
IG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0cykgU3luY2hyb25vdXMKICAgICBDcmVhdGVTZXNz
aW9uKFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSAtPiAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCkgU3luY2hyb25vdXMKLSAgICBTZXRQbGF5ZXJJ
ZChPcHRpb25hbDxXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBs
YXllcklkKQorICAgIFNldFBsYXllcklkKE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRl
bnRpZmllcj4gcGxheWVySWQpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5jcHAKaW5kZXggZWIxNTBjYjMwYWUxODdhZTk0OTQ4NmJiNGEyYWUxYzE1Y2M0NWY1ZS4uMTEx
ODU3MjU3Y2M3YmYzYzBmMzcwYTdkZDI5ZjExZDdkZmIxYTMyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHkuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5Ojp+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKQogewogfQogCi12b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZp
Z3VyYXRpb24mJiBwcm94eUNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVt
b3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBs
YXllcklkZW50aWZpZXIgaWQsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciBlbmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiYm
IHByb3h5Q29uZmlndXJhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBs
YXllckNvbmZpZ3VyYXRpb24mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
IW1fcHJveGllcy5jb250YWlucyhpZCkpOwogCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkCiAgICAgY29tcGxldGlvbkhhbmRsZXIocGxheWVyQ29uZmlndXJhdGlvbik7
CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRlbGV0ZU1lZGlhUGxh
eWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCit2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpkZWxldGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklkZW50
aWZpZXIgaWQpCiB7CiAgICAgaWYgKGF1dG8gcHJveHkgPSBtX3Byb3hpZXMudGFrZShpZCkpCiAg
ICAgICAgIHByb3h5LT5pbnZhbGlkYXRlKCk7CkBAIC0xOTQsMTcgKzE5NCwxNyBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZwogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpk
aWRSZWNlaXZlUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBpZiAoYXV0byogcGxheWVyID0gbV9wcm94aWVzLmdl
dChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
VHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICBpZiAoYXV0byogcGxheWVyID0g
bV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJU
eXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICBwbGF5ZXItPmRpZFJlY2Vp
dmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlU3luY1BsYXllck1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiBlbmNvZGVyKQogewotICAgIGlmIChhdXRvKiBwbGF5ZXIgPSBtX3Byb3hp
ZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgIGlmIChhdXRvKiBwbGF5
ZXIgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPE1lZGlhUGxheWVySWRlbnRp
ZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgIHBsYXllci0+ZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOwogfQogCi1S
ZW1vdGVNZWRpYVBsYXllclByb3h5KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0
UHJveHkoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYgaWQpCitSZW1v
dGVNZWRpYVBsYXllclByb3h5KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0UHJv
eHkoY29uc3QgTWVkaWFQbGF5ZXJJZGVudGlmaWVyJiBpZCkKIHsKICAgICBhdXRvIHJlc3VsdHMg
PSBtX3Byb3hpZXMuZmluZChpZCk7CiAgICAgaWYgKHJlc3VsdHMgIT0gbV9wcm94aWVzLmVuZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAppbmRleCA1MWU3MWU3NzczNzhiOGRhZmI5Yzdj
NjI3MDJiOTFhNjc1ZmExZWJkLi4zZmI4OGMwNDRjYTIwOTkzOTI3NDE1MTg5YWZiYzljODAyODYx
MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtMjgsMTEgKzI4LDExIEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1
ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQ
bGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySGFuZGxlLmg+CiAjaW5jbHVk
ZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY4LDE1ICs2
OCwxNSBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCiAKLSAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5KiBnZXRQcm94eShjb25z
dCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJik7CisgICAgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eSogZ2V0UHJveHkoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVy
Jik7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKLSAgICB2b2lk
IGNyZWF0ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1v
dGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mKT4mJik7Ci0gICAgdm9pZCBkZWxldGVNZWRpYVBs
YXllcihNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0
ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5Q29uZmlndXJhdGlvbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxh
eWVyQ29uZmlndXJhdGlvbiYpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZU1lZGlhUGxheWVyKFdlYkNv
cmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcik7CiAKICAgICAvLyBNZWRpYSBwbGF5ZXIgZmFjdG9y
eQogICAgIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYpPiYmKTsKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4mJik7CiAgICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYmLCBjb25zdCBTdHJp
bmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSAgICBIYXNoTWFwPE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVN
ZWRpYVBsYXllclByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4+
IG1fcHJveGllczsKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0Y2JkNDYxNGI2MmI4YzNl
N2Q0ZjU2Y2E5NTBjOTQ0NzYxMjk5MzJmLi44ZGYzNTZhNGNiYmM2M2Q0NWI2N2IwNWJjYzAyYmQ4
MDI3M2Y3Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0yNCw4ICsyNCw4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiBtZXNzYWdl
cyAtPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBD
cmVhdGVNZWRpYVBsYXllcihXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgaWQsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24gcHJveHlDb25maWd1cmF0aW9uKSAtPiAoc3Ry
dWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3Vy
YXRpb24pIEFzeW5jCi0gICAgIERlbGV0ZU1lZGlhUGxheWVyKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKKyAgICBDcmVhdGVNZWRpYVBsYXllcihXZWJDb3Jl
OjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWQsIGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwg
c3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24gcHJveHlD
b25maWd1cmF0aW9uKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCisgICAgRGVsZXRlTWVkaWFQbGF5ZXIo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkKQogCiAgICAgR2V0U3VwcG9ydGVkVHlw
ZXMoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMp
IFN5bmNocm9ub3VzCiAgICAgU3VwcG9ydHNUeXBlQW5kQ29kZWNzKGVudW06dWludDhfdCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5l
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMg
dHlwZSkgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0
c1R5cGUgc3VwcG9ydCkgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA0ZWNhNjcx
NmVlYzNlYTUzY2RiNjkwMWM4ZjJjM2ZlNzVjNmZiYzE0Li41NWM4ZjA3ZDc4YmI2MzE5ZmZjNGM4
YmUxYTIwZTY3NDE2ZTZlOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02Myw3ICs2Myw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eSYgbWFuYWdlciwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQorUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSYgbWFuYWdlciwgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24sIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBl
bmdpbmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24pCiAgICAgOiBtX2lkKGlkKQogICAgICwgbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaAppbmRleCA0MWI1MzY2ZjhjNGM5NDU0YzMxNThhMWM1YTYzN2M2YzUwMzU2ODA3Li5jZDQw
YzIyOTkzZDIyMDY3NTNiOTNjNjNhYjc0ZWRhOTMwM2NmNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAg
LTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uLmgiCkBAIC00MCw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllckhhbmRs
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAg
LTc2LDEwICs3NiwxMCBAQCBjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5IGZpbmFsCiAgICAg
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5KFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5JiwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiYmKTsKKyAg
ICBSZW1vdGVNZWRpYVBsYXllclByb3h5KFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Jiwg
V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uJiYpOwogICAgIH5SZW1vdGVNZWRpYVBsYXllclBy
b3h5KCk7CiAKLSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW5kaWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVu
dGlmaWVyIGlkZW5kaWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCkBAIC0yNzYs
NyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2
YXRlKiwgUmVmPFJlbW90ZVZpZGVvVHJhY2tQcm94eT4+IG1fdmlkZW9UcmFja3M7CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgUmVmPFJlbW90ZVRleHRUcmFj
a1Byb3h5Pj4gbV90ZXh0VHJhY2tzOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBtX2lkOworICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBtX2lkOwog
ICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAgICAgUmVm
PElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggMzFmN2VlZGZkOTQxMDJjZTg5ODI4ZmIyNWNmMjkyNzVhNWUyYzc5
ZC4uZWM5OTNlNWIzNjg0NDI0Mjg3M2IzNjg0ZTMwNDAyMmQ3OTFkYTRlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTUsNiArMjE1LDcgQEAgZGVmIHR5
cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpMaWJXZWJSVENTb2NrZXRJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElk
ZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAg
ICAgICAgJ1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBv
bGljeScsCkBAIC0yNDQsNyArMjQ1LDYgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zvcndh
cmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCcs
CiAgICAgICAgICdXZWJLaXQ6OkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJLaXQ6Ok1ETlNSZWdpc3RlcklkZW50aWZpZXInLAotICAgICAgICAnV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFS
ZWNvcmRlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpQREZQbHVnaW5JZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6UGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXInLApA
QCAtNjE1LDYgKzYxNSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJzogWyc8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9y
Q29kZSc6IFsnPFdlYkNvcmUvTGVnYWN5Q0RNU2Vzc2lvbi5oPiddLAogICAgICAgICAnV2ViQ29y
ZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPidd
LAorICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJzogWyc8V2ViQ29yZS9N
ZWRpYVBsYXllckhhbmRsZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5JzogWyc8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6TW91c2VFdmVudFBvbGljeSc6IFsnPFdl
YkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok5ldHdvcmtUcmFu
c2FjdGlvbkluZm9ybWF0aW9uJzogWyc8V2ViQ29yZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg+
J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1NzIxMzU2MmFiYzFiZTM4NDJiZTMxZTg2MTczNzBkZTI4NzhjZDBhLi5jMTQ0MTY3NDQ4
NjgwMmNhMWRkM2VkMjI1MDI2NDJjMWI4MDdkMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjQsNyArMjE2NCw2IEBACiAJCTA3
OTIzMTQyMjM5Q0JDQjUwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzkyMzE0NTIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzkyMzE0NjIzOUNCQ0I3MDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3OTIzMTRFMjM5RDVGNTMw
MDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc5NEI0QUIyNDQ1MUJCOTAwMDFCOUM0IC8qIE1lZGlhVXNhZ2VN
YW5hZ2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVVzYWdlTWFuYWdlckNv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzk0QjRBQzI0NDUxQkI5MDAw
MUI5QzQgLyogTWVkaWFVc2FnZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFVc2FnZU1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5NEI0QUUyNDQ1MjRCMDAw
MDFCOUM0IC8qIE1lZGlhVXNhZ2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
VXNhZ2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1MDEsNyAr
NTUwMCw2IEBACiAJCQkJMDc5MjMxMzEyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAgKi8sCiAJCQkJMDc5MjMxMzIyMzlCM0IwQzAwOTU5OEUyIC8qIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5oICovLAogCQkJCTA3QjFEMDRCMjNEMzhGQ0UwMDM5OUE2RSAv
KiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gKi8sCi0JCQkJMDc5MjMxNEUy
MzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCAq
LywKIAkJCQk5QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmgg
Ki8sCiAJCQkJOUI1QkVDMjkyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5jcHAgKi8sCiAJCQkJOUI1QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmlu
ZGV4IDRkNGExZmM1YjQyY2NiMWFhYzU3YmI1NDhmMWQ0ZjEwYzBkZWIzY2YuLjk2OTRiYWE1NDE5
MTQyZjNiZjliMmJmMDVlMmI4OTM0ZDc0OTUwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZW5kaWYK
IAogI2lmICFQTEFURk9STShDT0NPQSkKLU1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVyRW51bXM6
Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlciYgbWFuYWdlcikKK01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllcklkZW50aWZpZXIgcGxh
eWVySWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQogICAgIDog
bV9wbGF5ZXIocGxheWVyKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dn
ZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQpAQCAtMTE1Niw2ICsxMTU2LDExIEBAIFdU
RkxvZ0NoYW5uZWwmIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0
CiB9CiAjZW5kaWYKIAorTWVkaWFQbGF5ZXJIYW5kbGUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpjcmVhdGVIYW5kbGUoKSBjb25zdAoreworICAgIHJldHVybiB7IG1faWQgfTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5k
ZXggMWQ4ZGI3ODJiN2I4NDI0NjEwZDVkYzE3YWEzNzZjOWM3N2ViNzg5Yy4uYTBlM2NiYWIyMTA5
M2JlNjhmMjk2MjA5MjQ4M2YxMTc4MjRhOGY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
CkBAIC02OSwxMiArNjksMTIgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIGZpbmFs
CiAjZW5kaWYKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZT4gY3JlYXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBwbGF5ZXIsIFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdp
bmVJZGVudGlmaWVyLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbWFuYWdlcikKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4gY3JlYXRlKFdlYkNvcmU6Ok1lZGlh
UGxheWVyKiBwbGF5ZXIsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRl
bnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50
aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQogICAg
IHsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPihw
bGF5ZXIsIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGlkZW50aWZpZXIsIG1hbmFnZXIpOwogICAg
IH0KIAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShXZWJDb3JlOjpNZWRpYVBsYXllcios
IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciwgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJik7
CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKFdlYkNvcmU6Ok1lZGlhUGxheWVyKiwgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYpOwogICAgIH5N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUoKTsKIAogICAgIHZvaWQgc2V0Q29uZmlndXJhdGlvbihS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYpOwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUo
KSB7IG1faW52YWxpZCA9IHRydWU7IH0KICAgICBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVtb3RlRW5naW5lSWRlbnRpZmllcjsgfQotICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIgaXRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaXRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7IH0KIAogICAg
IHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYpOwpAQCAt
MjYyLDYgKzI2Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdM
T2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwg
Ym9vbCwgYm9vbCkgZmluYWw7CiAgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOwogCisgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJIYW5k
bGUgY3JlYXRlSGFuZGxlKCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIHNldFByZWxvYWQoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OlByZWxvYWQpIGZpbmFsOwogCiAgICAgYm9vbCBoYXNBdmFpbGFi
bGVWaWRlb0ZyYW1lKCkgY29uc3QgZmluYWw7CkBAIC0zNjgsNyArMzcwLDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciYgbV9tYW5hZ2VyOwogICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBtX3JlbW90ZUVuZ2luZUlk
ZW50aWZpZXI7Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX2lkOwor
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBtX2lkOwogICAgIFJlbW90ZU1lZGlh
UGxheWVyQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiAKICAgICBSZW1vdGVNZWRpYVBs
YXllclN0YXRlIG1fY2FjaGVkU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTZiM2M1OWZiZTQy
YjZiYzFhMzA2NzFlNzAwYTU3MzRkZGI5ZjUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlICwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKLQotI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1lbnVtIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlIHsg
fTsKLXVzaW5nIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlPjsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCmluZGV4IDgxYzYwM2IwZjNmZmM5
NzNlODlmMGY4MGUwM2YzYjZlNWExZGFhMjAuLmU1YTZkOTRlYmFjZjUzOGQxZGZmOTE1ODYxZmNm
OTYyODE4ZGVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAKQEAgLTc0LDEyICs3NCwxMiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNOjpjcmVhdGVT
ZXNzaW9uKFdlYkNvcgogICAgIHJldHVybiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUo
bV9mYWN0b3J5LCBXVEZNb3ZlKGlkKSk7CiB9CiAKLXZvaWQgUmVtb3RlTGVnYWN5Q0RNOjpzZXRQ
bGF5ZXJJZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQordm9pZCBSZW1v
dGVMZWdhY3lDRE06OnNldFBsYXllcklkKE1lZGlhUGxheWVySWRlbnRpZmllciBpZCkKIHsKICAg
ICBpZiAoIW1fZmFjdG9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgT3B0aW9uYWw8TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gb3B0aW9uYWxJZDsKKyAgICBPcHRpb25hbDxN
ZWRpYVBsYXllcklkZW50aWZpZXI+IG9wdGlvbmFsSWQ7CiAgICAgaWYgKGlkKQogICAgICAgICBv
cHRpb25hbElkID0gaWQ7CiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6U2V0UGxheWVy
SWQob3B0aW9uYWxJZCksIG1faWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaAppbmRleCBmNTRjZDNjYzQyOTQx
NzE2NjE5ZjUwM2I2M2Y5NzNiMTFhMWUyMjQwLi4xMzFlNjc5ZDU1MThiOWFmMzQyZTQ5ZTY4ZWI1
YmIxZjg3MDE1ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmgKQEAgLTI3LDkgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKLSNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TGVnYWN5Q0RNSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNUHJpdmF0
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXJIYW5kbGUuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vz
c2lvbihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgZmluYWw7Ci0gICAgdm9pZCBz
ZXRQbGF5ZXJJZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKKyAgICB2b2lk
IHNldFBsYXllcklkKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcik7CiAKIHByaXZhdGU6
CiAgICAgUmVtb3RlTGVnYWN5Q0RNKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiwg
UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCmlu
ZGV4IDk4ZmFhMzIyNzIzM2MwZjExZDA2NmU5YTgzN2FkOWNjNjg0OTE2YjYuLjY1ODBmNzhmMzAy
OTg5YWQzZGI2ZjAwOWNjZDMzYTgwZmNmYTIzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNw
cApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlSW50ZXJmYWNl
PiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpjcmVhdGVDRE0oV2ViQ29yZTo6CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXI+IHBsYXllcklkOworICAgIE9wdGlvbmFsPE1lZGlhUGxheWVySWRlbnRp
Zmllcj4gcGxheWVySWQ7CiAgICAgaWYgKGF1dG8gcGxheWVyID0gY2RtLT5tZWRpYVBsYXllcigp
KQogICAgICAgICBwbGF5ZXJJZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkubWVkaWFQbGF5ZXJN
YW5hZ2VyKCkuZmluZFJlbW90ZVBsYXllcklkKHBsYXllci0+cGxheWVyUHJpdmF0ZSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCmluZGV4IGMyODllZTc4ZjU2ZGZmZjgzZmFmYTBj
ZDM2YWNkYTgzYTM4Nzc2YmIuLjYxYmJhOGIyNjZlZGZiZjVhMjk0Y2I2MTM1MzQ3YWE2ZjE3OWFh
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI6OmNyZWF0ZVJlbQogICAgIGF1dG8gZG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9
IHBsYXllci0+ZG9jdW1lbnRTZWN1cml0eU9yaWdpbigpOwogICAgIHByb3h5Q29uZmlndXJhdGlv
bi5kb2N1bWVudFNlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKIAotICAg
IGF1dG8gaWRlbnRpZmllciA9IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI6Omdl
bmVyYXRlKCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gTWVkaWFQbGF5ZXJJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpOwogICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25m
aWd1cmF0aW9uOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgaWRlbnRpZmllciwgZG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9
IFdURk1vdmUoZG9jdW1lbnRTZWN1cml0eU9yaWdpbildKGF1dG8mJiBwbGF5ZXJDb25maWd1cmF0
aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTE4MywxMyArMTgzLDEz
IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtCiAgICAgcmV0dXJuIHJlbW90ZVBsYXllcjsKIH0K
IAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmRlbGV0ZVJlbW90ZU1lZGlhUGxheWVy
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCit2b2lkIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6ZGVsZXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlm
aWVyIGlkKQogewogICAgIG1fcGxheWVycy50YWtlKGlkKTsKICAgICBncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6RGVsZXRlTWVkaWFQbGF5ZXIoaWQpLCAwKTsKIH0KIAotTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpbmRSZW1vdGVQ
bGF5ZXJJZChjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHBsYXllcikKK01lZGlh
UGxheWVySWRlbnRpZmllciBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpbmRSZW1vdGVQbGF5
ZXJJZChjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHBsYXllcikKIHsKICAgICBm
b3IgKGF1dG8gcGFpciA6IG1fcGxheWVycykgewogICAgICAgICBpZiAocGFpci52YWx1ZSA9PSBw
bGF5ZXIpCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWEKIAogdm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIGlm
IChjb25zdCBhdXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVy
PE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0
aW9uSUQoKSkpKQorICAgIGlmIChjb25zdCBhdXRvJiBwbGF5ZXIgPSBtX3BsYXllcnMuZ2V0KG1h
a2VPYmplY3RJZGVudGlmaWVyPE1lZGlhUGxheWVySWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkpCiAgICAgICAgIHBsYXllci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCmluZGV4IDcxODZm
ZjRmMzEyNDZkODE3ZmMyNGRiYjNkNGYxMDEyNWVkOTkzY2EuLjljYjlmOGE0MGRlOGJiZjcyMmU4
MmEwNmExMzE0MjYxMGVmZDU2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApAQCAtMjgs
NyArMjgsNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkdQVVByb2Nl
c3NDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyU3RhdGUuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
ci5oIgpAQCAtMzYsNiArMzUsNyBAQAogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySGFuZGxl
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NjgsOSArNjgsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgdm9pZCBkZWxldGVSZW1v
dGVNZWRpYVBsYXllcihNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKKyAgICB2
b2lkIGRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmll
cik7CiAKLSAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGZpbmRSZW1vdGVQ
bGF5ZXJJZChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqKTsKKyAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgZmluZFJlbW90ZVBsYXllcklkKGNvbnN0
IFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSopOwogCiBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNy
ZWF0ZVJlbW90ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlhUGxheWVyKiwgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyKTsKQEAgLTg4LDcgKzg4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZSYgdHlwZUNhY2hl
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CiAKLSAg
ICBIYXNoTWFwPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFdlYWtQdHI8TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlPj4gbV9wbGF5ZXJzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6
TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4+
IG1fcGxheWVyczsKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiAgICAgbXV0YWJsZSBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiB7IG51bGxwdHIgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQppbmRleCBk
NTc3NjYyODg5OTMwZTUyNjc3MzU5MWU2MzgzMGIwNjFhY2FmMjIzLi5hZTdhOWQzYWY0YjM1ZGJl
NTU2M2UyMmEwM2M1MmMwZDk5YmE3Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlQ29jb2EubW0KQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLU1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHBsYXllcklkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlciYgbWFuYWdlcikKK01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlKE1lZGlhUGxheWVyKiBwbGF5ZXIsIE1lZGlhUGxheWVyRW51bXM6Ok1l
ZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBNZWRpYVBsYXllcklkZW50aWZp
ZXIgcGxheWVySWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtYW5hZ2VyKQog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIDogbV9sb2dnZXIocGxheWVyLT5tZWRpYVBs
YXllckxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJM
b2dJZGVudGlmaWVyKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410690</attachid>
            <date>2020-10-06 13:46:33 -0700</date>
            <delta_ts>2020-10-07 10:27:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217339-20201006134632.patch</filename>
            <type>text/plain</type>
            <size>34944</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2MDA0MDFlNGVlNzY5
YTg3Mjk0N2E3ZTY4OWJmNmY2NDBhOTUwZi4uMjY4ODY3NmFlNGY4Y2QwY2U1M2ZiNjQ4NTNkNjdm
ZTFmMTAyNWZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTEwLTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gU3VwcG9ydCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlKCkgd2l0aCBIVE1M
VmlkZW9FbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTczMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHBhaW50aW5nIHRoZSBjdXJyZW50IHZpZGVvIGZy
YW1lIGludG8gYSBjYW52YXMgMkQgZ3JhcGhpY3MgY29udGV4dC4gU2VlIGJlbG93IGZvciBtb3Jl
CisgICAgICAgIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToK
KworICAgICAgICBGbGlwIHRoaXMgYXJvdW5kIHRvIGNhbGwgYEdyYXBoaWNzQ29udGV4dDo6cGFp
bnRGcmFtZUZvck1lZGlhYCB3aXRoIHRoZSBgTWVkaWFQbGF5ZXJgLCBpbnN0ZWFkIG9mIGNhbGxp
bmcgaW50bworICAgICAgICBgTWVkaWFQbGF5ZXJgIHdpdGggdGhlIGdyYXBoaWNzIGNvbnRleHQu
IFNlZSBjaGFuZ2VzIGJlbG93LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGFpbnRG
cmFtZUZvck1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKworICAgICAgICBBZGQgYSBgcGFpbnRGcmFtZUZvck1lZGlhYCBtZXRob2QgdGhhdCB0
YWtlcyBhIGBNZWRpYVBsYXllcmAgcmVwcmVzZW50aW5nIGEgdmlkZW8sIGFuZCBwYWludHMgdGhl
IGN1cnJlbnQgZnJhbWUKKyAgICAgICAgb2YgdGhlIHZpZGVvIGludG8gdGhlIGNvbnRleHQuIElm
IHRoZSBncmFwaGljcyBjb250ZXh0IGlzIGJhY2tlZCBieSBhbiBwbGF0Zm9ybSBjb250ZXh0IChp
LmUuIGBtX2ltcGxgIGlzCisgICAgICAgIGBudWxscHRyYCksIHRoZW4gd2Ugc2ltcGx5IGNhbGwg
dGhyb3VnaCB0byBgTWVkaWFQbGF5ZXJgJ3MgcHJpdmF0ZSBpbXBsIHRvIHBhaW50IGludG8gdGhl
IGNvbnRleHQuIE90aGVyd2lzZSwgd2UKKyAgICAgICAgZm9yd2FyZCB0aGUgY2FsbCB0byB0aGUg
YEdyYXBoaWNzQ29udGV4dEltcGxgIChzZWUgdGhlIGNoYW5nZXMgdG8gYERpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwYCBiZWxvdykuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmg6CisKKyAgICAgICAgQWRkIGEgbmV3IHZpcnR1YWwgZnVuY3Rpb24gdG8g
cGFpbnQgdGhlIGN1cnJlbnQgZnJhbWUgb2YgdGhlIGdpdmVuIGBNZWRpYVBsYXllcmAgaW50byB0
aGUgZGVzdGluYXRpb24gcmVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoK
KworICAgICAgICBSZW1vdmUgdGhlIGV4aXN0aW5nIGBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dGAgbWV0aG9kIG9uIGBNZWRpYVBsYXllcmAsIHdoaWNoIGN1cnJlbnRseSB0YWtlcyBhIGdyYXBo
aWNzCisgICAgICAgIGNvbnRleHQuIEluc3RlYWQsIG1vdmUgYHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0YCB0byBgR3JhcGhpY3NDb250ZXh0YCwgcmVuYW1lIGl0IHRvIGBwYWludEZyYW1lRm9y
TWVkaWFgLCBhbmQKKyAgICAgICAgcGFzcyBpdCBhIGBNZWRpYVBsYXllcmAuIEFkZGl0aW9uYWxs
eSwgZXhwb3NlIGEgaGVscGVyIG1ldGhvZCB0byBnZXQgYSBub24tY29uc3QgYE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZWAsCisgICAgICAgIGFuZCBtb3ZlIGJvdGggbWV0aG9kIGRlZmluaXRp
b25zIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBmaWxlIHRvIGF2b2lkIHN0eWxlIGNoZWNrZXIgZXJy
b3JzIGR1ZSB0byBgTWVkaWFQbGF5ZXJgCisgICAgICAgIGl0c2VsZiBiZWluZyBgV0VCQ09SRV9F
WFBPUlRgLWVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6cGFpbnRGcmFtZUZvck1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnBhaW50RnJhbWVGb3JNZWRpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE6OlBhaW50RnJhbWVGb3JNZWRpYSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhOjphcHBseSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhOjpkZXN0
aW5hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFt
ZUZvck1lZGlhOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpQYWludEZyYW1lRm9yTWVkaWE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnBhaW50RnJhbWVGb3JNZWRpYSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKwor
ICAgICAgICBBZGQgYSBuZXcgZGlzcGxheSBsaXN0IGl0ZW0sIGBQYWludEZyYW1lRm9yTWVkaWFg
LCB0aGF0IHBhaW50cyB0aGUgY3VycmVudCBmcmFtZSBvZiBhIGdpdmVuIGBNZWRpYVBsYXllcmAu
IFRoaXMKKyAgICAgICAgd29ya3MgYnkgc2VyaWFsaXppbmcgYW5kIHRoZW4gZGVzZXJpYWxpemlu
ZyBhIGBNZWRpYVBsYXllckhhbmRsZWAgYW5kIGRlc3RpbmF0aW9uIHJlY3Q7IHNpbWlsYXIgdG8K
KyAgICAgICAgYFB1dEltYWdlRGF0YWAsIHRoZSByZXBsYXllciBkZWxlZ2F0ZSBpcyByZXNwb25z
aWJsZSBmb3IgYXBwbHlpbmcgdGhpcyBpdGVtIGJ5IG1hcHBpbmcgdGhlIGBNZWRpYVBsYXllckhh
bmRsZWAKKyAgICAgICAgdG8gYSBjb25jcmV0ZSBgTWVkaWFQbGF5ZXJgIGluc3RhbmNlLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpwYWludEZyYW1lRm9yTWVkaWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6cGFpbnRGcmFtZUZv
ck1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKwogMjAyMC0xMC0w
NiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5h
bWUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0byBNZWRpYVBsYXllcklkZW50
aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNDg0Mjg4YmE3MTFmODNiZTRmZTQ4ZDYzZGY4NDM2YWQ4YWRkMzlj
My4uOGVhYWMxM2Y2NmZlNTE5MGIxOGI0MDI0NzFjYTRjNmVjMGRmNjRlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNyBAQAorMjAyMC0xMC0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFN1cHBvcnQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmRyYXdJbWFnZSgpIHdpdGggSFRNTFZpZGVvRWxlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzM5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyBzdXBwb3J0IGZv
ciBwYWludGluZyB0aGUgY3VycmVudCB2aWRlbyBmcmFtZSBpbnRvIGEgY2FudmFzIDJEIGdyYXBo
aWNzIGNvbnRleHQuIFNlZSBiZWxvdyAoYW5kCisgICAgICAgIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZykgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6YmFja2VuZCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmFwcGx5KToKKworICAgICAgICBSZWZh
Y3RvciBgYXBwbHlgIHNvIHRoYXQgaXQgdHJlYXRzIGBQdXRJbWFnZURhdGFgIGFuZCBgUGFpbnRG
cmFtZUZvck1lZGlhYCBhcyBzcGVjaWFsIGNhc2VzLCBhbmQgb3RoZXJ3aXNlCisgICAgICAgIHJl
dHVybnMgYGZhbHNlYCBieSBkZWZhdWx0LiBJbXBsZW1lbnQgYGFwcGx5YCBpbiB0aGUgY2FzZSB3
aGVyZSB0aGUgZGlzcGxheSBsaXN0IGl0ZW0gaXMgYFBhaW50RnJhbWVGb3JNZWRpYWAgYnkKKyAg
ICAgICAgdXNpbmcgdGhlIGBNZWRpYVBsYXllcklkZW50aWZpZXJgIHRvIGxvb2sgdXAgdGhlIHBs
YXRmb3JtIGBNZWRpYVBsYXllcmAgaW5zdGFuY2UsIGFuZCB0aGVuIGNhbGxpbmcKKyAgICAgICAg
YEdyYXBoaWNzQ29udGV4dDo6cGFpbnRGcmFtZUZvck1lZGlhYCB3aXRoIHRoaXMgYE1lZGlhUGxh
eWVyYC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorCiAyMDIwLTEwLTA2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFt
ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRvIE1lZGlhUGxheWVySWRlbnRp
ZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggOGRmYWJi
MzIyYzQwMDBiYTY2OTg2MTU4OGMxYmFkYzdhZGYzOTgyZi4uYzlmMjhiZDJiODM0MmNmMDFhNTcz
NDk1MDE3MzQwMmM2NDg2YTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnMKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIHBsYXllci0+c2V0VmlzaWJsZSh0cnVlKTsgLy8gTWFrZSBw
bGF5ZXIgdmlzaWJsZSBvciBpdCB3b24ndCBkcmF3LgotICAgIHBsYXllci0+cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoY29udGV4dCwgZGVzdFJlY3QpOworICAgIGNvbnRleHQucGFpbnRGcmFt
ZUZvck1lZGlhKCpwbGF5ZXIsIGRlc3RSZWN0KTsKIH0KIAogYm9vbCBIVE1MVmlkZW9FbGVtZW50
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApp
bmRleCAyNjVjYjU3ZDM5Mzk1MDM4YTYyOWYzNWJjZDY4NjNhYTQ0NDM5YzY3Li43YWY1NTAyYzU4
ZmNjNDkyMDFkN2JmNmU4MTllNmRjMDk5NWQyZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTMzLDYgKzMzLDgg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgog
I2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBA
IC0xMjM5LDYgKzEyNDEsNyBAQCBWZWN0b3I8RmxvYXRQb2ludD4gR3JhcGhpY3NDb250ZXh0Ojpj
ZW50ZXJMaW5lQW5kQ3V0T2ZmQ29ybmVycyhib29sIGlzVmVydGljYWxMaQogfQogCiAjaWYgIVVT
RShDRykKKwogYm9vbCBHcmFwaGljc0NvbnRleHQ6OnN1cHBvcnRzSW50ZXJuYWxMaW5rcygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI1MSw2ICsxMjU0LDE2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXREZXN0aW5hdGlvbkZvclJlY3QoY29uc3QgU3RyaW5nJiwgY29uc3Qg
RmxvYXRSZWN0JikKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGREZXN0aW5hdGlvbkF0UG9pbnQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgRmxvYXRQb2ludCYpCiB7CiB9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwbGF5ZXIuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBwbGF5ZXIu
cGxheWVyUHJpdmF0ZSgpLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCgqdGhpcywgZGVzdGlu
YXRpb24pOworfQorCiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwODhmMmU1Mzk2YjliNDM4NTg4N2Vj
MDFmYWNhOGU3ZGQ5MGUxODA3Li5kYjRjMDAyZWNjZDIyZTZmZTk0MDg3YzY5ZjkxMjhkNDI4OTky
N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaApAQCAtOTIsNiArOTIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogY2xhc3MgSW1hZ2VCdWZmZXI7
CiBjbGFzcyBJbnRSZWN0OworY2xhc3MgTWVkaWFQbGF5ZXI7CiBjbGFzcyBSb3VuZGVkUmVjdDsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogY2xhc3MgUGF0aDsKQEAgLTUxNiw2ICs1
MTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50ZnVsUGFpbnREZXRlY3RlZCgpIHsg
bV9jb250ZW5mdWxQYWludERldGVjdGVkID0gdHJ1ZTsgfQogICAgIGJvb2wgY29udGVuZnVsUGFp
bnREZXRlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVuZnVsUGFpbnREZXRlY3RlZDsgfQog
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXIm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKTsKKwogI2lmIE9TKFdJTkRPV1MpCiAgICAg
SERDIGdldFdpbmRvd3NDb250ZXh0KGNvbnN0IEludFJlY3QmLCBib29sIHN1cHBvcnRBbHBoYUJs
ZW5kKTsgLy8gVGhlIHBhc3NlZCBpbiByZWN0IGlzIHVzZWQgdG8gY3JlYXRlIGEgYml0bWFwIGZv
ciBjb21wb3NpdGluZyBpbnNpZGUgdHJhbnNwYXJlbmN5IGxheWVycy4KICAgICB2b2lkIHJlbGVh
c2VXaW5kb3dzQ29udGV4dChIREMsIGNvbnN0IEludFJlY3QmLCBib29sIHN1cHBvcnRBbHBoYUJs
ZW5kKTsgLy8gVGhlIHBhc3NlZCBpbiBIREMgc2hvdWxkIGJlIHRoZSBvbmUgaGFuZGVkIGJhY2sg
YnkgZ2V0V2luZG93c0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGJjOWMxYzJlY2MwY2JmYzM4
MjZhYTFlMDE5MTMxYzg5MzcyZDNmZS4uNTUxZTAzYTA0MDhiYjdhMWFkNWQ5YWMwNGQ3Y2M0MDMy
OWI1OTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdp
bmdGdW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVk
aWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDll
YzIxNzZkYWM0ZWNlNWRhNTg5M2ZiM2QwNDZlZDJiZGRjZjc1OTUuLjBhNTM1MjM3NzQ5M2E2ODZi
OTU4NTk1MGNiYWUwMWU0NTdhODQxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
b250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCkBAIC0zMDQsNiArMzA1LDE2IEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB0
ZXh0UGxhaW4oKQogICAgIHJldHVybiB0ZXh0UGxhaW47CiB9CiAKK2NvbnN0IE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZSogTWVkaWFQbGF5ZXI6OnBsYXllclByaXZhdGUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK01lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSogTWVkaWFQbGF5ZXI6OnBsYXllclByaXZhdGUoKQoreworICAgIHJldHVybiBtX3ByaXZh
dGUuZ2V0KCk7Cit9CisKIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogTWVkaWFQbGF5ZXI6Om1l
ZGlhRW5naW5lKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewogICAgIGF1dG8mIGVuZ2luZXMgPSBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKTsKQEAg
LTk2NywxMSArOTc4LDYgQEAgdm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBwLCBjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgbV9wcml2YXRlLT5wYWludChwLCByKTsKIH0K
IAotdm9pZCBNZWRpYVBsYXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250ZXh0JiBwLCBjb25zdCBGbG9hdFJlY3QmIHIpCi17Ci0gICAgbV9wcml2YXRlLT5wYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChwLCByKTsKLX0KLQogYm9vbCBNZWRpYVBsYXllcjo6Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250
ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIHJldHVybiBt
X3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0
dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0
aXBseUFscGhhLCBmbGlwWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAppbmRleCA2YWRiM2JjZGFmYjI4N2NiNjY5MWYyNTg0MGEwOGNmNjg5N2Fh
OTQyLi43Y2I3ZWUxOTJmMDlhMzcwNWYwODNhYzA5N2IwOGZjODZhMGVjOTBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQyMiw3ICs0
MjIsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCBj
bG9zZWRDYXB0aW9uc1Zpc2libGUpOwogCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgLy8gY29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgaXMgdXNlZCB0byBkbyB0aGUgR1BVLUdQVSB0ZXh0
dXJlcyBjb3B5IHdpdGhvdXQgYSByZWFkYmFjayB0byBzeXN0ZW0gbWVtb3J5LgogICAgIC8vIFRo
ZSBmaXJzdCBmaXZlIHBhcmFtZXRlcnMgZGVub3RlIHRoZSBjb3JyZXNwb25kaW5nIEdyYXBoaWNz
Q29udGV4dCwgZGVzdGluYXRpb24gdGV4dHVyZSwgcmVxdWVzdGVkIGxldmVsLCByZXF1ZXN0ZWQg
dHlwZSBhbmQgdGhlIHJlcXVpcmVkIGludGVybmFsRm9ybWF0IGZvciBkZXN0aW5hdGlvbiB0ZXh0
dXJlLgpAQCAtNjMwLDcgKzYyOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxs
TWlzc2luZ1BsdWdpbnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYg
Y2FsbGJhY2spIHsgY2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhkZXRhaWxz
LCBkZXNjcmlwdGlvbiwgY2FsbGJhY2spOyB9CiAjZW5kaWYKIAotICAgIGNvbnN0IE1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVyUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZS5nZXQoKTsgfQorICAgIGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxh
eWVyUHJpdmF0ZSgpIGNvbnN0OworICAgIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxh
eWVyUHJpdmF0ZSgpOwogCiAgICAgRHluYW1pY1JhbmdlTW9kZSBwcmVmZXJyZWREeW5hbWljUmFu
Z2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOyB9CiAg
ICAgdm9pZCBzZXRQcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlKER5bmFtaWNSYW5nZU1vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggM2Q0NmE1MDUzYjE3Yzlh
M2VmOWY4MmIyMGI0ZDk3MWYwMmE1NDNlNi4uYjY1YjRkNjQ0MDZiZWI3NmM0MDlkM2U4YzY1NDk3
NWNhOWY3ZWI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00
MzIsNiArNDMyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjCiAgICAgLy8gRklYTUU6IE5v
dCBpbXBsZW1lbnRlZC4KIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OnBhaW50
RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYpCit7CisgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRl
eCAzMWJhNzE2MTdlZmE0NTZjMTFmMDQzYTE5YTQ0OTNmZDU4NWIyM2U1Li5mMzUyODBjZTdmMThj
MzdlZDExZDljMjg0OTcyZTNhYjllNTBmNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uaApAQCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IGNsaXBCb3Vu
ZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9p
ZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludEZyYW1lRm9y
TWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlk
ZTsKICAgICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggNjNmYjVkZDYxYmFiY2NjZjcwOTA0ZTU2ZDJmOWQ0
ZTVhZDU4Y2FjNS4uMjc2ZmJjZDZiMzQxMWRjYWNhYWMzNmI3N2QyM2VhYWJlYTUzZjNkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Qmx1ci5oIgpAQCAtMTkzMiw2ICsxOTM0LDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojph
ZGREZXN0aW5hdGlvbkF0UG9pbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGbG9hdFBvaW50
CiAgICAgQ0dQREZDb250ZXh0QWRkRGVzdGluYXRpb25BdFBvaW50KGNvbnRleHQsIG5hbWUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgdHJhbnNmb3JtZWRQb2ludCk7CiB9CiAKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+cGFp
bnRGcmFtZUZvck1lZGlhKHBsYXllciwgZGVzdGluYXRpb24pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgcGxheWVyLnNldFZpc2libGUodHJ1ZSk7CisgICAgcGxheWVyLnBsYXllclBy
aXZhdGUoKS0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoKnRoaXMsIGRlc3RpbmF0aW9uKTsK
K30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggNjEwNjRhODg2M2I0
MGYxOTA1ZGFhNDA1MzM4N2MyMjRiNjQyM2E4YS4uYTYzODM2OTIxZDhkZmNhMTY2MzhiZDg2YWE5
MzNlZmE3ZTI2NGQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTgzLDYgKzgzLDcgQEAg
ZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEZpbGxQYXRoLAogICAgIEZpbGxF
bGxpcHNlLAogICAgIFB1dEltYWdlRGF0YSwKKyAgICBQYWludEZyYW1lRm9yTWVkaWEsCiAgICAg
U3Ryb2tlUmVjdCwKICAgICBTdHJva2VQYXRoLAogICAgIFN0cm9rZUVsbGlwc2UsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggZGJmMTg4NGEyMWEzNDlmNmFhMDMzMzdm
NzZlZDU5MjkyM2MwNGRlMy4uMDM2YjljNjkyODQ5MzIwZWUwYWJkYjhiZmI3ZjgyNjI3NzdiMzhm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGb250Q2FzY2Fk
ZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCkBAIC0xNDUsNiArMTQ2LDggQEAgc2l6ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0
ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RmlsbEVsbGlwc2U+KGl0
ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CiAgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8UHV0SW1hZ2VEYXRhPihpdGVtKSk7CisgICAgY2FzZSBJdGVtVHlwZTo6
UGFpbnRGcmFtZUZvck1lZGlhOgorICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PFBhaW50
RnJhbWVGb3JNZWRpYT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAg
ICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8U3Ryb2tlUmVjdD4oaXRlbSkpOwogICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6CkBAIC0xMjE4LDYgKzEyMjEsMzUgQEAgc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFB1dEltYWdlRGF0YSYg
aXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1BhaW50RnJhbWVGb3JNZWRpYTo6UGFpbnRGcmFt
ZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24pCisgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhKQorICAg
ICwgbV9pZGVudGlmaWVyKHBsYXllci5pZGVudGlmaWVyKCkpCisgICAgLCBtX2Rlc3RpbmF0aW9u
KGRlc3RpbmF0aW9uKQoreworfQorCitQYWludEZyYW1lRm9yTWVkaWE6OlBhaW50RnJhbWVGb3JN
ZWRpYShNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbikKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVk
aWEpCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZGVzdGluYXRpb24o
ZGVzdGluYXRpb24pCit7Cit9CisKK1BhaW50RnJhbWVGb3JNZWRpYTo6flBhaW50RnJhbWVGb3JN
ZWRpYSgpID0gZGVmYXVsdDsKKwordm9pZCBQYWludEZyYW1lRm9yTWVkaWE6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRl
bGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlhJiBp
dGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7
CisgICAgcmV0dXJuIHRzOworfQorCiBTdHJva2VSZWN0OjpTdHJva2VSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6
OlN0cm9rZVJlY3QpCiAgICAgLCBtX3JlY3QocmVjdCkKQEAgLTE0NDgsNiArMTQ4MCw3IEBAIHN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtVHlw
ZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDogdHMgPDwgImZpbGwtcGF0aCI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOiB0cyA8PCAiZmlsbC1lbGxp
cHNlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB0cyA8PCAicHV0
LWltYWdlLWRhdGEiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVk
aWE6IHRzIDw8ICJwYWludC1mcmFtZS1mb3ItbWVkaWEiOyBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpTdHJva2VSZWN0OiB0cyA8PCAic3Ryb2tlLXJlY3QiOyBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VQYXRoOiB0cyA8PCAic3Ryb2tlLXBhdGgiOyBicmVhazsKICAgICBjYXNl
IEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOiB0cyA8PCAic3Ryb2tlLWVsbGlwc2UiOyBicmVhazsK
QEAgLTE1ODcsNiArMTYyMCw5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgog
ICAgICAgICB0cyA8PCBkb3duY2FzdDxQdXRJbWFnZURhdGE+KGl0ZW0pOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CisgICAgICAgIHRzIDw8
IGRvd25jYXN0PFBhaW50RnJhbWVGb3JNZWRpYT4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PFN0cm9r
ZVJlY3Q+KGl0ZW0pOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCmluZGV4IGYwNTU4NjllMTdhYWE5NjY0ZWI1M2ZiMWJlZTc5NTgwNjQyOGQzNjMuLjBjZTIy
NmI5NGMyYzQzNGE2M2E1OGRiNjI5ZTlmMWJlNDY1MTg1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJNZWRp
YVBsYXllcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgpAQCAtNDQsNiArNDUsNyBA
QCBjbGFzcyBUZXh0U3RyZWFtOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZURh
dGE7CitjbGFzcyBNZWRpYVBsYXllcjsKIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIAog
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKQEAgLTI1ODIsNiArMjU4NCw1OSBAQCBPcHRpb25hbDxS
ZWY8UHV0SW1hZ2VEYXRhPj4gUHV0SW1hZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICByZXR1cm4gUHV0SW1hZ2VEYXRhOjpjcmVhdGUoKmlucHV0Rm9ybWF0LCBXVEZNb3ZlKCpp
bWFnZURhdGEpLCAqc3JjUmVjdCwgKmRlc3RQb2ludCwgKmRlc3RGb3JtYXQpOwogfQogCitjbGFz
cyBQYWludEZyYW1lRm9yTWVkaWEgOiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8UGFpbnRGcmFtZUZvck1lZGlhPiBjcmVhdGUoTWVkaWFQbGF5ZXImIHBsYXll
ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFBhaW50RnJhbWVGb3JNZWRpYShwbGF5ZXIsIGRlc3RpbmF0aW9uKSk7Cisg
ICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UGFpbnRGcmFtZUZvck1lZGlhKCk7
CisKKyAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvbjsgfQorICAgIE1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPFJlZjxQYWludEZyYW1lRm9yTWVkaWE+PiBkZWNvZGUoRGVjb2Rl
ciYpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBSZWY8UGFpbnRGcmFtZUZvck1lZGlhPiBjcmVh
dGUoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWludEZyYW1l
Rm9yTWVkaWEoaWRlbnRpZmllciwgZGVzdGluYXRpb24pKTsKKyAgICB9CisKKyAgICBQYWludEZy
YW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXJJZGVudGlm
aWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKTsKKworICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBNZWRpYVBsYXllcklkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOworfTsKKwordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUGFpbnRGcmFtZUZvck1lZGlhOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1faWRlbnRpZmllcjsKKyAg
ICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb247Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitPcHRpb25hbDxSZWY8UGFpbnRGcmFtZUZvck1lZGlhPj4gUGFpbnRGcmFtZUZvck1lZGlhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxNZWRpYVBsYXllcklkZW50
aWZpZXI+IGlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOworICAgIGlmICgh
aWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAg
ICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIFBhaW50RnJhbWVGb3JNZWRpYTo6Y3JlYXRlKCppZGVudGlmaWVyLCAqZGVzdGluYXRp
b24pOworfQorCiBjbGFzcyBTdHJva2VSZWN0IDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFN0cm9rZVJlY3Q+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGZsb2F0IGxpbmVXaWR0aCkKQEAgLTI5ODMsNiArMzAzOCw5IEBAIHZvaWQgSXRlbTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VE
YXRhOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFB1dEltYWdlRGF0YT4oKnRoaXMpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Cisg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8UGFpbnRGcmFtZUZvck1lZGlhPigqdGhpcyk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgICAgIGVu
Y29kZXIgPDwgZG93bmNhc3Q8U3Ryb2tlUmVjdD4oKnRoaXMpOwogICAgICAgICBicmVhazsKQEAg
LTMxOTAsNiArMzI0OCwxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0ZW06OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0gUHV0SW1hZ2VEYXRhOjpkZWNv
ZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0
ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6
UGFpbnRGcmFtZUZvck1lZGlhOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gUGFpbnRGcmFtZUZv
ck1lZGlhOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVy
ZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IFN0cm9rZVJl
Y3Q6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNl
X2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzI5MSw2ICszMzUzLDcgQEAgU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxQYXRoKQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxFbGxpcHNlKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFB1dEltYWdlRGF0YSkKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShQYWludEZyYW1lRm9yTWVkaWEpCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ryb2tlUmVjdCkKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VQYXRoKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFN0cm9rZUVsbGlwc2UpCkBAIC0zMzUyLDYgKzM0
MTUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFBh
dGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsRWxsaXBzZSwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YSwKKyAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYSwKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3QsCiAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAppbmRleCBiZDA0MzhjNmE0YjI1NmM4ODU2YmIxMjlhM2FiNWZhMjNlNzhkYzhh
Li5lNDNmNzZjMzhhZmY1MTdkOGQ0NmZmNzAzN2Y4MGIzZjhiNTU2ZTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0zODksNiArMzg5LDExIEBAIHZvaWQg
UmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBDb2xvclNwYWNlIGNvCiAgICAgYXBwZW5kSXRlbShDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmNyZWF0ZShkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSwgcmVjb3JkaW5nQ29udGV4dC0+dGFrZURp
c3BsYXlMaXN0KCkpKTsKIH0KIAordm9pZCBSZWNvcmRlcjo6cGFpbnRGcmFtZUZvck1lZGlhKE1l
ZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCit7CisgICAg
YXBwZW5kSXRlbShQYWludEZyYW1lRm9yTWVkaWE6OmNyZWF0ZShwbGF5ZXIsIGRlc3RpbmF0aW9u
KSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMgY2hhbmdlcyB0aGUgYmFzZUNU
TSwgd2hpY2ggd2lsbCBpbnZhbGlkYXRlIGFsbCBvZiBvdXIgY2FjaGVkIGV4dGVudHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBkMjcwYzVkOTA4YWM2OGQ3ODA4
MzYzYmJhOTFiMmU3NjFhZWRjOTJiLi45NGQ4YmEyYmJlYTRiZDg0OTZkNmRmY2NkZTQyOTJkNTcy
YTE0OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTEzNyw2
ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAg
IAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAKaW5kZXggY2VhMmE2ZWEwNDQ1MzRmZjQ1NDRlYTIxMDljMjYxN2Q3OTdjYTJmMS4uMzA0ZmFj
YmFiMTUyMTc5MWRhYTg2ZGIxNTMxNzUzZTM4NjcxMDg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTEwOTUsNCAr
MTA5NSw5IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsCiAgICAgLy8gRklYTUU6IE5vdCBpbXBs
ZW1lbnRlZC4KIH0KIAordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpwYWludEZyYW1lRm9y
TWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmKQoreworICAgIC8vIEZJWE1FOiBO
b3QgaW1wbGVtZW50ZWQuCit9CisKIH0gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCBkZTI0
YWI4YmQ1MjQzMmNlMjkzYTgwZjZiNGY5ODYwZjIyMmZhN2ZmLi4zYmQ2ZTg3ZmI2NzFjMWY0ZjEy
NTMzODc0MjljZjlkMDUyM2E3OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNs
aXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgRnVu
Y3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWludEZyYW1lRm9yTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggNTg5NDBhM2I4MTM0ZGIxOTUwNWU2OTIxZDVhNTYzMDk1
OTFlODM4ZC4uYzUzZDhiZjg1YzA5OTM4ODI5MjQ4ZjgyZGRkOTFjOWRlMzNjMDc4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTQ0MSw2ICs0NDEsMTEgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBGbG9hdFJlY3QmLCBDb2xvclMKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgog
fQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6cGFpbnRGcmFtZUZvck1lZGlh
KE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICAvLyBGSVhNRTogTm90IGlt
cGxlbWVudGVkLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0Uo
RElSRUNUMkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKaW5kZXggOGYxMTE3
NzY5M2E4YmIxMGJjYjQ4NDc5ZjE5YTg4OTExMjgzY2FlNC4uNTliZmYxMDA2ZjZhZjc3NWQ2NGQ4
ZTE0NjdmODlkYzZhOGNlMzJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
aApAQCAtMTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBv
dmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3Qg
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFw
aGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEo
TWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAg
ICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCBlZDk3YWZhNDJiZGVm
M2FjY2E2OTUxM2UyNDZlYzVmYjkzZGM3MGM2Li4wN2UyOWQ1NzEwYjYwMmU5OTBiNWMwMTZkYjE2
MThkMWE1MTdlNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VmlkZW8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAK
QEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBwYWlu
dEludG9SZWN0KHBhaW50SW5mbywgcmVjdCk7CiAgICAgZWxzZSBpZiAoIXZpZGVvRWxlbWVudCgp
LmlzRnVsbHNjcmVlbigpIHx8ICFtZWRpYVBsYXllci0+c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRl
cmluZygpKSB7CiAgICAgICAgIGlmIChwYWludEluZm8ucGFpbnRCZWhhdmlvci5jb250YWlucyhQ
YWludEJlaGF2aW9yOjpGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQotICAgICAgICAgICAgbWVk
aWFQbGF5ZXItPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOworICAg
ICAgICAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKm1lZGlhUGxheWVyLCByZWN0KTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50KGNvbnRleHQsIHJl
Y3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHku
aAppbmRleCAyZTkyMGVmZGRjMTc5ZjYzZmQ0ZmQyNGJjZjc5MTMyNDEwOTVlNjM1Li5hNGQwNWVh
ZWY1NDk0MTZmZGI2NDI1OTUyZTBiNGNmM2FhMjA1ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCkBAIC01OSw2ICs1OSw4IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsK
ICAgICB2b2lkIGNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcik7
CiAKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIGJhY2tlbmQoKSB7IHJldHVybiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsgfQorCiBwcml2YXRlOgogICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiAgICAg
SW1hZ2VCdWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKaW5kZXggODFiODk3OGQwZTc5MTE1N2Y5YzdlNDk3MDM5ODE3ZTQ3OTU5ZTUxNC4u
NzcyMWNjZTg0NTYyNjlhZWY5MDIwYjhiZDg5NjVkZDM1YjcyMmRkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0
ZUltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+
CkBAIC04NCwxNCArODUsMzcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKICAgICB9
CiAKLSAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmKSBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChpdGVtLnR5cGUoKSAhPSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6UHV0SW1hZ2VEYXRhKSB7CisgICAgICAgICAgICBhdXRvJiBwdXRJbWFnZURhdGFJ
dGVtID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YSY+KGl0
ZW0pOworICAgICAgICAgICAgcHV0SW1hZ2VEYXRhKHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3Jt
YXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURhdGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNS
ZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBvaW50KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVz
dEZvcm1hdCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFp
bnRGcmFtZUZvck1lZGlhKSB7CisgICAgICAgICAgICBhcHBseShzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhJj4oaXRlbSksIGNvbnRleHQpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgdm9pZCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFt
ZUZvck1lZGlhJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCisgICAg
eworICAgICAgICBhdXRvIHByb2Nlc3MgPSBiYWNrZW5kKCkuZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpOworICAgICAgICBpZiAoIXByb2Nlc3MpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byBwbGF5ZXJQcm94eSA9IHByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KCkuZ2V0UHJveHkoaXRlbS5pZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoIXBsYXll
clByb3h5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gcGxheWVyID0gcGxh
eWVyUHJveHktPm1lZGlhUGxheWVyKCk7CisgICAgICAgIGlmICghcGxheWVyKQorICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8mIHB1dEltYWdlRGF0YUl0ZW0gPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhJj4oaXRlbSk7Ci0gICAgICAgIHB1
dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0Rm9ybWF0KCksIHB1dEltYWdlRGF0YUl0
ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0uc3JjUmVjdCgpLCBwdXRJbWFnZURhdGFJ
dGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RGb3JtYXQoKSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVy
LCBpdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKaW5kZXggZGJiNTViYTNjMjIwZGU4NmYxOGE1MzNjZmEwODcxOGYzODkyNGYw
OC4uNzUzYTVjOGJhOTdmZTcyMDgzMTA1OGU4NGM1Y2Q4M2I0YjE3NTU3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTEyMSw2ICsxMjEsMTEgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENv
bW1pdChjb25zdAogICAgICAgICBpbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENv
bW1pdChkaXNwbGF5TGlzdCwgZmx1c2hJZGVudGlmaWVyKTsKIH0KIAorR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA2NzY0YWMx
MGM1ZTdlMDJhNGM5Nzg3N2I5YzVlNTVjYTBiNzhjYjFlLi5hMDk1MmJhZmIzYzE1MzJkN2RjOTkw
MDZlYjQwZjMxYmY5MWQyNTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC02
MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkoKTsKIAogICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cjsgfQorICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410758</attachid>
            <date>2020-10-07 10:27:28 -0700</date>
            <delta_ts>2020-10-07 13:13:30 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-217339-20201007102727.patch</filename>
            <type>text/plain</type>
            <size>34307</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg2MDA0MDFlNGVlNzY5
YTg3Mjk0N2E3ZTY4OWJmNmY2NDBhOTUwZi4uNjQ3OGVjNTc2NzBkODViNWI4ZDQ2YWIxMmVhZjUw
MGU1MTI2MGFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIwLTEwLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gU3VwcG9ydCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlKCkgd2l0aCBIVE1M
VmlkZW9FbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTczMzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NDA5MDI5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEltcGxlbWVudHMgc3VwcG9ydCBm
b3IgcGFpbnRpbmcgdGhlIGN1cnJlbnQgdmlkZW8gZnJhbWUgaW50byBhIGNhbnZhcyAyRCBncmFw
aGljcyBjb250ZXh0LiBTZWUgYmVsb3cgZm9yIG1vcmUKKyAgICAgICAgZGV0YWlscy4KKworICAg
ICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisKKyAgICAgICAgRmxp
cCB0aGlzIGFyb3VuZCB0byBjYWxsIGBHcmFwaGljc0NvbnRleHQ6OnBhaW50RnJhbWVGb3JNZWRp
YWAgd2l0aCB0aGUgYE1lZGlhUGxheWVyYCwgaW5zdGVhZCBvZiBjYWxsaW5nIGludG8KKyAgICAg
ICAgYE1lZGlhUGxheWVyYCB3aXRoIHRoZSBncmFwaGljcyBjb250ZXh0LiBTZWUgY2hhbmdlcyBi
ZWxvdy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBhaW50RnJhbWVGb3JNZWRpYSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisKKyAgICAg
ICAgQWRkIGEgYHBhaW50RnJhbWVGb3JNZWRpYWAgbWV0aG9kIHRoYXQgdGFrZXMgYSBgTWVkaWFQ
bGF5ZXJgIHJlcHJlc2VudGluZyBhIHZpZGVvLCBhbmQgcGFpbnRzIHRoZSBjdXJyZW50IGZyYW1l
CisgICAgICAgIG9mIHRoZSB2aWRlbyBpbnRvIHRoZSBjb250ZXh0LiBJZiB0aGUgZ3JhcGhpY3Mg
Y29udGV4dCBpcyBiYWNrZWQgYnkgYW4gcGxhdGZvcm0gY29udGV4dCAoaS5lLiBgbV9pbXBsYCBp
cworICAgICAgICBgbnVsbHB0cmApLCB0aGVuIHdlIHNpbXBseSBjYWxsIHRocm91Z2ggdG8gYE1l
ZGlhUGxheWVyYCdzIHByaXZhdGUgaW1wbCB0byBwYWludCBpbnRvIHRoZSBjb250ZXh0LiBPdGhl
cndpc2UsIHdlCisgICAgICAgIGZvcndhcmQgdGhlIGNhbGwgdG8gdGhlIGBHcmFwaGljc0NvbnRl
eHRJbXBsYCAoc2VlIHRoZSBjaGFuZ2VzIHRvIGBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcGAgYmVs
b3cpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
OgorCisgICAgICAgIEFkZCBhIG5ldyB2aXJ0dWFsIGZ1bmN0aW9uIHRvIHBhaW50IHRoZSBjdXJy
ZW50IGZyYW1lIG9mIHRoZSBnaXZlbiBgTWVkaWFQbGF5ZXJgIGludG8gdGhlIGRlc3RpbmF0aW9u
IHJlY3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyUHJpdmF0ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGxheWVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisKKyAgICAgICAgUmVt
b3ZlIHRoZSBleGlzdGluZyBgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHRgIG1ldGhvZCBvbiBg
TWVkaWFQbGF5ZXJgLCB3aGljaCBjdXJyZW50bHkgdGFrZXMgYSBncmFwaGljcworICAgICAgICBj
b250ZXh0LiBJbnN0ZWFkLCBtb3ZlIGBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dGAgdG8gYEdy
YXBoaWNzQ29udGV4dGAsIHJlbmFtZSBpdCB0byBgcGFpbnRGcmFtZUZvck1lZGlhYCwgYW5kCisg
ICAgICAgIHBhc3MgaXQgYSBgTWVkaWFQbGF5ZXJgLiBBZGRpdGlvbmFsbHksIGV4cG9zZSBhIGhl
bHBlciBtZXRob2QgdG8gZ2V0IGEgbm9uLWNvbnN0IGBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2VgLAorICAgICAgICBhbmQgbW92ZSBib3RoIG1ldGhvZCBkZWZpbml0aW9ucyB0byB0aGUgaW1w
bGVtZW50YXRpb24gZmlsZSB0byBhdm9pZCBzdHlsZSBjaGVja2VyIGVycm9ycyBkdWUgdG8gYE1l
ZGlhUGxheWVyYAorICAgICAgICBpdHNlbGYgYmVpbmcgYFdFQkNPUkVfRVhQT1JUYC1lZC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OnBhaW50
RnJhbWVGb3JNZWRpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQ
YWludEZyYW1lRm9yTWVkaWE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UGFpbnRGcmFtZUZvck1lZGlhOjpQYWludEZyYW1lRm9yTWVkaWEpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYTo6YXBwbHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhOjpkZXN0aW5hdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhOjpp
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZy
YW1lRm9yTWVkaWE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UGFpbnRGcmFtZUZvck1lZGlhOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OnBhaW50RnJhbWVGb3JNZWRpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKworICAgICAgICBBZGQg
YSBuZXcgZGlzcGxheSBsaXN0IGl0ZW0sIGBQYWludEZyYW1lRm9yTWVkaWFgLCB0aGF0IHBhaW50
cyB0aGUgY3VycmVudCBmcmFtZSBvZiBhIGdpdmVuIGBNZWRpYVBsYXllcmAuIFRoaXMKKyAgICAg
ICAgd29ya3MgYnkgc2VyaWFsaXppbmcgYW5kIHRoZW4gZGVzZXJpYWxpemluZyBhIGBNZWRpYVBs
YXllckhhbmRsZWAgYW5kIGRlc3RpbmF0aW9uIHJlY3Q7IHNpbWlsYXIgdG8KKyAgICAgICAgYFB1
dEltYWdlRGF0YWAsIHRoZSByZXBsYXllciBkZWxlZ2F0ZSBpcyByZXNwb25zaWJsZSBmb3IgYXBw
bHlpbmcgdGhpcyBpdGVtIGJ5IG1hcHBpbmcgdGhlIGBNZWRpYVBsYXllckhhbmRsZWAKKyAgICAg
ICAgdG8gYSBjb25jcmV0ZSBgTWVkaWFQbGF5ZXJgIGluc3RhbmNlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpwYWludEZy
YW1lRm9yTWVkaWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6cGFpbnRGcmFtZUZvck1lZGlhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKToKKwogMjAyMC0xMC0wNiAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0byBNZWRpYVBsYXllcklkZW50aWZpZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNDg0Mjg4YmE3MTFmODNiZTRmZTQ4ZDYzZGY4NDM2YWQ4YWRkMzljMy4uN2M1MWQxMDlj
NDc4ZjIzZTczOTljZGIzOTczMzY3ZGE4ZTZlMWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAyMC0xMC0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIFN1cHBvcnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmRy
YXdJbWFnZSgpIHdpdGggSFRNTFZpZGVvRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
OTQwOTAyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJ
bXBsZW1lbnRzIHN1cHBvcnQgZm9yIHBhaW50aW5nIHRoZSBjdXJyZW50IHZpZGVvIGZyYW1lIGlu
dG8gYSBjYW52YXMgMkQgZ3JhcGhpY3MgY29udGV4dC4gU2VlIGJlbG93IChhbmQKKyAgICAgICAg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nKSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
OjpiYWNrZW5kKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6YXBw
bHkpOgorCisgICAgICAgIFJlZmFjdG9yIGBhcHBseWAgc28gdGhhdCBpdCB0cmVhdHMgYFB1dElt
YWdlRGF0YWAgYW5kIGBQYWludEZyYW1lRm9yTWVkaWFgIGFzIHNwZWNpYWwgY2FzZXMsIGFuZCBv
dGhlcndpc2UKKyAgICAgICAgcmV0dXJucyBgZmFsc2VgIGJ5IGRlZmF1bHQuIEltcGxlbWVudCBg
YXBwbHlgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBkaXNwbGF5IGxpc3QgaXRlbSBpcyBgUGFpbnRG
cmFtZUZvck1lZGlhYCBieQorICAgICAgICB1c2luZyB0aGUgYE1lZGlhUGxheWVySWRlbnRpZmll
cmAgdG8gbG9vayB1cCB0aGUgcGxhdGZvcm0gYE1lZGlhUGxheWVyYCBpbnN0YW5jZSwgYW5kIHRo
ZW4gY2FsbGluZworICAgICAgICBgR3JhcGhpY3NDb250ZXh0OjpwYWludEZyYW1lRm9yTWVkaWFg
IHdpdGggdGhpcyBgTWVkaWFQbGF5ZXJgLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3Qp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lmg6CisKIDIwMjAtMTAtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVuYW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
dG8gTWVkaWFQbGF5ZXJJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAppbmRleCA4ZGZhYmIzMjJjNDAwMGJhNjY5ODYxNTg4YzFiYWRjN2FkZjM5ODJmLi5j
OWYyOGJkMmI4MzQyY2YwMWE1NzM0OTUwMTczNDAyYzY0ODZhNTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29ucwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgcGxheWVyLT5zZXRWaXNp
YmxlKHRydWUpOyAvLyBNYWtlIHBsYXllciB2aXNpYmxlIG9yIGl0IHdvbid0IGRyYXcuCi0gICAg
cGxheWVyLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChjb250ZXh0LCBkZXN0UmVjdCk7Cisg
ICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgZGVzdFJlY3QpOwogfQogCiBi
b29sIEhUTUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJl
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDI2NWNiNTdkMzkzOTUwMzhhNjI5ZjM1YmNkNjg2M2Fh
NDQ0MzljNjcuLjU1NWNjNjY0NTcwYTM0YmVhOTk1ZGVjY2Q1MmFjODYxZjVmZTMxNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGwuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIlJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTEyMzksNiArMTI0MSw3IEBAIFZlY3RvcjxGbG9hdFBvaW50
PiBHcmFwaGljc0NvbnRleHQ6OmNlbnRlckxpbmVBbmRDdXRPZmZDb3JuZXJzKGJvb2wgaXNWZXJ0
aWNhbExpCiB9CiAKICNpZiAhVVNFKENHKQorCiBib29sIEdyYXBoaWNzQ29udGV4dDo6c3VwcG9y
dHNJbnRlcm5hbExpbmtzKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjUxLDYg
KzEyNTQsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldERlc3RpbmF0aW9uRm9yUmVjdChj
b25zdCBTdHJpbmcmLCBjb25zdCBGbG9hdFJlY3QmKQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFk
ZERlc3RpbmF0aW9uQXRQb2ludChjb25zdCBTdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikKIHsK
IH0KKwogI2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwYWludEZyYW1lRm9yTWVkaWEo
TWVkaWFQbGF5ZXImIHBsYXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKK3sKKyAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9p
bXBsICYmIG1faW1wbC0+Y2FuUGFpbnRGcmFtZUZvck1lZGlhKCkpIHsKKyAgICAgICAgbV9pbXBs
LT5wYWludEZyYW1lRm9yTWVkaWEocGxheWVyLCBkZXN0aW5hdGlvbik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBwbGF5ZXIucGxheWVyUHJpdmF0ZSgpLT5wYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dCgqdGhpcywgZGVzdGluYXRpb24pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDA4OGYyZTUz
OTZiOWI0Mzg1ODg3ZWMwMWZhY2E4ZTdkZDkwZTE4MDcuLmRiNGMwMDJlY2NkMjJlNmZlOTQwODdj
NjlmOTEyOGQ0Mjg5OTI3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC05Miw2ICs5Miw3IEBAIGNsYXNzIEdyYXBoaWNz
Q29udGV4dEltcGw7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CiBjbGFz
cyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBNZWRpYVBsYXllcjsKIGNsYXNz
IFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiBjbGFzcyBQYXRo
OwpAQCAtNTE2LDYgKzUxNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRmdWxQYWlu
dERldGVjdGVkKCkgeyBtX2NvbnRlbmZ1bFBhaW50RGV0ZWN0ZWQgPSB0cnVlOyB9CiAgICAgYm9v
bCBjb250ZW5mdWxQYWludERldGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW5mdWxQYWlu
dERldGVjdGVkOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhaW50RnJhbWVGb3JNZWRp
YShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pOworCiAjaWYgT1Mo
V0lORE9XUykKICAgICBIREMgZ2V0V2luZG93c0NvbnRleHQoY29uc3QgSW50UmVjdCYsIGJvb2wg
c3VwcG9ydEFscGhhQmxlbmQpOyAvLyBUaGUgcGFzc2VkIGluIHJlY3QgaXMgdXNlZCB0byBjcmVh
dGUgYSBiaXRtYXAgZm9yIGNvbXBvc2l0aW5nIGluc2lkZSB0cmFuc3BhcmVuY3kgbGF5ZXJzLgog
ICAgIHZvaWQgcmVsZWFzZVdpbmRvd3NDb250ZXh0KEhEQywgY29uc3QgSW50UmVjdCYsIGJvb2wg
c3VwcG9ydEFscGhhQmxlbmQpOyAvLyBUaGUgcGFzc2VkIGluIEhEQyBzaG91bGQgYmUgdGhlIG9u
ZSBoYW5kZWQgYmFjayBieSBnZXRXaW5kb3dzQ29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA4YmM5
YzFjMmVjYzBjYmZjMzgyNmFhMWUwMTkxMzFjODkzNzJkM2ZlLi4zZDUwNzViY2VkY2JmNTAyODcx
Y2Q1NTA5MzVmNTFhYzhkYjJmNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC0xMDcsNiArMTA3LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50RnJh
bWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKCkgY29uc3QgPSAwOwog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAppbmRleCA5ZWMyMTc2ZGFjNGVjZTVkYTU4OTNmYjNkMDQ2ZWQyYmRkY2Y3NTk1Li4wYTUzNTIz
Nzc0OTNhNjg2Yjk1ODU5NTBjYmFlMDFlNDU3YTg0MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ29udGVudFR5cGUuaCIKICNpbmNsdWRlICJEZXByZWNhdGVkR2xvYmFsU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtMzA0LDYgKzMwNSwxNiBAQCBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgdGV4dFBsYWluKCkKICAgICByZXR1cm4gdGV4dFBsYWluOwogfQogCitjb25zdCBN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIE1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2UqIE1lZGlhUGxheWVyOjpwbGF5ZXJQcml2YXRlKCkKK3sKKyAgICByZXR1
cm4gbV9wcml2YXRlLmdldCgpOworfQorCiBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlh
UGxheWVyOjptZWRpYUVuZ2luZShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvJiBlbmdpbmVzID0gaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCk7CkBAIC05NjcsMTEgKzk3OCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgcCwgY29uc3QgRmxvYXRSZWN0JiByKQogICAgIG1fcHJpdmF0ZS0+cGFpbnQo
cCwgcik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgRmxvYXRSZWN0JiByKQotewotICAgIG1fcHJpdmF0
ZS0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQocCwgcik7Ci19Ci0KIGJvb2wgTWVkaWFQbGF5
ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAg
ICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29u
dGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlw
ZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNmFkYjNiY2RhZmIyODdjYjY2OTFmMjU4NDBh
MDhjZjY4OTdhYTk0Mi4uN2NiN2VlMTkyZjA5YTM3MDVmMDgzYWMwOTdiMDhmYzg2YTBlYzkwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBA
IC00MjIsNyArNDIyLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGJvb2wgY2xvc2VkQ2FwdGlvbnNWaXNpYmxlKTsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIC8v
IGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGlzIHVzZWQgdG8gZG8gdGhlIEdQ
VS1HUFUgdGV4dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJhY2sgdG8gc3lzdGVtIG1lbW9yeS4K
ICAgICAvLyBUaGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRlbm90ZSB0aGUgY29ycmVzcG9uZGlu
ZyBHcmFwaGljc0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1cmUsIHJlcXVlc3RlZCBsZXZlbCwg
cmVxdWVzdGVkIHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRlcm5hbEZvcm1hdCBmb3IgZGVzdGlu
YXRpb24gdGV4dHVyZS4KQEAgLTYzMCw3ICs2MjksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5z
Q2FsbGJhY2smIGNhbGxiYWNrKSB7IGNsaWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnMoZGV0YWlscywgZGVzY3JpcHRpb24sIGNhbGxiYWNrKTsgfQogI2VuZGlmCiAKLSAgICBjb25z
dCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHBsYXllclByaXZhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7IH0KKyAgICBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UqIHBsYXllclByaXZhdGUoKSBjb25zdDsKKyAgICBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UqIHBsYXllclByaXZhdGUoKTsKIAogICAgIER5bmFtaWNSYW5nZU1vZGUgcHJlZmVycmVk
RHluYW1pY1JhbmdlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZmVycmVkRHluYW1pY1Jhbmdl
TW9kZTsgfQogICAgIHZvaWQgc2V0UHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZShEeW5hbWljUmFu
Z2VNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDNkNDZh
NTA1M2IxN2M5YTNlZjlmODJiMjBiNGQ5NzFmMDJhNTQzZTYuLmI2NWI0ZDY0NDA2YmViNzZjNDA5
ZDNlOGM2NTQ5NzVjYTlmN2ViNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcApAQCAtNDMyLDYgKzQzMiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhYwogICAgIC8v
IEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmKQor
eworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmgKaW5kZXggMzFiYTcxNjE3ZWZhNDU2YzExZjA0M2ExOWE0NDkzZmQ1ODViMjNlNS4uZTVl
MjA3NDhjNmQ3NjIwZjEwY2YyMTU2NjI4ZWY3ZTBiZTYwMWM3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmgKQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgSW50UmVj
dCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFp
bnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggNjEwNjRh
ODg2M2I0MGYxOTA1ZGFhNDA1MzM4N2MyMjRiNjQyM2E4YS4uYTYzODM2OTIxZDhkZmNhMTY2Mzhi
ZDg2YWE5MzNlZmE3ZTI2NGQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTgzLDYgKzgz
LDcgQEAgZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEZpbGxQYXRoLAogICAg
IEZpbGxFbGxpcHNlLAogICAgIFB1dEltYWdlRGF0YSwKKyAgICBQYWludEZyYW1lRm9yTWVkaWEs
CiAgICAgU3Ryb2tlUmVjdCwKICAgICBTdHJva2VQYXRoLAogICAgIFN0cm9rZUVsbGlwc2UsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggZGJmMTg4NGEyMWEzNDlmNmFh
MDMzMzdmNzZlZDU5MjkyM2MwNGRlMy4uMThkNzBjZmJkMjQwOTg1ODY4NDQ5ZmIzNTlhOWY4NWVi
ZGZkMzYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGb250
Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVy
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0
cmVhbS5oPgogCkBAIC0xNDUsNiArMTQ2LDggQEAgc2l6ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNv
bnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RmlsbEVsbGlw
c2U+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6CiAgICAgICAgIHJl
dHVybiBzaXplb2YoZG93bmNhc3Q8UHV0SW1hZ2VEYXRhPihpdGVtKSk7CisgICAgY2FzZSBJdGVt
VHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgorICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0
PFBhaW50RnJhbWVGb3JNZWRpYT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJl
Y3Q6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8U3Ryb2tlUmVjdD4oaXRlbSkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6CkBAIC0xMjE4LDYgKzEyMjEsNDUgQEAgc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFB1dEltYWdl
RGF0YSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK1JlZjxQYWludEZyYW1lRm9yTWVkaWE+
IFBhaW50RnJhbWVGb3JNZWRpYTo6Y3JlYXRlKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFpbnRG
cmFtZUZvck1lZGlhKHBsYXllciwgZGVzdGluYXRpb24pKTsKK30KKworUmVmPFBhaW50RnJhbWVG
b3JNZWRpYT4gUGFpbnRGcmFtZUZvck1lZGlhOjpjcmVhdGUoTWVkaWFQbGF5ZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUGFpbnRGcmFtZUZvck1lZGlhKGlkZW50aWZpZXIsIGRlc3RpbmF0aW9u
KSk7Cit9CisKK1BhaW50RnJhbWVGb3JNZWRpYTo6UGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxh
eWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCisgICAgOiBEcmF3aW5n
SXRlbShJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhKQorICAgICwgbV9pZGVudGlmaWVyKHBs
YXllci5pZGVudGlmaWVyKCkpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorewor
fQorCitQYWludEZyYW1lRm9yTWVkaWE6OlBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKKyAgICA6
IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWEpCisgICAgLCBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCit7Cit9
CisKK1BhaW50RnJhbWVGb3JNZWRpYTo6flBhaW50RnJhbWVGb3JNZWRpYSgpID0gZGVmYXVsdDsK
Kwordm9pZCBQYWludEZyYW1lRm9yTWVkaWE6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
Cit7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgUGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtKQoreworICAgIHRzIDw8
IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJuIHRzOwor
fQorCiBTdHJva2VSZWN0OjpTdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
bGluZVdpZHRoKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OlN0cm9rZVJlY3QpCiAgICAg
LCBtX3JlY3QocmVjdCkKQEAgLTE0NDgsNiArMTQ5MCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUGF0aDogdHMgPDwgImZpbGwtcGF0aCI7IGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxFbGxpcHNlOiB0cyA8PCAiZmlsbC1lbGxpcHNlIjsgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB0cyA8PCAicHV0LWltYWdlLWRhdGEiOyBicmVh
azsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHRzIDw8ICJwYWludC1m
cmFtZS1mb3ItbWVkaWEiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OiB0
cyA8PCAic3Ryb2tlLXJlY3QiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRo
OiB0cyA8PCAic3Ryb2tlLXBhdGgiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VF
bGxpcHNlOiB0cyA8PCAic3Ryb2tlLWVsbGlwc2UiOyBicmVhazsKQEAgLTE1ODcsNiArMTYzMCw5
IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0
ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgogICAgICAgICB0cyA8PCBkb3du
Y2FzdDxQdXRJbWFnZURhdGE+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PFBhaW50RnJh
bWVGb3JNZWRpYT4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZVJlY3Q6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PFN0cm9rZVJlY3Q+KGl0ZW0pOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGYwNTU4Njll
MTdhYWE5NjY0ZWI1M2ZiMWJlZTc5NTgwNjQyOGQzNjMuLmNiNjg0ZDIzY2U3NWI0ZmFiOWVjNDEz
MTYyN2FjZDMyZDYyNGFlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIK
ICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSA8d3RmL1R5cGVDYXN0cy5oPgpAQCAtNDQsNiArNDUsNyBAQCBjbGFzcyBUZXh0U3RyZWFt
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZURhdGE7CitjbGFzcyBNZWRpYVBs
YXllcjsKIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIAogbmFtZXNwYWNlIERpc3BsYXlM
aXN0IHsKQEAgLTI1ODIsNiArMjU4NCw1MyBAQCBPcHRpb25hbDxSZWY8UHV0SW1hZ2VEYXRhPj4g
UHV0SW1hZ2VEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICByZXR1cm4gUHV0SW1h
Z2VEYXRhOjpjcmVhdGUoKmlucHV0Rm9ybWF0LCBXVEZNb3ZlKCppbWFnZURhdGEpLCAqc3JjUmVj
dCwgKmRlc3RQb2ludCwgKmRlc3RGb3JtYXQpOwogfQogCitjbGFzcyBQYWludEZyYW1lRm9yTWVk
aWEgOiBwdWJsaWMgRHJhd2luZ0l0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UGFpbnRG
cmFtZUZvck1lZGlhPiBjcmVhdGUoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflBhaW50RnJhbWVGb3JNZWRp
YSgpOworCisgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb247IH0KKyAgICBNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8UGFpbnRGcmFtZUZvck1lZGlhPj4gZGVjb2RlKERl
Y29kZXImKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBhaW50
RnJhbWVGb3JNZWRpYT4gY3JlYXRlKE1lZGlhUGxheWVySWRlbnRpZmllciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbik7CisKKyAgICBQYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXIm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKTsKKyAgICBQYWludEZyYW1lRm9yTWVkaWEo
TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKTsKKwor
ICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBN
ZWRpYVBsYXllcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIEZsb2F0UmVjdCBtX2Rlc3Rp
bmF0aW9uOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUGFpbnRGcmFtZUZv
ck1lZGlhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IG1faWRlbnRpZmllcjsKKyAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb247Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8UGFpbnRGcmFtZUZvck1lZGlhPj4gUGFp
bnRGcmFtZUZvck1lZGlhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25h
bDxNZWRpYVBsYXllcklkZW50aWZpZXI+IGlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBpZGVu
dGlmaWVyOworICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+
PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIFBhaW50RnJhbWVGb3JNZWRpYTo6Y3JlYXRlKCppZGVu
dGlmaWVyLCAqZGVzdGluYXRpb24pOworfQorCiBjbGFzcyBTdHJva2VSZWN0IDogcHVibGljIERy
YXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0cm9rZVJlY3Q+IGNyZWF0ZShj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKQEAgLTI5ODMsNiArMzAzMiw5
IEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2FzZSBJ
dGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PFB1dElt
YWdlRGF0YT4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpQYWlu
dEZyYW1lRm9yTWVkaWE6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8UGFpbnRGcmFtZUZv
ck1lZGlhPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZVJlY3Q6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8U3Ryb2tlUmVjdD4oKnRoaXMpOwog
ICAgICAgICBicmVhazsKQEAgLTMxOTAsNiArMzI0MiwxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+
IEl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0g
UHV0SW1hZ2VEYXRhOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgorICAgICAgICBpZiAoYXV0byBp
dGVtID0gUGFpbnRGcmFtZUZvck1lZGlhOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICAgICAgaWYgKGF1
dG8gaXRlbSA9IFN0cm9rZVJlY3Q6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzI5MSw2
ICszMzQ3LDcgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9J
VEVNKEZpbGxQYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKEZp
bGxFbGxpcHNlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFB1dElt
YWdlRGF0YSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShQYWludEZy
YW1lRm9yTWVkaWEpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oU3Ry
b2tlUmVjdCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShTdHJva2VQ
YXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKFN0cm9rZUVsbGlw
c2UpCkBAIC0zMzUyLDYgKzM0MDksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RmlsbFBhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsRWxsaXBzZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dElt
YWdlRGF0YSwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVG
b3JNZWRpYSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Qs
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoLAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBiZDA0MzhjNmE0YjI1NmM4ODU2YmIx
MjlhM2FiNWZhMjNlNzhkYzhhLi5lNDNmNzZjMzhhZmY1MTdkOGQ0NmZmNzAzN2Y4MGIzZjhiNTU2
ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0zODks
NiArMzg5LDExIEBAIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlIGNvCiAgICAgYXBwZW5kSXRlbShDbGlw
VG9EcmF3aW5nQ29tbWFuZHM6OmNyZWF0ZShkZXN0aW5hdGlvbiwgY29sb3JTcGFjZSwgcmVjb3Jk
aW5nQ29udGV4dC0+dGFrZURpc3BsYXlMaXN0KCkpKTsKIH0KIAordm9pZCBSZWNvcmRlcjo6cGFp
bnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pCit7CisgICAgYXBwZW5kSXRlbShQYWludEZyYW1lRm9yTWVkaWE6OmNyZWF0ZShw
bGF5ZXIsIGRlc3RpbmF0aW9uKSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMg
Y2hhbmdlcyB0aGUgYmFzZUNUTSwgd2hpY2ggd2lsbCBpbnZhbGlkYXRlIGFsbCBvZiBvdXIgY2Fj
aGVkIGV4dGVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBk
MjcwYzVkOTA4YWM2OGQ3ODA4MzYzYmJhOTFiMmU3NjFhZWRjOTJiLi44MzUxM2UxMTE2MzQ3NWFj
NDZjMDQ3NzkzNGE1NjY4YmU0OWY3NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKQEAgLTEzNyw2ICsxMzcsOCBAQCBwcml2YXRlOgogICAgIEludFJlY3QgY2xpcEJv
dW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBh
aW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24pIG92ZXJyaWRlOworICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggY2VhMmE2ZWEwNDQ1MzRmZjQ1NDRl
YTIxMDljMjYxN2Q3OTdjYTJmMS4uMzA0ZmFjYmFiMTUyMTc5MWRhYTg2ZGIxNTMxNzUzZTM4Njcx
MDg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKQEAgLTEwOTUsNCArMTA5NSw5IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3Bh
Y2UsCiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KIAordm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9h
dFJlY3QmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisKIH0gLy8gbmFt
ZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaAppbmRleCBkZTI0YWI4YmQ1MjQzMmNlMjkzYTgwZjZiNGY5ODYwZjIy
MmZhN2ZmLi41NzJmZjIxNjZmNmU5NzNhNzYzYjY3Y2I2YmI5NmY0M2YyNmE4ZDUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBA
IC0xMDAsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNsaXBCb3Vu
ZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBv
dmVycmlkZTsKKyAgICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmlu
ZGV4IDU4OTQwYTNiODEzNGRiMTk1MDVlNjkyMWQ1YTU2MzA5NTkxZTgzOGQuLmM1M2Q4YmY4NWMw
OTkzODgyOTI0OGY4MmRkZDkxYzlkZTMzYzA3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuY3BwCkBAIC00NDEsNiArNDQxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgQ29s
b3JTCiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KIAordm9pZCBHcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQ6OnBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0
IEZsb2F0UmVjdCYpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKERJUkVDVDJEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDhmMTExNzc2OTNhOGJiMTBiY2I0ODQ3OWYx
OWE4ODkxMTI4M2NhZTQuLjk1ZWIzNzBiNzViYWRlMDM5ZDZmOTQ4NzJhZWFmNGNmMWU1ZTUzY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTEwNCw2ICsxMDQsOCBA
QCBwdWJsaWM6CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
bGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5QYWludEZyYW1l
Rm9yTWVkaWEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHZv
aWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IGVkOTdhZmE0MmJkZWYzYWNjYTY5NTEz
ZTI0NmVjNWZiOTNkYzcwYzYuLjA3ZTI5ZDU3MTBiNjAyZTk5MGI1YzAxNmRiMTYxOGQxYTUxN2U0
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMjI2LDcg
KzIyNiw3IEBAIHZvaWQgUmVuZGVyVmlkZW86OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgIHBhaW50SW50b1JlY3Qo
cGFpbnRJbmZvLCByZWN0KTsKICAgICBlbHNlIGlmICghdmlkZW9FbGVtZW50KCkuaXNGdWxsc2Ny
ZWVuKCkgfHwgIW1lZGlhUGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpIHsK
ICAgICAgICAgaWYgKHBhaW50SW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5zKFBhaW50QmVoYXZp
b3I6OkZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCi0gICAgICAgICAgICBtZWRpYVBsYXllci0+
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CisgICAgICAgICAgICBj
b250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqbWVkaWFQbGF5ZXIsIHJlY3QpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtZWRpYVBsYXllci0+cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCmluZGV4IDJl
OTIwZWZkZGMxNzlmNjNmZDRmZDI0YmNmNzkxMzI0MTA5NWU2MzUuLmE0ZDA1ZWFlZjU0OTQxNmZk
YjY0MjU5NTJlMGI0Y2YzYWEyMDVlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LmgKQEAgLTU5LDYgKzU5LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
Y3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogICAgIHZvaWQg
Y29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKIAorICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgYmFja2VuZCgpIHsgcmV0dXJuIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OyB9CisKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKICAgICBJbWFnZUJ1ZmZl
cklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApp
bmRleCA4MWI4OTc4ZDBlNzkxMTU3ZjljN2U0OTcwMzk4MTdlNDc5NTllNTE0Li43NzIxY2NlODQ1
NjI2OWFlZjkwMjBiOGJkODk2NWRkMzViNzIyZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KQEAgLTg0LDE0
ICs4NSwzNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZm
ZXI6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOwogICAgIH0KIAotICAgIGJv
b2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYpIG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVycmlk
ZQogICAgIHsKLSAgICAgICAgaWYgKGl0ZW0udHlwZSgpICE9IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoaXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQ
dXRJbWFnZURhdGEpIHsKKyAgICAgICAgICAgIGF1dG8mIHB1dEltYWdlRGF0YUl0ZW0gPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhJj4oaXRlbSk7CisgICAg
ICAgICAgICBwdXRJbWFnZURhdGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJ
bWFnZURhdGFJdGVtLmltYWdlRGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0
SW1hZ2VEYXRhSXRlbS5kZXN0UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXRl
bS50eXBlKCkgPT0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9y
TWVkaWEpIHsKKyAgICAgICAgICAgIGFwcGx5KHN0YXRpY19jYXN0PFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpQYWludEZyYW1lRm9yTWVkaWEmPihpdGVtKSwgY29udGV4dCk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICB2b2lkIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWEm
IGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKKyAgICB7CisgICAgICAg
IGF1dG8gcHJvY2VzcyA9IGJhY2tlbmQoKS5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7Cisg
ICAgICAgIGlmICghcHJvY2VzcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRv
IHBsYXllclByb3h5ID0gcHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5n
ZXRQcm94eShpdGVtLmlkZW50aWZpZXIoKSk7CisgICAgICAgIGlmICghcGxheWVyUHJveHkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBwbGF5ZXIgPSBwbGF5ZXJQcm94eS0+
bWVkaWFQbGF5ZXIoKTsKKyAgICAgICAgaWYgKCFwbGF5ZXIpCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgYXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmPihpdGVtKTsKLSAgICAgICAgcHV0SW1hZ2VEYXRh
KHB1dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3JtYXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURh
dGEoKSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNSZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBv
aW50KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdEZvcm1hdCgpKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIGl0ZW0uZGVz
dGluYXRpb24oKSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAppbmRleCBkYmI1NWJhM2MyMjBkZTg2ZjE4YTUzM2NmYTA4NzE4ZjM4OTI0ZjA4Li43NTNhNWM4
YmE5N2ZlNzIwODMxMDU4ZTg0YzVjZDgzYjRiMTc1NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcApAQCAtMTIxLDYgKzEyMSwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0
CiAgICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3Bs
YXlMaXN0LCBmbHVzaElkZW50aWZpZXIpOwogfQogCitHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KSBjb25zdAoreworICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDY3NjRhYzEwYzVlN2UwMmE0
Yzk3ODc3YjljNWU1NWNhMGI3OGNiMWUuLmEwOTUyYmFmYjNjMTUzMmQ3ZGM5OTAwNmViNDBmMzFi
ZjkxZDI1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTYwLDYgKzYwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwog
CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9CisgICAg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>