<?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>207233</bug_id>
          
          <creation_ts>2020-02-04 15:04:34 -0800</creation_ts>
          <short_desc>Implement ImageBuffer shareable backends</short_desc>
          <delta_ts>2020-02-27 17:36:17 -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>
          
          
          <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>207198</dependson>
          <blocked>204955</blocked>
    
    <blocked>207221</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1614772</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-04 15:04:34 -0800</bug_when>
    <thetext>The remote ImageBuffer proxy will create a shareable backend in the GPUProcess. Then it will give access to the backend to the remote ImageBuffer in the WebProcess by sending an ImageBufferBackendHandle. Only one shareable accelerated backend is implemented so for which is the IOSurface shareable backend. Other ports will have to implement their own shareable accelerated backends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614787</commentid>
    <comment_count>1</comment_count>
      <attachid>389723</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-04 15:23:24 -0800</bug_when>
    <thetext>Created attachment 389723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614832</commentid>
    <comment_count>2</comment_count>
      <attachid>389737</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-04 16:31:32 -0800</bug_when>
    <thetext>Created attachment 389737
Patch  for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618487</commentid>
    <comment_count>3</comment_count>
      <attachid>389737</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-13 08:15:58 -0800</bug_when>
    <thetext>Comment on attachment 389737
Patch  for review

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

&gt; Source/WebKit/WebProcess/GPU/RenderingBackend/ImageBufferShareableBitmapBackend.cpp:67
&gt; +    if (WTF::holds_alternative&lt;ShareableBitmap::Handle&gt;(handle)) {

This should be
    if (!WTF::holds_alternative&lt;ShareableBitmap::Handle&gt;(handle)) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623393</commentid>
    <comment_count>4</comment_count>
      <attachid>391841</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-27 00:40:13 -0800</bug_when>
    <thetext>Created attachment 391841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623460</commentid>
    <comment_count>5</comment_count>
      <attachid>391863</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-27 07:29:36 -0800</bug_when>
    <thetext>Created attachment 391863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623500</commentid>
    <comment_count>6</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-27 08:36:36 -0800</bug_when>
    <thetext>The GKT port fails while compiling WebKit/WebProcess/WebPage/WebFrame.cpp because the following definition 

    Display* m_display { nullptr };

in the header file WebKit/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h is ambiguous. 

The candidates are the global definition (not inside any namespace)

    typedef struct _XDisplay Display;

which is defined in WebKit/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h and the WebCore namespace 

    namespace WebCore::Display { }

which is defined in WebCore/layout/displaytree/DisplayLineBox.h

It looks like there is a global &quot;using namespace WebCore&quot; (not inside any namespace) in one of the WebKit sources or the headers which compile with WebKit/WebProcess/WebPage/WebFrame.cpp in a unified source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623504</commentid>
    <comment_count>7</comment_count>
      <attachid>391880</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-27 08:40:06 -0800</bug_when>
    <thetext>Created attachment 391880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623513</commentid>
    <comment_count>8</comment_count>
      <attachid>391882</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-27 08:52:56 -0800</bug_when>
    <thetext>Created attachment 391882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623520</commentid>
    <comment_count>9</comment_count>
      <attachid>391883</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-27 09:11:59 -0800</bug_when>
    <thetext>Created attachment 391883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623629</commentid>
    <comment_count>10</comment_count>
      <attachid>391883</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-27 13:27:07 -0800</bug_when>
    <thetext>Comment on attachment 391883
Patch

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

&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:62
&gt; +    return std::unique_ptr&lt;ImageBufferShareableBitmapBackend&gt;(new ImageBufferShareableBitmapBackend(size, backendSize, resolutionScale, colorSpace, WTFMove(bitmap), WTFMove(context)));

make_unique&lt;&gt;

Do you need to pass both bitmap and context in? The context can be created by the bitmap.

&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:80
&gt; +    return std::unique_ptr&lt;ImageBufferShareableBitmapBackend&gt;(new ImageBufferShareableBitmapBackend(logicalSize, backendSize, resolutionScale, colorSpace, WTFMove(bitmap), WTFMove(context)));

make_unique&lt;&gt;

&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:64
&gt; +    RefPtr&lt;ShareableBitmap&gt; m_bitmap;

Can this be a Ref&lt;&gt;...

&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:65
&gt; +    std::unique_ptr&lt;WebCore::GraphicsContext&gt; m_context;

And this a GraphicsContext&amp;?

&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:49
&gt; +    RetainPtr&lt;CGContextRef&gt; cgContext = surface-&gt;ensurePlatformContext(nullptr);

ensurePlatformContext has a nullptr default argument.

&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:53
&gt; +    CGContextClearRect(cgContext.get(), FloatRect(FloatPoint::zero(), backendSize));

Shame that we have eagerly clear here.

&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:55
&gt; +    return std::unique_ptr&lt;ImageBufferShareableIOSurfaceBackend&gt;(new ImageBufferShareableIOSurfaceBackend(size, backendSize, resolutionScale, colorSpace, WTFMove(surface)));

make_unique&lt;&gt;

&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:69
&gt; +    return std::unique_ptr&lt;ImageBufferShareableIOSurfaceBackend&gt;(new ImageBufferShareableIOSurfaceBackend(logicalSize, internalSize, resolutionScale, colorSpace, WTFMove(surface)));

make_unique&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623703</commentid>
    <comment_count>11</comment_count>
      <attachid>391883</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-27 15:20:41 -0800</bug_when>
    <thetext>Comment on attachment 391883
Patch

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

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:62
&gt;&gt; +    return std::unique_ptr&lt;ImageBufferShareableBitmapBackend&gt;(new ImageBufferShareableBitmapBackend(size, backendSize, resolutionScale, colorSpace, WTFMove(bitmap), WTFMove(context)));
&gt; 
&gt; make_unique&lt;&gt;
&gt; 
&gt; Do you need to pass both bitmap and context in? The context can be created by the bitmap.

If createGraphicsContext() returns nullptr for any reason, the ImageBuffer will be in a weird state. It is allocated but it can&apos;t function probably. I wanted to have two states for the returned value: 

1. nullptr: Something went wrong when allocating the data members needed for the ImageBuffer.
2. valid pointer: Nothing went wrong when allocating all the data member needed for the ImageBuffer. So the ImageBuffer can function properly.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:80
&gt;&gt; +    return std::unique_ptr&lt;ImageBufferShareableBitmapBackend&gt;(new ImageBufferShareableBitmapBackend(logicalSize, backendSize, resolutionScale, colorSpace, WTFMove(bitmap), WTFMove(context)));
&gt; 
&gt; make_unique&lt;&gt;

Fixed. But I have to make the constructor public.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:65
&gt;&gt; +    std::unique_ptr&lt;WebCore::GraphicsContext&gt; m_context;
&gt; 
&gt; And this a GraphicsContext&amp;?

No this can&apos;t be because it is created by the create() method by calling ShareableBitmap::createGraphicsContext(). The ownership of this pointer is transferred to this class in the constructor by WTFMove(context). The destructor of this class is responsible for releasing the std::unique_ptr.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:49
&gt;&gt; +    RetainPtr&lt;CGContextRef&gt; cgContext = surface-&gt;ensurePlatformContext(nullptr);
&gt; 
&gt; ensurePlatformContext has a nullptr default argument.

default argument was removed.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:53
&gt;&gt; +    CGContextClearRect(cgContext.get(), FloatRect(FloatPoint::zero(), backendSize));
&gt; 
&gt; Shame that we have eagerly clear here.

This what we used to do with IOSurface ImageBuffer before the refactoring.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:55
&gt;&gt; +    return std::unique_ptr&lt;ImageBufferShareableIOSurfaceBackend&gt;(new ImageBufferShareableIOSurfaceBackend(size, backendSize, resolutionScale, colorSpace, WTFMove(surface)));
&gt; 
&gt; make_unique&lt;&gt;

Fixed.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:69
&gt;&gt; +    return std::unique_ptr&lt;ImageBufferShareableIOSurfaceBackend&gt;(new ImageBufferShareableIOSurfaceBackend(logicalSize, internalSize, resolutionScale, colorSpace, WTFMove(surface)));
&gt; 
&gt; make_unique&lt;&gt;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623720</commentid>
    <comment_count>12</comment_count>
      <attachid>391932</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-02-27 15:34:36 -0800</bug_when>
    <thetext>Created attachment 391932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623750</commentid>
    <comment_count>13</comment_count>
      <attachid>391883</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-27 16:14:15 -0800</bug_when>
    <thetext>Comment on attachment 391883
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:80
&gt;&gt;&gt; +    return std::unique_ptr&lt;ImageBufferShareableBitmapBackend&gt;(new ImageBufferShareableBitmapBackend(logicalSize, backendSize, resolutionScale, colorSpace, WTFMove(bitmap), WTFMove(context)));
&gt;&gt; 
&gt;&gt; make_unique&lt;&gt;
&gt; 
&gt; Fixed. But I have to make the constructor public.

You could keep it private and use a friend declaration. See ContentFilter.h for an example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623799</commentid>
    <comment_count>14</comment_count>
      <attachid>391932</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-27 17:35:31 -0800</bug_when>
    <thetext>Comment on attachment 391932
Patch

Clearing flags on attachment: 391932

Committed r257606: &lt;https://trac.webkit.org/changeset/257606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623800</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-27 17:35:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623801</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-27 17:36:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/59871107&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389723</attachid>
            <date>2020-02-04 15:23:24 -0800</date>
            <delta_ts>2020-02-27 00:40:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207233-20200204152322.patch</filename>
            <type>text/plain</type>
            <size>513147</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNmNGYxNTAyYjcxM2I5
ZWYyZTc0NjUyYmQ4MGFlOTI0Nzc3ODllNy4uZGYwZmIyYmI0YWU4NWEyMWM5ZWQ5NWQ4MjdhM2Y1
NmVjMTk4YmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwMCBAQAorMjAyMC0wMi0wNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBJbWFnZUJ1ZmZlciBzaGFyZWFibGUgYmFja2VuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzIzMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlZmluZSB0aGUgYmFzZSBJbWFnZUJ1ZmZlckJh
Y2tlbmQgZm9yIGVhY2ggcGxhdGZvcm0uIAorICAgICAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQgaW4gV2ViS2l0IG5lZWRzIHRvIGhhdmUgYWNjZXNzIHRvIGJhc2ljCisgICAg
ICAgIEltYWdlQnVmZmVyQmFja2VuZCBmdW5jdGlvbmFsaXRpZXMgc3BlY2lmaWMgdG8gdGhlIHBs
YXRmb3JtLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaDogQWRkZWQuCisKKzIwMjAtMDItMDQgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dGhlIHJlbW90ZSBSZW5kZXJpbmdCYWNrZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeHRlbmQgUmVuZGVyaW5nTW9kZSB0byBpbmNsdWRlIG5ldyBl
bnVtIHZhbHVlcyBmb3IgY3JlYXRpbmcgcmVtb3RlCisgICAgICAgIEltYWdlQnVmZmVyIHR5cGVz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaDoKKworMjAyMC0wMi0wMyAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVj
ZSBSZW5kZXJpbmdCYWNrZW5kIGFuZCBtYWtlIGl0IHRoZSBjcmVhdG9yIG9mIEltYWdlQnVmZmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcxMzQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5kZXJp
bmdCYWNrZW5kIHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZl
ci4gSW4gYQorICAgICAgICBmb2xsb3dpbmcgcGF0Y2ggUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3
aWxsIGJlIGludHJvZHVjZWQuIEl0J2xsIGluaGVyaXQKKyAgICAgICAgUmVuZGVyaW5nQmFja2Vu
ZCBhbmQgbGl2ZSBpbiBXZWJLaXQuIEl0IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5n
CisgICAgICAgIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlci4gVGhlIGdvYWwgZm9yIFJlbmRlcmluZ0Jh
Y2tlbmQgYW5kIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKKyAgICAgICAgaXMgdG8gaW50ZXJhY3Qg
d2l0aCBSZW1vdGVJbWFnZUJ1ZmZlciBzZWFtbGVzc2x5IGluIHRoZSBjYWxsZXIgc2lkZS4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2hhcmVkUmVuZGVyaW5nQmFja2Vu
ZCBjb25zdCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpjcmVhdGVSZW5kZXJp
bmdCYWNrZW5kIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dHVhbEltYWdlQnVmZmVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVy
aW5nQmFja2VuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ0JhY2tlbmQ6OnNoYXJlZFJl
bmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ0Jh
Y2tlbmQuaDogQWRkZWQuCisKKzIwMjAtMDItMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBDcmVhdGUgYSBuZXcgSW1hZ2VCdWZmZXIgdHlw
ZSBmb3IgZHJhd2luZyBvbiBhIERpc3BsYXlMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcxMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEaXNwbGF5TGlzdEltYWdlQnVmZmVyIGluaGVyaXRzIElt
YWdlQnVmZmVyIGFuZCBEcmF3aW5nQ29udGV4dC4gVGhlIAorICAgICAgICBkcmF3aW5nIGNvbnRl
eHQgd2lsbCBiZSB0aGUgY29udGV4dCBvZiB0aGUgZGlzcGxheSBsaXN0LiBUaGUgSW1hZ2VCdWZm
ZXIKKyAgICAgICAgb3BlcmF0aW9ucyB3aWxsIGVuc3VyZSB0aGUgcmVjb3JkZWQgZGlzcGxheS1s
aXN0IGlzIHJlcGxheWVkIGJhY2sgYmVmb3JlCisgICAgICAgIGdldHRpbmcgdGhlIHBpeGVscyBv
ZiB0aGUgSW1hZ2VCdWZmZXJCYWNrZW5kLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHQyZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0VXNlc0Rpc3BsYXlMaXN0RHJh
d2luZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0VHJhY2tzRGlz
cGxheUxpc3RSZXBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmRp
c3BsYXlMaXN0QXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVt
ZW50OjpyZXBsYXlEaXNwbGF5TGlzdEFzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250
ZXh0dWFsSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1YWxJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1YWxJbWFnZUJ1ZmZlcjo6
Zmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1YWxJbWFnZUJ1ZmZlcjo6
Y29weU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1YWxJbWFnZUJ1ZmZl
cjo6Y29weUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1YWxJbWFnZUJ1ZmZlcjo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0dWFsSW1hZ2VCdWZmZXI6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1YWxJbWFnZUJ1ZmZlcjo6c2lua0ludG9O
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0dWFsSW1hZ2VCdWZmZXI6OnNp
bmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVhbEltYWdlQnVmZmVyOjpk
cmF3Q29uc3VtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHR1YWxJbWFnZUJ1ZmZlcjo6
Y29udmVydFRvTHVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0dWFsSW1h
Z2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdEltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlcjo6RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjp+RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3aW5nQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29udGV4
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6
RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdD
b250ZXh0Ojpjb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3aW5nQ29udGV4dDo6ZGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdpbmdDb250ZXh0OjpkaXNwbGF5TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OnJlcGxheURpc3BsYXlMaXN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6c2V0VHJhY2tz
RGlzcGxheUxpc3RSZXBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdp
bmdDb250ZXh0OjpyZXBsYXlEaXNwbGF5TGlzdCk6CisKKzIwMjAtMDEtMzEgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBkaWZmZXJl
bnQgYmFjay1lbmRzIGZvciBJbWFnZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1hZ2VCdWZmZXIgd2lsbCBiZSByZS1mYWN0b3JlZCB0byBk
ZWNvdXBsZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWNzIGFuZAorICAgICAgICB0aGUgYmFjay1lbmQg
ZGV0YWlscyBmcm9tIHRoZSBpbnRlcmZhY2UgIkltYWdlQnVmZmVyIi4KKworICAgICAgICBBIGNs
YXNzIGhpZXJhcmNoeSBmb3IgdGhlIEltYWdlQnVmZmVyQmFja2VuZCB3aWxsIGFkZGVkIHRvIGFs
bG93IGNvZGUKKyAgICAgICAgc2hhcmluZyBhbmQgdG8gc3BsaXQgdGhlIGNvZGUgYWNjb3JkaW5n
IHRvIHRoZSBwbGF0Zm9ybSBhbmQgdGhlIGJhY2stZW5kCisgICAgICAgIGRldGFpbHMuCisKKyAg
ICAgICAgSW1hZ2VCdWZmZXIgd2lsbCBiZSBrZXB0IGludGVyZmFjZSB3aXRoIHRoZSByZXN0IG9m
IHRoZSBjb2RlIGJ1dCBkaWZmZXJlbnQKKyAgICAgICAgYmFjay1lbmRzIHdpbGwgYmUgY3JlYXRl
ZC4gQ29udGV4dHVhbEltYWdlQnVmZmVyIGlzIGEgdGVtcGxhdGUgY2xhc3Mgd2hpY2gKKyAgICAg
ICAgaW5oZXJpdHMgSW1hZ2VCdWZmZXIgYW5kIHdpbGwgIGFjdCBhcyBhIGJyaWRnZSB0byB0aGUg
Y29uY3JldGUKKyAgICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kLgorCisgICAgICAgIEJhc2VkIG9u
IHRoZSBSZW5kZXJpbmdNb2RlLCBhIENvbnRleHR1YWxJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4g
d2lsbAorICAgICAgICBiZSBjcmVhdGVkLiBJbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSByZW5kZXJp
bmdNb2RlIGluIG1hbnkgcGxhY2VzIG9mIHRoZQorICAgICAgICBjb2RlIGFuZCBpbnN0ZWFkIG9m
IGFuZCB1c2luZyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcywgYWxsIHRoZXNlIGRlY2lzaW9ucwor
ICAgICAgICB3aWxsIGJlIG1hZGUgaW4gdGhlIGNvbmNyZXRlIEltYWdlQnVmZmVyQmFja2VuZC4K
KworICAgICAgICBUaGlzIHJlLWZhY3RvcmluZyB3aWxsIGFsbG93IGNyZWF0aW5nIG5ldyB0eXBl
cyBvZiBJbWFnZUJ1ZmZlcnMgYmFja2VkIGJ5CisgICAgICAgIG5ldyBJbWFnZUJ1ZmZlckJhY2tl
bmRzLiBUaGVzZSBuZXcgSW1hZ2VCdWZmZXJCYWNrZW5kcyB3aWxsIGltcGxlbWVudAorICAgICAg
ICBEaXNwbGF5TGlzdCBkcmF3aW5nIGFuZCBzeW5jaHJvbml6ZSByZW1vdGUgcmVuZGVyaW5nLgor
CisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtRlRXLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvQ2FudmFzQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vQ2Fpcm8uY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vU291cmNlc0Nh
aXJvLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
dGV4dHVhbEltYWdlQnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVh
bEltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dHVhbEltYWdl
QnVmZmVyOjpDb250ZXh0dWFsSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dHVhbEltYWdlQnVmZmVyOjplbnN1cmVCYWNrZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHR1YWxJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgQSBicmlkZ2Ug
Y2xhc3MgdG8gSW1hZ2VCdWZmZXJCYWNrZW5kLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjp0b0JHUkFEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzayk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29udmVydFRvTHVtaW5hbmNlTWFzayk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1MYXllciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVRvUGxh
dGZvcm1UZXh0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpt
ZW1vcnlDb3N0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpleHRlcm5hbE1lbW9yeUNvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YSk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmludGVybmFsU2l6ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6bG9naWNhbFNpemUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlc29sdXRpb25TY2FsZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6YmFzZVRyYW5z
Zm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBhbGwgdGhlIGJhY2stZW5kIGFu
ZCBwbGF0Zm9ybXMgZGV0YWlscy4gVW5pZnkgdGhlIGludGVyZmFjZSBzdWNoCisgICAgICAgIHRo
YXQgSW1hZ2VCdWZmZXIgZG9lcyBub3QgaW5jbHVkZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4g
QWxsIHRoZSAKKyAgICAgICAgcGxhdGZvcm0gc3BlY2lmaWNzIHdpbGwgYmUgaW4gSW1hZ2VCdWZm
ZXJCYWNrZW5kLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Oklt
YWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmNhbGN1bGF0ZUJhY2tlbmRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFj
a2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFj
a2VuZDo6Y29udmVydFRvTHVtaW5hbmNlTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29weVBy
ZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29weVByZW11
bHRpcGxpZWRUb1VucHJlbXVsdGlwbGllZCk6CisgICAgICAgIChXZWJDb3JlOjpjb3B5VW5wcmVt
dWx0aXBsaWVkVG9QcmVtdWx0aXBsaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlGdW5jdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Y29weUltYWdlUGl4ZWxz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Z2V0SW1hZ2VE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6cHV0SW1h
Z2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmZsdXNoQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmxvZ2ljYWxTaXpl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6YmFja2VuZFNp
emUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpyZXNvbHV0
aW9uU2NhbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpj
b2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
YmFzZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tl
bmQ6Om1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpleHRlcm5hbE1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvcHlUb1BsYXRmb3JtVGV4dHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6YmFja2VuZENvbG9yRm9ybWF0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kQ29v
cmRpbmF0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjps
b2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6
OmJhY2tlbmRSZWN0IGNvbnN0KToKKyAgICAgICAgQSBiYXNlIGNsYXNzIHdoaWNoIGRlZmluZXMg
c29tZSAgZGVmYXVsdCBiZWhhdmlvcnMgc28gbm90IGFsbCB0aGUgcGxhdGZvcm1zCisgICAgICAg
IGhhdmUgdG8gaW1wbGVtZW50IHRoZW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUltYWdlQnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1NoYWRv
d0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWlybzo6ZmlsbFNoYWRvd0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZDo6dG9EYXRhVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kOjp0b0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JT
cGFjZSk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvR0xTdXJmYWNlQmFja2VuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJT
dXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFj
ZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kOjp+SW1hZ2VCdWZmZXJDYWly
b0dMU3VyZmFjZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnBsYXRm
b3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0dMU3Vy
ZmFjZUJhY2tlbmQ6OmNvcHlUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6c3dh
cEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvR0xT
dXJmYWNlQmFja2VuZDo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmg6IEFkZGVk
LgorICAgICAgICBBbiBhY2NlbGVyYXRlZCBDYWlybyBiYWNrLWVuZC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6
cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oOiBBZGRlZC4KKyAg
ICAgICAgQW4gdW5hY2NlbGVyYXRlZCBDYWlybyBiYWNrLWVuZC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpJ
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZh
Y2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmdldElt
YWdlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQ6OnB1dEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDogQWRkZWQuCisg
ICAgICAgIEEgQ2Fpcm8gc3VyZmFjZSBiYXNlIGNsYXNzIGJhY2stZW5kLgorCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpiYXNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGFVUkwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZVZJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5SW1hZ2VQaXhl
bHNBY2NlbGVyYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
Y29weUltYWdlUGl4ZWxzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAgQSBiYXNlIGNsYXNzIGZvciBh
bGwgQ0cgYmFjay1lbmRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb250ZXh0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OnRvQkdSQURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOiBBZGRlZC4KKyAgICAg
ICAgQW4gdW5hY2NlbGVyYXRlZCBDRyBiYWNrLWVuZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcDogUmVtb3ZlZC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxh
dGVCYWNrZW5kU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmZsdXNoQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9y
eUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpleHRlcm5hbE1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRDb2xvckZvcm1hdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmdldEltYWdlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnB1dElt
YWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBBbiBJT1N1cmZhY2UgYWNjZWxlcmF0ZWQg
Q0cgYmFjay1lbmQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNh
Y2hlZEltYWdlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbUltYWdl
QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0
YURpcmVjdDJELmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQnVmZmVyRGlyZWN0MkQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNv
bnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OmZsdXNoQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJpdG1h
cEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnRvRGF0YVVSTCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6dG9EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjp0
b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kOjpnZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ6OnB1dEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBS
ZW1vdmUgRGlyZWN0MkQgaW1wbGVtZW50YXRpb24gZm9yIEltYWdlQnVmZmVyLiBJbnRyb2R1Y2Ug
CisgICAgICAgIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kIGluc3RlYWQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXcmFwcGVkTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlckZvcmVncm91bmQpOgorCisyMDIwLTAxLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBJbWFnZUJ1ZmZlcjo6Z2V0
SW1hZ2VEYXRhKCkgYW5kIHB1dEltYWdlRGF0YSgpIHJldHVybiBhbmQgdGFrZSBJbWFnZURhdGEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjYyMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0tIENvbWJp
bmUgSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSgpIGFuZCBnZXRQcmVtdWx0
aXBsaWVkSW1hZ2VEYXRhKCkKKyAgICAgICAgICAgaW4gb25lIGZ1bmN0aW9uIGFuZCBuYW1lIGl0
IGdldEltYWdlRGF0YSgpOworCisgICAgICAgIC0tIE1ha2UgZ2V0SW1hZ2VEYXRhKCkgcmV0dXJu
cyBhbiBSZWZQdHI8SW1hZ2VEYXRhPiBzaW5jZSB0aGUgY2FudmFzIGNvZGUKKyAgICAgICAgICAg
dXNlZCB0byBlbmNhcHN1bGF0ZSB0aGUgcmV0dXJuZWQgVWludDhDbGFtcGVkQXJyYXkgaW50byBh
biBJbWFnZURhdGEKKyAgICAgICAgICAgYW5kIHNlbmQgaXQgdG8gSmF2YVNjcmlwdENvcmUuCisK
KyAgICAgICAgLS0gUmVuYW1lIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoKSB0byBJbWFnZUJ1
ZmZlcjo6cHV0SW1hZ2VEYXRhKCkgYW5kCisgICAgICAgICAgIG1ha2UgaXQgdGFrZSBhbiBJbWFn
ZURhdGEgc2luY2UgdGhlIGJ5dGUgYXJyYXkgaGFzIHRvIGJlIGFzc29jaWF0ZWQKKyAgICAgICAg
ICAgd2l0aCBhbiBJbnRTaXplIGFuZCBzZXBhcmF0aW5nIHRoZW0gZG9lcyBub3QgbG9vayBhIGdv
b2QgZGVzaWduLgorCisgICAgICAgIC0tIFJlbW92ZSB0aGUgZW51bSBJbWFnZUJ1ZmZlcjo6Q29v
cmRpbmF0ZVN5c3RlbS4gQWxsIHRoZSBjYWxsZXJzIG5lZWQgdG8KKyAgICAgICAgICAgcGFzcyBy
ZWN0YW5nbGVzIGFuZCBzaXplcyBpbiBsb2dpY2FsIGNvb3JkaW5hdGVzLiBUaGUgSW1hZ2VEYXRh
IGhhcyB0bworICAgICAgICAgICBiZSBzY2FsZWQgYWNjb3JkaW5nIHRvIHRoZSBJbWdlQnVmZmVy
OjpyZXNvbHV0aW9uU2NhbGUoKS4gCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1w
SW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJ
bWFnZUJpdG1hcCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpnZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29s
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVu
c2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2spOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOiBEZWxldGVk
LgorICAgICAgICBNb3ZlIHRoaXMgZnVuY3Rpb24gdG8gSW1hZ2VCdWZmZXJDYWlyby5jcHAuCisK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZW5lcmljQ29udmVydFRvTHVtaW5hbmNl
TWFzayk6IERlbGV0ZWQuCisgICAgICAgIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKSBhbmQgZ2Vu
ZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKSBhcmUgbm90IAorICAgICAgICBvdmVycmlkZGVu
IGJ5IGFueSBwbGF0Zm9ybS4gU28gZGVsZXRlIGdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCkgYW5kCisgICAgICAgIG1vdmUgaXRzIGJvZHkgdG8gY29udmVydFRvTHVtaW5hbmNlTWFzaygp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0Nv
bnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhKToK
KyAgICAgICAgTWFrZSB0aGUgcHJpdmF0ZSBmdW5jdGlvbnMgYmUgcHVibGljIGFuZCByZW1vdmUg
dGhlIGZyaWVuZCBjbGFzc2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsVW5pdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpiYWNraW5nU3RvcmVVbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVB
cnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJEYXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaDoKKyAgICAg
ICAgQWxsIHRoZSByZWN0YW5nbGVzIGFuZCBzaXplcyBoYXZlIHRvIGJlIHBhc3NlZCBpbiBsb2dp
Y2FsIGNvb3JkaW5hdGVzLiBUbworICAgICAgICBkZWFsIHdpdGggdGhlIHBpeGVscycgZGF0YSB3
ZSBuZWVkIHRvIHNjYWxlIHRoZW0gYnkgdGhlIHJlc29sdXRpb25TY2FsZSgpLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSk6CisgICAgICAgIFRoaXMgd2FzIHRoZSBvbmx5IHBsYWNlIHdoaWNoIHdhcyBwYXNz
aW5nIGEgcmVjdGFuZ2xlIGluIGEgdGhlIGJhY2stZW5kCisgICAgICAgIGNvb3JkaW5hdGVzIGFs
b25nIHdpdGggQmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbS4gSW5zdGVhZCB3ZSBjYW4gcGFz
cworICAgICAgICB0aGUgcmVjdGFuZ2xlIGluIGxvZ2ljYWwgY29vcmRpbmF0ZXMgYW5kIHRoZW4g
dXNlIEltYWdlRGF0YTo6c2l6ZSgpIHNpbmNlCisgICAgICAgIGl0IG11c3QgYmUgc2NhbGVkIHdp
dGggcmVzb2x1dGlvblNjYWxlKCkgd2hlbiB0aGUgSW1hZ2VEYXRhIGlzIGNyZWF0ZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVsdGlwbGllZFBpeGVscyk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRh
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFn
ZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1
dEJ5dGVBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorCiAyMDIw
LTAyLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNo
IGluIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVJbmRleApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBmOGM4YzMzYTdkMzRmYTNiZmJmZGUxZjM5Y2Q4N2MxOWM1YmNkY2VhLi5jNzRlNWU4ZjZhOGRh
MGU5ZTcxMmJlMzMzZWQ3MjljYTlmYjVhNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OSBAQAor
MjAyMC0wMi0wNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBJbWFnZUJ1ZmZlciBzaGFyZWFibGUgYmFja2VuZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzIzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSByZW1vdGUgSW1h
Z2VCdWZmZXIgcHJveHkgd2lsbCBjcmVhdGUgYSBzaGFyZWFibGUgYmFja2VuZCBpbiB0aGUKKyAg
ICAgICAgR1BVUHJvY2Vzcy4gVGhlbiBpdCB3aWxsIGdpdmUgYWNjZXNzIHRvIHRoZSBiYWNrZW5k
IHRvIHRoZSByZW1vdGUKKyAgICAgICAgSW1hZ2VCdWZmZXIgaW4gdGhlIFdlYlByb2Nlc3MgYnkg
c2VuZGluZyBhbiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBT
b3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLmg6IEFkZGVkLgorICAgICAgICBUaGlzIGlzIHZhcmlhbnQgb2Ygc2hh
cmVhYmxlIGhhbmRsZXMgdG8gdGhlIEltYWdlQnVmZmVyQmFja2VuZCBkYXRhLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICBUaGUgZmlyc3QgY3JlYXRlIG1l
dGhvZCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIHJlbW90ZSBJbWFnZUJ1ZmZlcgorICAg
ICAgICBwcm94eSBpbiB0aGUgR1BVUHJvY2Vzcy4gVGhlIHNlY29uZCBjcmVhdGUgbWV0aG9kIHdp
bGwgYmUgY2FsbGVkIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgcmVtb3RlIEltYWdlQnVmZmVyIGlu
IHRoZSBXZWJQcm9jZXNzLgorCisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICBDcmVhdGVzIGFuIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSB3aGljaCB3aWxsIGJlIHNlbnQgZnJvbSB0aGUgR1BVUHJvY2Vzcwor
ICAgICAgICB0byB0aGUgV2ViUHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weUltYWdlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpnZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OnB1dEltYWdlRGF0YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuaDogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9SZW5kZXJp
bmdCYWNrZW5kL1BsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmg6IEFkZGVkLgor
ICAgICAgICBEZWZpbmVzIHRoZSBwbGF0Zm9ybSBzaGFyZWFibGUgSW1hZ2VCdWZmZXJCYWNrZW5k
IHR5cGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9jZy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvUmVuZGVyaW5nQmFja2VuZC9jZy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuaDogQWRkZWQuCisgICAgICAgIEJlY2F1c2UgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhcyB0byBiZSBkZWZpbmVkIGluIFdlYktpdCwgc2hhcmluZworICAgICAgICB0aGUgSU9TdXJm
YWNlIGJhY2tlbmQgaGFzIHRvIGJlIGltcGxlbWVudGVkIGluIFdlYktpdC4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorCisy
MDIwLTAyLTA0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IHRoZSByZW1vdGUgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzIyMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyIGFuZCBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yCisgICAgICAgIGhh
bmRsaW5nIHRoZSBjb21tdW5pY2F0aW9ucyBvZiB0aGUgSW1hZ2VCdWZmZXIgcGFydHMgYmV0d2Vl
biBXZWJQcm9jZXNzCisgICAgICAgIGFuZCBHUFVQcm9jZXNzLgorCisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAq
IEdQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
QnVmZmVyUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQg
Y29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvUmVuZGVyaW5nQmFj
a2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OlJlbW90ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFj
a2VuZC9SZW1vdGVJbWFnZUJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmluOiBBZGRlZC4K
KworMjAyMC0wMi0wNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCB0aGUgcmVtb3RlIFJlbmRlcmluZ0JhY2tlbmQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzE5OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0tIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQgd2lsbCBiZSBjcmVhdGVkIGJ5IFdlYkNocm9tZUNsaWVudCBhbmQgb3duZWQg
YnkKKyAgICAgICAgQ2hyb21lLiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlIHdpbGwgaGF2ZSBhY2Nlc3Mg
dG8gaXQgdGhyb3VnaCB0aGUgSG9zdFdpbmRvdworICAgICAgICBhcmd1bWVudC4gQWxsIHR5cGVz
IG9mIEltYWdlQnVmZmVyIHdpbGwgYmUgY3JlYXRlZCBieQorICAgICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcigpIG1ldGhvZC4gSW4tcHJvY2VzcyBJbWFnZUJ1
ZmZlcgorICAgICAgICB0eXBlcyB3aWxsIGJlIGNyZWF0ZWQgYnkgUmVuZGVyaW5nQmFja2VuZDo6
IGNyZWF0ZUltYWdlQnVmZmVyKCkuCisKKyAgICAgICAgLS0gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5IHdpbGwgYmUgY3JlYXRlZCBhbmQgb3duZWQgYnkKKyAgICAgICAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAg
IEFkZCBtZXRob2RzIGZvciBjcmVhdGluZyBhbmQgcmVsZWFzaW5nIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS4KKworICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZXNzYWdl
UmVjZWl2ZXJNYXApOgorICAgICAgICBBZGQgYSBNZXNzYWdlUmVjZWl2ZXJNYXAgdG8gR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBzbyBtZXNzYWdlcyBjYW4gYmUKKyAgICAgICAgZGlzcGF0Y2hl
ZCB0byBpdHMgTWVzc2FnZVJlY2VpdmVycy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkIHRoZSBhdHRyaWJ1
dGUgJ1dhbnRzRGlzcGF0Y2hNZXNzYWdlJy4KKyAgICAgICAgQWRkIG1lc3NhZ2VzIGZvciBjcmVh
dGluZyBhbmQgcmVsZWFzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKworICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlSW1h
Z2VCdWZmZXIpOgorICAgICAgICBBZGQgbWV0aG9kcyBmb3IgY3JlYXRpbmcgYW5kIHJlbGVhc2lu
ZyByZW1vdGUgSW1hZ2VCdWZmZXIgcHJveHkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL1JlbmRl
cmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
QWRkIG1lc3NhZ2VzIGZvciBjcmVhdGluZyBhbmQgcmVsZWFzaW5nIHJlbW90ZSBJbWFnZUJ1ZmZl
ciBwcm94eS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaDoKKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICBJZiB0aGUgYXR0cmlidXRlIFdh
bnRzRGlzcGF0Y2hNZXNzYWdlIGlzIGFkZGVkIHRvIHRoZSBtZXNzYWdlcy5pbiBmaWxlLAorICAg
ICAgICBhIGNhbGwgdG8gJ2Rpc3BhdGNoTWVzc2FnZSgpJyB3aWxsIGJlIGFkZGVkIHRvIGRpZFJl
Y2VpdmVNZXNzYWdlKCkgYW5kCisgICAgICAgIGEgY2FsbCB0byAnZGlzcGF0Y2hTeW5jTWVzc2Fn
ZSgpJyB3aWxsIGJlIGFkZGVkIHRvIGRpc3BhdGNoU3luY01lc3NhZ2UoKQorICAgICAgICBldmVu
IGlmIG5vIG1lc3NhZ2VzIGFyZSBkZWZpbmVkIGluIG1lc3NhZ2VzLmluLgorCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICBBZGQgZW5jb2RpbmcgYW5k
IGRlY29kaW5nIHN1cHBvcnQgZm9yIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYW5kIFJlbmRlcmlu
Z01vZGUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAg
KFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVN
ZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6bWVzc2Fn
ZVJlY2VpdmVyTWFwKToKKyAgICAgICAgQWRkIGEgTWVzc2FnZVJlY2VpdmVyTWFwIHRvIEdQVVBy
b2Nlc3NDb25uZWN0aW9uIHNvIG1lc3NhZ2VzIGNhbiBiZQorICAgICAgICBkaXNwYXRjaGVkIHRv
IGl0cyBNZXNzYWdlUmVjZWl2ZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCB0aGUgYXR0cmlidXRlICdX
YW50c0Rpc3BhdGNoTWVzc2FnZScuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9SZW5kZXJp
bmdCYWNrZW5kL0ltYWdlQnVmZmVySWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgQWRkIGFu
IE9iamVjdElkZW50aWZpZXIgZm9yIHJlbW90ZSBJbWFnZUJ1ZmZlci4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6flJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0
KToKKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIENyZWF0ZXMgYWxsIHR5cGVzIG9mIEltYWdlQnVmZmVyLiBGb3Ig
bm93IGl0IG9ubHkgY3JlYXRlcyB0aGUgaW4gcHJvY2VzcworICAgICAgICBSZW5kZXJpbmdCYWNr
ZW5kLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL1JlbmRl
cmluZ0JhY2tlbmQvUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaDogQWRkZWQuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgQ3JlYXRlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgd2hpY2ggd2lsbCBiZSBv
d25lZCBieSB0aGUgQ2hyb21lLgorCisyMDIwLTAyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
Ym91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgZGlmZmVyZW50IGJhY2stZW5k
cyBmb3IgSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNzA0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90IGNvbnN0KToKKwogMjAyMC0w
Mi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIFVz
ZSBwZXItVUlQcm9jZXNzIGRlZmF1bHQgY29va2llIHN0b3JhZ2UgZm9yIE1hYyBDYXRhbHlzdCBh
cHBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA1MmIzNjQxMDk4OTY1OGQ0OWZjMjUwNjlkMjA4MzA5
NDVmMDY4ZDJiLi4xYWU1MWM3OTJlNWQ1NTI4NjQ5ZGRkNTc1OTI2YjA3NWZjODJmYTE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKQEAgLTEwNDMsOCArMTA0MywxMCBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JIYXNoLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHR1YWxJ
bWFnZUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGFzaEFycmF5LmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmgKQEAgLTEwOTQsNyArMTA5Niw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEuaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCkBAIC0xMTI3LDEyICsxMTI5LDE1
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxh
eWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ0JhY2tlbmQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1JlbmRlcmluZ01vZGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UKaW5kZXggZjcxMjkyN2NjOTE4ZjNhYjBmZTcwOGE4YWMwMTdiZDBmM2Nm
OTQwZC4uNWQxNzc0M2VkMzg0MzAxMWZhODZjZTUxMWJlOTI5MzMwOTkyOTJlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC04Myw4ICs4Myw3IEBAIGlmICgke1VTRV9E
SVJFQ1QyRH0pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFkaWVudERpcmVjdDJE
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0
MkQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyRGlyZWN0
MkQuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJl
Y3QyRC5jcHAKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkQuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3Bw
CkBAIC0xMzIsOCArMTMxLDkgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJm
YWNlUG9vbC5jcHAKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCisg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAorICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAK
KyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NH
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKQEAgLTE3Niw3
ICsxNzYsOSBAQCBlbHNlICgpCiAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29s
LmgKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAorICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUZUVy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtlCmlu
ZGV4IDlhYjQ2ODczOWVmMTFmZjYwOWI5NjI5Mjg4YmIwMWIxNmRhNzAyYWEuLmY0YjliN2Y4ODY2
YjEyNDFhODU1NzliMmU2MWY3YmFlNTQzZDg3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRlRXLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRlRXLmNtYWtl
CkBAIC04NCw4ICs4NCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vSWNvbldpbi5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEYXRhRGlyZWN0MkQuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVm
ZmVyRGlyZWN0MkQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEaXJlY3QyRC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0yMDEsNyArMjAwLDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXJDbGllbnQuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAotICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TG9jYWxXaW5kb3dzQ29udGV4dC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRl
eCBhZWMzMjA2N2QzZTZmMmY0OWQxOTNlMGIxYTY2YmIwOTU5MTE2MGM4Li4xMjIxNWFiMWQxMGZi
ZGQ4YWVjYTI2N2Y3MDg0NjM3MzViZjVmZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpA
QCAtMjkxLDggKzI5MSwxMCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0lPU3VyZmFjZVBvb2wuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRD
Ry5jcHAKQEAgLTUyNyw3ICs1MjksOSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgKLSAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5oCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyVXRpbGl0aWVzQ0cuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XaW4uY21ha2UKaW5kZXggNGYzMDcxNTliN2VkODA2ZWI4MTk1MmJiYTQ1ZjVjMDdhOGRj
OTNlYi4uOGFmNzAxYzc3N2ZlMTUyZTIzMTZjYTUwMDA0M2FkOTcxYWNiZjFhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTExOSw3ICsxMTksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRElC
UGl4ZWxEYXRhLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xs
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlckNsaWVu
dC5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCAxMTZiMzg4ZDJkNWZkNWNkMmZkOWE0ZTYyNTBjMzg2YjQ1YzcxMjY1Li4zYTM1ZDZjMTMx
NGU1MDA2ZWU1Nzk5NmY0YjgzNWY5ODIwYmUyMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTg2NCw2
ICsxODY0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cApAQCAtMTg4Myw2ICsxODg0LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNz
L1JlZ2lvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nQmFja2VuZC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IDRkZTc1ZGY4ZGYwYjhmOTBlNWIyNTgxNTdlYWRhNGE2OWQzYjU5MTYuLjc2NjFlMmI5YWQyYjM5
MThhNTNiMTY3ZTQ3YmMxNDUzYWU2ZmM5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAt
MjkxLDggKzI5MSw5IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZh
Y2VQb29sLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKLXBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRp
bGl0aWVzQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZjA0NDEyNDE4ZTZk
YmIwZjBiM2IxN2E2ZDlhOGNhNmJhODExNmI0Li5lNmM1MmNiOTgyYjNhZDJlMGZmMWNhODlmOTU0
ZDUwNWIwYWY5NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02NDUsOCArNjQ1LDYgQEAKIAkJMjBENjI5MjcxMjUzNjkwQjAw
MDgxNTQzIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjBENjI5MjUxMjUzNjkwQjAwMDgxNTQzIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oICovOyB9OwogCQkyMjVBMTZCNTBENUMxMUU5MDAwOTAy
OTUgLyogV2ViRXZlbnRSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDIyNUExNkIzMEQ1QzExRTkwMDA5MDI5NSAvKiBXZWJFdmVudFJlZ2lvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTIyOEMy
ODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAv
KiBTY3JpcHRXcmFwcGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQkyMkJEOUY3RjEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMkJEOUY3
RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMjJCRDlGODExMzUzNjRGRTAwOUJEMTAy
IC8qIEltYWdlQnVmZmVyRGF0YUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyMkJEOUY4MDEzNTM2NEZFMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRh
Q0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
NEQ5MTI5MjEzQ0E5NTFFMDBEMjE5MTUgLyogSlNTVkdBbHRHbHlwaERlZkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RDkxMjkwMTNDQTk1
MUUwMEQyMTkxNSAvKiBKU1NWR0FsdEdseXBoRGVmRWxlbWVudC5oICovOyB9OwogCQkyNEQ5MTI5
NjEzQ0E5NTYxMDBEMjE5MTUgLyogSlNTVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNEQ5MTI5NDEzQ0E5NTYxMDBE
MjE5MTUgLyogSlNTVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmggKi87IH07CiAJCTI0RDkxMjlBMTND
QTk3MTQwMEQyMTkxNSAvKiBKU1NWR0dseXBoUmVmRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjREOTEyOTkxM0NBOTcxNDAwRDIxOTE1IC8q
IEpTU1ZHR2x5cGhSZWZFbGVtZW50LmggKi87IH07CkBAIC04MzMsMTcgKzgzMSwxNyBAQAogCQky
REFDQjlFOTIzNzU1RDAwMDBCNEMxODUgLyogR3JhcGhpY3NDb250ZXh0SW1wbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwMDEyM0YxRkFEODdENjAw
NTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREFGMzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29u
c3RhbnRQcm9wZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkRBRjM0M0IxRUE3RTBGMTAwMzgyQ0QzIC8qIENvbnN0YW50UHJvcGVydHlNYXAu
aCAqLzsgfTsKIAkJMkRENUE3MjcxRUJFRTQ3RDAwOUJBNTk3IC8qIENvbXBvc2l0aW9uVW5kZXJs
aW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ1
QTcyNjFFQkVFNDdEMDA5QkE1OTcgLyogQ29tcG9zaXRpb25VbmRlcmxpbmUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyRERFMUNFMzFGNTc0QUU1
MDBEMUEzNjUgLyogSlNWUkZpZWxkT2ZWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNFMDFGNTc0QUQxMDBEMUEzNjUgLyogSlNWUkZpZWxk
T2ZWaWV3LmggKi87IH07Ci0JCTJEREUxQ0U0MUY1NzRBRTkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxh
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFD
REUxRjU3NEFBQjAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5LmggKi87IH07Ci0JCTJEREUxQ0Y4MUY1
NzRDMzkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRTYxRjU3NEJGRjAwRDFBMzY1
IC8qIEpTVlJEaXNwbGF5Q2FwYWJpbGl0aWVzLmggKi87IH07Ci0JCTJEREUxQ0ZBMUY1NzRDM0Uw
MEQxQTM2NSAvKiBKU1ZSRGlzcGxheUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNFODFGNTc0QkZGMDBEMUEzNjUgLyogSlNWUkRpc3Bs
YXlFdmVudC5oICovOyB9OwotCQkyRERFMUNGQzFGNTc0Q0VFMDBEMUEzNjUgLyogSlNWUkRpc3Bs
YXlFdmVudFJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRERTFDRUExRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5RXZlbnRSZWFzb24u
aCAqLzsgfTsKLQkJMkRERTFDRkUxRjU3NENGMzAwRDFBMzY1IC8qIEpTVlJFeWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0VDMUY1NzRCRkYw
MEQxQTM2NSAvKiBKU1ZSRXllLmggKi87IH07Ci0JCTJEREUxRDAwMUY1NzRDRjcwMEQxQTM2NSAv
KiBKU1ZSRXllUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkRERTFDRUUxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJFeWVQYXJhbWV0ZXJz
LmggKi87IH07Ci0JCTJEREUxRDAyMUY1NzREMDAwMEQxQTM2NSAvKiBKU1ZSRnJhbWVEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGMDFG
NTc0QkZGMDBEMUEzNjUgLyogSlNWUkZyYW1lRGF0YS5oICovOyB9OwotCQkyRERFMUQwNDFGNTc0
RDA1MDBEMUEzNjUgLyogSlNWUkxheWVySW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTFDRjIxRjU3NEJGRjAwRDFBMzY1IC8qIEpTVlJMYXll
ckluaXQuaCAqLzsgfTsKLQkJMkRERTFEMDYxRjU3NEQwQTAwRDFBMzY1IC8qIEpTVlJQb3NlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRERFMUNGNDFG
NTc0QkZGMDBEMUEzNjUgLyogSlNWUlBvc2UuaCAqLzsgfTsKLQkJMkRERTFEMDgxRjU3NEQwRTAw
RDFBMzY1IC8qIEpTVlJTdGFnZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUxQ0Y2MUY1NzRCRkYwMEQxQTM2NSAvKiBKU1ZSU3Rh
Z2VQYXJhbWV0ZXJzLmggKi87IH07CisJCTJEREUxQ0UzMUY1NzRBRTUwMEQxQTM2NSAvKiAobnVs
bCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0U0MUY1
NzRBRTkwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IH07CisJCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxQ0ZBMUY1NzRDM0UwMEQxQTM2NSAv
KiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUx
Q0ZDMUY1NzRDRUUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IH07CisJCTJEREUxQ0ZFMUY1NzRDRjMwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDAwMUY1NzRDRjcwMEQx
QTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJ
CTJEREUxRDAyMUY1NzREMDAwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDA0MUY1NzREMDUwMEQxQTM2NSAvKiAobnVsbCkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CisJCTJEREUxRDA2MUY1NzRE
MEEwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IH07CisJCTJEREUxRDA4MUY1NzREMEUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IH07CiAJCTJERTcwMDIzMTkyRkU4MkEwMEIwOTc1QyAvKiBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJERTcwMDIyMTkyRkU4MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMuaCAqLzsgfTsKIAkJMkRGNTEyQ0UxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRGNTEyQ0MxRDg3M0U0NzAwMUQ2NzgwIC8qIFJlcGxhY2VSYW5nZVdp
dGhUZXh0Q29tbWFuZC5oICovOyB9OwogCQkyREZBNDg4RjFEQjU0MUQwMDAzNjJCOTkgLyogQnVm
ZmVyU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREZBNDg4RTFEQjU0MUMyMDAzNjJCOTkgLyogQnVmZmVyU291cmNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIxNDUsMTEgKzIxNDMsMTYg
QEAKIAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJB
MjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIyODNGMEUyMzBCMjY4QzAwRjVEODI4IC8qIElt
YWdlUGFpbnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MjJBODE1RDIzOEZEQUYwMDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBD
MDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIzOTQwNjUyM0U4ODI4NjAwRTNCNTQ1IC8qIFJlbmRl
cmluZ0JhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyMzk0MDY0MjNFODdENTQwMEUzQjU0NSAvKiBSZW5kZXJpbmdCYWNrZW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNB
OEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VY
VEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rp
dml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQw
MEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAv
KiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2
ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MjlERDQ0MjIzRUEyNkEwMDAwMjZCN0IgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyNTA2RDQ2MjNFQTIyMkIwMDFFNkUwRCAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFj
a2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcyOURENDQ0MjNFQTI3MEEwMDAyNkI3QiAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUQyM0UxRTU0
NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5REQ0NDUyM0VBMjc5QjAwMDI2QjdCIC8q
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUIyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
QkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNG
MDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAv
KiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsK
IAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VDNzBEMENFNzJEMDA3
RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTI1ODAsNyArMjU4Myw2IEBACiAJ
CThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTkxMURDNUE2MzAw
MEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi87IH07CiAJCThCRDM3QTY4MjAxQkIzOUMw
MDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2NzIwMUJCMzlDMDAxMTczNEEgLyogUmVhZGFi
bGVTdHJlYW1DaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFNEM5NkQ5MUFE
NDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLzsgfTsKLQkJOEU2MjBFODEyMEVF
NjAyNDAwN0JDNUVGIC8qIFZSUGxhdGZvcm1EaXNwbGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTYyMEU4MDIwRUU1RkZDMDA3QkM1RUYg
LyogVlJQbGF0Zm9ybURpc3BsYXlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4RUM2Qzk2MzIwMUEyNTE2MDBGQkZBNTMgLyogR2FwTGVu
Z3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RUM2
Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0EzIC8q
IEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTAwMTc3NDExMkUwMzQ3ODAw
NjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMDE3NzNFMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNT
dGFuZGFyZERlcml2YXRpdmVzLmggKi87IH07CkBAIC0zMjAyLDcgKzMyMDQsNyBAQAogCQlBNzVF
OEI4RDBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb25lbnRUcmFuc2Zlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODUwRTFERTJENjAwN0Yy
NDgxIC8qIEZFQ29tcG9uZW50VHJhbnNmZXIuaCAqLzsgfTsKIAkJQTc1RThCOEYwRTFERTJENjAw
N0YyNDgxIC8qIEZFQ29tcG9zaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzVFOEI4NzBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuaCAq
LzsgfTsKIAkJQTc2RTVGN0YxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkU1
RjdFMTM1RTBEQ0YwMEE2OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTc3OTc5MUEwRDZCOUQw
QzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oICov
OyB9OworCQlBNzc5NzkxQTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxNDBENkI5RDBDMDAz
ODUxQjkgLyogSW1hZ2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyNTBE
NkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCAqLzsgfTsKIAkJQTc3QjQxQTAxMkU2NzVB
OTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRF
dmVudElucHV0VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE3N0QwMDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0QwMDExMTMzQjBB
RUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjU1OSw5ICs2NTYxLDYgQEAKIAkJMjI1QTE2QjMwRDVD
MTFFOTAwMDkwMjk1IC8qIFdlYkV2ZW50UmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkV2ZW50UmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTIyNUExNkI0MEQ1QzExRTkwMDA5MDI5NSAvKiBXZWJFdmVudFJlZ2lvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkV2ZW50UmVnaW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyMjhDMjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0
V3JhcHBhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFdyYXBw
YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyMjkyQjI3QjEzNTY2Njk0MDBD
RjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkyMkJEOUY4MDEzNTM2NEZFMDA5QkQxMDIgLyogSW1hZ2VC
dWZmZXJEYXRhQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZm
ZXJEYXRhQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjQ0MkJCRjgxMTk0QzlE
MzAwRDQ5NDY5IC8qIEhhc2hDaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIYXNoQ2hhbmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MjREOTEyOEYxM0NBOTUxRTAwRDIxOTE1IC8qIEpTU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQWx0R2x5cGhEZWZFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjREOTEyOTAxM0NBOTUxRTAw
RDIxOTE1IC8qIEpTU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTU1ZHQWx0R2x5cGhEZWZFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NTgwLDYgKzk1NzksMTAgQEAKIAkJNzIxNDQzNDUyMjQwQzhCQTAwRjEy
RkY3IC8qIFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmlt
YXRlZFZhbHVlUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNDQz
NDYyMjQwQ0FEMjAwRjEyRkY3IC8qIFNWR1ZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjJBODE1
QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFuaW1hdGlvbkZyYW1lUmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjM5
NDA1RTIzRTVGNTNGMDBFM0I1NDUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzk0MDYwMjNFNUY1NjcwMEUzQjU0NSAvKiBEaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzIzOTQwNjIyM0U4N0Q1MzAwRTNCNTQ1IC8qIFJlbmRlcmluZ0JhY2tlbmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyaW5nQmFja2VuZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMzk0MDY0MjNFODdENTQwMEUzQjU0NSAvKiBS
ZW5kZXJpbmdCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
cmluZ0JhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMjkxQTNB
N0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzI0RUQzMkExQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVEJsZW5kTWluTWF4Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVEMzJCMUEzQTdFNTQwMEY1RjEzQyAvKiBFWFRCbGVu
ZE1pbk1heC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUQmxlbmRNaW5NYXguaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTU4Nyw2ICs5NTkwLDcgQEAKIAkJNzI0RUQz
MzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0
eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyNTA2RDQ2MjNFQTIyMkIwMDFFNkUwRCAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2Vu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUltYWdlQnVmZmVy
QmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAxMzIyNDFCQ0Uy
MDA4MzM5NzUgLyogU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzI2NkYwMTQyMjQxQkZCMjAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0
b3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3JJbXBs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDE1MjI0MUMwOTgwMDgzMzk3
NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTk2MDIsNiArOTYwNiwxNiBAQAogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JH
Qi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRp
cGxpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJl
bmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MkJBQzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
QnVmZmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQkFDM0E1
MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVm
ZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZm
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCQUMzQTcyM0UxNzMyODAwOEQ3
NDFDIC8qIENvbnRleHR1YWxJbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb250ZXh0dWFsSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzJCQUMzQTgyM0UxRTU0MzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCQUMz
QTkyM0UxRTU0MzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkJBQzNBQTIzRTFFNTQ0
MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCQUMzQUIyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzJCQUMzQUMyM0UxRTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQ0dCYWNrZW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJCQUMzQUQyM0UxRTU0NTAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbWFnZVBhaW50aW5nT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MkU0MTc2MTFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRVhUc1JHQi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRTQxNzYyMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNS
R0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRzUkdCLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDU0NCw4ICsxMDU1OCw2IEBACiAJCThFMzNDRDkz
MjAxQTI5QzEwMEUzOTA5MyAvKiBHYXBMZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR2FwTGVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOEU0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoUmVzcG9uc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNG
ZXRjaFJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmV0Y2hS
ZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4RTYyMEU3RTIwRUU1RkUy
MDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVlJQbGF0Zm9ybURpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4RTYyMEU4MDIwRUU1RkZDMDA3QkM1RUYgLyogVlJQbGF0Zm9ybURpc3BsYXlD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVlJQbGF0Zm9ybURpc3Bs
YXlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEVDNkM5NjEyMDFBMjUw
MTAwRkJGQTUzIC8qIEdhcExlbmd0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHYXBMZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEY2NzU2MTkxMjg4
QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RjkzNEQ4
MzExODlGMUVFMDA1MDhENUQgLyogSlNFeGVjU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNFeGVjU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyNjc1LDcgKzEyNjg3LDYgQEAKIAkJQjJBMDE1OTQwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBo
aWNzVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBo
aWNzVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkEwMTU5NTBBRjZD
RDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUIyQTEwQjkzMEIzODE4RDcwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlckNHLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckNHLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJBMUYyQTEwQ0VGMEFCRjAwNDQyRjZBIC8qIFNW
R0ZvbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdGb250RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQTFGMkEy
MENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdGb250RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHRm9udEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJBMUYyQTMwQ0VGMEFCRjAwNDQyRjZBIC8qIFNWR0ZvbnRFbGVtZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHRm9udEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTY2ODksNiArMTY3MDAsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
MEZFNUZCQ0ExQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0LmNwcCAqLywKIAkJCQkwRkU1
RkJDQjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCAqLywKKwkJCQk3MjM5NDA2MDIz
RTVGNTY3MDBFM0I1NDUgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oICovLAogCQkJCTBG
RTVGQkNDMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmNwcCAqLywKIAkJCQkw
RkU1RkJDRDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oICovLAogCQkJCTBG
RTVGQkNFMUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCAqLywKQEAg
LTI0ODQwLDkgKzI0ODUyLDEyIEBACiAJCQkJOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdy
YXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJNkUyMUM2QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwICovLAogCQkJCUE4MEQ2NzA3MEU5RTlERUIwMEU0MjBGMCAv
KiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oICovLAotCQkJCUIyQTEwQjkzMEIz
ODE4RDcwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlckNHLmNwcCAqLywKLQkJCQkyMjkyQjI3QjEzNTY2
Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwICovLAotCQkJCTIyQkQ5RjgwMTM1
MzY0RkUwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5oICovLAorCQkJCTcyQkFDM0FDMjNF
MUU1NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgKi8sCisJCQkJNzJCQUMz
QUQyM0UxRTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggKi8sCisJCQkJNzJC
QUMzQTgyM0UxRTU0MzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCAq
LywKKwkJCQk3MkJBQzNBQTIzRTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQuaCAqLywKKwkJCQk3MkJBQzNBOTIzRTFFNTQzMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmNwcCAqLywKKwkJCQk3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyog
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggKi8sCiAJCQkJQ0Q1ODk0OTMyMTg3NDA2NDAw
NEY0MjRBIC8qIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwICovLAogCQkJCUNEM0UyMURCMjE4
MzNGNTEwMEU2NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggKi8sCiAJCQkJNTU1Qjg3
RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLywKQEAgLTI0OTM0LDEy
ICsyNDk0OSwxNCBAQAogCQkJCTBGRTZDNzZDMUZCRkI3QTYwMDI1QzA1MyAvKiBDb2xvclV0aWxp
dGllcy5oICovLAogCQkJCUMyRjRFNzg4MUU0NUFFREYwMDZENzEwNSAvKiBDb21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwICovLAogCQkJCUMyRjRFNzg5MUU0NUFFREYwMDZENzEwNSAvKiBDb21wbGV4
VGV4dENvbnRyb2xsZXIuaCAqLywKKwkJCQk3MkJBQzNBNzIzRTE3MzI4MDA4RDc0MUMgLyogQ29u
dGV4dHVhbEltYWdlQnVmZmVyLmggKi8sCiAJCQkJMkQyRkMwNTQxNDYwQ0Q2RjAwMjYzNjMzIC8q
IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCAqLywKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAy
NjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQk0QjdBRTQ5NTIxNzdC
NjNFMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5jcHAgKi8sCiAJCQkJNEI3QUU0OTIyMTc3
QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVC
OEE1MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5
RTM4IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAorCQkJCTcyMzk0MDVFMjNFNUY1M0YwMEUzQjU0
NSAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggKi8sCiAJCQkJNDlGQzdBNEYxNDQ0QUY1RjAw
QTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8sCiAJCQkJNDlBRjJENjgxNDQz
NUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovLAogCQkJCTJEMjlFQ0Mx
MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwICovLApA
QCAtMjUwMzEsNyArMjUwNDgsOCBAQAogCQkJCTU1QTMzNkY4MUQ4MjFFM0MwMDIyQzRDNyAvKiBJ
bWFnZUJhY2tpbmdTdG9yZS5oICovLAogCQkJCTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJ
bWFnZUJ1ZmZlci5jcHAgKi8sCiAJCQkJQjJBMTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdl
QnVmZmVyLmggKi8sCi0JCQkJMjJCRDlGN0QxMzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVy
RGF0YS5oICovLAorCQkJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwICovLAorCQkJCTcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZl
ckJhY2tlbmQuaCAqLywKIAkJCQlDRDE5RkVBNzFGNTczOTcyMDAwQzQyRkIgLyogSW1hZ2VEZWNv
ZGVyLmNwcCAqLywKIAkJCQlDRDE5RkVBNjFGNTczOTcyMDAwQzQyRkIgLyogSW1hZ2VEZWNvZGVy
LmggKi8sCiAJCQkJNTU3NkE1NjIxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuY3BwICov
LApAQCAtMjUwODgsNiArMjUxMDYsOCBAQAogCQkJCTJENTAwMkZBMUI1NkQ3OTkwMDIwQUFGNyAv
KiBQYXRoVXRpbGl0aWVzLmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBh
dHRlcm4uY3BwICovLAogCQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmgg
Ki8sCisJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIu
aCAqLywKKwkJCQk3MjUwNkQ0NjIzRUEyMjJCMDAxRTZFMEQgLyogUGxhdGZvcm1JbWFnZUJ1ZmZl
ckJhY2tlbmQuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1M
YXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxh
dGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTI1MDk3LDYgKzI1MTE3LDggQEAKIAkJCQlCQ0FCNDE4
MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8sCiAJCQkJMDczQTE1NTEyMTc3QTM5ODAw
RUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmNwcCAqLywKIAkJCQkwNzNBMTU1MzIxNzdBMzlB
MDBFQTA4RjIgLyogUmVtb3RlVmlkZW9TYW1wbGUuaCAqLywKKwkJCQk3MjM5NDA2MjIzRTg3RDUz
MDBFM0I1NDUgLyogUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCisJCQkJNzIzOTQwNjQyM0U4N0Q1
NDAwRTNCNTQ1IC8qIFJlbmRlcmluZ0JhY2tlbmQuaCAqLywKIAkJCQk3Mjk5QkM2NjIzRDY4NkM2
MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCUE3M0Y5NUZDMTJDOTdCRkUwMDMx
QUFGOSAvKiBSb3VuZGVkUmVjdC5jcHAgKi8sCiAJCQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5
IC8qIFJvdW5kZWRSZWN0LmggKi8sCkBAIC0yNTgyMyw3ICsyNTg0NSw2IEBACiAJCQkJNjU2Qjg0
RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5ldHdvcmsgKi8sCiAJCQkJMUEyRTZFNTYwQ0M1NTFFMDAw
NEEyMDYyIC8qIHNxbCAqLywKIAkJCQlCMkMzRDlFQzBEMDA2QzFEMDBFRjZGMjYgLyogdGV4dCAq
LywKLQkJCQlFMTg4MjM1RjIwMzFGNTBGMDBCNDJERjMgLyogdnIgKi8sCiAJCQkJREZEQjkxMkNG
OEU4OEE2REExQUQyNjRGIC8qIEFib3J0YWJsZVRhc2tRdWV1ZS5oICovLAogCQkJCTQ5QUUyRDk0
MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCAqLywKIAkJCQk0OUFFMkQ5
NTEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5oICovLApAQCAtMjg5MDQsNiAr
Mjg5MjUsMTcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTcyMTQ0MzMyMjIzRUM4NUYwMEYxMkZGNyAv
KiAobnVsbCkgaW4gSGVhZGVycyAqLywKIAkJCQk3MjE0NDMzMTIyM0VDODU0MDBGMTJGRjcgLyog
KG51bGwpIGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFDRTQxRjU3NEFFOTAwRDFBMzY1IC8qIChu
dWxsKSBpbiBIZWFkZXJzICovLAorCQkJCTJEREUxQ0Y4MUY1NzRDMzkwMEQxQTM2NSAvKiAobnVs
bCkgaW4gSGVhZGVycyAqLywKKwkJCQkyRERFMUNGQTFGNTc0QzNFMDBEMUEzNjUgLyogKG51bGwp
IGluIEhlYWRlcnMgKi8sCisJCQkJMkRERTFDRkMxRjU3NENFRTAwRDFBMzY1IC8qIChudWxsKSBp
biBIZWFkZXJzICovLAorCQkJCTJEREUxQ0ZFMUY1NzRDRjMwMEQxQTM2NSAvKiAobnVsbCkgaW4g
SGVhZGVycyAqLywKKwkJCQkyRERFMUQwMDFGNTc0Q0Y3MDBEMUEzNjUgLyogKG51bGwpIGluIEhl
YWRlcnMgKi8sCisJCQkJMkRERTFDRTMxRjU3NEFFNTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFk
ZXJzICovLAorCQkJCTJEREUxRDAyMUY1NzREMDAwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVy
cyAqLywKKwkJCQkyRERFMUQwNDFGNTc0RDA1MDBEMUEzNjUgLyogKG51bGwpIGluIEhlYWRlcnMg
Ki8sCisJCQkJMkRERTFEMDYxRjU3NEQwQTAwRDFBMzY1IC8qIChudWxsKSBpbiBIZWFkZXJzICov
LAorCQkJCTJEREUxRDA4MUY1NzREMEUwMEQxQTM2NSAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyogQWJvcnRDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAxNkE0Q0UgLyogQWJvcnRTaWduYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERP
TVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDI1OSw4ICszMDI5MSw5IEBACiAJCQkJN0M3
OTAzQjMxRjg2Rjk1QzAwNDYzQTcwIC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzE4RUFENEQxRkE5MTM4MDAwOENFRjg2IC8qIEltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkExMEI5MjBC
MzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTIyQkQ5
RjdGMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEuaCBpbiBIZWFkZXJzICovLAot
CQkJCTIyQkQ5RjgxMTM1MzY0RkUwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFj
a2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5REQ0NDQyM0VBMjcwQTAwMDI2QjdCIC8qIElt
YWdlQnVmZmVyQ0dCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjlERDQ0NTIzRUEyNzlC
MDAwMjZCN0IgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyNTM5NjMxOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29u
dHJvbHNCdXR0b25FbGVtZW50TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAxOTJENjE4QjZC
OUI3MDA3RkM3QTEgLyogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTMxMTY1LDE3ICszMTE5OCw2IEBACiAJCQkJQkU4RUYwNEQxNzFDOTAxNDAwOUI0OEMzIC8q
IEpTVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2RTc5MTQ5MUY5N0UwMUEw
MDE5OTczOSAvKiBKU1Zpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzc3OUJE
OTYxRjMyMjQ2QTAwQzIxNDE3IC8qIEpTVmlzdWFsVmlld3BvcnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTJEREUxQ0U0MUY1NzRBRTkwMEQxQTM2NSAvKiBKU1ZSRGlzcGxheS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMkRERTFDRjgxRjU3NEMzOTAwRDFBMzY1IC8qIEpTVlJEaXNwbGF5Q2FwYWJpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUNGQTFGNTc0QzNFMDBEMUEzNjUgLyogSlNW
UkRpc3BsYXlFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFDRkMxRjU3NENFRTAwRDFB
MzY1IC8qIEpTVlJEaXNwbGF5RXZlbnRSZWFzb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTJEREUx
Q0ZFMUY1NzRDRjMwMEQxQTM2NSAvKiBKU1ZSRXllLmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERF
MUQwMDFGNTc0Q0Y3MDBEMUEzNjUgLyogSlNWUkV5ZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICov
LAotCQkJCTJEREUxQ0UzMUY1NzRBRTUwMEQxQTM2NSAvKiBKU1ZSRmllbGRPZlZpZXcuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTJEREUxRDAyMUY1NzREMDAwMEQxQTM2NSAvKiBKU1ZSRnJhbWVEYXRh
LmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUQwNDFGNTc0RDA1MDBEMUEzNjUgLyogSlNWUkxh
eWVySW5pdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRERTFEMDYxRjU3NEQwQTAwRDFBMzY1IC8q
IEpTVlJQb3NlLmggaW4gSGVhZGVycyAqLywKLQkJCQkyRERFMUQwODFGNTc0RDBFMDBEMUEzNjUg
LyogSlNWUlN0YWdlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUyMDUwODIxOEE0
NjBDMzAwODA2NDdFIC8qIEpTVlRUQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUY5QjIwRDE4
Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRjlC
MjBGMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovLApA
QCAtMzE3NTUsNiArMzE3NzcsNyBAQAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQ
bGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0
Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTVCRTE5NTFENTRGNUZCMDBERDdDNjggLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MjlERDQ0MjIzRUEyNkEwMDAwMjZCN0IgLyogUGxhdGZvcm1JbWFnZUJ1ZmZl
ckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAv
KiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3
M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0
Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMzE5MzMsNiArMzE5NTYsNyBAQAogCQkJCUJDRUE0ODc2MDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4
IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NjQxRDQ4MTIx
NDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNzIzOTQwNjUyM0U4ODI4NjAwRTNCNTQ1IC8qIFJlbmRlcmluZ0JhY2tlbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJp
bmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTZDN0M0QjIyMTIzOTk3MDA5QjA2Q0EgLyog
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VBNDg3ODA5
N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW5saW5lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IGM0YzdlMjg4Mjc3MjY2ZGRlYzc1MjA0MTIxMmI1ZTJiYzVmYWEzNTguLjI1ZDY5Zjk0YTY3
ZmI5MWJjYzQ4YmM3ZTg1OTZkNzU4ZjZmNWUyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtOTQzLDEzICs5NDMs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2lj
YWxTaXplID0gYnVmZmVyLT5sb2dpY2FsU2l6ZSgpOwotICAgICAgICBhdXRvIGltYWdlRGF0YSA9
IGJ1ZmZlci0+Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KDAsIDAsIGxvZ2ljYWxT
aXplLndpZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgpKSk7CisgICAgICAgIGF1dG8gaW1hZ2VE
YXRhID0gYnVmZmVyLT5nZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgeyBJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSB9KTsKICAgICAgICAgaWYg
KCFpbWFnZURhdGEpIHsKICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZTo6VmFsaWRhdGlvbkVycm9yOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGltYWdlRGF0YS0+cG9zc2li
bHlTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IGltYWdlRGF0YS0+ZGF0YSgpLT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgICAgICBp
ZiAoIWFycmF5QnVmZmVyKSB7CiAgICAgICAgICAgICBjb2RlID0gU2VyaWFsaXphdGlvblJldHVy
bkNvZGU6OlZhbGlkYXRpb25FcnJvcjsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4NjUsMTkg
KzI4NjUsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlD
cmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwotICAgICAgICBpZiAoIWltYWdlRGF0YSkgeworICAgICAgICBhdXRvIGFycmF5ID0gVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGlmICghYXJyYXkpIHsKICAgICAgICAgICAgIGZh
aWwoKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAorICAgICAg
ICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKEludFNpemUobG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KSwgYXJyYXkucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGlmICgh
aW1hZ2VEYXRhKSB7CisgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGxvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7CiAgICAgICAgIGlm
ICghYnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgYnVmZmVyLT5wdXRCeXRlQXJyYXkoKmltYWdl
RGF0YSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgSW50U2l6ZShsb2dp
Y2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpLCBJbnRSZWN0KDAsIDAsIGxvZ2ljYWxXaWR0aCwgbG9n
aWNhbEhlaWdodCksIEludFBvaW50KCkpOworICAgICAgICBidWZmZXItPnB1dEltYWdlRGF0YShB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCAqaW1hZ2VEYXRhLCB7IEludFBv
aW50Ojp6ZXJvKCksIGltYWdlRGF0YS0+c2l6ZSgpIH0pOwogCiAgICAgICAgIGF1dG8gYml0bWFw
ID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZSh7IFdURk1vdmUoYnVmZmVyKSwgc3RhdGljX2Nhc3Q8Ym9v
bD4ob3JpZ2luQ2xlYW4pIH0pOwogICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShiaXRtYXApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKaW5kZXggZDJhZDQxZTg3MWFjNWEwYmNiNGQ2OWMx
NTI1MzQ2MzlhNzM2MTQ1ZC4uMTYyYjI5NDJmNjY2YTkzMjQ2MGIwNmU3NmQwODM2ZTQzYzAxNzE3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCkBAIC0xOTEsOCArMTkxLDggQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNCYXNlOjpzZXRJbWFnZUJ1ZmZlcihzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWYKICAgICAgICAgcmV0dXJuQnVmZmVyID0gc3RkOjpleGNoYW5n
ZShtX2ltYWdlQnVmZmVyLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIH0KIAotICAgIGlmIChtX2lt
YWdlQnVmZmVyICYmIG1fc2l6ZSAhPSBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKSkKLSAg
ICAgICAgbV9zaXplID0gbV9pbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7CisgICAgaWYgKG1f
aW1hZ2VCdWZmZXIgJiYgbV9zaXplICE9IG1faW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCkpCisg
ICAgICAgIG1fc2l6ZSA9IG1faW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCk7CiAKICAgICBzaXpl
X3QgcHJldmlvdXNNZW1vcnlDb3N0ID0gbV9pbWFnZUJ1ZmZlckNvc3Q7CiAgICAgbV9pbWFnZUJ1
ZmZlckNvc3QgPSBtZW1vcnlDb3N0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCmluZGV4IGY1ZTc2NTAwNjlhNmQ4NjkwZDk0M2RlZTI2YmIzNjFmOTE4OWNlMzEu
LjQyYTY1ZDNhOWU3NTQ0NTQ0MmU2NTlmOGM5YTVhNzVkMmU4Mzk1MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiQ2FudmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVk
ZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtMzQ5LDkgKzM1MCw2IEBAIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCogSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUNvbnRleHQyZChj
b25zdCBTdHJpbmcmIHR5cGUpCiAKICAgICBtX2NvbnRleHQgPSBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNyZWF0ZSgqdGhpcywgZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSk7CiAKLSAgICBk
b3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpLnNldFVzZXNEaXNw
bGF5TGlzdERyYXdpbmcobV91c2VzRGlzcGxheUxpc3REcmF3aW5nKTsKLSAgICBkb3duY2FzdDxD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpLnNldFRyYWNrc0Rpc3BsYXlMaXN0
UmVwbGF5KG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpOwotCiAjaWYgVVNFKElPU1VSRkFDRV9D
QU5WQVNfQkFDS0lOR19TVE9SRSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICAg
ICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSBhIFJlbmRlckxheWVyIGFuZCBjb21wb3NpdGluZyBsYXll
ciBnZXQgY3JlYXRlZCBmb3IgdGhlIENhbnZhcy4KICAgICBpbnZhbGlkYXRlU3R5bGVBbmRMYXll
ckNvbXBvc2l0aW9uKCk7CkBAIC04MjIsMzkgKzgyMCwyNyBAQCBib29sIEhUTUxDYW52YXNFbGVt
ZW50OjpzaG91bGRBY2NlbGVyYXRlKGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0CiAKIHZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OnNldFVzZXNEaXNwbGF5TGlzdERyYXdpbmcoYm9vbCB1c2VzRGlz
cGxheUxpc3REcmF3aW5nKQogewotICAgIGlmICh1c2VzRGlzcGxheUxpc3REcmF3aW5nID09IG1f
dXNlc0Rpc3BsYXlMaXN0RHJhd2luZykKLSAgICAgICAgcmV0dXJuOwotICAgIAogICAgIG1fdXNl
c0Rpc3BsYXlMaXN0RHJhd2luZyA9IHVzZXNEaXNwbGF5TGlzdERyYXdpbmc7Ci0KLSAgICBpZiAo
aXM8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihtX2NvbnRleHQuZ2V0KCkpKQotICAgICAgICBk
b3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpLnNldFVzZXNEaXNw
bGF5TGlzdERyYXdpbmcobV91c2VzRGlzcGxheUxpc3REcmF3aW5nKTsKIH0KIAogdm9pZCBIVE1M
Q2FudmFzRWxlbWVudDo6c2V0VHJhY2tzRGlzcGxheUxpc3RSZXBsYXkoYm9vbCB0cmFja3NEaXNw
bGF5TGlzdFJlcGxheSkKIHsKLSAgICBpZiAodHJhY2tzRGlzcGxheUxpc3RSZXBsYXkgPT0gbV90
cmFja3NEaXNwbGF5TGlzdFJlcGxheSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV90cmFja3NE
aXNwbGF5TGlzdFJlcGxheSA9IHRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5OwotCi0gICAgaWYgKGlz
PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAgZG93
bmNhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqbV9jb250ZXh0KS5zZXRUcmFja3NEaXNw
bGF5TGlzdFJlcGxheShtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KTsKKyAgICBpZiAoYnVmZmVy
KCkgJiYgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCkpCisgICAgICAgIGJ1ZmZlcigpLT5kcmF3
aW5nQ29udGV4dCgpLT5zZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShtX3RyYWNrc0Rpc3BsYXlM
aXN0UmVwbGF5KTsKIH0KIAogU3RyaW5nIEhUTUxDYW52YXNFbGVtZW50OjpkaXNwbGF5TGlzdEFz
VGV4dChEaXNwbGF5TGlzdDo6QXNUZXh0RmxhZ3MgZmxhZ3MpIGNvbnN0CiB7Ci0gICAgaWYgKGlz
PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4obV9jb250ZXh0LmdldCgpKSkKLSAgICAgICAgcmV0
dXJuIGRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkuZGlzcGxh
eUxpc3RBc1RleHQoZmxhZ3MpOwotCisgICAgaWYgKGJ1ZmZlcigpICYmIGJ1ZmZlcigpLT5kcmF3
aW5nQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCkt
PmRpc3BsYXlMaXN0KCkuYXNUZXh0KGZsYWdzKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBIVE1MQ2FudmFzRWxlbWVudDo6cmVwbGF5RGlzcGxheUxpc3RBc1RleHQoRGlzcGxh
eUxpc3Q6OkFzVGV4dEZsYWdzIGZsYWdzKSBjb25zdAogewotICAgIGlmIChpczxDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ+KG1fY29udGV4dC5nZXQoKSkpCi0gICAgICAgIHJldHVybiBkb3duY2Fz
dDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpLnJlcGxheURpc3BsYXlMaXN0
QXNUZXh0KGZsYWdzKTsKLQorICAgIGlmIChidWZmZXIoKSAmJiBidWZmZXIoKS0+ZHJhd2luZ0Nv
bnRleHQoKSAmJiBidWZmZXIoKS0+ZHJhd2luZ0NvbnRleHQoKS0+cmVwbGF5RGlzcGxheUxpc3Qo
KSkKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcigpLT5kcmF3aW5nQ29udGV4dCgpLT5yZXBsYXlEaXNw
bGF5TGlzdCgpLT5hc1RleHQoZmxhZ3MpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApAQCAt
ODg5LDExICs4NzUsMjIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoKSBjb25zdAogICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IHNob3VsZEFjY2VsZXJhdGUo
c2l6ZSgpKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZDsKLQogICAgIGF1dG8gaG9zdFdpbmRvdyA9IChkb2N1bWVudCgpLnZpZXcoKSAm
JiBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpKSA/IGRvY3VtZW50KCkudmlldygpLT5yb290KCkt
Pmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogQWRkIGEgbmV3IHNldHRp
bmcgZm9yIERpc3BsYXlMaXN0IGRyYXdpbmcgb24gY2FudmFzLgorICAgIGJvb2wgdXNlc0Rpc3Bs
YXlMaXN0RHJhd2luZyA9IG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZy52YWx1ZU9yKGRvY3VtZW50
KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpOworCisgICAgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlOworICAgIGlmICh1c2VzRGlzcGxheUxpc3REcmF3aW5nKQor
ICAgICAgICByZW5kZXJpbmdNb2RlID0gc2hvdWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVy
aW5nTW9kZTo6RGlzcGxheUxpc3RBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OkRpc3BsYXlM
aXN0OworICAgIGVsc2UKKyAgICAgICAgcmVuZGVyaW5nTW9kZSA9IHNob3VsZEFjY2VsZXJhdGUo
c2l6ZSgpKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZDsKKwogICAgIHNldEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSgpLCByZW5kZXJpbmdNb2RlLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBob3N0V2luZG93KSk7CiAK
KyAgICBpZiAoYnVmZmVyKCkgJiYgYnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCkpCisgICAgICAg
IGJ1ZmZlcigpLT5kcmF3aW5nQ29udGV4dCgpLT5zZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheSht
X3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KTsKKwogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JB
Q0tJTkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAgICAgaWYgKG1f
Y29udGV4dCAmJiBtX2NvbnRleHQtPmlzMmQoKSkgewogICAgICAgICAvLyBSZWNhbGN1bGF0ZSBj
b21wb3NpdGluZyByZXF1aXJlbWVudHMgaWYgYWNjZWxlcmF0aW9uIHN0YXRlIGNoYW5nZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggYjUyODY0NWM2NTg3NGNk
MGNhMDkzNDQ0NjFiNDU0ZDU2MDUwNjMyNi4uNDIxMzRhMTIyOTQxNDk2YmYzMWJjZGQ3OWM2YmM1
YzM5MWE3OGE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApAQCAt
MTYxLDcgKzE2MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faWdub3JlUmVzZXQgeyBmYWxz
ZSB9OwogCi0gICAgYm9vbCBtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmcgeyBmYWxzZSB9OworICAg
IE9wdGlvbmFsPGJvb2w+IG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZzsKICAgICBib29sIG1fdHJh
Y2tzRGlzcGxheUxpc3RSZXBsYXkgeyBmYWxzZSB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENh
bnZhc1JlbmRlcmluZ0NvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5k
ZXggZDQ5NDcxMjA4MzIzMTBjN2MwZDdiZWYxYzg3OWRhM2ZmYjI5M2YwYS4uZDJiOGRiODE0ZDMx
MzQxODY0MTJmYTVkOGFlYWY3YTIzODBiMTI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAg
LTIxNTgsMTEgKzIxNTgsNiBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VEYXRhKGZsbwogfQogCiBFeGNlcHRp
b25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0
SW1hZ2VEYXRhKGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3csIGZsb2F0IHNoKSBjb25zdAot
ewotICAgIHJldHVybiBnZXRJbWFnZURhdGEoSW1hZ2VCdWZmZXI6OkxvZ2ljYWxDb29yZGluYXRl
U3lzdGVtLCBzeCwgc3ksIHN3LCBzaCk7Ci19Ci0KLUV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURh
dGE+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoSW1hZ2VCdWZm
ZXI6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgZmxvYXQgc3gsIGZsb2F0IHN5
LCBmbG9hdCBzdywgZmxvYXQgc2gpIGNvbnN0CiB7CiAgICAgaWYgKCFjYW52YXNCYXNlKCkub3Jp
Z2luQ2xlYW4oKSkgewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25z
b2xlTWVzc2FnZShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVW5hYmxlIHRvIGdldCBpbWFnZSBk
YXRhIGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNy
b3NzLW9yaWdpbiBkYXRhLiIpKTsKQEAgLTIxOTYsOCArMjE5MSw4IEBAIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxJbWFnZURhdGE+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURh
dGEoSW1hZ2VCCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjcmVhdGVFbXB0eUlt
YWdlRGF0YShpbWFnZURhdGFSZWN0LnNpemUoKSk7CiAKLSAgICBhdXRvIGJ5dGVBcnJheSA9IGJ1
ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGltYWdlRGF0YVJlY3QsIG51bGxwdHIsIGNv
b3JkaW5hdGVTeXN0ZW0pOwotICAgIGlmICghYnl0ZUFycmF5KSB7CisgICAgYXV0byBpbWFnZURh
dGEgPSBidWZmZXItPmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIGltYWdlRGF0YVJlY3QpOworICAgIGlmICghaW1hZ2VEYXRhKSB7CiAgICAgICAg
IFN0cmluZ0J1aWxkZXIgY29uc29sZU1lc3NhZ2U7CiAgICAgICAgIGNvbnNvbGVNZXNzYWdlLmFw
cGVuZExpdGVyYWwoIlVuYWJsZSB0byBnZXQgaW1hZ2UgZGF0YSBmcm9tIGNhbnZhcy4gUmVxdWVz
dGVkIHNpemUgd2FzICIpOwogICAgICAgICBjb25zb2xlTWVzc2FnZS5hcHBlbmROdW1iZXIoaW1h
Z2VEYXRhUmVjdC53aWR0aCgpKTsKQEAgLTIyMDgsNyArMjIwMyw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxJbWFnZURhdGE+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURh
dGEoSW1hZ2VCCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OwogICAgIH0KIAotICAgIHJldHVybiBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZURhdGFSZWN0LnNp
emUoKSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkpOworICAgIHJldHVybiBpbWFnZURhdGE7
CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cHV0SW1hZ2VEYXRhKElt
YWdlRGF0YSYgZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5KQpAQCAtMjIxNywxMSArMjIxMiw2IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0
YSYgZGF0YSwgZmxvYXQgZHgsIGZsb2F0CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSYgZGF0YSwgZmxvYXQgZHgsIGZsb2F0IGR5
LCBmbG9hdCBkaXJ0eVgsIGZsb2F0IGRpcnR5WSwgZmxvYXQgZGlydHlXaWR0aCwgZmxvYXQgZGly
dHlIZWlnaHQpCi17Ci0gICAgcHV0SW1hZ2VEYXRhKGRhdGEsIEltYWdlQnVmZmVyOjpMb2dpY2Fs
Q29vcmRpbmF0ZVN5c3RlbSwgZHgsIGR5LCBkaXJ0eVgsIGRpcnR5WSwgZGlydHlXaWR0aCwgZGly
dHlIZWlnaHQpOwotfQotCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnB1dElt
YWdlRGF0YShJbWFnZURhdGEmIGRhdGEsIEltYWdlQnVmZmVyOjpDb29yZGluYXRlU3lzdGVtIGNv
b3JkaW5hdGVTeXN0ZW0sIGZsb2F0IGR4LCBmbG9hdCBkeSwgZmxvYXQgZGlydHlYLCBmbG9hdCBk
aXJ0eVksIGZsb2F0IGRpcnR5V2lkdGgsIGZsb2F0IGRpcnR5SGVpZ2h0KQogewogICAgIEltYWdl
QnVmZmVyKiBidWZmZXIgPSBjYW52YXNCYXNlKCkuYnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIp
CkBAIC0yMjQ1LDcgKzIyMzUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OnB1dEltYWdlRGF0YShJbWFnZURhdGEmIGRhdGEsIEltYWdlQnVmZmVyOjpDbwogICAgIEludFNp
emUgZGVzdE9mZnNldChzdGF0aWNfY2FzdDxpbnQ+KGR4KSwgc3RhdGljX2Nhc3Q8aW50PihkeSkp
OwogICAgIEludFJlY3QgZGVzdFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGNsaXBSZWN0KTsKICAg
ICBkZXN0UmVjdC5tb3ZlKGRlc3RPZmZzZXQpOwotICAgIGRlc3RSZWN0LmludGVyc2VjdChJbnRS
ZWN0KEludFBvaW50KCksIGNvb3JkaW5hdGVTeXN0ZW0gPT0gSW1hZ2VCdWZmZXI6OkxvZ2ljYWxD
b29yZGluYXRlU3lzdGVtID8gYnVmZmVyLT5sb2dpY2FsU2l6ZSgpIDogYnVmZmVyLT5pbnRlcm5h
bFNpemUoKSkpOworICAgIGRlc3RSZWN0LmludGVyc2VjdChJbnRSZWN0KEludFBvaW50KCksIGJ1
ZmZlci0+bG9naWNhbFNpemUoKSkpOwogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBJbnRSZWN0IHNvdXJjZVJlY3QoZGVzdFJlY3QpOwpAQCAtMjI1Myw3
ICsyMjQzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwdXRJbWFnZURh
dGEoSW1hZ2VEYXRhJiBkYXRhLCBJbWFnZUJ1ZmZlcjo6Q28KICAgICBzb3VyY2VSZWN0LmludGVy
c2VjdChJbnRSZWN0KDAsIDAsIGRhdGEud2lkdGgoKSwgZGF0YS5oZWlnaHQoKSkpOwogCiAgICAg
aWYgKCFzb3VyY2VSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgYnVmZmVyLT5wdXRCeXRlQXJyYXko
KmRhdGEuZGF0YSgpLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIElu
dFNpemUoZGF0YS53aWR0aCgpLCBkYXRhLmhlaWdodCgpKSwgc291cmNlUmVjdCwgSW50UG9pbnQo
ZGVzdE9mZnNldCksIGNvb3JkaW5hdGVTeXN0ZW0pOworICAgICAgICBidWZmZXItPnB1dEltYWdl
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIGRhdGEsIHNvdXJj
ZVJlY3QsIEludFBvaW50KGRlc3RPZmZzZXQpKTsKIAogICAgIGRpZERyYXcoZGVzdFJlY3QsIENh
bnZhc0RpZERyYXdBcHBseU5vbmUpOyAvLyBpZ25vcmUgdHJhbnNmb3JtLCBzaGFkb3cgYW5kIGNs
aXAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCAzZGZjOWM5ZmNlNTJiZTg4OTJiZjQ5OGFlNjcy
MjE4N2YxYmVlOTFkLi5kYjNmYWM4YjA4YjcwM2JkNTQxZmM3MmY0ZDMxYmQ1MTc3MzUwNGQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5oCkBAIC0zNzEsOSArMzcxLDYgQEAgcHJvdGVjdGVkOgogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IpOwog
Ci0gICAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IGdldEltYWdlRGF0YShJbWFnZUJ1
ZmZlcjo6Q29vcmRpbmF0ZVN5c3RlbSwgZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzdywgZmxv
YXQgc2gpIGNvbnN0OwotICAgIHZvaWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSYsIEltYWdlQnVm
ZmVyOjpDb29yZGluYXRlU3lzdGVtLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwg
ZmxvYXQgZGlydHlZLCBmbG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCk7Ci0KICAg
ICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzSW52
ZXJ0aWJsZVRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRlKCkuaGFzSW52
ZXJ0aWJsZVRyYW5zZm9ybTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IGY1ODZjY2IxNzhj
NzZlNTc4YzIxMzA4NDZhMWZiZmE3ZWZmZDdhZjUuLjYzN2U3N2M1ZmVkYWIzM2M1YmRiODBjNmZk
MGUxMWFiN2Y0YTgyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTQ5NCw2ICs0OTQsMTMg
QEAgdm9pZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sIGhpZGRl
blVudGlsTW91c2VNb3ZlcykKICAgICBtX2NsaWVudC5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNl
TW92ZXMoaGlkZGVuVW50aWxNb3VzZU1vdmVzKTsKIH0KIAorUmVuZGVyaW5nQmFja2VuZCogQ2hy
b21lOjpzaGFyZWRSZW5kZXJpbmdCYWNrZW5kKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVy
aW5nQmFja2VuZCkKKyAgICAgICAgbV9yZW5kZXJpbmdCYWNrZW5kID0gbV9jbGllbnQuY3JlYXRl
UmVuZGVyaW5nQmFja2VuZCgpOworICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmQuZ2V0KCk7
Cit9CisKIFBsYXRmb3JtRGlzcGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9kaXNwbGF5SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCA2NjJiZTAwZmEwYWJh
ZThiN2JhN2Q2NjhkNDQ3MGVjNTEzNjFhZjQ5Li42Y2ZjYWVjYTI4NWM0ZWJjNWUyMjQ0ZThlYmQ2
NGJhYzlhNzYyZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTgzLDYgKzgzLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOwogCisgICAgUmVu
ZGVyaW5nQmFja2VuZCogc2hhcmVkUmVuZGVyaW5nQmFja2VuZCgpIGNvbnN0IG92ZXJyaWRlOwor
CiAgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIG92ZXJyaWRlIHsgfQogCiAgICAgUGxhdGZv
cm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xOTUsNiArMTk3LDcg
QEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9pc0Rpc3Bh
dGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlU3VwcHJlc3NlZCB7IGZhbHNlIH07CiAjZW5kaWYKKyAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbmRlcmluZ0Jh
Y2tlbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCA5ODliYWY0YTdkN2YzMzU0NTkzMmJkOTMwNDNlZjQzYmE3YWE1MTJhLi5i
NTljZTEzZDllYzMzMDE5M2Q4MDM0N2MwY2Y4NzFkOTI1OGNhNWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJQb3B1cE1lbnVDbGll
bnQuaCIKICNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgIlJlbmRlckVt
YmVkZGVkT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZC5oIgogI2luY2x1ZGUg
IlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNs
dWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKQEAgLTMwNSw2ICszMDYsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNl
bmRpZgogCisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyaW5nQmFja2VuZD4gY3Jl
YXRlUmVuZGVyaW5nQmFja2VuZCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAgIC8v
IFBhc3MgbnVsbHB0ciBhcyB0aGUgR3JhcGhpY3NMYXllciB0byBkZXRhdGNoIHRoZSByb290IGxh
eWVyLgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdy
YXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3Jh
cGhpY3NMYXllcihHcmFwaGljc0xheWVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b25zb2xlQ2xpZW50LmNwcAppbmRleCA0YzM1MzMwOTE2MTlkYzY0M2Y4NzI5MDljYjcxZjc4Mjhl
Zjg1YmJjLi5lNjBjZGUxNGQxYTdjNmMzMDQyODkwNzUwN2M2MTBiZTU1ZGUxYTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMzc2LDcgKzM3Niw3IEBA
IHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgICAgICAgICAgYXV0byBzb3VyY2VTaXpl
ID0gaW1hZ2VEYXRhLT5zaXplKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQpKSB7CiAgICAgICAgICAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdChJbnRQ
b2ludCgpLCBzb3VyY2VTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPnB1
dEJ5dGVBcnJheSgqaW1hZ2VEYXRhLT5kYXRhKCksIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgSW50UG9pbnQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5wdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCAqaW1hZ2VEYXRhLCBzb3VyY2VSZWN0KTsKICAgICAg
ICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3Bu
ZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2Fpcm8uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWlyby5jbWFrZQppbmRl
eCA5YTNhOGJmOTQzYWQ2NTg2ZGE0M2NlZDBkYTdlNjNmMDU1YWI5YTVkLi4xMmEyZDc0ZmZiZThm
Y2M3M2YwNjhiYmZjYmEwMDU0MDc3NTcxNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWlyby5j
bWFrZQpAQCAtMTMsNyArMTMsMTAgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25z
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKLSAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5o
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uaAogKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCmluZGV4IDJjZmVjYWRjMjRkOTgyYTg2MTYzNzRiNzZhMGU0
ZmIwZmZmN2E5ZDQuLjg5ODY1MzQ2Y2Y0ODBmODA2YzVjMGNlOTM1MjFkZTY5MjA4MTgwNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNCArMjMsMTQgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgSG9zdFdpbmRvd19oCi0jZGVmaW5lIEhvc3RXaW5k
b3dfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDdXJzb3I7CitjbGFzcyBSZW5kZXJpbmdCYWNrZW5kOwogCiBjbGFz
cyBIb3N0V2luZG93IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIb3N0V2luZG93KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgPSAwOwogCisg
ICAgdmlydHVhbCBSZW5kZXJpbmdCYWNrZW5kKiBzaGFyZWRSZW5kZXJpbmdCYWNrZW5kKCkgY29u
c3QgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgPSAwOwogCiAg
ICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCA9IDA7CkBAIC03
NSw1ICs3NywzIEBAIHB1YmxpYzoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEhvc3RXaW5kb3dfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U291cmNlc0NhaXJvLnR4dCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NvdXJjZXNDYWlyby50
eHQKaW5kZXggZjkwZDI0NmVjNTliNGY4YThlMTM4YjcyMjQwY2YyMDI1ODMxOTJjNC4uNmZhNGZm
ZTE0NjBlYTcxMzgyMWJjYTM2MjI2ZDI2YTk3ZTVkOTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CkBAIC0zMCw3ICszMCwxMCBAQCBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFkaWVudENhaXJvLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0R0xDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
K3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuY3Bw
CitwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVz
Q2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbnRSZWN0Q2Fpcm8uY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDQ4MjI0NGE0ZjJi
ZGNlZGU3Yzg3NGNkMWI1MGVhOTE0YjE0OTlhMjIuLmRkZDVjNmM3MzQ1YTJjMGQ4YmQ5YThlNGVm
YjRlM2NiOTk1ODdjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKQEAgLTE2NSwxMiArMTY1LDcgQEAgTmF0aXZlSW1hZ2VQdHIgQml0
bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lUmVzcGVjdGluZ09yaWVudGF0aW9u
KGNvbnMKICAgICAgICAgcmV0dXJuIGltYWdlOwogCiAgICAgYnVmZmVyLT5jb250ZXh0KCkuZHJh
d05hdGl2ZUltYWdlKGltYWdlLCByZWN0LnNpemUoKSwgcmVjdCwgcmVjdCwgeyBvcmllbnRhdGlv
biB9KTsKLQotI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKQogICAgIHJldHVybiBJbWFnZUJ1
ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwotI2VsaWYgVVNFKENB
SVJPKQotICAgIHJldHVybiBidWZmZXItPm5hdGl2ZUltYWdlKCk7Ci0jZW5kaWYKIH0KIAogI2lm
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHR1YWxJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29udGV4dHVhbEltYWdlQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhmMzI3ODIxMDVhODRlOTI1NjIw
NTJiOWQ0YzcwYWQ2ZjY1ODk0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbnRleHR1YWxJbWFnZUJ1ZmZlci5oCkBAIC0wLDAgKzEsMTgxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4K
K2NsYXNzIENvbnRleHR1YWxJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7CitwdWJs
aWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29udGV4dHVhbElt
YWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIGF1dG8g
YmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBob3N0V2luZG93KTsKKyAgICAgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJUeXBlPihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2Fy
ZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb250ZXh0dWFsSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIGF1dG8gYmFja2VuZCA9
IEJhY2tlbmRUeXBlOjpjcmVhdGUoc2l6ZSwgY29udGV4dCk7CisgICAgICAgIGlmICghYmFja2Vu
ZCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyVHlwZT4obmV3IEltYWdlQnVmZmVyVHlwZShXVEZNb3ZlKGJhY2tl
bmQpLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSk7CisgICAgfQorCitw
cm90ZWN0ZWQ6CisgICAgQ29udGV4dHVhbEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxCYWNr
ZW5kVHlwZT4mJiBiYWNrZW5kKQorICAgICAgICA6IG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQp
KQorICAgIHsKKyAgICB9CisKKyAgICBDb250ZXh0dWFsSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CisKKyAgICB2aXJ0dWFsIEJhY2tlbmRUeXBlKiBlbnN1cmVCYWNrZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrZW5kLmdldCgpOyB9CisKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBj
b25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYmFja2VuZCk7CisgICAgICAg
IHJldHVybiBtX2JhY2tlbmQtPmNvbnRleHQoKTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoQ29u
dGV4dCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7Cisg
ICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgfQorCisgICAgQWZmaW5lVHJh
bnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQt
PmJhc2VUcmFuc2Zvcm0oKTsgfQorICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCk7IH0KKyAgICBJbnRTaXplIGJh
Y2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9iYWNrZW5kLT5iYWNrZW5kU2l6
ZSgpOyB9CisgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKTsgfQorCisgICAgc2l6ZV90IG1lbW9yeUNv
c3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQtPm1lbW9yeUNvc3QoKTsgfQor
ICAgIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2JhY2tlbmQtPmV4dGVybmFsTWVtb3J5Q29zdCgpOyB9CisKKyAgICBOYXRpdmVJbWFnZVB0ciBj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IgPSBDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY29uc3RfY2FzdDxDb250ZXh0
dWFsSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBy
ZXR1cm4gbV9iYWNrZW5kLT5jb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKKyAgICB9CisK
KyAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlv
ciA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRp
b24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgY29uc3RfY2FzdDxDb250ZXh0dWFsSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hEcmF3aW5n
Q29udGV4dCgpOworICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5jb3B5SW1hZ2UoY29weUJlaGF2
aW9yLCBwcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIH0KKworICAgIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBt
X2JhY2tlbmQtPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
KyAgICB9CisKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKTsKKyAgICAgICAgbV9iYWNrZW5kLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
KyAgICB9CisKKyAgICBOYXRpdmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJu
IG1fYmFja2VuZC0+c2lua0ludG9OYXRpdmVJbWFnZSgpOworICAgIH0KKworICAgIFJlZlB0cjxJ
bWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9u
ID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGZsdXNo
RHJhd2luZ0NvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIG1fYmFja2VuZC0+c2lua0ludG9JbWFn
ZShwcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIH0KKworICAgIHZvaWQgZHJhd0NvbnN1bWluZyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAg
ICAgICBtX2JhY2tlbmQtPmRyYXdDb25zdW1pbmcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2so
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAg
ICBtX2JhY2tlbmQtPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKKyAgICB9CisKKyAgICB2b2lk
IHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNl
IGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZmx1c2hEcmF3aW5nQ29u
dGV4dCgpOworICAgICAgICBtX2JhY2tlbmQtPnRyYW5zZm9ybUNvbG9yU3BhY2Uoc3JjQ29sb3JT
cGFjZSwgZGVzdENvbG9yU3BhY2UpOworICAgIH0KKworICAgIFN0cmluZyB0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJl
c29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgY29uc3RfY2FzdDxDb250ZXh0dWFsSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hDb250ZXh0
KCk7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPnRvRGF0YVVSTChtaW1lVHlwZSwgcXVhbGl0
eSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gdG9E
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdU
Rjo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNvbnN0X2Nhc3Q8Q29u
dGV4dHVhbEltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoQ29udGV4dCgpOworICAgICAgICByZXR1
cm4gbV9iYWNrZW5kLT50b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOworICAgIH0KKworICAgIFZl
Y3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGNvbnN0X2Nhc3Q8Q29udGV4dHVhbEltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoQ29udGV4dCgp
OworICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT50b0JHUkFEYXRhKCk7CisgICAgfQorCisgICAg
UmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgY29uc3RfY2FzdDxDb250ZXh0dWFsSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hD
b250ZXh0KCk7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPmdldEltYWdlRGF0YShvdXRwdXRG
b3JtYXQsIHNyY1JlY3QpOworICAgIH0KKworICAgIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJl
bXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9KSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgZmx1c2hDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2Vu
ZC0+cHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2lu
dCk7CisgICAgfQorCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92
ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5wbGF0Zm9ybUxheWVyKCk7
CisgICAgfQorCisgICAgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wmIGNvbnRleHQsIEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBkZXN0
aW5hdGlvblRleHR1cmUsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4g
bV9iYWNrZW5kLT5jb3B5VG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGFyZ2V0LCBkZXN0aW5h
dGlvblRleHR1cmUsIGludGVybmFsZm9ybWF0LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7Cisg
ICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiBtX2JhY2tlbmQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRi
MGYwZGZiYzQ3Y2ExMmQ3M2M0Mzc4NmVhMWE4OTc5ZmQwYjU0NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIu
aApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29udGV4dHVhbEltYWdlQnVmZmVy
LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgorY2xhc3MgRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb250ZXh0dWFsSW1hZ2VCdWZmZXI8QmFja2VuZFR5
cGU+ICwgcHVibGljIERpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dCB7CisgICAgdXNpbmcgQmFz
ZUNvbnRleHR1YWxJbWFnZUJ1ZmZlciA9IENvbnRleHR1YWxJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlw
ZT47CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBCYXNlQ29udGV4dHVhbEltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCBob3N0V2luZG93LCBzaXplKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gQmFzZUNvbnRleHR1YWxJ
bWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPERpc3BsYXlMaXN0SW1hZ2VCdWZmZXI+KHNpemUs
IGNvbnRleHQsIHNpemUpOworICAgIH0KKworICAgIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc3Rk
Ojp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUm
IHNpemUpCisgICAgICAgIDogQmFzZUNvbnRleHR1YWxJbWFnZUJ1ZmZlcihXVEZNb3ZlKGRhdGFC
YWNrZW5kKSkKKyAgICAgICAgLCBEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQoc2l6ZSkKKyAg
ICB7CisgICAgfQorCisgICAgfkRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoKQorICAgIHsKKyAgICAg
ICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgIH0KKworICAgIERpc3BsYXlMaXN0OjpEcmF3
aW5nQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CisK
KyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dDo6Y29udGV4dCgpOworICAg
IH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OnJlcGxheURpc3BsYXlMaXN0KEJhc2VD
b250ZXh0dWFsSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSk7CisgICAgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCmluZGV4IDIwYjk4MTBjMjkxNDFlNDczZTZhODg4YmM4MGMxNDE3YWVhYzJm
YWYuLmFmYThiNWE1ZDA4ZTU2YTg2M2Q0MGE5ZGRlODE1OTUwZDI4MmRjNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJr
aXQub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEx
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOCw0NCArMjgsNjcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogCi0jaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUg
IlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRMZW5n
dGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRBcmVhID0gTWF4Q2xhbXBl
ZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChJbWFnZUJ1ZmZlcik7Ci0KIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIobmV3IEltYWdlQnVmZmVyKHNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRv
dywgc3VjY2VzcykpOwotICAgIGlmICghc3VjY2VzcykKKyAgICByZXR1cm4gUmVuZGVyaW5nQmFj
a2VuZDo6c2hhcmVkUmVuZGVyaW5nQmFja2VuZChob3N0V2luZG93KS5jcmVhdGVJbWFnZUJ1ZmZl
cihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGhvc3RX
aW5kb3cpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIFJlbmRlcmluZ0JhY2tlbmQ6OnNoYXJlZFJlbmRlcmluZ0JhY2tl
bmQoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBjb250ZXh0KTsKK30KKworc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAg
ICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBidWZmZXI7CisKKyAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0
aWJsZUJ1ZmZlclNpemUoc2l6ZSwgY29udGV4dCk7CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzY2FsZWRTaXplLCBjb250ZXh0KTsKKyAgICBpZiAoIWltYWdl
QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFNldCB1cCBhIGNvcnJl
c3BvbmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRoZSBncmFwaGljcyBjb250ZXh0LgorICAgIGltYWdl
QnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAvIHNpemUpOworICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKKwogfQogCi0jaWYgVVNFKERJUkVDVDJEKQotc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENv
bnRleHQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewotICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyKG5ldyBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHJlbmRlcmluZ01vZGUsIGhvc3RXaW5kb3csIHRhcmdldENvbnRleHQsIHN1Y2Nlc3Mp
KTsKLSAgICBpZiAoIXN1Y2Nlc3MpCisgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYnVmZmVyOworCisgICAgSW50U2l6ZSBzY2FsZWRT
aXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQpOwor
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKHNjYWxlZFNpemUsIDEsIGNvbG9yU3BhY2UsIGNvbnRleHQpOworICAgIGlmICghaW1hZ2VC
dWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gU2V0IHVwIGEgY29ycmVz
cG9uZGluZyBzY2FsZSBmYWN0b3Igb24gdGhlIGdyYXBoaWNzIGNvbnRleHQuCisgICAgaW1hZ2VC
dWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6ZSk7CisgICAgcmV0dXJuIGlt
YWdlQnVmZmVyOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKIH0KLSNl
bmRpZgogCiBib29sIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNp
emUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KICAgICByZXR1cm4gZmxvb3JmKHNpemUuaGVpZ2h0KCkpICogZmxvb3JmKHNpemUud2lk
dGgoKSkgPiBNYXhDbGFtcGVkQXJlYTsKIH0KIApAQCAtMTA1LDkxICsxMjgsMTIgQEAgRmxvYXRS
ZWN0IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
cmV0dXJuIEZsb2F0UmVjdChyZWN0LmxvY2F0aW9uKCksIGNsYW1wZWRTaXplKHJlY3Quc2l6ZSgp
KSk7CiB9CiAKLSNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotVmVjdG9yPHVpbnQ4X3Q+IElt
YWdlQnVmZmVyOjp0b0JHUkFEYXRhKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMgZm9yIG90aGVyIGJhY2tlbmRzLgotICAgIHJldHVybiB7IH07Ci19Ci0jZW5kaWYKLQot
I2lmICEoVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpKQotdm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNm
b3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0Q29s
b3JTcGFjZSkKLXsKLSAgICBpZiAoc3JjQ29sb3JTcGFjZSA9PSBkc3RDb2xvclNwYWNlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBvbmx5IHNSR0IgPC0+IGxpbmVhclJHQiBhcmUgc3VwcG9y
dGVkIGF0IHRoZSBtb21lbnQKLSAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6
TGluZWFyUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6U1JHQikKLSAgICAgICAg
fHwgKGRzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6TGluZWFyUkdCICYmIGRzdENvbG9yU3Bh
Y2UgIT0gQ29sb3JTcGFjZTo6U1JHQikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChkc3RD
b2xvclNwYWNlID09IENvbG9yU3BhY2U6OkxpbmVhclJHQikgewotICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGxpbmVhclJnYkxVVCA9IFtdIHsKLSAgICAgICAg
ICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBhcnJheTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewotICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9y
ID0gaSAvIDI1NS4wZjsKLSAgICAgICAgICAgICAgICBjb2xvciA9IHNSR0JUb0xpbmVhckNvbG9y
Q29tcG9uZW50KGNvbG9yKTsKLSAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gYXJyYXk7Ci0gICAgICAgIH0oKTsKLSAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1D
b2xvclNwYWNlKGxpbmVhclJnYkxVVCk7Ci0gICAgfSBlbHNlIGlmIChkc3RDb2xvclNwYWNlID09
IENvbG9yU3BhY2U6OlNSR0IpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWlu
dDhfdCwgMjU2PiBkZXZpY2VSZ2JMVVQ9IFtdIHsKLSAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWlu
dDhfdCwgMjU2PiBhcnJheTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAy
NTY7IGkrKykgewotICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yID0gaSAvIDI1NS4wZjsKLSAg
ICAgICAgICAgICAgICBjb2xvciA9IGxpbmVhclRvU1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yKTsK
LSAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kKGNv
bG9yICogMjU1KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gYXJyYXk7Ci0g
ICAgICAgIH0oKTsKLSAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGRldmljZVJn
YkxVVCk7Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQotCi1pbmxpbmUgdm9pZCBJbWFn
ZUJ1ZmZlcjo6Z2VuZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKQotewotICAgIEludFJlY3Qg
bHVtaW5hbmNlUmVjdChJbnRQb2ludCgpLCBpbnRlcm5hbFNpemUoKSk7Ci0gICAgYXV0byBzcmNQ
aXhlbEFycmF5ID0gZ2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGx1bWluYW5jZVJlY3QpOwotICAg
IGlmICghc3JjUGl4ZWxBcnJheSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHVuc2lnbmVk
IHBpeGVsQXJyYXlMZW5ndGggPSBzcmNQaXhlbEFycmF5LT5sZW5ndGgoKTsKLSAgICBmb3IgKHVu
c2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsgcGl4ZWxPZmZzZXQgPCBwaXhlbEFycmF5TGVuZ3RoOyBw
aXhlbE9mZnNldCArPSA0KSB7Ci0gICAgICAgIHVpbnQ4X3QgYSA9IHNyY1BpeGVsQXJyYXktPml0
ZW0ocGl4ZWxPZmZzZXQgKyAzKTsKLSAgICAgICAgaWYgKCFhKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIHVpbnQ4X3QgciA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxPZmZzZXQp
OwotICAgICAgICB1aW50OF90IGcgPSBzcmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsT2Zmc2V0ICsg
MSk7Ci0gICAgICAgIHVpbnQ4X3QgYiA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxPZmZzZXQg
KyAyKTsKLSAgICAgICAgCi0gICAgICAgIGRvdWJsZSBsdW1hID0gKHIgKiAwLjIxMjUgKyBnICog
MC43MTU0ICsgYiAqIDAuMDcyMSkgKiAoKGRvdWJsZSlhIC8gMjU1LjApOwotICAgICAgICBzcmNQ
aXhlbEFycmF5LT5zZXQocGl4ZWxPZmZzZXQgKyAzLCBsdW1hKTsKLSAgICB9Ci0gICAgcHV0Qnl0
ZUFycmF5KCpzcmNQaXhlbEFycmF5LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIGx1bWluYW5jZVJlY3Quc2l6ZSgpLCBsdW1pbmFuY2VSZWN0LCBJbnRQb2ludCgpKTsK
LX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6Y29udmVydFRvTHVtaW5hbmNlTWFzaygpCi17Ci0gICAg
Ly8gQWRkIHBsYXRmb3JtIHNwZWNpZmljIGZ1bmN0aW9ucyB3aXRoIHBsYXRmb3JtQ29udmVydFRv
THVtaW5hbmNlTWFzayBoZXJlIGxhdGVyLgotICAgIGdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7Ci19Ci0KLSNpZiAhVVNFKENBSVJPKQotUGxhdGZvcm1MYXllciogSW1hZ2VCdWZmZXI6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotCi1ib29sIEltYWdl
QnVmZmVyOjpjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBH
Q0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCitJbnRTaXpl
IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgLy8gRW5sYXJnZSB0aGUgYnVmZmVyIHNpemUgaWYgdGhlIGNvbnRleHQncyB0cmFuc2Zvcm0g
aXMgc2NhbGluZyBpdCBzbyB3ZSBuZWVkIGEgaGlnaGVyCisgICAgLy8gcmVzb2x1dGlvbiB0aGFu
IG9uZSBwaXhlbCBwZXIgdW5pdC4KKyAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBj
b250ZXh0LnNjYWxlRmFjdG9yKCkpOwogfQotI2VuZGlmCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKIHsKQEAgLTIwNiw1MCArMTUwLDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
SW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0CiAgICAg
cmV0dXJuIGJ1ZmZlcjsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKIHsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VC
dWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQpOwotCi0gICAgYXV0byBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAx
LCBjb2xvclNwYWNlLCBjb250ZXh0KTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICAvLyBTZXQgdXAgYSBjb3JyZXNwb25kaW5nIHNjYWxlIGZhY3RvciBv
biB0aGUgZ3JhcGhpY3MgY29udGV4dC4KLSAgICBidWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2Fs
ZWRTaXplIC8gc2l6ZSk7Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKLX0KLQotc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0jaWYgVVNFKERJUkVDVDJE
KQotICAgIHJldHVybiBjcmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksICZjb250
ZXh0LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwotI2Vsc2UKLSAgICByZXR1cm4gY3Jl
YXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UpOwotI2VuZGlmCisgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5rSW50b05hdGl2ZUlt
YWdlKCk7CiB9CiAKLUludFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorUmVm
UHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0
aW9uKQogewotICAgIC8vIEVubGFyZ2UgdGhlIGJ1ZmZlciBzaXplIGlmIHRoZSBjb250ZXh0J3Mg
dHJhbnNmb3JtIGlzIHNjYWxpbmcgaXQgc28gd2UgbmVlZCBhIGhpZ2hlcgotICAgIC8vIHJlc29s
dXRpb24gdGhhbiBvbmUgcGl4ZWwgcGVyIHVuaXQuCi0gICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6
ZShzaXplICogY29udGV4dC5zY2FsZUZhY3RvcigpKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXIt
PnNpbmtJbnRvSW1hZ2UocHJlc2VydmVSZXNvbHV0aW9uKTsKIH0KIAotI2lmICFVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotc2l6ZV90IEltYWdlQnVmZmVyOjptZW1vcnlDb3N0
KCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIC8vIG1lbW9yeUNvc3QoKSBtYXkg
YmUgaW52b2tlZCBjb25jdXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8g
YmUgY2FyZWZ1bCBhYm91dCB3aGF0IGRhdGEgd2UgYWNjZXNzIGhlcmUgYW5kIGhvdy4KLSAgICAv
LyBJdCdzIHNhZmUgdG8gYWNjZXNzIGludGVybmFsU2l6ZSgpIGJlY2F1c2UgaXQgZG9lc24ndCBk
byBhbnkgcG9pbnRlciBjaGFzaW5nLgotICAgIHJldHVybiA0ICogaW50ZXJuYWxTaXplKCkud2lk
dGgoKSAqIGludGVybmFsU2l6ZSgpLmhlaWdodCgpOworICAgIGltYWdlQnVmZmVyLT5kcmF3Q29u
c3VtaW5nKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAotc2l6ZV90
IEltYWdlQnVmZmVyOjpleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdAotewotICAgIHJldHVybiAw
OwotfQotI2VuZGlmCi0KLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDdiNzcyYTJmMmQ4ZjZl
NzU3N2VhZmM2ZGIyMjkzMDZiN2NmZWRmOWIuLjM1NTFmNDVmODJiZWJhMzdmMjk3MWEwOTUwN2Qy
YjVmMmY1MmQ1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTYwICsyNyw4MyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkFscGhhUHJlbXVs
dGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCi0jaW5jbHVkZSAiR3JhcGhp
Y3NUeXBlcy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgotI2luY2x1ZGUgIkltYWdl
QnVmZmVyRGF0YS5oIgotI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCi0jaW5jbHVk
ZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCi0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1j
bGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKLWNsYXNzIEltYWdlOwotY2xhc3MgSW1hZ2VE
YXRhOwotY2xhc3MgSW50UG9pbnQ7Ci1jbGFzcyBJbnRSZWN0OwotY2xhc3MgSG9zdFdpbmRvdzsK
LQotZW51bSBCYWNraW5nU3RvcmVDb3B5IHsKLSAgICBDb3B5QmFja2luZ1N0b3JlLCAvLyBHdWFy
YW50ZWUgc3Vic2VxdWVudCBkcmF3cyBkb24ndCBhZmZlY3QgdGhlIGNvcHkuCi0gICAgRG9udENv
cHlCYWNraW5nU3RvcmUgLy8gU3Vic2VxdWVudCBkcmF3cyBtYXkgYWZmZWN0IHRoZSBjb3B5Lgot
fTsKLQotZW51bSBjbGFzcyBQcmVzZXJ2ZVJlc29sdXRpb24gewotICAgIE5vLAotICAgIFllcywK
LX07CituYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRHJhd2luZ0NvbnRleHQ7Cit9CiAK
IGNsYXNzIEltYWdlQnVmZmVyIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChJ
bWFnZUJ1ZmZlciwgV0VCQ09SRV9FWFBPUlQpOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElt
YWdlQnVmZmVyKTsKLSAgICBmcmllbmQgY2xhc3MgSU9TdXJmYWNlOwogcHVibGljOgotICAgIC8v
IFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0g
MSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVs
bHB0cik7Ci0jaWYgVVNFKERJUkVDVDJEKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJp
bmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAx
LCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxs
cHRyKTsKLSNlbmRpZgotCi0gICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxl
IHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhp
cyBuZXcgb25lLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1
ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBDcmVhdGUgYW4g
aW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCwgd2l0aCBzdWl0YWJsZSBy
ZXNvbHV0aW9uIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMg
Y29udGV4dC4KICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0Jik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCi0gICAgc3RhdGljIEludFNpemUg
Y29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0Jik7CisgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdoZW4gY2xhbXBpbmcgdGhl
IEltYWdlQnVmZmVyIHdoaWNoIGlzIGNyZWF0ZWQgZm9yIGZpbHRlciwgbWFza2VyIG9yIGNsaXBw
ZXIuCisgICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xhbXBpbmcoY29uc3QgRmxvYXRTaXplJik7
CisgICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xhbXBpbmcoY29uc3QgRmxvYXRTaXplJiwgRmxv
YXRTaXplJiBzY2FsZSk7CisgICAgc3RhdGljIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZShjb25zdCBG
bG9hdFNpemUmKTsKKyAgICBzdGF0aWMgRmxvYXRTaXplIGNsYW1wZWRTaXplKGNvbnN0IEZsb2F0
U2l6ZSYsIEZsb2F0U2l6ZSYgc2NhbGUpOworICAgIHN0YXRpYyBGbG9hdFJlY3QgY2xhbXBlZFJl
Y3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIo
KTsKKyAgICBzdGF0aWMgSW50U2l6ZSBjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIC8vIFRoZSBhY3R1YWwgcmVz
b2x1dGlvbiBvZiB0aGUgYmFja2luZyBzdG9yZQotICAgIGNvbnN0IEludFNpemUmIGludGVybmFs
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIGNvbnN0IEludFNpemUmIGxvZ2lj
YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsU2l6ZTsgfQotICAgIGZsb2F0IHJlc29s
dXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x1dGlvblNjYWxlOyB9CisgICAgdmly
dHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGZsdXNoQ29udGV4dCgpID0gMDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgRGlzcGxheUxpc3Q6OkRyYXdpbmdD
b250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dCgpIHsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUs
IFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2Uoc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNv
bHV0aW9uOjpObyk7CisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgPSAwOworICAgIAorICAgIHZpcnR1YWwg
c2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJu
YWxNZW1vcnlDb3N0KCkgY29uc3QgPSAwOwogCi0gICAgZW51bSBDb29yZGluYXRlU3lzdGVtIHsg
TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0sIEJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0gfTsK
KyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAotICAg
IFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0
IEludFJlY3QmLCBJbnRTaXplKiBwaXhlbEFycmF5RGltZW5zaW9ucyA9IG51bGxwdHIsIENvb3Jk
aW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7Ci0gICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJl
Y3QmLCBJbnRTaXplKiBwaXhlbEFycmF5RGltZW5zaW9ucyA9IG51bGxwdHIsIENvb3JkaW5hdGVT
eXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9y
U3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCi0gICAgdm9pZCBwdXRCeXRlQXJyYXko
Y29uc3QgVWludDhDbGFtcGVkQXJyYXkmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGJ1ZmZlckZv
cm1hdCwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxD
b29yZGluYXRlU3lzdGVtKTsKLSAgICAKLSAgICB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2so
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKIAot
ICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2
ZVJlc29sdXRpb246Ok5vKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9w
dCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdDsKKyAgICBz
dGF0aWMgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlPiBz
aW5rSW50b0ltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIFByZXNlcnZlUmVzb2x1
dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pOworICAgIHN0YXRpYyB2b2lkIGRyYXdDb25z
dW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRS
ZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAK
LSNpZiBVU0UoQ0FJUk8pCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSBjb25zdDsK
LSNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JT
cGFjZSwgQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKSA9IDA7CiAKLSNpZiAhVVNFKENHKQotICAg
IEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJh
bnNmb3JtKCk7IH0KLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmND
b2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpOwotICAgIHZvaWQgcGxhdGZvcm1U
cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiYpOwotI2Vs
c2UKLSAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIEFm
ZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVp
Z2h0KCkpOyB9Ci0jZW5kaWYKLSAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29u
c3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0
aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVj
dG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3Rv
cjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3QgPSAwOwogCi0gICAgc2l6ZV90IG1lbW9yeUNv
c3QoKSBjb25zdDsKLSAgICBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Q7CisgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRG
b3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQgPSB7IH0pID0gMDsKIAogICAgIC8vIEZJWE1FOiBjdXJyZW50IGlt
cGxlbWVudGF0aW9ucyBvZiB0aGlzIG1ldGhvZCBoYXZlIHRoZSByZXN0cmljdGlvbiB0aGF0IHRo
ZXkgb25seSB3b3JrCiAgICAgLy8gd2l0aCB0ZXh0dXJlcyB0aGF0IGFyZSBSR0Igb3IgUkdCQSBm
b3JtYXQsIGFuZCBVTlNJR05FRF9CWVRFIHR5cGUuCi0gICAgYm9vbCBjb3B5VG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVj
dCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9i
amVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCA9IDA7CiAKLSAgICAvLyBUaGVzZSBmdW5j
dGlvbnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3Jl
YXRlZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KLSAgICBzdGF0aWMgYm9vbCBzaXpl
TmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKLSAgICBzdGF0aWMgYm9vbCBzaXplTmVl
ZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmLCBGbG9hdFNpemUmIHNjYWxlKTsKLSAgICBzdGF0
aWMgRmxvYXRTaXplIGNsYW1wZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOwotICAgIHN0YXRpYyBG
bG9hdFNpemUgY2xhbXBlZFNpemUoY29uc3QgRmxvYXRTaXplJiwgRmxvYXRTaXplJiBzY2FsZSk7
Ci0gICAgc3RhdGljIEZsb2F0UmVjdCBjbGFtcGVkUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLQot
cHJpdmF0ZToKLSNpZiBVU0UoQ0cpCi0gICAgLy8gVGhlIHJldHVybmVkIGltYWdlIG1pZ2h0IGJl
IGxhcmdlciB0aGFuIHRoZSBpbnRlcm5hbFNpemUoKS4gSWYgeW91IHdhbnQgdGhlIHNtYWxsZXIK
LSAgICAvLyBpbWFnZSwgY3JvcCB0aGUgcmVzdWx0LgotICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0OwotICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc2lua0ludG9OYXRpdmVJbWFn
ZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKLSAgICB2b2lkIGZsdXNoQ29udGV4dCgp
IGNvbnN0OwotI2VsaWYgVVNFKERJUkVDVDJEKQotICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdDsK
LSAgICBzdGF0aWMgQ09NUHRyPElEMkQxQml0bWFwPiBzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4pOwotICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7
Ci0jZW5kaWYKK3Byb3RlY3RlZDoKKyAgICBJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKICAgICAK
LSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKLQotICAgIHN0YXRpYyB2b2lkIGRyYXdDb25zdW1p
bmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0
KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Ci0KLSAg
ICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzaygpOwotCi0gICAgZnJp
ZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLSAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1h
Z2U7Ci0gICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwotICAgIGZyaWVu
ZCBjbGFzcyBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U7Ci0gICAgZnJpZW5kIGNsYXNzIEdyYWRp
ZW50SW1hZ2U7Ci0gICAgZnJpZW5kIGNsYXNzIEN1c3RvbVBhaW50SW1hZ2U7Ci0gICAgZnJpZW5k
IGNsYXNzIEJpdG1hcEltYWdlOwotCi1wcml2YXRlOgotICAgIEltYWdlQnVmZmVyRGF0YSBtX2Rh
dGE7Ci0gICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgSW50U2l6ZSBtX2xvZ2ljYWxTaXplOwotICAg
IGZsb2F0IG1fcmVzb2x1dGlvblNjYWxlOwotCi0gICAgLy8gVGhpcyBjb25zdHJ1Y3RvciB3aWxs
IHBsYWNlIGl0cyBzdWNjZXNzIGludG8gdGhlIGdpdmVuIG91dC12YXJpYWJsZQotICAgIC8vIHNv
IHRoYXQgY3JlYXRlKCkga25vd3Mgd2hlbiBpdCBzaG91bGQgcmV0dXJuIGZhaWx1cmUuCi0gICAg
V0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93Kiwg
Ym9vbCYgc3VjY2Vzcyk7Ci0jaWYgVVNFKENHKQotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNwYWNlUmVmLCBSZW5kZXJpbmdN
b2RlLCBjb25zdCBIb3N0V2luZG93KiwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gdG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0OwotI2VsaWYgVVNFKERJUkVDVDJE
KQotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyosIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCosIGJvb2wmIHN1Y2Nlc3MpOwotI2VuZGlmCisgICAgdmlydHVhbCBOYXRp
dmVJbWFnZVB0ciBzaW5rSW50b05hdGl2ZUltYWdlKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PEltYWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1
dGlvbjo6Tm8pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDYzYWE1ZGE2MjYyNTNiNTFkOTJm
ZWQ4MWFiY2FiZDI3NDNkZWU4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTAsMCArMSwyNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgorCisjaW5jbHVkZSAi
SW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCisgICAgOiBtX2xvZ2ljYWxTaXplKGxvZ2lj
YWxTaXplKQorICAgICwgbV9iYWNrZW5kU2l6ZShiYWNrZW5kU2l6ZSkKKyAgICAsIG1fcmVzb2x1
dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKKyAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNl
KQoreworfQorCitJbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNp
emUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCit7CisgICAg
RmxvYXRTaXplIHNjYWxlZFNpemUgPSB7IGNlaWxmKHJlc29sdXRpb25TY2FsZSAqIHNpemUud2lk
dGgoKSksIGNlaWxmKHJlc29sdXRpb25TY2FsZSAqIHNpemUuaGVpZ2h0KCkpIH07CisgICAgaWYg
KHNjYWxlZFNpemUuaXNFbXB0eSgpIHx8ICFzY2FsZWRTaXplLmlzRXhwcmVzc2libGVBc0ludFNp
emUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBJ
bnRTaXplKHNjYWxlZFNpemUpOworCisgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZs
b3c+IGJ5dGVzUGVyUm93ID0gNCAqIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93Pihi
YWNrZW5kU2l6ZS53aWR0aCgpKTsKKyAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92ZXJm
bG93PiBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5k
U2l6ZS5oZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKKyAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZs
b3dlZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIGJhY2tlbmRTaXplOwor
fQorCitOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1h
Z2UoKQoreworICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
OworfQorCitSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9JbWFnZShQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQoreworICAgIHJldHVybiBjb3B5
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUsIHByZXNlcnZlUmVzb2x1dGlvbik7Cit9CisKK3Zv
aWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZHJhdyhk
ZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCit2b2lkIEltYWdl
QnVmZmVyQmFja2VuZDo6Y29udmVydFRvTHVtaW5hbmNlTWFzaygpCit7CisgICAgYXV0byBpbWFn
ZURhdGEgPSBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkLCBsb2dpY2FsUmVjdCgpKTsKKyAgICBpZiAoIWltYWdlRGF0YSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byogc3JjUGl4ZWxBcnJheSA9IGltYWdlRGF0YS0+ZGF0YSgpOworICAgIHVu
c2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBzcmNQaXhlbEFycmF5LT5sZW5ndGgoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsgcGl4ZWxPZmZzZXQgPCBwaXhlbEFycmF5TGVu
Z3RoOyBwaXhlbE9mZnNldCArPSA0KSB7CisgICAgICAgIHVpbnQ4X3QgYSA9IHNyY1BpeGVsQXJy
YXktPml0ZW0ocGl4ZWxPZmZzZXQgKyAzKTsKKyAgICAgICAgaWYgKCFhKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIHVpbnQ4X3QgciA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxP
ZmZzZXQpOworICAgICAgICB1aW50OF90IGcgPSBzcmNQaXhlbEFycmF5LT5pdGVtKHBpeGVsT2Zm
c2V0ICsgMSk7CisgICAgICAgIHVpbnQ4X3QgYiA9IHNyY1BpeGVsQXJyYXktPml0ZW0ocGl4ZWxP
ZmZzZXQgKyAyKTsKKworICAgICAgICBkb3VibGUgbHVtYSA9IChyICogMC4yMTI1ICsgZyAqIDAu
NzE1NCArIGIgKiAwLjA3MjEpICogKChkb3VibGUpYSAvIDI1NS4wKTsKKyAgICAgICAgc3JjUGl4
ZWxBcnJheS0+c2V0KHBpeGVsT2Zmc2V0ICsgMywgbHVtYSk7CisgICAgfQorCisgICAgcHV0SW1h
Z2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgKmltYWdlRGF0
YSwgbG9naWNhbFJlY3QoKSwgSW50UG9pbnQ6Onplcm8oKSk7Cit9CisKK1ZlY3Rvcjx1aW50OF90
PiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEodm9pZCogZGF0YSkgY29uc3QKK3sKKyAg
ICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KDQgKiBtX2xvZ2ljYWxTaXplLmFyZWEoKS51bnNhZmVH
ZXQoKSk7CisgICAgc2l6ZV90IGRlc3RCeXRlc1BlclJvdyA9IG1fbG9naWNhbFNpemUud2lkdGgo
KSAqIDQ7CisgICAgc2l6ZV90IHNyY0J5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKKworICAg
IHVpbnQ4X3QqIHNyY1Jvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKTsKKwor
ICAgIGNvcHlJbWFnZVBpeGVscygKKyAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZCwgYmFja2VuZENvbG9yRm9ybWF0KCksIHNyY0J5dGVzUGVyUm93LCBzcmNSb3dz
LAorICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIENvbG9y
Rm9ybWF0OjpCR1JBLCBkZXN0Qnl0ZXNQZXJSb3csIHJlc3VsdC5kYXRhKCksIG1fbG9naWNhbFNp
emUpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlQ
cmVtdWx0aXBsaWVkVG9QcmVtdWx0aXBsaWVkKENvbG9yRm9ybWF0IHNyY0NvbG9yRm9ybWF0LCBj
b25zdCB1aW50OF90KiBzcmNQaXhlbCwgQ29sb3JGb3JtYXQgZGVzdENvbG9yRm9ybWF0LCB1aW50
OF90KiBkZXN0UGl4ZWwpCit7CisgICAgdWludDhfdCBhbHBoYSA9IHNyY1BpeGVsWzNdOworICAg
IGlmICghYWxwaGEpIHsKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGRlc3RQ
aXhlbClbMF0gPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNyY0NvbG9y
Rm9ybWF0ID09IGRlc3RDb2xvckZvcm1hdCkgeworICAgICAgICByZWludGVycHJldF9jYXN0PHVp
bnQzMl90Kj4oZGVzdFBpeGVsKVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
PihzcmNQaXhlbClbMF07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTd2FwIHBp
eGVsIGNoYW5uZWxzIEJHUkEgPC0+IFJHQkEuCisgICAgZGVzdFBpeGVsWzBdID0gc3JjUGl4ZWxb
Ml07CisgICAgZGVzdFBpeGVsWzFdID0gc3JjUGl4ZWxbMV07CisgICAgZGVzdFBpeGVsWzJdID0g
c3JjUGl4ZWxbMF07CisgICAgZGVzdFBpeGVsWzNdID0gc3JjUGl4ZWxbM107Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFRvVW5wcmVtdWx0aXBsaWVkKENvbG9yRm9y
bWF0IHNyY0NvbG9yRm9ybWF0LCBjb25zdCB1aW50OF90KiBzcmNQaXhlbCwgQ29sb3JGb3JtYXQg
ZGVzdENvbG9yRm9ybWF0LCB1aW50OF90KiBkZXN0UGl4ZWwpCit7CisgICAgdWludDhfdCBhbHBo
YSA9IHNyY1BpeGVsWzNdOworICAgIGlmICghYWxwaGEgfHwgYWxwaGEgPT0gMjU1KSB7CisgICAg
ICAgIGNvcHlQcmVtdWx0aXBsaWVkVG9QcmVtdWx0aXBsaWVkKHNyY0NvbG9yRm9ybWF0LCBzcmNQ
aXhlbCwgZGVzdENvbG9yRm9ybWF0LCBkZXN0UGl4ZWwpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKHNyY0NvbG9yRm9ybWF0ID09IGRlc3RDb2xvckZvcm1hdCkgeworICAgICAg
ICBkZXN0UGl4ZWxbMF0gPSAoc3JjUGl4ZWxbMF0gKiAyNTUpIC8gYWxwaGE7CisgICAgICAgIGRl
c3RQaXhlbFsxXSA9IChzcmNQaXhlbFsxXSAqIDI1NSkgLyBhbHBoYTsKKyAgICAgICAgZGVzdFBp
eGVsWzJdID0gKHNyY1BpeGVsWzJdICogMjU1KSAvIGFscGhhOworICAgICAgICBkZXN0UGl4ZWxb
M10gPSBhbHBoYTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFN3YXAgcGl4ZWwg
Y2hhbm5lbHMgQkdSQSA8LT4gUkdCQS4KKyAgICBkZXN0UGl4ZWxbMF0gPSAoc3JjUGl4ZWxbMl0g
KiAyNTUpIC8gYWxwaGE7CisgICAgZGVzdFBpeGVsWzFdID0gKHNyY1BpeGVsWzFdICogMjU1KSAv
IGFscGhhOworICAgIGRlc3RQaXhlbFsyXSA9IChzcmNQaXhlbFswXSAqIDI1NSkgLyBhbHBoYTsK
KyAgICBkZXN0UGl4ZWxbM10gPSBhbHBoYTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlV
bnByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQoQ29sb3JGb3JtYXQgc3JjQ29sb3JGb3JtYXQs
IGNvbnN0IHVpbnQ4X3QqIHNyY1BpeGVsLCBDb2xvckZvcm1hdCBkZXN0Q29sb3JGb3JtYXQsIHVp
bnQ4X3QqIGRlc3RQaXhlbCkKK3sKKyAgICB1aW50OF90IGFscGhhID0gc3JjUGl4ZWxbM107Cisg
ICAgaWYgKCFhbHBoYSB8fCBhbHBoYSA9PSAyNTUpIHsKKyAgICAgICAgY29weVByZW11bHRpcGxp
ZWRUb1ByZW11bHRpcGxpZWQoc3JjQ29sb3JGb3JtYXQsIHNyY1BpeGVsLCBkZXN0Q29sb3JGb3Jt
YXQsIGRlc3RQaXhlbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3JjQ29s
b3JGb3JtYXQgPT0gZGVzdENvbG9yRm9ybWF0KSB7CisgICAgICAgIGRlc3RQaXhlbFswXSA9IChz
cmNQaXhlbFswXSAqIGFscGhhICsgMjU0KSAvIDI1NTsKKyAgICAgICAgZGVzdFBpeGVsWzFdID0g
KHNyY1BpeGVsWzFdICogYWxwaGEgKyAyNTQpIC8gMjU1OworICAgICAgICBkZXN0UGl4ZWxbMl0g
PSAoc3JjUGl4ZWxbMl0gKiBhbHBoYSArIDI1NCkgLyAyNTU7CisgICAgICAgIGRlc3RQaXhlbFsz
XSA9IGFscGhhOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU3dhcCBwaXhlbCBj
aGFubmVscyBCR1JBIDwtPiBSR0JBLgorICAgIGRlc3RQaXhlbFswXSA9IChzcmNQaXhlbFsyXSAq
IGFscGhhICsgMjU0KSAvIDI1NTsKKyAgICBkZXN0UGl4ZWxbMV0gPSAoc3JjUGl4ZWxbMV0gKiBh
bHBoYSArIDI1NCkgLyAyNTU7CisgICAgZGVzdFBpeGVsWzJdID0gKHNyY1BpeGVsWzBdICogYWxw
aGEgKyAyNTQpIC8gMjU1OworICAgIGRlc3RQaXhlbFszXSA9IGFscGhhOworfQorCit0ZW1wbGF0
ZTx2b2lkICgqY29weUZ1bmN0b3IpKENvbG9yRm9ybWF0LCBjb25zdCB1aW50OF90KiwgQ29sb3JG
b3JtYXQsIHVpbnQ4X3QqKT4KK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5SW1hZ2VQaXhlbHNVbmFj
Y2VsZXJhdGVkKAorICAgIENvbG9yRm9ybWF0IHNyY0NvbG9yRm9ybWF0LCB1bnNpZ25lZCBzcmNC
eXRlc1BlclJvdywgdWludDhfdCogc3JjUm93cywKKyAgICBDb2xvckZvcm1hdCBkZXN0Q29sb3JG
b3JtYXQsIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdywgdWludDhfdCogZGVzdFJvd3MsIGNvbnN0
IEludFNpemUmIHNpemUpCit7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gc2l6ZS53aWR0aCgp
ICogNDsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IHNpemUuaGVpZ2h0KCk7ICsreSkgeworICAg
ICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IGJ5dGVzUGVyUm93OyB4ICs9IDQpCisgICAgICAg
ICAgICBjb3B5RnVuY3RvcihzcmNDb2xvckZvcm1hdCwgJnNyY1Jvd3NbeF0sIGRlc3RDb2xvckZv
cm1hdCwgJmRlc3RSb3dzW3hdKTsKKyAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsK
KyAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OworICAgIH0KK30KKwordm9pZCBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvcHlJbWFnZVBpeGVscygKKyAgICBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIHNyY0FscGhhRm9ybWF0LCBDb2xvckZvcm1hdCBzcmNDb2xvckZvcm1hdCwgdW5zaWdu
ZWQgc3JjQnl0ZXNQZXJSb3csIHVpbnQ4X3QqIHNyY1Jvd3MsCisgICAgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBkZXN0QWxwaGFGb3JtYXQsIENvbG9yRm9ybWF0IGRlc3RDb2xvckZvcm1hdCwgdW5z
aWduZWQgZGVzdEJ5dGVzUGVyUm93LCB1aW50OF90KiBkZXN0Um93cywgY29uc3QgSW50U2l6ZSYg
c2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoc3JjQWxwaGFGb3JtYXQgPT0gZGVzdEFscGhhRm9ybWF0
KSB7CisgICAgICAgIEFTU0VSVChzcmNBbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkICYmIGRlc3RBbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkKTsKKyAgICAgICAgY29weUltYWdlUGl4ZWxzVW5hY2NlbGVy
YXRlZDxjb3B5UHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZD4oc3JjQ29sb3JGb3JtYXQsIHNy
Y0J5dGVzUGVyUm93LCBzcmNSb3dzLCBkZXN0Q29sb3JGb3JtYXQsIGRlc3RCeXRlc1BlclJvdywg
ZGVzdFJvd3MsIHNpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlc3RB
bHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpIHsK
KyAgICAgICAgY29weUltYWdlUGl4ZWxzVW5hY2NlbGVyYXRlZDxjb3B5UHJlbXVsdGlwbGllZFRv
VW5wcmVtdWx0aXBsaWVkPihzcmNDb2xvckZvcm1hdCwgc3JjQnl0ZXNQZXJSb3csIHNyY1Jvd3Ms
IGRlc3RDb2xvckZvcm1hdCwgZGVzdEJ5dGVzUGVyUm93LCBkZXN0Um93cywgc2l6ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb3B5SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVkPGNv
cHlVbnByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQ+KHNyY0NvbG9yRm9ybWF0LCBzcmNCeXRl
c1BlclJvdywgc3JjUm93cywgZGVzdENvbG9yRm9ybWF0LCBkZXN0Qnl0ZXNQZXJSb3csIGRlc3RS
b3dzLCBzaXplKTsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpn
ZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IElu
dFJlY3QmIHNyY1JlY3QsIHZvaWQqIGRhdGEpIGNvbnN0Cit7CisgICAgSW50UmVjdCBzcmNSZWN0
U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoc3JjUmVjdCk7CisKKyAgICBhdXRvIGltYWdl
RGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKHNyY1JlY3RTY2FsZWQuc2l6ZSgpKTsKKyAgICBpZiAo
IWltYWdlRGF0YSB8fCAhaW1hZ2VEYXRhLT5kYXRhKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgSW50UmVjdCBzcmNSZWN0Q2xpcHBlZCA9ICBpbnRlcnNlY3Rpb24oYmFja2VuZFJl
Y3QoKSwgc3JjUmVjdFNjYWxlZCk7CisgICAgSW50UmVjdCBkZXN0UmVjdCA9IHsgSW50UG9pbnQ6
Onplcm8oKSwgc3JjUmVjdENsaXBwZWQuc2l6ZSgpIH07CisKKyAgICBpZiAoc3JjUmVjdFNjYWxl
ZC54KCkgPCAwKQorICAgICAgICBkZXN0UmVjdC5zZXRYKC1zcmNSZWN0U2NhbGVkLngoKSk7CisK
KyAgICBpZiAoc3JjUmVjdFNjYWxlZC55KCkgPCAwKQorICAgICAgICBkZXN0UmVjdC5zZXRZKC1z
cmNSZWN0U2NhbGVkLnkoKSk7CisKKyAgICBpZiAoZGVzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3RT
Y2FsZWQuc2l6ZSgpKQorICAgICAgICBpbWFnZURhdGEtPmRhdGEoKS0+emVyb0ZpbGwoKTsKKwor
ICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdyA9IDQgKiBzcmNSZWN0U2NhbGVkLndpZHRoKCk7
CisgICAgdWludDhfdCogZGVzdFJvd3MgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpICsgZGVz
dFJlY3QueSgpICogZGVzdEJ5dGVzUGVyUm93ICsgZGVzdFJlY3QueCgpICogNDsKKworICAgIHVu
c2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKKyAgICB1aW50OF90KiBzcmNS
b3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzcmNSZWN0Q2xpcHBlZC55
KCkgKiBzcmNCeXRlc1BlclJvdyArIHNyY1JlY3RDbGlwcGVkLngoKSAqIDQ7CisKKyAgICBjb3B5
SW1hZ2VQaXhlbHMoCisgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxp
ZWQsIGJhY2tlbmRDb2xvckZvcm1hdCgpLCBzcmNCeXRlc1BlclJvdywgc3JjUm93cywKKyAgICAg
ICAgb3V0cHV0Rm9ybWF0LCBDb2xvckZvcm1hdDo6UkdCQSwgZGVzdEJ5dGVzUGVyUm93LCBkZXN0
Um93cywgZGVzdFJlY3Quc2l6ZSgpKTsKKworICAgIHJldHVybiBpbWFnZURhdGE7Cit9CisKK3Zv
aWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIHZvaWQqIGRhdGEpCit7CisgICAg
SW50UmVjdCBzcmNSZWN0U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoc3JjUmVjdCk7Cisg
ICAgSW50UG9pbnQgZGVzdFBvaW50U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoZGVzdFBv
aW50KTsKKworICAgIEludFJlY3Qgc3JjUmVjdENsaXBwZWQgPSBpbnRlcnNlY3Rpb24oeyBJbnRQ
b2ludDo6emVybygpLCBpbWFnZURhdGEuc2l6ZSgpIH0sIHNyY1JlY3RTY2FsZWQpOworICAgIElu
dFJlY3QgZGVzdFJlY3QgPSBzcmNSZWN0Q2xpcHBlZDsKKyAgICBkZXN0UmVjdC5tb3ZlQnkoZGVz
dFBvaW50U2NhbGVkKTsKKworICAgIGlmIChzcmNSZWN0U2NhbGVkLngoKSA8IDApCisgICAgICAg
IGRlc3RSZWN0LnNldFgoZGVzdFJlY3QueCgpIC0gc3JjUmVjdFNjYWxlZC54KCkpOworCisgICAg
aWYgKHNyY1JlY3RTY2FsZWQueSgpIDwgMCkKKyAgICAgICAgZGVzdFJlY3Quc2V0WShkZXN0UmVj
dC55KCkgLSBzcmNSZWN0U2NhbGVkLnkoKSk7CisKKyAgICBkZXN0UmVjdC5pbnRlcnNlY3QoYmFj
a2VuZFJlY3QoKSk7CisgICAgc3JjUmVjdENsaXBwZWQuc2V0U2l6ZShkZXN0UmVjdC5zaXplKCkp
OworCisgICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKKyAgICB1
aW50OF90KiBkZXN0Um93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVz
dFJlY3QueSgpICogZGVzdEJ5dGVzUGVyUm93ICsgZGVzdFJlY3QueCgpICogNDsKKworICAgIHVu
c2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIGltYWdlRGF0YS5zaXplKCkud2lkdGgoKTsKKyAg
ICB1aW50OF90KiBzcmNSb3dzID0gaW1hZ2VEYXRhLmRhdGEoKS0+ZGF0YSgpICsgc3JjUmVjdENs
aXBwZWQueSgpICogc3JjQnl0ZXNQZXJSb3cgKyBzcmNSZWN0Q2xpcHBlZC54KCkgKiA0OworCisg
ICAgY29weUltYWdlUGl4ZWxzKAorICAgICAgICBpbnB1dEZvcm1hdCwgQ29sb3JGb3JtYXQ6OlJH
QkEsIHNyY0J5dGVzUGVyUm93LCBzcmNSb3dzLAorICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkLCBiYWNrZW5kQ29sb3JGb3JtYXQoKSwgZGVzdEJ5dGVzUGVyUm93
LCBkZXN0Um93cywgZGVzdFJlY3Quc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTNiNjNjZGY3MTc4YWJiMWI1YTM4ODI5YzU1ZTEyOGVk
YjdhMjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgorI2luY2x1
ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CitjbGFzcyBIb3N0V2luZG93
OworY2xhc3MgSW1hZ2U7CitjbGFzcyBJbWFnZURhdGE7CisKK2VudW0gQmFja2luZ1N0b3JlQ29w
eSB7CisgICAgQ29weUJhY2tpbmdTdG9yZSwgLy8gR3VhcmFudGVlIHN1YnNlcXVlbnQgZHJhd3Mg
ZG9uJ3QgYWZmZWN0IHRoZSBjb3B5LgorICAgIERvbnRDb3B5QmFja2luZ1N0b3JlIC8vIFN1YnNl
cXVlbnQgZHJhd3MgbWF5IGFmZmVjdCB0aGUgY29weS4KK307CisKK2VudW0gY2xhc3MgUHJlc2Vy
dmVSZXNvbHV0aW9uIDogdWludDhfdCB7CisgICAgTm8sCisgICAgWWVzLAorfTsKKworZW51bSBj
bGFzcyBDb2xvckZvcm1hdCA6IHVpbnQ4X3QgeworICAgIFJHQkEsCisgICAgQkdSQQorfTsKKwor
Y2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5kIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUm
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpOworCisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dCgpIHsg
fQorCisgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFNp
emU7IH0KKyAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5k
U2l6ZTsgfQorICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x1dGlvblNjYWxlOyB9CisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2xvclNwYWNlOyB9CisKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7IH0KKyAgICB2aXJ0dWFs
IHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUuYXJl
YSgpLnVuc2FmZUdldCgpOyB9CisgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0
KCkgY29uc3QgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdCA9IDA7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0
aXZlSW1hZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gc2lu
a0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udmVydFRv
THVtaW5hbmNlTWFzaygpOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKENv
bG9yU3BhY2UsIENvbG9yU3BhY2UpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJM
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9E
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5w
dXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQpID0gMDsKKworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgY29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiwgR0NHTGVu
dW0sIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBib29sLCBib29sKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UpOworCisgICAgdmlydHVh
bCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIDQgKiBtX2JhY2tlbmRTaXpl
LndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIENvbG9yRm9ybWF0IGJhY2tlbmRDb2xvckZvcm1hdCgp
IGNvbnN0IHsgcmV0dXJuIENvbG9yRm9ybWF0OjpSR0JBOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIFQgdG9CYWNrZW5kQ29vcmRpbmF0ZXMoVCB0KSBjb25zdAorICAgIHsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCwgSW50UG9pbnQ+Ojp2YWx1ZSB8fCBz
dGQ6OmlzX3NhbWU8VCwgSW50U2l6ZT46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBJbnRSZWN0
Pjo6dmFsdWUpOworICAgICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgIT0gMSkKKyAgICAgICAg
ICAgIHQuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworICAgICAgICByZXR1cm4gdDsKKyAgICB9
CisKKyAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBtX2xvZ2ljYWxTaXplKTsgfTsKKyAgICBJbnRSZWN0IGJhY2tlbmRSZWN0
KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2JhY2tlbmRTaXpl
KTsgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VQaXhlbHMo
CisgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3JtYXQsIENvbG9yRm9y
bWF0IHNyY0NvbG9yRm9ybWF0LCB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdywgdWludDhfdCogc3Jj
Um93cywKKyAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0QWxwaGFGb3JtYXQsIENv
bG9yRm9ybWF0IGRlc3RDb2xvckZvcm1hdCwgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93LCB1aW50
OF90KiBkZXN0Um93cywgY29uc3QgSW50U2l6ZSYpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEodm9pZCogZGF0YSkgY29uc3Q7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIHZvaWQqIGRh
dGEpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJl
bXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIHZvaWQqIGRhdGEpOworCisg
ICAgSW50U2l6ZSBtX2xvZ2ljYWxTaXplOworICAgIEludFNpemUgbV9iYWNrZW5kU2l6ZTsKKyAg
ICBmbG9hdCBtX3Jlc29sdXRpb25TY2FsZTsKKyAgICBDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJEYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDY0MmE1Yzg4NWU1YzEwMjQ0N2M3M2ExMmYxZDZmYjMyYjVkMzk5MDMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJEYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRh
Q0cuaCIKLSNlbGlmIFVTRShESVJFQ1QyRCkKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckRhdGFEaXJl
Y3QyRC5oIgotI2VsaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YUNhaXJv
LmgiCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtSW1hZ2VCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDNhODcxOWNlNDlkMTc3NmI5NzUz
ZDVkNzI2MDg3N2YwNTE0MzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDb250ZXh0dWFsSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJEaXNwbGF5
TGlzdEltYWdlQnVmZmVyLmgiCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQuaCIKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZC5oIgorI2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIkltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgiCisjZW5kaWYKKworI2lmIEhBVkUoSU9T
VVJGQUNFKQorI2luY2x1ZGUgIkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIgorI2VsaWYg
VVNFKENBSVJPKSAmJiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2luY2x1ZGUgIklt
YWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisjaWYgVVNFKENHKQordXNpbmcgUGxhdGZvcm1VbmFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJCYWNrZW5kID0gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ7CisjZWxpZiBVU0UoRElS
RUNUMkQpCit1c2luZyBQbGF0Zm9ybVVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlckJhY2tlbmQgPSBJ
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDsKKyNlbGlmIFVTRShDQUlSTykKK3VzaW5nIFBsYXRm
b3JtVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFja2VuZCA9IEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kOworI2VuZGlmCisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3VzaW5nIFBs
YXRmb3JtQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ7CisjZWxpZiBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpCit1c2luZyBQbGF0Zm9ybUFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJCYWNrZW5kID0gSW1hZ2VC
dWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ7CisjZWxzZQordXNpbmcgUGxhdGZvcm1BY2NlbGVy
YXRlZEltYWdlQnVmZmVyQmFja2VuZCA9IFBsYXRmb3JtVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVy
QmFja2VuZDsKKyNlbmRpZgorCit1c2luZyBQbGF0Zm9ybUltYWdlQnVmZmVyID0gQ29udGV4dHVh
bEltYWdlQnVmZmVyPFBsYXRmb3JtVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFja2VuZD47Cit1
c2luZyBQbGF0Zm9ybUFjY2VsZXJhdGVkSW1hZ2VCdWZmZXIgPSBDb250ZXh0dWFsSW1hZ2VCdWZm
ZXI8UGxhdGZvcm1BY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFja2VuZD47Cit1c2luZyBQbGF0Zm9y
bURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBEaXNwbGF5TGlzdEltYWdlQnVmZmVyPFBsYXRmb3Jt
VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFja2VuZD47Cit1c2luZyBQbGF0Zm9ybUFjY2VsZXJh
dGVkRGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IERpc3BsYXlMaXN0SW1hZ2VCdWZmZXI8UGxhdGZv
cm1BY2NlbGVyYXRlZEltYWdlQnVmZmVyQmFja2VuZD47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
SW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MTE4YWVhZWQwZGQwNTVi
Y2E2M2Y3ZTUzMGYxZTk5ODZlZWJlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0wLDAg
KzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuaCIKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckRpcmVjdDJE
QmFja2VuZC5oIgorI2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENHKQor
dXNpbmcgUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlckNHQmFja2VuZDsK
KyNlbGlmIFVTRShESVJFQ1QyRCkKK3VzaW5nIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kID0g
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ7CisjZWxpZiBVU0UoQ0FJUk8pCit1c2luZyBQbGF0
Zm9ybUltYWdlQnVmZmVyQmFja2VuZCA9IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOworI2VuZGlm
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNjYjZiMjQx
YWE1ZDEwNWYzY2FjOGVkYzIzOWQwZjUxZmJhOTMzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0wLDAg
KzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kLmgiCisKKyNp
bmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJpbmdCYWNrZW5kPiBSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKQoreworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyaW5nQmFja2VuZD4obmV3IFJlbmRlcmluZ0JhY2tlbmQo
KSk7Cit9CisKK1JlbmRlcmluZ0JhY2tlbmQmIFJlbmRlcmluZ0JhY2tlbmQ6OnNoYXJlZFJlbmRl
cmluZ0JhY2tlbmQoY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPFJlbmRlcmluZ0JhY2tlbmQ+PiBzaGFyZWRS
ZW5kZXJpbmdCYWNrZW5kIHsgUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCkgfTsKKyAgICByZXR1
cm4gaG9zdFdpbmRvdyAmJiBob3N0V2luZG93LT5zaGFyZWRSZW5kZXJpbmdCYWNrZW5kKCkgPyAq
aG9zdFdpbmRvdy0+c2hhcmVkUmVuZGVyaW5nQmFja2VuZCgpIDogKnNoYXJlZFJlbmRlcmluZ0Jh
Y2tlbmQuZ2V0KCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CisKKyAgICBzd2l0Y2ggKHJlbmRlcmlu
Z01vZGUpIHsKKyAgICBjYXNlIFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOgorICAgIGNhc2Ug
UmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQ6CisgICAgICAgIGltYWdlQnVmZmVyID0g
UGxhdGZvcm1BY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBob3N0V2luZG93KTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAg
Y2FzZSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOgorICAgIGNhc2UgUmVuZGVyaW5nTW9k
ZTo6UmVtb3RlOgorICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICAgICAgaW1hZ2VC
dWZmZXIgPSBQbGF0Zm9ybUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBob3N0V2luZG93KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJl
bmRlcmluZ01vZGU6OkRpc3BsYXlMaXN0QWNjZWxlcmF0ZWQ6CisgICAgICAgIGltYWdlQnVmZmVy
ID0gUGxhdGZvcm1BY2NlbGVyYXRlZERpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGhvc3RXaW5kb3cpOworICAgICAgICBGQUxM
VEhST1VHSDsKKyAgICBjYXNlIFJlbmRlcmluZ01vZGU6OkRpc3BsYXlMaXN0OgorICAgICAgICBp
ZiAoIWltYWdlQnVmZmVyKQorICAgICAgICAgICAgaW1hZ2VCdWZmZXIgPSBQbGF0Zm9ybURpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIGhvc3RXaW5kb3cpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gaW1h
Z2VCdWZmZXI7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyaW5nQmFj
a2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBpbWFnZUJ1ZmZlcjsKKworICAgIHN3aXRjaCAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpIHsK
KyAgICBjYXNlIFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOgorICAgIGNhc2UgUmVuZGVyaW5n
TW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQ6CisgICAgICAgIGltYWdlQnVmZmVyID0gUGxhdGZvcm1B
Y2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgY29udGV4dCk7CisgICAgICAgIEZB
TExUSFJPVUdIOworICAgIGNhc2UgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDoKKyAgICBj
YXNlIFJlbmRlcmluZ01vZGU6OlJlbW90ZToKKyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAg
ICAgICAgICAgIGltYWdlQnVmZmVyID0gUGxhdGZvcm1JbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUs
IGNvbnRleHQpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUmVuZGVyaW5nTW9kZTo6RGlz
cGxheUxpc3RBY2NlbGVyYXRlZDoKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBQbGF0Zm9ybUFjY2Vs
ZXJhdGVkRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNvbnRleHQpOworICAg
ICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFJlbmRlcmluZ01vZGU6OkRpc3BsYXlMaXN0Ogor
ICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICAgICAgaW1hZ2VCdWZmZXIgPSBQbGF0
Zm9ybURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGltYWdlQnVmZmVyOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVuZGVyaW5nQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYzczMDY4NTc1ZDIwMWUxYzAx
ZjdjMDBhMzgwY2Y2MWFlNTI4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1
ZGUgIlJlbmRlcmluZ01vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CitjbGFzcyBIb3N0V2luZG93OworY2xhc3MgSW1hZ2VCdWZmZXI7CitjbGFz
cyBJbnRTaXplOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZW5kZXJpbmdCYWNrZW5kIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0
ZSgpOworCisgICAgc3RhdGljIFJlbmRlcmluZ0JhY2tlbmQmIHNoYXJlZFJlbmRlcmluZ0JhY2tl
bmQoY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKworICAgIHZpcnR1YWwgflJlbmRlcmlu
Z0JhY2tlbmQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopOwor
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKworcHJvdGVjdGVk
OgorICAgIFJlbmRlcmluZ0JhY2tlbmQoKSA9IGRlZmF1bHQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW5kZXJpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJp
bmdNb2RlLmgKaW5kZXggNjlkOGFlODFjODQ4YjEwZTZmMmQwN2E3ODliMTZjMzMzZGMyM2NiNC4u
YWE0ODM1ZGJmYWFhYTk3NDJmMzRhY2MzOGY4YTFlMGUyNzBjMjRlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMzAsNiArMzAs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogdWlu
dDhfdCB7CiAgICAgQWNjZWxlcmF0ZWQsCiAgICAgVW5hY2NlbGVyYXRlZCwKKyAgICBEaXNwbGF5
TGlzdEFjY2VsZXJhdGVkLAorICAgIERpc3BsYXlMaXN0LAorICAgIFJlbW90ZUFjY2VsZXJhdGVk
LAorICAgIFJlbW90ZQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA2ODFhYjU2ZWVi
MzQxOTQ2MmIyMzQ0NTBkMDBmNDFmOTMzNjc0ZDE4Li4zY2ZjZTcyOTU0MjA5ZDMwM2E5ZjcyNDMy
ZmJiNGI2MzlkNGI0MjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDQ5
LDcgKzQ1MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0J1ZmZlcihHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCwgSW1hZ2VCdWZmZXImCiB7CiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAKLSAgICBJbnRTaXpl
IGJ1ZmZlclNpemUgPSBsYXllckltYWdlLmludGVybmFsU2l6ZSgpOworICAgIEludFNpemUgYnVm
ZmVyU2l6ZSA9IGxheWVySW1hZ2UuYmFja2VuZFNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSAh
PSBsYXllclNpemUpIHsKICAgICAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIHRvIGNsaXBUb0ltYWdl
QnVmZmVyKCkgaGFzIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgYnVmZmVyLAogICAgICAg
ICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRvIHRoZSBm
aWxsZWQgcGFydCBmaXJzdC4KQEAgLTg4NCwxMiArODg1LDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6
Ymx1clNoYWRvd0J1ZmZlcihJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgSW50U2l6ZSYg
dGVtcGxhCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgYmx1clJlY3QoSW50UG9pbnQo
KSwgdGVtcGxhdGVTaXplKTsKLSAgICBhdXRvIGxheWVyRGF0YSA9IGxheWVySW1hZ2UuZ2V0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKGJsdXJSZWN0KTsKKyAgICBhdXRvIGxheWVyRGF0YSA9IGxheWVy
SW1hZ2UuZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgYmx1clJlY3QpOwogICAgIGlmICghbGF5ZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBibHVyTGF5ZXJJbWFnZShsYXllckRhdGEtPmRhdGEoKSwgYmx1clJlY3Quc2l6ZSgpLCBibHVy
UmVjdC53aWR0aCgpICogNCk7Ci0gICAgbGF5ZXJJbWFnZS5wdXRCeXRlQXJyYXkoKmxheWVyRGF0
YSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBibHVyUmVjdC5zaXpl
KCksIGJsdXJSZWN0LCB7IH0pOworICAgIGF1dG8qIGJsdXJQaXhlbEFycmF5ID0gbGF5ZXJEYXRh
LT5kYXRhKCk7CisgICAgYmx1ckxheWVySW1hZ2UoYmx1clBpeGVsQXJyYXktPmRhdGEoKSwgYmx1
clJlY3Quc2l6ZSgpLCBibHVyUmVjdC53aWR0aCgpICogNCk7CisgICAgbGF5ZXJJbWFnZS5wdXRJ
bWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCAqbGF5ZXJE
YXRhLCBibHVyUmVjdCk7CiB9CiAKIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93
QnVmZmVyKEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCA2ODk4NGQ1NjRhOTI5MjdkNDI4ZmNlYmI4MGUx
NGFhY2Y5YWZhNGVmLi5jZDhmMWRiMzU5ZTI2YTAxYTJjODViYmQyMmVhMzY4ZTZhYzg4OTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBlbnVtIFBhdGhEcmF3aW5n
U3R5bGUgewogCiBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0
IEZsb2F0UG9pbnQmIGxheWVyT3JpZ2luLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBs
YXllckltYWdlLm5hdGl2ZUltYWdlKCkpIHsKKyAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJ
bWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKSB7CiAgICAgICAgIGRy
YXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChy
b3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9y
IH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CkBA
IC0xODMsNyArMTgzLDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnUKIC8vIEZJWE1FOiBUaGlz
IGlzIG1vc3RseSBzYW1lIGFzIGRyYXdTaGFkb3dMYXllckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1l
cmdlIHR3by4KIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0
ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGxheWVySW1hZ2UubmF0
aXZlSW1hZ2UoKSkgeworICAgIGlmIChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdlLmNvcHlOYXRp
dmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKICAgICAgICAgZHJhd05hdGl2ZUltYWdl
KHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hh
ZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxw
aGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMg
dm9pZCBmaWxsU2hhZG93QnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIEltYWdlQnVmZmVyJgogewogICAgIHNhdmUocGxhdGZvcm1Db250ZXh0KTsKIAotICAgIGlm
IChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdlLm5hdGl2ZUltYWdlKCkpCisgICAgaWYgKGF1dG8g
c3VyZmFjZSA9IGxheWVySW1hZ2UuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KSkKICAgICAgICAgY2xpcFRvSW1hZ2VCdWZmZXIocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdl
dCgpLCBGbG9hdFJlY3QobGF5ZXJPcmlnaW4sIGV4cGFuZGVkSW50U2l6ZShsYXllclNpemUpKSk7
CiAKICAgICBGaWxsU291cmNlIGZpbGxTb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKaW5kZXggOWIwMjVlMTQ3NjczNTJlMTRhZDQ4Zjg2N2IwNDU4NWVlODAzNDEzNC4uNGUxYmYy
YjQzNjdmMzQzNTlkODU0ZWI3OGMyMjAyZGY1N2IyNzQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlCiAg
ICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoYXV0byBz
dXJmYWNlID0gYnVmZmVyLm5hdGl2ZUltYWdlKCkpCisgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1
ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQogICAgICAgICBDYWly
bzo6Y2xpcFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBk
ZXN0UmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4
IGJjYTI5ZGZiNjk0OTg2ZTg3NzQ2NmI4ZjA3Nzg2ZmJkMWJmMzk0NTYuLmNkODY1YWFhMjYwMTlm
ZmM3NWFlZWU5MjYyMDJjZjExMjU5NWJjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcApAQCAtNDE0LDcgKzQxNCw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpjbGlwQm91bmRzKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNs
aXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5uYXRpdmVJbWFnZSgpKQor
ICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKSkKICAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1D
b250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYjVjNjQ4MmI2ZTFkM2YyOGFjNDc5
ZWE3YzVkMzFiMWQzMzc5MDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NTMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0
QHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5n
KSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKLQotI2lmIFVTRShDQUlSTykKLQotI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCi0j
aW5jbHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIK
LSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyVXRp
bGl0aWVzQ2Fpcm8uaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYXR0ZXJuLmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaCIKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBl
ZEFycmF5SW5saW5lcy5oPgotI2luY2x1ZGUgPGNhaXJvLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSNpbmNsdWRl
ICJHTENvbnRleHQuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLQotI2lmIFVTRShF
R0wpCi0jaWYgVVNFKExJQkVQT1hZKQotI2luY2x1ZGUgIkVwb3h5RUdMLmgiCi0jZWxzZQotI2lu
Y2x1ZGUgPEVHTC9lZ2wuaD4KLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4K
LQotI2lmIFVTRShMSUJFUE9YWSkKLSNpbmNsdWRlIDxlcG94eS9nbC5oPgotI2VsaWYgVVNFKE9Q
RU5HTF9FUykKLSNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KLSNlbHNlCi0jaW5jbHVkZSAiT3BlbkdM
U2hpbXMuaCIKLSNlbmRpZgotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCi0jaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgotI2VuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1JbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCi0gICAgOiBtX3BsYXRmb3Jt
Q29udGV4dCgwKQotICAgICwgbV9zaXplKHNpemUpCi0gICAgLCBtX3JlbmRlcmluZ01vZGUocmVu
ZGVyaW5nTW9kZSkKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKLSAgICAsIG1fY29tcG9zaXRvclRleHR1cmUoMCkKLSNlbmRp
ZgotICAgICwgbV90ZXh0dXJlKDApCi0jZW5kaWYKLXsKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKG1fcmVuZGVy
aW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkgewotI2lmIFVTRShOSUNPU0lB
KQotICAgICAgICBtX25pY29zaWFMYXllciA9IE5pY29zaWE6OkNvbnRlbnRMYXllcjo6Y3JlYXRl
KE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCp0
aGlzKSk7Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eSA9IGFkb3B0UmVmKG5l
dyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KTsKLSNlbmRpZgotICAgIH0KLSNlbmRp
ZgotfQotCi1JbWFnZUJ1ZmZlckRhdGE6On5JbWFnZUJ1ZmZlckRhdGEoKQotewotICAgIGlmICht
X3JlbmRlcmluZ01vZGUgIT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIHJl
dHVybjsKLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKSAmJiBVU0UoTklDT1NJQSkKLSAgICBkb3duY2FzdDxOaWNvc2lhOjpD
b250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9uaWNvc2lhTGF5ZXItPmltcGwoKSkuaW52
YWxpZGF0ZUNsaWVudCgpOwotI2VuZGlmCi0KLSAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZl
Q29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwotICAgIFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpLT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKLQotICAgIGlmIChtX3RleHR1cmUpCi0gICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1fdGV4dHVyZSk7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAg
aWYgKG1fY29tcG9zaXRvclRleHR1cmUpCi0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1f
Y29tcG9zaXRvclRleHR1cmUpOwotI2VuZGlmCi0KLSAgICBpZiAocHJldmlvdXNBY3RpdmVDb250
ZXh0KQotICAgICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
OwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLXZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDb21w
b3NpdG9yQnVmZmVyKCkKLXsKLSAgICBhdXRvKiBjb250ZXh0ID0gUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCk7Ci0gICAgY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICBnbEdlblRleHR1cmVzKDEsICZtX2Nv
bXBvc2l0b3JUZXh0dXJlKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29t
cG9zaXRvclRleHR1cmUpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05N
RU5ULCAxKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCAsIEdMX1JHQkEsIG1f
c2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIDApOwotCi0gICAgbV9jb21wb3NpdG9yU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2dsX3N1
cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGNvbnRleHQtPmNhaXJvRGV2aWNlKCksIENBSVJPX0NP
TlRFTlRfQ09MT1JfQUxQSEEsIG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpKTsKLSAgICBtX2NvbXBvc2l0b3JDciA9IGFkb3B0UmVmKGNhaXJvX2Ny
ZWF0ZShtX2NvbXBvc2l0b3JTdXJmYWNlLmdldCgpKSk7Ci0gICAgY2Fpcm9fc2V0X2FudGlhbGlh
cyhtX2NvbXBvc2l0b3JDci5nZXQoKSwgQ0FJUk9fQU5USUFMSUFTX05PTkUpOwotfQotCi0jaWYg
IVVTRShOSUNPU0lBKQotUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IElt
YWdlQnVmZmVyRGF0YTo6cHJveHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXRmb3JtTGF5
ZXJQcm94eS5jb3B5UmVmKCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnN3
YXBCdWZmZXJzSWZOZWVkZWQoKQotewotICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250
ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7Ci0KLSAgICBpZiAoIW1fY29tcG9zaXRvclRleHR1
cmUpIHsKLSAgICAgICAgY3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpOwotCi0gICAgICAgIGF1dG8g
cHJveHlPcGVyYXRpb24gPQotICAgICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkmIHByb3h5KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExvY2tI
b2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICAgICAgcHJveHkucHVzaE5l
eHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9j
b21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBH
TF9SR0JBKSk7Ci0gICAgICAgICAgICB9OwotI2lmIFVTRShOSUNPU0lBKQotICAgICAgICBwcm94
eU9wZXJhdGlvbihkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bD4obV9uaWNvc2lhTGF5ZXItPmltcGwoKSkucHJveHkoKSk7Ci0jZWxzZQotICAgICAgICBwcm94
eU9wZXJhdGlvbigqbV9wbGF0Zm9ybUxheWVyUHJveHkpOwotI2VuZGlmCi0gICAgfQotCi0gICAg
Ly8gSXQgd291bGQgYmUgZ3JlYXQgaWYgd2UgY291bGQganVzdCBzd2FwIHRoZSBidWZmZXJzIGhl
cmUgYXMgd2UgZG8gd2l0aCB3ZWJnbCwgYnV0IHRoYXQgYnJlYWtzIHRoZSBjYXNlcwotICAgIC8v
IHdoZXJlIG9uZSBmcmFtZSB1c2VzIHRoZSBjb250ZW50IGFscmVhZHkgcmVuZGVyZWQgaW4gdGhl
IHByZXZpb3VzIGZyYW1lLiBTbyB3ZSBqdXN0IGNvcHkgdGhlIGNvbnRlbnQKLSAgICAvLyBpbnRv
IHRoZSBjb21wb3NpdG9yIGJ1ZmZlci4KLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UobV9j
b21wb3NpdG9yQ3IuZ2V0KCksIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7Ci0gICAgY2Fpcm9fc2V0
X29wZXJhdG9yKG1fY29tcG9zaXRvckNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOwot
ICAgIGNhaXJvX3BhaW50KG1fY29tcG9zaXRvckNyLmdldCgpKTsKLQotICAgIGlmIChwcmV2aW91
c0FjdGl2ZUNvbnRleHQpCi0gICAgICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBjbGVhclN1cmZhY2UoY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlKQotewotICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKSAh
PSBDQUlST19TVEFUVVNfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPGNh
aXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2UpKTsKLSAgICBjYWlyb19z
ZXRfb3BlcmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKLSAgICBjYWlyb19w
YWludChjci5nZXQoKSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpjcmVhdGVDYWlyb0dM
U3VyZmFjZSgpCi17Ci0gICAgYXV0byogY29udGV4dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpOwotICAgIGNvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgLy8gV2UgbXVzdCBnZW5lcmF0ZSB0aGUgdGV4
dHVyZSBvdXJzZWx2ZXMsIGJlY2F1c2UgdGhlcmUgaXMgbm8gQ2Fpcm8gQVBJIGZvciBleHRyYWN0
aW5nIGl0Ci0gICAgLy8gZnJvbSBhIHByZS1leGlzdGluZyBzdXJmYWNlLgotICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
X3RleHR1cmUpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIp
OwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX0xJTkVBUik7Ci0KLSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQs
IDEpOwotCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAgLyogbGV2ZWwgKi8sIEdM
X1JHQkEsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAgLyogYm9yZGVyICovLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLQotICAgIGNhaXJvX2RldmljZV90KiBkZXZp
Y2UgPSBjb250ZXh0LT5jYWlyb0RldmljZSgpOwotCi0gICAgLy8gVGhyZWFkLWF3YXJlbmVzcyBp
cyBhIGh1Z2UgcGVyZm9ybWFuY2UgaGl0IG9uIG5vbi1JbnRlbCBkcml2ZXJzLgotICAgIGNhaXJv
X2dsX2RldmljZV9zZXRfdGhyZWFkX2F3YXJlKGRldmljZSwgRkFMU0UpOwotCi0gICAgbV9zdXJm
YWNlID0gYWRvcHRSZWYoY2Fpcm9fZ2xfc3VyZmFjZV9jcmVhdGVfZm9yX3RleHR1cmUoZGV2aWNl
LCBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLCBtX3RleHR1cmUsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpKTsKLSAgICBjbGVhclN1cmZhY2UobV9zdXJmYWNlLmdldCgpKTsKLX0K
LSNlbmRpZgotCi1zdGF0aWMgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4KLWNhaXJvU3VyZmFjZUNv
cHkoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQotewotICAgIGF1dG8gY29weSA9IGFkb3B0UmVm
KGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsCi0gICAgICAg
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLAotICAgICAgICBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpKTsKLQotICAgIGF1dG8gY3IgPSBhZG9w
dFJlZihjYWlyb19jcmVhdGUoY29weS5nZXQoKSkpOwotICAgIGNhaXJvX3NldF9vcGVyYXRvcihj
ci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKLSAgICBjYWlyb19zZXRfc291cmNlX3N1
cmZhY2UoY3IuZ2V0KCksIHN1cmZhY2UsIDAsIDApOwotICAgIGNhaXJvX3BhaW50KGNyLmdldCgp
KTsKLQotICAgIHJldHVybiBjb3B5OwotfQotCi1zdGF0aWMgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4KLWNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQot
ewotICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpID09IENBSVJPX1NVUkZB
Q0VfVFlQRV9JTUFHRQotICAgICAgICAmJiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KHN1cmZh
Y2UpID09IENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEpCi0gICAgICAgIHJldHVybiBzdXJmYWNl
OwotCi0gICAgcmV0dXJuIGNhaXJvU3VyZmFjZUNvcHkoc3VyZmFjZSk7Ci19Ci0KLVZlY3Rvcjx1
aW50OF90PiBJbWFnZUJ1ZmZlcjo6dG9CR1JBRGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byBzdXJm
YWNlID0gY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZShtX2RhdGEubV9zdXJmYWNlLmdldCgpKTsK
LSAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKHN1cmZhY2UuZ2V0KCkpOwotCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IGltYWdlRGF0YTsKLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZS5n
ZXQoKSkpCi0gICAgICAgIHJldHVybiBpbWFnZURhdGE7Ci0KLSAgICBhdXRvIHBpeGVscyA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZS5nZXQoKSk7Ci0gICAgaW1hZ2VEYXRh
LmFwcGVuZChwaXhlbHMsIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlLmdl
dCgpKSAqCi0gICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdl
dCgpKSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VEYXRhOwotfQotCi1OYXRpdmVJbWFnZVB0ciBJbWFn
ZUJ1ZmZlcjo6bmF0aXZlSW1hZ2UoKSBjb25zdAotewotICAgIHJldHVybiBtX2RhdGEubV9zdXJm
YWNlLmdldCgpOwotfQotCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyosIGJvb2wmIHN1Y2Nlc3MpCi0gICAgOiBt
X2RhdGEoSW50U2l6ZShzaXplKSwgcmVuZGVyaW5nTW9kZSkKLSAgICAsIG1fbG9naWNhbFNpemUo
c2l6ZSkKLSAgICAsIG1fcmVzb2x1dGlvblNjYWxlKHJlc29sdXRpb25TY2FsZSkKLXsKLSAgICBz
dWNjZXNzID0gZmFsc2U7ICAvLyBNYWtlIGVhcmx5IHJldHVybiBtZWFuIGVycm9yLgotCi0gICAg
ZmxvYXQgc2NhbGVkV2lkdGggPSBjZWlsZihtX3Jlc29sdXRpb25TY2FsZSAqIHNpemUud2lkdGgo
KSk7Ci0gICAgZmxvYXQgc2NhbGVkSGVpZ2h0ID0gY2VpbGYobV9yZXNvbHV0aW9uU2NhbGUgKiBz
aXplLmhlaWdodCgpKTsKLQotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYXV0b21hdGljYWxseSB1
c2UgYSBsb3dlciByZXNvbHV0aW9uPwotICAgIGlmICghRmxvYXRTaXplKHNjYWxlZFdpZHRoLCBz
Y2FsZWRIZWlnaHQpLmlzRXhwcmVzc2libGVBc0ludFNpemUoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9zaXplID0gSW50U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKLSAgICBt
X2RhdGEubV9zaXplID0gbV9zaXplOwotCi0gICAgaWYgKG1fc2l6ZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgaWYg
KG1fZGF0YS5tX3JlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpIHsK
LSAgICAgICAgbV9kYXRhLmNyZWF0ZUNhaXJvR0xTdXJmYWNlKCk7Ci0gICAgICAgIGlmICghbV9k
YXRhLm1fc3VyZmFjZSB8fCBjYWlyb19zdXJmYWNlX3N0YXR1cyhtX2RhdGEubV9zdXJmYWNlLmdl
dCgpKSAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykKLSAgICAgICAgICAgIG1fZGF0YS5tX3JlbmRl
cmluZ01vZGUgPSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOyAvLyBJZiBhbGxvY2F0aW9u
IGZhaWxzLCBmYWxsIGJhY2sgdG8gbm9uLWFjY2VsZXJhdGVkIHBhdGguCi0gICAgfQotICAgIGlm
IChtX2RhdGEubV9yZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQp
Ci0jZWxzZQotICAgIEFTU0VSVChtX2RhdGEubV9yZW5kZXJpbmdNb2RlICE9IFJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkKTsKLSNlbmRpZgotICAgIHsKLSAgICAgICAgc3RhdGljIGNhaXJvX3Vz
ZXJfZGF0YV9rZXlfdCBzX3N1cmZhY2VEYXRhS2V5OwotCi0gICAgICAgIGludCBzdHJpZGUgPSBj
YWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMyLCBtX3NpemUu
d2lkdGgoKSk7Ci0gICAgICAgIHZvaWQqIHN1cmZhY2VEYXRhOwotICAgICAgICBpZiAoIXRyeUZh
c3RaZXJvZWRNYWxsb2MobV9zaXplLmhlaWdodCgpICogc3RyaWRlKS5nZXRWYWx1ZShzdXJmYWNl
RGF0YSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9kYXRhLm1fc3VyZmFjZSA9
IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihzdXJmYWNlRGF0YSksIENBSVJPX0ZPUk1BVF9BUkdCMzIsIG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIHN0cmlkZSkpOwotICAgICAgICBjYWlyb19zdXJm
YWNlX3NldF91c2VyX2RhdGEobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgJnNfc3VyZmFjZURhdGFL
ZXksIHN1cmZhY2VEYXRhLCBbXSh2b2lkKiBkYXRhKSB7IGZhc3RGcmVlKGRhdGEpOyB9KTsKLSAg
ICB9Ci0KLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9zdGF0dXMobV9kYXRhLm1fc3VyZmFjZS5nZXQo
KSkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybjsgIC8vIGNyZWF0ZSB3
aWxsIG5vdGljZSB3ZSBkaWRuJ3Qgc2V0IG1faW5pdGlhbGl6ZWQgYW5kIGZhaWwuCi0KLSAgICBj
YWlyb1N1cmZhY2VTZXREZXZpY2VTY2FsZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCBtX3Jlc29s
dXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotCi0gICAgUmVmUHRyPGNhaXJvX3Q+IGNy
ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpKTsKLSAgICBt
X2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwotICAgIG1fZGF0YS5tX2Nv
bnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dCkpOwotICAgIHN1Y2Nl
c3MgPSB0cnVlOwotfQotCi1JbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0Owot
Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQotewotICAgIHJldHVybiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUsIENvbG9y
U3BhY2U6OlNSR0IsIGNvbnRleHQpOwotfQotCi1HcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVy
Ojpjb250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gKm1fZGF0YS5tX2NvbnRleHQ7Ci19Ci0K
LVJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVz
b2x1dGlvbikKLXsKLSAgICByZXR1cm4gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKLX0KLQotUmVmUHRyPEltYWdlPiBJbWFn
ZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0Ci17Ci0gICAgLy8gY29weUNhaXJvSW1hZ2VTdXJmYWNlIGluaGVy
aXRzIHN1cmZhY2UncyBkZXZpY2Ugc2NhbGUgZmFjdG9yLgotICAgIGlmIChjb3B5QmVoYXZpb3Ig
PT0gQ29weUJhY2tpbmdTdG9yZSkKLSAgICAgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUo
Y29weUNhaXJvSW1hZ2VTdXJmYWNlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpKTsKLQotICAgIC8v
IEJpdG1hcEltYWdlIHdpbGwgcmVsZWFzZSB0aGUgcGFzc2VkIGluIHN1cmZhY2Ugb24gZGVzdHJ1
Y3Rpb24KLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PihtX2RhdGEubV9zdXJmYWNlKSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25z
dW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsK
LSAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVz
dGluYXRpb25Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsICBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAg
ICBpZiAoZGVzdGluYXRpb25Db250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IG5hdGl2ZUltYWdlKCkpIHsKLSAgICAgICAg
aWYgKCZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNvbnRleHQoKSkKLSAgICAgICAgICAgIHN1cmZh
Y2UgPSBjYWlyb1N1cmZhY2VDb3B5KHN1cmZhY2UuZ2V0KCkpOwotCi0gICAgICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShk
ZXN0aW5hdGlvbkNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAg
ICAgIGNvbnN0IGF1dG8mIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlID0gZGVzdGluYXRpb25Db250
ZXh0LnN0YXRlKCk7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqZGVzdGluYXRpb25Db250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBv
cHRpb25zLCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
IH0sIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhhLCBXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGUoZGVzdGluYXRpb25Db250ZXh0U3RhdGUpKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewot
ICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKGF1dG8gc3VyZmFjZSA9IG5hdGl2ZUltYWdlKCkpCi0gICAgICAgIENhaXJvOjpkcmF3
UGF0dGVybigqY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgbV9zaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwot
fQotCi12b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qg
c3RkOjphcnJheTx1aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkKLXsKLSAgICAvLyBGSVhNRTog
RW5hYmxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb25zIG9uIGFjY2VsZXJhdGVkIGNhbnZhc2VzLgot
ICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpICE9
IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWdu
ZWQgY2hhciogZGF0YVNyYyA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9kYXRhLm1f
c3VyZmFjZS5nZXQoKSk7Ci0gICAgaW50IHN0cmlkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3N0cmlkZShtX2RhdGEubV9zdXJmYWNlLmdldCgpKTsKLSAgICBmb3IgKGludCB5ID0gMDsgeSA8
IG1fc2l6ZS5oZWlnaHQoKTsgKyt5KSB7Ci0gICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVy
cHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGRhdGFTcmMgKyBzdHJpZGUgKiB5KTsKLSAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCBtX3NpemUud2lkdGgoKTsgeCsrKSB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4OwotICAgICAgICAgICAgQ29sb3IgcGl4ZWxDb2xvciA9
IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7Ci0gICAgICAgICAgICBwaXhlbENv
bG9yID0gQ29sb3IobG9va1VwVGFibGVbcGl4ZWxDb2xvci5yZWQoKV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9va1VwVGFibGVbcGl4ZWxDb2xvci5ncmVlbigpXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rVXBUYWJsZVtwaXhlbENvbG9yLmJsdWUoKV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxDb2xvci5hbHBoYSgpKTsKLSAg
ICAgICAgICAgICpwaXhlbCA9IHByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKHBpeGVsQ29sb3Ip
OwotICAgICAgICB9Ci0gICAgfQotICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5n
bGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpLCBt
X2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKLX0KLQotUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29w
eVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIElu
dFJlY3QmIHJlY3QpCi17Ci0gICAgY2Fpcm9fc3VyZmFjZV90eXBlX3Qgc3VyZmFjZVR5cGUgPSBj
YWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpOwotCi0gICAgLy8gSWYgd2UgYWxyZWFkeSBo
YXZlIGFuIGltYWdlLCB3ZSB3cml0ZSBkaXJlY3RseSB0byB0aGUgdW5kZXJseWluZyBkYXRhOwot
ICAgIC8vIG90aGVyd2lzZSB3ZSBjcmVhdGUgYSB0ZW1wb3Jhcnkgc3VyZmFjZSBpbWFnZQotICAg
IGlmIChzdXJmYWNlVHlwZSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCi0gICAgICAgIHJl
dHVybiBzdXJmYWNlOwotICAgIAotICAgIHJlY3Quc2V0WCgwKTsKLSAgICByZWN0LnNldFkoMCk7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZP
Uk1BVF9BUkdCMzIsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwotfQotCi10ZW1wbGF0
ZSA8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBwcmVtdWx0aXBsaWVkPgotUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVj
dCYgbG9naWNhbFJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSkKLXsKLSAgICAvLyBUaGUgYXJlYSBjYW4gb3ZlcmZsb3cgaWYgdGhlIHJlY3QgaXMgdG9vIGJp
Zy4KLSAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYXJlYSA9IDQ7Ci0gICAg
YXJlYSAqPSByZWN0LndpZHRoKCk7Ci0gICAgYXJlYSAqPSByZWN0LmhlaWdodCgpOwotICAgIGlm
IChhcmVhLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBh
dXRvIHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGFy
ZWEudW5zYWZlR2V0KCkpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIC8vIENhbiBvdmVyZmxvdywgYXMgd2UgYXJlIGFkZGluZyAyIGludHMuCi0gICAg
aW50IGVuZHggPSAwOwotICAgIGlmICghV1RGOjpzYWZlQWRkKHJlY3QueCgpLCByZWN0LndpZHRo
KCksIGVuZHgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIENhbiBvdmVyZmxv
dywgYXMgd2UgYXJlIGFkZGluZyAyIGludHMuCi0gICAgaW50IGVuZHkgPSAwOwotICAgIGlmICgh
V1RGOjpzYWZlQWRkKHJlY3QueSgpLCByZWN0LmhlaWdodCgpLCBlbmR5KSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAocmVjdC54KCkgPCAwIHx8IHJlY3QueSgpIDwgMCB8fCBl
bmR4ID4gc2l6ZS53aWR0aCgpIHx8IGVuZHkgPiBzaXplLmhlaWdodCgpKQotICAgICAgICByZXN1
bHQtPnplcm9GaWxsKCk7Ci0KLSAgICBpbnQgb3JpZ2lueCA9IHJlY3QueCgpOwotICAgIGludCBk
ZXN0eCA9IDA7Ci0gICAgaWYgKG9yaWdpbnggPCAwKSB7Ci0gICAgICAgIGRlc3R4ID0gLW9yaWdp
bng7Ci0gICAgICAgIG9yaWdpbnggPSAwOwotICAgIH0KLQotICAgIGlmIChlbmR4ID4gc2l6ZS53
aWR0aCgpKQotICAgICAgICBlbmR4ID0gc2l6ZS53aWR0aCgpOwotICAgIGludCBudW1Db2x1bW5z
ID0gZW5keCAtIG9yaWdpbng7Ci0KLSAgICBpbnQgb3JpZ2lueSA9IHJlY3QueSgpOwotICAgIGlu
dCBkZXN0eSA9IDA7Ci0gICAgaWYgKG9yaWdpbnkgPCAwKSB7Ci0gICAgICAgIGRlc3R5ID0gLW9y
aWdpbnk7Ci0gICAgICAgIG9yaWdpbnkgPSAwOwotICAgIH0KLQotICAgIGlmIChlbmR5ID4gc2l6
ZS5oZWlnaHQoKSkKLSAgICAgICAgZW5keSA9IHNpemUuaGVpZ2h0KCk7Ci0gICAgaW50IG51bVJv
d3MgPSBlbmR5IC0gb3JpZ2lueTsKLQotICAgIC8vIE5vdGhpbmcgd2lsbCBiZSBjb3BpZWQsIHNv
IGp1c3QgcmV0dXJuIHRoZSByZXN1bHQuCi0gICAgaWYgKG51bUNvbHVtbnMgPD0gMCB8fCBudW1S
b3dzIDw9IDApCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAvLyBUaGUgc2l6ZSBvZiB0
aGUgZGVyaXZlZCBzdXJmYWNlIGlzIGluIEJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0uCi0g
ICAgLy8gV2UgbmVlZCB0byBzZXQgdGhlIGRldmljZSBzY2FsZSBmb3IgdGhlIGRlcml2ZWQgc3Vy
ZmFjZSBmcm9tIHRoaXMgSW1hZ2VCdWZmZXIuCi0gICAgSW50UmVjdCBpbWFnZVJlY3Qob3JpZ2lu
eCwgb3JpZ2lueSwgbnVtQ29sdW1ucywgbnVtUm93cyk7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gaW1hZ2VTdXJmYWNlID0gY29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChkYXRh
Lm1fc3VyZmFjZS5nZXQoKSwgaW1hZ2VSZWN0KTsKLSAgICBjYWlyb1N1cmZhY2VTZXREZXZpY2VT
Y2FsZShpbWFnZVN1cmZhY2UuZ2V0KCksIHJlc29sdXRpb25TY2FsZSwgcmVzb2x1dGlvblNjYWxl
KTsKLSAgICBvcmlnaW54ID0gaW1hZ2VSZWN0LngoKTsKLSAgICBvcmlnaW55ID0gaW1hZ2VSZWN0
LnkoKTsKLSAgICBpZiAoaW1hZ2VTdXJmYWNlICE9IGRhdGEubV9zdXJmYWNlLmdldCgpKSB7Ci0g
ICAgICAgIC8vIFRoaXMgY2Fpcm8gc3VyZmFjZSBvcGVyYXRpb24gaXMgZG9uZSBpbiBMb2dpY2Fs
Q29vcmRpbmF0ZVN5c3RlbS4KLSAgICAgICAgSW50UmVjdCBsb2dpY2FsQXJlYSA9IGludGVyc2Vj
dGlvbihsb2dpY2FsUmVjdCwgSW50UmVjdCgwLCAwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dp
Y2FsU2l6ZS5oZWlnaHQoKSkpOwotICAgICAgICBjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90
aGVyKGRhdGEubV9zdXJmYWNlLmdldCgpLCBpbWFnZVN1cmZhY2UuZ2V0KCksIEludFNpemUoLWxv
Z2ljYWxBcmVhLngoKSwgLWxvZ2ljYWxBcmVhLnkoKSksIEludFJlY3QoSW50UG9pbnQoKSwgbG9n
aWNhbEFyZWEuc2l6ZSgpKSwgSW50U2l6ZSgpKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBjaGFy
KiBkYXRhU3JjID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UuZ2V0
KCkpOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFEc3QgPSByZXN1bHQtPmRhdGEoKTsKLSAgICBp
bnQgc3RyaWRlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKGltYWdlU3VyZmFjZS5n
ZXQoKSk7Ci0gICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsK
LQotICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RSb3dzID0gZGF0YURzdCArIGRlc3R5ICogZGVzdEJ5
dGVzUGVyUm93ICsgZGVzdHggKiA0OwotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbnVtUm93czsg
Kyt5KSB7Ci0gICAgICAgIHVuc2lnbmVkKiByb3cgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNp
Z25lZCo+KGRhdGFTcmMgKyBzdHJpZGUgKiAoeSArIG9yaWdpbnkpKTsKLSAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyB4KyspIHsKLSAgICAgICAgICAgIGludCBiYXNleCA9
IHggKiA0OwotICAgICAgICAgICAgdW5zaWduZWQqIHBpeGVsID0gcm93ICsgeCArIG9yaWdpbng7
Ci0KLSAgICAgICAgICAgIC8vIEF2b2lkIGNhbGxpbmcgQ29sb3I6OmNvbG9yRnJvbVByZW11bHRp
cGxpZWRBUkdCKCkgYmVjYXVzZSBvbmUKLSAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGNhbGwgcGVy
IHBpeGVsIGlzIHRvbyBleHBlbnNpdmUuCi0gICAgICAgICAgICB1bnNpZ25lZCBhbHBoYSA9ICgq
cGl4ZWwgJiAweEZGMDAwMDAwKSA+PiAyNDsKLSAgICAgICAgICAgIHVuc2lnbmVkIHJlZCA9ICgq
cGl4ZWwgJiAweDAwRkYwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIHVuc2lnbmVkIGdyZWVuID0g
KCpwaXhlbCAmIDB4MDAwMEZGMDApID4+IDg7Ci0gICAgICAgICAgICB1bnNpZ25lZCBibHVlID0g
KCpwaXhlbCAmIDB4MDAwMDAwRkYpOwotCi0gICAgICAgICAgICBpZiAocHJlbXVsdGlwbGllZCA9
PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoYWxwaGEgJiYgYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
ZCA9IHJlZCAqIDI1NSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICBncmVlbiA9IGdyZWVu
ICogMjU1IC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgIGJsdWUgPSBibHVlICogMjU1IC8g
YWxwaGE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBk
ZXN0Um93c1tiYXNleF0gICAgID0gcmVkOwotICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAx
XSA9IGdyZWVuOwotICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IGJsdWU7Ci0gICAg
ICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7Ci0gICAgICAgIH0KLSAgICAgICAg
ZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFVuaXQ+Ci1pbmxpbmUgVW5pdCBsb2dpY2FsVW5pdChj
b25zdCBVbml0JiB2YWx1ZSwgSW1hZ2VCdWZmZXI6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0
ZVN5c3RlbU9mVmFsdWUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKLXsKLSAgICBpZiAoY29vcmRp
bmF0ZVN5c3RlbU9mVmFsdWUgPT0gSW1hZ2VCdWZmZXI6OkxvZ2ljYWxDb29yZGluYXRlU3lzdGVt
IHx8IHJlc29sdXRpb25TY2FsZSA9PSAxLjApCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICBV
bml0IHJlc3VsdCh2YWx1ZSk7Ci0gICAgcmVzdWx0LnNjYWxlKDEuMCAvIHJlc29sdXRpb25TY2Fs
ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVW5pdD4KLWlu
bGluZSBVbml0IGJhY2tpbmdTdG9yZVVuaXQoY29uc3QgVW5pdCYgdmFsdWUsIEltYWdlQnVmZmVy
OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW1PZlZhbHVlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUpCi17Ci0gICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW1PZlZhbHVlID09IEltYWdlQnVm
ZmVyOjpCYWNraW5nU3RvcmVDb29yZGluYXRlU3lzdGVtIHx8IHJlc29sdXRpb25TY2FsZSA9PSAx
LjApCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICBVbml0IHJlc3VsdCh2YWx1ZSk7Ci0gICAg
cmVzdWx0LnNjYWxlKHJlc29sdXRpb25TY2FsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIEludFNpemUqIHBpeGVsQXJyYXlEaW1lbnNpb25z
LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0Ci17Ci0gICAgSW50UmVj
dCBsb2dpY2FsUmVjdCA9IGxvZ2ljYWxVbml0KHJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVz
b2x1dGlvblNjYWxlKTsKLSAgICBJbnRSZWN0IGJhY2tpbmdTdG9yZVJlY3QgPSBiYWNraW5nU3Rv
cmVVbml0KHJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBp
ZiAocGl4ZWxBcnJheURpbWVuc2lvbnMpCi0gICAgICAgICpwaXhlbEFycmF5RGltZW5zaW9ucyA9
IGJhY2tpbmdTdG9yZVJlY3Quc2l6ZSgpOwotICAgIHJldHVybiBnZXRJbWFnZURhdGE8QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkPihiYWNraW5nU3RvcmVSZWN0LCBsb2dp
Y2FsUmVjdCwgbV9kYXRhLCBtX3NpemUsIG1fbG9naWNhbFNpemUsIG1fcmVzb2x1dGlvblNjYWxl
KTsKLX0KLQotUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVs
dGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBJbnRTaXplKiBwaXhlbEFycmF5
RGltZW5zaW9ucywgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAotewot
ICAgIEludFJlY3QgbG9naWNhbFJlY3QgPSBsb2dpY2FsVW5pdChyZWN0LCBjb29yZGluYXRlU3lz
dGVtLCBtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgSW50UmVjdCBiYWNraW5nU3RvcmVSZWN0ID0g
YmFja2luZ1N0b3JlVW5pdChyZWN0LCBjb29yZGluYXRlU3lzdGVtLCBtX3Jlc29sdXRpb25TY2Fs
ZSk7Ci0gICAgaWYgKHBpeGVsQXJyYXlEaW1lbnNpb25zKQotICAgICAgICAqcGl4ZWxBcnJheURp
bWVuc2lvbnMgPSBiYWNraW5nU3RvcmVSZWN0LnNpemUoKTsKLSAgICByZXR1cm4gZ2V0SW1hZ2VE
YXRhPEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ+KGJhY2tpbmdTdG9yZVJl
Y3QsIGxvZ2ljYWxSZWN0LCBtX2RhdGEsIG1fc2l6ZSwgbV9sb2dpY2FsU2l6ZSwgbV9yZXNvbHV0
aW9uU2NhbGUpOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoY29uc3QgVWlu
dDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VGb3Jt
YXQsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5
c3RlbSkKLXsKLSAgICBJbnRSZWN0IHNjYWxlZFNvdXJjZVJlY3QgPSBiYWNraW5nU3RvcmVVbml0
KHNvdXJjZVJlY3QsIGNvb3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBJ
bnRTaXplIHNjYWxlZFNvdXJjZVNpemUgPSBiYWNraW5nU3RvcmVVbml0KHNvdXJjZVNpemUsIGNv
b3JkaW5hdGVTeXN0ZW0sIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBJbnRQb2ludCBzY2FsZWRE
ZXN0UG9pbnQgPSBiYWNraW5nU3RvcmVVbml0KGRlc3RQb2ludCwgY29vcmRpbmF0ZVN5c3RlbSwg
bV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIEludFJlY3QgbG9naWNhbFNvdXJjZVJlY3QgPSBsb2dp
Y2FsVW5pdChzb3VyY2VSZWN0LCBjb29yZGluYXRlU3lzdGVtLCBtX3Jlc29sdXRpb25TY2FsZSk7
Ci0gICAgSW50UG9pbnQgbG9naWNhbERlc3RQb2ludCA9IGxvZ2ljYWxVbml0KGRlc3RQb2ludCwg
Y29vcmRpbmF0ZVN5c3RlbSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotCi0gICAgQVNTRVJUKHNjYWxl
ZFNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOwotICAgIEFTU0VSVChzY2FsZWRTb3VyY2VSZWN0Lmhl
aWdodCgpID4gMCk7Ci0KLSAgICBpbnQgb3JpZ2lueCA9IHNjYWxlZFNvdXJjZVJlY3QueCgpOwot
ICAgIGludCBkZXN0eCA9IHNjYWxlZERlc3RQb2ludC54KCkgKyBzY2FsZWRTb3VyY2VSZWN0Lngo
KTsKLSAgICBpbnQgbG9naWNhbERlc3R4ID0gbG9naWNhbERlc3RQb2ludC54KCkgKyBsb2dpY2Fs
U291cmNlUmVjdC54KCk7Ci0gICAgQVNTRVJUKGRlc3R4ID49IDApOwotICAgIEFTU0VSVChkZXN0
eCA8IG1fc2l6ZS53aWR0aCgpKTsKLSAgICBBU1NFUlQob3JpZ2lueCA+PSAwKTsKLSAgICBBU1NF
UlQob3JpZ2lueCA8PSBzY2FsZWRTb3VyY2VSZWN0Lm1heFgoKSk7Ci0KLSAgICBpbnQgZW5keCA9
IHNjYWxlZERlc3RQb2ludC54KCkgKyBzY2FsZWRTb3VyY2VSZWN0Lm1heFgoKTsKLSAgICBpbnQg
bG9naWNhbEVuZHggPSBsb2dpY2FsRGVzdFBvaW50LngoKSArIGxvZ2ljYWxTb3VyY2VSZWN0Lm1h
eFgoKTsKLSAgICBBU1NFUlQoZW5keCA8PSBtX3NpemUud2lkdGgoKSk7Ci0KLSAgICBpbnQgbnVt
Q29sdW1ucyA9IGVuZHggLSBkZXN0eDsKLSAgICBpbnQgbG9naWNhbE51bUNvbHVtbnMgPSBsb2dp
Y2FsRW5keCAtIGxvZ2ljYWxEZXN0eDsKLQotICAgIGludCBvcmlnaW55ID0gc2NhbGVkU291cmNl
UmVjdC55KCk7Ci0gICAgaW50IGRlc3R5ID0gc2NhbGVkRGVzdFBvaW50LnkoKSArIHNjYWxlZFNv
dXJjZVJlY3QueSgpOwotICAgIGludCBsb2dpY2FsRGVzdHkgPSBsb2dpY2FsRGVzdFBvaW50Lnko
KSArIGxvZ2ljYWxTb3VyY2VSZWN0LnkoKTsKLSAgICBBU1NFUlQoZGVzdHkgPj0gMCk7Ci0gICAg
QVNTRVJUKGRlc3R5IDwgbV9zaXplLmhlaWdodCgpKTsKLSAgICBBU1NFUlQob3JpZ2lueSA+PSAw
KTsKLSAgICBBU1NFUlQob3JpZ2lueSA8PSBzY2FsZWRTb3VyY2VSZWN0Lm1heFkoKSk7Ci0KLSAg
ICBpbnQgZW5keSA9IHNjYWxlZERlc3RQb2ludC55KCkgKyBzY2FsZWRTb3VyY2VSZWN0Lm1heFko
KTsKLSAgICBpbnQgbG9naWNhbEVuZHkgPSBsb2dpY2FsRGVzdFBvaW50LnkoKSArIGxvZ2ljYWxT
b3VyY2VSZWN0Lm1heFkoKTsKLSAgICBBU1NFUlQoZW5keSA8PSBtX3NpemUuaGVpZ2h0KCkpOwot
ICAgIGludCBudW1Sb3dzID0gZW5keSAtIGRlc3R5OwotICAgIGludCBsb2dpY2FsTnVtUm93cyA9
IGxvZ2ljYWxFbmR5IC0gbG9naWNhbERlc3R5OwotCi0gICAgLy8gVGhlIHNpemUgb2YgdGhlIGRl
cml2ZWQgc3VyZmFjZSBpcyBpbiBCYWNraW5nU3RvcmVDb29yZGluYXRlU3lzdGVtLgotICAgIC8v
IFdlIG5lZWQgdG8gc2V0IHRoZSBkZXZpY2Ugc2NhbGUgZm9yIHRoZSBkZXJpdmVkIHN1cmZhY2Ug
ZnJvbSB0aGlzIEltYWdlQnVmZmVyLgotICAgIEludFJlY3QgaW1hZ2VSZWN0KGRlc3R4LCBkZXN0
eSwgbnVtQ29sdW1ucywgbnVtUm93cyk7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1h
Z2VTdXJmYWNlID0gY29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChtX2RhdGEubV9zdXJm
YWNlLmdldCgpLCBpbWFnZVJlY3QpOwotICAgIGNhaXJvU3VyZmFjZVNldERldmljZVNjYWxlKGlt
YWdlU3VyZmFjZS5nZXQoKSwgbV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsK
LSAgICBkZXN0eCA9IGltYWdlUmVjdC54KCk7Ci0gICAgZGVzdHkgPSBpbWFnZVJlY3QueSgpOwot
Ci0gICAgdWludDhfdCogcGl4ZWxEYXRhID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShp
bWFnZVN1cmZhY2UuZ2V0KCkpOwotCi0gICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICog
c2NhbGVkU291cmNlU2l6ZS53aWR0aCgpOwotICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9zdHJpZGUoaW1hZ2VTdXJmYWNlLmdldCgpKTsKLQotICAgIGNvbnN0IHVpbnQ4
X3QqIHNyY1Jvd3MgPSBzb3VyY2UuZGF0YSgpICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsg
b3JpZ2lueCAqIDQ7Ci0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBudW1Sb3dzOyArK3kpIHsKLSAg
ICAgICAgdW5zaWduZWQqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4ocGl4
ZWxEYXRhICsgc3RyaWRlICogKHkgKyBkZXN0eSkpOwotICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IG51bUNvbHVtbnM7IHgrKykgewotICAgICAgICAgICAgaW50IGJhc2V4ID0geCAqIDQ7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCogcGl4ZWwgPSByb3cgKyB4ICsgZGVzdHg7Ci0KLSAgICAgICAg
ICAgIC8vIEF2b2lkIGNhbGxpbmcgQ29sb3I6OnByZW11bHRpcGxpZWRBUkdCRnJvbUNvbG9yKCkg
YmVjYXVzZSBvbmUKLSAgICAgICAgICAgIC8vIGZ1bmN0aW9uIGNhbGwgcGVyIHBpeGVsIGlzIHRv
byBleHBlbnNpdmUuCi0gICAgICAgICAgICB1bnNpZ25lZCByZWQgPSBzcmNSb3dzW2Jhc2V4XTsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGdyZWVuID0gc3JjUm93c1tiYXNleCArIDFdOwotICAgICAg
ICAgICAgdW5zaWduZWQgYmx1ZSA9IHNyY1Jvd3NbYmFzZXggKyAyXTsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGFscGhhID0gc3JjUm93c1tiYXNleCArIDNdOwotCi0gICAgICAgICAgICBpZiAoc291
cmNlRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCkgewot
ICAgICAgICAgICAgICAgIGlmIChhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAg
cmVkID0gKHJlZCAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICAgICAgZ3Jl
ZW4gPSAoZ3JlZW4gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGJs
dWUgPSAoYmx1ZSAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICpwaXhlbCA9IChhbHBoYSA8PCAyNCkgfCByZWQgIDw8
IDE2IHwgZ3JlZW4gIDw8IDggfCBibHVlOwotICAgICAgICB9Ci0gICAgICAgIHNyY1Jvd3MgKz0g
c3JjQnl0ZXNQZXJSb3c7Ci0gICAgfQotCi0gICAgLy8gVGhpcyBjYWlybyBzdXJmYWNlIG9wZXJh
dGlvbiBpcyBkb25lIGluIExvZ2ljYWxDb29yZGluYXRlU3lzdGVtLgotICAgIGNhaXJvX3N1cmZh
Y2VfbWFya19kaXJ0eV9yZWN0YW5nbGUoaW1hZ2VTdXJmYWNlLmdldCgpLCBsb2dpY2FsRGVzdHgs
IGxvZ2ljYWxEZXN0eSwgbG9naWNhbE51bUNvbHVtbnMsIGxvZ2ljYWxOdW1Sb3dzKTsKLQotICAg
IGlmIChpbWFnZVN1cmZhY2UgIT0gbV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkgewotICAgICAgICAv
LyBUaGlzIGNhaXJvIHN1cmZhY2Ugb3BlcmF0aW9uIGlzIGRvbmUgaW4gTG9naWNhbENvb3JkaW5h
dGVTeXN0ZW0uCi0gICAgICAgIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoaW1hZ2VT
dXJmYWNlLmdldCgpLCBtX2RhdGEubV9zdXJmYWNlLmdldCgpLCBJbnRTaXplKCksIEludFJlY3Qo
MCwgMCwgbG9naWNhbE51bUNvbHVtbnMsIGxvZ2ljYWxOdW1Sb3dzKSwgSW50U2l6ZShsb2dpY2Fs
RGVzdFBvaW50LngoKSArIGxvZ2ljYWxTb3VyY2VSZWN0LngoKSwgbG9naWNhbERlc3RQb2ludC55
KCkgKyBsb2dpY2FsU291cmNlUmVjdC55KCkpKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBJbWFnZUJ1
ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAotewotICAgIFZlY3Rvcjx1aW50OF90
PiBlbmNvZGVkSW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwotICAgIGlmIChlbmNv
ZGVkSW1hZ2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gImRhdGE6LCI7Ci0KLSAgICBWZWN0
b3I8Y2hhcj4gYmFzZTY0RGF0YTsKLSAgICBiYXNlNjRFbmNvZGUoZW5jb2RlZEltYWdlLmRhdGEo
KSwgZW5jb2RlZEltYWdlLnNpemUoKSwgYmFzZTY0RGF0YSk7Ci0KLSAgICByZXR1cm4gImRhdGE6
IiArIG1pbWVUeXBlICsgIjtiYXNlNjQsIiArIGJhc2U2NERhdGE7Ci19Ci0KLVZlY3Rvcjx1aW50
OF90PiBJbWFnZUJ1ZmZlcjo6dG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKLXsKLSAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKLSAgICBjYWly
b19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9fZ2V0X3RhcmdldChjb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCktPmNyKCkpOwotICAgIHJldHVybiBkYXRhKGltYWdlLCBtaW1lVHlwZSwgcXVhbGl0
eSk7Ci19Ci0KLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQotdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkK
LXsKLSAgICBBU1NFUlQobV90ZXh0dXJlKTsKLQotICAgIC8vIENhaXJvIG1heSBjaGFuZ2UgdGhl
IGFjdGl2ZSBjb250ZXh0LCBzbyB3ZSBtYWtlIHN1cmUgdG8gY2hhbmdlIGl0IGJhY2sgYWZ0ZXIg
Zmx1c2hpbmcuCi0gICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRl
eHQ6OmN1cnJlbnQoKTsKLSAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7
Ci0gICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAg
IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCY+KHRleHR1cmVNYXBwZXIpLmRyYXdUZXh0dXJl
KG1fdGV4dHVyZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgbV9zaXplLCB0YXJnZXRS
ZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwotfQotI2VuZGlmCi0KLVBsYXRmb3JtTGF5ZXIqIEltYWdl
QnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKQotI2lmIFVTRShOSUNPU0lBKQotICAgIGlmIChtX2RhdGEubV9yZW5kZXJpbmdN
b2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICByZXR1cm4gbV9kYXRh
Lm1fbmljb3NpYUxheWVyLmdldCgpOwotI2Vsc2UKLSAgICBpZiAobV9kYXRhLm1fdGV4dHVyZSkK
LSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SW1hZ2VCdWZmZXJEYXRhKj4oJm1fZGF0YSk7Ci0j
ZW5kaWYKLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1ib29sIEltYWdlQnVmZmVyOjpjb3B5
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSB0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgZGVzdGluYXRpb25UZXh0dXJlLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQotewotI2lmIEVOQUJM
RShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3Jlc29s
dXRpb25TY2FsZSA9PSAxLjAsICJTaW5jZSB0aGUgSGlEUEkgQ2FudmFzIGZlYXR1cmUgaXMgcmVt
b3ZlZCwgdGhlIHJlc29sdXRpb24gZmFjdG9yIGhlcmUgaXMgYWx3YXlzIDEuIik7Ci0gICAgaWYg
KHByZW11bHRpcGx5QWxwaGEgfHwgZmxpcFkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmICghbV9kYXRhLm1fdGV4dHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR0NH
TGVudW0gYmluZFRleHR1cmVUYXJnZXQ7Ci0gICAgc3dpdGNoICh0YXJnZXQpIHsKLSAgICBjYXNl
IEdMX1RFWFRVUkVfMkQ6Ci0gICAgICAgIGJpbmRUZXh0dXJlVGFyZ2V0ID0gR0xfVEVYVFVSRV8y
RDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1g6Ci0gICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6Ci0gICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6Ci0gICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1k6Ci0gICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6
Ci0gICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6Ci0gICAgICAgIGJpbmRU
ZXh0dXJlVGFyZ2V0ID0gR0xfVEVYVFVSRV9DVUJFX01BUDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNhaXJvX3N1cmZh
Y2VfZmx1c2gobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0PiBjb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KCZQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpKTsKLSAgICBjb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICB1aW50MzJfdCBmYm87Ci0gICAgZ2xHZW5G
cmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIGZibyk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1fZGF0YS5tX3RleHR1cmUsIDApOwot
ICAgIGdsQmluZFRleHR1cmUoYmluZFRleHR1cmVUYXJnZXQsIGRlc3RpbmF0aW9uVGV4dHVyZSk7
Ci0gICAgZ2xDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIDAsIGludGVybmFsZm9ybWF0LCAwLCAwLCBt
X3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAwKTsKLSAgICBnbEJpbmRUZXh0dXJlKGJp
bmRUZXh0dXJlVGFyZ2V0LCAwKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgMCk7Ci0gICAgZ2xGbHVzaCgpOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8p
OwotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25UZXh0dXJlKTsKLSAgICBVTlVTRURfUEFSQU0oaW50
ZXJuYWxmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShwcmVtdWx0aXBseUFscGhhKTsKLSAgICBV
TlVTRURfUEFSQU0oZmxpcFkpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc2YWY0MDg5NmJhYWNkODBkOWYxYzVl
ZmFhNzkwYTE0OWI4ZGQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAtMCwwICsx
LDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
VG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oIgorCisjaW5jbHVkZSAiQml0
bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJDYWlyb09wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJDb2xv
ci5oIgorI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CisKKyNpZiBVU0UoQ0FJUk8pCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRp
b24pIGNvbnN0Cit7CisgICAgLy8gQml0bWFwSW1hZ2Ugd2lsbCByZWxlYXNlIHRoZSBwYXNzZWQg
aW4gc3VyZmFjZSBvbiBkZXN0cnVjdGlvbgorICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRl
KGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRh
aW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShkZXN0Q29udGV4dCwgb3B0aW9u
cy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBjb25zdCBhdXRvJiBkZXN0aW5hdGlvbkNv
bnRleHRTdGF0ZSA9IGRlc3RDb250ZXh0LnN0YXRlKCk7CisKKyAgICBpZiAoYXV0byBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5n
U3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSgq
ZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgeyBvcHRpb25zLCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFnZUludGVycG9sYXRp
b25RdWFsaXR5IH0sIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhhLCBXZWJDb3JlOjpDYWly
bzo6U2hhZG93U3RhdGUoZGVzdGluYXRpb25Db250ZXh0U3RhdGUpKTsKK30KKwordm9pZCBJbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKK3sKKyAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENv
bnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdT
dG9yZSkpCisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksIGltYWdlLmdldCgpLCBtX2xvZ2ljYWxTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworfQorCit2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKK3sKKyAgICBpZiAoc3JjQ29sb3JTcGFjZSA9
PSBkZXN0Q29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gb25seSBzUkdCIDwt
PiBsaW5lYXJSR0IgYXJlIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50CisgICAgaWYgKChzcmNDb2xv
clNwYWNlICE9IENvbG9yU3BhY2U6OkxpbmVhclJHQiAmJiBzcmNDb2xvclNwYWNlICE9IENvbG9y
U3BhY2U6OlNSR0IpCisgICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBDb2xvclNwYWNlOjpM
aW5lYXJSR0IgJiYgZGVzdENvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6U1JHQikpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBDb2xvclNwYWNlOjpMaW5lYXJS
R0IpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBsaW5l
YXJSZ2JMVVQgPSBbXSB7CisgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJy
YXk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKyAg
ICAgICAgICAgICAgICBmbG9hdCBjb2xvciA9IGkgLyAyNTUuMGY7CisgICAgICAgICAgICAgICAg
Y29sb3IgPSBzUkdCVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xvcik7CisgICAgICAgICAgICAg
ICAgYXJyYXlbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZChjb2xvciAqIDI1NSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGFycmF5OworICAgICAgICB9KCk7Cisg
ICAgICAgIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShsaW5lYXJSZ2JMVVQpOworICAgIH0g
ZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gQ29sb3JTcGFjZTo6U1JHQikgeworICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGRldmljZVJnYkxVVD0gW10gewor
ICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisgICAgICAgICAgICAgICAgZmxv
YXQgY29sb3IgPSBpIC8gMjU1LjBmOworICAgICAgICAgICAgICAgIGNvbG9yID0gbGluZWFyVG9T
UkdCQ29sb3JDb21wb25lbnQoY29sb3IpOworICAgICAgICAgICAgICAgIGFycmF5W2ldID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4ocm91bmQoY29sb3IgKiAyNTUpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBhcnJheTsKKyAgICAgICAgfSgpOworICAgICAgICBwbGF0Zm9ybVRy
YW5zZm9ybUNvbG9yU3BhY2UoZGV2aWNlUmdiTFVUKTsKKyAgICB9Cit9CisKK1N0cmluZyBJbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAoreworICAg
IFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1YWxpdHkp
OworICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gImRhdGE6
LCI7CisKKyAgICBWZWN0b3I8Y2hhcj4gYmFzZTY0RGF0YTsKKyAgICBiYXNlNjRFbmNvZGUoZW5j
b2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSwgYmFzZTY0RGF0YSk7CisKKyAg
ICByZXR1cm4gImRhdGE6IiArIG1pbWVUeXBlICsgIjtiYXNlNjQsIiArIGJhc2U2NERhdGE7Cit9
CisKK1ZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dG9EYXRhKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5j
b2RpbmcobWltZVR5cGUpKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0gY2Fpcm9fZ2V0
X3RhcmdldChjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIHJldHVybiBk
YXRhKGltYWdlLCBtaW1lVHlwZSwgcXVhbGl0eSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIzYjkxOWFkNTIyZWExNzhiMzJjMDA5ZjVkODhkNWQ3MTZkZWYzYTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgPHplY2tlQHNlbGZp
c2gub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3
ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykg
Q28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1
ZGUgIkltYWdlQnVmZmVyQmFja2VuZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQmFja2VuZCB7Citw
dWJsaWM6CisgICAgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENv
cHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6
Tm8pIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworCisgICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNw
YWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkg
b3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CisKK3Byb3RlY3RlZDoK
KyAgICB1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZDsKKworICAg
IENvbG9yRm9ybWF0IGJhY2tlbmRDb2xvckZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IENvbG9yRm9ybWF0OjpCR1JBOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtVHJhbnNmb3Jt
Q29sb3JTcGFjZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4mKSB7IH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9H
TFN1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzYz
NzJmOTE5ZTdlY2U4Y2JjNmEyNjNjNDg5Yzk5ZTBlODc2MjQzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dM
U3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJp
Z2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyIDx6ZWNrZUBzZWxmaXNoLm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0
Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBM
dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fp
cm9HTFN1cmZhY2VCYWNrZW5kLmgiCisKKyNpZiBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2luY2x1ZGUgIkdMQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CisKKyNpZiBVU0UoRUdMKQorI2lmIFVTRShMSUJFUE9YWSkKKyNpbmNs
dWRlICJFcG94eUVHTC5oIgorI2Vsc2UKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjZW5kaWYKKyNl
bmRpZgorI2luY2x1ZGUgPGNhaXJvLWdsLmg+CisKKyNpZiBVU0UoTElCRVBPWFkpCisjaW5jbHVk
ZSA8ZXBveHkvZ2wuaD4KKyNlbGlmIFVTRShPUEVOR0xfRVMpCisjaW5jbHVkZSA8R0xFUzIvZ2wy
Lmg+CisjZWxzZQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKworI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIK
KyNlbmRpZgorCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDYWlyb0dM
U3VyZmFjZUJhY2tlbmQpOworCitzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJTdXJmYWNlKGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSkKK3sKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJl
ZihjYWlyb19jcmVhdGUoc3VyZmFjZSkpOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjci5nZXQo
KSwgQ0FJUk9fT1BFUkFUT1JfQ0xFQVIpOworICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKK30K
Kworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhv
c3RXaW5kb3cqKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5k
U2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byogY29udGV4dCA9IFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4
dCgpOworICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgLy8gV2UgbXVz
dCBnZW5lcmF0ZSB0aGUgdGV4dHVyZSBvdXJzZWx2ZXMsIGJlY2F1c2UgdGhlcmUgaXMgbm8gQ2Fp
cm8gQVBJIGZvciBleHRyYWN0aW5nIGl0CisgICAgLy8gZnJvbSBhIHByZS1leGlzdGluZyBzdXJm
YWNlLgorICAgIHVpbnQzMl90IHRleHR1cmUKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJl
KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIGdsVGV4
UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9f
RURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisKKyAg
ICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOworCisgICAgZ2xUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDAgLyogbGV2ZWwgKi8sIEdMX1JHQkEsIGJhY2tlbmRTaXplLndp
ZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCAwIC8qIGJvcmRlciAqLywgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgMCk7CisKKyAgICBjYWlyb19kZXZpY2VfdCogZGV2aWNlID0gY29udGV4
dC0+Y2Fpcm9EZXZpY2UoKTsKKworICAgIC8vIFRocmVhZC1hd2FyZW5lc3MgaXMgYSBodWdlIHBl
cmZvcm1hbmNlIGhpdCBvbiBub24tSW50ZWwgZHJpdmVycy4KKyAgICBjYWlyb19nbF9kZXZpY2Vf
c2V0X3RocmVhZF9hd2FyZShkZXZpY2UsIEZBTFNFKTsKKworICAgIGF1dG8gc3VyZmFjZSA9IGFk
b3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJlKGRldmljZSwgQ0FJUk9f
Q09OVEVOVF9DT0xPUl9BTFBIQSwgdGV4dHVyZSwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2Vu
ZFNpemUuaGVpZ2h0KCkpKTsKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZSkg
IT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Y2xlYXJTdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyQ2Fpcm9H
TFN1cmZhY2VCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIFdURk1vdmUoc3VyZmFjZSksIHRleHR1cmUpKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JikKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBudWxscHRyKTsKK30KKworSW1hZ2VC
dWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNr
ZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNlLCB1aW50MzJfdCB0ZXh0dXJlKQorICAgIDogSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKHN1cmZhY2UpKQorICAgICwgbV90ZXh0
dXJlKHRleHR1cmUpCit7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2lmIFVTRShO
SUNPU0lBKQorICAgIG1fbmljb3NpYUxheWVyID0gTmljb3NpYTo6Q29udGVudExheWVyOjpjcmVh
dGUoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3Rvcnko
KnRoaXMpKTsKKyNlbHNlCisgICAgbV9wbGF0Zm9ybUxheWVyUHJveHkgPSBhZG9wdFJlZihuZXcg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSk7CisjZW5kaWYKKyNlbmRpZgorfQorCitJ
bWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZDo6fkltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZh
Y2VCYWNrZW5kKCkKK3sKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpICYmIFVTRShOSUNP
U0lBKQorICAgIGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
PihtX25pY29zaWFMYXllci0+aW1wbCgpKS5pbnZhbGlkYXRlQ2xpZW50KCk7CisjZW5kaWYKKwor
ICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50
KCk7CisgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5z
aGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgaWYgKG1fdGV4
dHVyZSkKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKKworI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkKKyAg
ICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CisjZW5kaWYK
KworICAgIGlmIChwcmV2aW91c0FjdGl2ZUNvbnRleHQpCisgICAgICAgIHByZXZpb3VzQWN0aXZl
Q29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEltYWdl
QnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBy
ZXR1cm4gbV9uaWNvc2lhTGF5ZXIuZ2V0KCk7CisjZWxzZQorICAgIGlmIChtX3RleHR1cmUpCisg
ICAgICAgIHJldHVybiB0aGlzOworI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jv
b2wgSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6OmNvcHlUb1BsYXRmb3JtVGV4dHVy
ZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgZGVzdGluYXRpb25UZXh0dXJlLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZ
KQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9yZXNvbHV0aW9uU2NhbGUgPT0gMS4wLCAi
U2luY2UgdGhlIEhpRFBJIENhbnZhcyBmZWF0dXJlIGlzIHJlbW92ZWQsIHRoZSByZXNvbHV0aW9u
IGZhY3RvciBoZXJlIGlzIGFsd2F5cyAxLiIpOworICAgIGlmIChwcmVtdWx0aXBseUFscGhhIHx8
IGZsaXBZKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fdGV4dHVyZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR0MzRGVudW0gYmluZFRleHR1cmVUYXJnZXQ7Cisg
ICAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgIGJp
bmRUZXh0dXJlVGFyZ2V0ID0gR0xfVEVYVFVSRV8yRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6CisgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1g6CisgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1k6CisgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1o6CisgICAgICAgIGJpbmRUZXh0dXJlVGFyZ2V0ID0gR0xfVEVYVFVSRV9D
VUJFX01BUDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGNhaXJvX3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNvbnRleHQgPSBHTENvbnRleHQ6OmNy
ZWF0ZU9mZnNjcmVlbkNvbnRleHQoJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNv
bXBvc2l0aW5nKCkpOworICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHVp
bnQzMl90IGZibzsKKyAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKKyAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwg
bV90ZXh0dXJlLCAwKTsKKyAgICBnbEJpbmRUZXh0dXJlKGJpbmRUZXh0dXJlVGFyZ2V0LCBkZXN0
aW5hdGlvblRleHR1cmUpOworICAgIGdsQ29weVRleEltYWdlMkQodGFyZ2V0LCAwLCBpbnRlcm5h
bGZvcm1hdCwgMCwgMCwgbV9iYWNrZW5kU2l6ZS53aWR0aCgpLCBtX2JhY2tlbmRTaXplLmhlaWdo
dCgpLCAwKTsKKyAgICBnbEJpbmRUZXh0dXJlKGJpbmRUZXh0dXJlVGFyZ2V0LCAwKTsKKyAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgZ2xGbHVzaCgpOworICAg
IGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgIHJldHVybiB0cnVlOworfQorCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQordm9pZCBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJm
YWNlQmFja2VuZDo6Y3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigpCit7CisgICAgYXV0byogY29udGV4
dCA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmlu
Z0dMQ29udGV4dCgpOworICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAg
Z2xHZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRl
cmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwor
ICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xf
Q0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsUGl4ZWxT
dG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAgLCBHTF9SR0JBLCBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUu
aGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworCisgICAgbV9jb21w
b3NpdG9yU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0
dXJlKGNvbnRleHQtPmNhaXJvRGV2aWNlKCksIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG1f
Y29tcG9zaXRvclRleHR1cmUsIG1fYmFja2VuZFNpemUud2lkdGgoKSwgbV9iYWNrZW5kU2l6ZS5o
ZWlnaHQoKSkpOworICAgIG1fY29tcG9zaXRvckNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1f
Y29tcG9zaXRvclN1cmZhY2UuZ2V0KCkpKTsKKyAgICBjYWlyb19zZXRfYW50aWFsaWFzKG1fY29t
cG9zaXRvckNyLmdldCgpLCBDQUlST19BTlRJQUxJQVNfTk9ORSk7Cit9CisKK3ZvaWQgSW1hZ2VC
dWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQoreworICAg
IEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7
CisKKyAgICBpZiAoIW1fY29tcG9zaXRvclRleHR1cmUpIHsKKyAgICAgICAgY3JlYXRlQ29tcG9z
aXRvckJ1ZmZlcigpOworCisgICAgICAgIGF1dG8gcHJveHlPcGVyYXRpb24gPQorICAgICAgICAg
ICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7
CisgICAgICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9iYWNrZW5k
U2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOworICAgICAgICAg
ICAgfTsKKyNpZiBVU0UoTklDT1NJQSkKKyAgICAgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8
Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5p
bXBsKCkpLnByb3h5KCkpOworI2Vsc2UKKyAgICAgICAgcHJveHlPcGVyYXRpb24oKm1fcGxhdGZv
cm1MYXllclByb3h5KTsKKyNlbmRpZgorICAgIH0KKworICAgIC8vIEl0IHdvdWxkIGJlIGdyZWF0
IGlmIHdlIGNvdWxkIGp1c3Qgc3dhcCB0aGUgYnVmZmVycyBoZXJlIGFzIHdlIGRvIHdpdGggd2Vi
Z2wsIGJ1dCB0aGF0IGJyZWFrcyB0aGUgY2FzZXMKKyAgICAvLyB3aGVyZSBvbmUgZnJhbWUgdXNl
cyB0aGUgY29udGVudCBhbHJlYWR5IHJlbmRlcmVkIGluIHRoZSBwcmV2aW91cyBmcmFtZS4gU28g
d2UganVzdCBjb3B5IHRoZSBjb250ZW50CisgICAgLy8gaW50byB0aGUgY29tcG9zaXRvciBidWZm
ZXIuCisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKG1fY29tcG9zaXRvckNyLmdldCgpLCBt
X3N1cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2NvbXBvc2l0
b3JDci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBjYWlyb19wYWludChtX2Nv
bXBvc2l0b3JDci5nZXQoKSk7CisKKyAgICBpZiAocHJldmlvdXNBY3RpdmVDb250ZXh0KQorICAg
ICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworfQorI2Vs
c2UKK3ZvaWQgSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0
eSkKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlKTsKKworICAgIC8vIENhaXJvIG1heSBjaGFuZ2Ug
dGhlIGFjdGl2ZSBjb250ZXh0LCBzbyB3ZSBtYWtlIHN1cmUgdG8gY2hhbmdlIGl0IGJhY2sgYWZ0
ZXIgZmx1c2hpbmcuCisgICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENv
bnRleHQ6OmN1cnJlbnQoKTsKKyAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQo
KSk7CisgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKwor
ICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCY+KHRleHR1cmVNYXBwZXIpLmRyYXdUZXh0
dXJlKG1fdGV4dHVyZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgbV9iYWNrZW5kU2l6
ZSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5KTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRF
RF8yRF9DQU5WQVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tl
bmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZGYwZmFlN2UyYzM0OWUyMTY0MTk4NDU1ZDQxOGMzY2FiNjc0N2I0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQuaApAQCAtMCwwICsxLDkyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
IDx6ZWNrZUBzZWxmaXNoLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEaXJrIFNj
aHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2Jp
bGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0FJ
Uk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisK
KyNpZiBVU0UoTklDT1NJQSkKKyNpbmNsdWRlICJOaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1h
cHBlckltcGwuaCIKKyNlbHNlCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJh
Y2tlbmQKKyNpZiBVU0UoTklDT1NJQSkKKyAgICA6IHB1YmxpYyBOaWNvc2lhOjpDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50CisjZWxzZQorICAgIDogcHVibGljIFBsYXRmb3Jt
TGF5ZXIKKyNlbmRpZgorICAgICwgcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlckNhaXJvR0xTdXJmYWNl
QmFja2VuZCk7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJDYWlyb0dMU3Vy
ZmFjZUJhY2tlbmQpOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9HTFN1cmZhY2VCYWNrZW5kPiBj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisKKyAgICB+
SW1hZ2VCdWZmZXJDYWlyb0dMU3VyZmFjZUJhY2tlbmQoKTsKKworICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvcHlUb1BsYXRmb3Jt
VGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgZGVzdGluYXRpb25UZXh0
dXJlLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
IGZsaXBZKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBJbWFnZUJ1ZmZlckNhaXJvR0xTdXJm
YWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBi
YWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiYmKTsKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICB2
b2lkIGNyZWF0ZUNvbXBvc2l0b3JCdWZmZXIoKTsKKyAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVk
ZWQoKSBvdmVycmlkZTsKKyNpZiAhVVNFKE5JQ09TSUEpCisgICAgUmVmUHRyPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9w
bGF0Zm9ybUxheWVyUHJveHkuY29weVJlZigpOyB9CisjZW5kaWYKKyNlbHNlCisgICAgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CisjZW5kaWYK
KworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBS
ZWZQdHI8Tmljb3NpYTo6Q29udGVudExheWVyPiBtX25pY29zaWFMYXllcjsKKyNlbHNlCisgICAg
UmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IG1fcGxhdGZvcm1MYXllclBy
b3h5OworI2VuZGlmCisgICAgdWludDMyX3QgbV90ZXh0dXJlOworICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IG1fY29tcG9zaXRvclN1cmZhY2U7CisgICAgUmVmUHRyPGNhaXJvX3Q+IG1fY29t
cG9zaXRvckNyOworICAgIHVpbnQzMl90IG1fY29tcG9zaXRvclRleHR1cmUgeyAwIH07CisjZW5k
aWYKKyAgICB1aW50MzJfdCBtX3RleHR1cmUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0FJUk8pICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVmMmRkZTk4ZWI3NGU0ZTIxMDNjYWM0NDE4ZjdiNThlYTll
MWNmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcApAQCAtMCwwICsx
LDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBU
b3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgiCisKKyNp
ZiBVU0UoQ0FJUk8pCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgPGNhaXJvLmg+Cisj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQpOworCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCit7CisgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0
YV9rZXlfdCBzX3N1cmZhY2VEYXRhS2V5OworCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNh
bGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgaWYgKGJhY2tl
bmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpbnQgc3Ry
aWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwg
YmFja2VuZFNpemUud2lkdGgoKSk7CisgICAgdm9pZCogc3VyZmFjZURhdGE7CisgICAgaWYgKCF0
cnlGYXN0WmVyb2VkTWFsbG9jKGJhY2tlbmRTaXplLmhlaWdodCgpICogc3RyaWRlKS5nZXRWYWx1
ZShzdXJmYWNlRGF0YSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBzdXJm
YWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHN1cmZhY2VEYXRhKSwgQ0FJUk9fRk9STUFUX0FSR0IzMiwg
YmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIHN0cmlkZSkpOworICAg
IGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0
YUtleSwgc3VyZmFjZURhdGEsIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgZmFzdEZyZWUoZGF0
YSk7CisgICAgfSk7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RG
TW92ZShzdXJmYWNlKSkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKQorewor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNp
emUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIpOworfQorCitJbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiYmIHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIFdURk1vdmUoc3VyZmFjZSkpCit7CisgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5
cGUobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOworfQorCit2
b2lkIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpwbGF0Zm9ybVRyYW5zZm9y
bUNvbG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkK
K3sKKyAgICB1bnNpZ25lZCBjaGFyKiBkYXRhU3JjID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
ZGF0YShtX3N1cmZhY2UuZ2V0KCkpOworICAgIGludCBzdHJpZGUgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8
IG1fbG9naWNhbFNpemUuaGVpZ2h0KCk7ICsreSkgeworICAgICAgICB1bnNpZ25lZCogcm93ID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihkYXRhU3JjICsgc3RyaWRlICogeSk7Cisg
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgbV9sb2dpY2FsU2l6ZS53aWR0aCgpOyB4KyspIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkKiBwaXhlbCA9IHJvdyArIHg7CisgICAgICAgICAgICBDb2xv
ciBwaXhlbENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKKyAgICAg
ICAgICAgIHBpeGVsQ29sb3IgPSBDb2xvcihsb29rVXBUYWJsZVtwaXhlbENvbG9yLnJlZCgpXSwg
bG9va1VwVGFibGVbcGl4ZWxDb2xvci5ncmVlbigpXSwgbG9va1VwVGFibGVbcGl4ZWxDb2xvci5i
bHVlKCldLCBwaXhlbENvbG9yLmFscGhhKCkpOworICAgICAgICAgICAgKnBpeGVsID0gcHJlbXVs
dGlwbGllZEFSR0JGcm9tQ29sb3IocGl4ZWxDb2xvcik7CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShtX3N1cmZhY2UuZ2V0KCksIDAsIDAs
IG1fbG9naWNhbFNpemUud2lkdGgoKSwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2
MDAzNzk0ZmRhYTk0NzMyYjYxNTU3YzQxZTg0NDIzMWE5OGE3MDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
SW1hZ2VTdXJmYWNlQmFja2VuZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgPHplY2tlQHNlbGZpc2gu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJr
aXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28u
IEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUg
IkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2MuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQg
eworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQpOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93Kik7
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OworCitwcml2YXRlOgorICAgIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
JiYpOworCisgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOjph
cnJheTx1aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmQxNWYwYmEyMjIx
MGY3YTE3NGJhNzA3ZWQyNjE4MGMxOGZlYTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kLmNwcApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAw
NyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJh
Y2tlbmQuaCIKKworI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiQ2Fpcm9PcGVy
YXRpb25zLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uaCIKKyNp
bmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlIDxjYWlyby5oPgorCisjaWYgVVNFKENBSVJP
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZDo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBzdXJmYWNl
KQorICAgIDogSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCisgICAgLCBtX3N1cmZhY2UoV1RGTW92ZShz
dXJmYWNlKSkKK3sKKyAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9zdGF0dXMobV9zdXJmYWNlLmdl
dCgpKSA9PSBDQUlST19TVEFUVVNfU1VDQ0VTUyk7CisKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY3Ig
PSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9zdXJmYWNlLmdldCgpKSk7CisgICAgbV9wbGF0Zm9y
bUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOworICAgIG1fY29udGV4dCA9IG1ha2VVbmlxdWU8R3Jh
cGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9w
bGF0Zm9ybUNvbnRleHQpKTsKK30KKworR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiAqbV9jb250ZXh0
OworfQorCit1bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVy
Um93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KG1fc3VyZmFjZS5nZXQoKSk7Cit9CisKK05hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yKSBjb25zdAoreworICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CisgICAgY2FzZSBDb3B5
QmFja2luZ1N0b3JlOiB7CisgICAgICAgIGF1dG8gY29weSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsCisgICAgICAgIGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X3dpZHRoKG1fc3VyZmFjZS5nZXQoKSksCisgICAgICAgIGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2hlaWdodChtX3N1cmZhY2UuZ2V0KCkpKSk7CisKKyAgICAgICAgYXV0byBj
ciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShjb3B5LmdldCgpKSk7CisgICAgICAgIGNhaXJvX3Nl
dF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICAgICAgY2Fp
cm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOwor
ICAgICAgICBjYWlyb19wYWludChjci5nZXQoKSk7CisKKyAgICAgICAgcmV0dXJuIGNvcHk7Cisg
ICAgfQorCisgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKKyAgICAgICAgcmV0dXJuIG1f
c3VyZmFjZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKK3sKKyAgICBCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvcjsKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3N1
cmZhY2UuZ2V0KCkpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSAmJiBjYWlyb19zdXJmYWNl
X2dldF9jb250ZW50KG1fc3VyZmFjZS5nZXQoKSkgPT0gQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBI
QSkKKyAgICAgICAgY29weUJlaGF2aW9yID0gRG9udENvcHlCYWNraW5nU3RvcmU7CisgICAgZWxz
ZQorICAgICAgICBjb3B5QmVoYXZpb3IgPSBDb3B5QmFja2luZ1N0b3JlOworICAgIHJldHVybiBj
b3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0Cit7CisgICAgYXV0
byBzdXJmYWNlID0gY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpOworICAgIGNhaXJvX3N1cmZh
Y2VfZmx1c2goc3VyZmFjZS5nZXQoKSk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRh
OworICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlLmdldCgpKSkKKyAgICAgICAg
cmV0dXJuIGltYWdlRGF0YTsKKworICAgIGF1dG8gcGl4ZWxzID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShzdXJmYWNlLmdldCgpKTsKKyAgICBpbWFnZURhdGEuYXBwZW5kKHBpeGVscywg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UuZ2V0KCkpICoKKyAgICAgICAg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkpKTsKKworICAgIHJl
dHVybiBpbWFnZURhdGE7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAoreworICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9zdXJmYWNlLmdldCgpKSk7Cit9CisKK3ZvaWQgSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IElu
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpCit7CisgICAgSW1hZ2VC
dWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdlRGF0YSwgc3JjUmVj
dCwgZGVzdFBvaW50LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQo
KSkpOworCisgICAgSW50UmVjdCBzcmNSZWN0U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMo
c3JjUmVjdCk7CisgICAgSW50UG9pbnQgZGVzdFBvaW50U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRp
bmF0ZXMoZGVzdFBvaW50KTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xl
KG1fc3VyZmFjZS5nZXQoKSwgZGVzdFBvaW50U2NhbGVkLngoKSwgZGVzdFBvaW50U2NhbGVkLnko
KSwgc3JjUmVjdFNjYWxlZC53aWR0aCgpLCBzcmNSZWN0U2NhbGVkLmhlaWdodCgpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTQ5ZmYzNzM3
NDg4MjQ1NTFlM2U0ZWZlNWEyYjRkNjY5M2YwNTUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAw
NyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENBSVJPKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZCA6
IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZCB7CitwdWJsaWM6CisgICAgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBOYXRpdmVJbWFnZVB0ciBj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBW
ZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxJ
bWFnZURhdGE+IGdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcHV0SW1hZ2VEYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQpIG92ZXJyaWRl
OworCitwcm90ZWN0ZWQ6CisgICAgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYp
OworCisgICAgTmF0aXZlSW1hZ2VQdHIgY2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpIGNvbnN0
OworICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBtdXRh
YmxlIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKKyAgICBQbGF0Zm9ybUNvbnRl
eHRDYWlybyBtX3BsYXRmb3JtQ29udGV4dCB7IG51bGxwdHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE2MWUzNTk5NDZlZjRiYWQ2OTIzZmRiZjc1NjRh
MmUzOWY3NjljNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFD
YWlyby5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFDYWly
b19oCi0jZGVmaW5lIEltYWdlQnVmZmVyRGF0YUNhaXJvX2gKLQotI2lmIFVTRShDQUlSTykKLQot
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8u
aCIKLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0jaW5jbHVkZSAiUGxhdGZv
cm1MYXllci5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKLSNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlQcm92aWRlci5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRf
Q0FOVkFTKSAmJiBVU0UoTklDT1NJQSkKLSNpbmNsdWRlICJOaWNvc2lhQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGwuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEludFNpemU7Ci1jbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OwotCi1jbGFz
cyBJbWFnZUJ1ZmZlckRhdGEKLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotI2lm
IFVTRShOSUNPU0lBKQotICAgIDogcHVibGljIE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsOjpDbGllbnQKLSNlbHNlCi0gICAgOiBwdWJsaWMgUGxhdGZvcm1MYXllcgotI2Vu
ZGlmCi0jZW5kaWYKLXsKLXB1YmxpYzoKLSAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6
ZSYsIFJlbmRlcmluZ01vZGUpOwotICAgIHZpcnR1YWwgfkltYWdlQnVmZmVyRGF0YSgpOwotCi0g
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9zdXJmYWNlOwotICAgIFBsYXRmb3JtQ29udGV4
dENhaXJvIG1fcGxhdGZvcm1Db250ZXh0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ+IG1fY29udGV4dDsKLSAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBSZW5kZXJpbmdNb2Rl
IG1fcmVuZGVyaW5nTW9kZTsKLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0g
ICAgdm9pZCBjcmVhdGVDYWlyb0dMU3VyZmFjZSgpOwotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQotI2lmIFVTRShOSUNPU0lBKQotICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgp
IG92ZXJyaWRlOwotI2Vsc2UKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eT4gcHJveHkoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVk
ZWQoKSBvdmVycmlkZTsKLSNlbmRpZgotICAgIHZvaWQgY3JlYXRlQ29tcG9zaXRvckJ1ZmZlcigp
OwotCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9jb21wb3NpdG9yU3VyZmFjZTsKLSAg
ICB1aW50MzJfdCBtX2NvbXBvc2l0b3JUZXh0dXJlOwotICAgIFJlZlB0cjxjYWlyb190PiBtX2Nv
bXBvc2l0b3JDcjsKLQotI2lmIFVTRShOSUNPU0lBKQotICAgIFJlZlB0cjxOaWNvc2lhOjpDb250
ZW50TGF5ZXI+IG1fbmljb3NpYUxheWVyOwotI2Vsc2UKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eT4gbV9wbGF0Zm9ybUxheWVyUHJveHk7Ci0jZW5kaWYKLSNlbHNl
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9h
dCBvcGFjaXR5KTsKLSNlbmRpZgotICAgIHVpbnQzMl90IG1fdGV4dHVyZTsKLSNlbmRpZgotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQotCi0jZW5k
aWYgLy8gSW1hZ2VCdWZmZXJEYXRhQ2Fpcm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWZkNWU0ZWM3MTllZGI0OTNmNzlkYmJmYWJlNWFmOTNjYTA2NzA5Yi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQ5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNo
IE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0KLSNpZiBVU0UoQ0cpCi0KLSNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dENHLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIgotI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJNSU1F
VHlwZVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9Db3JlR3JhcGhpY3MuaD4KLSNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KLSNpbmNsdWRl
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+Ci0jaW5jbHVkZSA8d3RmL0Rl
YnVnSGVhcC5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiVVRJVXRp
bGl0aWVzLmgiCi0jZW5kaWYKLQotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RP
UkUpCi0jaW5jbHVkZSAiSU9TdXJmYWNlLmgiCi0jaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1
cmZhY2VTUEkuaD4KLSNlbmRpZgotCi0vLyBDQSB1c2VzIEFSR0IzMiBmb3IgdGV4dHVyZXMgYW5k
IEFSR0IzMiAtPiBBUkdCMzIgcmVzYW1wbGluZyBpcyBvcHRpbWl6ZWQuCi0jZGVmaW5lIFVTRV9B
UkdCMzIgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ERUNM
QVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihJbWFnZUJ1ZmZlcik7Ci1ERUZJTkVf
QUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEltYWdlQnVmZmVyKTsKLQotc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsK
LSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZTsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KTsKLSAgICBzd2l0Y2ggKENHQ29udGV4dEdldFR5cGUoY2dDb250ZXh0KSkgewotICAgIGNhc2Ug
a0NHQ29udGV4dFR5cGVCaXRtYXA6Ci0gICAgICAgIGNvbG9yU3BhY2UgPSBDR0JpdG1hcENvbnRl
eHRHZXRDb2xvclNwYWNlKGNnQ29udGV4dCk7Ci0gICAgICAgIGJyZWFrOwotI2lmIEhBVkUoSU9T
VVJGQUNFKQotICAgIGNhc2Uga0NHQ29udGV4dFR5cGVJT1N1cmZhY2U6Ci0gICAgICAgIGNvbG9y
U3BhY2UgPSBDR0lPU3VyZmFjZUNvbnRleHRHZXRDb2xvclNwYWNlKGNnQ29udGV4dCk7Ci0gICAg
ICAgIGJyZWFrOwotI2VuZGlmCi0gICAgZGVmYXVsdDoKLSAgICAgICAgY29sb3JTcGFjZSA9IGFk
b3B0Q0YoQ0dDb250ZXh0Q29weURldmljZUNvbG9yU3BhY2UoY2dDb250ZXh0KSk7Ci0gICAgfQot
Ci0gICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKLSNlbHNlCi0gICAgY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0j
ZW5kaWYKLSAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBjb250ZXh0LnJlbmRlcmlu
Z01vZGUoKTsKLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJs
ZUJ1ZmZlclNpemUoc2l6ZSwgY29udGV4dCk7Ci0gICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIobmV3IEltYWdlQnVmZmVyKHNj
YWxlZFNpemUsIDEsIGNvbG9yU3BhY2UuZ2V0KCksIHJlbmRlcmluZ01vZGUsIG51bGxwdHIsIHN1
Y2Nlc3MpKTsKLQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICAvLyBTZXQgdXAgYSBjb3JyZXNwb25kaW5nIHNjYWxlIGZhY3RvciBvbiB0aGUgZ3JhcGhp
Y3MgY29udGV4dC4KLSAgICBidWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6
ZSk7Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKLX0KLQotSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2lu
ZG93KiBob3N0V2luZG93LCBib29sJiBzdWNjZXNzKQotICAgIDogbV9sb2dpY2FsU2l6ZShzaXpl
KQotICAgICwgbV9yZXNvbHV0aW9uU2NhbGUocmVzb2x1dGlvblNjYWxlKQotewotICAgIHN1Y2Nl
c3MgPSBmYWxzZTsgLy8gTWFrZSBlYXJseSByZXR1cm4gbWVhbiBmYWlsdXJlLgotICAgIGZsb2F0
IHNjYWxlZFdpZHRoID0gY2VpbGYocmVzb2x1dGlvblNjYWxlICogc2l6ZS53aWR0aCgpKTsKLSAg
ICBmbG9hdCBzY2FsZWRIZWlnaHQgPSBjZWlsZihyZXNvbHV0aW9uU2NhbGUgKiBzaXplLmhlaWdo
dCgpKTsKLQotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYXV0b21hdGljYWxseSB1c2UgYSBsb3dl
ciByZXNvbHV0aW9uPwotICAgIGlmICghRmxvYXRTaXplKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWln
aHQpLmlzRXhwcmVzc2libGVBc0ludFNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9z
aXplID0gSW50U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKLSAgICBtX2RhdGEuYmFj
a2luZ1N0b3JlU2l6ZSA9IG1fc2l6ZTsKLQotICAgIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZyA9
IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7Ci0gICAgaWYgKG1f
c2l6ZS53aWR0aCgpIDw9IDAgfHwgbV9zaXplLmhlaWdodCgpIDw9IDApCi0gICAgICAgIHJldHVy
bjsKLQotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgQ2hlY2tl
ZDxpbnQsIFJlY29yZE92ZXJmbG93PiB3aWR0aCA9IG1fc2l6ZS53aWR0aCgpOwotICAgIENoZWNr
ZWQ8aW50LCBSZWNvcmRPdmVyZmxvdz4gaGVpZ2h0ID0gbV9zaXplLmhlaWdodCgpOwotI2VuZGlm
Ci0KLSAgICAvLyBQcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzCi0gICAgbV9kYXRhLmJ5dGVzUGVy
Um93ID0gNCAqIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihtX2RhdGEuYmFja2lu
Z1N0b3JlU2l6ZS53aWR0aCgpKTsKLSAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+
IG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5iYWNr
aW5nU3RvcmVTaXplLmhlaWdodCgpKSAqIG1fZGF0YS5ieXRlc1BlclJvdzsKLSAgICBpZiAobnVt
Qnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSNpZiBVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgIEludFNpemUgbWF4U2l6ZSA9IElPU3VyZmFj
ZTo6bWF4aW11bVNpemUoKTsKLSAgICBpZiAod2lkdGgudW5zYWZlR2V0KCkgPiBtYXhTaXplLndp
ZHRoKCkgfHwgaGVpZ2h0LnVuc2FmZUdldCgpID4gbWF4U2l6ZS5oZWlnaHQoKSkKLSAgICAgICAg
YWNjZWxlcmF0ZVJlbmRlcmluZyA9IGZhbHNlOwotI2Vsc2UKLSAgICBBU1NFUlQocmVuZGVyaW5n
TW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKLSNlbmRpZgotCi0gICAgbV9k
YXRhLmNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwotCi0gICAgUmV0YWluUHRyPENHQ29udGV4dFJl
Zj4gY2dDb250ZXh0OwotICAgIGlmIChhY2NlbGVyYXRlUmVuZGVyaW5nKSB7Ci0jaWYgVVNFKElP
U1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICAgICAgRmxvYXRTaXplIHVzZXJCb3Vu
ZHMgPSBGbG9hdFNpemUod2lkdGgudW5zYWZlR2V0KCksIGhlaWdodC51bnNhZmVHZXQoKSk7Ci0g
ICAgICAgIG1fZGF0YS5zdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUobV9kYXRhLmJhY2tpbmdT
dG9yZVNpemUsIEludFNpemUodXNlckJvdW5kcyksIGNvbG9yU3BhY2UpOwotICAgICAgICBpZiAo
bV9kYXRhLnN1cmZhY2UpIHsKLSAgICAgICAgICAgIGNnQ29udGV4dCA9IG1fZGF0YS5zdXJmYWNl
LT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoaG9zdFdpbmRvdyk7Ci0gICAgICAgICAgICBpZiAoY2dD
b250ZXh0KQotICAgICAgICAgICAgICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0
KCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHVzZXJCb3VuZHMpKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBtX2RhdGEuc3VyZmFjZSA9IG51bGxwdHI7Ci0gICAgICAgIH0K
LSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShob3N0V2luZG93KTsKLSNlbmRpZgotICAgICAg
ICBpZiAoIWNnQ29udGV4dCkKLSAgICAgICAgICAgIGFjY2VsZXJhdGVSZW5kZXJpbmcgPSBmYWxz
ZTsgLy8gSWYgYWxsb2NhdGlvbiBmYWlscywgZmFsbCBiYWNrIHRvIG5vbi1hY2NlbGVyYXRlZCBw
YXRoLgotICAgIH0KLQotICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAgICBt
X2RhdGEuZGF0YSA9IEltYWdlQnVmZmVyTWFsbG9jOjp0cnlaZXJvZWRNYWxsb2MobV9kYXRhLmJh
Y2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkgKiBtX2RhdGEuYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCkp
OwotICAgICAgICBpZiAoIW1fZGF0YS5kYXRhKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90PihtX2RhdGEuZGF0YSkgJiAzKSk7
Ci0KLSNpZiBVU0VfQVJHQjMyCi0gICAgICAgIG1fZGF0YS5iaXRtYXBJbmZvID0ga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsKLSNlbHNl
Ci0gICAgICAgIG1fZGF0YS5iaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0OwotI2VuZGlmCi0gICAgICAgIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKG1fZGF0YS5kYXRhLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2Rh
dGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgOCwgbV9kYXRhLmJ5dGVzUGVyUm93LnVuc2Fm
ZUdldCgpLCBtX2RhdGEuY29sb3JTcGFjZSwgbV9kYXRhLmJpdG1hcEluZm8pKTsKLSAgICAgICAg
Y29uc3QgYXV0byByZWxlYXNlSW1hZ2VEYXRhID0gW10gKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QpIHsKLSAgICAgICAgICAgIEltYWdlQnVmZmVyTWFsbG9jOjpmcmVlKGNvbnN0X2Nh
c3Q8dm9pZCo+KGRhdGEpKTsKLSAgICAgICAgfTsKLSAgICAgICAgLy8gQ3JlYXRlIGEgbGl2ZSBp
bWFnZSB0aGF0IHdyYXBzIHRoZSBkYXRhLgotICAgICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmln
RW5vdWdoKG1fZGF0YS5kYXRhLCBudW1CeXRlcy51bnNhZmVHZXQoKSk7Ci0gICAgICAgIG1fZGF0
YS5kYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwg
bV9kYXRhLmRhdGEsIG51bUJ5dGVzLnVuc2FmZUdldCgpLCByZWxlYXNlSW1hZ2VEYXRhKSk7Ci0K
LSAgICAgICAgaWYgKCFjZ0NvbnRleHQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
bV9kYXRhLmNvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0Lmdl
dCgpKTsKLSAgICB9Ci0KLSAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0g
ICAgY29udGV4dCgpLnRyYW5zbGF0ZSgwLCAtbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0
KCkpOwotICAgIGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNj
YWxlKTsKLQotICAgIHN1Y2Nlc3MgPSB0cnVlOwotfQotCi1JbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgaW1hZ2VDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wmIHN1Y2Nlc3MpCi0gICAgOiBJbWFnZUJ1ZmZlcihz
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNhY2hlZENHQ29sb3JTcGFjZShpbWFnZUNvbG9yU3BhY2Up
LCByZW5kZXJpbmdNb2RlLCBob3N0V2luZG93LCBzdWNjZXNzKQotewotfQotCi1JbWFnZUJ1ZmZl
cjo6fkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwotCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNf
QkFDS0lOR19TVE9SRSkKLXNpemVfdCBJbWFnZUJ1ZmZlcjo6bWVtb3J5Q29zdCgpIGNvbnN0Ci17
Ci0gICAgLy8gbWVtb3J5Q29zdCgpIG1heSBiZSBpbnZva2VkIGNvbmN1cnJlbnRseSBmcm9tIGEg
R0MgdGhyZWFkLCBhbmQgd2UgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IHdoYXQgZGF0YSB3ZSBh
Y2Nlc3MgaGVyZSBhbmQgaG93LgotICAgIC8vIEl0J3Mgc2FmZSB0byBhY2Nlc3MgaW50ZXJuYWxT
aXplKCkgYmVjYXVzZSBpdCBkb2Vzbid0IGRvIGFueSBwb2ludGVyIGNoYXNpbmcuCi0gICAgLy8g
SXQncyBzYWZlIHRvIGFjY2VzcyBtX2RhdGEuc3VyZmFjZSBiZWNhdXNlIHRoZSBzdXJmYWNlIGNh
biBvbmx5IGJlIGFzc2lnbmVkIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUJ1ZmZl
ci4KLSAgICAvLyBJdCdzIHNhZmUgdG8gYWNjZXNzIG1fZGF0YS5zdXJmYWNlLT50b3RhbEJ5dGVz
KCkgYmVjYXVzZSB0b3RhbEJ5dGVzKCkgZG9lc24ndCBjaGFzZSBwb2ludGVycy4KLSAgICBpZiAo
bV9kYXRhLnN1cmZhY2UpCi0gICAgICAgIHJldHVybiBtX2RhdGEuc3VyZmFjZS0+dG90YWxCeXRl
cygpOwotICAgIHJldHVybiA0ICogaW50ZXJuYWxTaXplKCkud2lkdGgoKSAqIGludGVybmFsU2l6
ZSgpLmhlaWdodCgpOwotfQotCi1zaXplX3QgSW1hZ2VCdWZmZXI6OmV4dGVybmFsTWVtb3J5Q29z
dCgpIGNvbnN0Ci17Ci0gICAgLy8gZXh0ZXJuYWxNZW1vcnlDb3N0KCkgbWF5IGJlIGludm9rZWQg
Y29uY3VycmVudGx5IGZyb20gYSBHQyB0aHJlYWQsIGFuZCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwg
YWJvdXQgd2hhdCBkYXRhIHdlIGFjY2VzcyBoZXJlIGFuZCBob3cuCi0gICAgLy8gSXQncyBzYWZl
IHRvIGFjY2VzcyBtX2RhdGEuc3VyZmFjZSBiZWNhdXNlIHRoZSBzdXJmYWNlIGNhbiBvbmx5IGJl
IGFzc2lnbmVkIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBJbWFnZUJ1ZmZlci4KLSAgICAv
LyBJdCdzIHNhZmUgdG8gYWNjZXNzIG1fZGF0YS5zdXJmYWNlLT50b3RhbEJ5dGVzKCkgYmVjYXVz
ZSB0b3RhbEJ5dGVzKCkgZG9lc24ndCBjaGFzZSBwb2ludGVycy4KLSAgICBpZiAobV9kYXRhLnN1
cmZhY2UpCi0gICAgICAgIHJldHVybiBtX2RhdGEuc3VyZmFjZS0+dG90YWxCeXRlcygpOwotICAg
IHJldHVybiAwOwotfQotI2VuZGlmCi0KLUdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAotewotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUp
Ci0gICAgaWYgKG1fZGF0YS5zdXJmYWNlKQotICAgICAgICByZXR1cm4gbV9kYXRhLnN1cmZhY2Ut
PmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwotI2VuZGlmCi0gICAgcmV0dXJuICptX2RhdGEuY29u
dGV4dDsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCkgY29uc3QKLXsKLSAg
ICBDR0NvbnRleHRGbHVzaChjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwotfQotCi1zdGF0
aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENH
SW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIGJvdW5kcykKLXsKLSAgICBpZiAoaW1hZ2Ug
JiYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMu
d2lkdGgoKSkgfHwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90
Pihib3VuZHMuaGVpZ2h0KCkpKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZVdpdGhJbWFnZUluUmVjdChpbWFnZSwgQ0dSZWN0TWFrZSgwLCAwLCBib3VuZHMud2lkdGgoKSwg
Ym91bmRzLmhlaWdodCgpKSkpOwotICAgIHJldHVybiBpbWFnZTsKLX0KLQotc3RhdGljIFJlZlB0
cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mJiBpbWFnZSwgSW50U2l6ZSBsb2dpY2FsU2l6ZSwgSW50U2l6ZSBpbnRlcm5h
bFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZl
UmVzb2x1dGlvbikKLXsKLSAgICBpZiAocmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVS
ZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNy
ZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBpbnRlcm5hbFNpemUpOwot
ICAgIGVsc2UgewotICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwg
NCAqIGxvZ2ljYWxTaXplLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkTGFzdCkpOwotICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29u
dGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgICAgIENHQ29udGV4dENsaXBUb1Jl
Y3QoY29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNp
emUpKTsKLSAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUluVXNlclNwYWNlID0gbG9naWNhbFNp
emU7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludDo6emVybygpLCBpbWFnZVNpemVJblVzZXJTcGFjZSksIGltYWdlLmdldCgpKTsK
LSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRl
eHQuZ2V0KCkpKTsKLSAgICB9Ci0KLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsK
LX0KLQotUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBj
b25zdAotewotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAgICBpZiAobV9yZXNv
bHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7
Ci0gICAgZWxzZQotICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSk7Ci0KLSAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5l
ZWRlZChXVEZNb3ZlKGltYWdlKSwgbG9naWNhbFNpemUoKSwgaW50ZXJuYWxTaXplKCksIG1fcmVz
b2x1dGlvblNjYWxlLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwotfQotCi1SZWZQdHI8SW1hZ2U+IElt
YWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXIsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pCi17Ci0gICAg
SW50U2l6ZSBpbnRlcm5hbFNpemUgPSBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7Ci0gICAg
SW50U2l6ZSBsb2dpY2FsU2l6ZSA9IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpOwotICAgIGZs
b2F0IHJlc29sdXRpb25TY2FsZSA9IGltYWdlQnVmZmVyLT5tX3Jlc29sdXRpb25TY2FsZTsKLQot
ICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRv
TmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpLCBsb2dpY2FsU2l6ZSwgaW50ZXJuYWxT
aXplLCByZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7Ci19Ci0KLVJldGFpblB0
cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQotewotI2lmIFVTRShJT1NVUkZBQ0VfQ0FO
VkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgaWYgKCFpbWFnZUJ1ZmZlci0+bV9kYXRhLnN1cmZhY2Up
Ci0gICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKTsKLQotICAgIHJldHVybiBJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoSU9TdXJm
YWNlOjpjcmVhdGVGcm9tSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZUJ1ZmZlcikpKTsKLSNlbHNl
Ci0gICAgcmV0dXJuIGltYWdlQnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpOwotI2VuZGlmCi19Ci0KLVJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6
Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAotewot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAgICBpZiAoIWNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7Ci0g
ICAgICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgICAgICBpbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZShtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2Rh
dGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5ieXRlc1BlclJvdy51
bnNhZmVHZXQoKSwgbV9kYXRhLmNvbG9yU3BhY2UsIG1fZGF0YS5iaXRtYXBJbmZvLCBtX2RhdGEu
ZGF0YVByb3ZpZGVyLmdldCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAg
ICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRl
eHQoKS5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdf
U1RPUkUpCi0gICAgZWxzZQotICAgICAgICBpbWFnZSA9IG1fZGF0YS5zdXJmYWNlLT5jcmVhdGVJ
bWFnZSgpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gaW1hZ2U7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKLXsKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAg
IGlmICghaW1hZ2VCdWZmZXItPm1fZGF0YS5zdXJmYWNlKSB7Ci0gICAgICAgIGltYWdlQnVmZmVy
LT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkpOwotICAgIAotICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IGltYWdlQnVm
ZmVyLT5tX3Jlc29sdXRpb25TY2FsZTsKLSAgICBJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUgPSBp
bWFnZUJ1ZmZlci0+bV9kYXRhLmJhY2tpbmdTdG9yZVNpemU7Ci0KLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gaW1hZ2UgPSBJT1N1cmZhY2U6OnNpbmtJbnRvSW1hZ2UoSU9TdXJmYWNlOjpjcmVh
dGVGcm9tSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZUJ1ZmZlcikpKTsKLSAgICAKLSAgICBGbG9h
dFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2Nh
bGUocmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UuZ2V0KCksIGJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9w
dGlvbnMpOwotI2Vsc2UKLSAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOwotI2VuZGlmCi19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKLXsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKCZk
ZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUp
OyAvLyBEcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgotICAg
IGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUpOwotCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRq
dXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLCBkZXN0
UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewot
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3Jj
UmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7Ci0KLSAgICBpZiAoIWNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKSB7Ci0gICAgICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNvbnRl
eHQoKSB8fCBkZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7Ci0gICAgICAgICAg
ICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKSAv
LyBEcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgotICAgICAg
ICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0
ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZUZvclJl
bmRlcmluZyA9IGNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICAg
ICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9u
cyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBj
b3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAgICAgY29weS0+ZHJh
d1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKLSAgICB9Ci19Ci0KLVJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShj
b25zdCBJbnRSZWN0JiByZWN0LCBJbnRTaXplKiBwaXhlbEFycmF5RGltZW5zaW9ucywgQ29vcmRp
bmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAotewotICAgIGlmIChjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKLSAgICAgICAgZmx1c2hDb250ZXh0KCk7Ci0KLSAgICBJ
bnRSZWN0IHNyY1JlY3QgPSByZWN0OwotICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2lj
YWxDb29yZGluYXRlU3lzdGVtKQotICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKLQotICAgIGlmIChwaXhlbEFycmF5RGltZW5zaW9ucykKLSAgICAgICAgKnBpeGVsQXJy
YXlEaW1lbnNpb25zID0gc3JjUmVjdC5zaXplKCk7Ci0KLSAgICByZXR1cm4gbV9kYXRhLmdldERh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBzcmNSZWN0LCBpbnRl
cm5hbFNpemUoKSwgY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpOwotfQotCi1SZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIEludFNpemUqIHBpeGVsQXJyYXlEaW1lbnNpb25zLCBD
b29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0Ci17Ci0gICAgaWYgKGNvbnRl
eHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQotICAgICAgICBmbHVzaENvbnRleHQoKTsKLQot
ICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7Ci0gICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0g
TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCi0gICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOwotCi0gICAgaWYgKHBpeGVsQXJyYXlEaW1lbnNpb25zKQotICAgICAgICAqcGl4
ZWxBcnJheURpbWVuc2lvbnMgPSBzcmNSZWN0LnNpemUoKTsKLQotICAgIHJldHVybiBtX2RhdGEu
Z2V0RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBzcmNSZWN0LCBp
bnRlcm5hbFNpemUoKSwgY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpOwotfQotCi12
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNv
dXJjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VGb3JtYXQsIGNvbnN0IEludFNpemUm
IHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKLXsKLSAgICBpZiAo
Y29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCi0gICAgICAgIGZsdXNoQ29udGV4dCgp
OwotCi0gICAgSW50UmVjdCBzY2FsZWRTb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKLSAgICBJbnRT
aXplIHNjYWxlZFNvdXJjZVNpemUgPSBzb3VyY2VTaXplOwotICAgIGlmIChjb29yZGluYXRlU3lz
dGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSB7Ci0gICAgICAgIHNjYWxlZFNvdXJjZVJl
Y3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwotICAgICAgICBzY2FsZWRTb3VyY2VTaXplLnNj
YWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICB9Ci0KLSAgICBtX2RhdGEucHV0RGF0YShzb3Vy
Y2UsIHNvdXJjZUZvcm1hdCwgc2NhbGVkU291cmNlU2l6ZSwgc2NhbGVkU291cmNlUmVjdCwgZGVz
dFBvaW50LCBpbnRlcm5hbFNpemUoKSwgY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
OwotICAgIAotICAgIC8vIEZvcmNlIHJlY3JlYXRpbmcgdGhlIElPU3VyZmFjZSBjYWNoZWQgaW1h
Z2UgaWYgaXQgaXMgcmVxdWVzdGVkIHRocm91Z2ggQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1h
Z2UoKS4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1Nzk2NiBmb3IgZXhwbGFpbmluZyB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuCi0gICAgaWYgKGNv
bnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQotICAgICAgICBjb250ZXh0KCkuZmlsbFJl
Y3QoRmxvYXRSZWN0KDEsIDEsIDAsIDApKTsKLX0KLQotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAotewotICAgIGlmIChh
dXRvIGRhdGEgPSB0b0NGRGF0YShtaW1lVHlwZSwgcXVhbGl0eSwgcHJlc2VydmVSZXNvbHV0aW9u
KSkKLSAgICAgICAgcmV0dXJuIGRhdGFVUkwoZGF0YS5nZXQoKSwgbWltZVR5cGUpOwotICAgIHJl
dHVybiAiZGF0YTosIl9zOwotfQotCi1WZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXI6OnRvRGF0
YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0
Ci17Ci0gICAgaWYgKGF1dG8gZGF0YSA9IHRvQ0ZEYXRhKG1pbWVUeXBlLCBxdWFsaXR5LCBQcmVz
ZXJ2ZVJlc29sdXRpb246Ok5vKSkKLSAgICAgICAgcmV0dXJuIGRhdGFWZWN0b3IoZGF0YS5nZXQo
KSk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZm
ZXI6OnRvQ0ZEYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKLXsKLSAg
ICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5j
b2RpbmcobWltZVR5cGUpKTsKLQotICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkKLSAgICAgICAgZmx1c2hDb250ZXh0KCk7Ci0KLSAgICBhdXRvIHV0aSA9IHV0aUZyb21J
bWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKLSAgICBBU1NFUlQodXRpKTsKLQotICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IHByZW11bHRpcGxpZWREYXRhOwotCi0gICAgaWYgKENGRXF1YWwodXRpLmdldCgpLCBqcGVnVVRJ
KCkpKSB7Ci0gICAgICAgIC8vIEpQRUdzIGRvbid0IGhhdmUgYW4gYWxwaGEgY2hhbm5lbCwgc28g
d2UgaGF2ZSB0byBtYW51YWxseSBjb21wb3NpdGUgb24gdG9wIG9mIGJsYWNrLgotICAgICAgICBw
cmVtdWx0aXBsaWVkRGF0YSA9IGdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQ
b2ludCgpLCBsb2dpY2FsU2l6ZSgpKSk7Ci0gICAgICAgIGlmICghcHJlbXVsdGlwbGllZERhdGEp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBzaXplX3QgZGF0YVNpemUg
PSA0ICogbG9naWNhbFNpemUoKS53aWR0aCgpICogbG9naWNhbFNpemUoKS5oZWlnaHQoKTsKLSAg
ICAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChwcmVtdWx0aXBsaWVkRGF0YS0+ZGF0
YSgpLCBkYXRhU2l6ZSk7Ci0gICAgICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIHByZW11bHRpcGxpZWREYXRhLT5kYXRh
KCksIGRhdGFTaXplLCBudWxscHRyKSk7Ci0gICAgICAgIGlmICghZGF0YVByb3ZpZGVyKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1h
Z2VDcmVhdGUobG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4
LCAzMiwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NH
Qml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQ
cm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKLSAg
ICB9IGVsc2UgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9u
ID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7Ci0gICAgICAgIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwotICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJ
bWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBpbnRlcm5hbFNpemUoKSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
OwotICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgw
LCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBs
b2dpY2FsU2l6ZSgpLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCkpOwotICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4
dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
Y29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxv
Z2ljYWxTaXplKCkuaGVpZ2h0KCkpKTsKLSAgICAgICAgRmxvYXRTaXplIGltYWdlU2l6ZUluVXNl
clNwYWNlID0gbG9naWNhbFNpemUoKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRl
eHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgaW1hZ2VTaXplSW5Vc2VyU3BhY2Uud2lkdGgoKSwg
aW1hZ2VTaXplSW5Vc2VyU3BhY2UuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7Ci0gICAgICAgIGlt
YWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7
Ci0gICAgfQotCi0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwotICAgIGlmICghZW5jb2RlSW1hZ2UoaW1hZ2UuZ2V0
KCksIHV0aS5nZXQoKSwgcXVhbGl0eSwgY2ZEYXRhLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICByZXR1cm4gV1RGTW92ZShjZkRhdGEpOwotfQotCi1WZWN0b3I8dWludDhf
dD4gSW1hZ2VCdWZmZXI6OnRvQkdSQURhdGEoKSBjb25zdAotewotICAgIGlmIChjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKLSAgICAgICAgZmx1c2hDb250ZXh0KCk7Ci0gICAgcmV0
dXJuIG1fZGF0YS50b0JHUkFEYXRhKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBt
X3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWNkMjM3
NTgxZjk1ZDBjY2FjYjgyYzg0ZmMyNjRmOTJhNzliM2ViCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
CkBAIC0wLDAgKzEsMjU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckNHQmFj
a2VuZC5oIgorCisjaWYgVVNFKENHKQorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyVXRpbGl0aWVz
Q0cuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEUpCisjaW5jbHVk
ZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIENHQ29udGV4dFJlZiBj
Z0NvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworCisgICAgaWYgKENHQ29udGV4
dEdldFR5cGUoY2dDb250ZXh0KSA9PSBrQ0dDb250ZXh0VHlwZUJpdG1hcCkKKyAgICAgICAgcmV0
dXJuIENHQml0bWFwQ29udGV4dEdldENvbG9yU3BhY2UoY2dDb250ZXh0KTsKKyAgICAKKyAgICBy
ZXR1cm4gYWRvcHRDRihDR0NvbnRleHRDb3B5RGV2aWNlQ29sb3JTcGFjZShjZ0NvbnRleHQpKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIHJldHVybiBudWxscHRyOwor
I2VuZGlmCit9CisjCisKK3ZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4dCgp
Cit7CisgICAgY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgIGNvbnRleHQo
KS50cmFuc2xhdGUoMCwgLW1fYmFja2VuZFNpemUuaGVpZ2h0KCkpOworICAgIGNvbnRleHQoKS5h
cHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKK30KKworc3RhdGljIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdl
UmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSkKK3sKKyAgICBpZiAoaW1hZ2Ug
JiYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihiYWNrZW5k
U2l6ZS53aWR0aCgpKSB8fCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSAhPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KGJhY2tlbmRTaXplLmhlaWdodCgpKSkpCisgICAgICAgIHJldHVybiBhZG9wdENGKENH
SW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UsIENHUmVjdE1ha2UoMCwgMCwgYmFja2Vu
ZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCkpKSk7CisgICAgcmV0dXJuIGltYWdl
OworfQorCitzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGlu
Z0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPiYmIGltYWdlLCBjb25zdCBJbnRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKK3sKKyAgICBpZiAo
cmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzKQorICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNz
YXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSk7CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8g
Y29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplLndp
ZHRoKCksIGxvZ2ljYWxTaXplLmhlaWdodCgpLCA4LCA0ICogbG9naWNhbFNpemUud2lkdGgoKSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7Cisg
ICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVD
b3B5KTsKKyAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSkpOworICAgICAgICBGbG9hdFNpemUg
aW1hZ2VTaXplSW5Vc2VyU3BhY2UgPSBsb2dpY2FsU2l6ZTsKKyAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGltYWdl
U2l6ZUluVXNlclNwYWNlKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgIH0KKworICAg
IGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIEJpdG1h
cEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSkpOworfQorCitSZWZQdHI8SW1hZ2U+IEltYWdl
QnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Is
IFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0Cit7CisgICAgTmF0
aXZlSW1hZ2VQdHIgaW1hZ2U7CisgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJl
c2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQorICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOworICAgIGVsc2UKKyAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIHJldHVybiBj
cmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFdURk1vdmUoaW1hZ2UpLCBtX2xv
Z2ljYWxTaXplLCBtX2JhY2tlbmRTaXplLCBtX3Jlc29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNv
bHV0aW9uKTsKK30KKworUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2lua0lu
dG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQoreworICAgIHJl
dHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZl
SW1hZ2UoKSwgbV9sb2dpY2FsU2l6ZSwgbV9iYWNrZW5kU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUs
IHByZXNlcnZlUmVzb2x1dGlvbik7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKK3sKKyAgICBGbG9hdFJlY3Qgc3JjUmVjdFNjYWxlZCA9IHNyY1JlY3Q7CisgICAg
c3JjUmVjdFNjYWxlZC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisKKyAgICBpZiAoYXV0byBp
bWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlC
YWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgICAgIGRlc3RDb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9iYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3RTY2FsZWQsIG9wdGlvbnMpOworfQorCit2b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7Cisg
ICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CisgICAgYWRqdXN0ZWRTcmNS
ZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKKworICAgIGlmIChhdXRvIGltYWdlID0gY29w
eUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250
ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgb3B0aW9ucyk7Cit9CisKK0FmZmluZVRyYW5zZm9ybSBJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6YmFzZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9y
bSgxLCAwLCAwLCAtMSwgMCwgbV9sb2dpY2FsU2l6ZS5oZWlnaHQoKSk7Cit9CisKK1JldGFpblB0
cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CisKKyAgICBh
dXRvIHV0aSA9IHV0aUZyb21JbWFnZUJ1ZmZlck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBBU1NF
UlQodXRpKTsKKworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IHByb3RlY3RlZFBpeGVsQXJyYXk7CisKKyAgICBpZiAoQ0ZFcXVh
bCh1dGkuZ2V0KCksIGpwZWdVVEkoKSkpIHsKKyAgICAgICAgLy8gSlBFR3MgZG9uJ3QgaGF2ZSBh
biBhbHBoYSBjaGFubmVsLCBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNvbXBvc2l0ZSBvbiB0b3Ag
b2YgYmxhY2suCisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gZ2V0SW1hZ2VEYXRhKEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIGxvZ2ljYWxSZWN0KCkpOworICAgICAgICBp
ZiAoIWltYWdlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHBy
b3RlY3RlZFBpeGVsQXJyYXkgPSBtYWtlUmVmUHRyKGltYWdlRGF0YS0+ZGF0YSgpKTsKKyAgICAg
ICAgc2l6ZV90IGRhdGFTaXplID0gcHJvdGVjdGVkUGl4ZWxBcnJheS0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICBJbnRTaXplIHBpeGVsQXJyYXlEaW1lbnNpb25zID0gaW1hZ2VEYXRhLT5zaXplKCk7
CisKKyAgICAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChwcm90ZWN0ZWRQaXhlbEFy
cmF5LT5kYXRhKCksIGRhdGFTaXplKTsKKyAgICAgICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwgcHJvdGVjdGVkUGl4ZWxB
cnJheS0+ZGF0YSgpLCBkYXRhU2l6ZSwgbnVsbHB0cikpOworICAgICAgICBpZiAoIWRhdGFQcm92
aWRlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlKHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHBpeGVsQXJy
YXlEaW1lbnNpb25zLmhlaWdodCgpLCA4LCAzMiwgNCAqIHBpeGVsQXJyYXlEaW1lbnNpb25zLndp
ZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBr
Q0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBr
Q0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25T
Y2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246Olll
cykgeworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsK
KyAgICAgICAgaW1hZ2UgPSBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQo
KSwgYmFja2VuZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0
aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgICAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJh
Y2tlbmRTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIHNSR0JD
b2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOworICAgICAg
ICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7
CisgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgw
LCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpKTsKKyAg
ICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwg
YmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSwgaW1hZ2UuZ2V0
KCkpOworICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Y29udGV4dC5nZXQoKSkpOworICAgIH0KKworICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAgICBpZiAoIWVuY29k
ZUltYWdlKGltYWdlLmdldCgpLCB1dGkuZ2V0KCksIHF1YWxpdHksIGNmRGF0YS5nZXQoKSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdURk1vdmUoY2ZEYXRhKTsKK30K
KworVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGEoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdAoreworICAgIGlm
IChhdXRvIGRhdGEgPSB0b0NGRGF0YShtaW1lVHlwZSwgcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0
aW9uOjpObykpCisgICAgICAgIHJldHVybiBkYXRhVmVjdG9yKGRhdGEuZ2V0KCkpOworICAgIHJl
dHVybiB7IH07Cit9CisKK1N0cmluZyBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9EYXRhVVJMKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVS
ZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKK3sKKyAgICBpZiAoYXV0byBkYXRh
ID0gdG9DRkRhdGEobWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbikpCisgICAg
ICAgIHJldHVybiBkYXRhVVJMKGRhdGEuZ2V0KCksIG1pbWVUeXBlKTsKKyAgICByZXR1cm4gImRh
dGE6LCJfczsKK30KKworI2lmIFVTRShBQ0NFTEVSQVRFKQorc3RhdGljIGlubGluZSB2SW1hZ2Vf
QnVmZmVyIG1ha2VWSW1hZ2VCdWZmZXIodW5zaWduZWQgYnl0ZXNQZXJSb3csIHVpbnQ4X3QqIHJv
d3MsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgdkltYWdlX0J1ZmZlciB2SW1hZ2VCdWZm
ZXI7CisKKyAgICB2SW1hZ2VCdWZmZXIuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dkltYWdlUGl4ZWxD
b3VudD4oc2l6ZS5oZWlnaHQoKSk7CisgICAgdkltYWdlQnVmZmVyLndpZHRoID0gc3RhdGljX2Nh
c3Q8dkltYWdlUGl4ZWxDb3VudD4oc2l6ZS53aWR0aCgpKTsKKyAgICB2SW1hZ2VCdWZmZXIucm93
Qnl0ZXMgPSBieXRlc1BlclJvdzsKKyAgICB2SW1hZ2VCdWZmZXIuZGF0YSA9IHJvd3M7CisgICAg
cmV0dXJuIHZJbWFnZUJ1ZmZlcjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlJbWFnZVBp
eGVsc0FjY2VsZXJhdGVkKAorICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3Jt
YXQsIENvbG9yRm9ybWF0IHNyY0NvbG9yRm9ybWF0LCB2SW1hZ2VfQnVmZmVyJiBzcmMsCisgICAg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0QWxwaGFGb3JtYXQsIENvbG9yRm9ybWF0IGRlc3RD
b2xvckZvcm1hdCwgdkltYWdlX0J1ZmZlciYgZGVzdCkKK3sKKyAgICBpZiAoc3JjQWxwaGFGb3Jt
YXQgPT0gZGVzdEFscGhhRm9ybWF0KSB7CisgICAgICAgIEFTU0VSVChzcmNDb2xvckZvcm1hdCAh
PSBkZXN0Q29sb3JGb3JtYXQpOworICAgICAgICBBU1NFUlQoZGVzdEFscGhhRm9ybWF0ID09IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpOworCisgICAgICAgIC8vIFN3YXAg
cGl4ZWwgY2hhbm5lbHMgQkdSQSA8LT4gUkdCQS4KKyAgICAgICAgY29uc3QgdWludDhfdCBtYXBb
NF0gPSB7IDIsIDEsIDAsIDMgfTsKKyAgICAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4
ODg4KCZzcmMsICZkZXN0LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChkZXN0QWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkKSB7CisgICAgICAgIGlmIChzcmNDb2xvckZvcm1hdCA9PSBDb2xv
ckZvcm1hdDo6UkdCQSkKKyAgICAgICAgICAgIHZJbWFnZVVucHJlbXVsdGlwbHlEYXRhX1JHQkE4
ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFncyk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHZJbWFnZVVucHJlbXVsdGlwbHlEYXRhX0JHUkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdl
Tm9GbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHNyY0NvbG9yRm9ybWF0ID09IENv
bG9yRm9ybWF0OjpSR0JBKQorICAgICAgICAgICAgdkltYWdlUHJlbXVsdGlwbHlEYXRhX1JHQkE4
ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFncyk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHZJbWFnZVByZW11bHRpcGx5RGF0YV9CR1JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZU5v
RmxhZ3MpOworICAgIH0KKworICAgIGlmIChzcmNDb2xvckZvcm1hdCAhPSBkZXN0Q29sb3JGb3Jt
YXQpIHsKKyAgICAgICAgLy8gU3dhcCBwaXhlbCBjaGFubmVscyBCR1JBIDwtPiBSR0JBLgorICAg
ICAgICBjb25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OworICAgICAgICB2SW1h
Z2VQZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgoJmRlc3QsICZkZXN0LCBtYXAsIGt2SW1hZ2VOb0Zs
YWdzKTsKKyAgICB9Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZVBp
eGVscygKKyAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNyY0FscGhhRm9ybWF0LCBDb2xvckZv
cm1hdCBzcmNDb2xvckZvcm1hdCwgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3csIHVpbnQ4X3QqIHNy
Y1Jvd3MsCisgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0QWxwaGFGb3JtYXQsIENvbG9y
Rm9ybWF0IGRlc3RDb2xvckZvcm1hdCwgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93LCB1aW50OF90
KiBkZXN0Um93cywgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoc3JjQWxw
aGFGb3JtYXQgPT0gZGVzdEFscGhhRm9ybWF0ICYmIHNyY0NvbG9yRm9ybWF0ID09IGRlc3RDb2xv
ckZvcm1hdCkgeworICAgICAgICBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvcHlJbWFnZVBpeGVscyhz
cmNBbHBoYUZvcm1hdCwgc3JjQ29sb3JGb3JtYXQsIHNyY0J5dGVzUGVyUm93LCBzcmNSb3dzLCBk
ZXN0QWxwaGFGb3JtYXQsIGRlc3RDb2xvckZvcm1hdCwgZGVzdEJ5dGVzUGVyUm93LCBkZXN0Um93
cywgc2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2SW1hZ2VfQnVmZmVyIHNy
YyA9IG1ha2VWSW1hZ2VCdWZmZXIoc3JjQnl0ZXNQZXJSb3csIHNyY1Jvd3MsIHNpemUpOworICAg
IHZJbWFnZV9CdWZmZXIgZGVzdCA9IG1ha2VWSW1hZ2VCdWZmZXIoZGVzdEJ5dGVzUGVyUm93LCBk
ZXN0Um93cywgc2l6ZSk7CisKKyAgICBjb3B5SW1hZ2VQaXhlbHNBY2NlbGVyYXRlZChzcmNBbHBo
YUZvcm1hdCwgc3JjQ29sb3JGb3JtYXQsIHNyYywgZGVzdEFscGhhRm9ybWF0LCBkZXN0Q29sb3JG
b3JtYXQsIGRlc3QpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3Y2EzOTgwMzRm
MjVhMzM0OTI0N2Q0MzRmNWY2NTlmOTJhZjNkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJh
Y2tlbmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
bWFnZUJ1ZmZlckNHQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmQgeworcHVibGlj
OgorICAgIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFj
a2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2UoUHJlc2VydmVS
ZXNvbHV0aW9uKSBvdmVycmlkZTsKKworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKworICAgIEFmZmluZVRyYW5zZm9ybSBiYXNl
VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNv
bHV0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJp
ZGU7CisKK3Byb3RlY3RlZDoKKyAgICB1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVm
ZmVyQmFja2VuZDsKKworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb250
ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICB2b2lkIHNldHVwQ29u
dGV4dCgpOworICAgIHZpcnR1YWwgUmV0YWluUHRyPENGRGF0YVJlZj4gdG9DRkRhdGEoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29s
dXRpb24pIGNvbnN0OworCisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgdm9pZCBjb3B5SW1hZ2VQ
aXhlbHMoCisgICAgICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc3JjQWxwaGFGb3JtYXQsIENv
bG9yRm9ybWF0IHNyY0NvbG9yRm9ybWF0LCB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdywgdWludDhf
dCogc3JjUm93cywKKyAgICAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0QWxwaGFGb3Jt
YXQsIENvbG9yRm9ybWF0IGRlc3RDb2xvckZvcm1hdCwgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93
LCB1aW50OF90KiBkZXN0Um93cywgY29uc3QgSW50U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOworI2Vu
ZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0cpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM4M2M5OTZlNTRk
MGIwNDcxM2ZkYzc0MmMyMTQzNmQzODA3ZTg0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNw
cApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuaCIKKworI2lmIFVTRShDRykKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJVdGlsaXRpZXNDRy5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkludFJl
Y3QuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorY29uc3RleHByIGNvbnN0IENHQml0
bWFwSW5mbyBEZWZhdWx0Qml0bWFwSW5mbyA9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmly
c3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Q7CisjZWxzZQorY29uc3RleHByIGNvbnN0IENH
Qml0bWFwSW5mbyBEZWZhdWx0Qml0bWFwSW5mbyA9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
TGFzdDsKKyNlbmRpZgorCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQpOworCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ0dD
b2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCit7CisgICAgSW50
U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25T
Y2FsZSk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICB2b2lkKiBkYXRhOworICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93ID0gNCAq
IGJhY2tlbmRTaXplLndpZHRoKCk7CisKKyAgICBpZiAoIXRyeUZhc3RDYWxsb2MoYmFja2VuZFNp
emUuaGVpZ2h0KCksIGJ5dGVzUGVyUm93KS5nZXRWYWx1ZShkYXRhKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90PihkYXRh
KSAmIDMpKTsKKworICAgIHNpemVfdCBudW1CeXRlcyA9IGJhY2tlbmRTaXplLmhlaWdodCgpICog
Ynl0ZXNQZXJSb3c7CisgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChkYXRhLCBudW1C
eXRlcyk7CisKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCBi
eXRlc1BlclJvdywgY2dDb2xvclNwYWNlLCBEZWZhdWx0Qml0bWFwSW5mbykpOworICAgIGlmICgh
Y2dDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9
IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOworCisgICAgY29u
c3QgYXV0byByZWxlYXNlSW1hZ2VEYXRhID0gW10gKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QpIHsKKyAgICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOworICAg
IH07CisKKyAgICBhdXRvIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVXaXRoRGF0YSgwLCBkYXRhLCBudW1CeXRlcywgcmVsZWFzZUltYWdlRGF0YSkpOworCisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4obmV3IElt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIGRhdGEsIFdURk1vdmUoZGF0YVByb3ZpZGVyKSwgV1RGTW92ZShjb250
ZXh0KSkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGF1dG8gY2dDb2xv
clNwYWNlID0gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkpCisgICAgICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0Is
IGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisgICAgCisgICAgcmV0dXJuIEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgbnVs
bHB0cik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgY2FjaGVkQ0dD
b2xvclNwYWNlKGNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKK30KKworSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0
YVByb3ZpZGVyUmVmPiYmIGRhdGFQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dD4mJiBjb250ZXh0KQorICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUs
IGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCisgICAgLCBtX2RhdGEo
ZGF0YSkKKyAgICAsIG1fZGF0YVByb3ZpZGVyKFdURk1vdmUoZGF0YVByb3ZpZGVyKSkKKyAgICAs
IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQoreworICAgIEFTU0VSVChtX2RhdGEpOworICAg
IEFTU0VSVChtX2RhdGFQcm92aWRlcik7CisgICAgQVNTRVJUKG1fY29udGV4dCk7CisgICAgc2V0
dXBDb250ZXh0KCk7Cit9CisKK0dyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiAqbV9jb250ZXh0OworfQorCitO
YXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAoreworICAgIHN3aXRjaCAoY29w
eUJlaGF2aW9yKSB7CisgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgorICAgICAgICByZXR1cm4g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCkpKTsKKworICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6CisgICAgICAgIHJldHVy
biBhZG9wdENGKENHSW1hZ2VDcmVhdGUoCisgICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRo
KCksIG1fYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAorICAgICAg
ICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKG1fY29sb3JTcGFjZSksIERlZmF1bHRCaXRtYXBJbmZv
LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKKyAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmlu
Z0ludGVudERlZmF1bHQpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjp0b0JHUkFEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJC
YWNrZW5kOjp0b0JHUkFEYXRhKG1fZGF0YSk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Cit7CisgICAgcmV0
dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVj
dCwgbV9kYXRhKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6cHV0SW1h
Z2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0
YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50KQoreworICAgIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0SW1hZ2VEYXRhKGlucHV0Rm9y
bWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgbV9kYXRhKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZhZjY2MmExYzc2YThiODliNzc2ZjIzOTZjYjg1MzQ3
ZDZhNDkxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFVTRShDRykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyQ0dCYWNrZW5kLmgiCisjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsK
KyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7Citw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgSG9z
dFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKKworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgTmF0aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5
QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0b0JH
UkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFn
ZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3Qm
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAg
ICBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmLCBzdGQ6
OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmKTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgQ29sb3JGb3JtYXQgYmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gQ29sb3JGb3JtYXQ6OkJHUkE7IH0KKyNlbmRpZgorCisgICAgdm9pZCogbV9kYXRh
OworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gbV9kYXRhUHJvdmlkZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWZjMDMxY2MwNjY0ZGU3YTU3N2QxYmNiNWI0
OTYyZmRkMmVhYmFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgotCi0jaWYgVVNFKENHKQotCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9Db3JlR3JhcGhpY3MuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlubGluZXMuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+Ci0KLSNpZiBVU0UoQUNDRUxFUkFURSkKLSNpbmNsdWRlIDxBY2NlbGVyYXRl
L0FjY2VsZXJhdGUuaD4KLSNlbmRpZgotCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lO
R19TVE9SRSkKLSNpbmNsdWRlICJJT1N1cmZhY2UuaCIKLSNpbmNsdWRlIDxkaXNwYXRjaC9kaXNw
YXRjaC5oPgotI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+Ci0jZW5kaWYK
LQotLy8gQ0EgdXNlcyBBUkdCMzIgZm9yIHRleHR1cmVzIGFuZCBBUkdCMzIgLT4gQVJHQjMyIHJl
c2FtcGxpbmcgaXMgb3B0aW1pemVkLgotI2RlZmluZSBVU0VfQVJHQjMyIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIFVTRShBQ0NFTEVSQVRFKSAmJiAo
VVNFX0FSR0IzMiB8fCBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKSkKLXN0YXRp
YyB2b2lkIHVucHJlbXVsdGlwbHlCdWZmZXJEYXRhKGNvbnN0IHZJbWFnZV9CdWZmZXImIHNyYywg
Y29uc3QgdkltYWdlX0J1ZmZlciYgZGVzdCkKLXsKLSAgICBBU1NFUlQoc3JjLmRhdGEpOwotICAg
IEFTU0VSVChkZXN0LmRhdGEpOwotCi0gICAgaWYgKGt2SW1hZ2VOb0Vycm9yICE9IHZJbWFnZVVu
cHJlbXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFncykpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIFN3YXAgY2hhbm5lbHMgMSBhbmQgMywgdG8gY29udmVy
dCBCR1JBPC0+UkdCQS4gSU9TdXJmYWNlcyBhcmUgQkdSQSwgSW1hZ2VEYXRhIGV4cGVjdHMgUkdC
QS4KLSAgICBjb25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OwotICAgIHZJbWFn
ZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmZGVzdCwgJmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxh
Z3MpOwotfQotCi1zdGF0aWMgdm9pZCBwcmVtdWx0aXBseUJ1ZmZlckRhdGEoY29uc3QgdkltYWdl
X0J1ZmZlciYgc3JjLCBjb25zdCB2SW1hZ2VfQnVmZmVyJiBkZXN0KQotewotICAgIEFTU0VSVChz
cmMuZGF0YSk7Ci0gICAgQVNTRVJUKGRlc3QuZGF0YSk7Ci0KLSAgICBpZiAoa3ZJbWFnZU5vRXJy
b3IgIT0gdkltYWdlUHJlbXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdl
Tm9GbGFncykpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFN3YXAgY2hhbm5lbHMgMSBhbmQg
MywgdG8gY29udmVydCBCR1JBPC0+UkdCQS4gSU9TdXJmYWNlcyBhcmUgQkdSQSwgSW1hZ2VEYXRh
IGV4cGVjdHMgUkdCQS4KLSAgICBjb25zdCB1aW50OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9
OwotICAgIHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmZGVzdCwgJmRlc3QsIG1hcCwg
a3ZJbWFnZU5vRmxhZ3MpOwotfQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFKSAmJiAoVVNFX0FS
R0IzMiB8fCBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKSkKLQotc3RhdGljIGlu
bGluZSB2b2lkIHRyYW5zZmVyRGF0YSh2b2lkKiBvdXRwdXQsIHZvaWQqIGlucHV0LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIHNpemVfdCBpbnB1dEJ5dGVzUGVyUm93KQotewotI2lmIFVTRShBQ0NF
TEVSQVRFKQotICAgIEFTU0VSVChpbnB1dCk7Ci0gICAgQVNTRVJUKG91dHB1dCk7Ci0KLSAgICB2
SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICBzcmMud2lkdGggPSB3aWR0aDsKLSAgICBzcmMuaGVpZ2h0
ID0gaGVpZ2h0OwotICAgIHNyYy5yb3dCeXRlcyA9IGlucHV0Qnl0ZXNQZXJSb3c7Ci0gICAgc3Jj
LmRhdGEgPSBpbnB1dDsKLQotICAgIHZJbWFnZV9CdWZmZXIgZGVzdDsKLSAgICBkZXN0LndpZHRo
ID0gd2lkdGg7Ci0gICAgZGVzdC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgZGVzdC5yb3dCeXRlcyA9
IHdpZHRoICogNDsKLSAgICBkZXN0LmRhdGEgPSBvdXRwdXQ7Ci0KLSAgICB2SW1hZ2VVbnByZW11
bHRpcGx5RGF0YV9CR1JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZU5vRmxhZ3MpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICBVTlVTRURfUEFSQU0oaW5wdXQpOwotICAg
IFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBub3QgQUNDRUxFUkFURS4KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSNlbmRpZgotfQotCi1WZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJEYXRhOjp0
b0JHUkFEYXRhKGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KSBjb25zdAotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoNCAqIHdpZHRoICogaGVpZ2h0
KTsKLQotICAgIGlmICghYWNjZWxlcmF0ZVJlbmRlcmluZykgewotICAgICAgICB0cmFuc2ZlckRh
dGEocmVzdWx0LmRhdGEoKSwgZGF0YSwgd2lkdGgsIGhlaWdodCwgNCAqIGJhY2tpbmdTdG9yZVNp
emUud2lkdGgoKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2lmIFVTRShJT1NV
UkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgSU9TdXJmYWNlOjpMb2NrZXIgbG9jaygq
c3VyZmFjZSk7Ci0gICAgdHJhbnNmZXJEYXRhKHJlc3VsdC5kYXRhKCksIGxvY2suc3VyZmFjZUJh
c2VBZGRyZXNzKCksIHdpZHRoLCBoZWlnaHQsIHN1cmZhY2UtPmJ5dGVzUGVyUm93KCkpOwotI2Vs
c2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLVJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXRhOjpnZXREYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcpIGNvbnN0Ci17
Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGFyZWEgPSA0OwotICAgIGFy
ZWEgKj0gcmVjdC53aWR0aCgpOwotICAgIGFyZWEgKj0gcmVjdC5oZWlnaHQoKTsKLSAgICBpZiAo
YXJlYS5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0
byByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChhcmVh
LnVuc2FmZUdldCgpKTsKLSAgICB1aW50OF90KiByZXN1bHREYXRhID0gcmVzdWx0ID8gcmVzdWx0
LT5kYXRhKCkgOiBudWxscHRyOwotICAgIGlmICghcmVzdWx0RGF0YSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBDaGVja2VkPGludD4gZW5keCA9IHJlY3QubWF4WCgpOwotICAgIENo
ZWNrZWQ8aW50PiBlbmR5ID0gcmVjdC5tYXhZKCk7Ci0gICAgaWYgKHJlY3QueCgpIDwgMCB8fCBy
ZWN0LnkoKSA8IDAgfHwgZW5keC51bnNhZmVHZXQoKSA+IHNpemUud2lkdGgoKSB8fCBlbmR5LnVu
c2FmZUdldCgpID4gc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgcmVzdWx0LT56ZXJvRmlsbCgpOwot
ICAgIAotICAgIGludCBvcmlnaW54ID0gcmVjdC54KCk7Ci0gICAgaW50IGRlc3R4ID0gMDsKLSAg
ICBDaGVja2VkPGludD4gZGVzdHcgPSByZWN0LndpZHRoKCk7Ci0gICAgaWYgKG9yaWdpbnggPCAw
KSB7Ci0gICAgICAgIGRlc3R3ICs9IG9yaWdpbng7Ci0gICAgICAgIGRlc3R4ID0gLW9yaWdpbng7
Ci0gICAgICAgIG9yaWdpbnggPSAwOwotICAgIH0KLSAgICBkZXN0dyA9IHN0ZDo6bWluPGludD4o
ZGVzdHcudW5zYWZlR2V0KCksIHNpemUud2lkdGgoKSAtIG9yaWdpbngpOwotICAgIGlmIChlbmR4
LnVuc2FmZUdldCgpID4gc2l6ZS53aWR0aCgpKQotICAgICAgICBlbmR4ID0gc2l6ZS53aWR0aCgp
OwotICAgIENoZWNrZWQ8aW50PiB3aWR0aCA9IGVuZHggLSBvcmlnaW54OwotICAgIAotICAgIGlu
dCBvcmlnaW55ID0gcmVjdC55KCk7Ci0gICAgaW50IGRlc3R5ID0gMDsKLSAgICBDaGVja2VkPGlu
dD4gZGVzdGggPSByZWN0LmhlaWdodCgpOwotICAgIGlmIChvcmlnaW55IDwgMCkgewotICAgICAg
ICBkZXN0aCArPSBvcmlnaW55OwotICAgICAgICBkZXN0eSA9IC1vcmlnaW55OwotICAgICAgICBv
cmlnaW55ID0gMDsKLSAgICB9Ci0gICAgZGVzdGggPSBzdGQ6Om1pbjxpbnQ+KGRlc3RoLnVuc2Fm
ZUdldCgpLCBzaXplLmhlaWdodCgpIC0gb3JpZ2lueSk7Ci0gICAgaWYgKGVuZHkudW5zYWZlR2V0
KCkgPiBzaXplLmhlaWdodCgpKQotICAgICAgICBlbmR5ID0gc2l6ZS5oZWlnaHQoKTsKLSAgICBD
aGVja2VkPGludD4gaGVpZ2h0ID0gZW5keSAtIG9yaWdpbnk7Ci0gICAgCi0gICAgaWYgKHdpZHRo
LnVuc2FmZUdldCgpIDw9IDAgfHwgaGVpZ2h0LnVuc2FmZUdldCgpIDw9IDApCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgCi0gICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93ID0gNCAqIHJl
Y3Qud2lkdGgoKTsKLSAgICB1aW50OF90KiBkZXN0Um93cyA9IHJlc3VsdERhdGEgKyBkZXN0eSAq
IGRlc3RCeXRlc1BlclJvdyArIGRlc3R4ICogNDsKLSAgICAKLSAgICB1bnNpZ25lZCBzcmNCeXRl
c1BlclJvdzsKLSAgICB1aW50OF90KiBzcmNSb3dzOwotICAgIAotICAgIGlmICghYWNjZWxlcmF0
ZVJlbmRlcmluZykgewotICAgICAgICBpZiAoIWRhdGEpCi0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotCi0gICAgICAgIHNyY0J5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCk7
Ci0gICAgICAgIHNyY1Jvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIG9y
aWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OwotCi0jaWYgVVNFKEFDQ0VMRVJB
VEUpCi0gICAgICAgIGlmIChvdXRwdXRGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkKSB7Ci0KLSAgICAgICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOwotICAg
ICAgICAgICAgc3JjLndpZHRoID0gd2lkdGgudW5zYWZlR2V0KCk7Ci0gICAgICAgICAgICBzcmMu
aGVpZ2h0ID0gaGVpZ2h0LnVuc2FmZUdldCgpOwotICAgICAgICAgICAgc3JjLnJvd0J5dGVzID0g
c3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICBzcmMuZGF0YSA9IHNyY1Jvd3M7Ci0KLSAgICAg
ICAgICAgIHZJbWFnZV9CdWZmZXIgZGVzdDsKLSAgICAgICAgICAgIGRlc3Qud2lkdGggPSBkZXN0
dy51bnNhZmVHZXQoKTsKLSAgICAgICAgICAgIGRlc3QuaGVpZ2h0ID0gZGVzdGgudW5zYWZlR2V0
KCk7Ci0gICAgICAgICAgICBkZXN0LnJvd0J5dGVzID0gZGVzdEJ5dGVzUGVyUm93OwotICAgICAg
ICAgICAgZGVzdC5kYXRhID0gZGVzdFJvd3M7Ci0KLSNpZiBVU0VfQVJHQjMyCi0gICAgICAgICAg
ICB1bnByZW11bHRpcGx5QnVmZmVyRGF0YShzcmMsIGRlc3QpOwotI2Vsc2UKLSAgICAgICAgICAg
IHZJbWFnZVVucHJlbXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9G
bGFncyk7Ci0jZW5kaWYKLQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQot
I2VuZGlmCi0gICAgICAgIGlmIChvdXRwdXRGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkKSB7Ci0gICAgICAgICAgICBpZiAoKHdpZHRoICogNCkuaGFzT3Zl
cmZsb3dlZCgpKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICBmb3IgKGlu
dCB5ID0gMDsgeSA8IGhlaWdodC51bnNhZmVHZXQoKTsgKyt5KSB7Ci0gICAgICAgICAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aC51bnNhZmVHZXQoKTsgeCsrKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwotICAgICAgICAgICAgICAgICAgICB1aW50OF90
IGFscGhhID0gc3JjUm93c1tiYXNleCArIDNdOwotI2lmIFVTRV9BUkdCMzIKLSAgICAgICAgICAg
ICAgICAgICAgLy8gQnl0ZSBvcmRlciBpcyBkaWZmZXJlbnQgYXMgd2UgdXNlIGltYWdlIGJ1ZmZl
cnMgb2YgQVJHQjMyCi0gICAgICAgICAgICAgICAgICAgIGlmIChhbHBoYSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFzZXggKyAyXSAqIDI1
NSkgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0g
PSAoc3JjUm93c1tiYXNleCArIDFdICogMjU1KSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4XSAqIDI1NSkgLyBhbHBo
YTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10gPSBhbHBoYTsK
LSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3RSb3dzW2Jhc2V4XSA9IHNyY1Jvd3NbYmFzZXggKyAyXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gc3JjUm93c1tiYXNleF07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIGlmIChhbHBoYSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gKHNyY1Jvd3NbYmFzZXhd
ICogMjU1KSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXgg
KyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiAyNTUpIC8gYWxwaGE7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXggKyAyXSAqIDI1
NSkgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10g
PSBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oZGVzdFJvd3MgKyBiYXNleClbMF0gPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oc3JjUm93cyArIGJhc2V4KVswXTsKLSNl
bmRpZgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzcmNSb3dzICs9IHNyY0J5
dGVzUGVyUm93OwotICAgICAgICAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgaGVpZ2h0LnVuc2FmZUdldCgpOyArK3kpIHsKLSNpZiBVU0VfQVJHQjMyCi0gICAg
ICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aC51bnNhZmVHZXQoKTsgeCsrKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwotICAgICAgICAgICAgICAg
ICAgICBkZXN0Um93c1tiYXNleF0gPSBzcmNSb3dzW2Jhc2V4ICsgMl07Ci0gICAgICAgICAgICAg
ICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAgICAg
ICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSBzcmNSb3dzW2Jhc2V4XTsKLSAgICAg
ICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IHNyY1Jvd3NbYmFzZXggKyAzXTsK
LSAgICAgICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgKHdpZHRoICogNCkudW5zYWZlR2V0KCk7IHggKz0gNCkKLSAgICAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGRlc3RSb3dzICsgeClbMF0gPSByZWludGVy
cHJldF9jYXN0PHVpbnQzMl90Kj4oc3JjUm93cyArIHgpWzBdOwotI2VuZGlmCi0gICAgICAgICAg
ICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKLSAgICAgICAgICAgICAgICBkZXN0Um93
cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgewotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgICAgIElP
U3VyZmFjZTo6TG9ja2VyIGxvY2soKnN1cmZhY2UpOwotICAgICAgICBzcmNCeXRlc1BlclJvdyA9
IHN1cmZhY2UtPmJ5dGVzUGVyUm93KCk7Ci0gICAgICAgIHNyY1Jvd3MgPSBzdGF0aWNfY2FzdDx1
aW50OF90Kj4obG9jay5zdXJmYWNlQmFzZUFkZHJlc3MoKSkgKyBvcmlnaW55ICogc3JjQnl0ZXNQ
ZXJSb3cgKyBvcmlnaW54ICogNDsKLQotI2lmIFVTRShBQ0NFTEVSQVRFKQotICAgICAgICB2SW1h
Z2VfQnVmZmVyIHNyYzsKLSAgICAgICAgc3JjLndpZHRoID0gd2lkdGgudW5zYWZlR2V0KCk7Ci0g
ICAgICAgIHNyYy5oZWlnaHQgPSBoZWlnaHQudW5zYWZlR2V0KCk7Ci0gICAgICAgIHNyYy5yb3dC
eXRlcyA9IHNyY0J5dGVzUGVyUm93OwotICAgICAgICBzcmMuZGF0YSA9IHNyY1Jvd3M7Ci0KLSAg
ICAgICAgdkltYWdlX0J1ZmZlciBkZXN0OwotICAgICAgICBkZXN0LndpZHRoID0gZGVzdHcudW5z
YWZlR2V0KCk7Ci0gICAgICAgIGRlc3QuaGVpZ2h0ID0gZGVzdGgudW5zYWZlR2V0KCk7Ci0gICAg
ICAgIGRlc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgIGRlc3QuZGF0YSA9
IGRlc3RSb3dzOwotCi0gICAgICAgIGlmIChvdXRwdXRGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKQotICAgICAgICAgICAgdW5wcmVtdWx0aXBseUJ1ZmZl
ckRhdGEoc3JjLCBkZXN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBTd2FwIHBp
eGVsIGNoYW5uZWxzIGZyb20gQkdSQSB0byBSR0JBLgotICAgICAgICAgICAgY29uc3QgdWludDhf
dCBtYXBbNF0gPSB7IDIsIDEsIDAsIDMgfTsKLSAgICAgICAgICAgIHZJbWFnZVBlcm11dGVDaGFu
bmVsc19BUkdCODg4OCgmc3JjLCAmZGVzdCwgbWFwLCBrdkltYWdlTm9GbGFncyk7Ci0gICAgICAg
IH0KLSNlbHNlCi0gICAgICAgIGlmICgod2lkdGggKiA0KS5oYXNPdmVyZmxvd2VkKCkpCi0gICAg
ICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgIGlmIChvdXRwdXRGb3JtYXQgPT0gQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKSB7Ci0gICAgICAgICAgICBmb3IgKGludCB5
ID0gMDsgeSA8IGhlaWdodC51bnNhZmVHZXQoKTsgKyt5KSB7Ci0gICAgICAgICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB3aWR0aC51bnNhZmVHZXQoKTsgeCsrKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGludCBiYXNleCA9IHggKiA0OwotICAgICAgICAgICAgICAgICAgICB1aW50OF90IGIg
PSBzcmNSb3dzW2Jhc2V4XTsKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCBhbHBoYSA9IHNy
Y1Jvd3NbYmFzZXggKyAzXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFscGhhKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSAoc3JjUm93c1tiYXNleCArIDJd
ICogMjU1KSAvIGFscGhhOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXgg
KyAxXSA9IChzcmNSb3dzW2Jhc2V4ICsgMV0gKiAyNTUpIC8gYWxwaGE7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gKGIgKiAyNTUpIC8gYWxwaGE7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7Ci0gICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1ti
YXNleF0gPSBzcmNSb3dzW2Jhc2V4ICsgMl07Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXN0
Um93c1tiYXNleCArIDFdID0gc3JjUm93c1tiYXNleCArIDFdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IGI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0Um93c1tiYXNleCArIDNdID0gc3JjUm93c1tiYXNleCArIDNdOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNyY1Jvd3MgKz0gc3Jj
Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCBoZWlnaHQudW5zYWZlR2V0KCk7ICsreSkgewotICAgICAgICAgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgd2lkdGgudW5zYWZlR2V0KCk7IHgrKykgewotICAgICAgICAgICAg
ICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCBi
ID0gc3JjUm93c1tiYXNleF07Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9
IHNyY1Jvd3NbYmFzZXggKyAyXTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXgg
KyAxXSA9IHNyY1Jvd3NbYmFzZXggKyAxXTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3Nb
YmFzZXggKyAyXSA9IGI7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10g
PSBzcmNSb3dzW2Jhc2V4ICsgM107Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgICAgICAgICAgZGVzdFJvd3MgKz0g
ZGVzdEJ5dGVzUGVyUm93OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEUpCi0jZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRp
ZiAvLyBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgIH0KLSAgICAKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShjb25z
dCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNvdXJj
ZUZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9v
bCBhY2NlbGVyYXRlUmVuZGVyaW5nKQotewotICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkg
PiAwKTsKLSAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwotICAgIAotICAgIENo
ZWNrZWQ8aW50PiBvcmlnaW54ID0gc291cmNlUmVjdC54KCk7Ci0gICAgQ2hlY2tlZDxpbnQ+IGRl
c3R4ID0gKENoZWNrZWQ8aW50PihkZXN0UG9pbnQueCgpKSArIHNvdXJjZVJlY3QueCgpKTsKLSAg
ICBBU1NFUlQoZGVzdHgudW5zYWZlR2V0KCkgPj0gMCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzaXpl
LCBkZXN0eC51bnNhZmVHZXQoKSA8IHNpemUud2lkdGgoKSk7Ci0gICAgQVNTRVJUKG9yaWdpbngu
dW5zYWZlR2V0KCkgPj0gMCk7Ci0gICAgQVNTRVJUKG9yaWdpbngudW5zYWZlR2V0KCkgPD0gc291
cmNlUmVjdC5tYXhYKCkpOwotICAgIAotICAgIENoZWNrZWQ8aW50PiBlbmR4ID0gKENoZWNrZWQ8
aW50PihkZXN0UG9pbnQueCgpKSArIHNvdXJjZVJlY3QubWF4WCgpKTsKLSAgICBBU1NFUlQoZW5k
eC51bnNhZmVHZXQoKSA8PSBzaXplLndpZHRoKCkpOwotICAgIAotICAgIENoZWNrZWQ8aW50PiB3
aWR0aCA9IHNvdXJjZVJlY3Qud2lkdGgoKTsKLSAgICBDaGVja2VkPGludD4gZGVzdHcgPSBlbmR4
IC0gZGVzdHg7Ci0KLSAgICBDaGVja2VkPGludD4gb3JpZ2lueSA9IHNvdXJjZVJlY3QueSgpOwot
ICAgIENoZWNrZWQ8aW50PiBkZXN0eSA9IChDaGVja2VkPGludD4oZGVzdFBvaW50LnkoKSkgKyBz
b3VyY2VSZWN0LnkoKSk7Ci0gICAgQVNTRVJUKGRlc3R5LnVuc2FmZUdldCgpID49IDApOwotICAg
IEFTU0VSVChkZXN0eS51bnNhZmVHZXQoKSA8IHNpemUuaGVpZ2h0KCkpOwotICAgIEFTU0VSVChv
cmlnaW55LnVuc2FmZUdldCgpID49IDApOwotICAgIEFTU0VSVChvcmlnaW55LnVuc2FmZUdldCgp
IDw9IHNvdXJjZVJlY3QubWF4WSgpKTsKLSAgICAKLSAgICBDaGVja2VkPGludD4gZW5keSA9IChD
aGVja2VkPGludD4oZGVzdFBvaW50LnkoKSkgKyBzb3VyY2VSZWN0Lm1heFkoKSk7Ci0gICAgQVNT
RVJUKGVuZHkudW5zYWZlR2V0KCkgPD0gc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBDaGVja2VkPGlu
dD4gaGVpZ2h0ID0gc291cmNlUmVjdC5oZWlnaHQoKTsKLSAgICBDaGVja2VkPGludD4gZGVzdGgg
PSBlbmR5IC0gZGVzdHk7Ci0gICAgCi0gICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDAp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJvdyA9IDQg
KiBzb3VyY2VTaXplLndpZHRoKCk7Ci0gICAgY29uc3QgdWludDhfdCogc3JjUm93cyA9IHNvdXJj
ZS5kYXRhKCkgKyAob3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQpLnVuc2Fm
ZUdldCgpOwotICAgIHVuc2lnbmVkIGRlc3RCeXRlc1BlclJvdzsKLSAgICB1aW50OF90KiBkZXN0
Um93czsKLSAgICAKLSAgICBpZiAoIWFjY2VsZXJhdGVSZW5kZXJpbmcpIHsKLSAgICAgICAgaWYg
KCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGRlc3RCeXRlc1BlclJvdyA9
IGJ5dGVzUGVyUm93LnVuc2FmZUdldCgpOwotICAgICAgICBkZXN0Um93cyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgKGRlc3R5ICogZGVzdEJ5dGVzUGVyUm93ICsgZGVzdHgg
KiA0KS51bnNhZmVHZXQoKTsKLQotI2lmIFVTRShBQ0NFTEVSQVRFKQotICAgICAgICBpZiAoc291
cmNlRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCkgewot
Ci0gICAgICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKLSAgICAgICAgICAgIHNyYy53aWR0aCA9
IHdpZHRoLnVuc2FmZUdldCgpOwotICAgICAgICAgICAgc3JjLmhlaWdodCA9IGhlaWdodC51bnNh
ZmVHZXQoKTsKLSAgICAgICAgICAgIHNyYy5yb3dCeXRlcyA9IHNyY0J5dGVzUGVyUm93OwotICAg
ICAgICAgICAgc3JjLmRhdGEgPSBjb25zdF9jYXN0PHVpbnQ4X3QqPihzcmNSb3dzKTsKLQotICAg
ICAgICAgICAgdkltYWdlX0J1ZmZlciBkZXN0OwotICAgICAgICAgICAgZGVzdC53aWR0aCA9IGRl
c3R3LnVuc2FmZUdldCgpOwotICAgICAgICAgICAgZGVzdC5oZWlnaHQgPSBkZXN0aC51bnNhZmVH
ZXQoKTsKLSAgICAgICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAg
ICAgICAgICBkZXN0LmRhdGEgPSBkZXN0Um93czsKLQotI2lmIFVTRV9BUkdCMzIKLSAgICAgICAg
ICAgIHByZW11bHRpcGx5QnVmZmVyRGF0YShzcmMsIGRlc3QpOwotI2Vsc2UKLSAgICAgICAgICAg
IHZJbWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZU5vRmxh
Z3MpOwotI2VuZGlmCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgotCi0g
ICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0LnVuc2FmZUdldCgpOyArK3kpIHsKLSAg
ICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGgudW5zYWZlR2V0KCk7IHgrKykgewot
ICAgICAgICAgICAgICAgIGludCBiYXNleCA9IHggKiA0OwotICAgICAgICAgICAgICAgIHVpbnQ4
X3QgYWxwaGEgPSBzcmNSb3dzW2Jhc2V4ICsgM107Ci0jaWYgVVNFX0FSR0IzMgotICAgICAgICAg
ICAgICAgIC8vIEJ5dGUgb3JkZXIgaXMgZGlmZmVyZW50IGFzIHdlIHVzZSBpbWFnZSBidWZmZXJz
IG9mIEFSR0IzMgotICAgICAgICAgICAgICAgIGlmIChzb3VyY2VGb3JtYXQgPT0gQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkICYmIGFscGhhICE9IDI1NSkgewotICAgICAg
ICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleF0gPSAoc3JjUm93c1tiYXNleCArIDJdICogYWxw
aGEgKyAyNTQpIC8gMjU1OwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFd
ID0gKHNyY1Jvd3NbYmFzZXggKyAxXSAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAg
ICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4ICsgMF0gKiBhbHBo
YSArIDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgM10g
PSBhbHBoYTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBk
ZXN0Um93c1tiYXNleF0gPSBzcmNSb3dzW2Jhc2V4ICsgMl07Ci0gICAgICAgICAgICAgICAgICAg
IGRlc3RSb3dzW2Jhc2V4ICsgMV0gPSBzcmNSb3dzW2Jhc2V4ICsgMV07Ci0gICAgICAgICAgICAg
ICAgICAgIGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSBzcmNSb3dzW2Jhc2V4XTsKLSAgICAgICAgICAg
ICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOwotICAgICAgICAgICAgICAgIH0K
LSNlbHNlCi0gICAgICAgICAgICAgICAgaWYgKHNvdXJjZUZvcm1hdCA9PSBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChzcmNSb3dzW2Jhc2V4XSAqIGFscGhhICsgMjU0
KSAvIDI1NTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IChzcmNS
b3dzW2Jhc2V4ICsgMV0gKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAgICAgICAgICAgICAgICAg
IGRlc3RSb3dzW2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICogYWxwaGEgKyAyNTQp
IC8gMjU1OwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDNdID0gYWxwaGE7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93cyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOwotI2VuZGlmCi0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBkZXN0Um93cyArPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAgICAg
ICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSNp
ZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgICAgICBJT1N1cmZhY2U6
OkxvY2tlciBsb2NrKCpzdXJmYWNlLCBJT1N1cmZhY2U6OkxvY2tlcjo6QWNjZXNzTW9kZTo6UmVh
ZFdyaXRlKTsKLSAgICAgICAgZGVzdEJ5dGVzUGVyUm93ID0gc3VyZmFjZS0+Ynl0ZXNQZXJSb3co
KTsKLSAgICAgICAgZGVzdFJvd3MgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obG9jay5zdXJmYWNl
QmFzZUFkZHJlc3MoKSkgKyAoZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAqIDQpLnVu
c2FmZUdldCgpOwotCi0jaWYgVVNFKEFDQ0VMRVJBVEUpCi0gICAgICAgIHZJbWFnZV9CdWZmZXIg
c3JjOwotICAgICAgICBzcmMud2lkdGggPSB3aWR0aC51bnNhZmVHZXQoKTsKLSAgICAgICAgc3Jj
LmhlaWdodCA9IGhlaWdodC51bnNhZmVHZXQoKTsKLSAgICAgICAgc3JjLnJvd0J5dGVzID0gc3Jj
Qnl0ZXNQZXJSb3c7Ci0gICAgICAgIHNyYy5kYXRhID0gY29uc3RfY2FzdDx1aW50OF90Kj4oc3Jj
Um93cyk7Ci0KLSAgICAgICAgdkltYWdlX0J1ZmZlciBkZXN0OwotICAgICAgICBkZXN0LndpZHRo
ID0gZGVzdHcudW5zYWZlR2V0KCk7Ci0gICAgICAgIGRlc3QuaGVpZ2h0ID0gZGVzdGgudW5zYWZl
R2V0KCk7Ci0gICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBkZXN0Qnl0ZXNQZXJSb3c7Ci0gICAgICAg
IGRlc3QuZGF0YSA9IGRlc3RSb3dzOwotCi0gICAgICAgIGlmIChzb3VyY2VGb3JtYXQgPT0gQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKQotICAgICAgICAgICAgcHJlbXVs
dGlwbHlCdWZmZXJEYXRhKHNyYywgZGVzdCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
Ly8gU3dhcCBwaXhlbCBjaGFubmVscyBmcm9tIFJHQkEgdG8gQkdSQS4KLSAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAxLCAwLCAzIH07Ci0gICAgICAgICAgICB2SW1hZ2VQ
ZXJtdXRlQ2hhbm5lbHNfQVJHQjg4ODgoJnNyYywgJmRlc3QsIG1hcCwga3ZJbWFnZU5vRmxhZ3Mp
OwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodC51
bnNhZmVHZXQoKTsgKyt5KSB7Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRo
LnVuc2FmZUdldCgpOyB4KyspIHsKLSAgICAgICAgICAgICAgICBpbnQgYmFzZXggPSB4ICogNDsK
LSAgICAgICAgICAgICAgICB1aW50OF90IGIgPSBzcmNSb3dzW2Jhc2V4XTsKLSAgICAgICAgICAg
ICAgICB1aW50OF90IGFscGhhID0gc3JjUm93c1tiYXNleCArIDNdOwotICAgICAgICAgICAgICAg
IGlmIChzb3VyY2VGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkICYmIGFscGhhICE9IDI1NSkgewotICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNl
eF0gPSAoc3JjUm93c1tiYXNleCArIDJdICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAgICAg
ICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gKHNyY1Jvd3NbYmFzZXggKyAxXSAqIGFs
cGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAy
XSA9IChiICogYWxwaGEgKyAyNTQpIC8gMjU1OwotICAgICAgICAgICAgICAgICAgICBkZXN0Um93
c1tiYXNleCArIDNdID0gYWxwaGE7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXhdID0gc3JjUm93c1tiYXNleCArIDJdOwotICAgICAg
ICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gc3JjUm93c1tiYXNleCArIDFdOwot
ICAgICAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gYjsKLSAgICAgICAgICAg
ICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IGFscGhhOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlc3RSb3dzICs9IGRlc3RCeXRlc1BlclJvdzsK
LSAgICAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7Ci0gICAgICAgIH0KLSNlbmRp
ZiAvLyBVU0UoQUNDRUxFUkFURSkKLSNlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotI2VuZGlmIC8vIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCi0gICAgfQot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjM3NGJhZDI0ZjA3ODdmZWYwNTQzYzFiNTFiOTEy
MGYxMjMwZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuaAor
KysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvVWludDhDbGFtcGVkQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpD
R0NvbG9yU3BhY2VSZWY7Ci10eXBlZGVmIHN0cnVjdCBDR0RhdGFQcm92aWRlciAqQ0dEYXRhUHJv
dmlkZXJSZWY7Ci10eXBlZGVmIHVpbnQzMl90IENHQml0bWFwSW5mbzsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBJT1N1cmZhY2U7Ci0KLXN0cnVjdCBJbWFnZUJ1ZmZlckRhdGEgewot
ICAgIEludFNpemUgYmFja2luZ1N0b3JlU2l6ZTsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNv
cmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3c7Ci0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2U7
Ci0KLSAgICAvLyBPbmx5IGZvciBzb2Z0d2FyZSBJbWFnZUJ1ZmZlcnMuCi0gICAgdm9pZCogZGF0
YSB7IG51bGxwdHIgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlcjsKLSAgICBDR0JpdG1hcEluZm8gYml0bWFwSW5mbzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0OwotCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkKLSAgICAvLyBPbmx5IGZvciBhY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlcnMuCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFjZTsKLSNlbmRpZgotCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpIGNvbnN0OwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0
RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6
ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZykgY29uc3Q7Ci0gICAgdm9pZCBwdXREYXRhKGNv
bnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc291
cmNlRm9ybWF0LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBh
Y2NlbGVyYXRlUmVuZGVyaW5nKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0N2NmNWNkZTYzOTM5
N2U3YjAxNTQ3ZmZkZGM4YjY4YmQ2NjA0ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3Bw
CkBAIC0wLDAgKzEsMTgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuaCIKKworI2lmIEhBVkUoSU9TVVJGQUNFKQorCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKKyNpbmNsdWRlICJJbWFnZURh
dGEuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVH
cmFwaGljcy5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKTsK
KworSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQoreworICAg
IEludFNpemUgYmFja2VuZFNpemUgPSBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2FsY3VsYXRlQmFj
a2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgSW50U2l6ZSBtYXhTaXplID0gSU9T
dXJmYWNlOjptYXhpbXVtU2l6ZSgpOworICAgIGlmIChiYWNrZW5kU2l6ZS53aWR0aCgpID4gbWF4
U2l6ZS53aWR0aCgpIHx8IGJhY2tlbmRTaXplLmhlaWdodCgpID4gbWF4U2l6ZS5oZWlnaHQoKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKK30KKworUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb250
ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ0dD
b250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisKKyAgICBp
ZiAoQ0dDb250ZXh0R2V0VHlwZShjZ0NvbnRleHQpID09IGtDR0NvbnRleHRUeXBlSU9TdXJmYWNl
KQorICAgICAgICByZXR1cm4gQ0dJT1N1cmZhY2VDb250ZXh0R2V0Q29sb3JTcGFjZShjZ0NvbnRl
eHQpOworICAgIAorICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9y
U3BhY2UoY29udGV4dCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNp
emUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNy
ZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNnQ29sb3JTcGFjZSk7CisgICAgaWYgKCFz
dXJmYWNlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJldGFpblB0cjxDR0NvbnRl
eHRSZWY+IGNnQ29udGV4dCA9IHN1cmZhY2UtPmVuc3VyZVBsYXRmb3JtQ29udGV4dChob3N0V2lu
ZG93KTsKKyAgICBpZiAoIWNnQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBDR0NvbnRleHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dDo6emVybygpLCBiYWNrZW5kU2l6ZSkpOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92
ZShzdXJmYWNlKSkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoYXV0
byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKKyAgICAgICAgcmV0
dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3Bh
Y2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisgICAgCisgICAgcmV0dXJu
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6
OlNSR0IsIG51bGxwdHIpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7Cit9CisKKwor
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCisgICAgOiBJbWFnZUJ1ZmZlckNHQmFja2VuZChs
b2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkKKyAg
ICAsIG1fc3VyZmFjZShXVEZNb3ZlKHN1cmZhY2UpKQoreworICAgIEFTU0VSVChtX3N1cmZhY2Up
OworICAgIHNldHVwQ29udGV4dCgpOworfQorCitHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3VyZmFj
ZS0+ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpmbHVzaENvbnRleHQoKQoreworICAgIENHQ29udGV4dEZsdXNoKGNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKSk7Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6Om1lbW9yeUNvc3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3N1cmZhY2UtPnRvdGFs
Qnl0ZXMoKTsKK30KKworc2l6ZV90IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZXh0ZXJu
YWxNZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWVtb3J5Q29zdCgpOworfQorCit1
bnNpZ25lZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5ieXRlc1BlclJvdygpOworfQorCitDb2xvckZvcm1h
dCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRDb2xvckZvcm1hdCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIENvbG9yRm9ybWF0OjpCR1JBOworfQorCitOYXRpdmVJbWFnZVB0ciBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5KSBjb25zdAoreworICAgIHJldHVybiBtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCk7Cit9CisK
K05hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lua0ludG9OYXRp
dmVJbWFnZSgpCit7CisgICAgcmV0dXJuIElPU3VyZmFjZTo6c2lua0ludG9JbWFnZShXVEZNb3Zl
KG1fc3VyZmFjZSkpOworfQorCit2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJh
d0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQoreworICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNS
ZWN0OworICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7CisKKyAg
ICBpZiAoYXV0byBpbWFnZSA9IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgZGVzdENv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVj
dCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0Cit7CisgICAgSU9TdXJm
YWNlOjpMb2NrZXIgbG9jaygqbV9zdXJmYWNlKTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjp0b0JHUkFEYXRhKGxvY2suc3VyZmFjZUJhc2VBZGRyZXNzKCkpOworfQorCitSZWZQdHI8
SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkg
Y29uc3QKK3sKKyAgICBJT1N1cmZhY2U6OkxvY2tlciBsb2NrKCptX3N1cmZhY2UpOworICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1Jl
Y3QsIGxvY2suc3VyZmFjZUJhc2VBZGRyZXNzKCkpOworfQorCit2b2lkIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6cHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRG
b3JtYXQsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQoreworICAgIElPU3VyZmFjZTo6TG9ja2VyIGxv
Y2soKm1fc3VyZmFjZSwgSU9TdXJmYWNlOjpMb2NrZXI6OkFjY2Vzc01vZGU6OlJlYWRXcml0ZSk7
CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoaW5wdXRGb3JtYXQsIGltYWdl
RGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBsb2NrLnN1cmZhY2VCYXNlQWRkcmVzcygpKTsKKwor
ICAgIC8vIEZvcmNlIHJlY3JlYXRpbmcgdGhlIElPU3VyZmFjZSBjYWNoZWQgaW1hZ2UuCisgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc5NjYgZm9y
IGV4cGxhaW5pbmcgd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LgorICAgIGNvbnRleHQoKS5maWxsUmVj
dChGbG9hdFJlY3QoMSwgMSwgMCwgMCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGZjMGYwNDNmMDU1YTc3ZGNlZjY2M2VlNGZjN2JmNjViOTZmNjg1Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBI
QVZFKElPU1VSRkFDRSkKKworI2luY2x1ZGUgIklPU3VyZmFjZS5oIgorI2luY2x1ZGUgIkltYWdl
QnVmZmVyQ0dCYWNrZW5kLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNHQmFja2VuZCB7CisgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQpOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk7CitwdWJsaWM6CisgICAgc3Rh
dGljIEludFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0
IEhvc3RXaW5kb3cqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisKKyAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRl
OworCisgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzaXplX3Qg
ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBOYXRpdmVJbWFnZVB0
ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBv
dmVycmlkZTsKKworICAgIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisKKyAgICBWZWN0b3I8dWludDhfdD4gdG9C
R1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1h
Z2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkgb3ZlcnJpZGU7CisKK3Byb3RlY3RlZDoK
KyAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOworCisgICAgc3RhdGlj
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRDb2xvclNwYWNlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOworICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQ29sb3JGb3JtYXQgYmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX3N1cmZhY2U7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAKaW5kZXggMjgyMWVmODFkNzVkZmIwZmYwNWE4NWJlNWM5ZmJjMjU4YjU2MmViMy4uMmFhODIz
MzJkZTJkMTExYmRjZTFlMDgwNjM1OTBkY2UyMWI2YzNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAg
LTI1NCw4ICsyNTQsOCBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdl
SWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIG1fY2FjaGVkU291
cmNlUmVjdCA9IHNyY1JlY3Q7CiAgICAgKyttX2NhY2hpbmdDb3VudEZvclRlc3Rpbmc7CiAKLSAg
ICBJbnRTaXplIGludGVybmFsU2l6ZSA9IG1fY2FjaGVkSW1hZ2VCdWZmZXItPmludGVybmFsU2l6
ZSgpOwotICAgIGRlY29kZWRTaXplQ2hhbmdlZChpbnRlcm5hbFNpemUudW5jbGFtcGVkQXJlYSgp
ICogNCk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IG1fY2FjaGVkSW1hZ2VCdWZmZXItPmJh
Y2tlbmRTaXplKCk7CisgICAgZGVjb2RlZFNpemVDaGFuZ2VkKGJhY2tlbmRTaXplLnVuY2xhbXBl
ZEFyZWEoKSAqIDQpOwogfQogCiBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQppbmRleCBjMjEyNWMzZWYxNjBjMDgxMDEwOTgyM2I0YjkwMzZkZGY2ZmJjZjY3Li4z
OTFmYzIzY2QwYThmODY5YWNjMTA3MzJkMTRmZGY0NTBmYzI4NTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC0zMyw3
ICszMyw2IEBACiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJJT1N1cmZhY2VQb29s
LmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgotI2ltcG9ydCAiSW1hZ2VCdWZmZXJEYXRhQ0cu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1w
b3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTEwLDEzICsxMDksNiBAQCB2
b2lkIElPU3VyZmFjZTo6bW92ZVRvUG9vbChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1
cmZhY2UpCiAgICAgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLmFkZFN1cmZhY2UoV1RGTW92
ZShzdXJmYWNlKSk7CiB9CiAKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JF
KQotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2VC
dWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKLXsKLSAgICBy
ZXR1cm4gV1RGTW92ZShpbWFnZUJ1ZmZlci0+bV9kYXRhLnN1cmZhY2UpOwotfQotI2VuZGlmCi0K
IHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnNGb3JCaXBsYW5hclN1cmZhY2UoSW50U2l6ZSBz
aXplLCB1bnNpZ25lZCBwaXhlbEZvcm1hdCwgc2l6ZV90IGZpcnN0UGxhbmVCeXRlc1BlclBpeGVs
LCBzaXplX3Qgc2Vjb25kUGxhbmVCeXRlc1BlclBpeGVsKQogewogICAgIGludCB3aWR0aCA9IHNp
emUud2lkdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKaW5kZXggZmQ4ZTVlOGUyZTk0
ZTcwNTQ4OTZmOWFiYmJhN2E0NmY1MDIxNDFjOS4uYzk2ZTMzY2E1ZjYxMzFlNTJlMWU5ZDQ1ZDdj
MDIxNjNkZTRhY2MzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKQEAgLTExMSw3ICsx
MTEsOCBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgRmlsdGVy
RWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5w
dXRFZmZlY3QoMSk7CiAKLSAgICBVaW50OENsYW1wZWRBcnJheSogZHN0UGl4ZWxBcnJheSA9IGNy
ZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIGF1dG8qIGltYWdlUmVzdWx0ID0g
Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgYXV0byogZHN0UGl4ZWxBcnJh
eSA9IGltYWdlUmVzdWx0ID8gaW1hZ2VSZXN1bHQtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgaWYg
KCFkc3RQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOTJiMWNlNDhmYzQ0YzE4
MTVjZTc3NGNlMWI5NWM3MzY1NTJlYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgor
I2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCisjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5o
IgorI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsK
KworY2xhc3MgRHJhd2luZ0NvbnRleHQgeworcHVibGljOgorICAgIERyYXdpbmdDb250ZXh0KGNv
bnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpCisgICAgICAgIDogbV9jb250ZXh0KFsmXShHcmFw
aGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgeworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3Jh
cGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBBZmZpbmVU
cmFuc2Zvcm0oKSk7CisgICAgICAgIH0pCisgICAgeworICAgIH0KKworICAgIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQm
PigqdGhpcykubV9jb250ZXh0OyAgfQorICAgIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIHsg
cmV0dXJuIG1fZGlzcGxheUxpc3Q7IH0KKyAgICBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0OyB9CisgICAgY29uc3QgRGlzcGxheUxp
c3QqIHJlcGxheURpc3BsYXlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXBsYXlEaXNwbGF5TGlz
dC5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShib29sIHRy
YWNrc0Rpc3BsYXlMaXN0UmVwbGF5KQorICAgIHsKKyAgICAgICAgbV90cmFja3NEaXNwbGF5TGlz
dFJlcGxheSA9IHRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5OworICAgICAgICBtX3JlcGxheURpc3Bs
YXlMaXN0LnJlc2V0KCk7CisgICAgfQorCisgICAgdm9pZCByZXBsYXlEaXNwbGF5TGlzdChHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Rpc3BsYXlM
aXN0Lml0ZW1Db3VudCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJlcGxheWVy
IHJlcGxheWVyKGRlc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0KTsKKyAgICAgICAgaWYgKG1fdHJh
Y2tzRGlzcGxheUxpc3RSZXBsYXkpCisgICAgICAgICAgICBtX3JlcGxheURpc3BsYXlMaXN0ID0g
cmVwbGF5ZXIucmVwbGF5KHsgfSwgbV90cmFja3NEaXNwbGF5TGlzdFJlcGxheSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJlcGxheWVyLnJlcGxheSgpOworICAgICAgICBtX2Rpc3BsYXlM
aXN0LmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCBtX2Nv
bnRleHQ7CisgICAgRGlzcGxheUxpc3QgbV9kaXNwbGF5TGlzdDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGlzcGxheUxpc3Q+IG1fcmVwbGF5RGlzcGxheUxpc3Q7CisgICAgYm9vbCBtX3RyYWNrc0Rp
c3BsYXlMaXN0UmVwbGF5IHsgZmFsc2UgfTsKK307CisKK30gLy8gRGlzcGxheUxpc3QKK30gLy8g
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggZTYxNDFiZGUzMjA0YzE3N2FiNjlmNTFj
NWQwMzQyNWE0N2ZjNTk3NS4uOTUxODAwZWRhOTE3NDExYzg4YjlhNGJlNTUxNGNmMWY2OGM3ODc5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJG
aWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCkBAIC0yODYsMTMgKzI4NiwxNSBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVm
ZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSkpOwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1h
Z2UtPmxvZ2ljYWxTaXplKCkpOwotICAgIEludFNpemUgcGl4ZWxBcnJheURpbWVuc2lvbnM7Ci0g
ICAgYXV0byBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0
YShpbWFnZVJlY3QsICZwaXhlbEFycmF5RGltZW5zaW9ucyk7Ci0gICAgaWYgKCFwaXhlbEFycmF5
KQorICAgIGF1dG8gaW1hZ2VEYXRhID0gcmVzdWx0SW1hZ2UtPmdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIGltYWdlUmVjdCk7CisgICAgaWYgKCFp
bWFnZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxmbG9hdD4gdmFsdWVzID0g
bm9ybWFsaXplZEZsb2F0cyhtX3ZhbHVlcyk7CisgICAgYXV0byogcGl4ZWxBcnJheSA9IGltYWdl
RGF0YS0+ZGF0YSgpOworICAgIEludFNpemUgcGl4ZWxBcnJheURpbWVuc2lvbnMgPSBpbWFnZURh
dGEtPnNpemUoKTsKIAorICAgIFZlY3RvcjxmbG9hdD4gdmFsdWVzID0gbm9ybWFsaXplZEZsb2F0
cyhtX3ZhbHVlcyk7CisgICAgCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIEZFQ09M
T1JNQVRSSVhfVFlQRV9VTktOT1dOOgogICAgICAgICBicmVhazsKQEAgLTMxMSw3ICszMTMsNyBA
QCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIHJlc3VsdEltYWdlLT5wdXRCeXRlQXJyYXkoKnBpeGVsQXJyYXks
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgaW1hZ2VSZWN0LnNpemUo
KSwgaW1hZ2VSZWN0LCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFnZS0+cHV0SW1hZ2VEYXRh
KEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgKmltYWdlRGF0YSwgaW1h
Z2VSZWN0KTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IENvbG9yTWF0cml4VHlwZSYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuY3BwCmluZGV4IGZhMDQxM2MwMGRhNDNhYzVkZjU1ZTVlMDFmNjk0NGFiOWVkYTc0ODMuLjk3
OGM1NWE2N2I4ZGU3MjBlOWZhNzliZDhjYzM0ZDc0NTI4YTAyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
bmVudFRyYW5zZmVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSAiRmlsdGVyLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
VWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC0xMDgsNyArMTA4LDggQEAgdm9pZCBGRUNvbXBv
bmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVj
dCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBwaXhlbEFy
cmF5ID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBhdXRvKiBpbWFnZVJl
c3VsdCA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CisgICAgYXV0byogcGl4ZWxB
cnJheSA9IGltYWdlUmVzdWx0ID8gaW1hZ2VSZXN1bHQtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAg
aWYgKCFwaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXgg
YTE5ZWEwNTM3NTgxOWNlY2RhYzI1ZDVkOTYzZDU0NGRkNGQxYTk2OS4uMjY1NDQwZjQzOTQyYWZh
NmFhMjk4ZGFmNGVjMDJlZTNkOTVjZWM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI3LDcgKzI3
LDcgQEAKICNpbmNsdWRlICJGRUNvbXBvc2l0ZUFyaXRobWV0aWNORU9OLmgiCiAjaW5jbHVkZSAi
RmlsdGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTIyOSw3ICsyMjksOCBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3QoMSk7CiAKICAgICBpZiAobV90
eXBlID09IEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMpIHsKLSAgICAgICAgVWludDhD
bGFtcGVkQXJyYXkqIGRzdFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQoKTsKKyAgICAgICAgYXV0byogcmVzdWx0SW1hZ2UgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQoKTsKKyAgICAgICAgYXV0byogZHN0UGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlID8g
cmVzdWx0SW1hZ2UtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmICghZHN0UGl4ZWxBcnJh
eSkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKaW5kZXgg
NjJjMmY4MzM2NTM1ODY4NDRkOWYzOTBlZWE1ZWRjMTA4ZTMwYTM4OC4uYTZlM2Y0YmJhYTI0NDk3
ZjkyNjM0NjU2OTc1ZmZiODdkYzdhYjlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCkBA
IC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiRkVDb252b2x2ZU1hdHJpeC5oIgogCiAjaW5jbHVk
ZSAiRmlsdGVyLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXku
aD4KKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+
CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KQEAgLTM3MSwxMiArMzcxLDEzIEBAIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3Qo
MCk7CiAKLSAgICBVaW50OENsYW1wZWRBcnJheSogcmVzdWx0SW1hZ2U7CisgICAgSW1hZ2VEYXRh
KiByZXN1bHRJbWFnZTsKICAgICBpZiAobV9wcmVzZXJ2ZUFscGhhKQogICAgICAgICByZXN1bHRJ
bWFnZSA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgZWxzZQogICAgICAg
ICByZXN1bHRJbWFnZSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwotICAgIGlm
ICghcmVzdWx0SW1hZ2UpCisgICAgYXV0byogZHN0UGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlID8g
cmVzdWx0SW1hZ2UtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgaWYgKCFkc3RQaXhlbEFycmF5KQog
ICAgICAgICByZXR1cm47CiAKICAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVz
dGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CkBAIC0z
OTUsNyArMzk2LDcgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YSA9IHsKICAgICAgICAgKnNyY1Bp
eGVsQXJyYXksCi0gICAgICAgICpyZXN1bHRJbWFnZSwKKyAgICAgICAgKmRzdFBpeGVsQXJyYXks
CiAgICAgICAgIHBhaW50U2l6ZS53aWR0aCgpLAogICAgICAgICBwYWludFNpemUuaGVpZ2h0KCks
CiAgICAgICAgIG1fYmlhcyAqIDI1NSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKaW5kZXgg
MGU5NDRkZjAwYTk1Y2MwNmQyNmFhNDJmMTY5ZWU2YTQ2ZjVhMjc4Mi4uNTM3MzU1MDQ1M2U0OTg2
MmMwZTQxNmYyZGNjMjU2YjQ3MGM5MTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAK
QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkZpbHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC05NCw3ICs5NCw4IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAgICAgQVNTRVJUKG1feENoYW5uZWxTZWxlY3RvciAhPSBDSEFOTkVMX1VOS05PV04p
OwogICAgIEFTU0VSVChtX3lDaGFubmVsU2VsZWN0b3IgIT0gQ0hBTk5FTF9VTktOT1dOKTsKIAot
ICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0KCk7CisgICAgYXV0byogcmVzdWx0SW1hZ2UgPSBjcmVhdGVQcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBhdXRvKiBkc3RQaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2Ug
PyByZXN1bHRJbWFnZS0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWRzdFBpeGVsQXJyYXkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4IDIzNjY2YTFhZWY1MzUz
MjE0OTNjOWVhMmQ1NjE4ZThmZGRkODRlY2IuLjEzOTVhMmRiODUwMzJjOWUyYWU4NjRjNjM5NjY2
OGIzNzQxY2MzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTIzLDggKzIzLDggQEAKICNpbmNs
dWRlICJGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIlNoYWRv
d0JsdXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgogCkBAIC05OSwxNCArOTksMTUgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KGJsdXJSYWRpdXMsIG9m
ZnNldCwgbV9zaGFkb3dDb2xvcik7CiAKICAgICAvLyBUT0RPOiBEaXJlY3QgcGl4ZWwgYWNjZXNz
IHRvIEltYWdlQnVmZmVyIHdvdWxkIGF2b2lkIGNvcHlpbmcgdGhlIEltYWdlRGF0YS4KLSAgICBJ
bnRSZWN0IHNoYWRvd0FyZWEoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPmludGVybmFsU2l6ZSgp
KTsKLSAgICBhdXRvIHNyY1BpeGVsQXJyYXkgPSByZXN1bHRJbWFnZS0+Z2V0UHJlbXVsdGlwbGll
ZEltYWdlRGF0YShzaGFkb3dBcmVhLCBudWxscHRyLCBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3Jl
Q29vcmRpbmF0ZVN5c3RlbSk7Ci0gICAgaWYgKCFzcmNQaXhlbEFycmF5KQorICAgIEludFJlY3Qg
c2hhZG93QXJlYShJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNhbFNpemUoKSk7CisgICAg
YXV0byBpbWFnZURhdGEgPSByZXN1bHRJbWFnZS0+Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIHNoYWRvd0FyZWEpOworICAgIGlmICghaW1hZ2VEYXRh
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250ZXh0U2hhZG93LmJsdXJMYXllckltYWdlKHNy
Y1BpeGVsQXJyYXktPmRhdGEoKSwgc2hhZG93QXJlYS5zaXplKCksIDQgKiBzaGFkb3dBcmVhLnNp
emUoKS53aWR0aCgpKTsKLQotICAgIHJlc3VsdEltYWdlLT5wdXRCeXRlQXJyYXkoKnNyY1BpeGVs
QXJyYXksIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHNoYWRvd0FyZWEu
c2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgpLCBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3Jl
Q29vcmRpbmF0ZVN5c3RlbSk7CisgICAgYXV0byogc3JjUGl4ZWxBcnJheSA9IGltYWdlRGF0YS0+
ZGF0YSgpOworICAgIGNvbnRleHRTaGFkb3cuYmx1ckxheWVySW1hZ2Uoc3JjUGl4ZWxBcnJheS0+
ZGF0YSgpLCBpbWFnZURhdGEtPnNpemUoKSwgNCAqIGltYWdlRGF0YS0+c2l6ZSgpLndpZHRoKCkp
OworICAgIAorICAgIHJlc3VsdEltYWdlLT5wdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZCwgKmltYWdlRGF0YSwgc2hhZG93QXJlYSk7CiAKICAgICByZXN1
bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcjo6U291cmNl
SW4pOwogICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
YWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKaW5kZXggNDliYTg0MTczYzJkMWE5OTU0ZTU2MTM5MGNlMDNjMjRiYzkwYzgxYi4u
ZDdlZDliMjQ0OTAxNzhmZmJmYmViMWNkNDJiZWE1ZThmZjE1OWU3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGRUdhdXNzaWFuQmx1ck5FT04u
aCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAK
ICNpZiBVU0UoQUNDRUxFUkFURSkKQEAgLTUyMiwxNCArNTIzLDE1IEBAIHZvaWQgRkVHYXVzc2lh
bkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9
IGlucHV0RWZmZWN0KDApOwogCi0gICAgVWludDhDbGFtcGVkQXJyYXkqIHJlc3VsdFBpeGVsQXJy
YXkgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKLSAgICBpZiAoIXJlc3VsdFBp
eGVsQXJyYXkpCisgICAgYXV0byogcmVzdWx0SW1hZ2UgPSBjcmVhdGVQcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQoKTsKKyAgICBhdXRvKiBkc3RQaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UgPyByZXN1
bHRJbWFnZS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIWRzdFBpeGVsQXJyYXkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHNldElzQWxwaGFJbWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOwog
CiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJ
bWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIGluLT5jb3B5UHJlbXVsdGlw
bGllZFJlc3VsdCgqcmVzdWx0UGl4ZWxBcnJheSwgZWZmZWN0RHJhd2luZ1JlY3QpOworICAgIGlu
LT5jb3B5UHJlbXVsdGlwbGllZFJlc3VsdCgqZHN0UGl4ZWxBcnJheSwgZWZmZWN0RHJhd2luZ1Jl
Y3QpOwogCiAgICAgaWYgKCFtX3N0ZFggJiYgIW1fc3RkWSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NTQzLDcgKzU0NSw3IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgaWYgKCF0bXBJbWFnZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRm
b3JtQXBwbHkoKnJlc3VsdFBpeGVsQXJyYXksICp0bXBJbWFnZURhdGEsIGtlcm5lbFNpemUud2lk
dGgoKSwga2VybmVsU2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXplKTsKKyAgICBwbGF0Zm9ybUFwcGx5
KCpkc3RQaXhlbEFycmF5LCAqdG1wSW1hZ2VEYXRhLCBrZXJuZWxTaXplLndpZHRoKCksIGtlcm5l
bFNpemUuaGVpZ2h0KCksIHBhaW50U2l6ZSk7CiB9CiAKIEludE91dHNldHMgRkVHYXVzc2lhbkJs
dXI6Om91dHNldHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKaW5kZXggMGJhNTFiNzYxMmYyY2IyZjY5
ZjRmNjAyMWNlZmNiZTNjMmU3NDJkMy4uNmRiODdmZDU0NWE4ZjFkZGE3ZDliNTg4YTI1NDA2NTVh
NTc4ZmIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJD
b2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkZFTGlnaHRpbmdORU9OLmgiCisjaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9icy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NzMsNyArNDc0LDggQEAgdm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsK
IAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5KiByZXN1dFBpeGVsQXJyYXkgPSBjcmVhdGVQcmVtdWx0
aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBhdXRvKiByZXN1bHRJbWFnZSA9IGNyZWF0ZVByZW11
bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIGF1dG8qIHJlc3V0UGl4ZWxBcnJheSA9IHJlc3Vs
dEltYWdlID8gcmVzdWx0SW1hZ2UtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFyZXN1dFBp
eGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCmluZGV4IDI1MTc4
MWNhNWFhNTFmNzgwMjdhZDUwOGRmOWFjNjEwYzY3OTRmYTUuLmNiZDQyNDE5NzY1NzBhODczOTQ1
MjAwYTkxM2UwZTllNjU5YWI0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAgLTI3LDcgKzI3LDcg
QEAKIAogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KKyNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvUGFyYWxsZWxKb2JzLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTIzNCw3ICsy
MzQsOCBAQCB2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIHsKICAg
ICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKLSAgICBVaW50OENsYW1wZWRB
cnJheSogZHN0UGl4ZWxBcnJheSA9IGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwor
ICAgIGF1dG8qIHJlc3VsdEltYWdlID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7
CisgICAgYXV0byogZHN0UGl4ZWxBcnJheSA9IHJlc3VsdEltYWdlID8gcmVzdWx0SW1hZ2UtPmRh
dGEoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFkc3RQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCA2ZDYwY2RkZWJiMTAyZjUyZGMzYzIxYWVjYzJhNTBk
YjRiZjc4MzRiLi5mMTZiOWIzMWE1NTlkNzQ2MjFmZjIzMjQ0ZGE5MzJkZjQzMTY4ZDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVs
ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVR1cmJ1bGVuY2UuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiRkVUdXJidWxlbmNl
LmgiCiAKICNpbmNsdWRlICJGaWx0ZXIuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50
OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9icy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTM5NSw3ICszOTUsOCBAQCB2b2lkIEZFVHVyYnVsZW5j
ZTo6ZmlsbFJlZ2lvbldvcmtlcihGaWxsUmVnaW9uUGFyYW1ldGVycyogcGFyYW1ldGVycykKIAog
dm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiB7Ci0gICAgVWludDhD
bGFtcGVkQXJyYXkqIHBpeGVsQXJyYXkgPSBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgp
OworICAgIGF1dG8qIHJlc3VsdEltYWdlID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQo
KTsKKyAgICBhdXRvKiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UgPyByZXN1bHRJbWFnZS0+ZGF0
YSgpIDogbnVsbHB0cjsKICAgICBpZiAoIXBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwCmluZGV4IDZlOTg2ZDRlYzJhOTc5Mjk2NjM4NGZjNTUwNzRhMmY5NzJi
NTkwZmEuLmE5ZThmY2EyYzVkMWRjYmI2NjdhNWI3Y2MwZDRmNzcwMjQ4NGYzNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2lu
Y2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNp
bmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVk
QXJyYXlJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBIQVZFKEFSTV9O
RU9OX0lOVFJJTlNJQ1MpCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmZv
cmNlVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCkKICAgICBpZiAoIW1fcHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KQogICAgICAgICByZXR1cm47CiAKLSAgICBVaW50OENsYW1wZWRBcnJheSogaW1h
Z2VBcnJheSA9IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpOworICAgIFVpbnQ4Q2xh
bXBlZEFycmF5KiBpbWFnZUFycmF5ID0gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEo
KTsKICAgICB1aW50OF90KiBwaXhlbERhdGEgPSBpbWFnZUFycmF5LT5kYXRhKCk7CiAgICAgaW50
IHBpeGVsQXJyYXlMZW5ndGggPSBpbWFnZUFycmF5LT5sZW5ndGgoKTsKIApAQCAtMjY1LDcgKzI2
NSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdHNSZWN1cnNpdmUoKQogCiBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCgpCiB7Ci0gICAgTE9HX1dJ
VEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiRmlsdGVyRWZmZWN0ICIgPDwgZmlsdGVyTmFt
ZSgpIDw8ICIgIiA8PCB0aGlzIDw8ICIgaW1hZ2VCdWZmZXJSZXN1bHQoKS4gRXhpc3RpbmcgaW1h
Z2UgYnVmZmVyICIgPDwgbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKSA8PCAgIiBtX3ByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCAiIDw8IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpIDw8
ICIgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCAiIDw8IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1
bHQuZ2V0KCkpOworICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIkZpbHRl
ckVmZmVjdCAiIDw8IGZpbHRlck5hbWUoKSA8PCAiICIgPDwgdGhpcyA8PCAiIGltYWdlQnVmZmVy
UmVzdWx0KCkuIEV4aXN0aW5nIGltYWdlIGJ1ZmZlciAiIDw8IG1faW1hZ2VCdWZmZXJSZXN1bHQu
Z2V0KCkgPDwgICIgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgIiA8PCBtX3ByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdC0+ZGF0YSgpIDw8ICIgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCAiIDw8
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSk7CiAKICAgICBpZiAoIWhhc1Jlc3Vs
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3OSw5ICsyNzksOSBAQCBJbWFnZUJ1
ZmZlciogRmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCgpCiAKICAgICBJbnRSZWN0IGRl
c3RpbmF0aW9uUmVjdChJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAg
ICAgaWYgKG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQotICAgICAgICBtX2ltYWdlQnVmZmVy
UmVzdWx0LT5wdXRCeXRlQXJyYXkoKm1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBk
ZXN0aW5hdGlvblJlY3QsIEludFBvaW50KCkpOworICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0
LT5wdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgKm1f
cHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LCBkZXN0aW5hdGlvblJlY3QpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdC0+cHV0Qnl0ZUFycmF5KCptX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIGRlc3Rp
bmF0aW9uUmVjdC5zaXplKCksIGRlc3RpbmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7CisgICAgICAg
IG1faW1hZ2VCdWZmZXJSZXN1bHQtPnB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsICptX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LCBkZXN0aW5hdGlv
blJlY3QpOwogICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCkBAIC00
MzgsNTIgKzQzOCw1MiBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3Vs
dChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhh
c1Jlc3VsdCgpKTsKICAgICAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8
ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBjb3B5
VW5tdWx0aXBsaWVkUmVzdWx0KCkuIEV4aXN0aW5nIGltYWdlIGJ1ZmZlciAiIDw8IG1faW1hZ2VC
dWZmZXJSZXN1bHQuZ2V0KCkgPDwgICIgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgIiA8PCBt
X3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKSA8PCAiIG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQgIiA8PCBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpKTsKKyAgICBMT0dfV0lU
SF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1l
KCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KCkuIEV4aXN0aW5n
IGltYWdlIGJ1ZmZlciAiIDw8IG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCkgPDwgICIgbV9wcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQgIiA8PCBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0
YSgpIDw8ICIgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCAiIDw8IG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQtPmRhdGEoKSk7CiAKICAgICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQp
IHsKICAgICAgICAgLy8gV2UgcHJlZmVyIGEgY29udmVyc2lvbiBmcm9tIHRoZSBpbWFnZSBidWZm
ZXIuCiAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KSB7Ci0gICAgICAgICAgICBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0VW5tdWx0aXBs
aWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXpl
KCkpKTsKKyAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVm
ZmVyUmVzdWx0LT5nZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkLCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0pOwogICAg
ICAgICAgICAgaWYgKCFtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXpl
KG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRT
aXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgbV91bm11bHRp
cGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKChpbnB1dFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCkpOworICAgICAgICAgICAgbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRlKGlucHV0U2l6ZSk7CiAg
ICAgICAgICAgICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjb3B5VW5wcmVtdWx0aXBseWlu
Z0FscGhhKCptX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwgKm1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQsIGlucHV0U2l6ZSk7CisgICAgICAgICAgICBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhh
KCptX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCAqbV91bm11bHRpcGxpZWRJbWFn
ZVJlc3VsdC0+ZGF0YSgpLCBpbnB1dFNpemUpOwogICAgICAgICB9CiAgICAgfQotICAgIGNvcHlJ
bWFnZUJ5dGVzKCptX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LCBkZXN0aW5hdGlvbiwgcmVjdCk7
CisgICAgY29weUltYWdlQnl0ZXMoKm1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwg
ZGVzdGluYXRpb24sIHJlY3QpOwogfQogCiB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRp
cGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewogICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CiAKLSAgICBMT0dfV0lUSF9TVFJF
QU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwg
IiAiIDw8IHRoaXMgPDwgIiBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCgpLiBFeGlzdGluZyBpbWFn
ZSBidWZmZXIgIiA8PCBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpIDw8ICAiIG1fcHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0ICIgPDwgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCkgPDwg
IiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ICIgPDwgbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dC5nZXQoKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiRmlsdGVy
RWZmZWN0ICIgPDwgZmlsdGVyTmFtZSgpIDw8ICIgIiA8PCB0aGlzIDw8ICIgY29weVByZW11bHRp
cGxpZWRSZXN1bHQoKS4gRXhpc3RpbmcgaW1hZ2UgYnVmZmVyICIgPDwgbV9pbWFnZUJ1ZmZlclJl
c3VsdC5nZXQoKSA8PCAgIiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCAiIDw8IG1fcHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCkgPDwgIiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0
ICIgPDwgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpKTsKIAogICAgIGlmICghbV9w
cmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpIHsKICAgICAgICAgLy8gV2UgcHJlZmVyIGEgY29udmVy
c2lvbiBmcm9tIHRoZSBpbWFnZSBidWZmZXIuCiAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVz
dWx0KSB7Ci0gICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IG1faW1hZ2VC
dWZmZXJSZXN1bHQtPmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgp
LCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSkpOworICAgICAgICAgICAgbV9wcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgeyBJbnRQb2ludCgpLCBtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSB9KTsKICAgICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwog
ICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRT
aXplKSk7CiAgICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUo
KSk7Ci0gICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBl
ZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChpbnB1dFNpemUuYXJlYSgpICogNCkudW5z
YWZlR2V0KCkpOworICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBJbWFn
ZURhdGE6OmNyZWF0ZShpbnB1dFNpemUpOwogICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGNvcHlQcmVtdWx0aXBseWluZ0FscGhhKCptX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0LCAqbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQsIGlucHV0U2l6ZSk7CisgICAgICAgICAg
ICBjb3B5UHJlbXVsdGlwbHlpbmdBbHBoYSgqbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0
YSgpLCAqbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgaW5wdXRTaXplKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICBjb3B5SW1hZ2VCeXRlcygqbV9wcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQsIGRlc3RpbmF0aW9uLCByZWN0KTsKKyAgICBjb3B5SW1hZ2VCeXRlcygqbV9wcmVtdWx0
aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgZGVzdGluYXRpb24sIHJlY3QpOwogfQogCiBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpCkBAIC00OTcs
MTMgKzQ5NywxMCBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZl
clJlc3VsdCgpCiAKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xh
bXBlZFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIG1faW1hZ2VCdWZmZXJS
ZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJp
bmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSk7Ci0g
ICAgaWYgKCFtX2ltYWdlQnVmZmVyUmVzdWx0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQog
ICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCi1VaW50OENsYW1wZWRB
cnJheSogRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCitJbWFn
ZURhdGEqIEZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogewog
ICAgIExPRyhGaWx0ZXJzLCAiRmlsdGVyRWZmZWN0ICVzICVwIGNyZWF0ZVVubXVsdGlwbGllZElt
YWdlUmVzdWx0IiwgZmlsdGVyTmFtZSgpLCB0aGlzKTsKIApAQCAtNTE1LDExICs1MTIsMTEgQEAg
VWludDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQoKQogICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUo
KSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6
ZSkpOwogICAgIHJlc3VsdFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAg
bV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKChyZXN1bHRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKKyAgICBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gSW1hZ2VEYXRhOjpjcmVhdGUocmVzdWx0U2l6ZSk7
CiAgICAgcmV0dXJuIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7CiB9CiAKLVVpbnQ4
Q2xhbXBlZEFycmF5KiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3Vs
dCgpCitJbWFnZURhdGEqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0KCkKIHsKICAgICBMT0coRmlsdGVycywgIkZpbHRlckVmZmVjdCAlcyAlcCBjcmVhdGVQcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQiLCBmaWx0ZXJOYW1lKCksIHRoaXMpOwogCkBAIC01MzEsNyAr
NTI4LDcgQEAgVWludDhDbGFtcGVkQXJyYXkqIEZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0KCkKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5n
KHJlc3VsdFNpemUpKTsKICAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxl
KCkpOwotICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHJlc3VsdFNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0
KCkpOworICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gSW1hZ2VEYXRhOjpjcmVhdGUo
cmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCBjOTY2ZmNjMjE2MzlkZTVhNDA0YTdjNjJmM2VhMmI2
ZTkzMzJmZTQyLi5hZjQ2M2VmZWIwMTM2YWM2MThlMjk5Y2QwOGQ0NDgzOGQwZWY1NjUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
RmlsdGVyOwogY2xhc3MgRmlsdGVyRWZmZWN0OwogY2xhc3MgSW1hZ2VCdWZmZXI7CitjbGFzcyBJ
bWFnZURhdGE7CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+PiBGaWx0ZXJF
ZmZlY3RWZWN0b3I7CiAKQEAgLTE1Myw4ICsxNTQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgPSAwOwogCiAgICAgSW1hZ2VCdWZmZXIq
IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgVWludDhDbGFtcGVkQXJyYXkqIGNyZWF0
ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7Ci0gICAgVWludDhDbGFtcGVkQXJyYXkqIGNyZWF0
ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOworICAgIEltYWdlRGF0YSogY3JlYXRlVW5tdWx0
aXBsaWVkSW1hZ2VSZXN1bHQoKTsKKyAgICBJbWFnZURhdGEqIGNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpOwogCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGZpbHRlciB3aWxsIG9u
bHkgb3BlcmF0ZSBjb3JyZWN0bHkgb24gdmFsaWQgUkdCQSB2YWx1ZXMsIHdpdGgKICAgICAvLyBh
bHBoYSBpbiBbMCwyNTVdIGFuZCBlYWNoIGNvbG9yIGNvbXBvbmVudCBpbiBbMCwgYWxwaGFdLgpA
QCAtMTgyLDggKzE4Myw4IEBAIHByaXZhdGU6CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yIG1faW5w
dXRFZmZlY3RzOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVm
ZmVyUmVzdWx0OwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gbV91bm11bHRpcGxpZWRJ
bWFnZVJlc3VsdDsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IG1fcHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0OworICAgIFJlZlB0cjxJbWFnZURhdGE+IG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQ7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7
CiAKICAgICBJbnRSZWN0IG1fYWJzb2x1dGVQYWludFJlY3Q7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCAxZTAzNWE3ZWVmMjgwM2Nm
NjU5OTJkMDQ5YzlmOGI1NTZiY2VjYWVjLi45MThlMThhZjVlMTJmZjkwNDk0ODNhNzhlZjFiYTgy
ZDczNThjMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgcGFpbnRUb0NhbnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9j
dXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCksIGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUo
KSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgcGFpbnRUb0NhbnZhcyhwaXhlbHMuZ2V0
KCksIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCksIGltYWdlQnVmZmVy
LT5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBVU0UoT1BFTkdMX0VTKQogICAgIHByZXNlbnRSZW5kZXJidWZmZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRhdGFEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmZjFiMzk0MTVlYmIyMWJlNmNlZmFjNTkwNmY3ZDQyNTFiODM1OTNmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckRh
dGEuaCIKLQotI2lmIFVTRShESVJFQ1QyRCkKLQotI2luY2x1ZGUgIkJpdG1hcEluZm8uaCIKLSNp
bmNsdWRlICJEaXJlY3QyRFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgotI2luY2x1ZGUgIkhXbmREQy5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dERpcmVjdDJELmgiCi0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWlu
dDhDbGFtcGVkQXJyYXkuaD4KLSNpbmNsdWRlIDxkMmQxLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0vLyBTd2l6emxlIHRoZSByZWQgYW5kIGJsdWUgYnl0ZXMgb2YgdGhlIHBpeGVscyBp
biBhIGJ1ZmZlcgotdGVtcGxhdGUgPEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzaXJlZEZvcm1h
dD4KLXZvaWQgc3dpenpsZUFuZFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNyY1Jvd3MsIHVu
c2lnbmVkIHJvd0NvdW50LCB1bnNpZ25lZCBjb2xDb3VudCwgdW5zaWduZWQgc3JjU3RyaWRlLCB1
bnNpZ25lZCBkZXN0U3RyaWRlLCB1aW50OF90KiBkZXN0Um93cykKLXsKLSAgICBmb3IgKHVuc2ln
bmVkIHkgPSAwOyB5IDwgcm93Q291bnQ7ICsreSkgewotICAgICAgICAvLyBTb3VyY2UgZGF0YSBt
YXkgYmUgcG93ZXItb2YtdHdvIHNpemVkLCBzbyB3ZSBuZWVkIHRvIG9ubHkgY29weSB0aGUgYml0
cyB0aGF0Ci0gICAgICAgIC8vIGNvcnJlc3BvbmQgdG8gdGhlIHJlY3RhbmdsZSBzdXBwbGllZCBi
eSB0aGUgY2FsbGVyLgotICAgICAgICBjb25zdCB1aW50MzJfdCogc3JjUm93ID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHNyY1Jvd3MgKyBzcmNTdHJpZGUgKiB5KTsKLSAgICAg
ICAgdWludDhfdCogZGVzdFJvdyA9IGRlc3RSb3dzICsgZGVzdFN0cmlkZSAqIHk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgeCA9IDA7IHggPCBjb2xDb3VudDsgKyt4KSB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBieXRlUG9zaXRpb24gPSB4ICogNDsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90
KiBzcmNQaXhlbCA9IHNyY1JvdyArIHg7Ci0KLSAgICAgICAgICAgIC8vIFNvZnR3YXJlIGZpbHRl
cnMgZXhwZWN0IChQKVJHQkEgYnl0ZXMuIFdlIG5lZWQgdG8gc3dpenpsZSBmcm9tIERpcmVjdDJE
J3MgUEJHUkEgdG8gYmUgY29tcGF0aWJsZS4KLSAgICAgICAgICAgIHVpbnQzMl90IGFscGhhID0g
KCpzcmNQaXhlbCAmIDB4RkYwMDAwMDApID4+IDI0OwotICAgICAgICAgICAgdWludDMyX3QgcmVk
ID0gKCpzcmNQaXhlbCAmIDB4MDBGRjAwMDApID4+IDE2OwotICAgICAgICAgICAgdWludDMyX3Qg
Z3JlZW4gPSAoKnNyY1BpeGVsICYgMHgwMDAwRkYwMCkgPj4gODsKLSAgICAgICAgICAgIHVpbnQz
Ml90IGJsdWUgPSAoKnNyY1BpeGVsICYgMHgwMDAwMDBGRik7Ci0KLSAgICAgICAgICAgIGlmIChk
ZXNpcmVkRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCkg
ewotICAgICAgICAgICAgICAgIGlmIChhbHBoYSAmJiBhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmVkID0gcmVkICogMjU1IC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAg
IGdyZWVuID0gZ3JlZW4gKiAyNTUgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgYmx1ZSA9
IGJsdWUgKiAyNTUgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGRlc3RSb3dbYnl0ZVBvc2l0aW9uXSAgICAgPSByZWQ7Ci0gICAgICAgICAg
ICBkZXN0Um93W2J5dGVQb3NpdGlvbiArIDFdID0gZ3JlZW47Ci0gICAgICAgICAgICBkZXN0Um93
W2J5dGVQb3NpdGlvbiArIDJdID0gYmx1ZTsKLSAgICAgICAgICAgIGRlc3RSb3dbYnl0ZVBvc2l0
aW9uICsgM10gPSBhbHBoYTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgY29w
eVJlY3RGcm9tU291cmNlVG9EZXN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFNpemUmIHNvdXJjZUJ1ZmZlclNpemUsIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgY29uc3QgSW50
U2l6ZSYgZGVzdEJ1ZmZlclNpemUsIHVpbnQ4X3QqIGRlc3QsIGNvbnN0IEludFBvaW50JiBkZXN0
QnVmZmVyUG9zaXRpb24pCi17Ci0gICAgaWYgKCFJbnRSZWN0KHsgfSwgZGVzdEJ1ZmZlclNpemUp
LmNvbnRhaW5zKEludFJlY3QoZGVzdEJ1ZmZlclBvc2l0aW9uLCBzb3VyY2VSZWN0LnNpemUoKSkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIUludFJlY3QoeyB9LCBzb3VyY2VC
dWZmZXJTaXplKS5jb250YWlucyhzb3VyY2VSZWN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgdW5zaWduZWQgc3JjU3RyaWRlID0gc291cmNlQnVmZmVyU2l6ZS53aWR0aCgpICogNDsK
LSAgICB1bnNpZ25lZCBkZXN0U3RyaWRlID0gZGVzdEJ1ZmZlclNpemUud2lkdGgoKSAqIDQ7Ci0K
LSAgICB1bnNpZ25lZCBzcmNSb3dPZmZzZXQgPSBzb3VyY2VSZWN0LmxvY2F0aW9uKCkueCgpICog
NDsKLSAgICB1bnNpZ25lZCBkZXN0Um93T2Zmc2V0ID0gZGVzdEJ1ZmZlclBvc2l0aW9uLngoKSAq
IDQ7Ci0KLSAgICBjb25zdCB1aW50OF90KiBzcmNSb3dzID0gc291cmNlICsgc3JjU3RyaWRlICog
c291cmNlUmVjdC5sb2NhdGlvbigpLnkoKTsKLSAgICB1aW50OF90KiBkZXN0Um93cyA9IGRlc3Qg
KyBkZXN0U3RyaWRlICogZGVzdEJ1ZmZlclBvc2l0aW9uLnkoKTsKLQotICAgIGNvbnN0IHVuc2ln
bmVkIGJ5dGVzUGVyUm93ID0gc291cmNlUmVjdC53aWR0aCgpICogNDsKLSAgICBmb3IgKHVuc2ln
bmVkIHkgPSAwOyB5IDwgc291cmNlUmVjdC5oZWlnaHQoKTsgKyt5KSB7Ci0gICAgICAgIGNvbnN0
IHVpbnQ4X3QqIHNyY1JvdyA9IHNyY1Jvd3MgKyBzcmNTdHJpZGUgKiB5ICsgc3JjUm93T2Zmc2V0
OwotICAgICAgICB1aW50OF90KiBkZXN0Um93ID0gZGVzdFJvd3MgKyBkZXN0U3RyaWRlICogeSAr
IGRlc3RSb3dPZmZzZXQ7Ci0gICAgICAgIG1lbWNweShkZXN0Um93LCBzcmNSb3csIGJ5dGVzUGVy
Um93KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gTm90ZTogQXNzdW1lcyB0
aGF0IGJ5dGVzIGFyZSBhbHJlYWR5IGluIFJHQkEgZm9ybWF0Ci10ZW1wbGF0ZSA8QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBkZXNpcmVkRm9ybWF0PgotYm9vbCBjb3B5UmVjdEZyb21Tb3VyY2VUb0Rl
c3RBbmRTZXRQcmVtdWx0aXBsaWNhdGlvbihjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRTaXplJiBzb3VyY2VCdWZmZXJTaXplLCBjb25zdCB1aW50OF90KiBzb3VyY2UsIGNvbnN0
IEludFNpemUmIGRlc3RCdWZmZXJTaXplLCB1aW50OF90KiBkZXN0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdEJ1ZmZlclBvc2l0aW9uKQotewotICAgIGlmICghSW50UmVjdCh7IH0sIGRlc3RCdWZmZXJT
aXplKS5jb250YWlucyhJbnRSZWN0KGRlc3RCdWZmZXJQb3NpdGlvbiwgc291cmNlUmVjdC5zaXpl
KCkpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFJbnRSZWN0KHsgfSwgc291
cmNlQnVmZmVyU2l6ZSkuY29udGFpbnMoc291cmNlUmVjdCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHVuc2lnbmVkIHNyY1N0cmlkZSA9IHNvdXJjZUJ1ZmZlclNpemUud2lkdGgoKSAq
IDQ7Ci0gICAgdW5zaWduZWQgZGVzdFN0cmlkZSA9IGRlc3RCdWZmZXJTaXplLndpZHRoKCkgKiA0
OwotCi0gICAgdW5zaWduZWQgc3JjUm93T2Zmc2V0ID0gc291cmNlUmVjdC5sb2NhdGlvbigpLngo
KSAqIDQ7Ci0gICAgdW5zaWduZWQgZGVzdFJvd09mZnNldCA9IGRlc3RCdWZmZXJQb3NpdGlvbi54
KCkgKiA0OwotCi0gICAgY29uc3QgdWludDhfdCogc3JjUm93cyA9IHNvdXJjZSArIHNyY1N0cmlk
ZSAqIHNvdXJjZVJlY3QubG9jYXRpb24oKS55KCk7Ci0gICAgdWludDhfdCogZGVzdFJvd3MgPSBk
ZXN0ICsgZGVzdFN0cmlkZSAqIGRlc3RCdWZmZXJQb3NpdGlvbi55KCk7Ci0KLSAgICBjb25zdCB1
bnNpZ25lZCBieXRlc1BlclJvdyA9IHNvdXJjZVJlY3Qud2lkdGgoKSAqIDQ7Ci0gICAgZm9yICh1
bnNpZ25lZCB5ID0gMDsgeSA8IHNvdXJjZVJlY3QuaGVpZ2h0KCk7ICsreSkgewotICAgICAgICBj
b25zdCB1aW50OF90KiBzcmNSb3cgPSBzcmNSb3dzICsgc3JjU3RyaWRlICogeSArIHNyY1Jvd09m
ZnNldDsKLSAgICAgICAgdWludDhfdCogZGVzdFJvdyA9IGRlc3RSb3dzICsgZGVzdFN0cmlkZSAq
IHkgKyBkZXN0Um93T2Zmc2V0OwotCi0gICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgc291
cmNlUmVjdC53aWR0aCgpOyArK3gpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHBvcyA9IHggKiA0
OwotCi0gICAgICAgICAgICB1bnNpZ25lZCByZWQgPSBzcmNSb3dbeF07Ci0gICAgICAgICAgICB1
bnNpZ25lZCBncmVlbiA9IHNyY1Jvd1t4ICsgMV07Ci0gICAgICAgICAgICB1bnNpZ25lZCBibHVl
ID0gc3JjUm93W3ggKyAyXTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGFscGhhID0gc3JjUm93W3gg
KyAzXTsKLQotICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgewotICAgICAgICAgICAgICAgIGlmIChhbHBoYSAhPSAy
NTUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVkID0gKHJlZCAqIGFscGhhICsgMjU0KSAvIDI1
NTsKLSAgICAgICAgICAgICAgICAgICAgZ3JlZW4gPSAoZ3JlZW4gKiBhbHBoYSArIDI1NCkgLyAy
NTU7Ci0gICAgICAgICAgICAgICAgICAgIGJsdWUgPSAoYmx1ZSAqIGFscGhhICsgMjU0KSAvIDI1
NTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGlmIChhbHBoYSAmJiBhbHBoYSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVk
ID0gcmVkICogMjU1IC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgICAgIGdyZWVuID0gZ3JlZW4g
KiAyNTUgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICAgICAgYmx1ZSA9IGJsdWUgKiAyNTUgLyBh
bHBoYTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHVp
bnQzMl90KiBwaXhlbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihkZXN0Um93KSArIHg7
Ci0gICAgICAgICAgICAqcGl4ZWwgPSAoYWxwaGEgPDwgMjQpIHwgcmVkICA8PCAxNiB8IGdyZWVu
ICA8PCA4IHwgYmx1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIEltYWdlQnVmZmVyRGF0YTo6Y29weVJlY3RGcm9tRGF0YShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+JiByZXN1bHQpIGNvbnN0Ci17Ci0gICAgYXV0
byByYXdCaXRtYXBTaXplID0gYml0bWFwLT5HZXRTaXplKCk7Ci0KLSAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IGJhY2tpbmdTdG9yZVNpemUud2lkdGgoKSAvIHJhd0JpdG1hcFNpemUud2lkdGg7Ci0K
LSAgICBJbnRSZWN0IHNjYWxlZFJlY3QgPSByZWN0OwotICAgIHNjYWxlZFJlY3Quc2NhbGUoc2Nh
bGVGYWN0b3IpOwotCi0gICAgaWYgKCFJbnRSZWN0KEludFBvaW50KCksIGJhY2tpbmdTdG9yZVNp
emUpLmNvbnRhaW5zKHNjYWxlZFJlY3QpKSB7Ci0gICAgICAgIC8vIFJlcXVlc3RlZCByZWN0IGlz
IG91dHNpZGUgdGhlIGJ1ZmZlci4gUmV0dXJuIHplcm8tZmlsbGVkIGJ1ZmZlci4KLSAgICAgICAg
cmVzdWx0LT56ZXJvRmlsbCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gY29weVJlY3RGcm9tU291cmNlVG9EZXN0KHNjYWxlZFJlY3QsIGJhY2tpbmdTdG9yZVNp
emUsIGRhdGEuZGF0YSgpLCByZWN0LnNpemUoKSwgcmVzdWx0LT5kYXRhKCksIEludFBvaW50KCkp
OwotfQotCi1ib29sIEltYWdlQnVmZmVyRGF0YTo6ZW5zdXJlQmFja2luZ1N0b3JlKGNvbnN0IElu
dFNpemUmIHNpemUpIGNvbnN0Ci17Ci0gICAgaWYgKHNpemUgPT0gYmFja2luZ1N0b3JlU2l6ZSAm
JiAhZGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgYXV0byBudW1C
eXRlcyA9IHNpemUuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7Ci0gICAgaWYgKG51bUJ5dGVz
Lmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYmFja2luZ1N0
b3JlU2l6ZSA9IHNpemU7Ci0gICAgZGF0YS5yZXNpemVUb0ZpdChudW1CeXRlcy51bnNhZmVHZXQo
KSk7Ci0gICAgcmV0dXJuIGRhdGEuY2FwYWNpdHkoKSA9PSBudW1CeXRlcy51bnNhZmVHZXQoKTsK
LX0KLQotLy8gU3dpenpsZSB0aGUgcmVkIGFuZCBibHVlIGJ5dGVzIG9mIHRoZSBwaXhlbHMgaW4g
YSBidWZmZXIKLXRlbXBsYXRlIDxBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNvdXJjZUZvcm1hdD4K
LXZvaWQgaW5QbGFjZVN3aXp6bGUodWludDhfdCogYnl0ZURhdGEsIHVuc2lnbmVkIGJ5dGVDb3Vu
dCkKLXsKLSAgICBzaXplX3QgcGl4ZWxDb3VudCA9IGJ5dGVDb3VudCAvIDQ7Ci0gICAgYXV0byog
cGl4ZWxEYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGJ5dGVEYXRhKTsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGl4ZWxDb3VudDsgKytpKSB7Ci0gICAgICAgIHVpbnQz
Ml90IHBpeGVsID0gKnBpeGVsRGF0YTsKLSAgICAgICAgc2l6ZV90IGJ5dGVQb3NpdGlvbiA9IGkg
KiA0OwotCi0gICAgICAgIHVpbnQzMl90IGFscGhhID0gKHBpeGVsICYgMHhGRjAwMDAwMCkgPj4g
MjQ7Ci0gICAgICAgIHVpbnQzMl90IHJlZCA9IChwaXhlbCAmIDB4MDBGRjAwMDApID4+IDE2Owot
ICAgICAgICB1aW50MzJfdCBncmVlbiA9IChwaXhlbCAmIDB4MDAwMEZGMDApID4+IDg7Ci0gICAg
ICAgIHVpbnQzMl90IGJsdWUgPSAocGl4ZWwgJiAweDAwMDAwMEZGKTsKLQotICAgICAgICAvLyAo
UClSR0JBIC0+IFBCR1JBCi0gICAgICAgIGlmIChzb3VyY2VGb3JtYXQgPT0gQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKSB7Ci0gICAgICAgICAgICBpZiAoYWxwaGEgIT0g
MjU1KSB7Ci0gICAgICAgICAgICAgICAgcmVkID0gKHJlZCAqIGFscGhhICsgMjU0KSAvIDI1NTsK
LSAgICAgICAgICAgICAgICBncmVlbiA9IChncmVlbiAqIGFscGhhICsgMjU0KSAvIDI1NTsKLSAg
ICAgICAgICAgICAgICBibHVlID0gKGJsdWUgKiBhbHBoYSArIDI1NCkgLyAyNTU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAqcGl4ZWxEYXRhID0gKGFscGhhIDw8IDI0KSB8
IHJlZCAgPDwgMTYgfCBncmVlbiAgPDwgOCB8IGJsdWU7Ci0gICAgICAgICsrcGl4ZWxEYXRhOwot
ICAgIH0KLX0KLQotLy8gTm90ZTogQXNzdW1lcyB0aGF0IGJ5dGVzIGFyZSBhbHJlYWR5IGluIFJH
QkEgZm9ybWF0Ci10ZW1wbGF0ZSA8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXNpcmVkRm9ybWF0
Pgotdm9pZCBpblBsYWNlQ2hhbmdlUHJlbXVsdGlwbGljYXRpb24odWludDhfdCogYnl0ZURhdGEs
IHVuc2lnbmVkIGJ5dGVDb3VudCkKLXsKLSAgICBzaXplX3QgcGl4ZWxDb3VudCA9IGJ5dGVDb3Vu
dCAvIDQ7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBpeGVsQ291bnQ7ICsraSkgewot
ICAgICAgICB1bnNpZ25lZCB4ID0gcGl4ZWxDb3VudCAqIDQ7Ci0KLSAgICAgICAgdW5zaWduZWQg
cmVkID0gYnl0ZURhdGFbeF07Ci0gICAgICAgIHVuc2lnbmVkIGdyZWVuID0gYnl0ZURhdGFbeCAr
IDFdOwotICAgICAgICB1bnNpZ25lZCBibHVlID0gYnl0ZURhdGFbeCArIDJdOwotICAgICAgICB1
bnNpZ25lZCBhbHBoYSA9IGJ5dGVEYXRhW3ggKyAzXTsKLQotICAgICAgICBpZiAoZGVzaXJlZEZv
cm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSB7Ci0gICAgICAg
ICAgICBpZiAoYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAgICAgICAgICAgcmVkID0gKHJlZCAqIGFs
cGhhICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICBncmVlbiA9IChncmVlbiAqIGFscGhh
ICsgMjU0KSAvIDI1NTsKLSAgICAgICAgICAgICAgICBibHVlID0gKGJsdWUgKiBhbHBoYSArIDI1
NCkgLyAyNTU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBp
ZiAoYWxwaGEgJiYgYWxwaGEgIT0gMjU1KSB7Ci0gICAgICAgICAgICAgICAgcmVkID0gcmVkICog
MjU1IC8gYWxwaGE7Ci0gICAgICAgICAgICAgICAgZ3JlZW4gPSBncmVlbiAqIDI1NSAvIGFscGhh
OwotICAgICAgICAgICAgICAgIGJsdWUgPSBibHVlICogMjU1IC8gYWxwaGE7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICB1aW50MzJfdCogcGl4ZWwgPSByZWludGVycHJldF9j
YXN0PHVpbnQzMl90Kj4oYnl0ZURhdGEpICsgaTsKLSAgICAgICAgKnBpeGVsID0gKGFscGhhIDw8
IDI0KSB8IHJlZCAgPDwgMTYgfCBncmVlbiAgPDwgOCB8IGJsdWU7Ci0gICAgfQotfQotCi1SZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyRGF0YTo6Z2V0RGF0YShBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGRlc2lyZWRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IElu
dFNpemUmIHNpemUsIGJvb2wgLyogYWNjZWxlcmF0ZVJlbmRlcmluZyAqLywgZmxvYXQgLyogcmVz
b2x1dGlvblNjYWxlICovKSBjb25zdAotewotICAgIGF1dG8gbnVtQnl0ZXMgPSByZWN0LmFyZWE8
UmVjb3JkT3ZlcmZsb3c+KCkgKiA0OwotICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byByZXN1bHQgPSBVaW50OENsYW1w
ZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChudW1CeXRlcy51bnNhZmVHZXQoKSk7Ci0g
ICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKCFiaXRt
YXApCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICBpZiAoIXJlYWREYXRhRnJvbUJpdG1h
cElmTmVlZGVkKGRlc2lyZWRGb3JtYXQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGF1dG8gcmF3Qml0bWFwU2l6ZSA9IGJpdG1hcC0+R2V0U2l6ZSgpOwotICAgIEludFNpemUgYml0
bWFwU2l6ZShjbGFtcFRvPGludD4ocmF3Qml0bWFwU2l6ZS53aWR0aCksIGNsYW1wVG88aW50Pihy
YXdCaXRtYXBTaXplLmhlaWdodCkpOwotCi0gICAgaWYgKHJlY3QubG9jYXRpb24oKSA9PSBJbnRQ
b2ludCgpICYmIHJlY3Quc2l6ZSgpID09IGJpdG1hcFNpemUpIHsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQobnVtQnl0ZXMudW5zYWZlR2V0KCkgPT0gZGF0YS5zaXplKCkpOwotICAgICAgICByZXN1
bHQtPnNldFJhbmdlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgLy8gT25seSB3YW50IHBhcnQgb2YgdGhlIGJpdG1hcC4KLSAgICAgICAgaWYgKCFj
b3B5UmVjdEZyb21EYXRhKHJlY3QsIHJlc3VsdCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0KLSAgICBpZiAoYnl0ZUZvcm1hdCAhPSBkZXNpcmVkRm9ybWF0KSB7Ci0gICAg
ICAgIC8vIEluLW1lbW9yeSBkYXRhIGRvZXMgbm90IG1hdGNoIGRlc2lyZWQgZm9ybWF0LiBOZWVk
IHRvIHN3aXp6bGUgdGhlIHJlc3VsdHMuCi0gICAgICAgIGlmIChkZXNpcmVkRm9ybWF0ID09IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCkKLSAgICAgICAgICAgIGluUGxh
Y2VDaGFuZ2VQcmVtdWx0aXBsaWNhdGlvbjxBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQ+KHJlc3VsdC0+ZGF0YSgpLCByZXN1bHQtPmxlbmd0aCgpKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgaW5QbGFjZUNoYW5nZVByZW11bHRpcGxpY2F0aW9uPEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ+KHJlc3VsdC0+ZGF0YSgpLCByZXN1bHQtPmxlbmd0
aCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIEltYWdlQnVmZmVy
RGF0YTo6cmVhZERhdGFGcm9tQml0bWFwSWZOZWVkZWQoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBk
ZXNpcmVkRm9ybWF0KSBjb25zdAotewotICAgIGlmIChiaXRtYXBCdWZmZXJTeW5jICE9IEJpdG1h
cEJ1ZmZlclN5bmM6OkJ1ZmZlck91dE9mU3luYykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBJbnRTaXplIHBpeGVsU2l6ZSA9IGJpdG1hcC0+R2V0UGl4ZWxTaXplKCk7Ci0KLSAgICBhdXRv
IG51bUJ5dGVzID0gcGl4ZWxTaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiA0OwotICAgIGlm
IChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGNvbnRleHQtPmVuZERyYXcoKTsKLQotICAgIENPTVB0cjxJRDJEMURldmljZUNvbnRleHQ+IGQy
ZERldmljZUNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQtPmRldmljZUNvbnRleHQoKTsKLSAgICBB
U1NFUlQoISFkMmREZXZpY2VDb250ZXh0KTsKLQotICAgIGF1dG8gYnl0ZXNQZXJSb3dJbkRhdGEg
PSBwaXhlbFNpemUud2lkdGgoKSAqIDQ7Ci0KLSAgICAvLyBDb3B5IEdQVSBkYXRhIGZyb20gdGhl
IElEMkQxQml0bWFwIHRvIGEgQ1BVLWJhY2tlZCBJRDJEMUJpdG1hcDEKLSAgICBDT01QdHI8SUQy
RDFCaXRtYXAxPiBjcHVCaXRtYXA7Ci0gICAgRDJEMV9CSVRNQVBfUFJPUEVSVElFUzEgYml0bWFw
UHJvcGVydGllczIgPSBEMkQxOjpCaXRtYXBQcm9wZXJ0aWVzMShEMkQxX0JJVE1BUF9PUFRJT05T
X0NQVV9SRUFEIHwgRDJEMV9CSVRNQVBfT1BUSU9OU19DQU5OT1RfRFJBVywgRGlyZWN0MkQ6OnBp
eGVsRm9ybWF0KCkpOwotICAgIEhSRVNVTFQgaHIgPSBkMmREZXZpY2VDb250ZXh0LT5DcmVhdGVC
aXRtYXAocGl4ZWxTaXplLCBudWxscHRyLCBieXRlc1BlclJvd0luRGF0YSwgYml0bWFwUHJvcGVy
dGllczIsICZjcHVCaXRtYXApOwotICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgYXV0byB0YXJnZXRQb3MgPSBEMkQxOjpQb2ludDJVKCk7Ci0gICAg
RDJEMV9SRUNUX1UgZGF0YVJlY3QgPSBEMkQxOjpSZWN0VSgwLCAwLCBwaXhlbFNpemUud2lkdGgo
KSwgcGl4ZWxTaXplLmhlaWdodCgpKTsKLSAgICBociA9IGNwdUJpdG1hcC0+Q29weUZyb21CaXRt
YXAoJnRhcmdldFBvcywgYml0bWFwLmdldCgpLCAmZGF0YVJlY3QpOwotICAgIGlmICghU1VDQ0VF
REVEKGhyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRDJEMV9NQVBQRURfUkVDVCBt
YXBwZWREYXRhOwotICAgIGhyID0gY3B1Qml0bWFwLT5NYXAoRDJEMV9NQVBfT1BUSU9OU19SRUFE
LCAmbWFwcGVkRGF0YSk7Ci0gICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIW1hcHBlZERhdGEuYml0cykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKCFlbnN1cmVCYWNraW5nU3RvcmUocGl4ZWxTaXplKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gU29mdHdhcmUgZmlsdGVycyBleHBlY3QgUkdCQSBieXRlcy4g
V2UgbmVlZCB0byBzd2l6emxlIGZyb20gRGlyZWN0MkQncyBCR1JBIHRvIGJlIGNvbXBhdGlibGUu
Ci0gICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCkKLSAgICAgICAgc3dpenpsZUFuZFByZW11bHRpcGx5PEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlByZW11bHRpcGxpZWQ+KG1hcHBlZERhdGEuYml0cywgcGl4ZWxTaXplLmhlaWdodCgp
LCBwaXhlbFNpemUud2lkdGgoKSwgbWFwcGVkRGF0YS5waXRjaCwgYnl0ZXNQZXJSb3dJbkRhdGEs
IGRhdGEuZGF0YSgpKTsKLSAgICBlbHNlCi0gICAgICAgIHN3aXp6bGVBbmRQcmVtdWx0aXBseTxB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ+KG1hcHBlZERhdGEuYml0cywg
cGl4ZWxTaXplLmhlaWdodCgpLCBwaXhlbFNpemUud2lkdGgoKSwgbWFwcGVkRGF0YS5waXRjaCwg
Ynl0ZXNQZXJSb3dJbkRhdGEsIGRhdGEuZGF0YSgpKTsKLQotICAgIGJ5dGVGb3JtYXQgPSBkZXNp
cmVkRm9ybWF0OwotCi0gICAgYml0bWFwQnVmZmVyU3luYyA9IEJpdG1hcEJ1ZmZlclN5bmM6Oklu
U3luYzsKLQotICAgIGhyID0gY3B1Qml0bWFwLT5Vbm1hcCgpOwotICAgIEFTU0VSVChTVUNDRUVE
RUQoaHIpKTsKLQotICAgIGNvbnRleHQtPmJlZ2luRHJhdygpOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFy
cmF5JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc291cmNlRm9ybWF0LCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIC8qIGFjY2VsZXJhdGVS
ZW5kZXJpbmcgKi8sIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKLXsKLSAgICBBU1NFUlQoc291cmNl
UmVjdC53aWR0aCgpID4gMCk7Ci0gICAgQVNTRVJUKHNvdXJjZVJlY3QuaGVpZ2h0KCkgPiAwKTsK
LQotICAgIENoZWNrZWQ8aW50PiBvcmlnaW54ID0gc291cmNlUmVjdC54KCk7Ci0gICAgQ2hlY2tl
ZDxpbnQ+IGRlc3R4ID0gKENoZWNrZWQ8aW50PihkZXN0UG9pbnQueCgpKSArIHNvdXJjZVJlY3Qu
eCgpKTsKLSAgICBkZXN0eCAqPSByZXNvbHV0aW9uU2NhbGU7Ci0gICAgQVNTRVJUKGRlc3R4LnVu
c2FmZUdldCgpID49IDApOwotICAgIEFTU0VSVChkZXN0eC51bnNhZmVHZXQoKSA8IHNpemUud2lk
dGgoKSk7Ci0gICAgQVNTRVJUKG9yaWdpbngudW5zYWZlR2V0KCkgPj0gMCk7Ci0gICAgQVNTRVJU
KG9yaWdpbngudW5zYWZlR2V0KCkgPD0gc291cmNlUmVjdC5tYXhYKCkpOwotCi0gICAgQ2hlY2tl
ZDxpbnQ+IGVuZHggPSAoQ2hlY2tlZDxpbnQ+KGRlc3RQb2ludC54KCkpICsgc291cmNlUmVjdC5t
YXhYKCkpOwotICAgIGVuZHggKj0gcmVzb2x1dGlvblNjYWxlOwotICAgIEFTU0VSVChlbmR4LnVu
c2FmZUdldCgpIDw9IHNpemUud2lkdGgoKSk7Ci0KLSAgICBDaGVja2VkPGludD4gd2lkdGggPSBz
b3VyY2VSZWN0LndpZHRoKCk7Ci0gICAgQ2hlY2tlZDxpbnQ+IGRlc3R3ID0gZW5keCAtIGRlc3R4
OwotCi0gICAgQ2hlY2tlZDxpbnQ+IG9yaWdpbnkgPSBzb3VyY2VSZWN0LnkoKTsKLSAgICBDaGVj
a2VkPGludD4gZGVzdHkgPSAoQ2hlY2tlZDxpbnQ+KGRlc3RQb2ludC55KCkpICsgc291cmNlUmVj
dC55KCkpOwotICAgIGRlc3R5ICo9IHJlc29sdXRpb25TY2FsZTsKLSAgICBBU1NFUlQoZGVzdHku
dW5zYWZlR2V0KCkgPj0gMCk7Ci0gICAgQVNTRVJUKGRlc3R5LnVuc2FmZUdldCgpIDwgc2l6ZS5o
ZWlnaHQoKSk7Ci0gICAgQVNTRVJUKG9yaWdpbnkudW5zYWZlR2V0KCkgPj0gMCk7Ci0gICAgQVNT
RVJUKG9yaWdpbnkudW5zYWZlR2V0KCkgPD0gc291cmNlUmVjdC5tYXhZKCkpOwotCi0gICAgQ2hl
Y2tlZDxpbnQ+IGVuZHkgPSAoQ2hlY2tlZDxpbnQ+KGRlc3RQb2ludC55KCkpICsgc291cmNlUmVj
dC5tYXhZKCkpOwotICAgIGVuZHkgKj0gcmVzb2x1dGlvblNjYWxlOwotICAgIEFTU0VSVChlbmR5
LnVuc2FmZUdldCgpIDw9IHNpemUuaGVpZ2h0KCkpOwotCi0gICAgQ2hlY2tlZDxpbnQ+IGhlaWdo
dCA9IHNvdXJjZVJlY3QuaGVpZ2h0KCk7Ci0gICAgQ2hlY2tlZDxpbnQ+IGRlc3RoID0gZW5keSAt
IGRlc3R5OwotCi0gICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApCi0gICAgICAgIHJl
dHVybjsKLQotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgaWYgKGJpdG1hcCkgewotICAgICAgICBh
dXRvIHBpeGVsU2l6ZSA9IGJpdG1hcC0+R2V0UGl4ZWxTaXplKCk7Ci0gICAgICAgIEFTU0VSVChw
aXhlbFNpemUud2lkdGggPj0gc291cmNlU2l6ZS53aWR0aCgpKTsKLSAgICAgICAgQVNTRVJUKHBp
eGVsU2l6ZS53aWR0aCA+PSBzaXplLndpZHRoKCkpOwotICAgICAgICBBU1NFUlQocGl4ZWxTaXpl
LmhlaWdodCA+PSBzb3VyY2VTaXplLmhlaWdodCgpKTsKLSAgICAgICAgQVNTRVJUKHBpeGVsU2l6
ZS5oZWlnaHQgPj0gc2l6ZS5oZWlnaHQoKSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAoIWVu
c3VyZUJhY2tpbmdTdG9yZShzaXplKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHNvdXJj
ZVNpemUgPT0gc2l6ZSkgewotICAgICAgICBtZW1jcHkoZGF0YS5kYXRhKCksIHNvdXJjZS5kYXRh
KCksIHNvdXJjZS5sZW5ndGgoKSk7Ci0gICAgICAgIGJ5dGVGb3JtYXQgPSBzb3VyY2VGb3JtYXQ7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVhZERhdGFGcm9tQml0bWFwSWZOZWVkZWQoYnl0ZUZv
cm1hdCk7Ci0gICAgICAgIGlmICghY29weVJlY3RGcm9tU291cmNlVG9EYXRhKHNvdXJjZVJlY3Qs
IHNvdXJjZSwgc291cmNlRm9ybWF0KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBiaXRtYXBCdWZmZXJTeW5jID0gQml0bWFwQnVmZmVyU3luYzo6Qml0bWFwT3V0T2ZTeW5jOwot
fQotCi1ib29sIEltYWdlQnVmZmVyRGF0YTo6Y29weVJlY3RGcm9tU291cmNlVG9EYXRhKGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gc291cmNlRm9ybWF0KQotewotICAgIEludFNpemUgcGl4ZWxT
aXplID0gYml0bWFwLT5HZXRQaXhlbFNpemUoKTsKLQotICAgIEludFJlY3Qgc291cmNlUmVjdFRv
Q29weSA9IHNvdXJjZVJlY3Q7Ci0gICAgaWYgKCFJbnRSZWN0KEludFBvaW50KCksIHBpeGVsU2l6
ZSkuY29udGFpbnMoc291cmNlUmVjdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1
dG8gZGVzdEJ1ZmZlclBvc2l0aW9uID0gc291cmNlUmVjdC5sb2NhdGlvbigpOwotCi0gICAgaWYg
KHNvdXJjZUZvcm1hdCA9PSBieXRlRm9ybWF0KQotICAgICAgICByZXR1cm4gY29weVJlY3RGcm9t
U291cmNlVG9EZXN0KHNvdXJjZVJlY3QsIHNvdXJjZVJlY3Quc2l6ZSgpLCBzb3VyY2UuZGF0YSgp
LCBiYWNraW5nU3RvcmVTaXplLCBkYXRhLmRhdGEoKSwgZGVzdEJ1ZmZlclBvc2l0aW9uKTsKLQot
ICAgIGlmIChieXRlRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCkKLSAgICAgICAgcmV0dXJuIGNvcHlSZWN0RnJvbVNvdXJjZVRvRGVzdEFuZFNldFByZW11
bHRpcGxpY2F0aW9uPEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZD4oc291
cmNlUmVjdCwgc291cmNlUmVjdC5zaXplKCksIHNvdXJjZS5kYXRhKCksIGJhY2tpbmdTdG9yZVNp
emUsIGRhdGEuZGF0YSgpLCBkZXN0QnVmZmVyUG9zaXRpb24pOwotCi0gICAgcmV0dXJuIGNvcHlS
ZWN0RnJvbVNvdXJjZVRvRGVzdEFuZFNldFByZW11bHRpcGxpY2F0aW9uPEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQ+KHNvdXJjZVJlY3QsIHNvdXJjZVJlY3Quc2l6ZSgpLCBz
b3VyY2UuZGF0YSgpLCBiYWNraW5nU3RvcmVTaXplLCBkYXRhLmRhdGEoKSwgZGVzdEJ1ZmZlclBv
c2l0aW9uKTsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OmxvYWREYXRhVG9CaXRtYXBJZk5l
ZWRlZCgpCi17Ci0gICAgaWYgKGJpdG1hcEJ1ZmZlclN5bmMgIT0gQml0bWFwQnVmZmVyU3luYzo6
Qml0bWFwT3V0T2ZTeW5jIHx8IGRhdGEuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBhdXRvIHBpeGVsU2l6ZSA9IGJpdG1hcC0+R2V0UGl4ZWxTaXplKCk7Ci0gICAgQVNTRVJUKHBp
eGVsU2l6ZS53aWR0aCA+PSBiYWNraW5nU3RvcmVTaXplLndpZHRoKCkpOwotICAgIEFTU0VSVChw
aXhlbFNpemUuaGVpZ2h0ID49IGJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOwotCi0gICAgQ2hl
Y2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzID0gcGl4ZWxTaXplLndpZHRo
ICogcGl4ZWxTaXplLmhlaWdodCAqIDQ7Ci0gICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gU29mdHdhcmUgZ2VuZXJhdGVkIGJpdG1hcCBk
YXRhIGlzIGluIFJHQkEuIFdlIG5lZWQgdG8gc3dpenpsZSB0byBwcmVtdWx0aXBsaWVkIEJHUkEg
dG8gYmUgY29tcGF0aWJsZQotICAgIC8vIHdpdGggdGhlIEhXTkQvSERDIHJlbmRlciBiYWNraW5n
IHdlIHVzZS4KLSAgICBpZiAoYnl0ZUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQpCi0gICAgICAgIGluUGxhY2VTd2l6emxlPEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZD4oZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsgLy8gUkdC
QSAtPiBQQkdSQQotICAgIGVsc2UKLSAgICAgICAgaW5QbGFjZVN3aXp6bGU8QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZD4oZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsgLy8g
UFJHQkEgLT4gUEJHUkEKLQotICAgIGF1dG8gYnl0ZXNQZXJSb3dJbkRhdGEgPSBiYWNraW5nU3Rv
cmVTaXplLndpZHRoKCkgKiA0OwotCi0gICAgSFJFU1VMVCBociA9IGJpdG1hcC0+Q29weUZyb21N
ZW1vcnkobnVsbHB0ciwgZGF0YS5kYXRhKCksIGJ5dGVzUGVyUm93SW5EYXRhKTsKLSAgICBBU1NF
UlQoU1VDQ0VFREVEKGhyKSk7Ci0KLSAgICBiaXRtYXBCdWZmZXJTeW5jID0gQml0bWFwQnVmZmVy
U3luYzo6SW5TeW5jOwotfQotCi1DT01QdHI8SUQyRDFCaXRtYXA+IEltYWdlQnVmZmVyRGF0YTo6
Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQotewotICAg
IGxvYWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOwotCi0gICAgaWYgKCFyZW5kZXJUYXJnZXQpCi0g
ICAgICAgIHJldHVybiBiaXRtYXA7Ci0KLSAgICBpZiAocGxhdGZvcm1Db250ZXh0LT5yZW5kZXJU
YXJnZXQoKSA9PSByZW5kZXJUYXJnZXQpIHsKLSAgICAgICAgQ09NUHRyPElEMkQxQml0bWFwUmVu
ZGVyVGFyZ2V0PiBiaXRtYXBUYXJnZXQoUXVlcnksIHJlbmRlclRhcmdldCk7Ci0gICAgICAgIGlm
IChiaXRtYXBUYXJnZXQpIHsKLSAgICAgICAgICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gYmFja2lu
Z0JpdG1hcDsKLSAgICAgICAgICAgIGlmIChTVUNDRUVERUQoYml0bWFwVGFyZ2V0LT5HZXRCaXRt
YXAoJmJhY2tpbmdCaXRtYXApKSkgewotICAgICAgICAgICAgICAgIGlmIChiYWNraW5nQml0bWFw
ICE9IGJpdG1hcCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJpdG1hcDsKLQotICAgICAg
ICAgICAgICAgIC8vIFdlIGNhbid0IGRyYXcgYW4gSUQyRDFCaXRtYXAgdG8gaXRzZWxmLiBNdXN0
IHJldHVybiBhIGNvcHkuCi0gICAgICAgICAgICAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBjb3Bp
ZWRCaXRtYXA7Ci0gICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChyZW5kZXJUYXJnZXQtPkNy
ZWF0ZUJpdG1hcChiaXRtYXAtPkdldFBpeGVsU2l6ZSgpLCBEaXJlY3QyRDo6Yml0bWFwUHJvcGVy
dGllcygpLCAmY29waWVkQml0bWFwKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NF
RURFRChjb3BpZWRCaXRtYXAtPkNvcHlGcm9tQml0bWFwKG51bGxwdHIsIGJpdG1hcC5nZXQoKSwg
bnVsbHB0cikpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZEJpdG1hcDsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBhdXRvIHNpemUgPSBiaXRtYXAtPkdldFBpeGVsU2l6ZSgpOwotICAgIEFTU0VSVChzaXplLmhl
aWdodCAmJiBzaXplLndpZHRoKTsKLQotICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJm
bG93PiBudW1CeXRlcyA9IHNpemUud2lkdGggKiBzaXplLmhlaWdodCAqIDQ7Ci0gICAgaWYgKG51
bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAv
LyBDb3B5IHRoZSBiaXRzIGZyb20gY3VycmVudCByZW5kZXJUYXJnZXQgdG8gdGhlIG91dHB1dCB0
YXJnZXQuCi0gICAgLy8gV2UgY2Fubm90IGFjY2VzcyB0aGUgZGF0YSBiYWNraW5nIGFuIElXSUNC
aXRtYXAgd2hpbGUgYW4gYWN0aXZlIGRyYXcgc2Vzc2lvbiBpcyBvcGVuLgotICAgIGNvbnRleHQt
PmVuZERyYXcoKTsKLQotICAgIENPTVB0cjxJRDJEMURldmljZUNvbnRleHQ+IHNvdXJjZURldmlj
ZUNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQtPmRldmljZUNvbnRleHQoKTsKLSAgICBpZiAoIXNv
dXJjZURldmljZUNvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQ09NUHRy
PElEMkQxQml0bWFwMT4gc291cmNlQ1BVQml0bWFwOwotICAgIEQyRDFfQklUTUFQX1BST1BFUlRJ
RVMxIGJpdG1hcFByb3BlcnRpZXMgPSBEMkQxOjpCaXRtYXBQcm9wZXJ0aWVzMShEMkQxX0JJVE1B
UF9PUFRJT05TX0NQVV9SRUFEIHwgRDJEMV9CSVRNQVBfT1BUSU9OU19DQU5OT1RfRFJBVywgRGly
ZWN0MkQ6OnBpeGVsRm9ybWF0KCkpOwotICAgIEhSRVNVTFQgaHIgPSBzb3VyY2VEZXZpY2VDb250
ZXh0LT5DcmVhdGVCaXRtYXAoYml0bWFwLT5HZXRQaXhlbFNpemUoKSwgbnVsbHB0ciwgYnl0ZXNQ
ZXJSb3cudW5zYWZlR2V0KCksIGJpdG1hcFByb3BlcnRpZXMsICZzb3VyY2VDUFVCaXRtYXApOwot
ICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBp
ZiAoIXNvdXJjZUNQVUJpdG1hcCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBociA9
IHNvdXJjZUNQVUJpdG1hcC0+Q29weUZyb21CaXRtYXAobnVsbHB0ciwgYml0bWFwLmdldCgpLCBu
dWxscHRyKTsKLSAgICBpZiAoIVNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgRDJEMV9NQVBQRURfUkVDVCBtYXBwZWRTb3VyY2VEYXRhOwotICAgIGhyID0gc291
cmNlQ1BVQml0bWFwLT5NYXAoRDJEMV9NQVBfT1BUSU9OU19SRUFELCAmbWFwcGVkU291cmNlRGF0
YSk7Ci0gICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIENPTVB0cjxJRDJEMURldmljZUNvbnRleHQ+IHRhcmdldERldmljZUNvbnRleHQ7Ci0gICAg
aHIgPSByZW5kZXJUYXJnZXQtPlF1ZXJ5SW50ZXJmYWNlKCZ0YXJnZXREZXZpY2VDb250ZXh0KTsK
LSAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7Ci0KLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGNv
bXBhdGlibGVCaXRtYXA7Ci0gICAgaHIgPSB0YXJnZXREZXZpY2VDb250ZXh0LT5DcmVhdGVCaXRt
YXAoYml0bWFwLT5HZXRQaXhlbFNpemUoKSwgbWFwcGVkU291cmNlRGF0YS5iaXRzLCBtYXBwZWRT
b3VyY2VEYXRhLnBpdGNoLCBEaXJlY3QyRDo6Yml0bWFwUHJvcGVydGllcygpLCAmY29tcGF0aWJs
ZUJpdG1hcCk7Ci0gICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIGhyID0gc291cmNlQ1BVQml0bWFwLT5Vbm1hcCgpOwotICAgIEFTU0VSVChTVUND
RUVERUQoaHIpKTsKLQotICAgIGNvbnRleHQtPmJlZ2luRHJhdygpOwotCi0gICAgcmV0dXJuIGNv
bXBhdGlibGVCaXRtYXA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEYXRhRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
Yzk0ZDhhNDgyMmYxMjVmNDA2ZjMwMDc3NDdmZjkzNThjMTU2YTMwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIkludFNp
emUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oIgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+Ci0jaW5jbHVkZSA8d3RmL0NoZWNrZWRB
cml0aG1ldGljLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLQotaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwotaW50ZXJmYWNlIElEMkQx
Qml0bWFwOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEOwotCi1zdHJ1Y3QgSW1hZ2VCdWZmZXJEYXRhIHsKLSAgICBtdXRhYmxlIEludFNpemUg
YmFja2luZ1N0b3JlU2l6ZTsKLSAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4g
Ynl0ZXNQZXJSb3c7Ci0KLSAgICAvLyBPbmx5IGZvciBzb2Z0d2FyZSBJbWFnZUJ1ZmZlcnMuCi0g
ICAgbXV0YWJsZSBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBtdXRhYmxlIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gYnl0ZUZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4g
cGxhdGZvcm1Db250ZXh0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNv
bnRleHQ7Ci0gICAgQ09NUHRyPElEMkQxQml0bWFwPiBiaXRtYXA7Ci0KLSAgICBlbnVtIGNsYXNz
IEJpdG1hcEJ1ZmZlclN5bmMgeyBJblN5bmMsIEJpdG1hcE91dE9mU3luYywgQnVmZmVyT3V0T2ZT
eW5jIH07Ci0gICAgbXV0YWJsZSBCaXRtYXBCdWZmZXJTeW5jIGJpdG1hcEJ1ZmZlclN5bmMgeyBC
aXRtYXBCdWZmZXJTeW5jOjpCdWZmZXJPdXRPZlN5bmMgfTsKLQotICAgIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gZ2V0RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0
JiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZywgZmxvYXQgcmVzb2x1
dGlvblNjYWxlKSBjb25zdDsKLSAgICB2b2lkIHB1dERhdGEoY29uc3QgVWludDhDbGFtcGVkQXJy
YXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VGb3JtYXQsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUmLCBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSk7Ci0KLSAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGNvbXBh
dGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqKTsKLQotICAgIGJvb2wgZW5zdXJlQmFja2lu
Z1N0b3JlKGNvbnN0IEludFNpemUmKSBjb25zdDsKLSAgICB2b2lkIGxvYWREYXRhVG9CaXRtYXBJ
Zk5lZWRlZCgpOwotICAgIGJvb2wgcmVhZERhdGFGcm9tQml0bWFwSWZOZWVkZWQoQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBkZXNpcmVkRm9ybWF0KSBjb25zdDsKLSAgICBib29sIGNvcHlSZWN0RnJv
bURhdGEoY29uc3QgSW50UmVjdCYsIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4mKSBjb25zdDsK
LSAgICBib29sIGNvcHlSZWN0RnJvbVNvdXJjZVRvRGF0YShjb25zdCBJbnRSZWN0JiwgY29uc3Qg
VWludDhDbGFtcGVkQXJyYXkmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKLSAgICB2b2lkIG1h
cmtCdWZmZXJPdXRPZlN5bmMoKSB7IGJpdG1hcEJ1ZmZlclN5bmMgPSBCaXRtYXBCdWZmZXJTeW5j
OjpCdWZmZXJPdXRPZlN5bmM7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA0MjE4ZjFl
ZjRmNTc4Y2UwN2Y5NGI3YThlY2JiODMwYTUyNjdmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNTEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0KLSNpZiBVU0UoRElS
RUNUMkQpCi0KLSNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgotI2luY2x1ZGUgIkNPTVB0ci5oIgot
I2luY2x1ZGUgIkRpcmVjdDJEVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCi0jaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5o
IgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQuaCIKLSNpbmNsdWRlIDxkMmQxXzEuaD4KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5j
bHVkZSA8d2luY29kZWMuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUg
PHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKLXsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gY29udGV4dC5yZW5kZXJp
bmdNb2RlKCk7Ci0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGli
bGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQpOwotICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKG5ldyBJbWFnZUJ1ZmZlcihz
Y2FsZWRTaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCByZW5kZXJpbmdNb2RlLCBudWxscHRyLCAm
Y29udGV4dCwgc3VjY2VzcykpOwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIC8vIFNldCB1cCBhIGNvcnJlc3BvbmRpbmcgc2NhbGUgZmFjdG9yIG9u
IHRoZSBncmFwaGljcyBjb250ZXh0LgotICAgIGJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKEZsb2F0
U2l6ZShzY2FsZWRTaXplLndpZHRoKCkgLyBzaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0
KCkgLyBzaXplLmhlaWdodCgpKSk7Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKLX0KLQotSW1hZ2VCdWZm
ZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIC8qY29sb3JTcGFjZSovLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGNvbnN0IEhvc3RXaW5kb3cqLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRl
eHQsIGJvb2wmIHN1Y2Nlc3MpCi0gICAgOiBtX2xvZ2ljYWxTaXplKHNpemUpCi0gICAgLCBtX3Jl
c29sdXRpb25TY2FsZShyZXNvbHV0aW9uU2NhbGUpCi17Ci0gICAgc3VjY2VzcyA9IGZhbHNlOyAv
LyBNYWtlIGVhcmx5IHJldHVybiBtZWFuIGZhaWx1cmUuCi0gICAgZmxvYXQgc2NhbGVkV2lkdGgg
PSBzdGQ6OmNlaWwocmVzb2x1dGlvblNjYWxlICogc2l6ZS53aWR0aCgpKTsKLSAgICBmbG9hdCBz
Y2FsZWRIZWlnaHQgPSBzdGQ6OmNlaWwocmVzb2x1dGlvblNjYWxlICogc2l6ZS5oZWlnaHQoKSk7
Ci0KLSAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGF1dG9tYXRpY2FsbHkgdXNlIGEgbG93ZXIgcmVz
b2x1dGlvbj8KLSAgICBpZiAoIUZsb2F0U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KS5p
c0V4cHJlc3NpYmxlQXNJbnRTaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc2l6ZSA9
IEludFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7Ci0gICAgbV9kYXRhLmJhY2tpbmdT
dG9yZVNpemUgPSBtX3NpemU7Ci0KLSAgICBib29sIGFjY2VsZXJhdGVSZW5kZXJpbmcgPSByZW5k
ZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwotICAgIGlmIChtX3NpemUu
d2lkdGgoKSA8PSAwIHx8IG1fc2l6ZS5oZWlnaHQoKSA8PSAwKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBQcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzCi0gICAgbV9kYXRhLmJ5dGVzUGVyUm93
ID0gNCAqIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihtX2RhdGEuYmFja2luZ1N0
b3JlU2l6ZS53aWR0aCgpKTsKLSAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51
bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5iYWNraW5n
U3RvcmVTaXplLmhlaWdodCgpKSAqIG1fZGF0YS5ieXRlc1BlclJvdzsKLSAgICBpZiAobnVtQnl0
ZXMuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBwbGF0Zm9y
bUNvbnRleHQgPSB0YXJnZXRDb250ZXh0ID8gdGFyZ2V0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCkgOiBudWxscHRyOwotICAgIGF1dG8qIHJlbmRlclRhcmdldCA9IHBsYXRmb3JtQ29udGV4dCA/
IHBsYXRmb3JtQ29udGV4dC0+cmVuZGVyVGFyZ2V0KCkgOiBudWxscHRyOwotCi0gICAgaWYgKCFy
ZW5kZXJUYXJnZXQpCi0gICAgICAgIHJlbmRlclRhcmdldCA9IEdyYXBoaWNzQ29udGV4dDo6ZGVm
YXVsdFJlbmRlclRhcmdldCgpOwotCi0gICAgYXV0byBiaXRtYXBDb250ZXh0ID0gRGlyZWN0MkQ6
OmNyZWF0ZUJpdG1hcFJlbmRlclRhcmdldE9mU2l6ZShtX2xvZ2ljYWxTaXplLCByZW5kZXJUYXJn
ZXQsIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBpZiAoIWJpdG1hcENvbnRleHQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEhSRVNVTFQgaHIgPSBiaXRtYXBDb250ZXh0LT5HZXRCaXRtYXAoJm1f
ZGF0YS5iaXRtYXApOwotICAgIGlmICghU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9kYXRhLnBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQ+KGJpdG1hcENvbnRleHQuZ2V0KCksIFt0aGlzXSgpIHsKLSAgICAgICAgbV9kYXRh
LmxvYWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOwotICAgIH0sIFt0aGlzXSgpIHsKLSAgICAgICAg
bV9kYXRhLm1hcmtCdWZmZXJPdXRPZlN5bmMoKTsKLSAgICB9KTsKLSAgICBtX2RhdGEuY29udGV4
dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEucGxhdGZvcm1Db250ZXh0Lmdl
dCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1v
cnkpOwotCi0gICAgc3VjY2VzcyA9IHRydWU7Ci19Ci0KLUltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBpbWFnZUNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9z
dFdpbmRvdyosIGJvb2wmIHN1Y2Nlc3MpCi0gICAgOiBJbWFnZUJ1ZmZlcihzaXplLCByZXNvbHV0
aW9uU2NhbGUsIGltYWdlQ29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgbnVsbHB0ciwgbnVsbHB0
ciwgc3VjY2VzcykKLXsKLX0KLQotSW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpID0gZGVmYXVs
dDsKLQotR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICptX2RhdGEuY29udGV4dDsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6Zmx1c2hD
b250ZXh0KCkgY29uc3QKLXsKLSAgICBjb250ZXh0KCkuZmx1c2goKTsKLX0KLQotc3RhdGljIENP
TVB0cjxJRDJEMUJpdG1hcD4gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRt
YXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJ
bnRTaXplJiBib3VuZHMpCi17Ci0gICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlID8gbmF0
aXZlSW1hZ2VTaXplKGltYWdlKSA6IEZsb2F0U2l6ZSgpOwotCi0gICAgaWYgKGltYWdlICYmIChz
dGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlU2l6ZS53aWR0aCgpKSAhPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGJvdW5kcy53aWR0aCgpKSB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGltYWdlU2l6ZS5oZWln
aHQoKSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihib3VuZHMuaGVpZ2h0KCkpKSkgewotICAgICAg
ICBDT01QdHI8SUQyRDFCaXRtYXA+IGNyb3BwZWRCaXRtYXAgPSBEaXJlY3QyRDo6Y3JlYXRlQml0
bWFwKGJpdG1hcFRhcmdldCwgYm91bmRzKTsKLSAgICAgICAgaWYgKGNyb3BwZWRCaXRtYXApIHsK
LSAgICAgICAgICAgIGF1dG8gc291cmNlUmVjdCA9IEQyRDE6OlJlY3RVKDAsIDAsIGJvdW5kcy53
aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCkpOwotICAgICAgICAgICAgSFJFU1VMVCBociA9IGNyb3Bw
ZWRCaXRtYXAtPkNvcHlGcm9tQml0bWFwKG51bGxwdHIsIGltYWdlLCAmc291cmNlUmVjdCk7Ci0g
ICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY3Jv
cHBlZEJpdG1hcDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBpbWFnZTsKLX0KLQot
c3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRl
ZChJRDJEMUJpdG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBDT01QdHI8SUQyRDFCaXRt
YXA+JiYgaW1hZ2UsIEludFNpemUgaW50ZXJuYWxTaXplLCBJbnRTaXplIGxvZ2ljYWxTaXplLCBJ
bnRTaXplIGJhY2tpbmdTdG9yZVNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVS
ZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKLXsKLSAgICBpZiAocmVzb2x1dGlvblNjYWxl
ID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQot
ICAgICAgICBpbWFnZSA9IGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGJpdG1hcFRhcmdl
dCwgaW1hZ2UuZ2V0KCksIGludGVybmFsU2l6ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGltcGxlbWVudCBzY2FsZWQgdmVyc2lvbgotICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIH0KLQotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSkpOwotfQot
Ci1SZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0
Ci17Ci0gICAgQ09NUHRyPElEMkQxQml0bWFwPiBpbWFnZTsKLSAgICBpZiAobV9yZXNvbHV0aW9u
U2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvcik7Ci0gICAg
ZWxzZQotICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSk7Ci0KLSAgICBhdXRvIGJpdG1hcFRhcmdldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQyRDFCaXRt
YXBSZW5kZXJUYXJnZXQqPihjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwotICAgIHJldHVy
biBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKGJpdG1hcFRhcmdldCwgV1RG
TW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCBsb2dpY2FsU2l6ZSgpLCBtX2RhdGEuYmFja2lu
Z1N0b3JlU2l6ZSwgbV9yZXNvbHV0aW9uU2NhbGUsIHByZXNlcnZlUmVzb2x1dGlvbik7Ci19Ci0K
LVJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVz
b2x1dGlvbikKLXsKLSAgICBJbnRTaXplIGludGVybmFsU2l6ZSA9IGltYWdlQnVmZmVyLT5pbnRl
cm5hbFNpemUoKTsKLSAgICBJbnRTaXplIGxvZ2ljYWxTaXplID0gaW1hZ2VCdWZmZXItPmxvZ2lj
YWxTaXplKCk7Ci0gICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gaW1hZ2VCdWZmZXItPm1f
ZGF0YS5iYWNraW5nU3RvcmVTaXplOwotICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IGltYWdl
QnVmZmVyLT5tX3Jlc29sdXRpb25TY2FsZTsKLQotICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRl
clRhcmdldD4gYml0bWFwVGFyZ2V0OwotICAgIEhSRVNVTFQgaHIgPSBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2Uo
JmJpdG1hcFRhcmdldCk7Ci0gICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVl
ZGVkKGJpdG1hcFRhcmdldC5nZXQoKSwgc2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdl
QnVmZmVyKSksIGludGVybmFsU2l6ZSwgbG9naWNhbFNpemUsIGJhY2tpbmdTdG9yZVNpemUsIHJl
c29sdXRpb25TY2FsZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKLX0KLQotQ09NUHRyPElEMkQxQml0
bWFwPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyKQotewotICAgIC8vIEZJWE1FOiBTZWUgaWYgd2UgY2FuIHJl
dXNlIHRoZSBvbi1oYXJkd2FyZSBpbWFnZS4KLSAgICByZXR1cm4gaW1hZ2VCdWZmZXItPmNvcHlO
YXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci19Ci0KLUNPTVB0cjxJRDJEMUJpdG1h
cD4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvcikgY29uc3QKLXsKLSAgICBDT01QdHI8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQ+IGJpdG1h
cFRhcmdldDsKLSAgICBIUkVTVUxUIGhyID0gY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5y
ZW5kZXJUYXJnZXQoKS0+UXVlcnlJbnRlcmZhY2UoJmJpdG1hcFRhcmdldCk7Ci0gICAgaWYgKCFT
VUNDRUVERUQoaHIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENPTVB0cjxJRDJE
MUJpdG1hcD4gaW1hZ2U7Ci0gICAgaHIgPSBiaXRtYXBUYXJnZXQtPkdldEJpdG1hcCgmaW1hZ2Up
OwotICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKLQotICAgIC8vIEZJWE1FOiBtX2RhdGEuZGF0
YSBpcyBudWxscHRyIGV2ZW4gd2hlbiBhc2tpbmcgdG8gY29weSBiYWNraW5nIHN0b3JlIGxlYWRp
bmcgdG8gdGVzdCBmYWlsdXJlcy4KLSAgICBpZiAoY29weUJlaGF2aW9yID09IENvcHlCYWNraW5n
U3RvcmUgJiYgbV9kYXRhLmRhdGEuaXNFbXB0eSgpKQotICAgICAgICBjb3B5QmVoYXZpb3IgPSBE
b250Q29weUJhY2tpbmdTdG9yZTsKLQotICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxv
dz4gbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4obV9kYXRhLmJh
Y2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpICogbV9kYXRhLmJ5dGVzUGVyUm93OwotICAgIGlmIChu
dW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
aWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBzd2l0Y2gg
KGNvcHlCZWhhdmlvcikgewotICAgICAgICBjYXNlIERvbnRDb3B5QmFja2luZ1N0b3JlOgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZToKLSAgICAgICAg
ICAgIEQyRDFfUkVDVF9VIGJhY2tpbmdTdG9yZURpbWVuc3Rpb25zID0gSW50UmVjdChJbnRQb2lu
dCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSk7Ci0gICAgICAgICAgICBpbWFnZS0+Q29weUZy
b21NZW1vcnkoJmJhY2tpbmdTdG9yZURpbWVuc3Rpb25zLCBtX2RhdGEuZGF0YS5kYXRhKCksIDMy
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgIGVsc2UKLSAgICAg
ICAgaW1hZ2UgPSBtX2RhdGEuc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKLSNlbmRpZgotCi0gICAg
cmV0dXJuIGltYWdlOwotfQotCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgaW1hZ2VC
dWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKLX0K
LQotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIEZsb2F0UmVjdCBhZGp1c3Rl
ZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRp
b25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpOwotCi0gICAgYXV0byBjb21wYXRpYmxlQml0bWFw
ID0gbV9kYXRhLmNvbXBhdGlibGVCaXRtYXAoZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCkt
PnJlbmRlclRhcmdldCgpKTsKLQotICAgIEZsb2F0U2l6ZSBjdXJyZW50SW1hZ2VTaXplID0gbmF0
aXZlSW1hZ2VTaXplKGNvbXBhdGlibGVCaXRtYXApOwotICAgIGlmIChjdXJyZW50SW1hZ2VTaXpl
LmlzWmVybygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UoY29tcGF0aWJsZUJpdG1hcCwgY3VycmVudEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVz
dGVkU3JjUmVjdCwgb3B0aW9ucyk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBGbG9hdFJl
Y3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKLSAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKLQotICAgIGlmICghY29udGV4
dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKLSAgICAgICAgaWYgKCZkZXN0Q29udGV4dCA9
PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKLSAg
ICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJhY2tpbmdT
dG9yZSkpIC8vIERyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHku
Ci0gICAgICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0
LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRp
b25zKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGlt
YWdlRm9yUmVuZGVyaW5nID0gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAg
ICAgICAgICAgICBpbWFnZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRl
c3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcHRpb25zKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChSZWZQdHI8
SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICBj
b3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwotICAgIH0KLX0KLQot
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIEludFNpemUqIHBpeGVsQXJyYXlEaW1lbnNpb25z
LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0Ci17Ci0gICAgaWYgKGNv
bnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQotICAgICAgICBmbHVzaENvbnRleHQoKTsK
LQotICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7Ci0gICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0g
PT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCi0gICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNv
bHV0aW9uU2NhbGUpOwotCi0gICAgaWYgKHBpeGVsQXJyYXlEaW1lbnNpb25zKQotICAgICAgICAq
cGl4ZWxBcnJheURpbWVuc2lvbnMgPSBzcmNSZWN0LnNpemUoKTsKLQotICAgIHJldHVybiBtX2Rh
dGEuZ2V0RGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIHNyY1Jl
Y3QsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSwgMSk7
Ci19Ci0KLVJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRp
cGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgSW50U2l6ZSogcGl4ZWxBcnJheURp
bWVuc2lvbnMsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKLXsKLSAg
ICBpZiAoY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCi0gICAgICAgIGZsdXNoQ29u
dGV4dCgpOwotCi0gICAgSW50UmVjdCBzcmNSZWN0ID0gcmVjdDsKLSAgICBpZiAoY29vcmRpbmF0
ZVN5c3RlbSA9PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkKLSAgICAgICAgc3JjUmVjdC5zY2Fs
ZShtX3Jlc29sdXRpb25TY2FsZSk7Ci0KLSAgICBpZiAocGl4ZWxBcnJheURpbWVuc2lvbnMpCi0g
ICAgICAgICpwaXhlbEFycmF5RGltZW5zaW9ucyA9IHNyY1JlY3Quc2l6ZSgpOwotCi0gICAgcmV0
dXJuIG1fZGF0YS5nZXREYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQs
IHNyY1JlY3QsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQo
KSwgMSk7Ci19Ci0KLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShjb25zdCBVaW50OENs
YW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGJ1ZmZlckZvcm1hdCwg
Y29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVt
KQotewotICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKLSAgICAgICAg
Zmx1c2hDb250ZXh0KCk7Ci0KLSAgICBJbnRSZWN0IHNjYWxlZFNvdXJjZVJlY3QgPSBzb3VyY2VS
ZWN0OwotICAgIEludFNpemUgc2NhbGVkU291cmNlU2l6ZSA9IHNvdXJjZVNpemU7Ci0gICAgaWYg
KGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIHsKLSAgICAgICAg
c2NhbGVkU291cmNlUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgICAgIHNjYWxl
ZFNvdXJjZVNpemUuc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIH0KLQotICAgIG1fZGF0
YS5wdXREYXRhKHNvdXJjZSwgYnVmZmVyRm9ybWF0LCBzY2FsZWRTb3VyY2VTaXplLCBzY2FsZWRT
b3VyY2VSZWN0LCBkZXN0UG9pbnQsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCkuaXNBY2NlbGVy
YXRlZENvbnRleHQoKSwgMSk7Ci19Ci0KLVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNv
bnN0IFN0cmluZyYsIE9wdGlvbmFsPGRvdWJsZT4sIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiZGF0YTosIl9zOwotfQotCi1W
ZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXI6OnRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4geyB9OwotfQotCi1TdHJpbmcgSW1hZ2VEYXRhVG9EYXRhVVJMKGNvbnN0
IEltYWdlRGF0YSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUq
IHF1YWxpdHkpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gImRhdGE6LCJf
czsKLX0KLQotdm9pZCBJbWFnZUJ1ZmZlcjo6dHJhbnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNl
LCBDb2xvclNwYWNlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNzBhYmVkZjBhNjM1MGZkNTU5NDhkNDgxYWI3ODk1ZjYyMGI0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcApAQCAtMCwwICsxLDMyNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaCIKKworI2lmIFVTRShESVJF
Q1QyRCkKKworI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiQ09NUHRyLmgiCisj
aW5jbHVkZSAiRGlyZWN0MkRVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXJEaXJlY3Qy
RC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRC5oIgorI2luY2x1ZGUgPGQyZDFfMS5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNs
dWRlIDx3aW5jb2RlYy5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQpOworCitzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IEltYWdlQnVmZmVyRGlyZWN0
MkRCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRv
dykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6
ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHBsYXRmb3JtQ29udGV4dCA9IHRhcmdl
dENvbnRleHQgPyB0YXJnZXRDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSA6IG51bGxwdHI7Cisg
ICAgYXV0byogcmVuZGVyVGFyZ2V0ID0gcGxhdGZvcm1Db250ZXh0ID8gcGxhdGZvcm1Db250ZXh0
LT5yZW5kZXJUYXJnZXQoKSA6IG51bGxwdHI7CisKKyAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAg
ICAgICAgcmVuZGVyVGFyZ2V0ID0gR3JhcGhpY3NDb250ZXh0OjpkZWZhdWx0UmVuZGVyVGFyZ2V0
KCk7CisKKyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBEaXJlY3QyRDo6Y3JlYXRlQml0bWFwUmVu
ZGVyVGFyZ2V0T2ZTaXplKHNpemUsIHJlbmRlclRhcmdldCwgcmVzb2x1dGlvblNjYWxlKTsKKyAg
ICBpZiAoIWJpdG1hcENvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIE5hdGl2ZUltYWdl
UHRyIGJpdG1hcDsKKyAgICBIUkVTVUxUIGhyID0gYml0bWFwQ29udGV4dC0+R2V0Qml0bWFwKCZi
aXRtYXApOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBwbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
PihiaXRtYXBDb250ZXh0LmdldCgpLCBbdGhpc10oKSB7CisgICAgICAgIG1fZGF0YS5sb2FkRGF0
YVRvQml0bWFwSWZOZWVkZWQoKTsKKyAgICB9LCBbdGhpc10oKSB7CisgICAgICAgIG1fZGF0YS5t
YXJrQnVmZmVyT3V0T2ZTeW5jKCk7CisgICAgfSk7CisKKyAgICBpZiAoIXBsYXRmb3JtQ29udGV4
dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRleHQgPSBtYWtlVW5p
cXVlPEdyYXBoaWNzQ29udGV4dD4ocGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRl
eHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOworICAgIGlmICghY29u
dGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RG
TW92ZShwbGF0Zm9ybUNvbnRleHQpLCBXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3ZlKGJpdG1hcCkp
KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIG51bGxwdHIp
OworfQorCitJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYgcGxhdGZvcm1Db250ZXh0LCBz
dGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQsIE5hdGl2ZUltYWdlUHRy
JiYgYml0bWFwKQorICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tlbmQobG9naWNhbFNpemUsIGJhY2tl
bmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCisgICAgLCBtX3BsYXRmb3JtQ29u
dGV4dChXVEZNb3ZlKHBsYXRmb3JtQ29udGV4dCkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShj
b250ZXh0KSkKKyAgICAsIG1fYml0bWFwKFdURk1vdmUoYml0bWFwKSkKK3sKK30KKworR3JhcGhp
Y3NDb250ZXh0JiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICptX2NvbnRleHQ7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmZsdXNoQ29udGV4dCgpCit7CisgICAgY29udGV4dCgpLmZsdXNoKCk7Cit9CisKK05h
dGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0Cit7CisgICAgQ09NUHRyPElEMkQx
Qml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRtYXBUYXJnZXQ7CisgICAgSFJFU1VMVCBociA9IGNvbnRl
eHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+cmVuZGVyVGFyZ2V0KCktPlF1ZXJ5SW50ZXJmYWNlKCZi
aXRtYXBUYXJnZXQpOworICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGltYWdlOworICAgIGhyID0gYml0bWFw
VGFyZ2V0LT5HZXRCaXRtYXAoJmltYWdlKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisK
KyAgICAvLyBGSVhNRTogbV9kYXRhLmRhdGEgaXMgbnVsbHB0ciBldmVuIHdoZW4gYXNraW5nIHRv
IGNvcHkgYmFja2luZyBzdG9yZSBsZWFkaW5nIHRvIHRlc3QgZmFpbHVyZXMuCisgICAgaWYgKGNv
cHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlICYmIG1fZGF0YS5kYXRhLmlzRW1wdHkoKSkK
KyAgICAgICAgY29weUJlaGF2aW9yID0gRG9udENvcHlCYWNraW5nU3RvcmU7CisKKyAgICBDaGVj
a2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+KG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLmhlaWdodCgpKSAqIG1fZGF0
YS5ieXRlc1BlclJvdzsKKyAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdT
dG9yZSkgeworICAgICAgICBEMkQxX1JFQ1RfVSBiYWNraW5nU3RvcmVEaW1lbnN0aW9ucyA9IElu
dFJlY3QoSW50UG9pbnQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUpOworICAgICAgICBpbWFn
ZS0+Q29weUZyb21NZW1vcnkoJmJhY2tpbmdTdG9yZURpbWVuc3Rpb25zLCBtX2RhdGEuZGF0YS5k
YXRhKCksIDMyKTsKKworICAgIH0KKworICAgIHJldHVybiBpbWFnZTsKK30KKworc3RhdGljIE5h
dGl2ZUltYWdlUHRyIGNyZWF0ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KElEMkQxQml0bWFwUmVu
ZGVyVGFyZ2V0KiBiaXRtYXBUYXJnZXQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgSW50U2l6
ZSYgYm91bmRzKQoreworICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZSA/IG5hdGl2ZUlt
YWdlU2l6ZShpbWFnZSkgOiBGbG9hdFNpemUoKTsKKworICAgIGlmIChpbWFnZSAmJiAoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihpbWFnZVNpemUud2lkdGgoKSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihi
b3VuZHMud2lkdGgoKSkgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbWFnZVNpemUuaGVpZ2h0KCkp
ICE9IHN0YXRpY19jYXN0PHNpemVfdD4oYm91bmRzLmhlaWdodCgpKSkpIHsKKyAgICAgICAgQ09N
UHRyPElEMkQxQml0bWFwPiBjcm9wcGVkQml0bWFwID0gRGlyZWN0MkQ6OmNyZWF0ZUJpdG1hcChi
aXRtYXBUYXJnZXQsIGJvdW5kcyk7CisgICAgICAgIGlmIChjcm9wcGVkQml0bWFwKSB7CisgICAg
ICAgICAgICBhdXRvIHNvdXJjZVJlY3QgPSBEMkQxOjpSZWN0VSgwLCAwLCBib3VuZHMud2lkdGgo
KSwgYm91bmRzLmhlaWdodCgpKTsKKyAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBjcm9wcGVkQml0
bWFwLT5Db3B5RnJvbUJpdG1hcChudWxscHRyLCBpbWFnZSwgJnNvdXJjZVJlY3QpOworICAgICAg
ICAgICAgaWYgKFNVQ0NFRURFRChocikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNyb3BwZWRC
aXRtYXA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKK3N0YXRp
YyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoSUQy
RDFCaXRtYXBSZW5kZXJUYXJnZXQqIGJpdG1hcFRhcmdldCwgQ09NUHRyPElEMkQxQml0bWFwPiYm
IGltYWdlLCBJbnRTaXplIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBQcmVz
ZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKQoreworICAgIGlmIChyZXNvbHV0aW9u
U2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpCisgICAgICAgIGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoYml0bWFw
VGFyZ2V0LCBpbWFnZS5nZXQoKSwgaW50ZXJuYWxTaXplKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gaW1wbGVtZW50IHNjYWxlZCB2ZXJzaW9uCisgICAgICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgfQorCisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7
Cit9CisKK1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNl
cnZlUmVzb2x1dGlvbikgY29uc3QKK3sKKyAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBp
ZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2Vy
dmVSZXNvbHV0aW9uOjpZZXMpCisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKGNvcHlC
ZWhhdmlvcik7CisgICAgZWxzZQorICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSk7CisKKyAgICBhdXRvIGJpdG1hcFRhcmdldCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQqPihjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCkpOworICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKGJp
dG1hcFRhcmdldCwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCByZXNvbHV0aW9uU2Nh
bGUoKSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKK30KKworUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZDo6c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2Vy
dmVSZXNvbHV0aW9uKQoreworICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gYml0
bWFwVGFyZ2V0OworICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkt
PnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0bWFwVGFyZ2V0KTsKKyAgICBpZiAo
IVNVQ0NFRURFRChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTmF0aXZlSW1h
Z2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAg
IHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKGJpdG1hcFRhcmdl
dC5nZXQoKSwgV1RGTW92ZShpbWFnZSksIGludGVybmFsU2l6ZSgpLCByZXNvbHV0aW9uU2NhbGUo
KSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ6OmNvbXBhdGlibGVCaXRtYXAoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRl
clRhcmdldCkKK3sKKyAgICBsb2FkRGF0YVRvQml0bWFwSWZOZWVkZWQoKTsKKworICAgIGlmICgh
cmVuZGVyVGFyZ2V0KQorICAgICAgICByZXR1cm4gYml0bWFwOworCisgICAgaWYgKG1fcGxhdGZv
cm1Db250ZXh0LT5yZW5kZXJUYXJnZXQoKSA9PSByZW5kZXJUYXJnZXQpIHsKKyAgICAgICAgQ09N
UHRyPElEMkQxQml0bWFwUmVuZGVyVGFyZ2V0PiBiaXRtYXBUYXJnZXQoUXVlcnksIHJlbmRlclRh
cmdldCk7CisgICAgICAgIGlmIChiaXRtYXBUYXJnZXQpIHsKKyAgICAgICAgICAgIENPTVB0cjxJ
RDJEMUJpdG1hcD4gYmFja2luZ0JpdG1hcDsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoYml0
bWFwVGFyZ2V0LT5HZXRCaXRtYXAoJmJhY2tpbmdCaXRtYXApKSkgeworICAgICAgICAgICAgICAg
IGlmIChiYWNraW5nQml0bWFwICE9IG1fYml0bWFwKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYml0bWFwOworCisgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgZHJhdyBhbiBJRDJEMUJp
dG1hcCB0byBpdHNlbGYuIE11c3QgcmV0dXJuIGEgY29weS4KKyAgICAgICAgICAgICAgICBDT01Q
dHI8SUQyRDFCaXRtYXA+IGNvcGllZEJpdG1hcDsKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VF
REVEKHJlbmRlclRhcmdldC0+Q3JlYXRlQml0bWFwKGJpdG1hcC0+R2V0UGl4ZWxTaXplKCksIERp
cmVjdDJEOjpiaXRtYXBQcm9wZXJ0aWVzKCksICZjb3BpZWRCaXRtYXApKSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGNvcGllZEJpdG1hcC0+Q29weUZyb21CaXRtYXAobnVs
bHB0ciwgbV9iaXRtYXAuZ2V0KCksIG51bGxwdHIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjb3BpZWRCaXRtYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBzaXplID0gbV9iaXRtYXAtPkdldFBpeGVsU2l6
ZSgpOworICAgIEFTU0VSVChzaXplLmhlaWdodCAmJiBzaXplLndpZHRoKTsKKworICAgIENoZWNr
ZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBudW1CeXRlcyA9IHNpemUud2lkdGggKiBzaXpl
LmhlaWdodCAqIDQ7CisgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBDb3B5IHRoZSBiaXRzIGZyb20gY3VycmVudCByZW5k
ZXJUYXJnZXQgdG8gdGhlIG91dHB1dCB0YXJnZXQuCisgICAgLy8gV2UgY2Fubm90IGFjY2VzcyB0
aGUgZGF0YSBiYWNraW5nIGFuIElXSUNCaXRtYXAgd2hpbGUgYW4gYWN0aXZlIGRyYXcgc2Vzc2lv
biBpcyBvcGVuLgorICAgIGNvbnRleHQtPmVuZERyYXcoKTsKKworICAgIENPTVB0cjxJRDJEMURl
dmljZUNvbnRleHQ+IHNvdXJjZURldmljZUNvbnRleHQgPSBtX3BsYXRmb3JtQ29udGV4dC0+ZGV2
aWNlQ29udGV4dCgpOworICAgIGlmICghc291cmNlRGV2aWNlQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBDT01QdHI8SUQyRDFCaXRtYXAxPiBzb3VyY2VDUFVCaXRtYXA7
CisgICAgRDJEMV9CSVRNQVBfUFJPUEVSVElFUzEgYml0bWFwUHJvcGVydGllcyA9IEQyRDE6OkJp
dG1hcFByb3BlcnRpZXMxKEQyRDFfQklUTUFQX09QVElPTlNfQ1BVX1JFQUQgfCBEMkQxX0JJVE1B
UF9PUFRJT05TX0NBTk5PVF9EUkFXLCBEaXJlY3QyRDo6cGl4ZWxGb3JtYXQoKSk7CisgICAgSFJF
U1VMVCBociA9IHNvdXJjZURldmljZUNvbnRleHQtPkNyZWF0ZUJpdG1hcChtX2JpdG1hcC0+R2V0
UGl4ZWxTaXplKCksIG51bGxwdHIsIGJ5dGVzUGVyUm93LnVuc2FmZUdldCgpLCBiaXRtYXBQcm9w
ZXJ0aWVzLCAmc291cmNlQ1BVQml0bWFwKTsKKyAgICBpZiAoIVNVQ0NFRURFRChocikpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFzb3VyY2VDUFVCaXRtYXApCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgaHIgPSBzb3VyY2VDUFVCaXRtYXAtPkNvcHlGcm9tQml0
bWFwKG51bGxwdHIsIG1fYml0bWFwLmdldCgpLCBudWxscHRyKTsKKyAgICBpZiAoIVNVQ0NFRURF
RChocikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRDJEMV9NQVBQRURfUkVDVCBt
YXBwZWRTb3VyY2VEYXRhOworICAgIGhyID0gc291cmNlQ1BVQml0bWFwLT5NYXAoRDJEMV9NQVBf
T1BUSU9OU19SRUFELCAmbWFwcGVkU291cmNlRGF0YSk7CisgICAgaWYgKCFTVUNDRUVERUQoaHIp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENPTVB0cjxJRDJEMURldmljZUNvbnRl
eHQ+IHRhcmdldERldmljZUNvbnRleHQ7CisgICAgaHIgPSByZW5kZXJUYXJnZXQtPlF1ZXJ5SW50
ZXJmYWNlKCZ0YXJnZXREZXZpY2VDb250ZXh0KTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7
CisKKyAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGNvbXBhdGlibGVCaXRtYXA7CisgICAgaHIgPSB0
YXJnZXREZXZpY2VDb250ZXh0LT5DcmVhdGVCaXRtYXAoYml0bWFwLT5HZXRQaXhlbFNpemUoKSwg
bWFwcGVkU291cmNlRGF0YS5iaXRzLCBtYXBwZWRTb3VyY2VEYXRhLnBpdGNoLCBEaXJlY3QyRDo6
Yml0bWFwUHJvcGVydGllcygpLCAmY29tcGF0aWJsZUJpdG1hcCk7CisgICAgaWYgKCFTVUNDRUVE
RUQoaHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGhyID0gc291cmNlQ1BVQml0
bWFwLT5Vbm1hcCgpOworICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKKworICAgIGNvbnRleHQt
PmJlZ2luRHJhdygpOworCisgICAgcmV0dXJuIGNvbXBhdGlibGVCaXRtYXA7Cit9CisKK3ZvaWQg
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBGbG9hdFJlY3Qg
YWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKKyAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9y
ZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKKworICAgIGF1dG8gY29tcGF0aWJs
ZUJpdG1hcCA9IGNvbXBhdGlibGVCaXRtYXAoZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCkt
PnJlbmRlclRhcmdldCgpKTsKKworICAgIEZsb2F0U2l6ZSBjdXJyZW50SW1hZ2VTaXplID0gbmF0
aXZlSW1hZ2VTaXplKGNvbXBhdGlibGVCaXRtYXApOworICAgIGlmIChjdXJyZW50SW1hZ2VTaXpl
LmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UoY29tcGF0aWJsZUJpdG1hcCwgY3VycmVudEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVz
dGVkU3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3sKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKKyAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOworCisgICAgaWYgKGF1dG8gaW1hZ2Ug
PSBjb3B5SW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3Jl
IDogRG9udENvcHlCYWNraW5nU3RvcmUpKQorICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oZGVz
dENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKK30KKworU3RyaW5nIEltYWdlQnVmZmVyRGlyZWN0MkRC
YWNrZW5kOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8ZG91YmxlPiwgUHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
ICJkYXRhOiwiX3M7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6dG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07Cit9
CisKK1ZlY3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6dG9CR1JBRGF0
YSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQor
CitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Z2V0SW1hZ2VE
YXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEltYWdl
QnVmZmVyQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbnVsbHB0
cik7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OnB1dEltYWdlRGF0YShB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdl
RGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0SW1h
Z2VEYXRhKGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgbnVsbHB0
cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShESVJFQ1Qy
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QxNTYwN2Yz
NjQzZGJhN2VlNWVlZmYyZjcxYWMzOTM5NjAwN2UxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZC5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoRElSRUNUMkQpCisKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQgOiBw
dWJsaWMgSW1hZ2VCdWZmZXJCYWNrZW5kIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKElt
YWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kKTsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZCk7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ+IGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKworICAgIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZmx1c2hD
b250ZXh0KCkgb3ZlcnJpZGU7CisKKyAgICBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1
dGlvbikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8SW1hZ2U+IHNpbmtJbnRvSW1hZ2Uo
UHJlc2VydmVSZXNvbHV0aW9uKSBvdmVycmlkZTsKKworICAgIFN0cmluZyB0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVy
cmlkZTsKKyAgICBWZWN0b3I8dWludDhfdD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwor
CisgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3Qg
SW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCkgb3ZlcnJpZGU7CisKK3Byb3RlY3RlZDoKKyAgICBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNh
bFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSk7CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+IG1fcGxhdGZvcm1Db250ZXh0OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBOYXRpdmVJ
bWFnZVB0ciBtX2JpdG1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShESVJFQ1QyRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrR1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA0OTM2N2NiMjlkMGYyMGQxNzEyMjBiMzIw
MGM5NGU1Y2NkMzcwMWJkLi4zMmJmODZiYzZmYjY4YzFlNmQ2M2RlZDg3NjI3NTM1M2Q1NGFmYjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvTW9ja0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tHU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2UuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBpbnQgZnBz
TnVtZXJhdG9yLCBmcHNEZW5vbWluYXRvcjsKICAgICAgICAgZ3N0X3V0aWxfZG91YmxlX3RvX2Zy
YWN0aW9uKGZyYW1lUmF0ZSgpLCAmZnBzTnVtZXJhdG9yLCAmZnBzRGVub21pbmF0b3IpOwotICAg
ICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKTsKKyAgICAg
ICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsKICAgICAgICAg
YXV0byBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoInZpZGVvL3gtcmF3IiwK
ICAgICAgICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAiQkdSQSIsCiAgICAgICAgICAg
ICAid2lkdGgiLCBHX1RZUEVfSU5ULCBpbWFnZVNpemUud2lkdGgoKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggODUxYTg2Njc4OWI0ODM1NDIyYzU3YTQx
ZGRhNzVhMGJjYWQ3ZDY3NS4uMDQyZDVkZDdiYjgzNGYxZTNiZWExYTllMWE5MDJmZTNkYjZlZmZi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJCb3hTaGFwZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAj
aW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUG9seWdvblNoYXBlLmgiCiAj
aW5jbHVkZSAiUmFzdGVyU2hhcGUuaCIKQEAgLTE4OCw4ICsxODksOSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRo
cmVzaG9sZCwgYwogICAgICAgICBpZiAoaW1hZ2UpCiAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuZHJhd0ltYWdlKCppbWFnZSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgp
KSk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gaW1h
Z2VCdWZmZXItPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShJbnRSZWN0KEludFBvaW50KCksIGlt
YWdlUmVjdC5zaXplKCkpKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQocGl4ZWxBcnJheSk7Cisg
ICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIHsgSW50UG9pbnQoKSwgaW1hZ2VSZWN0
LnNpemUoKSB9KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW1hZ2VEYXRhICYmIGltYWdlRGF0
YS0+ZGF0YSgpKTsKKyAgICAgICAgYXV0byogcGl4ZWxBcnJheSA9IGltYWdlRGF0YS0+ZGF0YSgp
OwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3Ro
KCk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlPZmZzZXQgPSAzOyAvLyBFYWNoIHBpeGVs
IGlzIGZvdXIgYnl0ZXM6IFJHQkEuCiAgICAgICAgIHVpbnQ4X3QgYWxwaGFQaXhlbFRocmVzaG9s
ZCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGxyb3VuZGYoY2xhbXBUbzxmbG9hdD4odGhyZXNob2xk
LCAwLCAxKSAqIDI1NS4wZikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjA3NWY2M2UxYzI4MDA3ZjY3N2UyOTM3
YzVjYTdiYzY3OTMzMjAyOC4uZjZhOTU0NTg5ODU4ZTAwZTRlN2I2YTNjMTlmMjJiYWZhNTc2MWQz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnUK
ICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IG1fcGFpbnRJbmZvLT5jb250ZXh0
KCkuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7
CiAgICAgICAgIEludFNpemUgZXhwYW5kZWRCb3VuZGluZ0JveCA9IGV4cGFuZGVkSW50U2l6ZShi
b3VuZGluZ0JveC5zaXplKCkpOwogICAgICAgICBJbnRTaXplIGJ1ZmZlclNpemUoc3RhdGljX2Nh
c3Q8aW50PihjZWlsKGV4cGFuZGVkQm91bmRpbmdCb3gud2lkdGgoKSAqIHRyYW5zZm9ybS54U2Nh
bGUoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoZXhwYW5kZWRCb3VuZGluZ0JveC5oZWlnaHQo
KSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsKLSAgICAgICAgaWYgKGJ1ZmZlclNpemUgIT0gaW1h
Z2VCdWZmZXItPmludGVybmFsU2l6ZSgpKQorICAgICAgICBpZiAoYnVmZmVyU2l6ZSAhPSBpbWFn
ZUJ1ZmZlci0+YmFja2VuZFNpemUoKSkKICAgICAgICAgICAgIGltYWdlQnVmZmVyLnJlc2V0KCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggNTFkMzE4YjcyNGU3NTE5ZDcyNzdhZTc1MDc3M2QxYjI4ZThkZGFhMy4uYjAxYjU0
YzE3MDkwMDk3M2ViYmVhYzE2ZDM4OGRiMWQwZjgyMjVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTUsNiArMTUsOCBAQCAkKEpBVkFT
Q1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL21vZGVscy5weQogJChKQVZBU0NSSVBUQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSKS94eGQucGwKICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BV
UHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tYWMvY29t
LmFwcGxlLldlYktpdC5HUFVQcm9jZXNzLnNiLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMu
aW4KQEAgLTEwNyw2ICsxMDksNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0NhY2hlL1dl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCA1YzkyYjgxMzM1M2RmNzFmZTZkNjg1
MGYzN2M0ZjczZmNjZjcxZTVlLi4wYTc3N2Y3MjM3MTA4ZDExNGY2YTQ4ZWQxYWM0YjdiMjYyOGMz
MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTEyOSw2ICsxMjksMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzUmVwbGllcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlc1Jl
cGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUltYWdlQnVmZmVyUHJveHlNZXNzYWdl
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0xNTQsNiArMTYwLDkgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXJNZXNzYWdlc1IKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1JlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNz
YWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCAzNDllNTRkYzMwYzQ0OTgyYmNkODJlMDllOTRiYjY2ZGU5OWRjYjExLi42MGJlMTk4ZThk
ZmNjZjlmYTg2MDk5MmFjN2I2NWYwOWM2YTlmMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yNSw2ICsyNSw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvR1BVUHJvY2Vz
cyBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL21hYyBcCiAgICAgJChXZWJLaXQyKS9HUFVQ
cm9jZXNzL21lZGlhIFwKKyAgICAkKFdlYktpdDIpL0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2Vu
ZCBcCiAgICAgJChXZWJLaXQyKS9HUFVQcm9jZXNzL3dlYnJ0YyBcCiAgICAgJChXZWJLaXQyKS9O
ZXR3b3JrUHJvY2VzcyBcCiAgICAgJChXZWJLaXQyKS9OZXR3b3JrUHJvY2Vzcy9Db29raWVzIFwK
QEAgLTUyLDYgKzUzLDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BVIFwKICAgICAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvR1BVL21lZGlhIFwKKyAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvR1BV
L1JlbmRlcmluZ0JhY2tlbmQgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlIFwKICAgICAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yIFwKQEAgLTE0NSw2ICsxNDcsOCBAQCBNRVNTQUdFX1JF
Q0VJVkVSUyA9IFwKICAgICBQbHVnaW5Qcm94eSBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlciBcCisJUmVtb3RlSW1hZ2VCdWZmZXIgXAorCVJlbW90ZUltYWdlQnVmZmVyUHJveHkg
XAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAogICAgIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlciBcCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXApAQCAt
MTUzLDYgKzE1Nyw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciBcCiAgICAgUmVt
b3RlT2JqZWN0UmVnaXN0cnkgXAorICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBcCiAg
ICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIFwKICAgICBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggYTZjZWU1NGM5N2M5MjE1YTY4NzNmNGRjYjEyYmRlNDdjMWRjNDBl
Yy4uYTZhNTRmZTExOGQwN2Q4ZDQ0OTJmMWQ2YzkzZWNlYWVkMDM3MWQ3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtMTg2LDc5ICsxODYsOTIgQEAgTGliV2ViUlRDQ29kZWNzUHJveHkmIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmxpYldlYlJUQ0NvZGVjc1Byb3h5KCkKIH0KICNlbmRpZgogCi12b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQoreworICAgIEFTU0VSVCghbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpOworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5ID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGUoKnRoaXMsIHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBy
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpOworICAgIEFTU0VSVChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS0+cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSA9PSByZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgPSBudWxscHRyOworfQor
Citib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgcmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNz
KGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0gZWxzZSBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewog
ICAgICAgICByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVQbGF5ZXJN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKICAgICAgICAgcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKS5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICB1c2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2Vzcyhjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAg
ICAgICAgIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJv
Y2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
ICAgICAgICAgbWVkaWFSZWNvcmRlck1hbmFnZXIoKS5kaWRSZWNlaXZlUmVtb3RlTWVkaWFSZWNv
cmRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewogICAgICAgICBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyKCkuZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGF1ZGlvVHJh
Y2tSZW5kZXJlck1hbmFnZXIoKS5kaWRSZWNlaXZlUmVuZGVyZXJNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewogICAgICAgICBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZUxheWVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKICNl
bmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBsaWJXZWJSVENDb2RlY3NQcm94
eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisg
ICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKIH0KIAotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiti
b29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5KCkuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tR1BVUHJvY2Vz
cyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KFZJREVPX1RSQUNLKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIo
KS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICNlbmRpZgogI2VuZGlmCi0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCiBjb25zdCBTdHJpbmcmIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6Om1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
MmI5YmQxZjg4N2JhZGFmYTRlYTVjNGJhMzQxNjlkOGI5NzhmZDYyZC4uNDBmYWViZGY4ZTEyOTYx
MmViNzNjZjU4YmFkNDdjYjJlOTMyZDg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yOCwxMyArMjgsMTUgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5j
bHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgor
I2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgorI2luY2x1ZGUgIlJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2Vy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTQ5LDE4ICs1MSwyMCBAQCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OwogCiBj
bGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBjcmVh
dGUoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2aXJ0dWFsIH5HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCk7CiAKICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7
IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1h
cCYgbWVzc2FnZVJlY2VpdmVyTWFwKCkgeyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJNYXA7IH0K
ICAgICBHUFVQcm9jZXNzJiBncHVQcm9jZXNzKCkgeyByZXR1cm4gbV9ncHVQcm9jZXNzLmdldCgp
OyB9CisgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOyB9CiAKICAgICB2b2lkIGNs
ZWFudXBGb3JTdXNwZW5zaW9uKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgdm9pZCBlbmRTdXNw
ZW5zaW9uKCk7CiAKLSAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICBS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciYgcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKTsK
IAogICAgIExvZ2dlciYgbG9nZ2VyKCk7CkBAIC04NSwxNyArODksMjMgQEAgcHJpdmF0ZToKICAg
ICBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKICNlbmRpZgotCisgICAgdm9pZCBjcmVhdGVSZW5k
ZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVh
c2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICAgICAg
CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUp
IGZpbmFsOworCisgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAKICAg
ICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvbjsKICAgICBSZWY8R1BVUHJvY2Vzcz4gbV9ncHVQcm9jZXNzOworICAgIElQQzo6
TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogICAgIGNvbnN0IFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyPiBtX3JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKQEAgLTExMSw2ICsxMjEsNyBA
QCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENDb2RlY3NQcm94eT4gbV9saWJXZWJSVENDb2RlY3NQcm94
eTsKICNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNkNDBhNTcxMmUwMmQxNDlk
MTRmOTJmNTZlNDQ1MzQ2YzAxMjIxZDguLjkzMmMwMTIyZGUwODFlZGU5YmI5ZWZiNTZmOWJjNTI1
OWJhNGQ3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw5IEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLW1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgeworbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50
c0Rpc3BhdGNoTWVzc2FnZSB7CisgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktp
dDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
CisgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYmNmYzQ1ZjU1YjIwNWJjMDA1NmUyMzdkNDQwMzAxZGE5MWQ2YWIxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tl
bmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJQcm94eU1lc3NhZ2Vz
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1Jl
bW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1f
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKGltYWdlQnVmZmVySWRlbnRpZmllcikKK3sKKyAgICAvLyBS
ZWdpc3RlciBpdHNlbGYgYXMgYSBNZXNzYWdlUmVjZWl2ZXIgaW4gdGhlIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuCisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lt
YWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZUltYWdl
QnVmZmVyUHJveHk6On5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCkKK3sKKyAgICAvLyBVbi1yZWdp
c3RlciBpdHNlbGYgYXMgYSBNZXNzYWdlUmVjZWl2ZXIuCisgICAgaWYgKGF1dG8qIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisg
ICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
K30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIHJl
dHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit1aW50NjRfdCBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk4MTMwNzc3ZDY4NTM1ZmFjNzUxNDkwMTI5MDIzM2JhODEyNzE0YTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFj
a2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJ
dGVtcy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworCitjbGFzcyBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5CisgICAgOiBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlcgorICAgICwgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsK
KyAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSgpOworCitwcm90ZWN0ZWQ6CisgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyLgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOworCisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIG1f
aW1hZ2VCdWZmZXJJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlZDE4OWMyOWE1M2Y1ZmM0OGU5
MzBiZDY0YzhlY2I5ZWQxYjU2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKK30KKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmluZ0Jh
Y2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2Q2MjUyNzlmY2Q2MWNmMTQyYmQxNDViMWU1YmRlY2Q0NDA5NWU0YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5k
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZShHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKK3sKKyAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4obmV3IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikpOworfQorCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBy
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKKyAgICAsIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCit7Cisg
ICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuZ2V0KCkpCisgICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKK30KKworUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5Ojp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkKK3sKKyAgICBpZiAoYXV0
byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5nZXQoKSkKKyAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2Vp
dmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBp
ZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKSkKKyAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3VpbnQ2NF90IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7
Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1
ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQoreworICAgIGlmIChtX2ltYWdl
QnVmZmVyTWFwLmNvbnRhaW5zKGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdl
dCgpOworICAgIGlmICghZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKworICAg
IHN3aXRjaCAocmVuZGVyaW5nTW9kZSkgeworICAgIGNhc2UgUmVuZGVyaW5nTW9kZTo6UmVtb3Rl
QWNjZWxlcmF0ZWQ6CisgICAgY2FzZSBSZW5kZXJpbmdNb2RlOjpSZW1vdGU6CisgICAgICAgIC8v
IEZJWE1FOiBjcmVhdGUgdGhlIHJlbW90ZSBJbWFnZUJ1ZmZlciBwcm94eS4KKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBpZiAoIWltYWdl
QnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ltYWdlQnVmZmVyTWFwLmFkZChpbWFn
ZUJ1ZmZlcklkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKK30KKwordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQoreworICAgIC8vIENyZWF0ZUltYWdlQnVm
ZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUuCisg
ICAgaWYgKCFtX2ltYWdlQnVmZmVyTWFwLmNvbnRhaW5zKGltYWdlQnVmZmVySWRlbnRpZmllcikp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgbV9pbWFnZUJ1ZmZlck1hcC5yZW1vdmUoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9S
ZW5kZXJpbmdCYWNrZW5kL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY5NTI3Yjg3NWFhMTMyNTU2OWFjMjI2MzAwZmE2YWQ1OThlOWFlMGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOworCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKKyAgICA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KCk7CisKKyAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7IH0K
KworcHJpdmF0ZToKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKKworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpOworICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7
CisKKyAgICB1c2luZyBJbWFnZUJ1ZmZlck1hcCA9IEhhc2hNYXA8SW1hZ2VCdWZmZXJJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICBJbWFnZUJ1
ZmZlck1hcCBtX2ltYWdlQnVmZmVyTWFwOworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9S
ZW5kZXJpbmdCYWNrZW5kL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNGRjZjdmMzJiNDUyNmRkZmJlYmI3ODdmODAyYzM2ZmQ5NTdiYzQ5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL1JlbmRlcmluZ0JhY2tlbmQv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKKworbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5IE5vdFJl
ZkNvdW50ZWQgeworICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRTaXpl
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6
OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgdm9pZCBS
ZWxlYXNlSW1hZ2VCdWZmZXIoV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKQorfQorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggNjg1YTY2OTc4NzE3NmIxMzcxOWNiYjhmZTk5
M2NkYzFiY2U3OWNlOC4uNmU2YTIxN2E1YTIwNWVlMzcwOGYzNDBiYWQ3NDYzOTE2YzJkNmU4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IDRiOWJlNDljYWM3MmY0NGU3MTc5NzdjNGE0NjZl
MmUyNzlmMWIxNGUuLmZiMGQyNjUyZTdkYzcxNWYzY2JlOTBiMDFhNzQxNzMxMjhjZGI1N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICA6IG1f
Y29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuaAppbmRleCA5ZjliMzBjNzYxNjIzZGQ5NDhkMjliZTBmMzdmMGFk
MGY0N2U1YTlhLi5lMzhjNWQ2YzA1ZDBkZmFmNDI2ODE5OTViOWUwNGY0ZTc2NDdmMGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA3YzVhYzBhY2Y3NDVi
N2E3MDNjYmVjMDZiZjdiMWFjNjJlYTg0MmIwLi45YWQyMGMwMGE3ODVkMWY2NTFhMzEzMjI0YWJm
Yzg2NmQzYzdkNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTI3LDYgKzI3LDcgQEAgaW1wb3J0IHN5cwogZnJvbSB3ZWJraXQgaW1wb3J0IHBhcnNlcgog
CiBXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCitXQU5UU19E
SVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSA9ICdXYW50c0Rpc3BhdGNoTWVzc2FnZScKIExFR0FD
WV9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTGVnYWN5UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9S
RUNFSVZFUl9BVFRSSUJVVEUgPSAnTm90UmVmQ291bnRlZCcKIFNZTkNIUk9OT1VTX0FUVFJJQlVU
RSA9ICdTeW5jaHJvbm91cycKQEAgLTIwNCw2ICsyMDUsOCBAQCBkZWYgdHlwZXNfdGhhdF9jYW5u
b3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVybiBmcm96ZW5zZXQoWwogICAgICAg
ICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdTdHJpbmcnLAorICAgICAgICAnV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbicsCisgICAgICAgICdXZWJDb3JlOjpDb2xvclNwYWNlJywK
ICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywK
QEAgLTIxMiw2ICsyMTUsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNs
YXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlJlbmRlcmluZ01vZGUnLAogICAgICAg
ICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdv
cmtlck9yQ2xpZW50RGF0YScsCkBAIC0yMjEsMTIgKzIyNSwxNSBAQCBkZWYgdHlwZXNfdGhhdF9j
YW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQnLAogICAgICAgICAnV2ViS2l0OjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVy
JywKKyAgICAgICAgJ1dlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJywKKyAgICAgICAg
J1dlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dElEJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpSVENEZWNvZGVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJU
Q0VuY29kZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcicsCkBAIC03NjksMTMgKzc3Niwx
NiBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIGFzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0gICAgaWYg
YXN5bmNfbWVzc2FnZXM6CisgICAgaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJl
Y2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRU
UklCVVRFKSBlbHNlICcnKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKICAgICAgICAg
aWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRU
UklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKTtcbicpCiAKICAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNz
YWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVz
c2FnZXNdCisgICAgICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hf
TUVTU0FHRV9BVFRSSUJVVEUpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChk
aXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlcikpXG4nKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgICAgICBpZiAocmVjZWl2ZXIuc3Vw
ZXJjbGFzcyk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzKSkK
ICAgICAgICAgZWxzZToKQEAgLTc4NCwxMyArNzk0LDE2IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdl
X2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKIAotICAg
IGlmIHN5bmNfbWVzc2FnZXM6CisgICAgaWYgc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnXG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNl
aXZlU3luYyVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rlcilc
bicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmli
dXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCd7XG4nKQogICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1Rf
UkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKICAgICAgICAg
cmVzdWx0ICs9IFtzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3Ig
bWVzc2FnZSBpbiBzeW5jX21lc3NhZ2VzXQorICAgICAgICBpZiByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBpZiAoZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIpKVxuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAg
cmV0dXJuO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oZGVj
b2Rlcik7XG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKHJlcGx5
RW5jb2Rlcik7XG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAppbmRleCA3YmY3MWMxN2FiZGQzZDhiMTMxOTAyMjAwNThjOWY5YzIxOWY2MGIzLi5kOTkz
YzI3M2EzM2RmYWI5OWY0NjRhMGIyN2MyY2NmZTU5MDIxMGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0b3BsYXlFdmVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KQEAgLTM2LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0
aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJU
eXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaD4KQEAg
LTgyMyw2ICs4MjUsMTQgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHsKIAogbmFtZXNwYWNlIFdURiB7CiAKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiwKKyAgICBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVt
dWx0aXBsaWVkLAorICAgIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZAorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OkNvbG9yU3BhY2U+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgIFdl
YkNvcmU6OkNvbG9yU3BhY2UsCkBAIC04MzIsNiArODQyLDE4IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6Q29sb3JTcGFjZT4gewogICAgID47CiB9OwogCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlbmRlcmluZ01vZGU+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsCisgICAg
V2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsCisgICAgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpEaXNw
bGF5TGlzdEFjY2VsZXJhdGVkLAorICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkRpc3BsYXlM
aXN0LAorICAgIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkLAorICAg
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlJlbW90ZQorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2
YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggNTMxMDkyMDNjYTIyY2I1ZjVkYjkzNTFmOWMyMzZlMDUzYWIxZTAwOS4uMjRh
MTcyYmE2MTIyYTcyYzI0OWYyNDY2NDc1NDJkNGMzN2QxMTBkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0z
Nyw2ICszNyw4IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKK0dQVVByb2Nlc3MvUmVuZGVyaW5nQmFja2VuZC9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmNwcAorR1BVUHJvY2Vzcy9SZW5kZXJpbmdCYWNrZW5kL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKIAogTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtBY3Rpdml0eVRyYWNrZXIu
Y3BwCkBAIC01MzcsNiArNTM5LDkgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
SU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQcml2
YXRlUmVtb3RlLmNwcAorV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCitXZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNr
ZW5kL1JlbW90ZUltYWdlQnVmZmVyLmNwcAorV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2Vu
ZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZWFhMGQ4NGZhNWNmYTc0MGQyN2I3OGI5MDdlYzk1Njk5
MzFjYjBkYy4uZTRkZTZkYjA1NmVjM2NmMTA4YjJmOTFiMThlNTVkYTU5ZGM1MGMyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNTUzLDYgKzU1Myw4IEBAIFdlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCiAKIFdlYlByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNl
L1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQogCitXZWJQcm9jZXNzL0dQVS9SZW5kZXJp
bmdCYWNrZW5kL2NnL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKKwog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VCYW5uZXIuY3BwCiAK
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlTWFjLm1tCkBAIC02
MzgsMTQgKzY0MCwxOCBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCiAvLyBEZXJpdmVkIFNvdXJjZXMKIEVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
c01lc3NhZ2VSZWNlaXZlci5jcHAKK0dQVVByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcAogR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogR1BVUHJvY2Vzc01lc3Nh
Z2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAog
TGliV2ViUlRDQ29kZWNzTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUltYWdlQnVmZmVyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwCiBSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWVzc2FnZVJlY2VpdmVyLmNwcAogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZVJl
Y2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYmU2NDIyMDQ3NzVlMjU1NWNjYmE1ZmRlOWY4ZTRhZTgzNTVlZGRkNS4uNjVk
YmQ3NDM5OWYzODI5MDA4YzU0Njc2NzA5NDlhZTg3ZTcyNzBhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDM4LDYgKzQwMzgsMjUg
QEAKIAkJNzFBNjc2QTQyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVj
b2duaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RvdWNoQWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNjc2QTUyMkM2MjMxODAw
N0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXpl
ci5tbTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJz
aXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGlj
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjUwNkQzOTIzRTlGODhCMDAxRTZF
MEQgLyogUmVtb3RlSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1
MDZEM0EyM0U5Rjg4QzAwMUU2RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1MDZEM0IyM0U5Rjg4QzAwMUU2RTBEIC8qIFJlbW90
ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUlt
YWdlQnVmZmVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjUw
NkQzQzIzRTlGOEI5MDAxRTZFMEQgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTA2RDNEMjNFOUY4QjkwMDFFNkUwRCAvKiBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
bW90ZUltYWdlQnVmZmVyUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyNTA2RDNFMjNFOUY4QjkwMDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVm
ZmVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjUwNkQ0MDIzRUEy
MTJFMDAxRTZFMEQgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTA2RDQxMjNF
QTIxMkYwMDFFNkUwRCAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTA2RDQzMjNFQTIxQTgw
MDFFNkUwRCAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTA2RDQ0MjNFQTIxQTkw
MDFFNkUwRCAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1MDZENDUy
M0VBMjFEMjAwMUU2RTBEIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1MDZENDgyM0VBMjJCNzAwMUU2RTBEIC8qIFBsYXRm
b3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTY0NTlFMjNFOEZGMDcwMEEwNjMyRCAvKiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzI1NjQ1OUYyM0U4RkYwNzAwQTA2MzJEIC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1NjQ1
QTAyM0U4RkYwNzAwQTA2MzJEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTY0NUExMjNFOEZG
MTUwMEEwNjMyRCAvKiBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjU2NDVBMjIzRThGRjE1MDBBMDYzMkQgLyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNTY0
NUEzMjNFOEZGMTUwMEEwNjMyRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjU2NDVBNDIzRTkwN0QxMDBBMDYzMkQg
LyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9y
UGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Q29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM0
MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02NDgyLDYgKzY1MDEsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQkwNzkyMzEyRjIzOUIzQjBDMDA5NTk4RTIgLyogbWVkaWEgKi8sCisJ
CQkJNzI1NjQ1OUMyM0U4RkU1QzAwQTA2MzJEIC8qIFJlbmRlcmluZ0JhY2tlbmQgKi8sCiAJCQkJ
NDE3MjE5ODgyM0I2MTI2MTAwQUU1Njg2IC8qIHdlYnJ0YyAqLywKIAkJCQkyRDdFNDNDMDIzNzUy
Q0Q5MDBFQTVDQTAgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTJEN0U0M0Mz
MjM3NTJDRDkwMEVBNUNBMCAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvbi5oICovLApAQCAtNjQ5OCw2
ICs2NTE4LDcgQEAKIAkJCQkyRDlGQjIwNDIzNzUyMDlEMDA0OUY5MzYgLyogaW9zICovLAogCQkJ
CTJEOUZCMjA2MjM3NTIwOUQwMDQ5RjkzNiAvKiBtYWMgKi8sCiAJCQkJMDdDNzVDMTcyMzk5QTNE
QjAwODhFNjVCIC8qIG1lZGlhICovLAorCQkJCTcyNTY0NTlEMjNFOEZFODcwMEEwNjMyRCAvKiBS
ZW5kZXJpbmdCYWNrZW5kICovLAogCQkJCTQxNzIxOThFMjNCNjMzQ0EwMEFFNTY4NiAvKiB3ZWJy
dGMgKi8sCiAJCQkJMkQ5RkIyMEMyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwICovLAogCQkJCTJEOUZCMjAwMjM3NTIwOUQwMDQ5RjkzNiAvKiBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggKi8sCkBAIC03ODk5LDYgKzc5MjAsNDcgQEAKIAkJCW5hbWUg
PSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3MjUwNkQ0MjIzRUEy
MTYwMDAxRTZFMEQgLyogY2cgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTcyNTA2RDQ0MjNFQTIxQTkwMDFFNkUwRCAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovLAorCQkJCTcyNTA2RDQzMjNFQTIxQTgwMDFFNkUwRCAv
KiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gY2c7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3MjU2NDU5QzIz
RThGRTVDMDBBMDYzMkQgLyogUmVuZGVyaW5nQmFja2VuZCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNzI1MDZENDIyM0VBMjE2MDAwMUU2RTBEIC8qIGNn
ICovLAorCQkJCTcyNTA2RDQ1MjNFQTIxRDIwMDFFNkUwRCAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUuaCAqLywKKwkJCQk3MjU2NDVBNDIzRTkwN0QxMDBBMDYzMkQgLyogSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmggKi8sCisJCQkJNzI1MDZENDAyM0VBMjEyRTAwMUU2RTBEIC8qIEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCisJCQkJNzI1MDZENDEyM0VBMjEyRjAw
MUU2RTBEIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAorCQkJCTcy
NTA2RDQ4MjNFQTIyQjcwMDFFNkUwRCAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFj
a2VuZC5oICovLAorCQkJCTcyNTA2RDNBMjNFOUY4OEMwMDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1
ZmZlci5jcHAgKi8sCisJCQkJNzI1MDZEMzkyM0U5Rjg4QjAwMUU2RTBEIC8qIFJlbW90ZUltYWdl
QnVmZmVyLmggKi8sCisJCQkJNzI1MDZEM0IyM0U5Rjg4QzAwMUU2RTBEIC8qIFJlbW90ZUltYWdl
QnVmZmVyLm1lc3NhZ2VzLmluICovLAorCQkJCTcyNTY0NUEzMjNFOEZGMTUwMEEwNjMyRCAvKiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLywKKwkJCQk3MjU2NDVBMjIzRThGRjE1MDBBMDYz
MkQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICovLAorCQkJCTcyNTY0NUExMjNFOEZGMTUw
MEEwNjMyRCAvKiBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oICovLAorCQkJKTsKKwkJCXBh
dGggPSBSZW5kZXJpbmdCYWNrZW5kOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJNzI1NjQ1OUQyM0U4RkU4NzAwQTA2MzJEIC8qIFJlbmRlcmluZ0JhY2tlbmQgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTcyNTA2RDNFMjNFOUY4Qjkw
MDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmNwcCAqLywKKwkJCQk3MjUwNkQzQzIz
RTlGOEI5MDAxRTZFMEQgLyogUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovLAorCQkJCTcyNTA2
RDNEMjNFOUY4QjkwMDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmlu
ICovLAorCQkJCTcyNTY0NTlFMjNFOEZGMDcwMEEwNjMyRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwICovLAorCQkJCTcyNTY0NTlGMjNFOEZGMDcwMEEwNjMyRCAvKiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAqLywKKwkJCQk3MjU2NDVBMDIzRThGRjA3MDBBMDYzMkQg
LyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJ
CXBhdGggPSBSZW5kZXJpbmdCYWNrZW5kOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJN0E4NDNBMUQyMUU0MUZEOTAwREVGNjYzIC8qIENsYXNzaWZpZXIgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4ZGZmNTBmMzA4
OGVkNDVjNTkwZWM4MWUyYzA5YTEzOGJhN2E1MzVmLi4wZjljN2FjZWY0ZTBlZDg3M2M0YmUwODk2
MThhNmRmMDQxNzg3MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNjIsMTAgKzYyLDYgQEAgdm9pZCBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKIHsKIH0KIAotdm9p
ZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkKLXsK
LX0KLQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpCiB7CkBAIC03
NSwzNCArNzEsNDQgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0KIH0KICNlbmRpZgogCi12b2lk
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK2Jvb2wgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpLT5kaWRSZWNlaXZlUGxheWVyTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBpZiAoYXV0byogY2FwdHVyZU1hbmFnZXIgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
PigpKQogICAgICAgICAgICAgY2FwdHVyZU1hbmFnZXItPmRpZFJlY2VpdmVNZXNzYWdlRnJvbUdQ
VVByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoVklERU9f
VFJBQ0spCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAg
ICAgICBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZUxheWVyTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShWSURF
T19UUkFDSykKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2lmIFVTRShMSUJXRUJS
VEMpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
IHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkuZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisgICAgcmV0dXJuIG1lc3NhZ2VSZWNl
aXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAorYm9v
bCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK3sKKyAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29k
ZXIpOworfQorCit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5n
UmVmZXJlbmNlKQoreworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDQ2MDBlNTNiYjI4NGQ3NDhjZjM5MTFiOTRk
YjU1OTlhOWNiNDVmMjcuLjdiNmY4ODIyMmMzMzczNmI4YzQyN2RiNGNiZGUxYzA0NTQ4ODZjODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAj
aW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Nyw2
ICs0OCw3IEBAIHB1YmxpYzoKICAgICB+R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICAKICAg
ICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0
KCk7IH0KKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwKCkg
eyByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJNYXA7IH0KIAogI2lmIEhBVkUoQVVESVRfVE9LRU4p
CiAgICAgdm9pZCBzZXRBdWRpdFRva2VuKE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9r
ZW4pIHsgbV9hdWRpdFRva2VuID0gYXVkaXRUb2tlbjsgfQpAQCAtNjIsMTAgKzY0LDE1IEBAIHBy
aXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7Cisg
ICAgCisgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICAvLyBU
aGUgY29ubmVjdGlvbiBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgR1BVIHByb2Nlc3MuCiAg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIElQQzo6TWVzc2FnZVJl
Y2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogCiAjaWYgSEFWRShBVURJVF9UT0tFTikK
ICAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgppbmRleCBkMzZmOGEwOTVmNmE3N2JiYjZjYWM4ODNhNjUxZTg0Y2U5ZDY0YjMw
Li41N2ZlY2RlOWRmMjdjNzM5YTZjYmYwMjY5ODA2NTkyYjVlMjE3OWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAotbWVzc2FnZXMgLT4gR1BVUHJvY2Vzc0Nvbm5lY3Rpb24geworbWVzc2FnZXMgLT4gR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24gV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9JbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVy
aW5nQmFja2VuZC9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTk2MzA2
OWY2NjE4MTgzZDA3OGE2NGMyZGVhY2MyZDgzYTRjZGUzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL0ltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSA9IFZhcmlhbnQ8CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRSaWdodCwKKyNl
bmRpZgorICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlCis+OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9JbWFnZUJ1ZmZlcklkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9J
bWFnZUJ1ZmZlcklkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTFiYzlhZTg3ZGM4ZDcyNDI4YTBi
ODA5Y2FkMGQ4MGE0Y2QxY2I5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL0ltYWdlQnVmZmVySWRlbnRpZmllci5oCkBAIC0w
LDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitlbnVtIEltYWdlQnVmZmVySWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcg
SW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZUJ1ZmZlcklkZW50
aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1Jl
bmRlcmluZ0JhY2tlbmQvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3YzZkZWY4NTk1Y2Y3MGMxNmRl
MjE3YTE0Njg5NTQ5MzBhNzFmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCIKKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEYXRhLmg+CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Q0cuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCit7CisgICAgSW50U2l6ZSBiYWNr
ZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7Cisg
ICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hlZENH
Q29sb3JTcGFjZShjb2xvclNwYWNlKSB9OworI2VuZGlmCisgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7
CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBj
b250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRl
eHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKSk7Cit9CisKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3sK
KyAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4o
aGFuZGxlKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShXVEZNb3ZlKFdURjo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUpKSk7
CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBj
b250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRl
eHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSkpOworfQor
CitJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBwaHlzaWNhbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdy
YXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tl
bmQobG9naWNhbFNpemUsIHBoeXNpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
KQorICAgICwgbV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQorICAgICwgbV9jb250ZXh0KFdURk1v
dmUoY29udGV4dCkpCit7Cit9CisKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
IGNvbnN0Cit7CisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgIG1fYml0
bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlKFdURk1vdmUoaGFuZGxlKSk7Cit9CisKK05hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkp
IGNvbnN0Cit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBtX2JpdG1hcC0+bWFrZUNHSW1hZ2VD
b3B5KCk7CisjZWxpZiBVU0UoRElSRUNUMkQpCisgICAgcmV0dXJuIG51bGxwdHI7CisjZWxpZiBV
U0UoQ0FJUk8pCisgICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyNl
bmRpZgorfQorCitSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUltYWdlKCk7Cit9CisKK1ZlY3Rvcjx1aW50
OF90PiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OnRvQkdSQURhdGEoKSBjb25z
dAoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEobV9iaXRtYXAt
PmRhdGEoKSk7Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAoreworICAgIHJldHVybiBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fYml0bWFw
LT5kYXRhKCkpOworfQorCit2b2lkIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
cHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IElt
YWdlRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50KQoreworICAgIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0SW1hZ2VEYXRhKGlu
cHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgbV9iaXRtYXAtPmRhdGEo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJp
bmdCYWNrZW5kL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5MTM3MzlmOGM1MTk5ZDk4ZDM1MTZlNWIyMjY3
YTFjMDE0OTA3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL1JlbmRlcmluZ0JhY2tlbmQvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgK
QEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1
ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTaGFyZWFibGVCaXRtYXA7CisKK2NsYXNzIEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsK
KworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisKKyAgICBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkg
Y29uc3Q7CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAqbV9jb250ZXh0OyB9CisKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6
OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5
QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZlY3Rvcjx1aW50OF90
PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0
SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwdXRJbWFn
ZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6Cisg
ICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBoeXNpY2FsU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiYm
KTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgQ29sb3JGb3JtYXQgYmFja2VuZENv
bG9yRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29sb3JGb3JtYXQ6OkJHUkE7IH0K
KyNlbmRpZgorCisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQv
UGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9QbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxl
QmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMjNiMGQzN2ZiMGNhN2E3YTc2ZmVkNGU5Y2RkOTAyNjJk
ZjFmNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1Jl
bmRlcmluZ0JhY2tlbmQvUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaApAQCAt
MCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCisKKyNpZiBIQVZFKElPU1VSRkFD
RSkKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgUGxhdGZvcm1VbmFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOworCisjaWYgSEFWRShJT1NVUkZBQ0UpCit1c2luZyBQbGF0Zm9ybUFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kOworI2Vsc2UKK3VzaW5nIFBsYXRmb3JtQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJhY2tlbmQgPSBQbGF0Zm9ybVVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJhY2tlbmQ7CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MTRjMmExYzJmZjdkZmVlYjYxNmJjODY3ZTNkOGJhZWE0NmQ0ZTg3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNr
ZW5kL1JlbW90ZUltYWdlQnVmZmVyLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlci5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQor
CisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVJbWFnZUJ1
ZmZlcjo6UmVtb3RlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllcikKKyAgICA6IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIocmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpCit7CisgICAgLy8gUmVnaXN0ZXIgaXRzZWxmIGFzIGEgTWVzc2FnZVJlY2Vp
dmVyIGluIHRoZSBHUFVQcm9jZXNzQ29ubmVjdGlvbi4KKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKKyAgICBtZXNzYWdl
UmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZUJ1ZmZl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2ltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CisKKyAgICAvLyBDcmVhdGUgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHku
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJ
bWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7Cit9CisKK1JlbW90ZUltYWdlQnVmZmVyOjp+UmVtb3RlSW1hZ2VCdWZmZXIoKQoreworICAg
IC8vIFVuLXJlZ2lzdGVyIGl0c2VsZiBhcyBhIE1lc3NhZ2VSZWNlaXZlci4KKyAgICBJUEM6Ok1l
c3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsK
KyAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKKwor
ICAgIC8vIFJlbGVhc2UgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNlSW1hZ2VCdWZmZXIobV9p
bWFnZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30K
KworSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVJbWFnZUJ1ZmZlcjo6bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFJl
bW90ZUltYWdlQnVmZmVyOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbW90
ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0Jh
Y2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjdiMDI3M2QzYzZjYjk4ODBi
MmYzMGE3OGNkMGYwNzRmNmQyMmEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIklt
YWdlQnVmZmVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIKKyAgICA6IHByaXZhdGUgSVBD
OjpNZXNzYWdlU2VuZGVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1
YmxpYzoKKyAgICB+UmVtb3RlSW1hZ2VCdWZmZXIoKTsKKworcHJvdGVjdGVkOgorICAgIFJlbW90
ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOworCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgorICAg
IElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOworCisgICAg
SW1hZ2VCdWZmZXJJZGVudGlmaWVyIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyIHsgSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbW90ZUltYWdlQnVmZmVy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNr
ZW5kL1JlbW90ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYTYxZmM0ZDRi
ZGYyYjIwZjRlZjlkOGJjZjZkOGYwM2U4NDkyMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIu
bWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisj
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCittZXNzYWdlcyAtPiBSZW1v
dGVJbWFnZUJ1ZmZlciBOb3RSZWZDb3VudGVkIHsKK30KKworI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVy
aW5nQmFja2VuZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MDM1N2IwYTRiMTgxMzk4NTUxZmU5MGFlMjllNGI5NjlkNmExODc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNr
ZW5kL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbmRlcmluZ0Jh
Y2tlbmQ+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPihuZXcgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCgpKTsKK30KKworUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZCgpCit7CisgICAgLy8gQ3JlYXRlIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuCisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRl
UmVuZGVyaW5nQmFja2VuZChtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKSwgMCk7Cit9CisK
K1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCkKK3sKKyAg
ICAvLyBSZWxlYXNlIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisgICAgc2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZVJlbmRlcmluZ0JhY2tl
bmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciksIDApOworfQorCitJUEM6OkNvbm5lY3Rp
b24qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKTsKK30KKworc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBpbWFnZUJ1ZmZlcjsKKworICAgIHN3aXRjaCAocmVuZGVyaW5nTW9kZSkgeworICAgIGNhc2Ug
UmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQ6CisgICAgY2FzZSBSZW5kZXJpbmdNb2Rl
OjpSZW1vdGU6CisgICAgICAgIC8vIEZJWE1FOiBjcmVhdGUgdGhlIHJlbW90ZSBJbWFnZUJ1ZmZl
ci4KKyAgICBkZWZhdWx0OgorICAgICAgICBpbWFnZUJ1ZmZlciA9IFJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgaG9zdFdpbmRvdyk7CisgICAgfQorCisgICAgcmV0dXJuIGltYWdlQnVmZmVy
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5n
QmFja2VuZC9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg2YmU5ZGNiZDYwZjM5NTg3N2Y0OGU1MTcxODUwOWQ5ZDFmNDRjMDUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nQmFja2VuZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAorICAgIDogcHVibGljIFdlYkNvcmU6
OlJlbmRlcmluZ0JhY2tlbmQKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAg
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZSgpOworCisgICAgflJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQoKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlci4KKyAgICBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsK
KworICAgIC8vIFJlbmRlcmluZ0JhY2tlbmQKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopIG92ZXJyaWRlOworCitwcml2
YXRlOgorICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKTsKKyAgICBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHsgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjM1NDcwY2NmZTdiNzliYjky
NDU3OGFmYjQxNzAzNWM5MTNkZDAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXJUeXBl
IHsgfTsKK3VzaW5nIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmll
cjxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9jZy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9S
ZW5kZXJpbmdCYWNrZW5kL2NnL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTViZDcyOGViMzhkZWQ1ZDQ5Y2E3ZTA3MmZhZTI1MjhmNTNmOTViMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5n
QmFja2VuZC9jZy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0w
LDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgiCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisjaWYgSEFWRShJT1NVUkZBQ0UpCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kKTsKKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3sKKyAgICBJbnRT
aXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXpl
LCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpKTsKKyAgICBpZiAo
IXN1cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gY2dDb250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KGhvc3RX
aW5kb3cpOworICAgIGlmICghY2dDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBv
aW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBXVEZNb3ZlKHN1cmZhY2UpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCit7CisgICAg
aWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChX
VEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSkpOworICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZChs
b2dpY2FsU2l6ZSwgaW50ZXJuYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdU
Rk1vdmUoc3VyZmFjZSkpKTsKK30KKworSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKG1fc3Vy
ZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2Vu
ZC9jZy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9jZy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTM3MTFhNzE3MjNlMDEwMmI3MTk5M2Vh
MDA2M2EwODAwY2YyZWY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL2NnL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisjaWYgSEFWRShJT1NVUkZBQ0UpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgor
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFNoYXJlYWJsZUJpdG1hcDsKKworY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCB7Cisg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQpOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZCk7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKKworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisKKyAgICBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgdXNpbmcgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCmluZGV4IGFlMDE2MWFhZDk0NzRk
NmIwZjFmOTAwYjA1NDRmNTk4MGQzNjk4ZmYuLmI5ZjRkMmE3ZTMyN2ViZTMyMGQ1N2U3NThiYWIw
M2U1N2E2YWQ2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMjgsMTIg
KzI4LDE1IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRl
ICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVz
c2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlVmlkZW9TYW1wbGUuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggOGU0YzkzNzVkN2I4
Y2MxMGZmYTAwODAzZDQ4MjE3M2JlNWEzNTU4YS4uN2Q3Yjg4NmQ2ODY0MzVkMmJkMWExMTQ0YzY1
NDYwNmE3NDM4MDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTkwLDYgKzkwLDEwIEBA
CiAjaW5jbHVkZSAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogI2luY2x1ZGUgIlJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yLmgiCiAjZW5kaWYKQEAgLTg5MSw2ICs4OTUsMTUgQEAgUmVmUHRyPERp
c3BsYXlSZWZyZXNoTW9uaXRvcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IoUGxhdGYKIAogI2VuZGlmCiAKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJpbmdCYWNr
ZW5kPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoKSBjb25zdAorewor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICByZXR1cm4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlKCk7CisjZWxzZQorICAgIHJldHVybiBSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUo
KTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNz
TGF5ZXIoRnJhbWUmLCBHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBpZiAobGF5ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKaW5kZXggYThhNGNjYWM1N2Q4MDhhYWE1NWQ4ZDc5NTFiYzVjNTQxYzYw
ZjJhZC4uNTY3ODdlMDE3MDBlYmJlZTlkYzM3ZTNhYjg0NTg2NjQ4NWY2ZDZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaApAQCAtMjMzLDYgKzIzMyw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdl
YkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQoKSBjb25zdCBmaW5hbDsKKwogICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93
ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDb21wb3NpdGluZ1RyaWdnZXJGbGFncz4oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWZiYjFmZGYwZDgyNzg4NDY2
NWNlYzc3MzdiMzEwYjUwMzFkNDBjNS4uMGY4ODQyOTAwZjg1MWE3ZDkyZjg4NmNhNjZmOTFhOTEw
ZTlmZWZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcApAQCAtODQwLDcgKzg0MCw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFdlYkZyYW1l
OjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpIGNvbnN0CiAgICAgaWYgKCFzbmFwc2hvdCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNoYXJlZFNuYXBzaG90ID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc25hcHNob3QtPmludGVybmFsU2l6ZSgpLCB7IH0p
OworICAgIGF1dG8gc2hhcmVkU25hcHNob3QgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShzbmFwc2hvdC0+YmFja2VuZFNpemUoKSwgeyB9KTsKICAgICBpZiAoIXNoYXJlZFNuYXBz
aG90KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBhMWEwZWM5ZTM1MDZjZmM1
NDNkODlmNGMxOWJmMWZkYTRiOTgyOTEuLmU4YWYwNjIwMTYzZjhiYjBhODRiYTEzZTBmZjgyZDBj
Mjk2MDAwMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMi0wMyAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIENyZWF0ZSBhIG5ldyBJ
bWFnZUJ1ZmZlciB0eXBlIGZvciBkcmF3aW5nIG9uIGEgRGlzcGxheUxpc3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzEwOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBleHRyYSByZWNvcmRpbmcg
aGFwcGVucyBiZWNhdXNlIENhbnZhc0Jhc2U6OnNldEltYWdlQnVmZmVyKCkgdXNlZCB0bworICAg
ICAgICBpc3N1ZSBpdHMgR3JhcGhpY3NDb250ZXh0IGNvbW1hbmRzIGRpcmVjdGx5IHRvIHRoZSBi
YWNrZW5kLiBXaXRoIHRoaXMgCisgICAgICAgIHBhdGNoLCBEaXNwbGF5TGlzdEltYWdlQnVmZmVy
IGRvZXMgbm90IGFsbG93IGFjY2VzcyB0byB0aGUgYmFja2VuZCBjb250ZXh0LgorICAgICAgICBT
byBhbGwgdGhlIEdyYXBoaWNzQ29udGV4dCBjb21tYW5kcyBoYXMgdG8gYmUgcmVjb3JkZWQuCisK
KyAgICAgICAgKiBkaXNwbGF5bGlzdHMvY2FudmFzLWRpc3BsYXktbGlzdC1leHBlY3RlZC50eHQ6
CisKIDIwMjAtMDItMDMgIEphc29uIExhd3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAK
ICAgICAgICAgWyBNYWMgd2syIF0gaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sIGlzIGZsYWt5IGZh
aWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvY2FudmFzLWRpc3Bs
YXktbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvY2FudmFzLWRp
c3BsYXktbGlzdC1leHBlY3RlZC50eHQKaW5kZXggMWI1N2U3OTFiNzJhY2NhODc3NjE0NDc5YjRk
YzdmZTVjOTU5NGQ3Ny4uMzRjODdiOWIwNDI5NDU1YTliZjExNDFjNmJmYjM5NzFjNzUyMGI4ZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2NhbnZhcy1kaXNwbGF5LWxpc3Qt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9jYW52YXMtZGlzcGxh
eS1saXN0LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDExIEBACiAgCisoc2F2ZQorICAocmVzdG9y
ZS1pbmRleCAwKSkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFncyAyNTYpCi0gIChmaWxsLWNv
bG9yICNDODAwMDApKQorICAoY2hhbmdlLWZsYWdzIDEwNTA5MTIpCisgIChzdHJva2UtdGhpY2tu
ZXNzIDEuMDApCisgIChmaWxsLWNvbG9yICNDODAwMDApCisgIChzaGFkb3dzLWlnbm9yZS10cmFu
c2Zvcm1zIDEpKQogKGZpbGwtcmVjdAogICAoZXh0ZW50IGF0ICgxMCwxMCkgc2l6ZSA1NXg1MCkK
ICAgKHJlY3QgYXQgKDEwLDEwKSBzaXplIDU1eDUwKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389737</attachid>
            <date>2020-02-04 16:31:32 -0800</date>
            <delta_ts>2020-02-27 00:40:11 -0800</delta_ts>
            <desc>Patch  for review</desc>
            <filename>ImageBuffer-Pacthes-11.patch</filename>
            <type>text/plain</type>
            <size>40576</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMDg4Zjg5MzFkYi4uZGYwZmIyYmI0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMC0wMi0wNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBJbWFnZUJ1ZmZlciBzaGFyZWFibGUgYmFj
a2VuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzIzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERl
ZmluZSB0aGUgYmFzZSBJbWFnZUJ1ZmZlckJhY2tlbmQgZm9yIGVhY2ggcGxhdGZvcm0uIAorICAg
ICAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQgaW4gV2ViS2l0IG5lZWRzIHRv
IGhhdmUgYWNjZXNzIHRvIGJhc2ljCisgICAgICAgIEltYWdlQnVmZmVyQmFja2VuZCBmdW5jdGlv
bmFsaXRpZXMgc3BlY2lmaWMgdG8gdGhlIHBsYXRmb3JtLgorCisgICAgICAgICogSGVhZGVycy5j
bWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaDogQWRk
ZWQuCisKIDIwMjAtMDItMDQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgdGhlIHJlbW90ZSBSZW5kZXJpbmdCYWNrZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCA0ODYxZjI4ZmRiMC4uMWFlNTFjNzkyZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTA0Niw2ICsxMDQ2LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHR1YWxJbWFnZUJ1ZmZlci5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGFzaEFycmF5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9EZWNvZGluZ09wdGlvbnMuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgKQEAgLTEx
MjksNiArMTEzMCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybURpc3BsYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIu
aAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA5Mjc4Y2E4MjVmNC4uZTZjNTJjYjk4MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIx
NDksNiArMjE0OSw5IEBACiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQy
M0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNFMDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjlE
RDQ0MjIzRUEyNkEwMDAwMjZCN0IgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNTA2RDQ2MjNFQTIy
MkIwMDFFNkUwRCAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyOURENDQ0MjNFQTI3MEEwMDAy
NkI3QiAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUQyM0UxRTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNzI5REQ0NDUyM0VBMjc5QjAwMDI2QjdCIC8qIEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzJCQUMzQUIyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQkFD
M0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0E1MjNFMTczMjgwMDhENzQx
QyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmgg
Ki87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0Uw
QjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTMyMDEsNyArMzIwNCw3IEBA
CiAJCUE3NUU4QjhEMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBvbmVudFRyYW5zZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFOEI4NTBFMURF
MkQ2MDA3RjI0ODEgLyogRkVDb21wb25lbnRUcmFuc2Zlci5oICovOyB9OwogCQlBNzVFOEI4RjBF
MURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4Qjg3MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBv
c2l0ZS5oICovOyB9OwogCQlBNzZFNUY3RjEzNUUwRENGMDBBNjk4MzcgLyogUmVuZGVyZWREb2N1
bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNzc5Nzkx
QTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VE
YXRhLmggKi87IH07CisJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTE0MEQ2
QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzc5NzkyOTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFn
ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovOyB9OwogCQlBNzdCNDFB
MDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdCNDE5RjEyRTY3NUE5MDA1NDM0M0Qg
LyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTc3RDAwMTIxMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2lu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3RDAw
MTExMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NTg3LDYgKzk1OTAsNyBAQAogCQk3MjRF
RDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0VYVEJsZW5kTWluTWF4Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2aXR5U3RhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2
aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzI1MDZENDYyM0VBMjIyQjAwMUU2RTBEIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNr
ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEzMjI0MUJD
RTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcklt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5ODAwODMz
OTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
UHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjUxMDMsNiArMjUxMDcsNyBAQAogCQkJCUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQ
YXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5o
ICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
LmggKi8sCisJCQkJNzI1MDZENDYyM0VBMjIyQjAwMUU2RTBEIC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3Jt
TGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBs
YXRmb3JtVGV4dFRyYWNrLmggKi8sCkBAIC0zMDI4Nyw2ICszMDI5Miw4IEBACiAJCQkJMzE4RUFE
NEQxRkE5MTM4MDAwOENFRjg2IC8qIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkExMEI5MjBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJ
bWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOURENDQ0MjNFQTI3MEEw
MDAyNkI3QiAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5
REQ0NDUyM0VBMjc5QjAwMDI2QjdCIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0QzRTIxREQyMTgzNDQ0QTAwRTY2RjU1IC8qIEltYWdlQnVmZmVy
VXRpbGl0aWVzQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMjUzOTYzMThDRTdGNjIwMDI3MDIy
MiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwMTkyRDYxOEI2QjlCNzAwN0ZDN0ExIC8qIEltYWdlQ29udHJvbHNSb290RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMTc3MCw2ICszMTc3Nyw3IEBACiAJCQkJQkNBQTQ4NzAxNEEwNTI1
MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVw
YWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOURENDQyMjNFQTI2QTAwMDAyNkI3QiAvKiBQbGF0
Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFD
NEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDU2MkY5NjExNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY1NDRGNzg5MTVDRkIyQTgwMEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBlNjlkZTI5YmIyZC4u
ZDgxMThhZWFlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ0dCYWNrZW5kLmgiCisj
ZWxpZiBVU0UoRElSRUNUMkQpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQu
aCIKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5o
IgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKK3VzaW5nIFBs
YXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kID0gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ7CisjZWxpZiBV
U0UoRElSRUNUMkQpCit1c2luZyBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZCA9IEltYWdlQnVm
ZmVyRGlyZWN0MkRCYWNrZW5kOworI2VsaWYgVVNFKENBSVJPKQordXNpbmcgUGxhdGZvcm1JbWFn
ZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDsKKyNlbmRpZgorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkYmQxMzE2YWUxLi5jNzRlNWU4ZjZhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMC0wMi0wNCAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBJbWFnZUJ1ZmZl
ciBzaGFyZWFibGUgYmFja2VuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNzIzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSByZW1vdGUgSW1hZ2VCdWZmZXIgcHJveHkgd2lsbCBjcmVhdGUgYSBz
aGFyZWFibGUgYmFja2VuZCBpbiB0aGUKKyAgICAgICAgR1BVUHJvY2Vzcy4gVGhlbiBpdCB3aWxs
IGdpdmUgYWNjZXNzIHRvIHRoZSBiYWNrZW5kIHRvIHRoZSByZW1vdGUKKyAgICAgICAgSW1hZ2VC
dWZmZXIgaW4gdGhlIFdlYlByb2Nlc3MgYnkgc2VuZGluZyBhbiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L1JlbmRlcmluZ0JhY2tlbmQvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmg6IEFkZGVkLgorICAg
ICAgICBUaGlzIGlzIHZhcmlhbnQgb2Ygc2hhcmVhYmxlIGhhbmRsZXMgdG8gdGhlIEltYWdlQnVm
ZmVyQmFja2VuZCBkYXRhLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFj
a2VuZC9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgor
ICAgICAgICBUaGUgZmlyc3QgY3JlYXRlIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUg
dGhlIHJlbW90ZSBJbWFnZUJ1ZmZlcgorICAgICAgICBwcm94eSBpbiB0aGUgR1BVUHJvY2Vzcy4g
VGhlIHNlY29uZCBjcmVhdGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHRvIGNyZWF0ZSB0aGUKKyAg
ICAgICAgcmVtb3RlIEltYWdlQnVmZmVyIGluIHRoZSBXZWJQcm9jZXNzLgorCisgICAgICAgIChX
ZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgor
ICAgICAgICBDcmVhdGVzIGFuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB3aGljaCB3aWxsIGJl
IHNlbnQgZnJvbSB0aGUgR1BVUHJvY2VzcworICAgICAgICB0byB0aGUgV2ViUHJvY2Vzcy4KKwor
ICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpnZXRJbWFnZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OnB1dEltYWdlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFj
a2VuZC9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDogQWRkZWQuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1BsYXRmb3JtSW1hZ2VCdWZmZXJT
aGFyZWFibGVCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBEZWZpbmVzIHRoZSBwbGF0Zm9ybSBz
aGFyZWFibGUgSW1hZ2VCdWZmZXJCYWNrZW5kIHR5cGVzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvUmVuZGVyaW5nQmFja2VuZC9jZy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBj
b25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9jZy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDogQWRkZWQuCisgICAgICAgIEJlY2F1
c2UgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhcyB0byBiZSBkZWZpbmVkIGluIFdlYktpdCwg
c2hhcmluZworICAgICAgICB0aGUgSU9TdXJmYWNlIGJhY2tlbmQgaGFzIHRvIGJlIGltcGxlbWVu
dGVkIGluIFdlYktpdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwOgorCiAyMDIwLTAyLTA0ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHRoZSByZW1vdGUg
SW1hZ2VCdWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDE4M2I1ZDU2MDFlLi45YWQyMGMwMGE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CkBAIC0yMjUsNiArMjI1LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2Jl
X2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEJywKICAgICAgICAgJ1dlYktpdDo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcicsCisgICAg
ICAgICdXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZScsCiAgICAgICAgICdXZWJLaXQ6
OkltYWdlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0Nv
bnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKaW5kZXggNTVhZWRlNmE5OTEuLjI0YTE3MmJhNjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTUzOSw2ICs1MzksNyBAQCBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1By
aXZhdGVSZW1vdGUuY3BwCitXZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0Jh
Y2tlbmQvUmVtb3RlSW1hZ2VCdWZmZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNr
ZW5kL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA2NzAxOWNmYjc4Li5l
NGRlNmRiMDU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTUzLDYgKzU1Myw4IEBAIFdl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCiAKIFdlYlByb2Nlc3MvRW50cnlQb2lu
dC9Db2NvYS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQogCitXZWJQ
cm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL2NnL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZC5jcHAKKwogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2VCYW5uZXIuY3BwCiAKIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dL
QnVuZGxlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2YzBhMjAwNjRlMC4uNjVkYmQ3NDM5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA0NCw2ICs0MDQ0LDEy
IEBACiAJCTcyNTA2RDNDMjNFOUY4QjkwMDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI1MDZEM0QyM0U5RjhCOTAwMUU2
RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI1MDZEM0UyM0U5RjhCOTAwMUU2RTBEIC8qIFJlbW90ZUltYWdl
QnVmZmVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcy
NTA2RDQwMjNFQTIxMkUwMDFFNkUwRCAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzI1MDZENDEyM0VBMjEyRjAwMUU2RTBEIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1MDZE
NDMyM0VBMjFBODAwMUU2RTBEIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI1MDZE
NDQyM0VBMjFBOTAwMUU2RTBEIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MjUwNkQ0NTIzRUEyMUQyMDAxRTZFMEQgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjUwNkQ0ODIzRUEyMkI3MDAxRTZF
MEQgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI1NjQ1OUUyM0U4RkYwNzAwQTA2MzJE
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjU2NDU5RjIzRThGRjA3MDBBMDYzMkQgLyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjU2NDVBMDIzRThGRjA3MDBBMDYzMkQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5
MTQsMTAgKzc5MjAsMjQgQEAKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk3MjUwNkQ0MjIzRUEyMTYwMDAxRTZFMEQgLyogY2cgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTcyNTA2RDQ0MjNFQTIxQTkwMDFF
NkUwRCAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovLAorCQkJ
CTcyNTA2RDQzMjNFQTIxQTgwMDFFNkUwRCAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY2c7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQk3MjU2NDU5QzIzRThGRTVDMDBBMDYzMkQgLyogUmVuZGVyaW5nQmFj
a2VuZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzI1
MDZENDIyM0VBMjE2MDAwMUU2RTBEIC8qIGNnICovLAorCQkJCTcyNTA2RDQ1MjNFQTIxRDIwMDFF
NkUwRCAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk3MjU2NDVBNDIzRTkw
N0QxMDBBMDYzMkQgLyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmggKi8sCisJCQkJNzI1MDZENDAy
M0VBMjEyRTAwMUU2RTBEIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAg
Ki8sCisJCQkJNzI1MDZENDEyM0VBMjEyRjAwMUU2RTBEIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oICovLAorCQkJCTcyNTA2RDQ4MjNFQTIyQjcwMDFFNkUwRCAvKiBQbGF0
Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAogCQkJCTcyNTA2RDNBMjNFOUY4
OEMwMDFFNkUwRCAvKiBSZW1vdGVJbWFnZUJ1ZmZlci5jcHAgKi8sCiAJCQkJNzI1MDZEMzkyM0U5
Rjg4QjAwMUU2RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNzI1MDZEM0IyM0U5
Rjg4QzAwMUU2RTBEIC8qIFJlbW90ZUltYWdlQnVmZmVyLm1lc3NhZ2VzLmluICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL0ltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5k
ZXJpbmdCYWNrZW5kL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCmluZGV4IGU2OWRlMjliYjJk
Li5hNTk2MzA2OWY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9S
ZW5kZXJpbmdCYWNrZW5kL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9JbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNp
bmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgPSBW
YXJpYW50PAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE1hY2hTZW5kUmlnaHQsCisjZW5kaWYK
KyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZQorPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5n
QmFja2VuZC9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGU2OWRl
MjliYjJkLi40N2M2ZGVmODU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9SZW5kZXJpbmdCYWNrZW5kL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTAsMCArMSwxMzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGF0YS5oPgor
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CisKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5k
b3cqKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShz
aXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb247CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY29uZmlndXJhdGlv
bi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkgfTsKKyNlbmRp
ZgorICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFj
a2VuZFNpemUsIGNvbmZpZ3VyYXRpb24pOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kPihuZXcgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKHNpemUsIGJhY2tlbmRT
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92
ZShjb250ZXh0KSkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUpCit7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU+KGhhbmRsZSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoV1RGTW92ZShXVEY6OmdldDxTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZT4oaGFuZGxlKSkpOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kPihuZXcgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGxvZ2ljYWxTaXplLCBi
YWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGJpdG1hcCks
IFdURk1vdmUoY29udGV4dCkpKTsKK30KKworSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBi
aXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKKyAgICA6
IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBwaHlzaWNhbFNpemUsIHJl
c29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkKKyAgICAsIG1fYml0bWFwKFdURk1vdmUoYml0bWFw
KSkKKyAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQoreworfQorCitJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdAoreworICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKKyAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisgICAg
cmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZNb3ZlKGhhbmRsZSkpOworfQorCitO
YXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAoreworI2lmIFVTRShDRykKKyAgICByZXR1
cm4gbV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpOworI2VsaWYgVVNFKERJUkVDVDJEKQorICAg
IHJldHVybiBudWxscHRyOworI2VsaWYgVVNFKENBSVJPKQorICAgIHJldHVybiBtX2JpdG1hcC0+
Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisjZW5kaWYKK30KKworUmVmUHRyPEltYWdlPiBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVJ
bWFnZSgpOworfQorCitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjp0b0JHUkFEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjp0b0JHUkFEYXRhKG1fYml0bWFwLT5kYXRhKCkpOworfQorCitSZWZQdHI8SW1hZ2VEYXRh
PiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29u
c3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRJbWFnZURhdGEob3V0cHV0
Rm9ybWF0LCBzcmNSZWN0LCBtX2JpdG1hcC0+ZGF0YSgpKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OnB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKK3sKKyAgICBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBk
ZXN0UG9pbnQsIG1fYml0bWFwLT5kYXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFj
a2VuZC9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRleCBlNjlkZTI5YmIy
ZC4uYTkxMzczOWY4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
UmVuZGVyaW5nQmFja2VuZC9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KKyNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTaGFy
ZWFibGVCaXRtYXA7CisKK2NsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCA6
IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZCB7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7
CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIGNv
bnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSk7CisKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAqbV9jb250ZXh0OyB9
CisKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6
QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tp
bmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2
ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2lu
dCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiYmKTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgQ29sb3JGb3JtYXQgYmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gQ29sb3JGb3JtYXQ6OkJHUkE7IH0KKyNlbmRpZgorCisgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gbV9iaXRtYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dD4gbV9jb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9Q
bGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oCmluZGV4IGU2OWRlMjliYjJkLi5m
YzIzYjBkMzdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5k
ZXJpbmdCYWNrZW5kL1BsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL1BsYXRmb3JtSW1h
Z2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5oIgorCisjaWYgSEFWRShJT1NVUkZBQ0UpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIFBsYXRmb3JtVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2Vu
ZCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDsKKworI2lmIEhBVkUoSU9TVVJG
QUNFKQordXNpbmcgUGxhdGZvcm1BY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2Vu
ZCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDsKKyNlbHNlCit1c2luZyBQ
bGF0Zm9ybUFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kID0gUGxhdGZvcm1V
bmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kOworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9SZW5kZXJpbmdCYWNrZW5kL2NnL0lt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQvY2cvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmNwcAppbmRleCBlNjlkZTI5YmIyZC4uYTViZDcyOGViMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9jZy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9jZy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgSEFWRShJT1NVUkZBQ0UpCisK
KyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKKworc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyog
aG9zdFdpbmRvdykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2Vu
ZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc3VyZmFjZSA9IElPU3Vy
ZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNl
KGNvbG9yU3BhY2UpKTsKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY2dDb250ZXh0ID0gc3VyZmFjZS0+ZW5z
dXJlUGxhdGZvcm1Db250ZXh0KGhvc3RXaW5kb3cpOworICAgIGlmICghY2dDb250ZXh0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQu
Z2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7CisKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZChzaXplLCBiYWNr
ZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKHN1cmZhY2UpKSk7
Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBoYW5kbGUpCit7CisgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hT
ZW5kUmlnaHQ+KGhhbmRsZSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhh
bmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkpOworICAgIGlmICghc3VyZmFj
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZChsb2dpY2FsU2l6ZSwgaW50ZXJuYWxTaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoc3VyZmFjZSkpKTsKK30KKworSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKG1fc3VyZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQorI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvUmVuZGVyaW5nQmFja2VuZC9jZy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvUmVuZGVyaW5nQmFja2Vu
ZC9jZy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRleCBlNjlkZTI5
YmIyZC4uMWUzNzExYTcxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvUmVuZGVyaW5nQmFja2VuZC9jZy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL1JlbmRlcmluZ0JhY2tlbmQv
Y2cvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpZiBIQVZFKElPU1VSRkFDRSkKKwor
I2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2hhcmVhYmxlQml0bWFwOworCitjbGFz
cyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgV2ViQ29yZTo6
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgY29uc3QgV2Vi
Q29yZTo6SG9zdFdpbmRvdyopOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlKTsKKworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB1c2luZyBXZWJD
b3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShJT1NV
UkZBQ0UpCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHAKaW5kZXggYWUwMTYxYWFkOTQuLmI5ZjRkMmE3ZTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
bW90ZVZpZGVvU2FtcGxlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391841</attachid>
            <date>2020-02-27 00:40:13 -0800</date>
            <delta_ts>2020-02-27 07:29:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207233-20200227004012.patch</filename>
            <type>text/plain</type>
            <size>41200</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdmNDJiYWM2M2E5NDg2
ZjU5ZjZkMmNkMDFkOTlmNzNjNGY1Nzc5OC4uNzcwNDlhYTZhZTMyMmJmM2FjZThlYmM0NDFkMmRh
N2ZiOGIxZGVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAyLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEltYWdlQnVmZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIHRoZSBiYXNlIEltYWdlQnVmZmVyQmFj
a2VuZCBmb3IgZWFjaCBwbGF0Zm9ybS4KKyAgICAgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kIGluIFdlYktpdCBuZWVkcyB0byBoYXZlIGFjY2VzcyB0byBiYXNpYworICAgICAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmQgZnVuY3Rpb25hbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBwbGF0
Zm9ybS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg6IEFkZGVkLgorCiAyMDIwLTAyLTI2ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHRo
ZSByZW1vdGUgUmVuZGVyaW5nQmFja2VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxYTliODcwYmQwMjY1NDQ3ZTc5
NTczZjZjZjE3NDFjZjQ4OTcxMTQ0Li42OWU3NTQ3YjUxZWFhZTczOGFkNjY5Yjk5OTJmNGJjZDkw
ODA4MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTAyLTI3ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IElt
YWdlQnVmZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSB3aWxsIGNyZWF0ZSBh
IHNoYXJlYWJsZSBiYWNrZW5kIGluIHRoZSBHUFVQcm9jZXNzLgorICAgICAgICBUaGVuIGl0IHdp
bGwgZ2l2ZSBhY2Nlc3MgdG8gaXRzIGJhY2tlbmQgdG8gUmVtb3RlSW1hZ2VCdWZmZXIgaW4gdGhl
CisgICAgICAgIFdlYlByb2Nlc3MgYnkgc2VuZGluZyBhbiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oOiBBZGRl
ZC4KKyAgICAgICAgVGhpcyBpcyB2YXJpYW50IG9mIHNoYXJlYWJsZSBoYW5kbGVzIHRvIHRoZSBJ
bWFnZUJ1ZmZlckJhY2tlbmQgZGF0YS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6Cisg
ICAgICAgIFRoZSBmaXJzdCBjcmVhdGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHRvIGNyZWF0ZSB0
aGUgYmFja2VuZCBvZiAKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBHUFVQcm9jZXNz
LiBUaGUgc2Vjb25kIGNyZWF0ZSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQKKyAgICAgICAgdG8gY3Jl
YXRlIHRoZSBiYWNrZW5kIG9mIFJlbW90ZUltYWdlQnVmZmVyIGluIHRoZSBXZWJQcm9jZXNzLgor
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgY29uc3QpOgorICAgICAgICBDcmVhdGVzIGFuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB3
aGljaCB3aWxsIGJlIHNlbnQgZnJvbSB0aGUgR1BVUHJvY2VzcworICAgICAgICB0byB0aGUgV2Vi
UHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpn
ZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OnB1dEltYWdlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6IEFkZGVkLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQuaDogQWRkZWQuCisgICAgICAgIERlZmluZXMgdGhlIHBsYXRmb3JtIHNoYXJl
YWJsZSBJbWFnZUJ1ZmZlckJhY2tlbmQgdHlwZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBCZWNhdXNlIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYXMgdG8gYmUgZGVmaW5lZCBpbiBXZWJLaXQsIHNoYXJpbmcKKyAgICAg
ICAgdGhlIElPU3VyZmFjZSBiYWNrZW5kIGhhcyB0byBiZSBpbXBsZW1lbnRlZCBpbiBXZWJLaXQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmNwcDoKKyAgICAgICAgVW5pZmllZCBzb3VyY2VzIGdhcmRlbmluZy4KKwogMjAyMC0wMi0y
NiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAg
IEltcGxlbWVudCB0aGUgcmVtb3RlIFJlbmRlcmluZ0JhY2tlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDZkYjVjZTBmMGQ2OWVhNjg0YTJhMDU3MTQ3OTQ0MDBiMjM5NjQyMjkuLjRkMjA0MzZmOWE5
NjNjYWNmMTY5ODA3NTYyYmRmZjIxYzhmMDljMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTEy
Nyw2ICsxMTI3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtRGlzcGxheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5o
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UZXh0VHJhY2suaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDY1MWIzM2RhNGM4MDU1NTZlMDI3YjI4ZjRkNTQ5ZmNlZTdk
YmU3MmIuLjViMjE1NmJjMDJlMjg0OTc3MmM2YzI4MzkwMjUwNjFmYjE1YTRhZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3
MzUsNiArMTczNSw4IEBACiAJCTUzRTI5RTVGMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0UyOUU1RDE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVy
YXRlZC5oICovOyB9OwogCQk1M0VEM0ZERTE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NH
ZW5lcmF0ZWQuY3BwICovOyB9OwogCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRp
bmdzR2VuZXJhdGVkLmggKi87IH07CisJCTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0NSAvKiBQbGF0
Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VC
dWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNTUwNjQwQjAyNDA3NTg3RTAwQUFFMDQ1IC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5k
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNB
RDIzRTFFNTQ1MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTQ2
NzU3QjFGRDIxMkE5MDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NDY3NTc4MUZEMUZDMUEwMDNCMTBCMCAvKiBJ
bWFnZVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTU1NTBDQjQyMUU5NTVFM0MwMDExMUFBMCAvKiBJbWFnZVR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTUwQ0I0MTFFOTU1RTNDMDAx
MTFBQTAgLyogSW1hZ2VUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yMTM0LDYgKzIxMzYsNyBAQAogCQk3MjRFRDMzMjFBM0E4QjIzMDBG
NUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRN
aW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3Rh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVF
NTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZC
IC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2
aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQy
M0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNFMDBD
QzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJB
QzNBRTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0
MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxODgsNyArMzE5MSw3IEBACiAJCUE3NUU4QjhEMEUxREUy
RDYwMDdGMjQ4MSAvKiBGRUNvbXBvbmVudFRyYW5zZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVFOEI4NTBFMURFMkQ2MDA3RjI0ODEgLyogRkVD
b21wb25lbnRUcmFuc2Zlci5oICovOyB9OwogCQlBNzVFOEI4RjBFMURFMkQ2MDA3RjI0ODEgLyog
RkVDb21wb3NpdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3NUU4Qjg3MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBvc2l0ZS5oICovOyB9OwogCQlB
NzZFNUY3RjEzNUUwRENGMDBBNjk4MzcgLyogUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2RTVGN0UxMzVFMERD
RjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNzc5NzkxQTBENkI5RDBDMDAzODUxQjkg
LyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggKi87IH07CisJCUE3
Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJ
bWFnZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNzc5NzkyOTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTI1MEQ2QjlFNjQwMDM4
NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovOyB9OwogCQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0Qg
LyogVGV4dEV2ZW50SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzdCNDE5RjEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTc3RDAwMTIxMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3RDAwMTExMzNCMEFFQjAwRDY2NThD
IC8qIFRleHRDaGVja2luZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC04NjA3LDYgKzg2MTAsNyBAQAogCQk1M0UyOUU1RDE2N0E4QTE5MDA1ODZE
M0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTNFRDNGREMxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50
ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRp
bmdzR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTA2
NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBGNjY0NTIyQ0E4OUJEMDAwQTM0MTcgLyogU1ZHU2hh
cmVkUHJpbWl0aXZlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHU2hhcmVkUHJpbWl0aXZl
UHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MTIwLDYgKzI1MTI0
LDcgQEAKIAkJCQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgKi8sCiAJ
CQkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLywKIAkJCQk3MkJBQzNB
NjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovLAorCQkJCTU1MDY0
MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oICovLAog
CQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi8sCiAJCQkJ
Q0VFRkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5o
ICovLAogCQkJCTA3Mjg0N0UyMTZFQkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFjay5o
ICovLApAQCAtMzAyODYsNiArMzAyOTEsOCBAQAogCQkJCTMxOEVBRDREMUZBOTEzODAwMDhDRUY4
NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJBMTBCOTIwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5k
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTA2NDBCMDI0MDc1ODdFMDBBQUUwNDUgLyogSW1hZ2VC
dWZmZXJDR0JhY2tlbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyN0E3RjNBMjQwNzhCODQwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDI1Mzk2MzE4Q0U3RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9s
c0J1dHRvbkVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQ2MThCNkI5Qjcw
MDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MzE3NzIsNiArMzE3NzksNyBAQAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0
Zm9ybUV2ZW50RmFjdG9yeU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0
QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTVCRTE5NTFENTRGNUZCMDBERDdDNjggLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4
OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4
OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1
ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
SW1hZ2VCdWZmZXJCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgxMThhZWFlZDBkZDA1NWJjYTYzZjdl
NTMwZjFlOTk4NmVlYmVhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckNHQmFja2VuZC5oIgor
I2VsaWYgVVNFKERJUkVDVDJEKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
LmgiCisjZWxpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
aCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit1c2luZyBQ
bGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZCA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kOworI2VsaWYg
VVNFKERJUkVDVDJEKQordXNpbmcgUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDsKKyNlbGlmIFVTRShDQUlSTykKK3VzaW5nIFBsYXRmb3JtSW1h
Z2VCdWZmZXJCYWNrZW5kID0gSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ7CisjZW5kaWYKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZWVmMDA3ZTc3MGIxOTE4NDIyODhj
MTdjOTRjY2Q0OTk1MGM1ZjNlOC4uM2MzM2MxZmIxMGJlNTRkYzkzMDcyMjY2Nzk0YjNmZGUzZjI3
M2ZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CkBAIC01MzUsNiArNTM1LDcgQEAgV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlv
VHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDVhYmMyY2ZjMWNlNTcz
OTU0YzZjMGJhMTA0ZDUxODQyZDBhYWE3YzAuLjkyN2Y2MGU1ODU3MTVjNDIxYWNlODNmOTU2MzA2
YmM4YTg3NjVmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU1Nyw2ICs1NTcsOCBAQCBX
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQogCiBXZWJQcm9jZXNzL0VudHJ5UG9p
bnQvQ29jb2EvWFBDU2VydmljZS9XZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAorV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmNwcAorCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9WaWRlb0xheWVyUmVtb3Rl
Q29jb2EubW0KIAogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VC
YW5uZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBjZDMxNWZkZWY3NWM1YjNlZWQ0YjI4ZjFhODY1YmRjNzdkY2NiMDM2Li5iZDUy
MWU0MmMzZWU3NzBlYmFlNTZhNTIxYmFiMGZlZTk2YmI4NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwNzQsNiArNDA3NCwxMiBA
QAogCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNv
Z25pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25H
ZXN0dXJlUmVjb2duaXplci5oOyBwYXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2du
aXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE2NzZBNTIyQzYyMzE4MDA3
RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVy
Lm1tOyBwYXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNp
dGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM0MjQwNzg1N0QwMDREMjkz
MSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzUyNDA3ODU3
RjAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzYyNDA3ODhG
MDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzcyNDA3ODhGMDAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjdBN0YzODI0MDc4OEYwMDA0
RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tl
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzkyNDA3ODhGMTAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzI4RTg2RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAv
KiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzcxMSw3ICs3NzE3LDEyIEBACiAJCTU1MDY0MDlDMjQw
NzE1QUEwMEFBRTA0NSAvKiBncmFwaGljcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovLAor
CQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUu
aCAqLywKIAkJCQk1NTA2NDBBNTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVudGlm
aWVyLmggKi8sCisJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCisJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMx
IC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAorCQkJCTcyN0E3RjM4
MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5o
ICovLAogCQkJCTU1MDY0MDlEMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oICovLAogCQkJCTU1MDY0MEEwMjQwNzE5RTEwMEFBRTA0NSAvKiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluICovLApAQCAtODAwOCw2ICs4MDE5LDE1IEBACiAJ
CQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNzI3QTdG
MzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLywKKwkJCQk3MjdBN0YzNTI0MDc4NTdG
MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
IAkJN0E4NDNBMUQyMUU0MUZEOTAwREVGNjYzIC8qIENsYXNzaWZpZXIgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTU5NjMwNjlmNjYxODE4M2QwNzhhNjRjMmRlYWNjMmQ4M2E0Y2RlMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlID0gVmFyaWFudDwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNo
U2VuZFJpZ2h0LAorI2VuZGlmCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUKKz47CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBlOGEyYTNmYzQxYzlkNjNhMTI5NmI5MThkMWRhNDBiZTc4OWIxZGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJTaGFy
ZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGF0YS5oPgorI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktp
dCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CisKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgSW50U2l6ZSBiYWNrZW5k
U2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7CisgICAg
aWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hlZENHQ29s
b3JTcGFjZShjb2xvclNwYWNlKSB9OworI2VuZGlmCisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7Cisg
ICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjb250
ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKSk7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3sKKyAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU+KGhh
bmRsZSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoV1RGTW92ZShXVEY6OmdldDxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oaGFuZGxlKSkpOwor
ICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29u
dGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBXVEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpKTsKK30KKwor
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYg
cGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0NvbnRleHQ+JiYgY29udGV4dCkKKyAgICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5k
KGxvZ2ljYWxTaXplLCBwaHlzaWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkK
KyAgICAsIG1fYml0bWFwKFdURk1vdmUoYml0bWFwKSkKKyAgICAsIG1fY29udGV4dChXVEZNb3Zl
KGNvbnRleHQpKQoreworfQorCitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBj
b25zdAoreworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBtX2JpdG1h
cC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZShXVEZNb3ZlKGhhbmRsZSkpOworfQorCitOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBj
b25zdAoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gbV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29w
eSgpOworI2VsaWYgVVNFKERJUkVDVDJEKQorICAgIHJldHVybiBudWxscHRyOworI2VsaWYgVVNF
KENBSVJPKQorICAgIHJldHVybiBtX2JpdG1hcC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisjZW5k
aWYKK30KKworUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVJbWFnZSgpOworfQorCitWZWN0b3I8dWludDhf
dD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjp0b0JHUkFEYXRhKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhKG1fYml0bWFwLT5k
YXRhKCkpOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpnZXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX2JpdG1hcC0+
ZGF0YSgpKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OnB1
dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFn
ZURhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCkKK3sKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YShpbnB1
dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9pbnQsIG1fYml0bWFwLT5kYXRhKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRhM2UzMDc5ZjJlMDI4NTY5MDdlZjBhY2YyNDQ0YWM3YzBkY2JhODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg+Cisj
aW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
U2hhcmVhYmxlQml0bWFwOworCitjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQgeworICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQpOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
KTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisKKyAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAqbV9jb250ZXh0OyB9CisKKyAgICBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNv
cmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpD
b3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQ
cmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZlY3Rvcjx1aW50
OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdlRGF0YT4g
Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwdXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6
CisgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBoeXNpY2FsU2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
PiYmKTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgQ29sb3JGb3JtYXQgYmFja2Vu
ZENvbG9yRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29sb3JGb3JtYXQ6OkJHUkE7
IH0KKyNlbmRpZgorCisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODQ5YzYwZDM4MjA1MjliNWM4MDViZGFjYTE0NTc2Nzc0N2VjYWIwZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZv
cm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmgiCisKKyNpZiBIQVZFKElPU1VSRkFDRSkKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCA9
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDsKKworI2lmIEhBVkUoSU9TVVJGQUNF
KQordXNpbmcgQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQgPSBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ7CisjZWxzZQordXNpbmcgQWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQgPSBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCYWNrZW5kOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZDczNWJj
ZDNmZmJiZDI2YTM2ZmRmMDJlNjBiY2ExNjY3YmM3N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpZiBIQVZFKElPU1VSRkFD
RSkKKworI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOworCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIEludFNp
emUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2Nh
bGUpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUs
IGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSkpOworICAgIGlmICgh
c3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZXRhaW5QdHI8Q0dDb250
ZXh0UmVmPiBjZ0NvbnRleHQgPSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQobnVsbHB0
cik7CisgICAgaWYgKCFjZ0NvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Q0dDb250ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6
Onplcm8oKSwgYmFja2VuZFNpemUpKTsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIFdURk1vdmUoc3VyZmFjZSkpKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKK3sKKyAgICBpZiAo
IVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSkgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1v
dmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JTcGFjZShj
b2xvclNwYWNlKSk7CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKGxvZ2lj
YWxTaXplLCBpbnRlcm5hbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92
ZShzdXJmYWNlKSkpOworfQorCitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUo
KSBjb25zdAoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUobV9zdXJmYWNl
LT5jcmVhdGVTZW5kUmlnaHQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gSEFWRShJT1NVUkZBQ0UpCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjNiZDhiNDY2OWQ5N2U4YjhmZmVlODhmZjc4YjM2ZTJkMGZiYjQz
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpZiBIQVZFKElPU1VSRkFD
RSkKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3RmL0lzb01h
bGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2hhcmVhYmxlQml0bWFwOwor
CitjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIHsKKyAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworCisgICAg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
IGNvbnN0OworCitwcml2YXRlOgorICAgIHVzaW5nIFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKKyNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCA2Mjlj
ZjM3YWQwZTBiMWZjZThmNjRkOTRjZTY5NDIyODYxZGNkNzRiLi4xZjRmNzQwMTc3NzAzNjA5N2Qw
MzQ0YzExOWNkNDVlY2RiMjMzMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAK
QEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
CisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJMYXllckhvc3Rp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391863</attachid>
            <date>2020-02-27 07:29:36 -0800</date>
            <delta_ts>2020-02-27 08:40:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207233-20200227072935.patch</filename>
            <type>text/plain</type>
            <size>41581</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uNTk4NDNhMDFhMzFmM2FiZDc3ZGM0ZGFmOGZlMjBh
YzlhMmFhMTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAyLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEltYWdlQnVmZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIHRoZSBiYXNlIEltYWdlQnVmZmVyQmFj
a2VuZCBmb3IgZWFjaCBwbGF0Zm9ybS4KKyAgICAgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kIGluIFdlYktpdCBuZWVkcyB0byBoYXZlIGFjY2VzcyB0byBiYXNpYworICAgICAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmQgZnVuY3Rpb25hbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBwbGF0
Zm9ybS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg6IEFkZGVkLgorCiAyMDIwLTAyLTI2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENyZWF0ZSBBdWRpb0Rlc3RpbmF0aW9u
IGluIHRoZSBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OTI1OTc1MTVmNjg1OTA0ZGYxN2JhYTY4
ZmVhOWM3NzgyZTdjODE3Li4xYzZjZmJhYjI5MTYwOTMyNmMyYTE5MmQyNTc5OTIwNjZmZDUxYmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAyLTI3ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEltYWdlQnVm
ZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSB3aWxsIGNyZWF0ZSBhIHNoYXJl
YWJsZSBiYWNrZW5kIGluIHRoZSBHUFVQcm9jZXNzLgorICAgICAgICBUaGVuIGl0IHdpbGwgZ2l2
ZSBhY2Nlc3MgdG8gdGhpcyBiYWNrZW5kIHRvIFJlbW90ZUltYWdlQnVmZmVyIGluIHRoZQorICAg
ICAgICBXZWJQcm9jZXNzIGJ5IHNlbmRpbmcgYW4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaDogQWRkZWQuCisg
ICAgICAgIFRoaXMgaXMgdmFyaWFudCBvZiBzaGFyZWFibGUgaGFuZGxlcyB0byB0aGUgSW1hZ2VC
dWZmZXJCYWNrZW5kIGRhdGEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAg
ICBUaGUgZmlyc3QgY3JlYXRlIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIGJh
Y2tlbmQgb2YgCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgR1BVUHJvY2Vzcy4gVGhl
IHNlY29uZCBjcmVhdGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkCisgICAgICAgIHRvIGNyZWF0ZSB0
aGUgYmFja2VuZCBvZiBSZW1vdGVJbWFnZUJ1ZmZlciBpbiB0aGUgV2ViUHJvY2Vzcy4KKworICAg
ICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNv
bnN0KToKKyAgICAgICAgQ3JlYXRlcyBhbiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgd2hpY2gg
d2lsbCBiZSBzZW50IGZyb20gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgdG8gdGhlIFdlYlByb2Nl
c3MuCisKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Z2V0SW1h
Z2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOiBBZGRlZC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVC
YWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBEZWZpbmVzIHRoZSBwbGF0Zm9ybSBzaGFyZWFibGUg
SW1hZ2VCdWZmZXJCYWNrZW5kIHR5cGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAgQmVjYXVzZSBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFzIHRvIGJlIGRlZmluZWQgaW4gV2ViS2l0LCBzaGFyaW5nCisgICAgICAgIHRo
ZSBJT1N1cmZhY2UgYmFja2VuZCBoYXMgdG8gYmUgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwOgorICAgICAgICBVbmlmaWVkIHNvdXJjZXMgZ2FyZGVuaW5nLgorCiAyMDIwLTAyLTI2
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBbm5vdGF0ZSBt
ZWRpYVR5cGUgd2l0aCBhbiBhdmFpbGFiaWxpdHkgbWFjcm8uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCBkYzEzYThjMDNkOGNmNDVmMjgyMWZjYzZhZTIyODdjYmUwYWZiMzU2Li40OGM3ZTg4OTlhOTE5
NmVmMDRkOGI4MTI5Y2I4MTRmM2NiM2M2YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMzMs
NiArMTEzMyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bURpc3BsYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA5N2UwMGRiMDNhZDBkNWI0N2NmMmI0YWE4MTQyMjYyYTIwMmRh
MWMyLi44Y2NlMTM3ODdkY2EwMzBlNzE0MWQ5NDJiOGVlYzg4OGI0ZjNlODQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM1
LDYgKzE3MzUsOCBAQAogCQk1M0UyOUU1RjE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTNFMjlFNUQxNjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0
ZWQuaCAqLzsgfTsKIAkJNTNFRDNGREUxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0
aW5nc0dlbmVyYXRlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2Vu
ZXJhdGVkLmNwcCAqLzsgfTsKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJu
YWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5oICovOyB9OworCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUwNDUgLyogUGxhdGZv
cm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTU1MDY0MEIwMjQwNzU4N0UwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUQy
M0UxRTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1
M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU0Njc1
N0IxRkQyMTJBOTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTQ2NzU3ODFGRDFGQzFBMDAzQjEwQjAgLyogSW1h
Z2VTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENCNDExRTk1NUUzQzAwMTEx
QUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMjEzNCw2ICsyMTM2LDcgQEAKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVG
MTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWlu
TWF4LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0
RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAv
KiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0
eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNE
Njg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2
ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMz
QUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFD
IC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0zMTkwLDcgKzMxOTMsNyBAQAogCQlBNzVFOEI4RDBFMURFMkQ2
MDA3RjI0ODEgLyogRkVDb21wb25lbnRUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODUwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29t
cG9uZW50VHJhbnNmZXIuaCAqLzsgfTsKIAkJQTc1RThCOEYwRTFERTJENjAwN0YyNDgxIC8qIEZF
Q29tcG9zaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzVFOEI4NzBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuaCAqLzsgfTsKIAkJQTc2
RTVGN0YxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkU1RjdFMTM1RTBEQ0Yw
MEE2OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8q
IEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oICovOyB9OworCQlBNzc5
NzkxQTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1h
Z2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyNTBENkI5RTY0MDAzODUx
QjkgLyogSlNJbWFnZURhdGEuaCAqLzsgfTsKIAkJQTc3QjQxQTAxMkU2NzVBOTAwNTQzNDNEIC8q
IFRleHRFdmVudElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0VHlw
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3
N0QwMDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0QwMDExMTMzQjBBRUIwMEQ2NjU4QyAv
KiBUZXh0Q2hlY2tpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtODYwOSw2ICs4NjEyLDcgQEAKIAkJNTNFMjlFNUQxNjdBOEExOTAwNTg2RDNE
IC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVy
bmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTUwNjQw
QUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwRjY2NDUyMkNBODlCRDAwMEEzNDE3IC8qIFNWR1NoYXJl
ZFByaW1pdGl2ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1NoYXJlZFByaW1pdGl2ZVBy
b3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTEyMyw2ICsyNTEyNyw3
IEBACiAJCQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAogCQkJ
CUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi8sCiAJCQkJNzJCQUMzQTYy
M0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk1NTA2NDBB
RDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywKIAkJ
CQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAogCQkJCUNF
RUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAq
LywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAq
LywKQEAgLTMwMjkxLDYgKzMwMjk2LDggQEAKIAkJCQkzMThFQUQ0RDFGQTkxMzgwMDA4Q0VGODYg
LyogSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyQTEwQjkyMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTUwNjQwQjAyNDA3NTg3RTAwQUFFMDQ1IC8qIEltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDNFMjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQyNTM5NjMxOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJvbHNC
dXR0b25FbGVtZW50TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAxOTJENjE4QjZCOUI3MDA3
RkM3QTEgLyogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMx
Nzc4LDYgKzMxNzg1LDcgQEAKIAkJCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMw
MDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1
QkUxOTUxRDU0RjVGQjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTUwNjQwQUYyNDA3NTgyRDAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNr
ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxh
dGZvcm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNTYyRjk2MTE1NzNGODhG
MDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU0NEY3ODkx
NUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MTE4YWVhZWQwZGQwNTViY2E2M2Y3ZTUz
MGYxZTk5ODZlZWJlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCIKKyNl
bGlmIFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5o
IgorI2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgi
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENHKQordXNpbmcgUGxh
dGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlckNHQmFja2VuZDsKKyNlbGlmIFVT
RShESVJFQ1QyRCkKK3VzaW5nIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kID0gSW1hZ2VCdWZm
ZXJEaXJlY3QyREJhY2tlbmQ7CisjZWxpZiBVU0UoQ0FJUk8pCit1c2luZyBQbGF0Zm9ybUltYWdl
QnVmZmVyQmFja2VuZCA9IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRjY2Y0ZmFmODk4ZDA3NzE4N2U4OGQ0
NDAwNDYyM2QyMDE3MjUxZWUuLjMwZDU1YjQ1ZDgzM2RlYzIzZjdhNjAwZjI4M2ZjOTM1OThhZDli
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dApAQCAtNTM0LDYgKzUzNCw3IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1Ry
YWNrUHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBiMDA3MGYyZDA2MWQzZmRl
ODM1MjU0ZmY0MGFmNjYwMTc5NjY3YmYyLi4zOTRiZWNkNTQ1NTI3Nzg4MzdiZDFiYTNiNjg4N2Ey
NTg0YmQ5MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01NTcsNiArNTU3LDggQEAgV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KIAogV2ViUHJvY2Vzcy9FbnRyeVBvaW50
L0NvY29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKK1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZC5jcHAKKwogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9MYXllclJlbW90ZUNv
Y29hLm1tCiAKIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlQmFu
bmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZTVmYTE5MTRjMjIzNzEwYjdhMDE4MzJjMTA2YWU4OGU0NDM4YTFhNy4uMGM5N2Ix
NTgzNjRhNzU2ZmEwMGJkOWMwYzA3NmFhZWQ3YmU1YjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDgwLDYgKzQwODAsMTIgQEAK
IAkJNzFBNjc2QTQyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2du
aXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2Vz
dHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2
Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5t
bTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJzaXRl
U2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEg
LyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM1MjQwNzg1N0Yw
MDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM2MjQwNzg4RjAw
MDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkz
MSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzgyNDA3ODhGMDAwNEQy
OTMxIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkz
MSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyog
V2ViQ29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3MzUsNyArNzc0MSwxMiBAQAogCQk1NTA2NDA5QzI0MDcx
NUFBMDBBQUUwNDUgLyogZ3JhcGhpY3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKKwkJ
CQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgg
Ki8sCiAJCQkJNTUwNjQwQTUyNDA3MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmll
ci5oICovLAorCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwICovLAorCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKKwkJCQk3MjdBN0YzODI0
MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAq
LywKIAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUwNDUgLyogUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiAqLywKQEAgLTgwMzIsNiArODA0MywxNSBAQAogCQkJ
bmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTcyN0E3RjMz
MjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgKi8sCisJCQkJNzI3QTdGMzUyNDA3ODU3RjAw
NEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oICovLAorCQkJ
KTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CTdBODQzQTFEMjFFNDFGRDkwMERFRjY2MyAvKiBDbGFzc2lmaWVyICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE1OTYzMDY5ZjY2MTgxODNkMDc4YTY0YzJkZWFjYzJkODNhNGNkZTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlNoYXJl
YWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisjaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSA9IFZhcmlhbnQ8CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNl
bmRSaWdodCwKKyNlbmRpZgorICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlCis+OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZThhMmEzZmM0MWM5ZDYzYTEyOTZiOTE4ZDFkYTQwYmU3ODliMWRhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KKyNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQg
ewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOworCitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIEludFNpemUgYmFja2VuZFNp
emUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIGlm
IChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9y
U3BhY2UoY29sb3JTcGFjZSkgfTsKKyNlbmRpZgorICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24pOworICAg
IGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4
dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSkpOworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCit7CisgICAg
aWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5k
bGUpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KFdURk1vdmUoV1RGOjpnZXQ8U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU+KGhhbmRsZSkpKTsKKyAg
ICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRl
eHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKSk7Cit9CisKK0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBo
eXNpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhp
Y3NDb250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZChs
b2dpY2FsU2l6ZSwgcGh5c2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCisg
ICAgLCBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShj
b250ZXh0KSkKK3sKK30KKworSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29u
c3QKK3sKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAgbV9iaXRtYXAt
PmNyZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoV1RGTW92ZShoYW5kbGUpKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3QKK3sKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHko
KTsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbGlmIFVTRShD
QUlSTykKKyAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOworI2VuZGlm
Cit9CisKK1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpj
b3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAorewor
ICAgIHJldHVybiBtX2JpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6dG9CR1JBRGF0YShtX2JpdG1hcC0+ZGF0
YSgpKTsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVy
QmFja2VuZDo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9iaXRtYXAtPmRh
dGEoKSk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpwdXRJ
bWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VE
YXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQpCit7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoaW5wdXRG
b3JtYXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBtX2JpdG1hcC0+ZGF0YSgpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YTNlMzA3OWYyZTAyODU2OTA3ZWYwYWNmMjQ0NGFjN2MwZGNiYTgxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNo
YXJlYWJsZUJpdG1hcDsKKworY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kIHsKKyAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7
CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworCisgICAg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
IGNvbnN0OworCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gKm1fY29udGV4dDsgfQorCisgICAgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHIgY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3Jl
OjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29w
eUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJl
c2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBWZWN0b3I8dWludDhf
dD4gdG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZURhdGE+IGdl
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcHV0SW1h
Z2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0
IFdlYkNvcmU6OkltYWdlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQpIG92ZXJyaWRlOworCitwcml2YXRlOgor
ICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwaHlzaWNhbFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4m
Jik7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIENvbG9yRm9ybWF0IGJhY2tlbmRD
b2xvckZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbG9yRm9ybWF0OjpCR1JBOyB9
CisjZW5kaWYKKworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9y
bUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg0OWM2MGQzODIwNTI5YjVjODA1YmRhY2ExNDU3Njc3NDdlY2FiMGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3Jt
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5oIgorCisjaWYgSEFWRShJT1NVUkZBQ0UpCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3VzaW5nIFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQgPSBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ7CisKKyNpZiBIQVZFKElPU1VSRkFDRSkK
K3VzaW5nIEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kID0gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOworI2Vsc2UKK3VzaW5nIEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVh
YmxlQmFja2VuZDsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2Q3MzViY2Qz
ZmZiYmQyNmEzNmZkZjAyZTYwYmNhMTY2N2JjNzdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgSEFWRShJT1NVUkZBQ0Up
CisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKKworc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxl
KTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBi
YWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpKTsKKyAgICBpZiAoIXN1
cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmV0YWluUHRyPENHQ29udGV4
dFJlZj4gY2dDb250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KG51bGxwdHIp
OworICAgIGlmICghY2dDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENH
Q29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6
ZXJvKCksIGJhY2tlbmRTaXplKSk7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBXVEZNb3ZlKHN1cmZhY2UpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IElu
dFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCit7CisgICAgaWYgKCFX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29s
b3JTcGFjZSkpOworICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZChsb2dpY2Fs
U2l6ZSwgaW50ZXJuYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUo
c3VyZmFjZSkpKTsKK30KKworSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKG1fc3VyZmFjZS0+
Y3JlYXRlU2VuZFJpZ2h0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEhBVkUoSU9TVVJGQUNFKQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzYmQ4YjQ2NjlkOTdlOGI4ZmZlZTg4ZmY3OGIzNmUyZDBmYmI0M2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgSEFWRShJT1NVUkZBQ0Up
CisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcDsKKwor
Y2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIFdlYkNv
cmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworCisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKworICAgIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICB1c2luZyBXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0UpCisjZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IGEx
NjA5ZTBhNjY1YTYwMjAzNTU5NWIwZjkwMjAxZWM0NTUxYWM0ZmQuLjlhY2ExY2VmNTIwM2ZkOWNl
MDc4ZTBhNzFlODkzYTQxMjcxMGVmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIgog
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
aXZhdGUuY3BwCmluZGV4IGQ4YWZmOTBiZTJhMDIzMWU4NzI2ZGNlMzFkZDE2ZGVkNTNkZWI4YzYu
LjY5NjgwZjI0ZjgwZGVhOTM3NDI5OTUyOWZlOWY2Njc3YTEyY2RjZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VzLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391880</attachid>
            <date>2020-02-27 08:40:06 -0800</date>
            <delta_ts>2020-02-27 08:52:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207233-20200227084005.patch</filename>
            <type>text/plain</type>
            <size>42252</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uNTk4NDNhMDFhMzFmM2FiZDc3ZGM0ZGFmOGZlMjBh
YzlhMmFhMTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAyLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEltYWdlQnVmZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIHRoZSBiYXNlIEltYWdlQnVmZmVyQmFj
a2VuZCBmb3IgZWFjaCBwbGF0Zm9ybS4KKyAgICAgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kIGluIFdlYktpdCBuZWVkcyB0byBoYXZlIGFjY2VzcyB0byBiYXNpYworICAgICAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmQgZnVuY3Rpb25hbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBwbGF0
Zm9ybS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg6IEFkZGVkLgorCiAyMDIwLTAyLTI2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENyZWF0ZSBBdWRpb0Rlc3RpbmF0aW9u
IGluIHRoZSBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OTI1OTc1MTVmNjg1OTA0ZGYxN2JhYTY4
ZmVhOWM3NzgyZTdjODE3Li5mZWUxOGJkMTViNDU1MTVmMjcxOGM3Zjk3ODMxOGQ4NTk0ZDE3YWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIwLTAyLTI3ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEltYWdlQnVm
ZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSB3aWxsIGNyZWF0ZSBhIHNoYXJl
YWJsZSBiYWNrZW5kIGluIHRoZSBHUFVQcm9jZXNzLgorICAgICAgICBUaGVuIGl0IHdpbGwgZ2l2
ZSBhY2Nlc3MgdG8gdGhpcyBiYWNrZW5kIHRvIFJlbW90ZUltYWdlQnVmZmVyIGluIHRoZQorICAg
ICAgICBXZWJQcm9jZXNzIGJ5IHNlbmRpbmcgYW4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaDogQWRkZWQuCisg
ICAgICAgIFRoaXMgaXMgdmFyaWFudCBvZiBzaGFyZWFibGUgaGFuZGxlcyB0byB0aGUgSW1hZ2VC
dWZmZXJCYWNrZW5kIGRhdGEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAg
ICBUaGUgZmlyc3QgY3JlYXRlIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIGJh
Y2tlbmQgb2YgCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgR1BVUHJvY2Vzcy4gVGhl
IHNlY29uZCBjcmVhdGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkCisgICAgICAgIHRvIGNyZWF0ZSB0
aGUgYmFja2VuZCBvZiBSZW1vdGVJbWFnZUJ1ZmZlciBpbiB0aGUgV2ViUHJvY2Vzcy4KKworICAg
ICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNv
bnN0KToKKyAgICAgICAgQ3JlYXRlcyBhbiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgd2hpY2gg
d2lsbCBiZSBzZW50IGZyb20gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgdG8gdGhlIFdlYlByb2Nl
c3MuCisKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Z2V0SW1h
Z2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOiBBZGRlZC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVC
YWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBEZWZpbmVzIHRoZSBwbGF0Zm9ybSBzaGFyZWFibGUg
SW1hZ2VCdWZmZXJCYWNrZW5kIHR5cGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAgQmVjYXVzZSBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFzIHRvIGJlIGRlZmluZWQgaW4gV2ViS2l0LCBzaGFyaW5nCisgICAgICAgIHRo
ZSBJT1N1cmZhY2UgYmFja2VuZCBoYXMgdG8gYmUgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgVW5pZmllZCBzb3VyY2VzIGdhcmRlbmluZy4KKwogMjAyMC0wMi0yNiAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQW5ub3RhdGUgbWVkaWFU
eXBlIHdpdGggYW4gYXZhaWxhYmlsaXR5IG1hY3JvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZGMx
M2E4YzAzZDhjZjQ1ZjI4MjFmY2M2YWUyMjg3Y2JlMGFmYjM1Ni4uNDhjN2U4ODk5YTkxOTZlZjA0
ZDhiODEyOWNiODE0ZjNjYjNjNmE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTMzLDYgKzEx
MzMsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0dGVybi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRl
eHRUcmFjay5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOTdlMDBkYjAzYWQwZDViNDdjZjJiNGFhODE0MjI2MmEyMDJkYTFjMi4u
OGNjZTEzNzg3ZGNhMDMwZTcxNDFkOTQyYjhlZWM4ODhiNGYzZTg0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTczNSw2ICsx
NzM1LDggQEAKIAkJNTNFMjlFNUYxNjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFsU2V0dGluZ3NH
ZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRTI5RTVEMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmgg
Ki87IH07CiAJCTUzRUQzRkRFMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NH
ZW5lcmF0ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNFRDNGREMxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5jcHAgKi87IH07CiAJCTUzRUQzRkRGMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0
dGluZ3NHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRUQzRkREMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuaCAqLzsgfTsKKwkJNTUwNjQwQUYyNDA3NTgyRDAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1NTA2NDBCMDI0MDc1ODdFMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FEMjNFMUU1
NDUwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1NDY3NTdCMUZE
MjEyQTkwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291
cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTU1MENCNDIxRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NTBDQjQxMUU5NTVFM0MwMDExMUFBMCAv
KiBJbWFnZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTIxMzQsNiArMjEzNiw3IEBACiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAv
KiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5o
ICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3
RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzI3QTdGM0EyNDA3OEI4NDAwNEQyOTMxIC8qIEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzJCQUMzQUIyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
OTlCQzY3MjNENkE1MzIwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NDIzRDY4NkE2
MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAv
KiBSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQkFDM0FFMjNF
MUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJ
bWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMzE5MCw3ICszMTkzLDcgQEAKIAkJQTc1RThCOEQwRTFERTJENjAwN0Yy
NDgxIC8qIEZFQ29tcG9uZW50VHJhbnNmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4Qjg1MEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBvbmVu
dFRyYW5zZmVyLmggKi87IH07CiAJCUE3NUU4QjhGMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBv
c2l0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1
RThCODcwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9zaXRlLmggKi87IH07CiAJCUE3NkU1RjdG
MTM1RTBEQ0YwMEE2OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzZFNUY3RTEzNUUwRENGMDBBNjk4
MzcgLyogUmVuZGVyZWREb2N1bWVudE1hcmtlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFn
ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
Nzk3OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLzsgfTsKKwkJQTc3OTc5MUEw
RDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3
Nzk3OTI5MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MjUwRDZCOUU2NDAwMzg1MUI5IC8q
IEpTSW1hZ2VEYXRhLmggKi87IH07CiAJCUE3N0I0MUEwMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0
RXZlbnRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3N0I0MTlGMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0RXZlbnRJbnB1dFR5cGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzdEMDAx
MjEzM0IwQUVCMDBENjY1OEMgLyogVGV4dENoZWNraW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdEMDAxMTEzM0IwQUVCMDBENjY1OEMgLyogVGV4
dENoZWNraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTg2MDksNiArODYxMiw3IEBACiAJCTUzRTI5RTVEMTY3QThBMTkwMDU4NkQzRCAvKiBJ
bnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQk1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNl
dHRpbmdzR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzRUQzRkREMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFNldHRp
bmdzR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1MDY0MEFEMjQw
NzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFs
aWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1
YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCTU1MEY2NjQ1MjJDQTg5QkQwMDBBMzQxNyAvKiBTVkdTaGFyZWRQcmlt
aXRpdmVQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTaGFyZWRQcmltaXRpdmVQcm9wZXJ0
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUxMjMsNiArMjUxMjcsNyBAQAog
CQkJCUE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZB
NkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAogCQkJCTcyQkFDM0E2MjNFMTcz
MjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8sCisJCQkJNTUwNjQwQUQyNDA3
NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8sCiAJCQkJMDU2
MkY5NjAxNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3
QjE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCiAJ
CQkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8sCkBA
IC0zMDI5MSw2ICszMDI5Niw4IEBACiAJCQkJMzE4RUFENEQxRkE5MTM4MDAwOENFRjg2IC8qIElt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkExMEI5MjBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTU1MDY0MEIwMjQwNzU4N0UwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlckNH
QmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI3QTdGM0EyNDA3OEI4NDAwNEQyOTMxIC8q
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRTIx
REQyMTgzNDQ0QTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJEMjUzOTYzMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9u
RWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwMTkyRDYxOEI2QjlCNzAwN0ZDN0Ex
IC8qIEltYWdlQ29udHJvbHNSb290RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTc3OCw2
ICszMTc4NSw3IEBACiAJCQkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZl
bnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZE
QkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1
MUQ1NEY1RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDU2MkY5NjExNTczRjg4RjAwMzFD
QTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NDRGNzg5MTVDRkIy
QTgwMEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1
ZmZlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODExOGFlYWVkMGRkMDU1YmNhNjNmN2U1MzBmMWU5
OTg2ZWViZWE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ0dCYWNrZW5kLmgiCisjZWxpZiBV
U0UoRElSRUNUMkQpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaCIKKyNl
bGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oIgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKK3VzaW5nIFBsYXRmb3Jt
SW1hZ2VCdWZmZXJCYWNrZW5kID0gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ7CisjZWxpZiBVU0UoRElS
RUNUMkQpCit1c2luZyBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZCA9IEltYWdlQnVmZmVyRGly
ZWN0MkRCYWNrZW5kOworI2VsaWYgVVNFKENBSVJPKQordXNpbmcgUGxhdGZvcm1JbWFnZUJ1ZmZl
ckJhY2tlbmQgPSBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDsKKyNlbmRpZgorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBkY2NmNGZhZjg5OGQwNzcxODdlODhkNDQwMDQ2
MjNkMjAxNzI1MWVlLi4zMGQ1NWI0NWQ4MzNkZWMyM2Y3YTYwMGYyODNmYzkzNTk4YWQ5YjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKQEAgLTUzNCw2ICs1MzQsNyBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01l
ZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAogV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1By
aXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjAwNzBmMmQwNjFkM2ZkZTgzNTI1
NGZmNDBhZjY2MDE3OTY2N2JmMi4uMzk0YmVjZDU0NTUyNzc4ODM3YmQxYmEzYjY4ODdhMjU4NGJk
OTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTU3LDYgKzU1Nyw4IEBAIFdlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCiAKIFdlYlByb2Nlc3MvRW50cnlQb2ludC9Db2Nv
YS9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbQogCitXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwCisKIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5t
bQogCiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUJhbm5lci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGU1ZmExOTE0YzIyMzcxMGI3YTAxODMyYzEwNmFlODhlNDQzOGExYTcuLjBjOTdiMTU4MzY0
YTc1NmZhMDBiZDljMGMwNzZhYWVkN2JlNWI2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA4MCw2ICs0MDgwLDEyIEBACiAJCTcx
QTY3NkE0MjJDNjIzMTgwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVS
ZWNvZ25pemVyLmg7IHBhdGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQTY3NkE1MjJDNjIzMTgwMDdENjI5NSAv
KiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHBh
dGggPSBpb3MvV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MUZCODEwQTIyNjA2MjdBMDAzMjM2NzcgLyogV2Vic2l0ZVNpbXVs
YXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjdBN0YzNTI0MDc4NTdGMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjdBN0YzNzI0MDc4OEYwMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM4MjQwNzg4RjAwMDREMjkzMSAv
KiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNv
bG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThE
MkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NzM1LDcgKzc3NDEsMTIgQEAKIAkJNTUwNjQwOUMyNDA3MTVBQTAw
QUFFMDQ1IC8qIGdyYXBoaWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk3MjdBN0YzMzI0MDc4NTI3MDA0RDI5MzEgLyogY29jb2EgKi8sCisJCQkJNzI3
QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAog
CQkJCTU1MDY0MEE1MjQwNzFDQzAwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAq
LywKKwkJCQk3MjdBN0YzNzI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcCAqLywKKwkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCisJCQkJNzI3QTdGMzgyNDA3ODhG
MDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8sCiAJ
CQkJNTUwNjQwOUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
ICovLAogCQkJCTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmggKi8sCiAJCQkJNTUwNjQwQTAyNDA3MTlFMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW4gKi8sCkBAIC04MDMyLDYgKzgwNDMsMTUgQEAKIAkJCW5hbWUg
PSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3MjdBN0YzMzI0MDc4
NTI3MDA0RDI5MzEgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTcyN0E3RjM0MjQwNzg1N0QwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovLAorCQkJCTcyN0E3RjM1MjQwNzg1N0YwMDREMjkz
MSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLywKKwkJCSk7CisJ
CQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk3QTg0
M0ExRDIxRTQxRkQ5MDBERUY2NjMgLyogQ2xhc3NpZmllciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNTk2MzA2OWY2NjE4MTgzZDA3OGE2NGMyZGVhY2MyZDgzYTRjZGUzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgPSBWYXJpYW50PAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE1hY2hTZW5kUmln
aHQsCisjZW5kaWYKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZQorPjsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU4
YTJhM2ZjNDFjOWQ2M2ExMjk2YjkxOGQxZGE0MGJlNzg5YjFkYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEYXRhLmg+CisjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKKworc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0g
Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBpZiAoYmFj
a2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNl
KGNvbG9yU3BhY2UpIH07CisjZW5kaWYKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKTsKKyAgICBpZiAo
IWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRleHQgPSBi
aXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBX
VEZNb3ZlKGJpdG1hcCksIFdURk1vdmUoY29udGV4dCkpKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQoreworICAgIGlmICgh
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oaGFuZGxlKSkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShXVEZN
b3ZlKFdURjo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUpKSk7CisgICAgaWYg
KCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjb250ZXh0ID0g
Yml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSkpOworfQorCitJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBwaHlzaWNh
bFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmIGJpdG1hcCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29u
dGV4dD4mJiBjb250ZXh0KQorICAgIDogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQobG9naWNh
bFNpemUsIHBoeXNpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKQorICAgICwg
bV9iaXRtYXAoV1RGTW92ZShiaXRtYXApKQorICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4
dCkpCit7Cit9CisKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0Cit7
CisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOworICAgIG1fYml0bWFwLT5jcmVh
dGVIYW5kbGUoaGFuZGxlKTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKFdU
Rk1vdmUoaGFuZGxlKSk7Cit9CisKK05hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0Cit7
CisjaWYgVVNFKENHKQorICAgIHJldHVybiBtX2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCk7Cisj
ZWxpZiBVU0UoRElSRUNUMkQpCisgICAgcmV0dXJuIG51bGxwdHI7CisjZWxpZiBVU0UoQ0FJUk8p
CisgICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyNlbmRpZgorfQor
CitSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUltYWdlKCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OnRvQkdSQURhdGEoKSBjb25zdAoreworICAg
IHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdSQURhdGEobV9iaXRtYXAtPmRhdGEoKSk7
Cit9CisKK1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fYml0bWFwLT5kYXRhKCkp
OworfQorCit2b2lkIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6cHV0SW1hZ2VE
YXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IEltYWdlRGF0YSYg
aW1hZ2VEYXRhLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50KQoreworICAgIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0SW1hZ2VEYXRhKGlucHV0Rm9ybWF0
LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgbV9iaXRtYXAtPmRhdGEoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGEzZTMwNzlmMmUwMjg1NjkwN2VmMGFjZjI0NDRhYzdjMGRjYmE4MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KKyNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTaGFyZWFi
bGVCaXRtYXA7CisKK2NsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCA6IHB1
YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZCB7CisgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7Citw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworCisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKworICAgIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25z
dDsKKworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KKworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRy
IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
PiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNr
aW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZl
UmVzb2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRv
QkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFn
ZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHB1dEltYWdlRGF0
YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJD
b3JlOjpJbWFnZURhdGEmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwor
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBDb2xvckZvcm1hdCBiYWNrZW5kQ29sb3JG
b3JtYXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDb2xvckZvcm1hdDo6QkdSQTsgfQorI2Vu
ZGlmCisKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NDljNjBkMzgyMDUyOWI1YzgwNWJkYWNhMTQ1NzY3NzQ3ZWNhYjBkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
QnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuaCIKKworI2lmIEhBVkUoSU9TVVJGQUNFKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit1c2luZyBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kID0gSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOworCisjaWYgSEFWRShJT1NVUkZBQ0UpCit1c2lu
ZyBBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCA9IEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZDsKKyNlbHNlCit1c2luZyBBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyU2hhcmVhYmxlQmFja2VuZCA9IFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJh
Y2tlbmQ7CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNkNzM1YmNkM2ZmYmJk
MjZhMzZmZGYwMmU2MGJjYTE2NjdiYzc3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmNwcApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2lmIEhBVkUoSU9TVVJGQUNFKQorCisj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CisKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgSW50U2l6ZSBiYWNr
ZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSk7Cisg
ICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2Vu
ZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKSk7CisgICAgaWYgKCFzdXJmYWNl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+
IGNnQ29udGV4dCA9IHN1cmZhY2UtPmVuc3VyZVBsYXRmb3JtQ29udGV4dChudWxscHRyKTsKKyAg
ICBpZiAoIWNnQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDR0NvbnRl
eHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygp
LCBiYWNrZW5kU2l6ZSkpOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KG5ldyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgV1RGTW92ZShzdXJmYWNlKSkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXpl
JiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQoreworICAgIGlmICghV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBh
dXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6
OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpKTsKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ+KG5ldyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQobG9naWNhbFNpemUs
IGludGVybmFsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKHN1cmZh
Y2UpKSk7Cit9CisKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShtX3N1cmZhY2UtPmNyZWF0
ZVNlbmRSaWdodCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBI
QVZFKElPU1VSRkFDRSkKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yM2JkOGI0NjY5ZDk3ZThiOGZmZWU4OGZmNzhiMzZlMmQwZmJiNDNlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorI2lmIEhBVkUoSU9TVVJGQUNFKQorCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaD4KKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTaGFyZWFibGVCaXRtYXA7CisKK2NsYXNz
IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgaW50ZXJuYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CisKKyAgICBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgdXNpbmcgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFKQorI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCBhMTYwOWUw
YTY2NWE2MDIwMzU1OTViMGY5MDIwMWVjNDU1MWFjNGZkLi45YWNhMWNlZjUyMDNmZDljZTA3OGUw
YTcxZTg5M2E0MTI3MTBlZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcAppbmRleCBkOGFmZjkwYmUyYTAyMzFlODcyNmRjZTMxZGQxNmRlZDUzZGViOGM2Li42OTY4
MGYyNGY4MGRlYTkzNzQyOTk1MjlmZTlmNjY3N2ExMmNkY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUmVjb3JkZXJNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBiZmJjZTYyM2VjMmM4NWM3NmQz
YTIyYWYzN2Q2MTZkOTAxZWM3ODM1Li5jY2I4MzNjZjc4ZDA5YWQyOTljNzBiMjIyYjljZTUwMTc5
NjZjODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzksOSArMzksOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYktpdCB7Cit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVmPFdlYlNvY2tldENoYW5uZWw+IFdlYlNvY2tl
dENoYW5uZWw6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGll
bnQmIGNsaWVudCkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391882</attachid>
            <date>2020-02-27 08:52:56 -0800</date>
            <delta_ts>2020-02-27 09:11:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207233-20200227085255.patch</filename>
            <type>text/plain</type>
            <size>43158</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uNTk4NDNhMDFhMzFmM2FiZDc3ZGM0ZGFmOGZlMjBh
YzlhMmFhMTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAyLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEltYWdlQnVmZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIHRoZSBiYXNlIEltYWdlQnVmZmVyQmFj
a2VuZCBmb3IgZWFjaCBwbGF0Zm9ybS4KKyAgICAgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kIGluIFdlYktpdCBuZWVkcyB0byBoYXZlIGFjY2VzcyB0byBiYXNpYworICAgICAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmQgZnVuY3Rpb25hbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBwbGF0
Zm9ybS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg6IEFkZGVkLgorCiAyMDIwLTAyLTI2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENyZWF0ZSBBdWRpb0Rlc3RpbmF0aW9u
IGluIHRoZSBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OTI1OTc1MTVmNjg1OTA0ZGYxN2JhYTY4
ZmVhOWM3NzgyZTdjODE3Li5lNWFiNmM3MDgyZjE0Y2IyYWIwMDkzNjEzY2E1NDBhMTJlMzAwMTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTAyLTI3ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEltYWdlQnVm
ZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSB3aWxsIGNyZWF0ZSBhIHNoYXJl
YWJsZSBiYWNrZW5kIGluIHRoZSBHUFVQcm9jZXNzLgorICAgICAgICBUaGVuIGl0IHdpbGwgZ2l2
ZSBhY2Nlc3MgdG8gdGhpcyBiYWNrZW5kIHRvIFJlbW90ZUltYWdlQnVmZmVyIGluIHRoZQorICAg
ICAgICBXZWJQcm9jZXNzIGJ5IHNlbmRpbmcgYW4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaDogQWRkZWQuCisg
ICAgICAgIFRoaXMgaXMgdmFyaWFudCBvZiBzaGFyZWFibGUgaGFuZGxlcyB0byB0aGUgSW1hZ2VC
dWZmZXJCYWNrZW5kIGRhdGEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAg
ICBUaGUgZmlyc3QgY3JlYXRlIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIGJh
Y2tlbmQgb2YgCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgR1BVUHJvY2Vzcy4gVGhl
IHNlY29uZCBjcmVhdGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkCisgICAgICAgIHRvIGNyZWF0ZSB0
aGUgYmFja2VuZCBvZiBSZW1vdGVJbWFnZUJ1ZmZlciBpbiB0aGUgV2ViUHJvY2Vzcy4KKworICAg
ICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNv
bnN0KToKKyAgICAgICAgQ3JlYXRlcyBhbiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgd2hpY2gg
d2lsbCBiZSBzZW50IGZyb20gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgdG8gdGhlIFdlYlByb2Nl
c3MuCisKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Z2V0SW1h
Z2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOiBBZGRlZC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVC
YWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBEZWZpbmVzIHRoZSBwbGF0Zm9ybSBzaGFyZWFibGUg
SW1hZ2VCdWZmZXJCYWNrZW5kIHR5cGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAgQmVjYXVzZSBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFzIHRvIGJlIGRlZmluZWQgaW4gV2ViS2l0LCBzaGFyaW5nCisgICAgICAgIHRo
ZSBJT1N1cmZhY2UgYmFja2VuZCBoYXMgdG8gYmUgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgx
MS5oOgorICAgICAgICBVbmlmaWVkIHNvdXJjZXMgZ2FyZGVuaW5nLgorCiAyMDIwLTAyLTI2ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBbm5vdGF0ZSBtZWRp
YVR5cGUgd2l0aCBhbiBhdmFpbGFiaWxpdHkgbWFjcm8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBk
YzEzYThjMDNkOGNmNDVmMjgyMWZjYzZhZTIyODdjYmUwYWZiMzU2Li40OGM3ZTg4OTlhOTE5NmVm
MDRkOGI4MTI5Y2I4MTRmM2NiM2M2YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMzMsNiAr
MTEzMyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURp
c3BsYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
VGV4dFRyYWNrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5N2UwMGRiMDNhZDBkNWI0N2NmMmI0YWE4MTQyMjYyYTIwMmRhMWMy
Li44Y2NlMTM3ODdkY2EwMzBlNzE0MWQ5NDJiOGVlYzg4OGI0ZjNlODQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM1LDYg
KzE3MzUsOCBAQAogCQk1M0UyOUU1RjE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNFMjlFNUQxNjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQu
aCAqLzsgfTsKIAkJNTNFRDNGREUxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJh
dGVkLmNwcCAqLzsgfTsKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxT
ZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dl
bmVyYXRlZC5oICovOyB9OworCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUwNDUgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
QmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU1MDY0MEIwMjQwNzU4N0UwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUQyM0Ux
RTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU0Njc1N0Ix
RkQyMTJBOTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTQ2NzU3ODFGRDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VT
b3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENCNDExRTk1NUUzQzAwMTExQUEw
IC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMjEzNCw2ICsyMTM2LDcgQEAKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTND
IC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4
LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFE
QzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2
QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgz
IC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUy
M0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8q
IEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zMTkwLDcgKzMxOTMsNyBAQAogCQlBNzVFOEI4RDBFMURFMkQ2MDA3
RjI0ODEgLyogRkVDb21wb25lbnRUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODUwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9u
ZW50VHJhbnNmZXIuaCAqLzsgfTsKIAkJQTc1RThCOEYwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29t
cG9zaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzVFOEI4NzBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuaCAqLzsgfTsKIAkJQTc2RTVG
N0YxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkU1RjdFMTM1RTBEQ0YwMEE2
OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIElt
YWdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oICovOyB9OworCQlBNzc5Nzkx
QTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VE
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkg
LyogSlNJbWFnZURhdGEuaCAqLzsgfTsKIAkJQTc3QjQxQTAxMkU2NzVBOTAwNTQzNDNEIC8qIFRl
eHRFdmVudElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3N0Qw
MDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0QwMDExMTMzQjBBRUIwMEQ2NjU4QyAvKiBU
ZXh0Q2hlY2tpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtODYwOSw2ICs4NjEyLDcgQEAKIAkJNTNFMjlFNUQxNjdBOEExOTAwNTg2RDNEIC8q
IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dl
bmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsU2V0
dGluZ3NHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTUwNjQwQUQy
NDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1
YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJNTUwRjY2NDUyMkNBODlCRDAwMEEzNDE3IC8qIFNWR1NoYXJlZFBy
aW1pdGl2ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1NoYXJlZFByaW1pdGl2ZVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTEyMyw2ICsyNTEyNyw3IEBA
CiAJCQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4
RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi8sCiAJCQkJNzJCQUMzQTYyM0Ux
NzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk1NTA2NDBBRDI0
MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywKIAkJCQkw
NTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAogCQkJCUNFRUZD
RDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywK
IAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLywK
QEAgLTMwMjkxLDYgKzMwMjk2LDggQEAKIAkJCQkzMThFQUQ0RDFGQTkxMzgwMDA4Q0VGODYgLyog
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTEwQjkyMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTUwNjQwQjAyNDA3NTg3RTAwQUFFMDQ1IC8qIEltYWdlQnVmZmVy
Q0dCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEg
LyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNF
MjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQyNTM5NjMxOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAxOTJENjE4QjZCOUI3MDA3RkM3
QTEgLyogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNzc4
LDYgKzMxNzg1LDcgQEAKIAkJCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1F
dmVudEZhY3RvcnlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhD
NkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUx
OTUxRDU0RjVGQjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTUwNjQwQUYyNDA3NTgyRDAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZv
cm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNTYyRjk2MTE1NzNGODhGMDAz
MUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU0NEY3ODkxNUNG
QjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
QnVmZmVyQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MTE4YWVhZWQwZGQwNTViY2E2M2Y3ZTUzMGYx
ZTk5ODZlZWJlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCIKKyNlbGlm
IFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIgor
I2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgiCisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENHKQordXNpbmcgUGxhdGZv
cm1JbWFnZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlckNHQmFja2VuZDsKKyNlbGlmIFVTRShE
SVJFQ1QyRCkKK3VzaW5nIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kID0gSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ7CisjZWxpZiBVU0UoQ0FJUk8pCit1c2luZyBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZCA9IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOworI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRjY2Y0ZmFmODk4ZDA3NzE4N2U4OGQ0NDAw
NDYyM2QyMDE3MjUxZWUuLjMwZDU1YjQ1ZDgzM2RlYzIzZjdhNjAwZjI4M2ZjOTM1OThhZDliMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtNTM0LDYgKzUzNCw3IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNr
UHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBiMDA3MGYyZDA2MWQzZmRlODM1
MjU0ZmY0MGFmNjYwMTc5NjY3YmYyLi4zOTRiZWNkNTQ1NTI3Nzg4MzdiZDFiYTNiNjg4N2EyNTg0
YmQ5MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01NTcsNiArNTU3LDggQEAgV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KIAogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0Nv
Y29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKK1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHAKKwogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9MYXllclJlbW90ZUNvY29h
Lm1tCiAKIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlQmFubmVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZTVmYTE5MTRjMjIzNzEwYjdhMDE4MzJjMTA2YWU4OGU0NDM4YTFhNy4uMGM5N2IxNTgz
NjRhNzU2ZmEwMGJkOWMwYzA3NmFhZWQ3YmU1YjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDgwLDYgKzQwODAsMTIgQEAKIAkJ
NzFBNjc2QTQyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXpl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVy
ZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1
IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsg
cGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJzaXRlU2lt
dWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM1MjQwNzg1N0YwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM2MjQwNzg4RjAwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMx
IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2Vi
Q29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVB
OEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc3MzUsNyArNzc0MSwxMiBAQAogCQk1NTA2NDA5QzI0MDcxNUFB
MDBBQUUwNDUgLyogZ3JhcGhpY3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKKwkJCQk3
MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8s
CiAJCQkJNTUwNjQwQTUyNDA3MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5o
ICovLAorCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwICovLAorCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKKwkJCQk3MjdBN0YzODI0MDc4
OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywK
IAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5tZXNzYWdlcy5pbiAqLywKQEAgLTgwMzIsNiArODA0MywxNSBAQAogCQkJbmFt
ZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTcyN0E3RjMzMjQw
Nzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJNzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgKi8sCisJCQkJNzI3QTdGMzUyNDA3ODU3RjAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTdB
ODQzQTFEMjFFNDFGRDkwMERFRjY2MyAvKiBDbGFzc2lmaWVyICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1OTYzMDY5ZjY2MTgxODNkMDc4YTY0YzJkZWFjYzJkODNhNGNkZTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlNoYXJlYWJs
ZUJpdG1hcC5oIgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisjaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSA9IFZhcmlhbnQ8CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRS
aWdodCwKKyNlbmRpZgorICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlCis+OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZThhMmEzZmM0MWM5ZDYzYTEyOTZiOTE4ZDFkYTQwYmU3ODliMWRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KKyNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOworCitzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUg
PSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIGlmIChi
YWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSkgfTsKKyNlbmRpZgorICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24pOworICAgIGlm
ICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9
IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSkpOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCit7CisgICAgaWYg
KCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUp
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKFdU
Rk1vdmUoV1RGOjpnZXQ8U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU+KGhhbmRsZSkpKTsKKyAgICBp
ZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRleHQg
PSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKSk7Cit9CisKK0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNp
Y2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3ND
b250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZChsb2dp
Y2FsU2l6ZSwgcGh5c2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCisgICAg
LCBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250
ZXh0KSkKK3sKK30KKworSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QK
K3sKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAgbV9iaXRtYXAtPmNy
ZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUo
V1RGTW92ZShoYW5kbGUpKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QK
K3sKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKTsK
KyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbGlmIFVTRShDQUlS
TykKKyAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOworI2VuZGlmCit9
CisKK1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAoreworICAg
IHJldHVybiBtX2JpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6dG9CR1JBRGF0YShtX2JpdG1hcC0+ZGF0YSgp
KTsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFj
a2VuZDo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9iaXRtYXAtPmRhdGEo
KSk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpwdXRJbWFn
ZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRh
JiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQpCit7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoaW5wdXRGb3Jt
YXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBtX2JpdG1hcC0+ZGF0YSgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YTNlMzA3OWYyZTAyODU2OTA3ZWYwYWNmMjQ0NGFjN2MwZGNiYTgxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oPgorI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNoYXJl
YWJsZUJpdG1hcDsKKworY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kIDog
cHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kIHsKKyAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworCisgICAgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNv
bnN0OworCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gKm1fY29udGV4dDsgfQorCisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQ
dHIgY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpD
b3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJh
Y2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2Vy
dmVSZXNvbHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBWZWN0b3I8dWludDhfdD4g
dG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcHV0SW1hZ2VE
YXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdl
YkNvcmU6OkltYWdlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAg
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIENvbG9yRm9ybWF0IGJhY2tlbmRDb2xv
ckZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbG9yRm9ybWF0OjpCR1JBOyB9Cisj
ZW5kaWYKKworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybUlt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg0OWM2MGQzODIwNTI5YjVjODA1YmRhY2ExNDU3Njc3NDdlY2FiMGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtSW1h
Z2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5oIgorCisjaWYgSEFWRShJT1NVUkZBQ0UpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQgPSBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ7CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3Vz
aW5nIEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kID0gSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOworI2Vsc2UKK3VzaW5nIEFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxl
QmFja2VuZDsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2Q3MzViY2QzZmZi
YmQyNmEzNmZkZjAyZTYwYmNhMTY2N2JjNzdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgSEFWRShJT1NVUkZBQ0UpCisK
KyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKKworc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBJbnRTaXplIGJh
Y2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsK
KyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNr
ZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpKTsKKyAgICBpZiAoIXN1cmZh
Y2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJl
Zj4gY2dDb250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KG51bGxwdHIpOwor
ICAgIGlmICghY2dDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENHQ29u
dGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJv
KCksIGJhY2tlbmRTaXplKSk7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBXVEZNb3ZlKHN1cmZhY2UpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCit7CisgICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdU
Rjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JT
cGFjZSkpOworICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZChsb2dpY2FsU2l6
ZSwgaW50ZXJuYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoc3Vy
ZmFjZSkpKTsKK30KKworSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKG1fc3VyZmFjZS0+Y3Jl
YXRlU2VuZFJpZ2h0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEhBVkUoSU9TVVJGQUNFKQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIzYmQ4YjQ2NjlkOTdlOGI4ZmZlZTg4ZmY3OGIzNmUyZDBmYmI0M2UKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgSEFWRShJT1NVUkZBQ0UpCisK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2Mu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcDsKKworY2xh
c3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6
OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CitwdWJsaWM6
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworCisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKworICAgIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICB1c2luZyBXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0UpCisjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IGExNjA5
ZTBhNjY1YTYwMjAzNTU5NWIwZjkwMjAxZWM0NTUxYWM0ZmQuLjlhY2ExY2VmNTIwM2ZkOWNlMDc4
ZTBhNzFlODkzYTQxMjcxMGVmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwCmluZGV4IGQ4YWZmOTBiZTJhMDIzMWU4NzI2ZGNlMzFkZDE2ZGVkNTNkZWI4YzYuLjY5
NjgwZjI0ZjgwZGVhOTM3NDI5OTUyOWZlOWY2Njc3YTEyY2RjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFSZWNvcmRlck1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGJmYmNlNjIzZWMyYzg1Yzc2
ZDNhMjJhZjM3ZDYxNmQ5MDFlYzc4MzUuLmNjYjgzM2NmNzhkMDlhZDI5OWM3MGIyMjJiOWNlNTAx
Nzk2NmM4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0zOSw5ICszOSw4IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gV2ViU29j
a2V0Q2hhbm5lbDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCYgY2xpZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oCmluZGV4IDRkZTA2YTEzYjRl
ZDU3MzQ5NzczMTM4Y2EwNzIzMGJhMWMzNjQzODkuLmJlNDY2NTlmZjEyOGE1MzVmZjczMjAwMzhj
M2VmNDI3NTZiZGJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgKQEAgLTMwLDE0ICszMCwx
NCBAQAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
WFVuaXF1ZVJlc291cmNlLmg+CiAKLXR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5Owot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIFBpeG1hcDsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBXaW5k
b3c7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwogCit0eXBlZGVmIHN0
cnVjdCBfWERpc3BsYXkgRGlzcGxheTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXhtYXA7Cit0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2luZG93OworCiBjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2VY
MTEgZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRTdXJmYWNlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBY2NlbGVyYXRlZFN1cmZhY2VYMTEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391883</attachid>
            <date>2020-02-27 09:11:59 -0800</date>
            <delta_ts>2020-02-27 15:34:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207233-20200227091158.patch</filename>
            <type>text/plain</type>
            <size>42931</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM2ZGFjZjZmZWE3MTU3
YzdhNDkyMGFhMzMxNjMwZDkzNWNiMzYwMS4uNTk4NDNhMDFhMzFmM2FiZDc3ZGM0ZGFmOGZlMjBh
YzlhMmFhMTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAyLTI3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IEltYWdlQnVmZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIHRoZSBiYXNlIEltYWdlQnVmZmVyQmFj
a2VuZCBmb3IgZWFjaCBwbGF0Zm9ybS4KKyAgICAgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kIGluIFdlYktpdCBuZWVkcyB0byBoYXZlIGFjY2VzcyB0byBiYXNpYworICAgICAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmQgZnVuY3Rpb25hbGl0aWVzIHNwZWNpZmljIHRvIHRoZSBwbGF0
Zm9ybS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg6IEFkZGVkLgorCiAyMDIwLTAyLTI2ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENyZWF0ZSBBdWRpb0Rlc3RpbmF0aW9u
IGluIHRoZSBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OTI1OTc1MTVmNjg1OTA0ZGYxN2JhYTY4
ZmVhOWM3NzgyZTdjODE3Li5lNWFiNmM3MDgyZjE0Y2IyYWIwMDkzNjEzY2E1NDBhMTJlMzAwMTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTAyLTI3ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEltYWdlQnVm
ZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSB3aWxsIGNyZWF0ZSBhIHNoYXJl
YWJsZSBiYWNrZW5kIGluIHRoZSBHUFVQcm9jZXNzLgorICAgICAgICBUaGVuIGl0IHdpbGwgZ2l2
ZSBhY2Nlc3MgdG8gdGhpcyBiYWNrZW5kIHRvIFJlbW90ZUltYWdlQnVmZmVyIGluIHRoZQorICAg
ICAgICBXZWJQcm9jZXNzIGJ5IHNlbmRpbmcgYW4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaDogQWRkZWQuCisg
ICAgICAgIFRoaXMgaXMgdmFyaWFudCBvZiBzaGFyZWFibGUgaGFuZGxlcyB0byB0aGUgSW1hZ2VC
dWZmZXJCYWNrZW5kIGRhdGEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAg
ICBUaGUgZmlyc3QgY3JlYXRlIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIGJh
Y2tlbmQgb2YgCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgR1BVUHJvY2Vzcy4gVGhl
IHNlY29uZCBjcmVhdGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkCisgICAgICAgIHRvIGNyZWF0ZSB0
aGUgYmFja2VuZCBvZiBSZW1vdGVJbWFnZUJ1ZmZlciBpbiB0aGUgV2ViUHJvY2Vzcy4KKworICAg
ICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNv
bnN0KToKKyAgICAgICAgQ3JlYXRlcyBhbiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgd2hpY2gg
d2lsbCBiZSBzZW50IGZyb20gdGhlIEdQVVByb2Nlc3MKKyAgICAgICAgdG8gdGhlIFdlYlByb2Nl
c3MuCisKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6dG9CR1JBRGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Z2V0SW1h
Z2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOiBBZGRlZC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVC
YWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBEZWZpbmVzIHRoZSBwbGF0Zm9ybSBzaGFyZWFibGUg
SW1hZ2VCdWZmZXJCYWNrZW5kIHR5cGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAgQmVjYXVzZSBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgaGFzIHRvIGJlIGRlZmluZWQgaW4gV2ViS2l0LCBzaGFyaW5nCisgICAgICAgIHRo
ZSBJT1N1cmZhY2UgYmFja2VuZCBoYXMgdG8gYmUgaW1wbGVtZW50ZWQgaW4gV2ViS2l0LgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgx
MS5oOgorICAgICAgICBVbmlmaWVkIHNvdXJjZXMgZ2FyZGVuaW5nLgorCiAyMDIwLTAyLTI2ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBbm5vdGF0ZSBtZWRp
YVR5cGUgd2l0aCBhbiBhdmFpbGFiaWxpdHkgbWFjcm8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBk
YzEzYThjMDNkOGNmNDVmMjgyMWZjYzZhZTIyODdjYmUwYWZiMzU2Li40OGM3ZTg4OTlhOTE5NmVm
MDRkOGI4MTI5Y2I4MTRmM2NiM2M2YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTExMzMsNiAr
MTEzMyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURp
c3BsYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
VGV4dFRyYWNrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA5N2UwMGRiMDNhZDBkNWI0N2NmMmI0YWE4MTQyMjYyYTIwMmRhMWMy
Li44Y2NlMTM3ODdkY2EwMzBlNzE0MWQ5NDJiOGVlYzg4OGI0ZjNlODQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzM1LDYg
KzE3MzUsOCBAQAogCQk1M0UyOUU1RjE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNFMjlFNUQxNjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQu
aCAqLzsgfTsKIAkJNTNFRDNGREUxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5n
c0dlbmVyYXRlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJh
dGVkLmNwcCAqLzsgfTsKIAkJNTNFRDNGREYxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxT
ZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dl
bmVyYXRlZC5oICovOyB9OworCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUwNDUgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
QmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU1MDY0MEIwMjQwNzU4N0UwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUQyM0Ux
RTU0NTAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU0Njc1N0Ix
RkQyMTJBOTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTQ2NzU3ODFGRDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VT
b3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENCNDExRTk1NUUzQzAwMTExQUEw
IC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMjEzNCw2ICsyMTM2LDcgQEAKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTND
IC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4
LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFE
QzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBB
Y3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0
YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2
QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgz
IC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUy
M0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8q
IEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zMTkwLDcgKzMxOTMsNyBAQAogCQlBNzVFOEI4RDBFMURFMkQ2MDA3
RjI0ODEgLyogRkVDb21wb25lbnRUcmFuc2Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RThCODUwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29tcG9u
ZW50VHJhbnNmZXIuaCAqLzsgfTsKIAkJQTc1RThCOEYwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29t
cG9zaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzVFOEI4NzBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuaCAqLzsgfTsKIAkJQTc2RTVG
N0YxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkU1RjdFMTM1RTBEQ0YwMEE2
OTgzNyAvKiBSZW5kZXJlZERvY3VtZW50TWFya2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTc3OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIElt
YWdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oICovOyB9OworCQlBNzc5Nzkx
QTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VE
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkg
LyogSlNJbWFnZURhdGEuaCAqLzsgfTsKIAkJQTc3QjQxQTAxMkU2NzVBOTAwNTQzNDNEIC8qIFRl
eHRFdmVudElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3N0Qw
MDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0QwMDExMTMzQjBBRUIwMEQ2NjU4QyAvKiBU
ZXh0Q2hlY2tpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtODYwOSw2ICs4NjEyLDcgQEAKIAkJNTNFMjlFNUQxNjdBOEExOTAwNTg2RDNEIC8q
IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9JbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTUzRUQzRkRDMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTNFRDNGREQxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dl
bmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsU2V0
dGluZ3NHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTUwNjQwQUQy
NDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1
YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJNTUwRjY2NDUyMkNBODlCRDAwMEEzNDE3IC8qIFNWR1NoYXJlZFBy
aW1pdGl2ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1NoYXJlZFByaW1pdGl2ZVByb3Bl
cnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTEyMyw2ICsyNTEyNyw3IEBA
CiAJCQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4
RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi8sCiAJCQkJNzJCQUMzQTYyM0Ux
NzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywKKwkJCQk1NTA2NDBBRDI0
MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywKIAkJCQkw
NTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAogCQkJCUNFRUZD
RDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywK
IAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLywK
QEAgLTMwMjkxLDYgKzMwMjk2LDggQEAKIAkJCQkzMThFQUQ0RDFGQTkxMzgwMDA4Q0VGODYgLyog
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQTEwQjkyMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTUwNjQwQjAyNDA3NTg3RTAwQUFFMDQ1IC8qIEltYWdlQnVmZmVy
Q0dCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEg
LyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNF
MjFERDIxODM0NDRBMDBFNjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQyNTM5NjMxOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJvbHNCdXR0
b25FbGVtZW50TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAxOTJENjE4QjZCOUI3MDA3RkM3
QTEgLyogSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNzc4
LDYgKzMxNzg1LDcgQEAKIAkJCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1F
dmVudEZhY3RvcnlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhD
NkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUx
OTUxRDU0RjVGQjAwREQ3QzY4IC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTUwNjQwQUYyNDA3NTgyRDAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZv
cm1LZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNTYyRjk2MTE1NzNGODhGMDAz
MUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU0NEY3ODkxNUNG
QjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
QnVmZmVyQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MTE4YWVhZWQwZGQwNTViY2E2M2Y3ZTUzMGYx
ZTk5ODZlZWJlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCIKKyNlbGlm
IFVTRShESVJFQ1QyRCkKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oIgor
I2VsaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgiCisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENHKQordXNpbmcgUGxhdGZv
cm1JbWFnZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlckNHQmFja2VuZDsKKyNlbGlmIFVTRShE
SVJFQ1QyRCkKK3VzaW5nIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kID0gSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQ7CisjZWxpZiBVU0UoQ0FJUk8pCit1c2luZyBQbGF0Zm9ybUltYWdlQnVm
ZmVyQmFja2VuZCA9IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOworI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRjY2Y0ZmFmODk4ZDA3NzE4N2U4OGQ0NDAw
NDYyM2QyMDE3MjUxZWUuLjMwZDU1YjQ1ZDgzM2RlYzIzZjdhNjAwZjI4M2ZjOTM1OThhZDliMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtNTM0LDYgKzUzNCw3IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
TWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0v
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNr
UHJpdmF0ZVJlbW90ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBiMDA3MGYyZDA2MWQzZmRlODM1
MjU0ZmY0MGFmNjYwMTc5NjY3YmYyLi4zOTRiZWNkNTQ1NTI3Nzg4MzdiZDFiYTNiNjg4N2EyNTg0
YmQ5MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC01NTcsNiArNTU3LDggQEAgV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KIAogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L0Nv
Y29hL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tCiAKK1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHAKKwogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9MYXllclJlbW90ZUNvY29h
Lm1tCiAKIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlQmFubmVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZTVmYTE5MTRjMjIzNzEwYjdhMDE4MzJjMTA2YWU4OGU0NDM4YTFhNy4uMGM5N2IxNTgz
NjRhNzU2ZmEwMGJkOWMwYzA3NmFhZWQ3YmU1YjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDgwLDYgKzQwODAsMTIgQEAKIAkJ
NzFBNjc2QTQyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXpl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVy
ZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1
IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsg
cGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJzaXRlU2lt
dWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyog
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM1MjQwNzg1N0YwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM2MjQwNzg4RjAwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzgyNDA3ODhGMDAwNEQyOTMx
IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb2xvclBpY2tlck1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2Vi
Q29sb3JQaWNrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJDb2xvclBpY2tlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVB
OEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc3MzUsNyArNzc0MSwxMiBAQAogCQk1NTA2NDA5QzI0MDcxNUFB
MDBBQUUwNDUgLyogZ3JhcGhpY3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKKwkJCQk3
MjdBN0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8s
CiAJCQkJNTUwNjQwQTUyNDA3MUNDMDAwQUFFMDQ1IC8qIEltYWdlQnVmZmVySWRlbnRpZmllci5o
ICovLAorCQkJCTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwICovLAorCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKKwkJCQk3MjdBN0YzODI0MDc4
OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywK
IAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAgKi8sCiAJCQkJNTUwNjQwOUUyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaCAqLywKIAkJCQk1NTA2NDBBMDI0MDcxOUUxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5tZXNzYWdlcy5pbiAqLywKQEAgLTgwMzIsNiArODA0MywxNSBAQAogCQkJbmFt
ZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTcyN0E3RjMzMjQw
Nzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJNzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgKi8sCisJCQkJNzI3QTdGMzUyNDA3ODU3RjAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTdB
ODQzQTFEMjFFNDFGRDkwMERFRjY2MyAvKiBDbGFzc2lmaWVyICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1OTYzMDY5ZjY2MTgxODNkMDc4YTY0YzJkZWFjYzJkODNhNGNkZTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlNoYXJlYWJs
ZUJpdG1hcC5oIgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CisjaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSA9IFZhcmlhbnQ8CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgTWFjaFNlbmRS
aWdodCwKKyNlbmRpZgorICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlCis+OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZThhMmEzZmM0MWM5ZDYzYTEyOTZiOTE4ZDFkYTQwYmU3ODliMWRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KKyNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOworCitzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUg
PSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIGlmIChi
YWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSkgfTsKKyNlbmRpZgorICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24pOworICAgIGlm
ICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9
IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihuZXcgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kKHNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IFdURk1vdmUoYml0bWFwKSwgV1RGTW92ZShjb250ZXh0KSkpOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25z
dCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCit7CisgICAgaWYg
KCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUp
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKFdU
Rk1vdmUoV1RGOjpnZXQ8U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU+KGhhbmRsZSkpKTsKKyAgICBp
ZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRleHQg
PSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQpKSk7Cit9CisKK0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIHBoeXNp
Y2FsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgYml0bWFwLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3ND
b250ZXh0PiYmIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZChsb2dp
Y2FsU2l6ZSwgcGh5c2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpCisgICAg
LCBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250
ZXh0KSkKK3sKK30KKworSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QK
K3sKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAgbV9iaXRtYXAtPmNy
ZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUo
V1RGTW92ZShoYW5kbGUpKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QK
K3sKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIG1fYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKTsK
KyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbGlmIFVTRShDQUlS
TykKKyAgICByZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOworI2VuZGlmCit9
CisKK1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAoreworICAg
IHJldHVybiBtX2JpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6dG9CR1JBRGF0YShtX2JpdG1hcC0+ZGF0YSgp
KTsKK30KKworUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFj
a2VuZDo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9iaXRtYXAtPmRhdGEo
KSk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpwdXRJbWFn
ZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRh
JiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQpCit7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEoaW5wdXRGb3Jt
YXQsIGltYWdlRGF0YSwgc3JjUmVjdCwgZGVzdFBvaW50LCBtX2JpdG1hcC0+ZGF0YSgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40YTNlMzA3OWYyZTAyODU2OTA3ZWYwYWNmMjQ0NGFjN2MwZGNiYTgxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oPgorI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNoYXJl
YWJsZUJpdG1hcDsKKworY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kIDog
cHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kIHsKKyAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworCisgICAgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNv
bnN0OworCisgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gKm1fY29udGV4dDsgfQorCisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQ
dHIgY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpD
b3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJh
Y2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2Vy
dmVSZXNvbHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBWZWN0b3I8dWludDhfdD4g
dG9CR1JBRGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZURhdGE+IGdldElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcHV0SW1hZ2VE
YXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdl
YkNvcmU6OkltYWdlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAg
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwaHlzaWNhbFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJik7
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIENvbG9yRm9ybWF0IGJhY2tlbmRDb2xv
ckZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbG9yRm9ybWF0OjpCR1JBOyB9Cisj
ZW5kaWYKKworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybUlt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg0OWM2MGQzODIwNTI5YjVjODA1YmRhY2ExNDU3Njc3NDdlY2FiMGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1BsYXRmb3JtSW1h
Z2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5oIgorCisjaWYgSEFWRShJT1NVUkZBQ0UpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQgPSBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ7CisKKyNpZiBIQVZFKElPU1VSRkFDRSkKK3Vz
aW5nIEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kID0gSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOworI2Vsc2UKK3VzaW5nIEFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxl
QmFja2VuZDsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2Q3MzViY2QzZmZi
YmQyNmEzNmZkZjAyZTYwYmNhMTY2N2JjNzdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgSEFWRShJT1NVUkZBQ0UpCisK
KyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKKworc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBJbnRTaXplIGJh
Y2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsK
KyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNr
ZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpKTsKKyAgICBpZiAoIXN1cmZh
Y2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJl
Zj4gY2dDb250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KG51bGxwdHIpOwor
ICAgIGlmICghY2dDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENHQ29u
dGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJv
KCksIGJhY2tlbmRTaXplKSk7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZChzaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBXVEZNb3ZlKHN1cmZhY2UpKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCit7CisgICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdU
Rjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JT
cGFjZSkpOworICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZD4obmV3IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZChsb2dpY2FsU2l6
ZSwgaW50ZXJuYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoc3Vy
ZmFjZSkpKTsKK30KKworSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKG1fc3VyZmFjZS0+Y3Jl
YXRlU2VuZFJpZ2h0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEhBVkUoSU9TVVJGQUNFKQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIzYmQ4YjQ2NjlkOTdlOGI4ZmZlZTg4ZmY3OGIzNmUyZDBmYmI0M2UKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgSEFWRShJT1NVUkZBQ0UpCisK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2Mu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcDsKKworY2xh
c3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6
OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CitwdWJsaWM6
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOworCisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKworICAgIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICB1c2luZyBXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0UpCisjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmluZGV4IGExNjA5
ZTBhNjY1YTYwMjAzNTU5NWIwZjkwMjAxZWM0NTUxYWM0ZmQuLjlhY2ExY2VmNTIwM2ZkOWNlMDc4
ZTBhNzFlODkzYTQxMjcxMGVmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwCmluZGV4IGQ4YWZmOTBiZTJhMDIzMWU4NzI2ZGNlMzFkZDE2ZGVkNTNkZWI4YzYuLjY5
NjgwZjI0ZjgwZGVhOTM3NDI5OTUyOWZlOWY2Njc3YTEyY2RjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFSZWNvcmRlck1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGJmYmNlNjIzZWMyYzg1Yzc2
ZDNhMjJhZjM3ZDYxNmQ5MDFlYzc4MzUuLmNjYjgzM2NmNzhkMDlhZDI5OWM3MGIyMjJiOWNlNTAx
Nzk2NmM4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0zOSw5ICszOSw4IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gV2ViU29j
a2V0Q2hhbm5lbDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCYgY2xpZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oCmluZGV4IDRkZTA2YTEzYjRl
ZDU3MzQ5NzczMTM4Y2EwNzIzMGJhMWMzNjQzODkuLjEyZmQ0Mjk2YzI2Zjk2MTYzYjhkNWVjZWQy
ODNmZWFiZjJlZjJjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VYMTEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY3JlYXRlUGl4bWFwKCk7CiAKLSAgICBEaXNwbGF5KiBt
X2Rpc3BsYXkgeyBudWxscHRyIH07CisgICAgOjpEaXNwbGF5KiBtX2Rpc3BsYXkgeyBudWxscHRy
IH07CiAgICAgV2ViQ29yZTo6WFVuaXF1ZVdpbmRvdyBtX3dpbmRvdzsKICAgICBXZWJDb3JlOjpY
VW5pcXVlV2luZG93IG1fcGFyZW50V2luZG93OwogICAgIFdlYkNvcmU6OlhVbmlxdWVQaXhtYXAg
bV9waXhtYXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391932</attachid>
            <date>2020-02-27 15:34:36 -0800</date>
            <delta_ts>2020-02-27 17:35:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207233-20200227153435.patch</filename>
            <type>text/plain</type>
            <size>44645</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTAyLTI3ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IEltYWdlQnVmZmVyIHNoYXJlYWJsZSBiYWNrZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaDogQWRkZWQuCisgICAgICAgIERlZmluZSB0aGUg
YmFzZSBJbWFnZUJ1ZmZlckJhY2tlbmQgZm9yIGVhY2ggcGxhdGZvcm0uCisgICAgICAgIEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCBpbiBXZWJLaXQgbmVlZHMgdG8gaGF2ZSBhY2Nl
c3MgdG8gYmFzaWMKKyAgICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kIGZ1bmN0aW9uYWxpdGllcyBz
cGVjaWZpYyB0byB0aGUgcGxhdGZvcm0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICBVc2UgV1RG
OjptYWtlVW5pcXVlIGFuZCBtYWtlIHRoZSBjb25zdHJ1Y3RvciBwdWJsaWMuCisKIDIwMjAtMDIt
MjcgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVJlc291
cmNlTG9hZGVyIG9iamVjdHMgYXJlIGxlYWtpbmcgb24gcmVkZGl0LmNvbQpJbmRleDogU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCShyZXZpc2lvbiAyNTc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMzLDYgKzExMzMsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUltYWdlQnVmZmVyQmFja2VuZC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXll
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MzUsNiArMTczNSw4IEBACiAJCTUzRTI5RTVGMTY3
QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0UyOUU1RDE2N0E4QTE5MDA1ODZE
M0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oICovOyB9OwogCQk1M0VEM0ZERTE2N0E4
OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUQzRkRDMTY3QTg4RTcwMDY3
NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwICovOyB9OwogCQk1M0VEM0ZE
RjE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VEM0ZERDE2N0E4OEU3
MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmggKi87IH07CisJCTU1MDY0
MEFGMjQwNzU4MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwNjQwQUQyNDA3NTZE
QTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTUwNjQwQjAyNDA3NTg3RTAwQUFF
MDQ1IC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBRDIzRTFFNTQ1MDA4RDc0MUMgLyogSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTQ2NzU3QjFGRDIxMkE5MDAzQjEwQjAgLyogSW1hZ2VT
b3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
NDY3NTc4MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1NTBDQjQyMUU5NTVFM0MwMDExMUFB
MCAvKiBJbWFnZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTM0LDYgKzIxMzYs
NyBAQAogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUQzMzAxQTNB
OEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0RUU1NTAxREM4
MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0
eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1
NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyN0E3RjNBMjQw
NzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhE
NzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMg
LyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVs
dGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZD
NjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VC
dWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxOTAsNyAr
MzE5Myw3IEBACiAJCUE3NUU4QjhEMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbXBvbmVudFRyYW5z
ZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzVF
OEI4NTBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb25lbnRUcmFuc2Zlci5oICovOyB9OwogCQlB
NzVFOEI4RjBFMURFMkQ2MDA3RjI0ODEgLyogRkVDb21wb3NpdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NUU4Qjg3MEUxREUyRDYwMDdGMjQ4MSAv
KiBGRUNvbXBvc2l0ZS5oICovOyB9OwogCQlBNzZFNUY3RjEzNUUwRENGMDBBNjk4MzcgLyogUmVu
ZGVyZWREb2N1bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRN
YXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlBNzc5NzkxQTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkg
LyogSW1hZ2VEYXRhLmggKi87IH07CisJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFn
ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
Nzk3OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzc5NzkyOTBENkI5RTY0MDAzODUxQjkg
LyogSlNJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oICovOyB9Owog
CQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdCNDE5RjEyRTY3NUE5
MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc3RDAwMTIxMzNCMEFFQjAwRDY2NThDIC8qIFRl
eHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc3RDAwMTExMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NjA5LDYgKzg2MTIsNyBA
QAogCQk1M0UyOUU1RDE2N0E4QTE5MDA1ODZEM0QgLyogSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnRlcm5hbFNldHRpbmdzR2Vu
ZXJhdGVkLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0ludGVybmFsU2V0dGluZ3NH
ZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTNFRDNG
REMxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0VEM0ZERDE2N0E4OEU3
MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZv
cm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZl
ckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJD
ODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBGNjY0
NTIyQ0E4OUJEMDAwQTM0MTcgLyogU1ZHU2hhcmVkUHJpbWl0aXZlUHJvcGVydHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHU2hhcmVkUHJpbWl0aXZlUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI1MTIzLDYgKzI1MTI3LDcgQEAKIAkJCQlBOEZBNkU1QzBFNENGREVEMDBE
NUNGNDkgLyogUGF0dGVybi5jcHAgKi8sCiAJCQkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8q
IFBhdHRlcm4uaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlci5oICovLAorCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9y
bUltYWdlQnVmZmVyQmFja2VuZC5oICovLAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAv
KiBQbGF0Zm9ybUxheWVyLmggKi8sCiAJCQkJQ0VFRkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCTA3Mjg0N0UyMTZFQkM1QjAwMDQz
Q0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFjay5oICovLApAQCAtMzAyOTEsNiArMzAyOTYsOCBAQAog
CQkJCTMxOEVBRDREMUZBOTEzODAwMDhDRUY4NiAvKiBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMTBCOTIwQjM4MThCRDAwMDk5QUE0
IC8qIEltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MkJBQzNBRTIzRTFGMEIwMDA4
RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTA2NDBC
MDI0MDc1ODdFMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJ
bWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI1Mzk2MzE4Q0U3
RjYyMDAyNzAyMjIgLyogSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3NzgsNiArMzE3ODUsNyBAQAogCQkJCUJDQUE0
ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFj
cm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE5NTFENTRGNUZCMDBERDdDNjggLyogUGxh
dGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTA2NDBBRjI0MDc1ODJEMDBBQUUw
NDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
NUM0NzY4MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1M
b2NhbGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
SW1hZ2VCdWZmZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckNHQmFja2VuZC5oIgorI2VsaWYg
VVNFKERJUkVDVDJEKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmgiCisj
ZWxpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit1c2luZyBQbGF0Zm9y
bUltYWdlQnVmZmVyQmFja2VuZCA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kOworI2VsaWYgVVNFKERJ
UkVDVDJEKQordXNpbmcgUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQgPSBJbWFnZUJ1ZmZlckRp
cmVjdDJEQmFja2VuZDsKKyNlbGlmIFVTRShDQUlSTykKK3VzaW5nIFBsYXRmb3JtSW1hZ2VCdWZm
ZXJCYWNrZW5kID0gSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ7CisjZW5kaWYKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3Bw
CShyZXZpc2lvbiAyNTc1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNzksNyArODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrCiAKICAgICBDR0NvbnRleHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBiYWNrZW5kU2l6ZSkpOwogCi0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+KG5ldyBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQoc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgV1RGTW92ZShzdXJmYWNlKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgJKHJldmlzaW9u
IDI1NzU4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKKyAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQo
Y29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+JiYpOworCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZTsKIApAQCAtNjAsOCArNjIsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBp
bnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50UG9pbnQmIGRlc3RQb2ludCkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgSW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
Y2UsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwotCiAgICAgc3RhdGljIFJldGFpblB0
cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRDb2xvclNwYWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpOwogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ29s
b3JGb3JtYXQgYmFja2VuZENvbG9yRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjU3NTkxKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw1NCBAQAorMjAyMC0wMi0yNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBJbWFnZUJ1ZmZlciBz
aGFyZWFibGUgYmFja2VuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNzIzMworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKwor
ICAgICAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IHdpbGwgY3JlYXRlIGEgc2hhcmVhYmxlIGJh
Y2tlbmQgaW4gdGhlIEdQVVByb2Nlc3MuCisgICAgICAgIFRoZW4gaXQgd2lsbCBnaXZlIGFjY2Vz
cyB0byB0aGlzIGJhY2tlbmQgdG8gUmVtb3RlSW1hZ2VCdWZmZXIgaW4gdGhlCisgICAgICAgIFdl
YlByb2Nlc3MgYnkgc2VuZGluZyBhbiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuCisKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oOiBBZGRlZC4KKyAgICAgICAg
VGhpcyBpcyB2YXJpYW50IG9mIHNoYXJlYWJsZSBoYW5kbGVzIHRvIHRoZSBJbWFnZUJ1ZmZlckJh
Y2tlbmQgZGF0YS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIFRoZSBm
aXJzdCBjcmVhdGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHRvIGNyZWF0ZSB0aGUgYmFja2VuZCBv
ZiAKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBHUFVQcm9jZXNzLiBUaGUgc2Vjb25k
IGNyZWF0ZSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQKKyAgICAgICAgdG8gY3JlYXRlIHRoZSBiYWNr
ZW5kIG9mIFJlbW90ZUltYWdlQnVmZmVyIGluIHRoZSBXZWJQcm9jZXNzLgorCisgICAgICAgIChX
ZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgor
ICAgICAgICBDcmVhdGVzIGFuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB3aGljaCB3aWxsIGJl
IHNlbnQgZnJvbSB0aGUgR1BVUHJvY2VzcworICAgICAgICB0byB0aGUgV2ViUHJvY2Vzcy4KKwor
ICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpnZXRJbWFnZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OnB1dEltYWdlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6IEFkZGVkLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQu
aDogQWRkZWQuCisgICAgICAgIERlZmluZXMgdGhlIHBsYXRmb3JtIHNoYXJlYWJsZSBJbWFnZUJ1
ZmZlckJhY2tlbmQgdHlwZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmg6IEFkZGVkLgorICAgICAgICBCZWNhdXNlIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBoYXMgdG8gYmUgZGVmaW5lZCBpbiBXZWJLaXQsIHNoYXJpbmcKKyAgICAgICAgdGhlIElPU3Vy
ZmFjZSBiYWNrZW5kIGhhcyB0byBiZSBpbXBsZW1lbnRlZCBpbiBXZWJLaXQuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmg6Cisg
ICAgICAgIFVuaWZpZWQgc291cmNlcyBnYXJkZW5pbmcuCisKIDIwMjAtMDItMjcgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IHVuaWZpZWQgc291cmNlIGJ1aWxkcyBmaXguCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI1
NzU4NCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUz
NCw2ICs1MzQsNyBAQCBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJvCiBX
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAKIAogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCitXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CShyZXZpc2lvbiAyNTc1ODQpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTU1Nyw2ICs1NTcsOCBAQCBXZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQogCiBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9X
ZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0KIAorV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9jb2NvYS9WaWRlb0xheWVyUmVtb3RlQ29jb2EubW0KIAogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VCYW5uZXIuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDI1NzU4NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTQwODAsNiArNDA4MCwxMiBAQAogCQk3MUE2NzZBNDIyQzYy
MzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5o
OyBwYXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFj
dGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dL
VG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2
ZW50c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyN0E3RjM0MjQwNzg1N0QwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzUyNDA3ODU3RjAwNEQyOTMxIC8qIEltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5MzEgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2
RUYxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5RSAvKiBXZWJDb2xvclBpY2tlck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbG9yUGlj
a2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNDE4N0NDRjlG
MDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzczNSw3ICs3NzQxLDEyIEBACiAJCTU1MDY0MDlDMjQwNzE1QUEwMEFBRTA0NSAvKiBn
cmFwaGljcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovLAorCQkJCTcyN0E3RjM5MjQwNzg4
RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk1NTA2NDBB
NTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmggKi8sCisJCQkJNzI3
QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAgKi8sCisJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5oICovLAorCQkJCTcyN0E3RjM4MjQwNzg4RjAwMDREMjkzMSAv
KiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAogCQkJCTU1MDY0MDlE
MjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCAqLywKIAkJCQk1
NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oICovLAog
CQkJCTU1MDY0MEEwMjQwNzE5RTEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluICovLApAQCAtODAzMiw2ICs4MDQzLDE1IEBACiAJCQluYW1lID0gbWFjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMx
IC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQk3MjdBN0YzNDI0MDc4NTdEMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kLmNwcCAqLywKKwkJCQk3MjdBN0YzNTI0MDc4NTdGMDA0RDI5MzEgLyogSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNv
Y29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJN0E4NDNBMUQyMUU0MUZE
OTAwREVGNjYzIC8qIENsYXNzaWZpZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKyNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlID0gVmFyaWFudDwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBNYWNoU2VuZFJpZ2h0LAorI2VuZGlmCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUKKz47
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOworCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIEludFNpemUgYmFj
a2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOwor
ICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRD
R0NvbG9yU3BhY2UoY29sb3JTcGFjZSkgfTsKKyNlbmRpZgorICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24p
OworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8g
Y29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFjb250
ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBtYWtlVW5pcXVlPElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4oc2l6ZSwgYmFja2VuZFNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShiaXRtYXApLCBXVEZNb3ZlKGNvbnRleHQp
KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgaGFuZGxlKQoreworICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZT4oaGFuZGxlKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShXVEZNb3ZlKFdURjo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlPihoYW5kbGUpKSk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgYXV0byBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
KyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPihsb2dpY2FsU2l6
ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShiaXRt
YXApLCBXVEZNb3ZlKGNvbnRleHQpKTsKK30KKworSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgRmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgcGh5c2ljYWxTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4m
JiBiaXRtYXAsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKKyAg
ICA6IFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXplLCBwaHlzaWNhbFNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSkKKyAgICAsIG1fYml0bWFwKFdURk1vdmUoYml0
bWFwKSkKKyAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQoreworfQorCitJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdAoreworICAgIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIGhhbmRsZTsKKyAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShXVEZNb3ZlKGhhbmRsZSkpOworfQor
CitOYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAoreworI2lmIFVTRShDRykKKyAgICBy
ZXR1cm4gbV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpOworI2VsaWYgVVNFKERJUkVDVDJEKQor
ICAgIHJldHVybiBudWxscHRyOworI2VsaWYgVVNFKENBSVJPKQorICAgIHJldHVybiBtX2JpdG1h
cC0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CisjZW5kaWYKK30KKworUmVmUHRyPEltYWdlPiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5
LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYml0bWFwLT5jcmVh
dGVJbWFnZSgpOworfQorCitWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjp0b0JHUkFEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJC
YWNrZW5kOjp0b0JHUkFEYXRhKG1fYml0bWFwLT5kYXRhKCkpOworfQorCitSZWZQdHI8SW1hZ2VE
YXRhPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRJbWFnZURhdGEob3V0
cHV0Rm9ybWF0LCBzcmNSZWN0LCBtX2JpdG1hcC0+ZGF0YSgpKTsKK30KKwordm9pZCBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OnB1dEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKK3sKKyAgICBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0
LCBkZXN0UG9pbnQsIG1fYml0bWFwLT5kYXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CisjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2hh
cmVhYmxlQml0bWFwOworCitjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQgeworICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQp
OworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGludGVybmFsU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOworCisgICAgSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBoeXNpY2FsU2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiYmKTsKKwor
ICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICptX2NvbnRleHQ7IH0KKworICAgIFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2Vi
Q29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6
OkNvcHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6
OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOworCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VEYXRh
PiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3Jt
YXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHB1
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBj
b25zdCBXZWJDb3JlOjpJbWFnZURhdGEmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50KSBvdmVycmlkZTsKKworcHJpdmF0
ZToKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIENvbG9yRm9ybWF0IGJhY2tlbmRDb2xv
ckZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbG9yRm9ybWF0OjpCR1JBOyB9Cisj
ZW5kaWYKKworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVm
ZmVyU2hhcmVhYmxlQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Bs
YXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIklt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIgorCisjaWYgSEFWRShJT1NVUkZBQ0Up
CisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgiCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJhY2tlbmQgPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ7CisK
KyNpZiBIQVZFKElPU1VSRkFDRSkKK3VzaW5nIEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCYWNrZW5kID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOworI2Vsc2UK
K3VzaW5nIEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kID0gVW5hY2NlbGVy
YXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZDsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgiCisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisjaWYgSEFWRShJT1NVUkZBQ0UpCisKKyNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZCk7CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHNp
emUsIHJlc29sdXRpb25TY2FsZSk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNy
ZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNw
YWNlKSk7CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNnQ29udGV4dCA9IHN1cmZhY2UtPmVuc3VyZVBsYXRm
b3JtQ29udGV4dCgpOworICAgIGlmICghY2dDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIENHQ29udGV4dENsZWFyUmVjdChjZ0NvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChG
bG9hdFBvaW50Ojp6ZXJvKCksIGJhY2tlbmRTaXplKSk7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+KHNpemUsIGJhY2tlbmRTaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoc3VyZmFjZSkpOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
aGFuZGxlKQoreworICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNYWNoU2VuZFJpZ2h0
PihoYW5kbGUpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwg
Y2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpKTsKKyAgICBpZiAoIXN1cmZhY2UpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPihsb2dpY2FsU2l6ZSwgaW50ZXJuYWxTaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdURk1vdmUoc3VyZmFjZSkpOworfQorCitJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdAoreworICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUobV9zdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0UpCisjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNpZiBIQVZFKElPU1VSRkFDRSkK
KworI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Yy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2hhcmVhYmxlQml0bWFwOworCitj
bGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJm
YWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBpbnRlcm5hbFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKTsKKworICAgIHVzaW5n
IFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOworCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCShyZXZpc2lvbiAyNTc1
ODQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJv
eHlNZXNzYWdlcy5oIgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAkocmV2aXNpb24gMjU3
NTg0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdlcy5oIgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAJKHJldmlzaW9uIDI1NzU4NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw4IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRBcml0aG1ldGljLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1l
c3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZWY8V2ViU29ja2V0
Q2hhbm5lbD4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vi
U29ja2V0Q2hhbm5lbENsaWVudCYgY2xpZW50KQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VY
MTEuaAkocmV2aXNpb24gMjU3NTg0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVgxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNyZWF0ZVBpeG1hcCgpOwogCi0gICAgRGlzcGxh
eSogbV9kaXNwbGF5IHsgbnVsbHB0ciB9OworICAgIDo6RGlzcGxheSogbV9kaXNwbGF5IHsgbnVs
bHB0ciB9OwogICAgIFdlYkNvcmU6OlhVbmlxdWVXaW5kb3cgbV93aW5kb3c7CiAgICAgV2ViQ29y
ZTo6WFVuaXF1ZVdpbmRvdyBtX3BhcmVudFdpbmRvdzsKICAgICBXZWJDb3JlOjpYVW5pcXVlUGl4
bWFwIG1fcGl4bWFwOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>