<?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>206172</bug_id>
          
          <creation_ts>2020-01-13 05:14:55 -0800</creation_ts>
          <short_desc>Split AudioTrackPrivateMediaStreamCocoa to implement remote audio rendering</short_desc>
          <delta_ts>2020-01-13 12:21:33 -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>WebRTC</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1605803</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 05:14:55 -0800</bug_when>
    <thetext>Split AudioTrackPrivateMediaStreamCocoa to implement remote audio rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605805</commentid>
    <comment_count>1</comment_count>
      <attachid>387515</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 05:24:21 -0800</bug_when>
    <thetext>Created attachment 387515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605806</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-13 05:27:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/58526733&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605807</commentid>
    <comment_count>3</comment_count>
      <attachid>387516</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 05:44:40 -0800</bug_when>
    <thetext>Created attachment 387516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605810</commentid>
    <comment_count>4</comment_count>
      <attachid>387515</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-13 05:52:54 -0800</bug_when>
    <thetext>Comment on attachment 387515
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        For that purpose, splut AudioTrackPrivateMediaStreamCocoa functionality in two parts.

s/splut/split/

&gt; Source/WebCore/platform/mediastream/AudioTrackPrivateMediaStream.cpp:111
&gt; +// May get called on a background thread.

Should we protect access to the renderer with a lock so, e.g., problems when clear() and audioSamplesAvailable() are called concurrently?

&gt; Source/WebCore/platform/mediastream/AudioTrackPrivateMediaStream.h:77
&gt; +    AtomString language() const final { return emptyAtom(); }

This override isn&apos;t necessary as the base class already returns emptyAtom();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605812</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 05:56:18 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #4)
&gt; Comment on attachment 387515 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387515&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        For that purpose, splut AudioTrackPrivateMediaStreamCocoa functionality in two parts.
&gt; 
&gt; s/splut/split/

OK

&gt; &gt; Source/WebCore/platform/mediastream/AudioTrackPrivateMediaStream.cpp:111
&gt; &gt; +// May get called on a background thread.
&gt; 
&gt; Should we protect access to the renderer with a lock so, e.g., problems when
&gt; clear() and audioSamplesAvailable() are called concurrently?

We should be good now and the old code making a protectedThis is a left over.
Reason is that we should call clear() before entering the destructor.

&gt; &gt; Source/WebCore/platform/mediastream/AudioTrackPrivateMediaStream.h:77
&gt; &gt; +    AtomString language() const final { return emptyAtom(); }
&gt; 
&gt; This override isn&apos;t necessary as the base class already returns emptyAtom();

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605813</commentid>
    <comment_count>6</comment_count>
      <attachid>387519</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 05:59:04 -0800</bug_when>
    <thetext>Created attachment 387519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605820</commentid>
    <comment_count>7</comment_count>
      <attachid>387521</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 06:28:17 -0800</bug_when>
    <thetext>Created attachment 387521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605828</commentid>
    <comment_count>8</comment_count>
      <attachid>387524</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 06:57:05 -0800</bug_when>
    <thetext>Created attachment 387524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605837</commentid>
    <comment_count>9</comment_count>
      <attachid>387526</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 07:43:10 -0800</bug_when>
    <thetext>Created attachment 387526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605850</commentid>
    <comment_count>10</comment_count>
      <attachid>387529</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 08:11:29 -0800</bug_when>
    <thetext>Created attachment 387529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605983</commentid>
    <comment_count>11</comment_count>
      <attachid>387529</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-13 12:21:31 -0800</bug_when>
    <thetext>Comment on attachment 387529
Patch

Clearing flags on attachment: 387529

Committed r254446: &lt;https://trac.webkit.org/changeset/254446&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605984</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-13 12:21:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387515</attachid>
            <date>2020-01-13 05:24:21 -0800</date>
            <delta_ts>2020-01-13 05:44:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206172-20200113142418.patch</filename>
            <type>text/plain</type>
            <size>64039</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhiOThkZGM1NTA5YWRj
NTEyODc3ZDc4MDhiNDhjMjJkNTM3NDA5Zi4uYjNjMzZhMjRiYWU1ZTVjNGIyNDgxYWU5ZmUyN2Uw
Zjg2M2Y1ODkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTAxLTEzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgdG8gaW1wbGVtZW50IHJlbW90ZSBhdWRpbyByZW5kZXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yIGNvZGUgdG8gYWxsb3cgaW4gdGhlIGZ1dHVyZSByZW5kZXJpbmcgb2YgbWVkaWEgc3RyZWFt
IGF1ZGlvIHRyYWNrcyBpbiBhIHJlbW90ZSBwcm9jZXNzLgorICAgICAgICBGb3IgdGhhdCBwdXJw
b3NlLCBzcGx1dCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZnVuY3Rpb25hbGl0
eSBpbiB0d28gcGFydHMuCisgICAgICAgIFRoZSBmaXJzdCBwYXJ0IGlzIG1vdmVkIGJhY2sgdG8g
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS4KKyAgICAgICAgVGhlIHNlY29uZCBwYXJ0IGlz
IHBsYXRmb3JtIHNwZWNpZmljIGFuZCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIGFuIGludGVyZmFj
ZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgICAgICBhbmQgYW4gaW4gcHJvY2Vz
cyBpbXBsZW1lbnRhdGlvbiBuYW1lZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
LgorCisgICAgICAgIE1ha2UgVHJhY2tQcml2YXRlQmFzZSBhbmQgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgcHVibGljIExvZ2dlckhlbHBlci4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFraW5nIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIGFuZCBBdWRpb1NhbXBsZURhdGFTb3VyY2UgdG8g
dGFrZSBhIExvZ2dlckhlbHBlciBpbnN0ZWFkIG9mIGEgZGVyaXZlZCBpbnN0YW5jZS4KKworICAg
ICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6QXVkaW9TYW1w
bGVEYXRhU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldE11dGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRWb2x1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnZvbHVtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6aXNNdXRl
ZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6fkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OnZvbHVtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtOjp1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tFbmRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0UGF1c2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0ZUF1ZGlvVW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmg6IFJlbW92ZWQuCisKIDIwMjAtMDEtMTIgIHlvdWVubiBmYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBhbiBhYnN0cmFjdCBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDExMjE1NTdhZTZmMzVkYjlhZDVm
NGMxZThhY2NjYTA4NjYzZTZmYi4uYzU3YmQ5MTNmNDQzZmMzYzdlMDZkZmU5MjUwM2Y3ODc2ZWVh
NzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHBsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhQ2FwYWJpbGl0aWVzTG9nZ2luZy5jcHAKIAogcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCiAKK3BsYXRmb3JtL21lZGlh
c3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwCiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHMuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmln
dXJhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDY1YmE1OTc4NTlhMTA4Yjgw
MTFmYjFiMzM3YmNlZTJmMjQyNzkyNWYuLjU1ZmQxZTQxNWM2ZDc5YmE2ZDRkM2IzMzZhMDA2YjE3
Njk1MmM0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDg2LDExICs0ODYsMTMgQEAg
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCiAKIHBsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uUHJvdmlkZXJNYWMubW0KIAorcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuY3BwCisKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2UubW0KIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0gQG5vLXVuaWZ5CiAKLXBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCitw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2Nv
YS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1t
IEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMzE0OGQ5Mzk5NmY2MGQ0YjgzYWQ0ZjJmOTk2ZTU1ZTRkOWM0ZTkz
ZC4uM2EwMWM1NzNmM2QxZjY3YzhjOWQzNjU4NWFmMDI1YmVhYWY5Mzk0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAwMCw3
ICsxMDAwLDYgQEAKIAkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzJDMDBEODEy
OTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzJEM0U1NDIxNjU3OEFFMDBDNUUwMjEgLyogRGF0
YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oICovOyB9Owog
CQkzNzJEM0U1NTIxNjU3OEFFMDBDNUUwMjEgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVG
MDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07Ci0JCTM3MkQzRTU2MjE2NTc4
QUUwMEM1RTAyMSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM2MUU0MjUxMkYw
MDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLzsgfTsKIAkJ
MzcyRDNFNTcyMTY1NzhBRTAwQzVFMDIxIC8qIE5hdmlnYXRvckNyZWRlbnRpYWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYyNjFGRTg5NUY4
MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaCAqLzsgfTsKIAkJMzc1Q0QyMzIxMTlE
NDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRp
b24uaCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVx
dWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDY5
LDYgKzEwNjgsNyBAQAogCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTND
Q0Q0ODIwREUwMTNDMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEzRTAwNzkxREIwRTRGMjAwMjM0
MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxM0UwMDc4MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE0NTk4
QzIyM0M4RDE3NzAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NTk4QzEyM0M4
QUQ3OTAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tICovOyB9Owor
CQk0MTQ1OThDRDIzQ0M3RjQxMDAyQjlDQzggLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODMz
QTFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmggKi87IH07
CiAJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNEI4MjAzMUQ2REYwRDkw
MDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCAqLzsgfTsKIAkJNDE0REVERTcxRjlGRTkxRTAw
NDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNERFREU1MUY5RkU5MTUwMDQ3QzQwRCAvKiBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDE1MDcxNTgxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUwNzE1
NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCAqLzsgfTsKQEAgLTEwODcsNiAr
MTA4Nyw3IEBACiAJCTQxNjFFMkQ1MUZFNDhEQzUwMEVDMkU5NiAvKiBGZXRjaExvYWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0N0UyQjUxQzg5
OTEyNjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaCAqLzsgfTsKIAkJNDE2MkE0NTgxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU2MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmggKi87IH07CisJCTQxNkEwNjg4MjNDQzlDRjgwMDM0NzEwOSAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2QTA2ODcyM0NDOUNFODAwMzQ3MTA5IC8qIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi87IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQy
QyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xv
YWRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5
QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyog
V29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQ
cm94eS5oICovOyB9OwpAQCAtNTQ3Myw3ICs1NDc0LDYgQEAKIAkJMDc2OTcwODQxNDYzQUQ4NzAw
RjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tQcml2YXRlQmFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NkVDMTMyMUU0NEYyQ0IwMEU1
RDgxMyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAw
QzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZB
QTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlj
a1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTU1NTMsNyArNTU1Myw2IEBACiAJCTA3QjcxMTZDMUQ4OTlFNjMwMDlG
MEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwN0I5M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
QjkzRkZCMjNCOTJBQUIwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1JTUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
N0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBF
MDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJh
aW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFMTFCRkI2MDAxMDBC
RDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM5Miw2ICs3MzkxLDExIEBACiAJCTQxNjJBNDRG
MTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTZBMDY4NDIzQ0M5QTJEMDAzNDcxMDkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2QTA2ODYyM0NDOUM2MjAwMzQ3MTA5IC8q
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxNkEwNjg3MjNDQzlDRTgwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTZBMDY4OTIzQ0NBMTE0MDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NkEwNjhBMjNDQ0EyQTMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkNFNEE0MjI5REYxMkUwMEE4QTY4NiAv
KiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJbmZvcm1hdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJDM0MyMDA0QTk1
RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZldGNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxNjUs
NiArMTYxNjksOSBAQAogCQkJCUNEQzY3NTFGMUVBRUE5OTYwMDcyN0M4NCAvKiBpb3MgKi8sCiAJ
CQkJNDE1NzQ3NDIxRTM4Njk4MDAwRTkxNEQ4IC8qIGxpYndlYnJ0YyAqLywKIAkJCQkwNzI5QjE0
RDE3Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovLAorCQkJCTQxNkEwNjhBMjNDQ0EyQTMwMDM0NzEw
OSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgKi8sCisJCQkJNDE2QTA2ODcy
M0NDOUNFODAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi8sCisJ
CQkJNDE2QTA2ODQyM0NDOUEyRDAwMzQ3MTA5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0uY3BwICovLAogCQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtLmggKi8sCiAJCQkJMDdCNzExNkExRDg5OUU2MzAwOUYwRkZCIC8qIENh
cHR1cmVEZXZpY2UuaCAqLywKIAkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwICovLApAQCAtMTYyMzgsOCArMTYyNDUsOCBAQAogCQkwNzI5QjE0
RDE3Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKLQkJCQkwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcCAqLywKLQkJCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAx
RTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8sCisJCQkJNDE2QTA2
ODYyM0NDOUM2MjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2Eu
Y3BwICovLAorCQkJCTQxNkEwNjg5MjNDQ0ExMTQwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckNvY29hLmggKi8sCiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1IC8q
IEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLywKIAkJCQkwNzAzNjNEQjE4MUExQ0RDMDBDMDc0
QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSAqLywKIAkJCQkwNzAzNjNERTE4MUExQ0RD
MDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLywKQEAgLTI4OTQ0LDYgKzI4OTUx
LDcgQEAKIAkJCQlBMTQwNjE4QzFFMkVDQTBBMDAzMkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MTU2MTBCMjM0QzFCNDkwMDhGQzdBQiAvKiBN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
QTVGM0I4RDE2Q0MzM0QxMDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2su
aCBpbiBIZWFkZXJzICovLAorCQkJCTQxNDU5OENEMjNDQzdGNDEwMDJCOUNDOCAvKiBSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzYzRjNGMUUyMDUy
MzQwMDFENThERSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKQEAgLTI5MDkxLDYgKzI5MDk5LDcgQEAKIAkJCQlDRDJGNEEyODE4RDhB
MzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGREUyRDU1QjE1OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjAxMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDE2QTA2ODgyM0NDOUNGODAwMzQ3MTA5IC8qIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxMzEyQjAy
Njc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxNjEy
QjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
MzE2MDE4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVPdXRwdXQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjkxMTcsNyArMjkxMjYsNiBAQAogCQkJCUNERTNBODU4MTdGNjAyMDQwMEM1QkUyMCAv
KiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTRBNzYz
MTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDdENkE0RjgxQkYyMzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTM3MkQzRTU2MjE2NTc4
QUUwMEM1RTAyMSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDhCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1V0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NjExMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRGNzEzQTBENUE2RjEwMDAw
MThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURh
dGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBs
ZURhdGFTb3VyY2UuaAppbmRleCBhYTU2OGMyZjQ2MTFmN2M2YjkxM2RjZGYwZDgzMzU0NDU0NDJk
M2VlLi4zMjZjOWJjMmE5YThjZTA2NTQzNjM3NTBkZmIzZmJmNTBlYzU4ZmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5oCkBAIC00Miw3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogY2xhc3MgQ0FSaW5nQnVmZmVyOwotY2xhc3MgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU7CiAKIGNsYXNzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb1NhbXBsZURhdGFTb3VyY2UsIFdURjo6RGVz
dHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApA
QCAtNTAsNyArNDksNyBAQCBjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2UgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9TYW1wbGVEYXRhU291cmNlLAogI2VuZGlmCiAgICAgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBjcmVhdGUoc2l6
ZV90LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8QXVkaW9TYW1w
bGVEYXRhU291cmNlPiBjcmVhdGUoc2l6ZV90LCBXVEY6OkxvZ2dlckhlbHBlciYpOwogCiAgICAg
fkF1ZGlvU2FtcGxlRGF0YVNvdXJjZSgpOwogCkBAIC04MSw3ICs4MCw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiBwcml2YXRlOgotICAgIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShzaXplX3QsIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJik7CisgICAgQXVkaW9TYW1wbGVEYXRhU291cmNlKHNpemVfdCwg
TG9nZ2VySGVscGVyJik7CiAKICAgICBPU1N0YXR1cyBzZXR1cENvbnZlcnRlcigpOwogICAgIGJv
b2wgcHVsbFNhbXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3QmLCB1aW50NjRf
dCwgZG91YmxlLCBQdWxsTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCA0MWFmZTM5ZjIz
MmFlNTg4MDg2MGYwODRkNTU2Y2I0YTVkOGFlMjVhLi5hZGQ2ZDYwMGM3Y2Q2YWI2OGRjNGMwNjg1
NWM0NTI2MTU2MjUxYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTQ2LDE5ICs0NiwyMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAotUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpjcmVhdGUoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmIHRyYWNrKQorUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpjcmVhdGUoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGVscGVyJiBs
b2dnZXJIZWxwZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9TYW1wbGVEYXRh
U291cmNlKG1heGltdW1TYW1wbGVDb3VudCwgdHJhY2spKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBdWRpb1NhbXBsZURhdGFTb3VyY2UobWF4aW11bVNhbXBsZUNvdW50LCBsb2dnZXJIZWxw
ZXIpKTsKIH0KIAotQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2Uo
c2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNr
KQorQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2Uoc2l6ZV90IG1h
eGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGVscGVyJiBsb2dnZXJIZWxwZXIpCiAgICAgOiBtX2lu
cHV0U2FtcGxlT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fbWF4aW11
bVNhbXBsZUNvdW50KG1heGltdW1TYW1wbGVDb3VudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICAsIG1fbG9nZ2VyKHRyYWNrLmxvZ2dlcigpKQotICAgICwgbV9sb2dJZGVudGlmaWVy
KHRyYWNrLmxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fbG9nZ2VyKGxvZ2dlckhlbHBlci5sb2dn
ZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihsb2dnZXJIZWxwZXIubG9nSWRlbnRpZmllcigp
KQogI2VuZGlmCiB7CisjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0o
bG9nZ2VySGVscGVyKTsKKyNlbmRpZgogfQogCiBBdWRpb1NhbXBsZURhdGFTb3VyY2U6On5BdWRp
b1NhbXBsZURhdGFTb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCmluZGV4IGVkNzk5M2Q4YWRhNDY1YWRmMzg2Mjg0ODVj
NDc3MTNmMTRjNjJiZmQuLjBlZmJmMzNiYzgyOTJhMzhlZTBiYTYxZGM4ZWE1MTQ0OTJkNDdjMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0
ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZh
dGVCYXNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogY2xhc3MgVHJhY2tQcml2YXRlQmFz
ZQogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYWNrUHJpdmF0ZUJhc2UsIFdU
Rjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0g
ICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgogI2Vu
ZGlmCiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tQcml2YXRlQmFzZSk7CkBAIC03
Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7CisgICAgdmly
dHVhbCB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7CiAgICAgY29u
c3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVy
biAqbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYg
bG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCBm
OGQ3MzkxOWZlNDhmYzZhODlmYTI3NWYxN2M1MDNkZmNmZWE1NWI5Li5kOWFmMjdhNjAxMGQ3OTg4
NjYyNTJlZWUzOGE1YzUwNWU3YWViODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBDbG9jazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E7CitjbGFzcyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtOwogY2xhc3MgQVZWaWRlb0NhcHR1cmVTb3VyY2U7CiBjbGFzcyBNZWRp
YVNvdXJjZVByaXZhdGVDbGllbnQ7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwpAQCAt
MjI4LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBDdXJyZW50RnJhbWVQYWludGVy
IG1faW1hZ2VQYWludGVyOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E+PiBtX2F1ZGlvVHJhY2tNYXA7CisgICAgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNr
TWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKIAogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUg
bV9uZXR3b3JrU3RhdGUgeyBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDRiMzE5NWJlN2I5ZDdkZjg2MDZmOTE3ZmNiMDFi
NDE2YTNiYWQzNjEuLmRmOWUyMDU3YThiNjk5ZDcyZTYyNjI2MDMwOGEwOWNlZjU2NTJkNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKLSNpbXBvcnQgIkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oIgorI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgiCkBAIC03
ODMsNyArNzgzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnVwZGF0ZVRyYWNrcygpCiB7CiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3IgY3Vy
cmVudFRyYWNrcyA9IG1fbWVkaWFTdHJlYW1Qcml2YXRlLT50cmFja3MoKTsKIAotICAgIGF1dG8g
c2V0QXVkaW9UcmFja1N0YXRlID0gW3RoaXNdKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYSYgdHJhY2ssIGludCBpbmRleCwgVHJhY2tTdGF0ZSBzdGF0ZSkKKyAgICBhdXRvIHNldEF1
ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtJiB0cmFj
aywgaW50IGluZGV4LCBUcmFja1N0YXRlIHN0YXRlKQogICAgIHsKICAgICAgICAgc3dpdGNoIChz
dGF0ZSkgewogICAgICAgICBjYXNlIFRyYWNrU3RhdGU6OlJlbW92ZToKQEAgLTgwMiw3ICs4MDIs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJh
Y2tzKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfTsKLSAgICB1cGRhdGVU
cmFja3NPZlR5cGUobV9hdWRpb1RyYWNrTWFwLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpB
dWRpbywgY3VycmVudFRyYWNrcywgJkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6
Y3JlYXRlLCBXVEZNb3ZlKHNldEF1ZGlvVHJhY2tTdGF0ZSkpOworICAgIHVwZGF0ZVRyYWNrc09m
VHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBj
dXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlLCBXVEZN
b3ZlKHNldEF1ZGlvVHJhY2tTdGF0ZSkpOwogCiAgICAgYXV0byBzZXRWaWRlb1RyYWNrU3RhdGUg
PSBbdGhpc10oVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSYgdHJhY2ssIGludCBpbmRleCwg
VHJhY2tTdGF0ZSBzdGF0ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZjcyZDc2MGY3Njg0Zjc1NDFjNWNlYjIxMDI3MzE1ZjA5MmRkYWYz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKKyNpbmNsdWRlIDxBdWRpb1Rv
b2xib3gvQXVkaW9Ub29sYm94Lmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVz
Lmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIE1lZGlhVGltZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uOworY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7CisKK2NsYXNzIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIDogcHVibGljIExvZ2dlckhlbHBlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gY3JlYXRlKCk7CisgICAgdmlydHVhbCB+
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFs
IHZvaWQgcHVzaFNhbXBsZXMoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGF1c2VkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TXV0ZWQoYm9vbCB2YWx1ZSkgeyBtX211dGVkID0gdmFsdWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsgfQorICAg
IGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2
b2lkKik7CisjZW5kaWYKKworcHJvdGVjdGVkOgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAor
ICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fbG9nZ2Vy
OyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nSWRlbnRpZmllcjsgfQorCisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIjsgfQorICAg
IFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisgICAg
Ym9vbCBpc011dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorCitwcml2YXRlOgorICAg
IC8vIE1haW4gdGhyZWFkIHdyaXRhYmxlIG1lbWJlcnMKKyAgICBib29sIG1fbXV0ZWQgeyBmYWxz
ZSB9OworICAgIGZsb2F0IG1fdm9sdW1lIHsgMSB9OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCog
bV9sb2dJZGVudGlmaWVyOworI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2OWUxY2I4MmI0ZDEyM2ZkZTkzYmNkYjdkMmQz
ZjM2ZmUzNTdmZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNwcApAQCAtMCwwICsxLDE1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbTo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBpZGVu
dGlmaWVyKQoreworICAgIFRyYWNrUHJpdmF0ZUJhc2U6OnNldExvZ2dlcihsb2dnZXIsIGlkZW50
aWZpZXIpOworICAgIG1fcmVuZGVyZXItPnNldExvZ2dlcihsb2dnZXIsIGlkZW50aWZpZXIpOwor
fQorI2VuZGlmCisKK0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OkF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQorICAgIDogbV9z
dHJlYW1UcmFjayh0cmFjaykKKyAgICAsIG1faWQodHJhY2suaWQoKSkKKyAgICAsIG1fbGFiZWwo
dHJhY2subGFiZWwoKSkKKyAgICAsIG1fdGltZWxpbmVPZmZzZXQoTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpKQorICAgICwgbV9yZW5kZXJlciB7IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
OjpjcmVhdGUoKSB9Cit7CisgICAgdHJhY2suYWRkT2JzZXJ2ZXIoKnRoaXMpOworfQorCitBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjp+QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSgp
Cit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
OjpjbGVhcigpCit7CisgICAgaWYgKG1faXNDbGVhcmVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2lzQ2xlYXJlZCA9IHRydWU7CisgICAgc3RyZWFtVHJhY2soKS5yZW1vdmVPYnNlcnZlcigq
dGhpcyk7CisKKyAgICBtX3JlbmRlcmVyLT5jbGVhcigpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OnBsYXlJbnRlcm5hbCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIGlmIChtX2lzUGxheWluZykKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9pc1BsYXlpbmcgPSB0cnVlOworICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKKworICAgIG1fcmVu
ZGVyZXItPnNldFBhdXNlZChmYWxzZSk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbTo6cGxheSgpCit7CisgICAgcGxheUludGVybmFsKCk7Cit9CisKK3ZvaWQgQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6cGF1c2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBpZiAoIW1faXNQbGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2lzUGxheWluZyA9IGZhbHNlOworICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKKworICAgIG1fcmVu
ZGVyZXItPnNldFBhdXNlZCh0cnVlKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQoreworICAgIG1fcmVuZGVyZXItPnNldFZv
bHVtZSh2b2x1bWUpOworfQorCitmbG9hdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjp2
b2x1bWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlbmRlcmVyLT52b2x1bWUoKTsKK30KKwor
Ly8gTWF5IGdldCBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KK3ZvaWQgQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJiwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGlmICghbV9pc1BsYXlpbmcpIHsKKyAg
ICAgICAgbV9yZW5kZXJlci0+c3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9yZW5kZXJlci0+cHVzaFNhbXBsZXMoc2FtcGxlVGltZSwgYXVkaW9EYXRhLCBkZXNjcmlwdGlv
biwgc2FtcGxlQ291bnQpOworCisgICAgaWYgKG1fYXV0b1BsYXkgJiYgIW1faGFzU3RhcnRlZEF1
dG9wbGF5KSB7CisgICAgICAgIG1faGFzU3RhcnRlZEF1dG9wbGF5ID0gdHJ1ZTsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7
CisgICAgICAgICAgICBpZiAobV9hdXRvUGxheSkKKyAgICAgICAgICAgICAgICBwbGF5SW50ZXJu
YWwoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW06OnRyYWNrTXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3sK
KyAgICB1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUoKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtOjp0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJikKK3sKKyAgICB1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUoKTsKK30KKwordm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjp1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUoKQorewor
ICAgIG1fcmVuZGVyZXItPnNldE11dGVkKG1faXNQbGF5aW5nICYmICFzdHJlYW1UcmFjaygpLm11
dGVkKCkgJiYgIXN0cmVhbVRyYWNrKCkuZW5kZWQoKSAmJiBzdHJlYW1UcmFjaygpLmVuYWJsZWQo
KSk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tFbmRlZChN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCit7CisgICAgcGF1c2UoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCmluZGV4IGRj
ZDNhZWMyNTQ5ZjM2ZWQzZWFjODFiM2UwNDlkNjQyNDlmOGI4ZmIuLmI3ZmE1NWY3ZWJkMDgyYmQ2
MWE5MDIwZWIxNmUwMmQwY2MxZjkyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmgKQEAgLTMyLDE5ICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0gOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUg
eworY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI7CisKK2NsYXNzIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0gZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUsIHBy
aXZhdGUgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKQogcHVibGljOgogICAgIHN0
YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4gY3JlYXRlKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiBzdHJlYW1UcmFjaykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oc3RyZWFtVHJhY2spKTsKICAg
ICB9Ci0KLSAgICBLaW5kIGtpbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBLaW5kOjpNYWlu
OyB9Ci0gICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0K
LSAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYWJlbDsg
fQotICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0
eUF0b20oKTsgfQotICAgIGludCB0cmFja0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pbmRleDsgfQorICAgIH5BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKCk7CiAKICAgICB2
b2lkIHNldFRyYWNrSW5kZXgoaW50IGluZGV4KSB7IG1faW5kZXggPSBpbmRleDsgfQogCkBAIC01
MywyMCArNTAsNTggQEAgcHVibGljOgogICAgIE1lZGlhVGltZSB0aW1lbGluZU9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZWxpbmVPZmZzZXQ7IH0KICAgICB2b2lkIHNldFRpbWVsaW5lT2Zm
c2V0KGNvbnN0IE1lZGlhVGltZSYgb2Zmc2V0KSB7IG1fdGltZWxpbmVPZmZzZXQgPSBvZmZzZXQ7
IH0KIAorICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHZvaWQgcGxheSgpOworICAgIHZvaWQgcGF1
c2UoKTsKKyAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisKKyAg
ICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgZmxvYXQgdm9sdW1lKCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQpIHsgbV9tdXRlZCA9IG11dGVkOyB9CisgICAgYm9v
bCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKSBm
aW5hbDsKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
Ci0gICAgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYgdHJhY2spCi0gICAgICAgIDogbV9zdHJlYW1UcmFjayh0cmFjaykKLSAgICAgICAgLCBtX2lk
KHRyYWNrLmlkKCkpCi0gICAgICAgICwgbV9sYWJlbCh0cmFjay5sYWJlbCgpKQotICAgICAgICAs
IG1fdGltZWxpbmVPZmZzZXQoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQotICAgIHsKLSAgICB9
CisgICAgZXhwbGljaXQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpOworCisgICAgLy8gQXVkaW9UcmFja1ByaXZhdGUKKyAgICBLaW5kIGtpbmQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBLaW5kOjpNYWluOyB9CisgICAgQXRvbVN0cmluZyBpZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBlbXB0eUF0b20oKTsgfQorICAgIGludCB0cmFja0luZGV4KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgLy8gTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU6Ok9ic2VydmVyCisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlv
RGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworICAg
IHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsOworICAgIHZv
aWQgdHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSAgZmluYWw7Cisg
ICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgIGZp
bmFsOworICAgIHZvaWQgdHJhY2tTZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmKSBmaW5hbCB7IH0KKworICAgIHZvaWQgcGxheUludGVybmFsKCk7CisgICAgdm9pZCB1cGRh
dGVSZW5kZXJlck11dGVkU3RhdGUoKTsKKworICAgIC8vIE1haW4gdGhyZWFkIHdyaXRhYmxlIG1l
bWJlcnMKKyAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXV0b1Bs
YXkgeyBmYWxzZSB9OworICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lz
Q2xlYXJlZCB7IGZhbHNlIH07CiAKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1f
c3RyZWFtVHJhY2s7CiAgICAgQXRvbVN0cmluZyBtX2lkOwogICAgIEF0b21TdHJpbmcgbV9sYWJl
bDsKICAgICBpbnQgbV9pbmRleCB7IDAgfTsKICAgICBNZWRpYVRpbWUgbV90aW1lbGluZU9mZnNl
dDsKKworICAgIC8vIEF1ZGlvIHRocmVhZCBtZW1iZXJzCisgICAgc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyPiBtX3JlbmRlcmVyOworICAgIGJvb2wgbV9oYXNT
dGFydGVkQXV0b3BsYXkgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRl
LmgKaW5kZXggMDA3MTZmZDBhNDU2MTRkZTZjZDhhYmFkZTA1OTBmMmJmMTBjMDI2ZS4uMTBiNjcw
M2NlYjNhOTg1NjlmOTQzNGI4MmJhYzUzZWRlYzhiY2I0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlIGZp
bmFsCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUs
IFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPgogICAgICwgcHVibGljIFJlYWx0
aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAg
LCBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgogI2VuZGlm
CiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjAxMjdmZjcyZGVjOWQ0MmE5NDAxNjFhYjY5MDQ4
MmExMDAyZTY3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcApAQCAt
MCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaCIKKworI2luY2x1ZGUg
IkF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oIgorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworI2luY2x1ZGUgPHBhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQXVkaW9Ub29sYm94
U1BJLmg+CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJD
b2NvYTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpID0gZGVmYXVsdDsKKwor
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6fkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyQ29jb2EoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJDb2NvYTo6c3RvcCgpCit7CisgICAgaWYgKCFtX2lzQXVkaW9Vbml0U3RhcnRlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcmVtb3RlSU9Vbml0KQorICAgICAgICBBdWRp
b091dHB1dFVuaXRTdG9wKG1fcmVtb3RlSU9Vbml0KTsKK30KKwordm9pZCBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hOjpjbGVhcigpCit7CisgICAgaWYgKG1fZGF0YVNvdXJjZSkK
KyAgICAgICAgbV9kYXRhU291cmNlLT5zZXRQYXVzZWQodHJ1ZSk7CisKKyAgICBpZiAobV9yZW1v
dGVJT1VuaXQpIHsKKyAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7
CisgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVtb3RlSU9Vbml0KTsK
KyAgICAgICAgbV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOworICAgIH0KKworICAgIG1fZGF0YVNv
dXJjZSA9IG51bGxwdHI7CisgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICBt
X291dHB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckNvY29hOjpzZXRQYXVzZWQoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX3BhdXNl
ZCA9IHZhbHVlOworICAgIGlmIChtX2RhdGFTb3VyY2UpCisgICAgICAgIG1fZGF0YVNvdXJjZS0+
c2V0UGF1c2VkKHZhbHVlKTsKK30KKworQXVkaW9Db21wb25lbnRJbnN0YW5jZSBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiBvdXRwdXREZXNjcmlwdGlvbikKK3sKKyAgICBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlIHJlbW90ZUlPVW5pdCB7IG51bGxwdHIgfTsKKworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3Jp
cHRpb24gaW9Vbml0RGVzY3JpcHRpb24geyBrQXVkaW9Vbml0VHlwZV9PdXRwdXQsIDAsIGtBdWRp
b1VuaXRNYW51ZmFjdHVyZXJfQXBwbGUsIDAsIDAgfTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIGlvVW5pdERlc2NyaXB0aW9uLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3Vi
VHlwZV9SZW1vdGVJTzsKKyNlbHNlCisgICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9uZW50U3Vi
VHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX0RlZmF1bHRPdXRwdXQ7CisjZW5kaWYKKworICAgIEF1
ZGlvQ29tcG9uZW50IGlvQ29tcG9uZW50ID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dChudWxscHRy
LCAmaW9Vbml0RGVzY3JpcHRpb24pOworICAgIEFTU0VSVChpb0NvbXBvbmVudCk7CisgICAgaWYg
KCFpb0NvbXBvbmVudCkgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJs
ZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNl
TmV3KGlvQ29tcG9uZW50LCAmcmVtb3RlSU9Vbml0KTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJv
ciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgVUludDMy
IHBhcmFtID0gMTsKKyAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQs
IGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywga0F1ZGlvVW5pdFNjb3BlX091dHB1
dCwgMCwgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGVuYWJsZSB2cGlvIHVuaXQgb3V0cHV0
LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyNlbmRpZgorCisgICAgQVVSZW5kZXJDYWxsYmFja1N0
cnVjdCBjYWxsYmFjayA9IHsgaW5wdXRQcm9jLCB0aGlzIH07CisgICAgZXJyID0gQXVkaW9Vbml0
U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2Fs
bGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxi
YWNrKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwg
InVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNwZWFrZXIgcHJvYywgZXJyb3IgPSAiLCBlcnIsICIg
KCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1E
ZXNjcmlwdGlvbigpKTsKKyAgICBlcnIgID0gQXVkaW9Vbml0R2V0UHJvcGVydHkocmVtb3RlSU9V
bml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5w
dXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmc2l6ZSk7Cisg
ICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0
byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBj
aGFyKikmZXJyLCAiKSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBv
dXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLm1TYW1wbGVSYXRlID0gQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgpOworCisgICAgZXJyID0gQXVkaW9V
bml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1E
ZXNjcmlwdGlvbigpLCBzaXplb2Yob3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24o
KSkpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1
bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAo
Y29uc3QgY2hhciopJmVyciwgIikiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShyZW1vdGVJT1VuaXQpOworICAgIGlmIChl
cnIpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpb1VuaXRJbml0aWFs
aXplKCkgZmFpbGVkLCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIp
Iik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiByZW1vdGVJ
T1VuaXQ7Cit9CisKKy8vIE1heSBnZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCit2
b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnB1c2hTYW1wbGVzKGNvbnN0
IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0
YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1w
bGVDb3VudCkKK3sKKyAgICBBU1NFUlQoZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigp
LnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSk7CisK
KyAgICBpZiAoIW1faW5wdXREZXNjcmlwdGlvbiB8fCAqbV9pbnB1dERlc2NyaXB0aW9uICE9IGRl
c2NyaXB0aW9uKSB7CisgICAgICAgIG1faXNBdWRpb1VuaXRTdGFydGVkID0gZmFsc2U7CisKKyAg
ICAgICAgaWYgKG1fcmVtb3RlSU9Vbml0KSB7CisgICAgICAgICAgICBBdWRpb091dHB1dFVuaXRT
dG9wKG1fcmVtb3RlSU9Vbml0KTsKKyAgICAgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VE
aXNwb3NlKG1fcmVtb3RlSU9Vbml0KTsKKyAgICAgICAgICAgIG1fcmVtb3RlSU9Vbml0ID0gbnVs
bHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7
CisgICAgICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBudWxscHRyOworCisgICAgICAgIENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiBpbnB1dERlc2NyaXB0aW9uID0gdG9DQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24oZGVzY3JpcHRpb24pOworICAgICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24g
b3V0cHV0RGVzY3JpcHRpb247CisKKyAgICAgICAgYXV0byByZW1vdGVJT1VuaXQgPSBjcmVhdGVB
dWRpb1VuaXQob3V0cHV0RGVzY3JpcHRpb24pOworICAgICAgICBpZiAoIXJlbW90ZUlPVW5pdCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtl
VW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oaW5wdXREZXNjcmlwdGlvbik7CisgICAg
ICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4ob3V0cHV0RGVzY3JpcHRpb24pOworCisgICAgICAgIG1fZGF0YVNvdXJjZSA9IEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKGRlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDIsICp0
aGlzKTsKKworICAgICAgICBpZiAobV9kYXRhU291cmNlLT5zZXRJbnB1dEZvcm1hdChpbnB1dERl
c2NyaXB0aW9uKSB8fCBtX2RhdGFTb3VyY2UtPnNldE91dHB1dEZvcm1hdChvdXRwdXREZXNjcmlw
dGlvbikpIHsKKyAgICAgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKHJlbW90
ZUlPVW5pdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
YXV0byBlcnJvciA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KHJlbW90ZUlPVW5pdCkpIHsKKyAgICAg
ICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiQXVkaW9PdXRwdXRVbml0U3RhcnQgZmFp
bGVkLCBlcnJvciA9ICIsIGVycm9yLCAiICgiLCAoY29uc3QgY2hhciopJmVycm9yLCAiKSIpOwor
ICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UocmVtb3RlSU9Vbml0KTsK
KyAgICAgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9IHRydWU7
CisKKyAgICAgICAgbV9kYXRhU291cmNlLT5zZXRWb2x1bWUodm9sdW1lKCkpOworICAgICAgICBt
X3JlbW90ZUlPVW5pdCA9IHJlbW90ZUlPVW5pdDsKKyAgICB9CisKKyAgICBtX2RhdGFTb3VyY2Ut
PnB1c2hTYW1wbGVzKHNhbXBsZVRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOworCisgICAg
aWYgKCFtX2lzQXVkaW9Vbml0U3RhcnRlZCkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1
ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fcmVtb3RlSU9Vbml0KSkgeworICAgICAgICAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJBdWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0g
IiwgZXJyb3IsICIgKCIsIChjb25zdCBjaGFyKikmZXJyb3IsICIpIik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOwor
ICAgIH0KK30KKworT1NTdGF0dXMgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6
cmVuZGVyKFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiBpb0RhdGEsIFVJbnQz
MiAvKmluQnVzTnVtYmVyKi8sIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiB0aW1lU3RhbXAsIEF1ZGlv
VW5pdFJlbmRlckFjdGlvbkZsYWdzJiBhY3Rpb25GbGFncykKK3sKKyAgICBpZiAoaXNNdXRlZCgp
IHx8IG1fcGF1c2VkIHx8ICFtX2RhdGFTb3VyY2UpIHsKKyAgICAgICAgQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0Ojp6ZXJvQUJMKGlvRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVDb3VudCAq
IG1fb3V0cHV0RGVzY3JpcHRpb24tPmJ5dGVzUGVyRnJhbWUoKSkpOworICAgICAgICBhY3Rpb25G
bGFncyA9IGtBdWRpb1VuaXRSZW5kZXJBY3Rpb25fT3V0cHV0SXNTaWxlbmNlOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBtX2RhdGFTb3VyY2UtPnB1bGxTYW1wbGVzKGlvRGF0YSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVDb3VudCksIHRpbWVTdGFtcC5tU2FtcGxlVGltZSwg
dGltZVN0YW1wLm1Ib3N0VGltZSwgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpDb3B5KTsKKworICAg
IHJldHVybiAwOworfQorCitPU1N0YXR1cyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdz
KiBhY3Rpb25GbGFncywgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVTdGFtcCwgVUludDMyIGlu
QnVzTnVtYmVyLCBVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQor
eworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hKj4odXNlckRhdGEpLT5yZW5kZXIoc2FtcGxlQ291bnQsICppb0RhdGEsIGluQnVzTnVtYmVy
LCAqdGltZVN0YW1wLCAqYWN0aW9uRmxhZ3MpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmExNDdhZDU3OTk0YWQyNTgwZmRlMjMwZjhlMTlhMDU2MmFkNDM0MGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291
cmNlOworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OworY2xhc3MgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uOworCitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hIDog
cHVibGljIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hKCk7CisgICAgfkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoKTsKKworcHJp
dmF0ZToKKyAgICAvLyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgIHZvaWQgcHVz
aFNhbXBsZXMoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQg
c3RvcCgpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKKyAgICB2b2lkIHNldFBhdXNl
ZChib29sKSBmaW5hbDsKKworICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCosIEF1
ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIg
aW5CdXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0Kik7Cisg
ICAgT1NTdGF0dXMgcmVuZGVyKFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0Jiwg
VUludDMyIGluQnVzTnVtYmVyLCBjb25zdCBBdWRpb1RpbWVTdGFtcCYsIEF1ZGlvVW5pdFJlbmRl
ckFjdGlvbkZsYWdzJik7CisKKyAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIGNyZWF0ZUF1ZGlv
VW5pdChDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mKTsKKworICAgIC8vIEF1ZGlvIHRocmVhZCBt
ZW1iZXJzCisgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSBtX3JlbW90ZUlPVW5pdCB7IG51bGxw
dHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX2lu
cHV0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKKworICAgIC8vIENyb3NzIHRocmVhZCBtZW1iZXJz
CisgICAgUmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9kYXRhU291cmNlOworICAgIGJv
b2wgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9wYXVzZWQgeyBm
YWxzZSB9OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAzODFmYzZj
M2E3MzE4MzkwNjVjNDk5ZTRlMmU5YWIzNzI2ZDJkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDI4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oIgotCi0jaW5jbHVkZSAi
QXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCi0jaW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRhU291cmNl
LmgiCi0jaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi0jaW5jbHVkZSA8cGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9BdWRpb1Rvb2xib3hT
UEkuaD4KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYShNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYgdHJhY2spCi0gICAgOiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKHRyYWNrKQot
ewotICAgIHRyYWNrLnNvdXJjZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKLX0KLQotQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjp+QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hKCkKLXsKLSAgICBjbGVhcigpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW1Db2NvYTo6Y2xlYXIoKQotewotICAgIGlmIChtX2lzQ2xlYXJlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9pc0NsZWFyZWQgPSB0cnVlOwotICAgIHN0cmVhbVRyYWNrKCkuc291cmNl
KCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaWYgKG1fZGF0YVNvdXJjZSkKLSAgICAg
ICAgbV9kYXRhU291cmNlLT5zZXRQYXVzZWQodHJ1ZSk7Ci0KLSAgICBpZiAobV9yZW1vdGVJT1Vu
aXQpIHsKLSAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7Ci0gICAg
ICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVtb3RlSU9Vbml0KTsKLSAgICAg
ICAgbV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOwotICAgIH0KLQotICAgIG1fZGF0YVNvdXJjZSA9
IG51bGxwdHI7Ci0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLSAgICBtX291dHB1
dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2E6OnBsYXlJbnRlcm5hbCgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLQotICAgIGlmIChtX2lzUGxheWluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc1Bs
YXlpbmcgPSB0cnVlOwotICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKLQotICAgIGlmIChtX2RhdGFT
b3VyY2UpCi0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0UGF1c2VkKGZhbHNlKTsKLX0KLQotdm9p
ZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXkoKQotewotICAgIHBsYXlJ
bnRlcm5hbCgpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6
cGF1c2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZiAoIW1faXNQ
bGF5aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUGxheWluZyA9IGZhbHNlOwotICAg
IG1fYXV0b1BsYXkgPSBmYWxzZTsKLQotICAgIGlmIChtX2RhdGFTb3VyY2UpCi0gICAgICAgIG1f
ZGF0YVNvdXJjZS0+c2V0UGF1c2VkKHRydWUpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKLXsKLSAgICBtX3ZvbHVt
ZSA9IHZvbHVtZTsKLSAgICBpZiAobV9kYXRhU291cmNlKQotICAgICAgICBtX2RhdGFTb3VyY2Ut
PnNldFZvbHVtZShtX3ZvbHVtZSk7Ci19Ci0KLUF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBvdXRwdXREZXNjcmlwdGlvbikKLXsKLSAgICBBdWRpb0NvbXBvbmVudElu
c3RhbmNlIHJlbW90ZUlPVW5pdCB7IG51bGxwdHIgfTsKLQotICAgIEF1ZGlvQ29tcG9uZW50RGVz
Y3JpcHRpb24gaW9Vbml0RGVzY3JpcHRpb24geyBrQXVkaW9Vbml0VHlwZV9PdXRwdXQsIDAsIGtB
dWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGUsIDAsIDAgfTsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlvVW5pdERlc2NyaXB0aW9uLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0
U3ViVHlwZV9SZW1vdGVJTzsKLSNlbHNlCi0gICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9uZW50
U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX0RlZmF1bHRPdXRwdXQ7Ci0jZW5kaWYKLQotICAg
IEF1ZGlvQ29tcG9uZW50IGlvQ29tcG9uZW50ID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dChudWxs
cHRyLCAmaW9Vbml0RGVzY3JpcHRpb24pOwotICAgIEFTU0VSVChpb0NvbXBvbmVudCk7Ci0gICAg
aWYgKCFpb0NvbXBvbmVudCkgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVu
YWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGlvQ29tcG9uZW50LCAmcmVtb3RlSU9Vbml0KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAg
ICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBl
cnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgVUlu
dDMyIHBhcmFtID0gMTsKLSAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1Vu
aXQsIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywga0F1ZGlvVW5pdFNjb3BlX091
dHB1dCwgMCwgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGVuYWJsZSB2cGlvIHVuaXQgb3V0
cHV0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSNlbmRpZgotCi0gICAgQVVSZW5kZXJDYWxsYmFj
a1N0cnVjdCBjYWxsYmFjayA9IHsgaW5wdXRQcm9jLCB0aGlzIH07Ci0gICAgZXJyID0gQXVkaW9V
bml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVy
Q2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZjYWxsYmFjaywgc2l6ZW9mKGNh
bGxiYWNrKSk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklF
UiwgInVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNwZWFrZXIgcHJvYywgZXJyb3IgPSAiLCBlcnIs
ICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJl
YW1EZXNjcmlwdGlvbigpKTsKLSAgICBlcnIgID0gQXVkaW9Vbml0R2V0UHJvcGVydHkocmVtb3Rl
SU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVf
SW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmc2l6ZSk7
Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJs
ZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25z
dCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICBvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLm1TYW1wbGVSYXRlID0gQXVk
aW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgpOwotCi0gICAgZXJyID0gQXVk
aW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFt
Rm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJl
YW1EZXNjcmlwdGlvbigpLCBzaXplb2Yob3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRp
b24oKSkpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICJ1bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yID0gIiwgZXJyLCAiICgi
LCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShyZW1vdGVJT1VuaXQpOwotICAgIGlm
IChlcnIpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpb1VuaXRJbml0
aWFsaXplKCkgZmFpbGVkLCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIs
ICIpIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiByZW1v
dGVJT1VuaXQ7Ci19Ci0KLS8vIE1heSBnZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQu
Ci12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZh
aWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBBU1NFUlQoZGVzY3JpcHRpb24ucGxhdGZvcm1E
ZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJh
c2ljVHlwZSk7Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5nKSB7Ci0gICAgICAgIGlmIChtX2lzQXVk
aW9Vbml0U3RhcnRlZCkgewotICAgICAgICAgICAgaWYgKG1fcmVtb3RlSU9Vbml0KQotICAgICAg
ICAgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOwotICAgICAgICAg
ICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2lucHV0RGVzY3JpcHRpb24gfHwgKm1faW5wdXREZXNj
cmlwdGlvbiAhPSBkZXNjcmlwdGlvbikgewotICAgICAgICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9
IGZhbHNlOwotCi0gICAgICAgIGlmIChtX3JlbW90ZUlPVW5pdCkgewotICAgICAgICAgICAgQXVk
aW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAgICBBdWRpb0NvbXBv
bmVudEluc3RhbmNlRGlzcG9zZShtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAgICBtX3JlbW90
ZUlPVW5pdCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2lucHV0RGVzY3JpcHRp
b24gPSBudWxscHRyOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLQot
ICAgICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gaW5wdXREZXNjcmlwdGlvbiA9IHRvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKLSAgICAgICAgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uIG91dHB1dERlc2NyaXB0aW9uOwotCi0gICAgICAgIGF1dG8gcmVtb3RlSU9V
bml0ID0gY3JlYXRlQXVkaW9Vbml0KG91dHB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgaWYgKCFy
ZW1vdGVJT1VuaXQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9pbnB1dERlc2Ny
aXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGlucHV0RGVzY3Jp
cHRpb24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKLQotICAgICAgICBtX2RhdGFT
b3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVS
YXRlKCkgKiAyLCBzdHJlYW1UcmFjaygpKTsKLQotICAgICAgICBpZiAobV9kYXRhU291cmNlLT5z
ZXRJbnB1dEZvcm1hdChpbnB1dERlc2NyaXB0aW9uKSB8fCBtX2RhdGFTb3VyY2UtPnNldE91dHB1
dEZvcm1hdChvdXRwdXREZXNjcmlwdGlvbikpIHsKLSAgICAgICAgICAgIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VEaXNwb3NlKHJlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KHJl
bW90ZUlPVW5pdCkpIHsKLSAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiQXVk
aW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkLCBlcnJvciA9ICIsIGVycm9yLCAiICgiLCAoY29uc3Qg
Y2hhciopJmVycm9yLCAiKSIpOwotICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURp
c3Bvc2UocmVtb3RlSU9Vbml0KTsKLSAgICAgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51
bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2lzQXVk
aW9Vbml0U3RhcnRlZCA9IHRydWU7Ci0KLSAgICAgICAgbV9kYXRhU291cmNlLT5zZXRWb2x1bWUo
bV92b2x1bWUpOwotICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IHJlbW90ZUlPVW5pdDsKLSAgICB9
Ci0KLSAgICBtX2RhdGFTb3VyY2UtPnB1c2hTYW1wbGVzKHNhbXBsZVRpbWUsIGF1ZGlvRGF0YSwg
c2FtcGxlQ291bnQpOwotCi0gICAgaWYgKG1fYXV0b1BsYXkgJiYgIW1faGFzU3RhcnRlZEF1dG9w
bGF5KSB7Ci0gICAgICAgIG1faGFzU3RhcnRlZEF1dG9wbGF5ID0gdHJ1ZTsKLSAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0g
ICAgICAgICAgICBpZiAobV9hdXRvUGxheSkKLSAgICAgICAgICAgICAgICBwbGF5SW50ZXJuYWwo
KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2lzQXVkaW9Vbml0U3RhcnRlZCkg
ewotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fcmVtb3Rl
SU9Vbml0KSkgewotICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpb091
dHB1dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0gIiwgZXJyb3IsICIgKCIsIChjb25zdCBjaGFy
KikmZXJyb3IsICIpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
bV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOwotICAgIH0KLX0KLQotdm9pZCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNvdXJjZVN0b3BwZWQoKQotewotICAgIHBhdXNlKCk7
Ci19Ci0KLU9TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6cmVuZGVy
KFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiBpb0RhdGEsIFVJbnQzMiAvKmlu
QnVzTnVtYmVyKi8sIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiB0aW1lU3RhbXAsIEF1ZGlvVW5pdFJl
bmRlckFjdGlvbkZsYWdzJiBhY3Rpb25GbGFncykKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBvbiBhIGhpZ2gtcHJpb3JpdHkgYmFja2dyb3VuZCB0aHJlYWQuIFRoZSBmb2xsb3dp
bmcgcHJvdGVjdGVkVGhpcyBvYmplY3QgZW5zdXJlcyB0aGUgb2JqZWN0IGlzIG5vdAotICAgIC8v
IGRlc3Ryb3llZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIHRoaXMgZnVuY3Rpb24gZXhpdHMu
Ci0gICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYT4gcHJvdGVjdGVkVGhp
cyB7ICp0aGlzIH07Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5nIHx8IG1fbXV0ZWQgfHwgIW1fZGF0
YVNvdXJjZSB8fCBzdHJlYW1UcmFjaygpLm11dGVkKCkgfHwgc3RyZWFtVHJhY2soKS5lbmRlZCgp
IHx8ICFzdHJlYW1UcmFjaygpLmVuYWJsZWQoKSkgewotICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZl
ckxpc3Q6Onplcm9BQkwoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50ICog
bV9vdXRwdXREZXNjcmlwdGlvbi0+Ynl0ZXNQZXJGcmFtZSgpKSk7Ci0gICAgICAgIGFjdGlvbkZs
YWdzID0ga0F1ZGlvVW5pdFJlbmRlckFjdGlvbl9PdXRwdXRJc1NpbGVuY2U7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIG1fZGF0YVNvdXJjZS0+cHVsbFNhbXBsZXMoaW9EYXRhLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50KSwgdGltZVN0YW1wLm1TYW1wbGVUaW1lLCB0
aW1lU3RhbXAubUhvc3RUaW1lLCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkNvcHkpOwotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KLU9TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YTo6aW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyog
YWN0aW9uRmxhZ3MsIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lU3RhbXAsIFVJbnQzMiBpbkJ1
c051bWJlciwgVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
Kj4odXNlckRhdGEpLT5yZW5kZXIoc2FtcGxlQ291bnQsICppb0RhdGEsIGluQnVzTnVtYmVyLCAq
dGltZVN0YW1wLCAqYWN0aW9uRmxhZ3MpOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxNDU0ZWMxYmE4MTdmYmRiNjRiMzA2MGM5Zjgz
NTc3Yjg1OTNkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bS5oIgotI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb1Rvb2xib3guaD4KLSNpbmNsdWRlIDxD
b3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U7Ci1jbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q7Ci1j
bGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247Ci0KLWNsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EpCi1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E+IGNy
ZWF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFtVHJhY2spCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eo
c3RyZWFtVHJhY2spKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAgICB2b2lkIHBs
YXkoKTsKLSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBt
X2lzUGxheWluZzsgfQotCi0gICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOwotICAgIGZsb2F0IHZv
bHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9Ci0KLSAgICB2b2lkIHNldE11dGVkKGJv
b2wgbXV0ZWQpIHsgbV9tdXRlZCA9IG11dGVkOyB9Ci0gICAgYm9vbCBtdXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbXV0ZWQ7IH0KLQotcHJpdmF0ZToKLSAgICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2EoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKLSAgICB+QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hKCk7Ci0KLSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpP
YnNlcnZlcgotICAgIHZvaWQgc291cmNlU3RvcHBlZCgpIGZpbmFsOwotICAgIHZvaWQgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7Ci0KLSAgICBz
dGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50MzIgbnVt
YmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCopOwotICAgIE9TU3RhdHVzIHJlbmRlcihVSW50
MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIFVJbnQzMiBpbkJ1c051bWJlciwgY29u
c3QgQXVkaW9UaW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOwotCi0gICAg
QXVkaW9Db21wb25lbnRJbnN0YW5jZSBjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJik7Ci0gICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChB
dWRpb0J1ZmZlckxpc3QmLCBzaXplX3QpOwotICAgIHZvaWQgcGxheUludGVybmFsKCk7Ci0KLSNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hIjsg
fQotI2VuZGlmCi0KLSAgICAvLyBBdWRpbyB0aHJlYWQgbWVtYmVycwotICAgIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2UgbV9yZW1vdGVJT1VuaXQgeyBudWxscHRyIH07Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRp
b247Ci0gICAgYm9vbCBtX2lzQXVkaW9Vbml0U3RhcnRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2hhc1N0YXJ0ZWRBdXRvcGxheSB7IGZhbHNlIH07Ci0KLSAgICAvLyBDcm9zcyB0aHJlYWQgbWVt
YmVycwotICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fZGF0YVNvdXJjZTsKLQot
ICAgIC8vIE1haW4gdGhyZWFkIHdyaXRhYmxlIG1lbWJlcnMKLSAgICBmbG9hdCBtX3ZvbHVtZSB7
IDEgfTsKLSAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1fYXV0b1Bs
YXkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lz
Q2xlYXJlZCB7IGZhbHNlIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJB
Q0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387516</attachid>
            <date>2020-01-13 05:44:40 -0800</date>
            <delta_ts>2020-01-13 05:59:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206172-20200113144438.patch</filename>
            <type>text/plain</type>
            <size>63674</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhNjVjNjY5MWY0ZmQw
ZDAzOGE0MzYzMDU3NzMxMjllZDdmNGFlNC4uYjAwNzc1ZTg0NzI3MmVlNTY3MGI0YmI1MzI2ZGFi
YzNhMjZkMmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTAxLTEzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgdG8gaW1wbGVtZW50IHJlbW90ZSBhdWRpbyByZW5kZXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yIGNvZGUgdG8gYWxsb3cgaW4gdGhlIGZ1dHVyZSByZW5kZXJpbmcgb2YgbWVkaWEgc3RyZWFt
IGF1ZGlvIHRyYWNrcyBpbiBhIHJlbW90ZSBwcm9jZXNzLgorICAgICAgICBGb3IgdGhhdCBwdXJw
b3NlLCBzcGx1dCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZnVuY3Rpb25hbGl0
eSBpbiB0d28gcGFydHMuCisgICAgICAgIFRoZSBmaXJzdCBwYXJ0IGlzIG1vdmVkIGJhY2sgdG8g
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS4KKyAgICAgICAgVGhlIHNlY29uZCBwYXJ0IGlz
IHBsYXRmb3JtIHNwZWNpZmljIGFuZCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIGFuIGludGVyZmFj
ZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgICAgICBhbmQgYW4gaW4gcHJvY2Vz
cyBpbXBsZW1lbnRhdGlvbiBuYW1lZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
LgorCisgICAgICAgIE1ha2UgVHJhY2tQcml2YXRlQmFzZSBhbmQgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgcHVibGljIExvZ2dlckhlbHBlci4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFraW5nIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIGFuZCBBdWRpb1NhbXBsZURhdGFTb3VyY2UgdG8g
dGFrZSBhIExvZ2dlckhlbHBlciBpbnN0ZWFkIG9mIGEgZGVyaXZlZCBpbnN0YW5jZS4KKworICAg
ICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6QXVkaW9TYW1w
bGVEYXRhU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldE11dGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRWb2x1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnZvbHVtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6aXNNdXRl
ZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6fkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OnZvbHVtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtOjp1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tFbmRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0UGF1c2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0ZUF1ZGlvVW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmg6IFJlbW92ZWQuCisKIDIwMjAtMDEtMTIgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0LWluZGVudCB3aXRoIHBlcmNlbnRhZ2UgdmFs
dWUgc2hvdWxkIHJlc29sdmUgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIHdpZHRoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDQxMTIxNTU3YWU2ZjM1ZGI5YWQ1ZjRjMWU4YWNjY2EwODY2M2U2ZmIuLmM1N2JkOTEz
ZjQ0M2ZjM2M3ZTA2ZGZlOTI1MDNmNzg3NmVlYTcyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcw
LDYgKzE5NzAsNyBAQCBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGll
c0xvZ2dpbmcuY3BwCiAKIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcAogCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBlNDUzZDg5MDk3ZTY4NmIyYzMzNTJiYWQ2NmVlNzEyMzQ3YzE2NmI1Li5kYzYw
OWZjYzZhNGYxOGU4N2NlN2NjYjNiODE1NzM1ZDhkZmRjMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTQ4NSwxMSArNDg1LDEzIEBAIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQogCiBwbGF0Zm9ybS9tZWRpYXNlc3Np
b24vbWFjL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tCiAKK3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLm1tCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9Db3JlQXVkaW9DYXB0dXJlU291cmNl
SU9TLm1tIEBuby11bmlmeQogCi1wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDliYjg0MzE0NTM5
YWQwOTUxNDYzMWIyMTMwNjE2YWY2MGJhOWExYzMuLjljYmNjN2IzN2Y5NWUyZGUwNDJkNGZlOWRm
ZTY2NWE0MWZiOWJkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMDAsNyArMTAwMCw2IEBACiAJCTM3MkMwMEQ5MTI5NjE5
RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzcyQzAwRDgxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcy
RDNFNTQyMTY1NzhBRTAwQzVFMDIxIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwMDc4MjFCODIwRUM4MDAyQzVBNkUg
LyogRGF0YVVSTERlY29kZXIuaCAqLzsgfTsKIAkJMzcyRDNFNTUyMTY1NzhBRTAwQzVFMDIxIC8q
IFNjcmlwdE1vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRl
ci5oICovOyB9OwotCQkzNzJEM0U1NjIxNjU3OEFFMDBDNUUwMjEgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hLmggKi87IH07CiAJCTM3MkQzRTU3MjE2NTc4QUUwMEM1RTAyMSAvKiBO
YXZpZ2F0b3JDcmVkZW50aWFscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdEODQ2MjYxRkU4OTVGODAwQ0EzNjgyIC8qIE5hdmlnYXRvckNyZWRlbnRp
YWxzLmggKi87IH07CiAJCTM3NUNEMjMyMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1Q0QyMzEx
MTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi87IH07CiAJCTM3NzRBQkE1MEZBMjFF
QjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAv
KiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTQ3Miw3ICs1NDcxLDYgQEAKIAkJMDc2OTcwODQxNDYz
QUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0
ZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tQcml2
YXRlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NkVDMTMyMUU0NEYy
Q0IwMEU1RDgxMyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4
MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3
MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyog
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1NTIsNyArNTU1MCw2IEBACiAJCTA3QjcxMTZDMUQ4OTlF
NjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0I5M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3QjkzRkZCMjNCOTJBQUIwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1JTUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0ZWRD
b25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFMTFCRkI2
MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBCRDIyNTYgLyogUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM4OCw2ICs3Mzg1LDExIEBACiAJCTQx
NjJBNDRGMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyog
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTZBMDY5MjIzQ0NBQTkzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxNkEwNjkzMjNDQ0FBOTQwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTZBMDY5NDIzQ0NBQTlFMDAzNDcxMDkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2
QTA2OTUyM0NDQUE5RTAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2QTA2OTYy
M0NDQUE5RjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkNFNEE0MjI5REYxMkUwMEE4QTY4
NiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJDM0MyMDA0
QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZldGNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYx
NjEsNiArMTYxNjMsOSBAQAogCQkJCUNEQzY3NTFGMUVBRUE5OTYwMDcyN0M4NCAvKiBpb3MgKi8s
CiAJCQkJNDE1NzQ3NDIxRTM4Njk4MDAwRTkxNEQ4IC8qIGxpYndlYnJ0YyAqLywKIAkJCQkwNzI5
QjE0RDE3Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovLAorCQkJCTQxNkEwNjk1MjNDQ0FBOUUwMDM0
NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgKi8sCisJCQkJNDE2QTA2
OTYyM0NDQUE5RjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi8s
CisJCQkJNDE2QTA2OTQyM0NDQUE5RTAwMzQ3MTA5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0uY3BwICovLAogCQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8sCiAJCQkJMDdCNzExNkExRDg5OUU2MzAwOUYwRkZCIC8q
IENhcHR1cmVEZXZpY2UuaCAqLywKIAkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIgLyogQ2Fw
dHVyZURldmljZU1hbmFnZXIuY3BwICovLApAQCAtMTYyMzQsOCArMTYyMzksOCBAQAogCQkwNzI5
QjE0RDE3Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQkwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcCAqLywKLQkJCQkwN0MwNDZDNjFFNDI1MTJGMDA3
MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8sCisJCQkJNDE2
QTA2OTMyM0NDQUE5NDAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2EuY3BwICovLAorCQkJCTQxNkEwNjkyMjNDQ0FBOTMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hLmggKi8sCiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1
IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLywKIAkJCQkwNzAzNjNEQjE4MUExQ0RDMDBD
MDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSAqLywKIAkJCQkwNzAzNjNERTE4MUEx
Q0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLywKQEAgLTI5MTEwLDcgKzI5
MTE1LDYgQEAKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0QTc2MzE4MEY5RjcwMDBCMDc2Qzkg
LyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3RDZBNEY4MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmggaW4gSGVhZGVycyAqLywKLQkJCQkzNzJEM0U1NjIxNjU3OEFFMDBDNUUwMjEgLyogQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMx
NjA4QjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdFRTY4NDYxMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0RjcxM0EwRDVBNkYxMDAwMDE4RDY5IC8qIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5k
ZXggYWE1NjhjMmY0NjExZjdjNmI5MTNkY2RmMGQ4MzM1NDQ1NDQyZDNlZS4uMzI2YzliYzJhOWE4
Y2UwNjU0MzYzNzUwZGZiM2ZiZjUwZWM1OGZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaApAQCAtNDIs
NyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbjsKIGNsYXNzIENBUmluZ0J1ZmZlcjsKLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOwogCiBjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8QXVkaW9TYW1wbGVEYXRhU291cmNlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpN
YWluUnVuTG9vcD4KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTUwLDcgKzQ5LDcgQEAg
Y2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSwKICNlbmRpZgogICAgIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gY3JlYXRlKHNpemVfdCwgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmKTsKKyAgICBzdGF0aWMgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gY3Jl
YXRlKHNpemVfdCwgV1RGOjpMb2dnZXJIZWxwZXImKTsKIAogICAgIH5BdWRpb1NhbXBsZURhdGFT
b3VyY2UoKTsKIApAQCAtODEsNyArODAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToK
LSAgICBBdWRpb1NhbXBsZURhdGFTb3VyY2Uoc2l6ZV90LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYpOworICAgIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShzaXplX3QsIExvZ2dlckhlbHBlciYpOwog
CiAgICAgT1NTdGF0dXMgc2V0dXBDb252ZXJ0ZXIoKTsKICAgICBib29sIHB1bGxTYW1wbGVzSW50
ZXJuYWwoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90JiwgdWludDY0X3QsIGRvdWJsZSwgUHVsbE1v
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggNDFhZmUzOWYyMzJhZTU4ODA4NjBmMDg0ZDU1
NmNiNGE1ZDhhZTI1YS4uYWRkNmQ2MDBjN2NkNmFiNjhkYzRjMDY4NTVjNDUyNjE1NjI1MWFmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC00NiwxOSArNDYsMjIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLVJlZjxB
dWRpb1NhbXBsZURhdGFTb3VyY2U+IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKHNpemVf
dCBtYXhpbXVtU2FtcGxlQ291bnQsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKK1Jl
ZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKHNp
emVfdCBtYXhpbXVtU2FtcGxlQ291bnQsIExvZ2dlckhlbHBlciYgbG9nZ2VySGVscGVyKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShtYXhpbXVtU2Ft
cGxlQ291bnQsIHRyYWNrKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9TYW1wbGVE
YXRhU291cmNlKG1heGltdW1TYW1wbGVDb3VudCwgbG9nZ2VySGVscGVyKSk7CiB9CiAKLUF1ZGlv
U2FtcGxlRGF0YVNvdXJjZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlKHNpemVfdCBtYXhpbXVtU2Ft
cGxlQ291bnQsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKK0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlKHNpemVfdCBtYXhpbXVtU2FtcGxlQ291bnQs
IExvZ2dlckhlbHBlciYgbG9nZ2VySGVscGVyKQogICAgIDogbV9pbnB1dFNhbXBsZU9mZnNldChN
ZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCiAgICAgLCBtX21heGltdW1TYW1wbGVDb3VudChtYXhp
bXVtU2FtcGxlQ291bnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBtX2xvZ2dl
cih0cmFjay5sb2dnZXIoKSkKLSAgICAsIG1fbG9nSWRlbnRpZmllcih0cmFjay5sb2dJZGVudGlm
aWVyKCkpCisgICAgLCBtX2xvZ2dlcihsb2dnZXJIZWxwZXIubG9nZ2VyKCkpCisgICAgLCBtX2xv
Z0lkZW50aWZpZXIobG9nZ2VySGVscGVyLmxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogeworI2lm
IFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKGxvZ2dlckhlbHBlcik7Cisj
ZW5kaWYKIH0KIAogQXVkaW9TYW1wbGVEYXRhU291cmNlOjp+QXVkaW9TYW1wbGVEYXRhU291cmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJp
dmF0ZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0
ZUJhc2UuaAppbmRleCBlZDc5OTNkOGFkYTQ2NWFkZjM4NjI4NDg1YzQ3NzEzZjE0YzYyYmZkLi4w
ZWZiZjMzYmM4MjkyYTM4ZWUwYmE2MWRjOGVhNTE0NDkyZDQ3YzMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCkBAIC00OCw3
ICs0OCw3IEBAIHB1YmxpYzoKIGNsYXNzIFRyYWNrUHJpdmF0ZUJhc2UKICAgICA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxUcmFja1ByaXZhdGVCYXNlLCBXVEY6OkRlc3RydWN0aW9uVGhy
ZWFkOjpNYWluPgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgcHJpdmF0ZSBMb2dn
ZXJIZWxwZXIKKyAgICAsIHB1YmxpYyBMb2dnZXJIZWxwZXIKICNlbmRpZgogewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRyYWNrUHJpdmF0ZUJhc2UpOwpAQCAtNzMsNyArNzMsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdm9pZCBzZXRMb2dn
ZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dn
ZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOwogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2Vy
KCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgp
OyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nSWRlbnRpZmllcjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25z
dCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggYmM1ZjM5MWI2NTIwYjAzMWI2
ZTZjODU1NWRhOWMzZTIyMDM5NDA5MS4uMmZkM2U3MzFlZWE2ZTM2MzRjYzg3ZDMxYzQzN2Y4Yzdj
MDYyZmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xh
c3MgQ2xvY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hOworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTsK
IGNsYXNzIEFWVmlkZW9DYXB0dXJlU291cmNlOwogY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQ2xp
ZW50OwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKQEAgLTI0OSw3ICsyNDksNyBAQCBw
cml2YXRlOgogICAgIH07CiAgICAgQ3VycmVudEZyYW1lUGFpbnRlciBtX2ltYWdlUGFpbnRlcjsK
IAotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hPj4gbV9hdWRpb1RyYWNrTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4+IG1fYXVkaW9UcmFja01hcDsKICAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+PiBtX3ZpZGVvVHJh
Y2tNYXA7CiAgICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA2YzVmNTBiNGRhMDBkMjEwMmJhZGUz
Nzk0ZjlkZGQwYmQ0MTkyNjYzLi5jNWVkMGE2M2JiZTlmZmZkN2U2MjFhN2NkNDMzZDgyMWZkZmQx
NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCi0jaW1wb3J0ICJB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKKyNpbXBvcnQgIkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1w
b3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKQEAgLTEwMzMs
NyArMTAzMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVUcmFja3MoKQogewogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yIGN1cnJl
bnRUcmFja3MgPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCk7CiAKLSAgICBhdXRvIHNl
dEF1ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2EmIHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUpCisgICAgYXV0byBzZXRBdWRp
b1RyYWNrU3RhdGUgPSBbdGhpc10oQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSYgdHJhY2ss
IGludCBpbmRleCwgVHJhY2tTdGF0ZSBzdGF0ZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoc3Rh
dGUpIHsKICAgICAgICAgY2FzZSBUcmFja1N0YXRlOjpSZW1vdmU6CkBAIC0xMDUyLDcgKzEwNTIs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJh
Y2tzKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfTsKLSAgICB1cGRhdGVU
cmFja3NPZlR5cGUobV9hdWRpb1RyYWNrTWFwLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpB
dWRpbywgY3VycmVudFRyYWNrcywgJkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6
Y3JlYXRlLCBXVEZNb3ZlKHNldEF1ZGlvVHJhY2tTdGF0ZSkpOworICAgIHVwZGF0ZVRyYWNrc09m
VHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBj
dXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlLCBXVEZN
b3ZlKHNldEF1ZGlvVHJhY2tTdGF0ZSkpOwogCiAgICAgYXV0byBzZXRWaWRlb1RyYWNrU3RhdGUg
PSBbdGhpc10oVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSYgdHJhY2ssIGludCBpbmRleCwg
VHJhY2tTdGF0ZSBzdGF0ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjUxNjQ5YTBhOGQ1ZmU3ZDM0YjE5MWM2Zjg5MWFmNDAyOWU2
YjQ4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7Citj
bGFzcyBNZWRpYVRpbWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXI6OlJlbmRlcmVyQ3JlYXRvciBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlcjo6bV9yZW5kZXJlckNyZWF0b3IgPSBudWxscHRyOwordm9pZCBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlcjo6c2V0Q3JlYXRvcihSZW5kZXJlckNyZWF0b3IgY3JlYXRvcikKK3sK
KyAgICBtX3JlbmRlcmVyQ3JlYXRvciA9IGNyZWF0b3I7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI6OmNyZWF0ZSgpCit7CisgICAgaWYgKG1fcmVuZGVyZXJDcmVhdG9yKQorICAgICAgICByZXR1
cm4gbV9yZW5kZXJlckNyZWF0b3IoKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVy
biBtYWtlVW5pcXVlPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E+KCk7CisjZWxz
ZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldExvZ2dlcihjb25z
dCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikKK3sKKyAgICBtX2xvZ2dl
ciA9ICZsb2dnZXI7CisgICAgbV9sb2dJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKK30KKworV1RG
TG9nQ2hhbm5lbCYgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmxvZ0NoYW5uZWwoKSBj
b25zdAoreworICAgIHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2U5ODA5NGQxZWFmYjhhYWMx
NzlmZDYwODA2ODY4MDBjMjc1ZTgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaApAQCAt
MCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Ub29sYm94Lmg+CisjaW5jbHVkZSA8Q29y
ZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgor
CituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1lZGlhVGltZTsKK30KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworY2xhc3MgUGxhdGZvcm1BdWRp
b0RhdGE7CisKK2NsYXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIDogcHVibGljIExv
Z2dlckhlbHBlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gY3Jl
YXRlKCk7CisgICAgdmlydHVhbCB+QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIoKSA9IGRl
ZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGF1c2VkKGJvb2wpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKSA9IDA7CisgICAg
Ly8gTWF5IGJlIGNhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgorICAgIHZpcnR1YWwgdm9p
ZCBwdXNoU2FtcGxlcyhjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9E
YXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wgdmFsdWUpIHsgbV9tdXRlZCA9IHZhbHVlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1
bWU7IH0KKyAgICBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQorCisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2Vy
JiwgY29uc3Qgdm9pZCopOworI2VuZGlmCisKKyAgICB1c2luZyBSZW5kZXJlckNyZWF0b3IgPSBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+ICgqKSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldENyZWF0b3IoUmVuZGVyZXJDcmVhdG9yKTsK
KworcHJvdGVjdGVkOgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fbG9nZ2VyOyB9CisgICAgY29uc3Qg
dm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmll
cjsgfQorCisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIjsgfQorICAgIFdURkxvZ0NoYW5uZWwm
IGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisgICAgYm9vbCBpc011dGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBSZW5kZXJl
ckNyZWF0b3IgbV9yZW5kZXJlckNyZWF0b3I7CisKKyAgICAvLyBNYWluIHRocmVhZCB3cml0YWJs
ZSBtZW1iZXJzCisgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKKyAgICBmbG9hdCBtX3ZvbHVt
ZSB7IDEgfTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZlB0cjxjb25zdCBM
b2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRp
ZgorfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45N2Q5ZTY5ZDE1ZjA2NDIxYWJmOTRkNDQ4YzhlODg5ZDQ4NjAzNWZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5jcHAKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJiB0cmFjaykKKyAgICA6IG1fc3RyZWFtVHJhY2sodHJhY2spCisgICAgLCBtX2lkKHRy
YWNrLmlkKCkpCisgICAgLCBtX2xhYmVsKHRyYWNrLmxhYmVsKCkpCisgICAgLCBtX3RpbWVsaW5l
T2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKKyAgICAsIG1fcmVuZGVyZXIgeyBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6Y3JlYXRlKCkgfQoreworICAgIHRyYWNrLmFkZE9i
c2VydmVyKCp0aGlzKTsKK30KKworQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6fkF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oKQoreworICAgIGNsZWFyKCk7Cit9CisKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6c2V0
TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKQorewor
ICAgIFRyYWNrUHJpdmF0ZUJhc2U6OnNldExvZ2dlcihsb2dnZXIsIGlkZW50aWZpZXIpOworICAg
IG1fcmVuZGVyZXItPnNldExvZ2dlcihsb2dnZXIsIGlkZW50aWZpZXIpOworfQorI2VuZGlmCisK
K3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y2xlYXIoKQoreworICAgIGlmICht
X2lzQ2xlYXJlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0NsZWFyZWQgPSB0cnVlOwor
ICAgIHN0cmVhbVRyYWNrKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworCisgICAgbV9yZW5kZXJl
ci0+Y2xlYXIoKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpwbGF5
SW50ZXJuYWwoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9p
c1BsYXlpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKKyAg
ICBtX2F1dG9QbGF5ID0gZmFsc2U7CisKKyAgICBtX3JlbmRlcmVyLT5zZXRQYXVzZWQoZmFsc2Up
OworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnBsYXkoKQoreworICAg
IHBsYXlJbnRlcm5hbCgpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06
OnBhdXNlKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2lz
UGxheWluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAg
ICBtX2F1dG9QbGF5ID0gZmFsc2U7CisKKyAgICBtX3JlbmRlcmVyLT5zZXRQYXVzZWQodHJ1ZSk7
Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6c2V0Vm9sdW1lKGZsb2F0
IHZvbHVtZSkKK3sKKyAgICBtX3JlbmRlcmVyLT5zZXRWb2x1bWUodm9sdW1lKTsKK30KKworZmxv
YXQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dm9sdW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZW5kZXJlci0+dm9sdW1lKCk7Cit9CisKKy8vIE1heSBnZXQgY2FsbGVkIG9uIGEg
YmFja2dyb3VuZCB0aHJlYWQuCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlh
VGltZSYgc2FtcGxlVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3Vu
dCkKK3sKKyAgICBpZiAoIW1faXNQbGF5aW5nKSB7CisgICAgICAgIG1fcmVuZGVyZXItPnN0b3Ao
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVuZGVyZXItPnB1c2hTYW1wbGVz
KHNhbXBsZVRpbWUsIGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKKworICAg
IGlmIChtX2F1dG9QbGF5ICYmICFtX2hhc1N0YXJ0ZWRBdXRvcGxheSkgeworICAgICAgICBtX2hh
c1N0YXJ0ZWRBdXRvcGxheSA9IHRydWU7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICAgICAgaWYgKG1fYXV0
b1BsYXkpCisgICAgICAgICAgICAgICAgcGxheUludGVybmFsKCk7CisgICAgICAgIH0pOworICAg
IH0KK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjp0cmFja011dGVkQ2hh
bmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCit7CisgICAgdXBkYXRlUmVuZGVyZXJNdXRl
ZFN0YXRlKCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tF
bmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpCit7CisgICAgdXBkYXRlUmVu
ZGVyZXJNdXRlZFN0YXRlKCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bTo6dXBkYXRlUmVuZGVyZXJNdXRlZFN0YXRlKCkKK3sKKyAgICBtX3JlbmRlcmVyLT5zZXRNdXRl
ZChtX2lzUGxheWluZyAmJiAhc3RyZWFtVHJhY2soKS5tdXRlZCgpICYmICFzdHJlYW1UcmFjaygp
LmVuZGVkKCkgJiYgc3RyZWFtVHJhY2soKS5lbmFibGVkKCkpOworfQorCit2b2lkIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OnRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
KQoreworICAgIHBhdXNlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaAppbmRleCBkY2QzYWVjMjU0OWYzNmVkM2VhYzgxYjNl
MDQ5ZDY0MjQ5ZjhiOGZiLi5iN2ZhNTVmN2ViZDA4MmJkNjFhOTAyMGViMTZlMDJkMGNjMWY5MjE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCkBAIC0zMiwxOSArMzIsMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKK2NsYXNzIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyOworCitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtIGZp
bmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbSkKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFt
VHJhY2spCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtKHN0cmVhbVRyYWNrKSk7CiAgICAgfQotCi0gICAgS2luZCBraW5kKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gS2luZDo6TWFpbjsgfQotICAgIEF0b21TdHJpbmcgaWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgQXRvbVN0cmluZyBsYWJlbCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICBBdG9tU3RyaW5nIGxhbmd1
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZW1wdHlBdG9tKCk7IH0KLSAgICBpbnQgdHJh
Y2tJbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB+QXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbSgpOwogCiAgICAgdm9pZCBzZXRUcmFja0luZGV4KGludCBp
bmRleCkgeyBtX2luZGV4ID0gaW5kZXg7IH0KIApAQCAtNTMsMjAgKzUwLDU4IEBAIHB1YmxpYzoK
ICAgICBNZWRpYVRpbWUgdGltZWxpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5l
T2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRUaW1lbGluZU9mZnNldChjb25zdCBNZWRpYVRpbWUmIG9m
ZnNldCkgeyBtX3RpbWVsaW5lT2Zmc2V0ID0gb2Zmc2V0OyB9CiAKKyAgICB2b2lkIGNsZWFyKCk7
CisKKyAgICB2b2lkIHBsYXkoKTsKKyAgICB2b2lkIHBhdXNlKCk7CisgICAgYm9vbCBpc1BsYXlp
bmcoKSB7IHJldHVybiBtX2lzUGxheWluZzsgfQorCisgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQp
OworICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRNdXRlZChib29sIG11
dGVkKSB7IG1fbXV0ZWQgPSBtdXRlZDsgfQorICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVy
biBtX211dGVkOyB9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2b2lkIHNldExv
Z2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKikgZmluYWw7CisgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW0iOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgotICAgIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQotICAgICAgICA6IG1f
c3RyZWFtVHJhY2sodHJhY2spCi0gICAgICAgICwgbV9pZCh0cmFjay5pZCgpKQotICAgICAgICAs
IG1fbGFiZWwodHJhY2subGFiZWwoKSkKLSAgICAgICAgLCBtX3RpbWVsaW5lT2Zmc2V0KE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSkKLSAgICB7Ci0gICAgfQorICAgIGV4cGxpY2l0IEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKKworICAgIC8v
IEF1ZGlvVHJhY2tQcml2YXRlCisgICAgS2luZCBraW5kKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
S2luZDo6TWFpbjsgfQorICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lkOyB9CisgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFi
ZWw7IH0KKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZW1w
dHlBdG9tKCk7IH0KKyAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aW5kZXg7IH0KKworICAgIC8vIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlcgorICAg
IHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbDsKKyAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgIGZpbmFsOworICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hh
bmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpICBmaW5hbDsKKyAgICB2b2lkIHRyYWNrU2V0
dGluZ3NDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWwgeyB9CisKKyAgICB2
b2lkIHBsYXlJbnRlcm5hbCgpOworICAgIHZvaWQgdXBkYXRlUmVuZGVyZXJNdXRlZFN0YXRlKCk7
CisKKyAgICAvLyBNYWluIHRocmVhZCB3cml0YWJsZSBtZW1iZXJzCisgICAgYm9vbCBtX2lzUGxh
eWluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2F1dG9QbGF5IHsgZmFsc2UgfTsKKyAgICBib29s
IG1fbXV0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0NsZWFyZWQgeyBmYWxzZSB9OwogCiAg
ICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX3N0cmVhbVRyYWNrOwogICAgIEF0b21T
dHJpbmcgbV9pZDsKICAgICBBdG9tU3RyaW5nIG1fbGFiZWw7CiAgICAgaW50IG1faW5kZXggeyAw
IH07CiAgICAgTWVkaWFUaW1lIG1fdGltZWxpbmVPZmZzZXQ7CisKKyAgICAvLyBBdWRpbyB0aHJl
YWQgbWVtYmVycworICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcj4gbV9yZW5kZXJlcjsKKyAgICBib29sIG1faGFzU3RhcnRlZEF1dG9wbGF5IHsgZmFsc2Ug
fTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCmluZGV4IDAwNzE2ZmQwYTQ1NjE0
ZGU2Y2Q4YWJhZGUwNTkwZjJiZjEwYzAyNmUuLjEwYjY3MDNjZWIzYTk4NTY5Zjk0MzRiODJiYWM1
M2VkZWM4YmNiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSBmaW5hbAogICAgICwgcHVibGljIENhbk1h
a2VXZWFrUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxp
emF0aW9uOjpFYWdlcj4KICAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZl
cgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIK
KyAgICAsIHB1YmxpYyBMb2dnZXJIZWxwZXIKICNlbmRpZgogewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU3NTQ2MWY2ZDVkOGY2YjdlNmFmOWZkNTZjYzI2ZjVmYmQzOTJiYjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckNvY29hLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCIKKyNp
bmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24u
aCIKKyNpbmNsdWRlICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRl
IDxwYWwvc3BpL2NvY29hL0F1ZGlvVG9vbGJveFNQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyQ29jb2EoKSA9IGRlZmF1bHQ7CisKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2E6On5BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hKCkgPSBkZWZh
dWx0OworCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0b3AoKQor
eworICAgIGlmICghbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX3JlbW90ZUlPVW5pdCkKKyAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90
ZUlPVW5pdCk7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6
Y2xlYXIoKQoreworICAgIGlmIChtX2RhdGFTb3VyY2UpCisgICAgICAgIG1fZGF0YVNvdXJjZS0+
c2V0UGF1c2VkKHRydWUpOworCisgICAgaWYgKG1fcmVtb3RlSU9Vbml0KSB7CisgICAgICAgIEF1
ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOworICAgICAgICBBdWRpb0NvbXBvbmVu
dEluc3RhbmNlRGlzcG9zZShtX3JlbW90ZUlPVW5pdCk7CisgICAgICAgIG1fcmVtb3RlSU9Vbml0
ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBtX2RhdGFTb3VyY2UgPSBudWxscHRyOworICAgIG1f
aW5wdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG51
bGxwdHI7Cit9CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0
UGF1c2VkKGJvb2wgdmFsdWUpCit7CisgICAgbV9wYXVzZWQgPSB2YWx1ZTsKKyAgICBpZiAobV9k
YXRhU291cmNlKQorICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFBhdXNlZCh2YWx1ZSk7Cit9CisK
K0F1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2Nv
YTo6Y3JlYXRlQXVkaW9Vbml0KENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3V0cHV0RGVzY3Jp
cHRpb24pCit7CisgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSByZW1vdGVJT1VuaXQgeyBudWxs
cHRyIH07CisKKyAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGlvVW5pdERlc2NyaXB0aW9u
IHsga0F1ZGlvVW5pdFR5cGVfT3V0cHV0LCAwLCBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxl
LCAwLCAwIH07CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpb1VuaXREZXNjcmlwdGlv
bi5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87CisjZWxzZQor
ICAgIGlvVW5pdERlc2NyaXB0aW9uLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlw
ZV9EZWZhdWx0T3V0cHV0OworI2VuZGlmCisKKyAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBvbmVu
dCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQobnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9uKTsK
KyAgICBBU1NFUlQoaW9Db21wb25lbnQpOworICAgIGlmICghaW9Db21wb25lbnQpIHsKKyAgICAg
ICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZmluZCByZW1vdGUgSU8gdW5p
dCBjb21wb25lbnQiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgT1NT
dGF0dXMgZXJyID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhpb0NvbXBvbmVudCwgJnJlbW90
ZUlPVW5pdCk7CisgICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklF
UiwgInVuYWJsZSB0byBvcGVuIHZwaW8gdW5pdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25z
dCBjaGFyKikmZXJyLCAiKSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFVJbnQzMiBwYXJhbSA9IDE7CisgICAgZXJyID0g
QXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVy
dHlfRW5hYmxlSU8sIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICZwYXJhbSwgc2l6ZW9mKHBh
cmFtKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwg
InVuYWJsZSB0byBlbmFibGUgdnBpbyB1bml0IG91dHB1dCwgZXJyb3IgPSAiLCBlcnIsICIgKCIs
IChjb25zdCBjaGFyKikmZXJyLCAiKSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisjZW5kaWYKKworICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgY2FsbGJhY2sgPSB7IGlucHV0
UHJvYywgdGhpcyB9OworICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90ZUlPVW5p
dCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVf
R2xvYmFsLCAwLCAmY2FsbGJhY2ssIHNpemVvZihjYWxsYmFjaykpOworICAgIGlmIChlcnIpIHsK
KyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IHZwaW8gdW5p
dCBzcGVha2VyIHByb2MsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwg
IikiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgVUludDMyIHNpemUg
PSBzaXplb2Yob3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSk7CisgICAgZXJy
ICA9IEF1ZGlvVW5pdEdldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5
X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmb3V0cHV0RGVzY3JpcHRp
b24uc3RyZWFtRGVzY3JpcHRpb24oKSwgJnNpemUpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBmb3Jt
YXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgb3V0cHV0RGVzY3JpcHRpb24uc3RyZWFt
RGVzY3JpcHRpb24oKS5tU2FtcGxlUmF0ZSA9IEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigp
LnNhbXBsZVJhdGUoKTsKKworICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90ZUlP
VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lu
cHV0LCAwLCAmb3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgc2l6ZW9mKG91
dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpKTsKKyAgICBpZiAoZXJyKSB7Cisg
ICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIHNldCBpbnB1dCBzdHJl
YW0gZm9ybWF0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGVyciA9IEF1ZGlvVW5pdElu
aXRpYWxpemUocmVtb3RlSU9Vbml0KTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIEVSUk9SX0xP
RyhMT0dJREVOVElGSUVSLCAiQXVkaW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgPSAi
LCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVtb3RlSU9Vbml0OworfQorCisvLyBNYXkgZ2V0
IGNhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hOjpwdXNoU2FtcGxlcyhjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUs
IGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgQVNTRVJU
KGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3JtRGVzY3Jp
cHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOworCisgICAgaWYgKCFtX2lucHV0RGVzY3Jp
cHRpb24gfHwgKm1faW5wdXREZXNjcmlwdGlvbiAhPSBkZXNjcmlwdGlvbikgeworICAgICAgICBt
X2lzQXVkaW9Vbml0U3RhcnRlZCA9IGZhbHNlOworCisgICAgICAgIGlmIChtX3JlbW90ZUlPVW5p
dCkgeworICAgICAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7Cisg
ICAgICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX3JlbW90ZUlPVW5pdCk7
CisgICAgICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBudWxscHRyOworICAgICAgICBtX291dHB1dERlc2Ny
aXB0aW9uID0gbnVsbHB0cjsKKworICAgICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gaW5w
dXREZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsK
KyAgICAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG91dHB1dERlc2NyaXB0aW9uOworCisg
ICAgICAgIGF1dG8gcmVtb3RlSU9Vbml0ID0gY3JlYXRlQXVkaW9Vbml0KG91dHB1dERlc2NyaXB0
aW9uKTsKKyAgICAgICAgaWYgKCFyZW1vdGVJT1VuaXQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX291dHB1dERlc2NyaXB0aW9u
ID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9u
KTsKKworICAgICAgICBtX2RhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0
ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAyLCAqdGhpcyk7CisKKyAgICAgICAgaWYgKG1f
ZGF0YVNvdXJjZS0+c2V0SW5wdXRGb3JtYXQoaW5wdXREZXNjcmlwdGlvbikgfHwgbV9kYXRhU291
cmNlLT5zZXRPdXRwdXRGb3JtYXQob3V0cHV0RGVzY3JpcHRpb24pKSB7CisgICAgICAgICAgICBB
dWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShyZW1vdGVJT1VuaXQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb091dHB1
dFVuaXRTdGFydChyZW1vdGVJT1VuaXQpKSB7CisgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgIkF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCwgZXJyb3IgPSAiLCBlcnJvciwg
IiAoIiwgKGNvbnN0IGNoYXIqKSZlcnJvciwgIikiKTsKKyAgICAgICAgICAgIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2VEaXNwb3NlKHJlbW90ZUlPVW5pdCk7CisgICAgICAgICAgICBtX2lucHV0RGVz
Y3JpcHRpb24gPSBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOworCisgICAgICAgIG1fZGF0YVNvdXJj
ZS0+c2V0Vm9sdW1lKHZvbHVtZSgpKTsKKyAgICAgICAgbV9yZW1vdGVJT1VuaXQgPSByZW1vdGVJ
T1VuaXQ7CisgICAgfQorCisgICAgbV9kYXRhU291cmNlLT5wdXNoU2FtcGxlcyhzYW1wbGVUaW1l
LCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKKworICAgIGlmICghbV9pc0F1ZGlvVW5pdFN0YXJ0
ZWQpIHsKKyAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX3Jl
bW90ZUlPVW5pdCkpIHsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiQXVk
aW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkLCBlcnJvciA9ICIsIGVycm9yLCAiICgiLCAoY29uc3Qg
Y2hhciopJmVycm9yLCAiKSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIG1faXNBdWRpb1VuaXRTdGFydGVkID0gdHJ1ZTsKKyAgICB9Cit9CisKK09TU3RhdHVzIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnJlbmRlcihVSW50MzIgc2FtcGxlQ291
bnQsIEF1ZGlvQnVmZmVyTGlzdCYgaW9EYXRhLCBVSW50MzIgLyppbkJ1c051bWJlciovLCBjb25z
dCBBdWRpb1RpbWVTdGFtcCYgdGltZVN0YW1wLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYg
YWN0aW9uRmxhZ3MpCit7CisgICAgaWYgKGlzTXV0ZWQoKSB8fCBtX3BhdXNlZCB8fCAhbV9kYXRh
U291cmNlKSB7CisgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FCTChpb0RhdGEs
IHN0YXRpY19jYXN0PHNpemVfdD4oc2FtcGxlQ291bnQgKiBtX291dHB1dERlc2NyaXB0aW9uLT5i
eXRlc1BlckZyYW1lKCkpKTsKKyAgICAgICAgYWN0aW9uRmxhZ3MgPSBrQXVkaW9Vbml0UmVuZGVy
QWN0aW9uX091dHB1dElzU2lsZW5jZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
bV9kYXRhU291cmNlLT5wdWxsU2FtcGxlcyhpb0RhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4oc2Ft
cGxlQ291bnQpLCB0aW1lU3RhbXAubVNhbXBsZVRpbWUsIHRpbWVTdGFtcC5tSG9zdFRpbWUsIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Q29weSk7CisKKyAgICByZXR1cm4gMDsKK30KKworT1NTdGF0
dXMgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6aW5wdXRQcm9jKHZvaWQqIHVz
ZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyogYWN0aW9uRmxhZ3MsIGNvbnN0IEF1
ZGlvVGltZVN0YW1wKiB0aW1lU3RhbXAsIFVJbnQzMiBpbkJ1c051bWJlciwgVUludDMyIHNhbXBs
ZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSo+KHVzZXJEYXRhKS0+cmVuZGVy
KHNhbXBsZUNvdW50LCAqaW9EYXRhLCBpbkJ1c051bWJlciwgKnRpbWVTdGFtcCwgKmFjdGlvbkZs
YWdzKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
VklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTQ3YWQ1Nzk5
NGFkMjU4MGZkZTIzMGY4ZTE5YTA1NjJhZDQzNDBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTsKK2NsYXNzIEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdDsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKKworY2xhc3MgQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSA6IHB1YmxpYyBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpOworICAgIH5BdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hKCk7CisKK3ByaXZhdGU6CisgICAgLy8gQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXIKKyAgICB2b2lkIHB1c2hTYW1wbGVzKGNvbnN0IFdURjo6TWVk
aWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICB2b2lk
IGNsZWFyKCkgZmluYWw7CisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCkgZmluYWw7CisKKyAgICBz
dGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50MzIgbnVt
YmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCopOworICAgIE9TU3RhdHVzIHJlbmRlcihVSW50
MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIFVJbnQzMiBpbkJ1c051bWJlciwgY29u
c3QgQXVkaW9UaW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOworCisgICAg
QXVkaW9Db21wb25lbnRJbnN0YW5jZSBjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJik7CisKKyAgICAvLyBBdWRpbyB0aHJlYWQgbWVtYmVycworICAgIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2UgbV9yZW1vdGVJT1VuaXQgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlxdWVf
cHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRp
b247CisKKyAgICAvLyBDcm9zcyB0aHJlYWQgbWVtYmVycworICAgIFJlZlB0cjxBdWRpb1NhbXBs
ZURhdGFTb3VyY2U+IG1fZGF0YVNvdXJjZTsKKyAgICBib29sIG1faXNBdWRpb1VuaXRTdGFydGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fcGF1c2VkIHsgZmFsc2UgfTsKK307CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMzgxZmM2YzNhNzMxODM5MDY1YzQ5OWU0ZTJlOWFi
MzcyNmQyZDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuaCIKLQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5o
IgotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkF1ZGlvU2Vz
c2lvbi5oIgotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKLQotI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgotI2lu
Y2x1ZGUgPHBhbC9zcGkvY29jb2EvQXVkaW9Ub29sYm94U1BJLmg+Ci0KLSNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQotICAgIDogQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSh0cmFjaykKLXsKLSAgICB0cmFjay5zb3VyY2UoKS5h
ZGRPYnNlcnZlcigqdGhpcyk7Ci19Ci0KLUF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YTo6fkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSgpCi17Ci0gICAgY2xlYXIoKTsK
LX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNsZWFyKCkKLXsK
LSAgICBpZiAobV9pc0NsZWFyZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNDbGVhcmVk
ID0gdHJ1ZTsKLSAgICBzdHJlYW1UcmFjaygpLnNvdXJjZSgpLnJlbW92ZU9ic2VydmVyKCp0aGlz
KTsKLQotICAgIGlmIChtX2RhdGFTb3VyY2UpCi0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0UGF1
c2VkKHRydWUpOwotCi0gICAgaWYgKG1fcmVtb3RlSU9Vbml0KSB7Ci0gICAgICAgIEF1ZGlvT3V0
cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOwotICAgICAgICBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlRGlzcG9zZShtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAgIG1fcmVtb3RlSU9Vbml0ID0gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICBtX2RhdGFTb3VyY2UgPSBudWxscHRyOwotICAgIG1faW5wdXRE
ZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7
Ci19Ci0KLXZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpwbGF5SW50ZXJu
YWwoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZiAobV9pc1BsYXlp
bmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKLSAgICBtX2F1
dG9QbGF5ID0gZmFsc2U7Ci0KLSAgICBpZiAobV9kYXRhU291cmNlKQotICAgICAgICBtX2RhdGFT
b3VyY2UtPnNldFBhdXNlZChmYWxzZSk7Ci19Ci0KLXZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hOjpwbGF5KCkKLXsKLSAgICBwbGF5SW50ZXJuYWwoKTsKLX0KLQotdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBhdXNlKCkKLXsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKCFtX2lzUGxheWluZykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKLSAgICBtX2F1dG9QbGF5ID0gZmFsc2U7Ci0K
LSAgICBpZiAobV9kYXRhU291cmNlKQotICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFBhdXNlZCh0
cnVlKTsKLX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldFZv
bHVtZShmbG9hdCB2b2x1bWUpCi17Ci0gICAgbV92b2x1bWUgPSB2b2x1bWU7Ci0gICAgaWYgKG1f
ZGF0YVNvdXJjZSkKLSAgICAgICAgbV9kYXRhU291cmNlLT5zZXRWb2x1bWUobV92b2x1bWUpOwot
fQotCi1BdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYTo6Y3JlYXRlQXVkaW9Vbml0KENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3V0cHV0RGVz
Y3JpcHRpb24pCi17Ci0gICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSByZW1vdGVJT1VuaXQgeyBu
dWxscHRyIH07Ci0KLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGlvVW5pdERlc2NyaXB0
aW9uIHsga0F1ZGlvVW5pdFR5cGVfT3V0cHV0LCAwLCBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0Fw
cGxlLCAwLCAwIH07Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpb1VuaXREZXNjcmlw
dGlvbi5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0jZWxz
ZQotICAgIGlvVW5pdERlc2NyaXB0aW9uLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3Vi
VHlwZV9EZWZhdWx0T3V0cHV0OwotI2VuZGlmCi0KLSAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBv
bmVudCA9IEF1ZGlvQ29tcG9uZW50RmluZE5leHQobnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9u
KTsKLSAgICBBU1NFUlQoaW9Db21wb25lbnQpOwotICAgIGlmICghaW9Db21wb25lbnQpIHsKLSAg
ICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZmluZCByZW1vdGUgSU8g
dW5pdCBjb21wb25lbnQiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAg
T1NTdGF0dXMgZXJyID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhpb0NvbXBvbmVudCwgJnJl
bW90ZUlPVW5pdCk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJ
RklFUiwgInVuYWJsZSB0byBvcGVuIHZwaW8gdW5pdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChj
b25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0K
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFVJbnQzMiBwYXJhbSA9IDE7Ci0gICAgZXJy
ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJv
cGVydHlfRW5hYmxlSU8sIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICZwYXJhbSwgc2l6ZW9m
KHBhcmFtKSk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklF
UiwgInVuYWJsZSB0byBlbmFibGUgdnBpbyB1bml0IG91dHB1dCwgZXJyb3IgPSAiLCBlcnIsICIg
KCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgY2FsbGJhY2sgPSB7IGlu
cHV0UHJvYywgdGhpcyB9OwotICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90ZUlP
VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2Nv
cGVfR2xvYmFsLCAwLCAmY2FsbGJhY2ssIHNpemVvZihjYWxsYmFjaykpOwotICAgIGlmIChlcnIp
IHsKLSAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IHZwaW8g
dW5pdCBzcGVha2VyIHByb2MsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVy
ciwgIikiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgVUludDMyIHNp
emUgPSBzaXplb2Yob3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSk7Ci0gICAg
ZXJyICA9IEF1ZGlvVW5pdEdldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvVW5pdFByb3Bl
cnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmb3V0cHV0RGVzY3Jp
cHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgJnNpemUpOwotICAgIGlmIChlcnIpIHsKLSAgICAg
ICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBm
b3JtYXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgb3V0cHV0RGVzY3JpcHRpb24uc3Ry
ZWFtRGVzY3JpcHRpb24oKS5tU2FtcGxlUmF0ZSA9IEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lv
bigpLnNhbXBsZVJhdGUoKTsKLQotICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90
ZUlPVW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3Bl
X0lucHV0LCAwLCAmb3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgc2l6ZW9m
KG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpKTsKLSAgICBpZiAoZXJyKSB7
Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIHNldCBpbnB1dCBz
dHJlYW0gZm9ybWF0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIp
Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGVyciA9IEF1ZGlvVW5p
dEluaXRpYWxpemUocmVtb3RlSU9Vbml0KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAiQXVkaW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3Ig
PSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVtb3RlSU9Vbml0OwotfQotCi0vLyBNYXkg
Z2V0IGNhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgotdm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUm
IHNhbXBsZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCi17
Ci0gICAgQVNTRVJUKGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBs
YXRmb3JtRGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOwotCi0gICAgaWYgKCFt
X2lzUGxheWluZykgewotICAgICAgICBpZiAobV9pc0F1ZGlvVW5pdFN0YXJ0ZWQpIHsKLSAgICAg
ICAgICAgIGlmIChtX3JlbW90ZUlPVW5pdCkKLSAgICAgICAgICAgICAgICBBdWRpb091dHB1dFVu
aXRTdG9wKG1fcmVtb3RlSU9Vbml0KTsKLSAgICAgICAgICAgIG1faXNBdWRpb1VuaXRTdGFydGVk
ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
bV9pbnB1dERlc2NyaXB0aW9uIHx8ICptX2lucHV0RGVzY3JpcHRpb24gIT0gZGVzY3JpcHRpb24p
IHsKLSAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBmYWxzZTsKLQotICAgICAgICBpZiAo
bV9yZW1vdGVJT1VuaXQpIHsKLSAgICAgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1v
dGVJT1VuaXQpOwotICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UobV9y
ZW1vdGVJT1VuaXQpOwotICAgICAgICAgICAgbV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLSAgICAgICAg
bV9vdXRwdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0KLSAgICAgICAgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uIGlucHV0RGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihk
ZXNjcmlwdGlvbik7Ci0gICAgICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBvdXRwdXREZXNj
cmlwdGlvbjsKLQotICAgICAgICBhdXRvIHJlbW90ZUlPVW5pdCA9IGNyZWF0ZUF1ZGlvVW5pdChv
dXRwdXREZXNjcmlwdGlvbik7Ci0gICAgICAgIGlmICghcmVtb3RlSU9Vbml0KQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgbV9vdXRw
dXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRw
dXREZXNjcmlwdGlvbik7Ci0KLSAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMiwgc3RyZWFtVHJhY2so
KSk7Ci0KLSAgICAgICAgaWYgKG1fZGF0YVNvdXJjZS0+c2V0SW5wdXRGb3JtYXQoaW5wdXREZXNj
cmlwdGlvbikgfHwgbV9kYXRhU291cmNlLT5zZXRPdXRwdXRGb3JtYXQob3V0cHV0RGVzY3JpcHRp
b24pKSB7Ci0gICAgICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShyZW1vdGVJ
T1VuaXQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGF1
dG8gZXJyb3IgPSBBdWRpb091dHB1dFVuaXRTdGFydChyZW1vdGVJT1VuaXQpKSB7Ci0gICAgICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxl
ZCwgZXJyb3IgPSAiLCBlcnJvciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnJvciwgIikiKTsKLSAg
ICAgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKHJlbW90ZUlPVW5pdCk7Ci0g
ICAgICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBudWxscHRyOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOwot
Ci0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0Vm9sdW1lKG1fdm9sdW1lKTsKLSAgICAgICAgbV9y
ZW1vdGVJT1VuaXQgPSByZW1vdGVJT1VuaXQ7Ci0gICAgfQotCi0gICAgbV9kYXRhU291cmNlLT5w
dXNoU2FtcGxlcyhzYW1wbGVUaW1lLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKLQotICAgIGlm
IChtX2F1dG9QbGF5ICYmICFtX2hhc1N0YXJ0ZWRBdXRvcGxheSkgewotICAgICAgICBtX2hhc1N0
YXJ0ZWRBdXRvcGxheSA9IHRydWU7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICAgICAgaWYgKG1fYXV0b1Bs
YXkpCi0gICAgICAgICAgICAgICAgcGxheUludGVybmFsKCk7Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIGlmICghbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gZXJy
b3IgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX3JlbW90ZUlPVW5pdCkpIHsKLSAgICAgICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiQXVkaW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkLCBl
cnJvciA9ICIsIGVycm9yLCAiICgiLCAoY29uc3QgY2hhciopJmVycm9yLCAiKSIpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1faXNBdWRpb1VuaXRTdGFydGVkID0g
dHJ1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
Ojpzb3VyY2VTdG9wcGVkKCkKLXsKLSAgICBwYXVzZSgpOwotfQotCi1PU1N0YXR1cyBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnJlbmRlcihVSW50MzIgc2FtcGxlQ291bnQsIEF1
ZGlvQnVmZmVyTGlzdCYgaW9EYXRhLCBVSW50MzIgLyppbkJ1c051bWJlciovLCBjb25zdCBBdWRp
b1RpbWVTdGFtcCYgdGltZVN0YW1wLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYgYWN0aW9u
RmxhZ3MpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24gYSBoaWdoLXByaW9y
aXR5IGJhY2tncm91bmQgdGhyZWFkLiBUaGUgZm9sbG93aW5nIHByb3RlY3RlZFRoaXMgb2JqZWN0
IGVuc3VyZXMgdGhlIG9iamVjdCBpcyBub3QKLSAgICAvLyBkZXN0cm95ZWQgb24gdGhlIG1haW4g
dGhyZWFkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGV4aXRzLgotICAgIFJlZjxBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2E+IHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotCi0gICAgaWYg
KCFtX2lzUGxheWluZyB8fCBtX211dGVkIHx8ICFtX2RhdGFTb3VyY2UgfHwgc3RyZWFtVHJhY2so
KS5tdXRlZCgpIHx8IHN0cmVhbVRyYWNrKCkuZW5kZWQoKSB8fCAhc3RyZWFtVHJhY2soKS5lbmFi
bGVkKCkpIHsKLSAgICAgICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKGlvRGF0YSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVDb3VudCAqIG1fb3V0cHV0RGVzY3JpcHRpb24tPmJ5
dGVzUGVyRnJhbWUoKSkpOwotICAgICAgICBhY3Rpb25GbGFncyA9IGtBdWRpb1VuaXRSZW5kZXJB
Y3Rpb25fT3V0cHV0SXNTaWxlbmNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBt
X2RhdGFTb3VyY2UtPnB1bGxTYW1wbGVzKGlvRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1w
bGVDb3VudCksIHRpbWVTdGFtcC5tU2FtcGxlVGltZSwgdGltZVN0YW1wLm1Ib3N0VGltZSwgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpDb3B5KTsKLQotICAgIHJldHVybiAwOwotfQotCi1PU1N0YXR1
cyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1c2Vy
RGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqIGFjdGlvbkZsYWdzLCBjb25zdCBBdWRp
b1RpbWVTdGFtcCogdGltZVN0YW1wLCBVSW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBzYW1wbGVD
b3VudCwgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSo+KHVzZXJEYXRhKS0+cmVuZGVyKHNh
bXBsZUNvdW50LCAqaW9EYXRhLCBpbkJ1c051bWJlciwgKnRpbWVTdGFtcCwgKmFjdGlvbkZsYWdz
KTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGM1MTQ1NGVjMWJhODE3ZmJkYjY0YjMwNjBjOWY4MzU3N2I4NTkzZDAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2lu
Y2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlIDxBdWRpb1Rv
b2xib3gvQXVkaW9Ub29sYm94Lmg+Ci0jaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVz
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNl
OwotY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OwotY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uOwotCi1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZmluYWwg
OiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSwgcHJpdmF0ZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpPYnNlcnZlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKQotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmIHN0cmVhbVRyYWNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKHN0cmVhbVRyYWNrKSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBjbGVhcigpOwotCi0gICAgdm9pZCBwbGF5KCk7Ci0gICAgdm9pZCBwYXVzZSgp
OwotICAgIGJvb2wgaXNQbGF5aW5nKCkgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KLQotICAgIHZv
aWQgc2V0Vm9sdW1lKGZsb2F0KTsKLSAgICBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBt
X3ZvbHVtZTsgfQotCi0gICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSB7IG1fbXV0ZWQgPSBt
dXRlZDsgfQotICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJik7Ci0gICAgfkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSgp
OwotCi0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKLSAgICB2b2lkIHNvdXJj
ZVN0b3BwZWQoKSBmaW5hbDsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwotCi0gICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJv
Yyh2b2lkKiwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFt
cCosIFVJbnQzMiBpbkJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZl
ckxpc3QqKTsKLSAgICBPU1N0YXR1cyByZW5kZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1
ZmZlckxpc3QmLCBVSW50MzIgaW5CdXNOdW1iZXIsIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiwgQXVk
aW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmKTsKLQotICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2Ug
Y3JlYXRlQXVkaW9Vbml0KENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwotICAgIHZvaWQgY2xl
YW51cCgpOwotICAgIHZvaWQgemVyb0J1ZmZlckxpc3QoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90
KTsKLSAgICB2b2lkIHBsYXlJbnRlcm5hbCgpOwotCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
Ci0gICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSI7IH0KLSNlbmRpZgotCi0gICAgLy8gQXVk
aW8gdGhyZWFkIG1lbWJlcnMKLSAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIG1fcmVtb3RlSU9V
bml0IHsgbnVsbHB0ciB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24+IG1faW5wdXREZXNjcmlwdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uPiBtX291dHB1dERlc2NyaXB0aW9uOwotICAgIGJvb2wgbV9pc0F1ZGlv
VW5pdFN0YXJ0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNTdGFydGVkQXV0b3BsYXkgeyBm
YWxzZSB9OwotCi0gICAgLy8gQ3Jvc3MgdGhyZWFkIG1lbWJlcnMKLSAgICBSZWZQdHI8QXVkaW9T
YW1wbGVEYXRhU291cmNlPiBtX2RhdGFTb3VyY2U7Ci0KLSAgICAvLyBNYWluIHRocmVhZCB3cml0
YWJsZSBtZW1iZXJzCi0gICAgZmxvYXQgbV92b2x1bWUgeyAxIH07Ci0gICAgYm9vbCBtX2lzUGxh
eWluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2F1dG9QbGF5IHsgZmFsc2UgfTsKLSAgICBib29s
IG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0NsZWFyZWQgeyBmYWxzZSB9OwotfTsK
LQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387519</attachid>
            <date>2020-01-13 05:59:04 -0800</date>
            <delta_ts>2020-01-13 06:28:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206172-20200113145902.patch</filename>
            <type>text/plain</type>
            <size>65432</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhNjVjNjY5MWY0ZmQw
ZDAzOGE0MzYzMDU3NzMxMjllZDdmNGFlNC4uOGYwNTViOWQ1NmU0MmI4MzhjMTFjNzZkY2U4Mjhm
MzUxNWZmZWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTAxLTEzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgdG8gaW1wbGVtZW50IHJlbW90ZSBhdWRpbyByZW5kZXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yIGNvZGUgdG8gYWxsb3cgaW4gdGhlIGZ1dHVyZSByZW5kZXJpbmcgb2YgbWVkaWEgc3RyZWFt
IGF1ZGlvIHRyYWNrcyBpbiBhIHJlbW90ZSBwcm9jZXNzLgorICAgICAgICBGb3IgdGhhdCBwdXJw
b3NlLCBzcGxpdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZnVuY3Rpb25hbGl0
eSBpbiB0d28gcGFydHMuCisgICAgICAgIFRoZSBmaXJzdCBwYXJ0IGlzIG1vdmVkIGJhY2sgdG8g
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS4KKyAgICAgICAgVGhlIHNlY29uZCBwYXJ0IGlz
IHBsYXRmb3JtIHNwZWNpZmljIGFuZCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIGFuIGludGVyZmFj
ZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgICAgICBhbmQgYW4gaW4gcHJvY2Vz
cyBpbXBsZW1lbnRhdGlvbiBuYW1lZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
LgorCisgICAgICAgIE1ha2UgVHJhY2tQcml2YXRlQmFzZSBhbmQgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgcHVibGljIExvZ2dlckhlbHBlci4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFraW5nIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIGFuZCBBdWRpb1NhbXBsZURhdGFTb3VyY2UgdG8g
dGFrZSBhIExvZ2dlckhlbHBlciBpbnN0ZWFkIG9mIGEgZGVyaXZlZCBpbnN0YW5jZS4KKworICAg
ICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6QXVkaW9TYW1w
bGVEYXRhU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldE11dGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRWb2x1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnZvbHVtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6aXNNdXRl
ZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6fkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OnZvbHVtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtOjp1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tFbmRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0UGF1c2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0ZUF1ZGlvVW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmg6IFJlbW92ZWQuCisKIDIwMjAtMDEtMTIgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0LWluZGVudCB3aXRoIHBlcmNlbnRhZ2UgdmFs
dWUgc2hvdWxkIHJlc29sdmUgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIHdpZHRoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDQxMTIxNTU3YWU2ZjM1ZGI5YWQ1ZjRjMWU4YWNjY2EwODY2M2U2ZmIuLmM1N2JkOTEz
ZjQ0M2ZjM2M3ZTA2ZGZlOTI1MDNmNzg3NmVlYTcyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcw
LDYgKzE5NzAsNyBAQCBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGll
c0xvZ2dpbmcuY3BwCiAKIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcAogCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCBlNDUzZDg5MDk3ZTY4NmIyYzMzNTJiYWQ2NmVlNzEyMzQ3YzE2NmI1Li5kYzYw
OWZjYzZhNGYxOGU4N2NlN2NjYjNiODE1NzM1ZDhkZmRjMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTQ4NSwxMSArNDg1LDEzIEBAIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQogCiBwbGF0Zm9ybS9tZWRpYXNlc3Np
b24vbWFjL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLm1tCiAKK3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlLm1tCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9Db3JlQXVkaW9DYXB0dXJlU291cmNl
SU9TLm1tIEBuby11bmlmeQogCi1wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDliYjg0MzE0NTM5
YWQwOTUxNDYzMWIyMTMwNjE2YWY2MGJhOWExYzMuLmUwNTUzNmY3M2NiMGFlNjRmZTUyYTIxMDZi
ZDZmOTY1YTI3OTNlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMDAsNyArMTAwMCw2IEBACiAJCTM3MkMwMEQ5MTI5NjE5
RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzcyQzAwRDgxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcy
RDNFNTQyMTY1NzhBRTAwQzVFMDIxIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwMDc4MjFCODIwRUM4MDAyQzVBNkUg
LyogRGF0YVVSTERlY29kZXIuaCAqLzsgfTsKIAkJMzcyRDNFNTUyMTY1NzhBRTAwQzVFMDIxIC8q
IFNjcmlwdE1vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRl
ci5oICovOyB9OwotCQkzNzJEM0U1NjIxNjU3OEFFMDBDNUUwMjEgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hLmggKi87IH07CiAJCTM3MkQzRTU3MjE2NTc4QUUwMEM1RTAyMSAvKiBO
YXZpZ2F0b3JDcmVkZW50aWFscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdEODQ2MjYxRkU4OTVGODAwQ0EzNjgyIC8qIE5hdmlnYXRvckNyZWRlbnRp
YWxzLmggKi87IH07CiAJCTM3NUNEMjMyMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1Q0QyMzEx
MTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi87IH07CiAJCTM3NzRBQkE1MEZBMjFF
QjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NzRBQkEzMEZBMjFFQjQwMEFEN0RFOSAv
KiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA4Niw2ICsxMDg1LDcgQEAKIAkJNDE2MUUyRDUxRkU0
OERDNTAwRUMyRTk2IC8qIEZldGNoTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ3RTJCNTFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2Fk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRFMTAx
MTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OwogCQk0
MTYyQTQ1ODEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NTYx
MDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLzsgfTsK
KwkJNDE2QTA2QTEyM0NDQUQwMzAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZB
MDY5NjIzQ0NBQTlGMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZENzVB
MjIwQzY1MUE1MDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RDc1OUYyMEM2NDQxMzAwRDAy
RDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFMEIzQTIwOUJDM0NCMDA0QTk1RDkgLyogRmV0
Y2hJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTI5QTYxMDJG
QTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyog
V29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgfTsKQEAgLTU0NzIsNyArNTQ3Miw2IEBACiAJCTA3
Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRUcmFja0xpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkUxMUJFMUY2ODNFMEQwMDE3NzM5NSAvKiBU
cmFja1ByaXZhdGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRyYWNrUHJpdmF0ZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzZF
QzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBE
MEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3NjY0RkExODNFNkI1QzAw
MTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTUyLDcgKzU1NTEsNiBAQAogCQkwN0I3
MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwdHVyZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCOTNGRjkyM0I5MkFBQTAwMzZGOEVBIC8qIE1JTUVUeXBl
Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTUlNRVR5cGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwN0I5M0ZGQjIzQjkyQUFCMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNSU1FVHlwZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMDdDMDQ2QzYxRTQyNTEyRjAwNzIwMUU3IC8qIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRD
b25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRyYWNr
U3VwcG9ydGVkQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdD
MUMwRTExQkZCNjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRz
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdDMUMwRTQxQkZCNjBFRDAwQkQy
MjU2IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczODgsNiArNzM4Niwx
MSBAQAogCQk0MTYyQTQ0RjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NTUxMDExNDY0NzAw
REZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjJBNDU2MTAxMTQ2NDcwMERGRjNFRCAv
KiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE2QTA2OTIyM0NDQUE5MzAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTZBMDY5MzIzQ0NBQTk0MDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE2QTA2OTQyM0NDQUE5RTAwMzQ3MTA5IC8qIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxNkEwNjk1MjNDQ0FBOUUwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZDRTRBNDIyOURG
MTJFMDBBOEE2ODYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxNkQ3NTlGMjBDNjQ0MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9h
ZEluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtM
b2FkSW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTBCMzcy
MDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGZXRjaElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2MTYxLDYgKzE2MTY0LDkgQEAKIAkJCQlDREM2NzUxRjFFQUVBOTk2MDA3MjdDODQg
LyogaW9zICovLAogCQkJCTQxNTc0NzQyMUUzODY5ODAwMEU5MTREOCAvKiBsaWJ3ZWJydGMgKi8s
CiAJCQkJMDcyOUIxNEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLywKKwkJCQk0MTZBMDY5NTIz
Q0NBQTlFMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwICovLAor
CQkJCTQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlci5oICovLAorCQkJCTQxNkEwNjk0MjNDQ0FBOUUwMDM0NzEwOSAvKiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtLmNwcCAqLywKIAkJCQkwN0Q2QTRGNjFCRjIzMDdEMDAxNzQxNDYgLyog
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3QjcxMTZBMUQ4OTlFNjMw
MDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggKi8sCiAJCQkJMDdCNzExNkIxRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLywKQEAgLTE2MjM0LDggKzE2MjQwLDgg
QEAKIAkJMDcyOUIxNEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDc2RUMxMzIxRTQ0RjJDQjAwRTVEODEzIC8q
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgKi8sCi0JCQkJMDdDMDQ2QzYx
RTQyNTEyRjAwNzIwMUU3IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oICov
LAorCQkJCTQxNkEwNjkzMjNDQ0FBOTQwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hLmNwcCAqLywKKwkJCQk0MTZBMDY5MjIzQ0NBQTkzMDAzNDcxMDkgLyogQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oICovLAogCQkJCTA3MDM2M0RBMTgxQTFD
REMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8sCiAJCQkJMDcwMzYzREIx
ODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gKi8sCiAJCQkJMDcw
MzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLmggKi8sCkBAIC0y
OTA4NCw2ICsyOTA5MCw3IEBACiAJCQkJQ0QyRjRBMjgxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlv
SGFyZHdhcmVMaXN0ZW5lck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRFMkQ1NUIxNTlFNjZF
QjAwRENDQ0Y4IC8qIEF1ZGlvSU9DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
MTAxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxNkEwNkExMjNDQ0FEMDMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMTMxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMTYxMkIwMjY3NjAwQzFBMzU5IC8qIEF1
ZGlvTm9kZUlucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxODEyQjAyNjc2MDBDMUEz
NTkgLyogQXVkaW9Ob2RlT3V0cHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTI5MTEwLDcgKzI5MTE3
LDYgQEAKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0QTc2MzE4MEY5RjcwMDBCMDc2QzkgLyog
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3RDZBNEY4MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
LmggaW4gSGVhZGVycyAqLywKLQkJCQkzNzJEM0U1NjIxNjU3OEFFMDBDNUUwMjEgLyogQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4
QjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdFRTY4NDYxMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM0RjcxM0EwRDVBNkYxMDAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQmFzZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKaW5kZXgg
YWE1NjhjMmY0NjExZjdjNmI5MTNkY2RmMGQ4MzM1NDQ1NDQyZDNlZS4uMzI2YzliYzJhOWE4Y2Uw
NjU0MzYzNzUwZGZiM2ZiZjUwZWM1OGZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaApAQCAtNDIsNyAr
NDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbjsKIGNsYXNzIENBUmluZ0J1ZmZlcjsKLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OwogCiBjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8QXVkaW9TYW1wbGVEYXRhU291cmNlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWlu
UnVuTG9vcD4KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTUwLDcgKzQ5LDcgQEAgY2xh
c3MgQXVkaW9TYW1wbGVEYXRhU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZSwKICNlbmRpZgogICAgIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gY3JlYXRlKHNpemVfdCwgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmKTsKKyAgICBzdGF0aWMgUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gY3JlYXRl
KHNpemVfdCwgV1RGOjpMb2dnZXJIZWxwZXImKTsKIAogICAgIH5BdWRpb1NhbXBsZURhdGFTb3Vy
Y2UoKTsKIApAQCAtODEsNyArODAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAg
ICBBdWRpb1NhbXBsZURhdGFTb3VyY2Uoc2l6ZV90LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
OworICAgIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShzaXplX3QsIExvZ2dlckhlbHBlciYpOwogCiAg
ICAgT1NTdGF0dXMgc2V0dXBDb252ZXJ0ZXIoKTsKICAgICBib29sIHB1bGxTYW1wbGVzSW50ZXJu
YWwoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90JiwgdWludDY0X3QsIGRvdWJsZSwgUHVsbE1vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggNDFhZmUzOWYyMzJhZTU4ODA4NjBmMDg0ZDU1NmNi
NGE1ZDhhZTI1YS4uYWRkNmQ2MDBjN2NkNmFiNjhkYzRjMDY4NTVjNDUyNjE1NjI1MWFmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVEYXRhU291cmNlLm1tCkBAIC00NiwxOSArNDYsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLVJlZjxBdWRp
b1NhbXBsZURhdGFTb3VyY2U+IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKHNpemVfdCBt
YXhpbXVtU2FtcGxlQ291bnQsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKK1JlZjxB
dWRpb1NhbXBsZURhdGFTb3VyY2U+IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKHNpemVf
dCBtYXhpbXVtU2FtcGxlQ291bnQsIExvZ2dlckhlbHBlciYgbG9nZ2VySGVscGVyKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShtYXhpbXVtU2FtcGxl
Q291bnQsIHRyYWNrKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9TYW1wbGVEYXRh
U291cmNlKG1heGltdW1TYW1wbGVDb3VudCwgbG9nZ2VySGVscGVyKSk7CiB9CiAKLUF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlKHNpemVfdCBtYXhpbXVtU2FtcGxl
Q291bnQsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKK0F1ZGlvU2FtcGxlRGF0YVNv
dXJjZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlKHNpemVfdCBtYXhpbXVtU2FtcGxlQ291bnQsIExv
Z2dlckhlbHBlciYgbG9nZ2VySGVscGVyKQogICAgIDogbV9pbnB1dFNhbXBsZU9mZnNldChNZWRp
YVRpbWU6OmludmFsaWRUaW1lKCkpCiAgICAgLCBtX21heGltdW1TYW1wbGVDb3VudChtYXhpbXVt
U2FtcGxlQ291bnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBtX2xvZ2dlcih0
cmFjay5sb2dnZXIoKSkKLSAgICAsIG1fbG9nSWRlbnRpZmllcih0cmFjay5sb2dJZGVudGlmaWVy
KCkpCisgICAgLCBtX2xvZ2dlcihsb2dnZXJIZWxwZXIubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lk
ZW50aWZpZXIobG9nZ2VySGVscGVyLmxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogeworI2lmIFJF
TEVBU0VfTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKGxvZ2dlckhlbHBlcik7CisjZW5k
aWYKIH0KIAogQXVkaW9TYW1wbGVEYXRhU291cmNlOjp+QXVkaW9TYW1wbGVEYXRhU291cmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0
ZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJh
c2UuaAppbmRleCBlZDc5OTNkOGFkYTQ2NWFkZjM4NjI4NDg1YzQ3NzEzZjE0YzYyYmZkLi4wZWZi
ZjMzYmM4MjkyYTM4ZWUwYmE2MWRjOGVhNTE0NDkyZDQ3YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKIGNsYXNzIFRyYWNrUHJpdmF0ZUJhc2UKICAgICA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxUcmFja1ByaXZhdGVCYXNlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFk
OjpNYWluPgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgcHJpdmF0ZSBMb2dnZXJI
ZWxwZXIKKyAgICAsIHB1YmxpYyBMb2dnZXJIZWxwZXIKICNlbmRpZgogewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFRyYWNrUHJpdmF0ZUJhc2UpOwpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdm9pZCBzZXRMb2dnZXIo
Y29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIo
Y29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOwogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9
CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bG9nSWRlbnRpZmllcjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggYmM1ZjM5MWI2NTIwYjAzMWI2ZTZj
ODU1NWRhOWMzZTIyMDM5NDA5MS4uMmZkM2U3MzFlZWE2ZTM2MzRjYzg3ZDMxYzQzN2Y4YzdjMDYy
ZmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3Mg
Q2xvY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hOworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTsKIGNs
YXNzIEFWVmlkZW9DYXB0dXJlU291cmNlOwogY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
OwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKQEAgLTI0OSw3ICsyNDksNyBAQCBwcml2
YXRlOgogICAgIH07CiAgICAgQ3VycmVudEZyYW1lUGFpbnRlciBtX2ltYWdlUGFpbnRlcjsKIAot
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hPj4gbV9hdWRpb1RyYWNrTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbT4+IG1fYXVkaW9UcmFja01hcDsKICAgICBIYXNoTWFwPFN0
cmluZywgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+PiBtX3ZpZGVvVHJhY2tN
YXA7CiAgICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA2YzVmNTBiNGRhMDBkMjEwMmJhZGUzNzk0
ZjlkZGQwYmQ0MTkyNjYzLi5jNWVkMGE2M2JiZTlmZmZkN2U2MjFhN2NkNDMzZDgyMWZkZmQxNTY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCi0jaW1wb3J0ICJBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKKyNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKQEAgLTEwMzMsNyAr
MTAzMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRh
dGVUcmFja3MoKQogewogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yIGN1cnJlbnRU
cmFja3MgPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCk7CiAKLSAgICBhdXRvIHNldEF1
ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Em
IHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUpCisgICAgYXV0byBzZXRBdWRpb1Ry
YWNrU3RhdGUgPSBbdGhpc10oQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSYgdHJhY2ssIGlu
dCBpbmRleCwgVHJhY2tTdGF0ZSBzdGF0ZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoc3RhdGUp
IHsKICAgICAgICAgY2FzZSBUcmFja1N0YXRlOjpSZW1vdmU6CkBAIC0xMDUyLDcgKzEwNTIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJhY2tz
KCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfTsKLSAgICB1cGRhdGVUcmFj
a3NPZlR5cGUobV9hdWRpb1RyYWNrTWFwLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRp
bywgY3VycmVudFRyYWNrcywgJkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3Jl
YXRlLCBXVEZNb3ZlKHNldEF1ZGlvVHJhY2tTdGF0ZSkpOworICAgIHVwZGF0ZVRyYWNrc09mVHlw
ZShtX2F1ZGlvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBjdXJy
ZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlLCBXVEZNb3Zl
KHNldEF1ZGlvVHJhY2tTdGF0ZSkpOwogCiAgICAgYXV0byBzZXRWaWRlb1RyYWNrU3RhdGUgPSBb
dGhpc10oVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSYgdHJhY2ssIGludCBpbmRleCwgVHJh
Y2tTdGF0ZSBzdGF0ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjUxNjQ5YTBhOGQ1ZmU3ZDM0YjE5MWM2Zjg5MWFmNDAyOWU2YjQ4
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CitjbGFz
cyBNZWRpYVRpbWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXI6OlJlbmRlcmVyQ3JlYXRvciBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcjo6bV9yZW5kZXJlckNyZWF0b3IgPSBudWxscHRyOwordm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6c2V0Q3JlYXRvcihSZW5kZXJlckNyZWF0b3IgY3JlYXRvcikKK3sKKyAg
ICBtX3JlbmRlcmVyQ3JlYXRvciA9IGNyZWF0b3I7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6
OmNyZWF0ZSgpCit7CisgICAgaWYgKG1fcmVuZGVyZXJDcmVhdG9yKQorICAgICAgICByZXR1cm4g
bV9yZW5kZXJlckNyZWF0b3IoKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBt
YWtlVW5pcXVlPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E+KCk7CisjZWxzZQor
ICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldExvZ2dlcihjb25zdCBM
b2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikKK3sKKyAgICBtX2xvZ2dlciA9
ICZsb2dnZXI7CisgICAgbV9sb2dJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKK30KKworV1RGTG9n
Q2hhbm5lbCYgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmxvZ0NoYW5uZWwoKSBjb25z
dAoreworICAgIHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGU4NzY1MzdkMjZmMjM5ZDcwNjJi
OWJkNmZmNDAyNWY4NWNlOWZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaApAQCAtMCww
ICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVs
cGVyLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgTWVkaWFUaW1lOworfQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CitjbGFzcyBQbGF0
Zm9ybUF1ZGlvRGF0YTsKKworY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgOiBw
dWJsaWMgTG9nZ2VySGVscGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
cigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRQYXVzZWQoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0g
MDsKKyAgICAvLyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgdmly
dHVhbCB2b2lkIHB1c2hTYW1wbGVzKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCB2YWx1ZSkgeyBtX211dGVkID0gdmFs
dWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3ZvbHVt
ZSA9IHZvbHVtZTsgfQorICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1l
OyB9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2b2lkIHNldExvZ2dlcihjb25z
dCBMb2dnZXImLCBjb25zdCB2b2lkKik7CisjZW5kaWYKKworICAgIHVzaW5nIFJlbmRlcmVyQ3Jl
YXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gKCop
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0Q3JlYXRvcihSZW5kZXJlckNy
ZWF0b3IpOworCitwcm90ZWN0ZWQ6CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29u
c3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXI7IH0KKyAg
ICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJ
ZGVudGlmaWVyOyB9CisKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIiOyB9CisgICAgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKKyAgICBib29sIGlz
TXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IFJlbmRlcmVyQ3JlYXRvciBtX3JlbmRlcmVyQ3JlYXRvcjsKKworICAgIC8vIE1haW4gdGhyZWFk
IHdyaXRhYmxlIG1lbWJlcnMKKyAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OworICAgIGZsb2F0
IG1fdm9sdW1lIHsgMSB9OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmUHRy
PGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVy
OworI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk3ZDllNjlkMTVmMDY0MjFhYmY5NGQ0NDhjOGU4ODlkNDg2MDM1ZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNwcApAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmIHRyYWNrKQorICAgIDogbV9zdHJlYW1UcmFjayh0cmFjaykKKyAgICAs
IG1faWQodHJhY2suaWQoKSkKKyAgICAsIG1fbGFiZWwodHJhY2subGFiZWwoKSkKKyAgICAsIG1f
dGltZWxpbmVPZmZzZXQoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQorICAgICwgbV9yZW5kZXJl
ciB7IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpjcmVhdGUoKSB9Cit7CisgICAgdHJh
Y2suYWRkT2JzZXJ2ZXIoKnRoaXMpOworfQorCitBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Ojp+QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSgpCit7CisgICAgY2xlYXIoKTsKK30KKwor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGlkZW50aWZp
ZXIpCit7CisgICAgVHJhY2tQcml2YXRlQmFzZTo6c2V0TG9nZ2VyKGxvZ2dlciwgaWRlbnRpZmll
cik7CisgICAgbV9yZW5kZXJlci0+c2V0TG9nZ2VyKGxvZ2dlciwgaWRlbnRpZmllcik7Cit9Cisj
ZW5kaWYKKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjbGVhcigpCit7Cisg
ICAgaWYgKG1faXNDbGVhcmVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzQ2xlYXJlZCA9
IHRydWU7CisgICAgc3RyZWFtVHJhY2soKS5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CisKKyAgICBt
X3JlbmRlcmVyLT5jbGVhcigpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW06OnBsYXlJbnRlcm5hbCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IGlmIChtX2lzUGxheWluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1BsYXlpbmcgPSB0
cnVlOworICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKKworICAgIG1fcmVuZGVyZXItPnNldFBhdXNl
ZChmYWxzZSk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6cGxheSgp
Cit7CisgICAgcGxheUludGVybmFsKCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbTo6cGF1c2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAoIW1faXNQbGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZyA9IGZh
bHNlOworICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKKworICAgIG1fcmVuZGVyZXItPnNldFBhdXNl
ZCh0cnVlKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpzZXRWb2x1
bWUoZmxvYXQgdm9sdW1lKQoreworICAgIG1fcmVuZGVyZXItPnNldFZvbHVtZSh2b2x1bWUpOwor
fQorCitmbG9hdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjp2b2x1bWUoKSBjb25zdAor
eworICAgIHJldHVybiBtX3JlbmRlcmVyLT52b2x1bWUoKTsKK30KKworLy8gTWF5IGdldCBjYWxs
ZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29u
c3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9E
YXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNh
bXBsZUNvdW50KQoreworICAgIGlmICghbV9pc1BsYXlpbmcpIHsKKyAgICAgICAgbV9yZW5kZXJl
ci0+c3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9yZW5kZXJlci0+cHVz
aFNhbXBsZXMoc2FtcGxlVGltZSwgYXVkaW9EYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQp
OworCisgICAgaWYgKG1fYXV0b1BsYXkgJiYgIW1faGFzU3RhcnRlZEF1dG9wbGF5KSB7CisgICAg
ICAgIG1faGFzU3RhcnRlZEF1dG9wbGF5ID0gdHJ1ZTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAgICBp
ZiAobV9hdXRvUGxheSkKKyAgICAgICAgICAgICAgICBwbGF5SW50ZXJuYWwoKTsKKyAgICAgICAg
fSk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnRyYWNr
TXV0ZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3sKKyAgICB1cGRhdGVSZW5k
ZXJlck11dGVkU3RhdGUoKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Ojp0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3sKKyAgICB1
cGRhdGVSZW5kZXJlck11dGVkU3RhdGUoKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtOjp1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUoKQoreworICAgIG1fcmVuZGVyZXIt
PnNldE11dGVkKG1faXNQbGF5aW5nICYmICFzdHJlYW1UcmFjaygpLm11dGVkKCkgJiYgIXN0cmVh
bVRyYWNrKCkuZW5kZWQoKSAmJiBzdHJlYW1UcmFjaygpLmVuYWJsZWQoKSk7Cit9CisKK3ZvaWQg
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpCit7CisgICAgcGF1c2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCmluZGV4IGRjZDNhZWMyNTQ5ZjM2ZWQz
ZWFjODFiM2UwNDlkNjQyNDlmOGI4ZmIuLmYzMjVjNmRkNjljZjgyY2ExODA1YWQxNTFkMTc0NmRi
NmQxNmQ3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKQEAgLTMyLDE5
ICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0gOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUgeworY2xhc3MgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI7CisKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0gZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUsIHByaXZhdGUgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKQogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
JiBzdHJlYW1UcmFjaykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oc3RyZWFtVHJhY2spKTsKICAgICB9Ci0KLSAgICBLaW5k
IGtpbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBLaW5kOjpNYWluOyB9Ci0gICAgQXRvbVN0
cmluZyBpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICBBdG9tU3RyaW5n
IGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIEF0b21TdHJp
bmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b20oKTsgfQotICAg
IGludCB0cmFja0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleDsgfQorICAg
IH5BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKCk7CiAKICAgICB2b2lkIHNldFRyYWNrSW5k
ZXgoaW50IGluZGV4KSB7IG1faW5kZXggPSBpbmRleDsgfQogCkBAIC01MywyMCArNTAsNTcgQEAg
cHVibGljOgogICAgIE1lZGlhVGltZSB0aW1lbGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGltZWxpbmVPZmZzZXQ7IH0KICAgICB2b2lkIHNldFRpbWVsaW5lT2Zmc2V0KGNvbnN0IE1lZGlh
VGltZSYgb2Zmc2V0KSB7IG1fdGltZWxpbmVPZmZzZXQgPSBvZmZzZXQ7IH0KIAorICAgIHZvaWQg
Y2xlYXIoKTsKKworICAgIHZvaWQgcGxheSgpOworICAgIHZvaWQgcGF1c2UoKTsKKyAgICBib29s
IGlzUGxheWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisKKyAgICB2b2lkIHNldFZvbHVt
ZShmbG9hdCk7CisgICAgZmxvYXQgdm9sdW1lKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldE11dGVk
KGJvb2wgbXV0ZWQpIHsgbV9tdXRlZCA9IG11dGVkOyB9CisgICAgYm9vbCBtdXRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZv
aWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKSBmaW5hbDsKKyAgICBjb25z
dCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbSI7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6Ci0gICAgQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCi0gICAg
ICAgIDogbV9zdHJlYW1UcmFjayh0cmFjaykKLSAgICAgICAgLCBtX2lkKHRyYWNrLmlkKCkpCi0g
ICAgICAgICwgbV9sYWJlbCh0cmFjay5sYWJlbCgpKQotICAgICAgICAsIG1fdGltZWxpbmVPZmZz
ZXQoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQotICAgIHsKLSAgICB9CisgICAgZXhwbGljaXQg
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOwor
CisgICAgLy8gQXVkaW9UcmFja1ByaXZhdGUKKyAgICBLaW5kIGtpbmQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBLaW5kOjpNYWluOyB9CisgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faWQ7IH0KKyAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sYWJlbDsgfQorICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9pbmRleDsgfQorCisgICAgLy8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyCisg
ICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBj
b25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgdHJhY2tFbmRlZChNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsOworICAgIHZvaWQgdHJhY2tNdXRlZENoYW5nZWQo
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSAgZmluYWw7CisgICAgdm9pZCB0cmFja0VuYWJsZWRD
aGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgIGZpbmFsOworICAgIHZvaWQgdHJhY2tT
ZXR0aW5nc0NoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0KKworICAg
IHZvaWQgcGxheUludGVybmFsKCk7CisgICAgdm9pZCB1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUo
KTsKKworICAgIC8vIE1haW4gdGhyZWFkIHdyaXRhYmxlIG1lbWJlcnMKKyAgICBib29sIG1faXNQ
bGF5aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXV0b1BsYXkgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQ2xlYXJlZCB7IGZhbHNlIH07CiAK
ICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fc3RyZWFtVHJhY2s7CiAgICAgQXRv
bVN0cmluZyBtX2lkOwogICAgIEF0b21TdHJpbmcgbV9sYWJlbDsKICAgICBpbnQgbV9pbmRleCB7
IDAgfTsKICAgICBNZWRpYVRpbWUgbV90aW1lbGluZU9mZnNldDsKKworICAgIC8vIEF1ZGlvIHRo
cmVhZCBtZW1iZXJzCisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyPiBtX3JlbmRlcmVyOworICAgIGJvb2wgbV9oYXNTdGFydGVkQXV0b3BsYXkgeyBmYWxz
ZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKaW5kZXggMDA3MTZmZDBhNDU2
MTRkZTZjZDhhYmFkZTA1OTBmMmJmMTBjMDI2ZS4uMTBiNjcwM2NlYjNhOTg1NjlmOTQzNGI4MmJh
YzUzZWRlYzhiY2I0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlIGZpbmFsCiAgICAgLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUsIFdlYWtQdHJGYWN0b3J5SW5pdGlh
bGl6YXRpb246OkVhZ2VyPgogICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2Vy
dmVyCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dlckhlbHBl
cgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgogI2VuZGlmCiB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTc1NDYxZjZkNWQ4ZjZiN2U2YWY5ZmQ1NmNjMjZmNWZiZDM5MmJiNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcApAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2EuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oIgor
I2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lv
bi5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKworI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1
ZGUgPHBhbC9zcGkvY29jb2EvQXVkaW9Ub29sYm94U1BJLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYSgpID0gZGVmYXVsdDsKKworQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJDb2NvYTo6fkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoKSA9IGRl
ZmF1bHQ7CisKK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c3RvcCgp
Cit7CisgICAgaWYgKCFtX2lzQXVkaW9Vbml0U3RhcnRlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fcmVtb3RlSU9Vbml0KQorICAgICAgICBBdWRpb091dHB1dFVuaXRTdG9wKG1fcmVt
b3RlSU9Vbml0KTsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpjbGVhcigpCit7CisgICAgaWYgKG1fZGF0YVNvdXJjZSkKKyAgICAgICAgbV9kYXRhU291cmNl
LT5zZXRQYXVzZWQodHJ1ZSk7CisKKyAgICBpZiAobV9yZW1vdGVJT1VuaXQpIHsKKyAgICAgICAg
QXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7CisgICAgICAgIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVtb3RlSU9Vbml0KTsKKyAgICAgICAgbV9yZW1vdGVJT1Vu
aXQgPSBudWxscHRyOworICAgIH0KKworICAgIG1fZGF0YVNvdXJjZSA9IG51bGxwdHI7CisgICAg
bV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0g
bnVsbHB0cjsKK30KKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpz
ZXRQYXVzZWQoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX3BhdXNlZCA9IHZhbHVlOworICAgIGlmICht
X2RhdGFTb3VyY2UpCisgICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0UGF1c2VkKHZhbHVlKTsKK30K
KworQXVkaW9Db21wb25lbnRJbnN0YW5jZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hOjpjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdXRwdXREZXNj
cmlwdGlvbikKK3sKKyAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIHJlbW90ZUlPVW5pdCB7IG51
bGxwdHIgfTsKKworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gaW9Vbml0RGVzY3JpcHRp
b24geyBrQXVkaW9Vbml0VHlwZV9PdXRwdXQsIDAsIGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBw
bGUsIDAsIDAgfTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlvVW5pdERlc2NyaXB0
aW9uLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1vdGVJTzsKKyNlbHNl
CisgICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJU
eXBlX0RlZmF1bHRPdXRwdXQ7CisjZW5kaWYKKworICAgIEF1ZGlvQ29tcG9uZW50IGlvQ29tcG9u
ZW50ID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dChudWxscHRyLCAmaW9Vbml0RGVzY3JpcHRpb24p
OworICAgIEFTU0VSVChpb0NvbXBvbmVudCk7CisgICAgaWYgKCFpb0NvbXBvbmVudCkgeworICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1
bml0IGNvbXBvbmVudCIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBP
U1N0YXR1cyBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGlvQ29tcG9uZW50LCAmcmVt
b3RlSU9Vbml0KTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCAidW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNv
bnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgVUludDMyIHBhcmFtID0gMTsKKyAgICBlcnIg
PSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb091dHB1dFVuaXRQcm9w
ZXJ0eV9FbmFibGVJTywga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgJnBhcmFtLCBzaXplb2Yo
cGFyYW0pKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAidW5hYmxlIHRvIGVuYWJsZSB2cGlvIHVuaXQgb3V0cHV0LCBlcnJvciA9ICIsIGVyciwgIiAo
IiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyNlbmRpZgorCisgICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBjYWxsYmFjayA9IHsgaW5w
dXRQcm9jLCB0aGlzIH07CisgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9V
bml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29w
ZV9HbG9iYWwsIDAsICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CisgICAgaWYgKGVycikg
eworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBzZXQgdnBpbyB1
bml0IHNwZWFrZXIgcHJvYywgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJy
LCAiKSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBVSW50MzIgc2l6
ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKKyAgICBl
cnIgID0gQXVkaW9Vbml0R2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVy
dHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlw
dGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmc2l6ZSk7CisgICAgaWYgKGVycikgeworICAgICAg
ICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZv
cm1hdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBvdXRwdXREZXNjcmlwdGlvbi5zdHJl
YW1EZXNjcmlwdGlvbigpLm1TYW1wbGVSYXRlID0gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkuc2FtcGxlUmF0ZSgpOworCisgICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3Rl
SU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVf
SW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCBzaXplb2Yo
b3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSkpOworICAgIGlmIChlcnIpIHsK
KyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IGlucHV0IHN0
cmVhbSBmb3JtYXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIiki
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgZXJyID0gQXVkaW9Vbml0
SW5pdGlhbGl6ZShyZW1vdGVJT1VuaXQpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJBdWRpb1VuaXRJbml0aWFsaXplKCkgZmFpbGVkLCBlcnJvciA9
ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiByZW1vdGVJT1VuaXQ7Cit9CisKKy8vIE1heSBn
ZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyQ29jb2E6OnB1c2hTYW1wbGVzKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGlt
ZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBBU1NF
UlQoZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNj
cmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSk7CisKKyAgICBpZiAoIW1faW5wdXREZXNj
cmlwdGlvbiB8fCAqbV9pbnB1dERlc2NyaXB0aW9uICE9IGRlc2NyaXB0aW9uKSB7CisgICAgICAg
IG1faXNBdWRpb1VuaXRTdGFydGVkID0gZmFsc2U7CisKKyAgICAgICAgaWYgKG1fcmVtb3RlSU9V
bml0KSB7CisgICAgICAgICAgICBBdWRpb091dHB1dFVuaXRTdG9wKG1fcmVtb3RlSU9Vbml0KTsK
KyAgICAgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVtb3RlSU9Vbml0
KTsKKyAgICAgICAgICAgIG1fcmVtb3RlSU9Vbml0ID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisg
ICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CisgICAgICAgIG1fb3V0cHV0RGVz
Y3JpcHRpb24gPSBudWxscHRyOworCisgICAgICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBp
bnB1dERlc2NyaXB0aW9uID0gdG9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oZGVzY3JpcHRpb24p
OworICAgICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gb3V0cHV0RGVzY3JpcHRpb247CisK
KyAgICAgICAgYXV0byByZW1vdGVJT1VuaXQgPSBjcmVhdGVBdWRpb1VuaXQob3V0cHV0RGVzY3Jp
cHRpb24pOworICAgICAgICBpZiAoIXJlbW90ZUlPVW5pdCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbj4oaW5wdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fb3V0cHV0RGVzY3JpcHRp
b24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4ob3V0cHV0RGVzY3JpcHRp
b24pOworCisgICAgICAgIG1fZGF0YVNvdXJjZSA9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3Jl
YXRlKGRlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDIsICp0aGlzKTsKKworICAgICAgICBpZiAo
bV9kYXRhU291cmNlLT5zZXRJbnB1dEZvcm1hdChpbnB1dERlc2NyaXB0aW9uKSB8fCBtX2RhdGFT
b3VyY2UtPnNldE91dHB1dEZvcm1hdChvdXRwdXREZXNjcmlwdGlvbikpIHsKKyAgICAgICAgICAg
IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKHJlbW90ZUlPVW5pdCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0
cHV0VW5pdFN0YXJ0KHJlbW90ZUlPVW5pdCkpIHsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJ
REVOVElGSUVSLCAiQXVkaW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkLCBlcnJvciA9ICIsIGVycm9y
LCAiICgiLCAoY29uc3QgY2hhciopJmVycm9yLCAiKSIpOworICAgICAgICAgICAgQXVkaW9Db21w
b25lbnRJbnN0YW5jZURpc3Bvc2UocmVtb3RlSU9Vbml0KTsKKyAgICAgICAgICAgIG1faW5wdXRE
ZXNjcmlwdGlvbiA9IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9IHRydWU7CisKKyAgICAgICAgbV9kYXRhU291
cmNlLT5zZXRWb2x1bWUodm9sdW1lKCkpOworICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IHJlbW90
ZUlPVW5pdDsKKyAgICB9CisKKyAgICBtX2RhdGFTb3VyY2UtPnB1c2hTYW1wbGVzKHNhbXBsZVRp
bWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOworCisgICAgaWYgKCFtX2lzQXVkaW9Vbml0U3Rh
cnRlZCkgeworICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1f
cmVtb3RlSU9Vbml0KSkgeworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJB
dWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0gIiwgZXJyb3IsICIgKCIsIChjb25z
dCBjaGFyKikmZXJyb3IsICIpIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOworICAgIH0KK30KKworT1NTdGF0dXMg
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cmVuZGVyKFVJbnQzMiBzYW1wbGVD
b3VudCwgQXVkaW9CdWZmZXJMaXN0JiBpb0RhdGEsIFVJbnQzMiAvKmluQnVzTnVtYmVyKi8sIGNv
bnN0IEF1ZGlvVGltZVN0YW1wJiB0aW1lU3RhbXAsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdz
JiBhY3Rpb25GbGFncykKK3sKKyAgICBpZiAoaXNNdXRlZCgpIHx8IG1fcGF1c2VkIHx8ICFtX2Rh
dGFTb3VyY2UpIHsKKyAgICAgICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKGlvRGF0
YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVDb3VudCAqIG1fb3V0cHV0RGVzY3JpcHRpb24t
PmJ5dGVzUGVyRnJhbWUoKSkpOworICAgICAgICBhY3Rpb25GbGFncyA9IGtBdWRpb1VuaXRSZW5k
ZXJBY3Rpb25fT3V0cHV0SXNTaWxlbmNlOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICBtX2RhdGFTb3VyY2UtPnB1bGxTYW1wbGVzKGlvRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
YW1wbGVDb3VudCksIHRpbWVTdGFtcC5tU2FtcGxlVGltZSwgdGltZVN0YW1wLm1Ib3N0VGltZSwg
QXVkaW9TYW1wbGVEYXRhU291cmNlOjpDb3B5KTsKKworICAgIHJldHVybiAwOworfQorCitPU1N0
YXR1cyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjppbnB1dFByb2Modm9pZCog
dXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiBhY3Rpb25GbGFncywgY29uc3Qg
QXVkaW9UaW1lU3RhbXAqIHRpbWVTdGFtcCwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50MzIgc2Ft
cGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hKj4odXNlckRhdGEpLT5yZW5k
ZXIoc2FtcGxlQ291bnQsICppb0RhdGEsIGluQnVzTnVtYmVyLCAqdGltZVN0YW1wLCAqYWN0aW9u
RmxhZ3MpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ZTU0NjFj
YjAyOGRmYzFkZmQyZTk0ZTNmM2M2ZDhkOGI1Y2FlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJDb2NvYS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorCisjaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvVG9vbGJveC5oPgorI2luY2x1
ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTsKK2NsYXNzIEF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDsKK2NsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKKworY2xhc3MgQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSA6IHB1YmxpYyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpOworICAgIH5BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hKCk7CisKK3ByaXZhdGU6CisgICAgLy8gQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIKKyAgICB2b2lkIHB1c2hTYW1wbGVzKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwg
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
c2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyKCkg
ZmluYWw7CisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCkgZmluYWw7CisKKyAgICBzdGF0aWMgT1NT
dGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0
IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFt
ZXMsIEF1ZGlvQnVmZmVyTGlzdCopOworICAgIE9TU3RhdHVzIHJlbmRlcihVSW50MzIgc2FtcGxl
Q291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIFVJbnQzMiBpbkJ1c051bWJlciwgY29uc3QgQXVkaW9U
aW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOworCisgICAgQXVkaW9Db21w
b25lbnRJbnN0YW5jZSBjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7
CisKKyAgICAvLyBBdWRpbyB0aHJlYWQgbWVtYmVycworICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFu
Y2UgbV9yZW1vdGVJT1VuaXQgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRpb247CisKKyAg
ICAvLyBDcm9zcyB0aHJlYWQgbWVtYmVycworICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3Vy
Y2U+IG1fZGF0YVNvdXJjZTsKKyAgICBib29sIG1faXNBdWRpb1VuaXRTdGFydGVkIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fcGF1c2VkIHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGMwMzgxZmM2YzNhNzMxODM5MDY1YzQ5OWU0ZTJlOWFiMzcyNmQyZDgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EuaCIKLQotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oIgotI2luY2x1
ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgot
I2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLQotI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgotI2luY2x1ZGUgPHBh
bC9zcGkvY29jb2EvQXVkaW9Ub29sYm94U1BJLmg+Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Q29jb2EoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQotICAgIDogQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbSh0cmFjaykKLXsKLSAgICB0cmFjay5zb3VyY2UoKS5hZGRPYnNlcnZl
cigqdGhpcyk7Ci19Ci0KLUF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6fkF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSgpCi17Ci0gICAgY2xlYXIoKTsKLX0KLQotdm9p
ZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmNsZWFyKCkKLXsKLSAgICBpZiAo
bV9pc0NsZWFyZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNDbGVhcmVkID0gdHJ1ZTsK
LSAgICBzdHJlYW1UcmFjaygpLnNvdXJjZSgpLnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLQotICAg
IGlmIChtX2RhdGFTb3VyY2UpCi0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0UGF1c2VkKHRydWUp
OwotCi0gICAgaWYgKG1fcmVtb3RlSU9Vbml0KSB7Ci0gICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0
b3AobV9yZW1vdGVJT1VuaXQpOwotICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9z
ZShtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAgIG1fcmVtb3RlSU9Vbml0ID0gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICBtX2RhdGFTb3VyY2UgPSBudWxscHRyOwotICAgIG1faW5wdXREZXNjcmlwdGlv
biA9IG51bGxwdHI7Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci19Ci0KLXZv
aWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpwbGF5SW50ZXJuYWwoKQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZiAobV9pc1BsYXlpbmcpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKLSAgICBtX2F1dG9QbGF5ID0g
ZmFsc2U7Ci0KLSAgICBpZiAobV9kYXRhU291cmNlKQotICAgICAgICBtX2RhdGFTb3VyY2UtPnNl
dFBhdXNlZChmYWxzZSk7Ci19Ci0KLXZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hOjpwbGF5KCkKLXsKLSAgICBwbGF5SW50ZXJuYWwoKTsKLX0KLQotdm9pZCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBhdXNlKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgaWYgKCFtX2lzUGxheWluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bV9pc1BsYXlpbmcgPSBmYWxzZTsKLSAgICBtX2F1dG9QbGF5ID0gZmFsc2U7Ci0KLSAgICBpZiAo
bV9kYXRhU291cmNlKQotICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFBhdXNlZCh0cnVlKTsKLX0K
LQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldFZvbHVtZShmbG9h
dCB2b2x1bWUpCi17Ci0gICAgbV92b2x1bWUgPSB2b2x1bWU7Ci0gICAgaWYgKG1fZGF0YVNvdXJj
ZSkKLSAgICAgICAgbV9kYXRhU291cmNlLT5zZXRWb2x1bWUobV92b2x1bWUpOwotfQotCi1BdWRp
b0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y3Jl
YXRlQXVkaW9Vbml0KENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3V0cHV0RGVzY3JpcHRpb24p
Ci17Ci0gICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSByZW1vdGVJT1VuaXQgeyBudWxscHRyIH07
Ci0KLSAgICBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uIGlvVW5pdERlc2NyaXB0aW9uIHsga0F1
ZGlvVW5pdFR5cGVfT3V0cHV0LCAwLCBrQXVkaW9Vbml0TWFudWZhY3R1cmVyX0FwcGxlLCAwLCAw
IH07Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpb1VuaXREZXNjcmlwdGlvbi5jb21w
b25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87Ci0jZWxzZQotICAgIGlv
VW5pdERlc2NyaXB0aW9uLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9EZWZh
dWx0T3V0cHV0OwotI2VuZGlmCi0KLSAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBvbmVudCA9IEF1
ZGlvQ29tcG9uZW50RmluZE5leHQobnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9uKTsKLSAgICBB
U1NFUlQoaW9Db21wb25lbnQpOwotICAgIGlmICghaW9Db21wb25lbnQpIHsKLSAgICAgICAgRVJS
T1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZmluZCByZW1vdGUgSU8gdW5pdCBjb21w
b25lbnQiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgT1NTdGF0dXMg
ZXJyID0gQXVkaW9Db21wb25lbnRJbnN0YW5jZU5ldyhpb0NvbXBvbmVudCwgJnJlbW90ZUlPVW5p
dCk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVu
YWJsZSB0byBvcGVuIHZwaW8gdW5pdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFy
KikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIFVJbnQzMiBwYXJhbSA9IDE7Ci0gICAgZXJyID0gQXVkaW9V
bml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9PdXRwdXRVbml0UHJvcGVydHlfRW5h
YmxlSU8sIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7
Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJs
ZSB0byBlbmFibGUgdnBpbyB1bml0IG91dHB1dCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25z
dCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgY2FsbGJhY2sgPSB7IGlucHV0UHJvYywg
dGhpcyB9OwotICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1
ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFs
LCAwLCAmY2FsbGJhY2ssIHNpemVvZihjYWxsYmFjaykpOwotICAgIGlmIChlcnIpIHsKLSAgICAg
ICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBzcGVh
a2VyIHByb2MsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgVUludDMyIHNpemUgPSBzaXpl
b2Yob3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSk7Ci0gICAgZXJyICA9IEF1
ZGlvVW5pdEdldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVh
bUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAwLCAmb3V0cHV0RGVzY3JpcHRpb24uc3Ry
ZWFtRGVzY3JpcHRpb24oKSwgJnNpemUpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZ2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVy
cm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgb3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3Jp
cHRpb24oKS5tU2FtcGxlUmF0ZSA9IEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNhbXBs
ZVJhdGUoKTsKLQotICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwg
a0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0LCAw
LCAmb3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSwgc2l6ZW9mKG91dHB1dERl
c2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIHNldCBpbnB1dCBzdHJlYW0gZm9y
bWF0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIGVyciA9IEF1ZGlvVW5pdEluaXRpYWxp
emUocmVtb3RlSU9Vbml0KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJ
REVOVElGSUVSLCAiQXVkaW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgPSAiLCBlcnIs
ICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICByZXR1cm4gcmVtb3RlSU9Vbml0OwotfQotCi0vLyBNYXkgZ2V0IGNhbGxl
ZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRp
bWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCi17Ci0gICAgQVNT
RVJUKGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3JtRGVz
Y3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOwotCi0gICAgaWYgKCFtX2lzUGxheWlu
ZykgewotICAgICAgICBpZiAobV9pc0F1ZGlvVW5pdFN0YXJ0ZWQpIHsKLSAgICAgICAgICAgIGlm
IChtX3JlbW90ZUlPVW5pdCkKLSAgICAgICAgICAgICAgICBBdWRpb091dHB1dFVuaXRTdG9wKG1f
cmVtb3RlSU9Vbml0KTsKLSAgICAgICAgICAgIG1faXNBdWRpb1VuaXRTdGFydGVkID0gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9pbnB1dERl
c2NyaXB0aW9uIHx8ICptX2lucHV0RGVzY3JpcHRpb24gIT0gZGVzY3JpcHRpb24pIHsKLSAgICAg
ICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBmYWxzZTsKLQotICAgICAgICBpZiAobV9yZW1vdGVJ
T1VuaXQpIHsKLSAgICAgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQp
OwotICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UobV9yZW1vdGVJT1Vu
aXQpOwotICAgICAgICAgICAgbV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOwotICAgICAgICB9Ci0K
LSAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgbV9vdXRwdXRE
ZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0KLSAgICAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
IGlucHV0RGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkZXNjcmlwdGlv
bik7Ci0gICAgICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBvdXRwdXREZXNjcmlwdGlvbjsK
LQotICAgICAgICBhdXRvIHJlbW90ZUlPVW5pdCA9IGNyZWF0ZUF1ZGlvVW5pdChvdXRwdXREZXNj
cmlwdGlvbik7Ci0gICAgICAgIGlmICghcmVtb3RlSU9Vbml0KQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgbV9vdXRwdXREZXNjcmlw
dGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlw
dGlvbik7Ci0KLSAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpj
cmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMiwgc3RyZWFtVHJhY2soKSk7Ci0KLSAg
ICAgICAgaWYgKG1fZGF0YVNvdXJjZS0+c2V0SW5wdXRGb3JtYXQoaW5wdXREZXNjcmlwdGlvbikg
fHwgbV9kYXRhU291cmNlLT5zZXRPdXRwdXRGb3JtYXQob3V0cHV0RGVzY3JpcHRpb24pKSB7Ci0g
ICAgICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShyZW1vdGVJT1VuaXQpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBBdWRpb091dHB1dFVuaXRTdGFydChyZW1vdGVJT1VuaXQpKSB7Ci0gICAgICAgICAgICBFUlJP
Ul9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCwgZXJyb3Ig
PSAiLCBlcnJvciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnJvciwgIikiKTsKLSAgICAgICAgICAg
IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKHJlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAg
ICBtX2lucHV0RGVzY3JpcHRpb24gPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOwotCi0gICAgICAg
IG1fZGF0YVNvdXJjZS0+c2V0Vm9sdW1lKG1fdm9sdW1lKTsKLSAgICAgICAgbV9yZW1vdGVJT1Vu
aXQgPSByZW1vdGVJT1VuaXQ7Ci0gICAgfQotCi0gICAgbV9kYXRhU291cmNlLT5wdXNoU2FtcGxl
cyhzYW1wbGVUaW1lLCBhdWRpb0RhdGEsIHNhbXBsZUNvdW50KTsKLQotICAgIGlmIChtX2F1dG9Q
bGF5ICYmICFtX2hhc1N0YXJ0ZWRBdXRvcGxheSkgewotICAgICAgICBtX2hhc1N0YXJ0ZWRBdXRv
cGxheSA9IHRydWU7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICAgICAgaWYgKG1fYXV0b1BsYXkpCi0gICAg
ICAgICAgICAgICAgcGxheUludGVybmFsKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGlm
ICghbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRp
b091dHB1dFVuaXRTdGFydChtX3JlbW90ZUlPVW5pdCkpIHsKLSAgICAgICAgICAgIEVSUk9SX0xP
RyhMT0dJREVOVElGSUVSLCAiQXVkaW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkLCBlcnJvciA9ICIs
IGVycm9yLCAiICgiLCAoY29uc3QgY2hhciopJmVycm9yLCAiKSIpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1faXNBdWRpb1VuaXRTdGFydGVkID0gdHJ1ZTsKLSAg
ICB9Ci19Ci0KLXZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpzb3VyY2VT
dG9wcGVkKCkKLXsKLSAgICBwYXVzZSgpOwotfQotCi1PU1N0YXR1cyBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2E6OnJlbmRlcihVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVy
TGlzdCYgaW9EYXRhLCBVSW50MzIgLyppbkJ1c051bWJlciovLCBjb25zdCBBdWRpb1RpbWVTdGFt
cCYgdGltZVN0YW1wLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYgYWN0aW9uRmxhZ3MpCi17
Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24gYSBoaWdoLXByaW9yaXR5IGJhY2tn
cm91bmQgdGhyZWFkLiBUaGUgZm9sbG93aW5nIHByb3RlY3RlZFRoaXMgb2JqZWN0IGVuc3VyZXMg
dGhlIG9iamVjdCBpcyBub3QKLSAgICAvLyBkZXN0cm95ZWQgb24gdGhlIG1haW4gdGhyZWFkIGJl
Zm9yZSB0aGlzIGZ1bmN0aW9uIGV4aXRzLgotICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2E+IHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotCi0gICAgaWYgKCFtX2lzUGxh
eWluZyB8fCBtX211dGVkIHx8ICFtX2RhdGFTb3VyY2UgfHwgc3RyZWFtVHJhY2soKS5tdXRlZCgp
IHx8IHN0cmVhbVRyYWNrKCkuZW5kZWQoKSB8fCAhc3RyZWFtVHJhY2soKS5lbmFibGVkKCkpIHsK
LSAgICAgICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKGlvRGF0YSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihzYW1wbGVDb3VudCAqIG1fb3V0cHV0RGVzY3JpcHRpb24tPmJ5dGVzUGVyRnJh
bWUoKSkpOwotICAgICAgICBhY3Rpb25GbGFncyA9IGtBdWRpb1VuaXRSZW5kZXJBY3Rpb25fT3V0
cHV0SXNTaWxlbmNlOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBtX2RhdGFTb3Vy
Y2UtPnB1bGxTYW1wbGVzKGlvRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVDb3VudCks
IHRpbWVTdGFtcC5tU2FtcGxlVGltZSwgdGltZVN0YW1wLm1Ib3N0VGltZSwgQXVkaW9TYW1wbGVE
YXRhU291cmNlOjpDb3B5KTsKLQotICAgIHJldHVybiAwOwotfQotCi1PU1N0YXR1cyBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVk
aW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqIGFjdGlvbkZsYWdzLCBjb25zdCBBdWRpb1RpbWVTdGFt
cCogdGltZVN0YW1wLCBVSW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBzYW1wbGVDb3VudCwgQXVk
aW9CdWZmZXJMaXN0KiBpb0RhdGEpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSo+KHVzZXJEYXRhKS0+cmVuZGVyKHNhbXBsZUNvdW50
LCAqaW9EYXRhLCBpbkJ1c051bWJlciwgKnRpbWVTdGFtcCwgKmFjdGlvbkZsYWdzKTsKLX0KLQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MTQ1
NGVjMWJhODE3ZmJkYjY0YjMwNjBjOWY4MzU3N2I4NTkzZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVk
aW9Ub29sYm94Lmg+Ci0jaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNlOwotY2xhc3Mg
QXVkaW9TYW1wbGVCdWZmZXJMaXN0OwotY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwot
Ci1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZmluYWwgOiBwdWJsaWMg
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNl
OjpPYnNlcnZlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hKQotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHN0
cmVhbVRyYWNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKHN0cmVhbVRyYWNrKSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBjbGVhcigpOwotCi0gICAgdm9pZCBwbGF5KCk7Ci0gICAgdm9pZCBwYXVzZSgpOwotICAgIGJv
b2wgaXNQbGF5aW5nKCkgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KLQotICAgIHZvaWQgc2V0Vm9s
dW1lKGZsb2F0KTsKLSAgICBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsg
fQotCi0gICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSB7IG1fbXV0ZWQgPSBtdXRlZDsgfQot
ICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJik7Ci0gICAgfkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSgpOwotCi0gICAg
Ly8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKLSAgICB2b2lkIHNvdXJjZVN0b3BwZWQo
KSBmaW5hbDsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
LCBzaXplX3QpIGZpbmFsOwotCi0gICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiwg
QXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQz
MiBpbkJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqKTsK
LSAgICBPU1N0YXR1cyByZW5kZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3Qm
LCBVSW50MzIgaW5CdXNOdW1iZXIsIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiwgQXVkaW9Vbml0UmVu
ZGVyQWN0aW9uRmxhZ3MmKTsKLQotICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgY3JlYXRlQXVk
aW9Vbml0KENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwotICAgIHZvaWQgY2xlYW51cCgpOwot
ICAgIHZvaWQgemVyb0J1ZmZlckxpc3QoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90KTsKLSAgICB2
b2lkIHBsYXlJbnRlcm5hbCgpOwotCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW1Db2NvYSI7IH0KLSNlbmRpZgotCi0gICAgLy8gQXVkaW8gdGhyZWFk
IG1lbWJlcnMKLSAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIG1fcmVtb3RlSU9Vbml0IHsgbnVs
bHB0ciB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1f
aW5wdXREZXNjcmlwdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPiBtX291dHB1dERlc2NyaXB0aW9uOwotICAgIGJvb2wgbV9pc0F1ZGlvVW5pdFN0YXJ0
ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNTdGFydGVkQXV0b3BsYXkgeyBmYWxzZSB9Owot
Ci0gICAgLy8gQ3Jvc3MgdGhyZWFkIG1lbWJlcnMKLSAgICBSZWZQdHI8QXVkaW9TYW1wbGVEYXRh
U291cmNlPiBtX2RhdGFTb3VyY2U7Ci0KLSAgICAvLyBNYWluIHRocmVhZCB3cml0YWJsZSBtZW1i
ZXJzCi0gICAgZmxvYXQgbV92b2x1bWUgeyAxIH07Ci0gICAgYm9vbCBtX2lzUGxheWluZyB7IGZh
bHNlIH07Ci0gICAgYm9vbCBtX2F1dG9QbGF5IHsgZmFsc2UgfTsKLSAgICBib29sIG1fbXV0ZWQg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0NsZWFyZWQgeyBmYWxzZSB9OwotfTsKLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387521</attachid>
            <date>2020-01-13 06:28:17 -0800</date>
            <delta_ts>2020-01-13 06:57:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206172-20200113152815.patch</filename>
            <type>text/plain</type>
            <size>65488</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhNjVjNjY5MWY0ZmQw
ZDAzOGE0MzYzMDU3NzMxMjllZDdmNGFlNC4uOGYwNTViOWQ1NmU0MmI4MzhjMTFjNzZkY2U4Mjhm
MzUxNWZmZWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTAxLTEzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgdG8gaW1wbGVtZW50IHJlbW90ZSBhdWRpbyByZW5kZXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yIGNvZGUgdG8gYWxsb3cgaW4gdGhlIGZ1dHVyZSByZW5kZXJpbmcgb2YgbWVkaWEgc3RyZWFt
IGF1ZGlvIHRyYWNrcyBpbiBhIHJlbW90ZSBwcm9jZXNzLgorICAgICAgICBGb3IgdGhhdCBwdXJw
b3NlLCBzcGxpdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZnVuY3Rpb25hbGl0
eSBpbiB0d28gcGFydHMuCisgICAgICAgIFRoZSBmaXJzdCBwYXJ0IGlzIG1vdmVkIGJhY2sgdG8g
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS4KKyAgICAgICAgVGhlIHNlY29uZCBwYXJ0IGlz
IHBsYXRmb3JtIHNwZWNpZmljIGFuZCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIGFuIGludGVyZmFj
ZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgICAgICBhbmQgYW4gaW4gcHJvY2Vz
cyBpbXBsZW1lbnRhdGlvbiBuYW1lZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
LgorCisgICAgICAgIE1ha2UgVHJhY2tQcml2YXRlQmFzZSBhbmQgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgcHVibGljIExvZ2dlckhlbHBlci4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFraW5nIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIGFuZCBBdWRpb1NhbXBsZURhdGFTb3VyY2UgdG8g
dGFrZSBhIExvZ2dlckhlbHBlciBpbnN0ZWFkIG9mIGEgZGVyaXZlZCBpbnN0YW5jZS4KKworICAg
ICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6QXVkaW9TYW1w
bGVEYXRhU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldE11dGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRWb2x1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnZvbHVtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6aXNNdXRl
ZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6fkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OnZvbHVtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtOjp1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tFbmRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0UGF1c2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0ZUF1ZGlvVW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmg6IFJlbW92ZWQuCisKIDIwMjAtMDEtMTIgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0LWluZGVudCB3aXRoIHBlcmNlbnRhZ2UgdmFs
dWUgc2hvdWxkIHJlc29sdmUgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIHdpZHRoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDQxMTIxNTU3YWU2ZjM1ZGI5YWQ1ZjRjMWU4YWNjY2EwODY2M2U2ZmIuLmQ4NWIxNzlh
ZGM3MTI0N2JiYmU4NjM5M2EyYzAzNWVhZTBhYjNiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcw
LDYgKzE5NzAsOCBAQCBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGll
c0xvZ2dpbmcuY3BwCiAKIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcAogCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0uY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAK
IHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IGU0NTNkODkwOTdlNjg2YjJjMzM1MmJhZDY2ZWU3MTIzNDdjMTY2YjUuLmRjNjA5
ZmNjNmE0ZjE4ZTg3Y2U3Y2NiM2I4MTU3MzVkOGRmZGMwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtNDg1LDExICs0ODUsMTMgQEAgcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCiAKIHBsYXRmb3JtL21lZGlhc2Vzc2lv
bi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0KIAorcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCisKIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0KIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIEBu
by11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJ
T1MubW0gQG5vLXVuaWZ5CiAKLXBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWJiODQzMTQ1Mzlh
ZDA5NTE0NjMxYjIxMzA2MTZhZjYwYmE5YTFjMy4uZTA1NTM2ZjczY2IwYWU2NGZlNTJhMjEwNmJk
NmY5NjVhMjc5M2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTAwMCw3ICsxMDAwLDYgQEAKIAkJMzcyQzAwRDkxMjk2MTlG
ODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzNzJDMDBEODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzJE
M0U1NDIxNjU3OEFFMDBDNUUwMjEgLyogRGF0YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAv
KiBEYXRhVVJMRGVjb2Rlci5oICovOyB9OwogCQkzNzJEM0U1NTIxNjU3OEFFMDBDNUUwMjEgLyog
U2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmggKi87IH07Ci0JCTM3MkQzRTU2MjE2NTc4QUUwMEM1RTAyMSAvKiBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3QzA0NkM2MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EuaCAqLzsgfTsKIAkJMzcyRDNFNTcyMTY1NzhBRTAwQzVFMDIxIC8qIE5h
dmlnYXRvckNyZWRlbnRpYWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0Q4NDYyNjFGRTg5NUY4MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlh
bHMuaCAqLzsgfTsKIAkJMzc1Q0QyMzIxMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTEx
OUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVC
NDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8q
IE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMDg2LDYgKzEwODUsNyBAQAogCQk0MTYxRTJENTFGRTQ4
REM1MDBFQzJFOTYgLyogRmV0Y2hMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDdFMkI1MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
NjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEUxMDEx
NDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07CiAJCTQx
NjJBNDU4MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1NjEw
MTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9Owor
CQk0MTZBMDZBMTIzQ0NBRDAzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEw
Njk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEy
MjBDNjUxQTUwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJE
MkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRj
aElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFMjlBNjEwMkZB
OTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBX
b3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyB9OwpAQCAtNTQ3Miw3ICs1NDcyLDYgQEAKIAkJMDc2
OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRy
YWNrUHJpdmF0ZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VHJhY2tQcml2YXRlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NkVD
MTMyMUU0NEYyQ0IwMEU1RDgxMyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2
RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQw
QTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzc2NjRGQTE4M0U2QjVDMDAx
MzNCOTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1NTIsNyArNTU1MSw2IEBACiAJCTA3Qjcx
MTZDMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0I5M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVD
YWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNSU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3QjkzRkZCMjNCOTJBQUIwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1JTUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENv
bnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tT
dXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0Mx
QzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBCRDIy
NTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM4OCw2ICs3Mzg2LDEx
IEBACiAJCTQxNjJBNDRGMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ1NTEwMTE0NjQ3MDBE
RkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8q
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTZBMDY5MjIzQ0NBQTkzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxNkEwNjkzMjNDQ0FBOTQwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTZBMDY5NDIzQ0NBQTlFMDAzNDcxMDkgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE2QTA2OTUyM0NDQUE5RTAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE2QTA2OTYyM0NDQUE5RjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkNFNEE0MjI5REYx
MkUwMEE4QTY4NiAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2Fk
SW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xv
YWRJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIw
OUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZldGNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTYxNjEsNiArMTYxNjQsOSBAQAogCQkJCUNEQzY3NTFGMUVBRUE5OTYwMDcyN0M4NCAv
KiBpb3MgKi8sCiAJCQkJNDE1NzQ3NDIxRTM4Njk4MDAwRTkxNEQ4IC8qIGxpYndlYnJ0YyAqLywK
IAkJCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovLAorCQkJCTQxNkEwNjk1MjND
Q0FBOUUwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgKi8sCisJ
CQkJNDE2QTA2OTYyM0NDQUE5RjAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyLmggKi8sCisJCQkJNDE2QTA2OTQyM0NDQUE5RTAwMzQ3MTA5IC8qIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0uY3BwICovLAogCQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8sCiAJCQkJMDdCNzExNkExRDg5OUU2MzAw
OUYwRkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLywKIAkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBG
RkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovLApAQCAtMTYyMzQsOCArMTYyNDAsOCBA
QAogCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyog
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcCAqLywKLQkJCQkwN0MwNDZDNjFF
NDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8s
CisJCQkJNDE2QTA2OTMyM0NDQUE5NDAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwICovLAorCQkJCTQxNkEwNjkyMjNDQ0FBOTMwMDM0NzEwOSAvKiBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmggKi8sCiAJCQkJMDcwMzYzREExODFBMUNE
QzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLywKIAkJCQkwNzAzNjNEQjE4
MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSAqLywKIAkJCQkwNzAz
NjNERTE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLywKQEAgLTI5
MDg0LDYgKzI5MDkwLDcgQEAKIAkJCQlDRDJGNEEyODE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9I
YXJkd2FyZUxpc3RlbmVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREUyRDU1QjE1OUU2NkVC
MDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAx
MDEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDE2QTA2QTEyM0NDQUQwMzAwMzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxMzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9O
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVk
aW9Ob2RlSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDE4MTJCMDI2NzYwMEMxQTM1
OSAvKiBBdWRpb05vZGVPdXRwdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjkxMTAsNyArMjkxMTcs
NiBAQAogCQkJCUNERTNBODU4MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNENTRBNzYzMTgwRjlGNzAwMEIwNzZDOSAvKiBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDdENkE0RjgxQkYyMzA3RDAwMTc0MTQ2IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0u
aCBpbiBIZWFkZXJzICovLAotCQkJCTM3MkQzRTU2MjE2NTc4QUUwMEM1RTAyMSAvKiBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDhC
MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0VFNjg0NjExMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzRGNzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAppbmRleCBh
YTU2OGMyZjQ2MTFmN2M2YjkxM2RjZGYwZDgzMzU0NDU0NDJkM2VlLi4zMjZjOWJjMmE5YThjZTA2
NTQzNjM3NTBkZmIzZmJmNTBlYzU4ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCkBAIC00Miw3ICs0
Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uOwogY2xhc3MgQ0FSaW5nQnVmZmVyOwotY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7
CiAKIGNsYXNzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxBdWRpb1NhbXBsZURhdGFTb3VyY2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5S
dW5Mb29wPgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtNTAsNyArNDksNyBAQCBjbGFz
cyBBdWRpb1NhbXBsZURhdGFTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVk
aW9TYW1wbGVEYXRhU291cmNlLAogI2VuZGlmCiAgICAgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBjcmVhdGUoc2l6ZV90LCBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBjcmVhdGUo
c2l6ZV90LCBXVEY6OkxvZ2dlckhlbHBlciYpOwogCiAgICAgfkF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZSgpOwogCkBAIC04MSw3ICs4MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAg
IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShzaXplX3QsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7
CisgICAgQXVkaW9TYW1wbGVEYXRhU291cmNlKHNpemVfdCwgTG9nZ2VySGVscGVyJik7CiAKICAg
ICBPU1N0YXR1cyBzZXR1cENvbnZlcnRlcigpOwogICAgIGJvb2wgcHVsbFNhbXBsZXNJbnRlcm5h
bChBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3QmLCB1aW50NjRfdCwgZG91YmxlLCBQdWxsTW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1w
bGVEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCA0MWFmZTM5ZjIzMmFlNTg4MDg2MGYwODRkNTU2Y2I0
YTVkOGFlMjVhLi5hZGQ2ZDYwMGM3Y2Q2YWI2OGRjNGMwNjg1NWM0NTI2MTU2MjUxYWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRh
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nh
bXBsZURhdGFTb3VyY2UubW0KQEAgLTQ2LDE5ICs0NiwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmPEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6ZV90IG1h
eGltdW1TYW1wbGVDb3VudCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQorUmVmPEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6ZV90
IG1heGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGVscGVyJiBsb2dnZXJIZWxwZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9TYW1wbGVEYXRhU291cmNlKG1heGltdW1TYW1wbGVD
b3VudCwgdHJhY2spKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1NhbXBsZURhdGFT
b3VyY2UobWF4aW11bVNhbXBsZUNvdW50LCBsb2dnZXJIZWxwZXIpKTsKIH0KIAotQXVkaW9TYW1w
bGVEYXRhU291cmNlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1wbGVD
b3VudCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQorQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9n
Z2VySGVscGVyJiBsb2dnZXJIZWxwZXIpCiAgICAgOiBtX2lucHV0U2FtcGxlT2Zmc2V0KE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fbWF4aW11bVNhbXBsZUNvdW50KG1heGltdW1T
YW1wbGVDb3VudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIG1fbG9nZ2VyKHRy
YWNrLmxvZ2dlcigpKQotICAgICwgbV9sb2dJZGVudGlmaWVyKHRyYWNrLmxvZ0lkZW50aWZpZXIo
KSkKKyAgICAsIG1fbG9nZ2VyKGxvZ2dlckhlbHBlci5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRl
bnRpZmllcihsb2dnZXJIZWxwZXIubG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiB7CisjaWYgUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0obG9nZ2VySGVscGVyKTsKKyNlbmRp
ZgogfQogCiBBdWRpb1NhbXBsZURhdGFTb3VyY2U6On5BdWRpb1NhbXBsZURhdGFTb3VyY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRl
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFz
ZS5oCmluZGV4IGVkNzk5M2Q4YWRhNDY1YWRmMzg2Mjg0ODVjNDc3MTNmMTRjNjJiZmQuLjBlZmJm
MzNiYzgyOTJhMzhlZTBiYTYxZGM4ZWE1MTQ0OTJkNDdjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogY2xhc3MgVHJhY2tQcml2YXRlQmFzZQogICAgIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFRyYWNrUHJpdmF0ZUJhc2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6
Ok1haW4+CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dlckhl
bHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgogI2VuZGlmCiB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVHJhY2tQcml2YXRlQmFzZSk7CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihj
b25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7CisgICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihj
b25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7CiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBj
b25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0K
ICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9s
b2dJZGVudGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCBiYzVmMzkxYjY1MjBiMDMxYjZlNmM4
NTU1ZGE5YzNlMjIwMzk0MDkxLi4yZmQzZTczMWVlYTZlMzYzNGNjODdkMzFjNDM3ZjhjN2MwNjJm
YTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBD
bG9jazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2E7CitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOwogY2xh
c3MgQVZWaWRlb0NhcHR1cmVTb3VyY2U7CiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7
CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBDdXJyZW50RnJhbWVQYWludGVyIG1faW1hZ2VQYWludGVyOwogCi0g
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E+PiBtX2F1ZGlvVHJhY2tNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01h
cDsKICAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDZjNWY1MGI0ZGEwMGQyMTAyYmFkZTM3OTRm
OWRkZDBiZDQxOTI2NjMuLmM1ZWQwYTYzYmJlOWZmZmQ3ZTYyMWE3Y2Q0MzNkODIxZmRmZDE1Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKLSNpbXBvcnQgIkF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oIgorI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgpAQCAtMTAzMyw3ICsx
MDMzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZVRyYWNrcygpCiB7CiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3IgY3VycmVudFRy
YWNrcyA9IG1fbWVkaWFTdHJlYW1Qcml2YXRlLT50cmFja3MoKTsKIAotICAgIGF1dG8gc2V0QXVk
aW9UcmFja1N0YXRlID0gW3RoaXNdKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSYg
dHJhY2ssIGludCBpbmRleCwgVHJhY2tTdGF0ZSBzdGF0ZSkKKyAgICBhdXRvIHNldEF1ZGlvVHJh
Y2tTdGF0ZSA9IFt0aGlzXShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtJiB0cmFjaywgaW50
IGluZGV4LCBUcmFja1N0YXRlIHN0YXRlKQogICAgIHsKICAgICAgICAgc3dpdGNoIChzdGF0ZSkg
ewogICAgICAgICBjYXNlIFRyYWNrU3RhdGU6OlJlbW92ZToKQEAgLTEwNTIsNyArMTA1Miw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3Mo
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9OwotICAgIHVwZGF0ZVRyYWNr
c09mVHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlv
LCBjdXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVh
dGUsIFdURk1vdmUoc2V0QXVkaW9UcmFja1N0YXRlKSk7CisgICAgdXBkYXRlVHJhY2tzT2ZUeXBl
KG1fYXVkaW9UcmFja01hcCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIGN1cnJl
bnRUcmFja3MsICZBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUsIFdURk1vdmUo
c2V0QXVkaW9UcmFja1N0YXRlKSk7CiAKICAgICBhdXRvIHNldFZpZGVvVHJhY2tTdGF0ZSA9IFt0
aGlzXShWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtJiB0cmFjaywgaW50IGluZGV4LCBUcmFj
a1N0YXRlIHN0YXRlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNTE2NDlhMGE4ZDVmZTdkMzRiMTkxYzZmODkxYWY0MDI5ZTZiNDgx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2EuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IE1lZGlhVGltZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6UmVuZGVyZXJDcmVhdG9yIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyOjptX3JlbmRlcmVyQ3JlYXRvciA9IG51bGxwdHI7Cit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyOjpzZXRDcmVhdG9yKFJlbmRlcmVyQ3JlYXRvciBjcmVhdG9yKQoreworICAg
IG1fcmVuZGVyZXJDcmVhdG9yID0gY3JlYXRvcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyPiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6
Y3JlYXRlKCkKK3sKKyAgICBpZiAobV9yZW5kZXJlckNyZWF0b3IpCisgICAgICAgIHJldHVybiBt
X3JlbmRlcmVyQ3JlYXRvcigpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYT4oKTsKKyNlbHNlCisg
ICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExv
Z2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0g
JmxvZ2dlcjsKKyAgICBtX2xvZ0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworfQorCitXVEZMb2dD
aGFubmVsJiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIExvZ01lZGlhOworfQorI2VuZGlmCisKK30KKworI2VuZGlmIC8vIEVO
QUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ZTg3NjUzN2QyNmYyMzlkNzA2MmI5
YmQ2ZmY0MDI1Zjg1Y2U5ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCkBAIC0wLDAg
KzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxw
ZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKK2NsYXNzIFBsYXRm
b3JtQXVkaW9EYXRhOworCitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciA6IHB1
YmxpYyBMb2dnZXJIZWxwZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI+IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIHNldFBhdXNlZChib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgPSAw
OworICAgIC8vIE1heSBiZSBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICB2aXJ0
dWFsIHZvaWQgcHVzaFNhbXBsZXMoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sIHZhbHVlKSB7IG1fbXV0ZWQgPSB2YWx1
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKSB7IG1fdm9sdW1l
ID0gdm9sdW1lOyB9CisgICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7
IH0KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0
IExvZ2dlciYsIGNvbnN0IHZvaWQqKTsKKyNlbmRpZgorCisgICAgdXNpbmcgUmVuZGVyZXJDcmVh
dG9yID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyPiAoKiko
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRDcmVhdG9yKFJlbmRlcmVyQ3Jl
YXRvcik7CisKK3Byb3RlY3RlZDoKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25z
dCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICptX2xvZ2dlcjsgfQorICAg
IGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lk
ZW50aWZpZXI7IH0KKworICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciI7IH0KKyAgICBXVEZMb2dD
aGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworICAgIGJvb2wgaXNN
dXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
UmVuZGVyZXJDcmVhdG9yIG1fcmVuZGVyZXJDcmVhdG9yOworCisgICAgLy8gTWFpbiB0aHJlYWQg
d3JpdGFibGUgbWVtYmVycworICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgZmxvYXQg
bV92b2x1bWUgeyAxIH07CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWZQdHI8
Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTdkOWU2OWQxNWYwNjQyMWFiZjk0ZDQ0OGM4ZTg4OWQ0ODYwMzVmYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbS5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYgdHJhY2spCisgICAgOiBtX3N0cmVhbVRyYWNrKHRyYWNrKQorICAgICwg
bV9pZCh0cmFjay5pZCgpKQorICAgICwgbV9sYWJlbCh0cmFjay5sYWJlbCgpKQorICAgICwgbV90
aW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCisgICAgLCBtX3JlbmRlcmVy
IHsgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZSgpIH0KK3sKKyAgICB0cmFj
ay5hZGRPYnNlcnZlcigqdGhpcyk7Cit9CisKK0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06
On5BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKCkKK3sKKyAgICBjbGVhcigpOworfQorCisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW06OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmll
cikKK3sKKyAgICBUcmFja1ByaXZhdGVCYXNlOjpzZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVy
KTsKKyAgICBtX3JlbmRlcmVyLT5zZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKK30KKyNl
bmRpZgorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmNsZWFyKCkKK3sKKyAg
ICBpZiAobV9pc0NsZWFyZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNDbGVhcmVkID0g
dHJ1ZTsKKyAgICBzdHJlYW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKKworICAgIG1f
cmVuZGVyZXItPmNsZWFyKCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bTo6cGxheUludGVybmFsKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKG1faXNQbGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZyA9IHRy
dWU7CisgICAgbV9hdXRvUGxheSA9IGZhbHNlOworCisgICAgbV9yZW5kZXJlci0+c2V0UGF1c2Vk
KGZhbHNlKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpwbGF5KCkK
K3sKKyAgICBwbGF5SW50ZXJuYWwoKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtOjpwYXVzZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlm
ICghbV9pc1BsYXlpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQbGF5aW5nID0gZmFs
c2U7CisgICAgbV9hdXRvUGxheSA9IGZhbHNlOworCisgICAgbV9yZW5kZXJlci0+c2V0UGF1c2Vk
KHRydWUpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnNldFZvbHVt
ZShmbG9hdCB2b2x1bWUpCit7CisgICAgbV9yZW5kZXJlci0+c2V0Vm9sdW1lKHZvbHVtZSk7Cit9
CisKK2Zsb2F0IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnZvbHVtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnZvbHVtZSgpOworfQorCisvLyBNYXkgZ2V0IGNhbGxl
ZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBjb25z
dCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0Rh
dGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2Ft
cGxlQ291bnQpCit7CisgICAgaWYgKCFtX2lzUGxheWluZykgeworICAgICAgICBtX3JlbmRlcmVy
LT5zdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3JlbmRlcmVyLT5wdXNo
U2FtcGxlcyhzYW1wbGVUaW1lLCBhdWRpb0RhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7
CisKKyAgICBpZiAobV9hdXRvUGxheSAmJiAhbV9oYXNTdGFydGVkQXV0b3BsYXkpIHsKKyAgICAg
ICAgbV9oYXNTdGFydGVkQXV0b3BsYXkgPSB0cnVlOworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgIGlm
IChtX2F1dG9QbGF5KQorICAgICAgICAgICAgICAgIHBsYXlJbnRlcm5hbCgpOworICAgICAgICB9
KTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tN
dXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQoreworICAgIHVwZGF0ZVJlbmRl
cmVyTXV0ZWRTdGF0ZSgpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06
OnRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQoreworICAgIHVw
ZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW06OnVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgpCit7CisgICAgbV9yZW5kZXJlci0+
c2V0TXV0ZWQobV9pc1BsYXlpbmcgJiYgIXN0cmVhbVRyYWNrKCkubXV0ZWQoKSAmJiAhc3RyZWFt
VHJhY2soKS5lbmRlZCgpICYmIHN0cmVhbVRyYWNrKCkuZW5hYmxlZCgpKTsKK30KKwordm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjp0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikKK3sKKyAgICBwYXVzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKaW5kZXggZGNkM2FlYzI1NDlmMzZlZDNl
YWM4MWIzZTA0OWQ2NDI0OWY4YjhmYi4uZjMyNWM2ZGQ2OWNmODJjYTE4MDVhZDE1MWQxNzQ2ZGI2
ZDE2ZDc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaApAQCAtMzIsMTkg
KzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbSA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CitjbGFzcyBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSwgcHJpdmF0ZSBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
IHN0cmVhbVRyYWNrKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbShzdHJlYW1UcmFjaykpOwogICAgIH0KLQotICAgIEtpbmQg
a2luZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEtpbmQ6Ok1haW47IH0KLSAgICBBdG9tU3Ry
aW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIEF0b21TdHJpbmcg
bGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVsOyB9Ci0gICAgQXRvbVN0cmlu
ZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9Ci0gICAg
aW50IHRyYWNrSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CisgICAg
fkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oKTsKIAogICAgIHZvaWQgc2V0VHJhY2tJbmRl
eChpbnQgaW5kZXgpIHsgbV9pbmRleCA9IGluZGV4OyB9CiAKQEAgLTUzLDIwICs1MCw1NyBAQCBw
dWJsaWM6CiAgICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90
aW1lbGluZU9mZnNldDsgfQogICAgIHZvaWQgc2V0VGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFU
aW1lJiBvZmZzZXQpIHsgbV90aW1lbGluZU9mZnNldCA9IG9mZnNldDsgfQogCisgICAgdm9pZCBj
bGVhcigpOworCisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgpOworICAgIGJvb2wg
aXNQbGF5aW5nKCkgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KKworICAgIHZvaWQgc2V0Vm9sdW1l
KGZsb2F0KTsKKyAgICBmbG9hdCB2b2x1bWUoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TXV0ZWQo
Ym9vbCBtdXRlZCkgeyBtX211dGVkID0gbXV0ZWQ7IH0KKyAgICBib29sIG11dGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9tdXRlZDsgfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgdm9p
ZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOworICAgIGNvbnN0
IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtIjsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKLSAgICBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKLSAgICAg
ICAgOiBtX3N0cmVhbVRyYWNrKHRyYWNrKQotICAgICAgICAsIG1faWQodHJhY2suaWQoKSkKLSAg
ICAgICAgLCBtX2xhYmVsKHRyYWNrLmxhYmVsKCkpCi0gICAgICAgICwgbV90aW1lbGluZU9mZnNl
dChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCi0gICAgewotICAgIH0KKyAgICBleHBsaWNpdCBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisK
KyAgICAvLyBBdWRpb1RyYWNrUHJpdmF0ZQorICAgIEtpbmQga2luZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIEtpbmQ6Ok1haW47IH0KKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pZDsgfQorICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2xhYmVsOyB9CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2luZGV4OyB9CisKKyAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKKyAg
ICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNv
bnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWw7CisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpICBmaW5hbDsKKyAgICB2b2lkIHRyYWNrRW5hYmxlZENo
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSAgZmluYWw7CisgICAgdm9pZCB0cmFja1Nl
dHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQorCisgICAg
dm9pZCBwbGF5SW50ZXJuYWwoKTsKKyAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgp
OworCisgICAgLy8gTWFpbiB0aHJlYWQgd3JpdGFibGUgbWVtYmVycworICAgIGJvb2wgbV9pc1Bs
YXlpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hdXRvUGxheSB7IGZhbHNlIH07CisgICAgYm9v
bCBtX211dGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNDbGVhcmVkIHsgZmFsc2UgfTsKIAog
ICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9zdHJlYW1UcmFjazsKICAgICBBdG9t
U3RyaW5nIG1faWQ7CiAgICAgQXRvbVN0cmluZyBtX2xhYmVsOwogICAgIGludCBtX2luZGV4IHsg
MCB9OwogICAgIE1lZGlhVGltZSBtX3RpbWVsaW5lT2Zmc2V0OworCisgICAgLy8gQXVkaW8gdGhy
ZWFkIG1lbWJlcnMKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXI+IG1fcmVuZGVyZXI7CisgICAgYm9vbCBtX2hhc1N0YXJ0ZWRBdXRvcGxheSB7IGZhbHNl
IH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAppbmRleCAwMDcxNmZkMGE0NTYx
NGRlNmNkOGFiYWRlMDU5MGYyYmYxMGMwMjZlLi4xMGI2NzAzY2ViM2E5ODU2OWY5NDM0YjgyYmFj
NTNlZGVjOGJjYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUgZmluYWwKICAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSwgV2Vha1B0ckZhY3RvcnlJbml0aWFs
aXphdGlvbjo6RWFnZXI+CiAgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2
ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVy
CisgICAgLCBwdWJsaWMgTG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNzU0NjFmNmQ1ZDhmNmI3ZTZhZjlmZDU2Y2MyNmY1ZmJkMzkyYmI1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYS5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCisj
aW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRhU291cmNlLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9u
LmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVk
ZSA8cGFsL3NwaS9jb2NvYS9BdWRpb1Rvb2xib3hTUEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckNvY29hKCkgPSBkZWZhdWx0OworCitBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjp+QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpID0gZGVm
YXVsdDsKKwordm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzdG9wKCkK
K3sKKyAgICBpZiAoIW1faXNBdWRpb1VuaXRTdGFydGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9yZW1vdGVJT1VuaXQpCisgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1v
dGVJT1VuaXQpOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6
OmNsZWFyKCkKK3sKKyAgICBpZiAobV9kYXRhU291cmNlKQorICAgICAgICBtX2RhdGFTb3VyY2Ut
PnNldFBhdXNlZCh0cnVlKTsKKworICAgIGlmIChtX3JlbW90ZUlPVW5pdCkgeworICAgICAgICBB
dWRpb091dHB1dFVuaXRTdG9wKG1fcmVtb3RlSU9Vbml0KTsKKyAgICAgICAgQXVkaW9Db21wb25l
bnRJbnN0YW5jZURpc3Bvc2UobV9yZW1vdGVJT1VuaXQpOworICAgICAgICBtX3JlbW90ZUlPVW5p
dCA9IG51bGxwdHI7CisgICAgfQorCisgICAgbV9kYXRhU291cmNlID0gbnVsbHB0cjsKKyAgICBt
X2lucHV0RGVzY3JpcHRpb24gPSBudWxscHRyOworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBu
dWxscHRyOworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnNl
dFBhdXNlZChib29sIHZhbHVlKQoreworICAgIG1fcGF1c2VkID0gdmFsdWU7CisgICAgaWYgKG1f
ZGF0YVNvdXJjZSkKKyAgICAgICAgbV9kYXRhU291cmNlLT5zZXRQYXVzZWQodmFsdWUpOworfQor
CitBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2E6OmNyZWF0ZUF1ZGlvVW5pdChDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG91dHB1dERlc2Ny
aXB0aW9uKQoreworICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgcmVtb3RlSU9Vbml0IHsgbnVs
bHB0ciB9OworCisgICAgQXVkaW9Db21wb25lbnREZXNjcmlwdGlvbiBpb1VuaXREZXNjcmlwdGlv
biB7IGtBdWRpb1VuaXRUeXBlX091dHB1dCwgMCwga0F1ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBs
ZSwgMCwgMCB9OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaW9Vbml0RGVzY3JpcHRp
b24uY29tcG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX1JlbW90ZUlPOworI2Vsc2UK
KyAgICBpb1VuaXREZXNjcmlwdGlvbi5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5
cGVfRGVmYXVsdE91dHB1dDsKKyNlbmRpZgorCisgICAgQXVkaW9Db21wb25lbnQgaW9Db21wb25l
bnQgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0KG51bGxwdHIsICZpb1VuaXREZXNjcmlwdGlvbik7
CisgICAgQVNTRVJUKGlvQ29tcG9uZW50KTsKKyAgICBpZiAoIWlvQ29tcG9uZW50KSB7CisgICAg
ICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGZpbmQgcmVtb3RlIElPIHVu
aXQgY29tcG9uZW50Iik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIE9T
U3RhdHVzIGVyciA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoaW9Db21wb25lbnQsICZyZW1v
dGVJT1VuaXQpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJ
RVIsICJ1bmFibGUgdG8gb3BlbiB2cGlvIHVuaXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29u
c3QgY2hhciopJmVyciwgIikiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBVSW50MzIgcGFyYW0gPSAxOworICAgIGVyciA9
IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvT3V0cHV0VW5pdFByb3Bl
cnR5X0VuYWJsZUlPLCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAmcGFyYW0sIHNpemVvZihw
YXJhbSkpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICJ1bmFibGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBvdXRwdXQsIGVycm9yID0gIiwgZXJyLCAiICgi
LCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorI2VuZGlmCisKKyAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGNhbGxiYWNrID0geyBpbnB1
dFByb2MsIHRoaXMgfTsKKyAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1Vu
aXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3Bl
X0dsb2JhbCwgMCwgJmNhbGxiYWNrLCBzaXplb2YoY2FsbGJhY2spKTsKKyAgICBpZiAoZXJyKSB7
CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIHNldCB2cGlvIHVu
aXQgc3BlYWtlciBwcm9jLCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIs
ICIpIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFVJbnQzMiBzaXpl
ID0gc2l6ZW9mKG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpOworICAgIGVy
ciAgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0
eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJm91dHB1dERlc2NyaXB0
aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksICZzaXplKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9y
bWF0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIG91dHB1dERlc2NyaXB0aW9uLnN0cmVh
bURlc2NyaXB0aW9uKCkubVNhbXBsZVJhdGUgPSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24o
KS5zYW1wbGVSYXRlKCk7CisKKyAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJ
T1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9J
bnB1dCwgMCwgJm91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIHNpemVvZihv
dXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKSk7CisgICAgaWYgKGVycikgewor
ICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBzZXQgaW5wdXQgc3Ry
ZWFtIGZvcm1hdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBlcnIgPSBBdWRpb1VuaXRJ
bml0aWFsaXplKHJlbW90ZUlPVW5pdCk7CisgICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9M
T0coTE9HSURFTlRJRklFUiwgIkF1ZGlvVW5pdEluaXRpYWxpemUoKSBmYWlsZWQsIGVycm9yID0g
IiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIHJlbW90ZUlPVW5pdDsKK30KKworLy8gTWF5IGdl
dCBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJDb2NvYTo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1l
LCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIEFTU0VS
VChkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkudHlwZSA9PSBQbGF0Zm9ybURlc2Ny
aXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNUeXBlKTsKKworICAgIGlmICghbV9pbnB1dERlc2Ny
aXB0aW9uIHx8ICptX2lucHV0RGVzY3JpcHRpb24gIT0gZGVzY3JpcHRpb24pIHsKKyAgICAgICAg
bV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBmYWxzZTsKKworICAgICAgICBpZiAobV9yZW1vdGVJT1Vu
aXQpIHsKKyAgICAgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOwor
ICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UobV9yZW1vdGVJT1VuaXQp
OworICAgICAgICAgICAgbV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOworICAgICAgICB9CisKKyAg
ICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgbV9vdXRwdXREZXNj
cmlwdGlvbiA9IG51bGxwdHI7CisKKyAgICAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGlu
cHV0RGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7
CisgICAgICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBvdXRwdXREZXNjcmlwdGlvbjsKKwor
ICAgICAgICBhdXRvIHJlbW90ZUlPVW5pdCA9IGNyZWF0ZUF1ZGlvVW5pdChvdXRwdXREZXNjcmlw
dGlvbik7CisgICAgICAgIGlmICghcmVtb3RlSU9Vbml0KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlv
biA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlv
bik7CisKKyAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVh
dGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMiwgKnRoaXMpOworCisgICAgICAgIGlmICht
X2RhdGFTb3VyY2UtPnNldElucHV0Rm9ybWF0KGlucHV0RGVzY3JpcHRpb24pIHx8IG1fZGF0YVNv
dXJjZS0+c2V0T3V0cHV0Rm9ybWF0KG91dHB1dERlc2NyaXB0aW9uKSkgeworICAgICAgICAgICAg
QXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UocmVtb3RlSU9Vbml0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9PdXRw
dXRVbml0U3RhcnQocmVtb3RlSU9Vbml0KSkgeworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lE
RU5USUZJRVIsICJBdWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0gIiwgZXJyb3Is
ICIgKCIsIChjb25zdCBjaGFyKikmZXJyb3IsICIpIik7CisgICAgICAgICAgICBBdWRpb0NvbXBv
bmVudEluc3RhbmNlRGlzcG9zZShyZW1vdGVJT1VuaXQpOworICAgICAgICAgICAgbV9pbnB1dERl
c2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIG1faXNBdWRpb1VuaXRTdGFydGVkID0gdHJ1ZTsKKworICAgICAgICBtX2RhdGFTb3Vy
Y2UtPnNldFZvbHVtZSh2b2x1bWUoKSk7CisgICAgICAgIG1fcmVtb3RlSU9Vbml0ID0gcmVtb3Rl
SU9Vbml0OworICAgIH0KKworICAgIG1fZGF0YVNvdXJjZS0+cHVzaFNhbXBsZXMoc2FtcGxlVGlt
ZSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CisKKyAgICBpZiAoIW1faXNBdWRpb1VuaXRTdGFy
dGVkKSB7CisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9y
ZW1vdGVJT1VuaXQpKSB7CisgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1
ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCwgZXJyb3IgPSAiLCBlcnJvciwgIiAoIiwgKGNvbnN0
IGNoYXIqKSZlcnJvciwgIikiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9IHRydWU7CisgICAgfQorfQorCitPU1N0YXR1cyBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpyZW5kZXIoVUludDMyIHNhbXBsZUNv
dW50LCBBdWRpb0J1ZmZlckxpc3QmIGlvRGF0YSwgVUludDMyIC8qaW5CdXNOdW1iZXIqLywgY29u
c3QgQXVkaW9UaW1lU3RhbXAmIHRpbWVTdGFtcCwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3Mm
IGFjdGlvbkZsYWdzKQoreworICAgIGlmIChpc011dGVkKCkgfHwgbV9wYXVzZWQgfHwgIW1fZGF0
YVNvdXJjZSkgeworICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoaW9EYXRh
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50ICogbV9vdXRwdXREZXNjcmlwdGlvbi0+
Ynl0ZXNQZXJGcmFtZSgpKSk7CisgICAgICAgIGFjdGlvbkZsYWdzID0ga0F1ZGlvVW5pdFJlbmRl
ckFjdGlvbl9PdXRwdXRJc1NpbGVuY2U7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IG1fZGF0YVNvdXJjZS0+cHVsbFNhbXBsZXMoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNh
bXBsZUNvdW50KSwgdGltZVN0YW1wLm1TYW1wbGVUaW1lLCB0aW1lU3RhbXAubUhvc3RUaW1lLCBB
dWRpb1NhbXBsZURhdGFTb3VyY2U6OkNvcHkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK09TU3Rh
dHVzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1
c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqIGFjdGlvbkZsYWdzLCBjb25zdCBB
dWRpb1RpbWVTdGFtcCogdGltZVN0YW1wLCBVSW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBzYW1w
bGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EqPih1c2VyRGF0YSktPnJlbmRl
cihzYW1wbGVDb3VudCwgKmlvRGF0YSwgaW5CdXNOdW1iZXIsICp0aW1lU3RhbXAsICphY3Rpb25G
bGFncyk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTllNTQ2MWNi
MDI4ZGZjMWRmZDJlOTRlM2YzYzZkOGQ4YjVjYWU0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Ub29sYm94Lmg+CisjaW5jbHVk
ZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNlOworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0
OworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworCitjbGFzcyBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hIDogcHVibGljIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hKCk7CisgICAgfkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyQ29jb2EoKTsKKworcHJpdmF0ZToKKyAgICAvLyBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlcgorICAgIHZvaWQgcHVzaFNhbXBsZXMoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBj
b25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBz
aXplX3QpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoKSBm
aW5hbDsKKyAgICB2b2lkIHNldFBhdXNlZChib29sKSBmaW5hbDsKKworICAgIHN0YXRpYyBPU1N0
YXR1cyBpbnB1dFByb2Modm9pZCosIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3Qg
QXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1l
cywgQXVkaW9CdWZmZXJMaXN0Kik7CisgICAgT1NTdGF0dXMgcmVuZGVyKFVJbnQzMiBzYW1wbGVD
b3VudCwgQXVkaW9CdWZmZXJMaXN0JiwgVUludDMyIGluQnVzTnVtYmVyLCBjb25zdCBBdWRpb1Rp
bWVTdGFtcCYsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJik7CisKKyAgICBBdWRpb0NvbXBv
bmVudEluc3RhbmNlIGNyZWF0ZUF1ZGlvVW5pdChDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mKTsK
KworICAgIC8vIEF1ZGlvIHRocmVhZCBtZW1iZXJzCisgICAgQXVkaW9Db21wb25lbnRJbnN0YW5j
ZSBtX3JlbW90ZUlPVW5pdCB7IG51bGxwdHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVf
cHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKKworICAg
IC8vIENyb3NzIHRocmVhZCBtZW1iZXJzCisgICAgUmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZT4gbV9kYXRhU291cmNlOworICAgIGJvb2wgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYzAzODFmYzZjM2E3MzE4MzkwNjVjNDk5ZTRlMmU5YWIzNzI2ZDJkOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYS5oIgotCi0jaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCi0jaW5jbHVk
ZSAiQXVkaW9TYW1wbGVEYXRhU291cmNlLmgiCi0jaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCi0j
aW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5o
IgotCi0jaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW5jbHVkZSA8cGFs
L3NwaS9jb2NvYS9BdWRpb1Rvb2xib3hTUEkuaD4KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCi0gICAgOiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtKHRyYWNrKQotewotICAgIHRyYWNrLnNvdXJjZSgpLmFkZE9ic2VydmVy
KCp0aGlzKTsKLX0KLQotQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjp+QXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKCkKLXsKLSAgICBjbGVhcigpOwotfQotCi12b2lk
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y2xlYXIoKQotewotICAgIGlmICht
X2lzQ2xlYXJlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc0NsZWFyZWQgPSB0cnVlOwot
ICAgIHN0cmVhbVRyYWNrKCkuc291cmNlKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAg
aWYgKG1fZGF0YVNvdXJjZSkKLSAgICAgICAgbV9kYXRhU291cmNlLT5zZXRQYXVzZWQodHJ1ZSk7
Ci0KLSAgICBpZiAobV9yZW1vdGVJT1VuaXQpIHsKLSAgICAgICAgQXVkaW9PdXRwdXRVbml0U3Rv
cChtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3Nl
KG1fcmVtb3RlSU9Vbml0KTsKLSAgICAgICAgbV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOwotICAg
IH0KLQotICAgIG1fZGF0YVNvdXJjZSA9IG51bGxwdHI7Ci0gICAgbV9pbnB1dERlc2NyaXB0aW9u
ID0gbnVsbHB0cjsKLSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLX0KLQotdm9p
ZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXlJbnRlcm5hbCgpCi17Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIGlmIChtX2lzUGxheWluZykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9pc1BsYXlpbmcgPSB0cnVlOwotICAgIG1fYXV0b1BsYXkgPSBm
YWxzZTsKLQotICAgIGlmIChtX2RhdGFTb3VyY2UpCi0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0
UGF1c2VkKGZhbHNlKTsKLX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E6OnBsYXkoKQotewotICAgIHBsYXlJbnRlcm5hbCgpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6cGF1c2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2lzUGxheWluZyA9IGZhbHNlOwotICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKLQotICAgIGlmICht
X2RhdGFTb3VyY2UpCi0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0UGF1c2VkKHRydWUpOwotfQot
Ci12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c2V0Vm9sdW1lKGZsb2F0
IHZvbHVtZSkKLXsKLSAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKLSAgICBpZiAobV9kYXRhU291cmNl
KQotICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFZvbHVtZShtX3ZvbHVtZSk7Ci19Ci0KLUF1ZGlv
Q29tcG9uZW50SW5zdGFuY2UgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVh
dGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdXRwdXREZXNjcmlwdGlvbikK
LXsKLSAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIHJlbW90ZUlPVW5pdCB7IG51bGxwdHIgfTsK
LQotICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gaW9Vbml0RGVzY3JpcHRpb24geyBrQXVk
aW9Vbml0VHlwZV9PdXRwdXQsIDAsIGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGUsIDAsIDAg
fTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlvVW5pdERlc2NyaXB0aW9uLmNvbXBv
bmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1vdGVJTzsKLSNlbHNlCi0gICAgaW9V
bml0RGVzY3JpcHRpb24uY29tcG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX0RlZmF1
bHRPdXRwdXQ7Ci0jZW5kaWYKLQotICAgIEF1ZGlvQ29tcG9uZW50IGlvQ29tcG9uZW50ID0gQXVk
aW9Db21wb25lbnRGaW5kTmV4dChudWxscHRyLCAmaW9Vbml0RGVzY3JpcHRpb24pOwotICAgIEFT
U0VSVChpb0NvbXBvbmVudCk7Ci0gICAgaWYgKCFpb0NvbXBvbmVudCkgewotICAgICAgICBFUlJP
Ul9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBv
bmVudCIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBPU1N0YXR1cyBl
cnIgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNlTmV3KGlvQ29tcG9uZW50LCAmcmVtb3RlSU9Vbml0
KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5h
YmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIq
KSZlcnIsICIpIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgVUludDMyIHBhcmFtID0gMTsKLSAgICBlcnIgPSBBdWRpb1Vu
aXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFi
bGVJTywga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsK
LSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxl
IHRvIGVuYWJsZSB2cGlvIHVuaXQgb3V0cHV0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0
IGNoYXIqKSZlcnIsICIpIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSNlbmRp
ZgotCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0cnVjdCBjYWxsYmFjayA9IHsgaW5wdXRQcm9jLCB0
aGlzIH07Ci0gICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWws
IDAsICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7Ci0gICAgaWYgKGVycikgewotICAgICAg
ICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNwZWFr
ZXIgcHJvYywgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBVSW50MzIgc2l6ZSA9IHNpemVv
ZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKLSAgICBlcnIgID0gQXVk
aW9Vbml0R2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFt
Rm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJl
YW1EZXNjcmlwdGlvbigpLCAmc2l6ZSk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9M
T0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJy
b3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlw
dGlvbigpLm1TYW1wbGVSYXRlID0gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxl
UmF0ZSgpOwotCi0gICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBr
QXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAs
ICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCBzaXplb2Yob3V0cHV0RGVz
Y3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24oKSkpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3Jt
YXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6
ZShyZW1vdGVJT1VuaXQpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR0lE
RU5USUZJRVIsICJBdWRpb1VuaXRJbml0aWFsaXplKCkgZmFpbGVkLCBlcnJvciA9ICIsIGVyciwg
IiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIHJldHVybiByZW1vdGVJT1VuaXQ7Ci19Ci0KLS8vIE1heSBnZXQgY2FsbGVk
IG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGlt
ZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBBU1NF
UlQoZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNj
cmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSk7Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5n
KSB7Ci0gICAgICAgIGlmIChtX2lzQXVkaW9Vbml0U3RhcnRlZCkgewotICAgICAgICAgICAgaWYg
KG1fcmVtb3RlSU9Vbml0KQotICAgICAgICAgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9y
ZW1vdGVJT1VuaXQpOwotICAgICAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBmYWxzZTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2lucHV0RGVz
Y3JpcHRpb24gfHwgKm1faW5wdXREZXNjcmlwdGlvbiAhPSBkZXNjcmlwdGlvbikgewotICAgICAg
ICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9IGZhbHNlOwotCi0gICAgICAgIGlmIChtX3JlbW90ZUlP
VW5pdCkgewotICAgICAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7
Ci0gICAgICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX3JlbW90ZUlPVW5p
dCk7Ci0gICAgICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLQot
ICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBudWxscHRyOwotICAgICAgICBtX291dHB1dERl
c2NyaXB0aW9uID0gbnVsbHB0cjsKLQotICAgICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24g
aW5wdXREZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKGRlc2NyaXB0aW9u
KTsKLSAgICAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG91dHB1dERlc2NyaXB0aW9uOwot
Ci0gICAgICAgIGF1dG8gcmVtb3RlSU9Vbml0ID0gY3JlYXRlQXVkaW9Vbml0KG91dHB1dERlc2Ny
aXB0aW9uKTsKLSAgICAgICAgaWYgKCFyZW1vdGVJT1VuaXQpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0
aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0
aW9uKTsKLQotICAgICAgICBtX2RhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNy
ZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAyLCBzdHJlYW1UcmFjaygpKTsKLQotICAg
ICAgICBpZiAobV9kYXRhU291cmNlLT5zZXRJbnB1dEZvcm1hdChpbnB1dERlc2NyaXB0aW9uKSB8
fCBtX2RhdGFTb3VyY2UtPnNldE91dHB1dEZvcm1hdChvdXRwdXREZXNjcmlwdGlvbikpIHsKLSAg
ICAgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKHJlbW90ZUlPVW5pdCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYXV0byBlcnJvciA9
IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KHJlbW90ZUlPVW5pdCkpIHsKLSAgICAgICAgICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAiQXVkaW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkLCBlcnJvciA9
ICIsIGVycm9yLCAiICgiLCAoY29uc3QgY2hhciopJmVycm9yLCAiKSIpOwotICAgICAgICAgICAg
QXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UocmVtb3RlSU9Vbml0KTsKLSAgICAgICAgICAg
IG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9IHRydWU7Ci0KLSAgICAgICAg
bV9kYXRhU291cmNlLT5zZXRWb2x1bWUobV92b2x1bWUpOwotICAgICAgICBtX3JlbW90ZUlPVW5p
dCA9IHJlbW90ZUlPVW5pdDsKLSAgICB9Ci0KLSAgICBtX2RhdGFTb3VyY2UtPnB1c2hTYW1wbGVz
KHNhbXBsZVRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOwotCi0gICAgaWYgKG1fYXV0b1Bs
YXkgJiYgIW1faGFzU3RhcnRlZEF1dG9wbGF5KSB7Ci0gICAgICAgIG1faGFzU3RhcnRlZEF1dG9w
bGF5ID0gdHJ1ZTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgICAgICBpZiAobV9hdXRvUGxheSkKLSAgICAg
ICAgICAgICAgICBwbGF5SW50ZXJuYWwoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYg
KCFtX2lzQXVkaW9Vbml0U3RhcnRlZCkgewotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlv
T3V0cHV0VW5pdFN0YXJ0KG1fcmVtb3RlSU9Vbml0KSkgewotICAgICAgICAgICAgRVJST1JfTE9H
KExPR0lERU5USUZJRVIsICJBdWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0gIiwg
ZXJyb3IsICIgKCIsIChjb25zdCBjaGFyKikmZXJyb3IsICIpIik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOwotICAg
IH0KLX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNvdXJjZVN0
b3BwZWQoKQotewotICAgIHBhdXNlKCk7Ci19Ci0KLU9TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6cmVuZGVyKFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJM
aXN0JiBpb0RhdGEsIFVJbnQzMiAvKmluQnVzTnVtYmVyKi8sIGNvbnN0IEF1ZGlvVGltZVN0YW1w
JiB0aW1lU3RhbXAsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJiBhY3Rpb25GbGFncykKLXsK
LSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBhIGhpZ2gtcHJpb3JpdHkgYmFja2dy
b3VuZCB0aHJlYWQuIFRoZSBmb2xsb3dpbmcgcHJvdGVjdGVkVGhpcyBvYmplY3QgZW5zdXJlcyB0
aGUgb2JqZWN0IGlzIG5vdAotICAgIC8vIGRlc3Ryb3llZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVm
b3JlIHRoaXMgZnVuY3Rpb24gZXhpdHMuCi0gICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW1Db2NvYT4gcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0KLSAgICBpZiAoIW1faXNQbGF5
aW5nIHx8IG1fbXV0ZWQgfHwgIW1fZGF0YVNvdXJjZSB8fCBzdHJlYW1UcmFjaygpLm11dGVkKCkg
fHwgc3RyZWFtVHJhY2soKS5lbmRlZCgpIHx8ICFzdHJlYW1UcmFjaygpLmVuYWJsZWQoKSkgewot
ICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoaW9EYXRhLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHNhbXBsZUNvdW50ICogbV9vdXRwdXREZXNjcmlwdGlvbi0+Ynl0ZXNQZXJGcmFt
ZSgpKSk7Ci0gICAgICAgIGFjdGlvbkZsYWdzID0ga0F1ZGlvVW5pdFJlbmRlckFjdGlvbl9PdXRw
dXRJc1NpbGVuY2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIG1fZGF0YVNvdXJj
ZS0+cHVsbFNhbXBsZXMoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50KSwg
dGltZVN0YW1wLm1TYW1wbGVUaW1lLCB0aW1lU3RhbXAubUhvc3RUaW1lLCBBdWRpb1NhbXBsZURh
dGFTb3VyY2U6OkNvcHkpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLU9TU3RhdHVzIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6aW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRp
b1VuaXRSZW5kZXJBY3Rpb25GbGFncyogYWN0aW9uRmxhZ3MsIGNvbnN0IEF1ZGlvVGltZVN0YW1w
KiB0aW1lU3RhbXAsIFVJbnQzMiBpbkJ1c051bWJlciwgVUludDMyIHNhbXBsZUNvdW50LCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKj4odXNlckRhdGEpLT5yZW5kZXIoc2FtcGxlQ291bnQs
ICppb0RhdGEsIGluQnVzTnVtYmVyLCAqdGltZVN0YW1wLCAqYWN0aW9uRmxhZ3MpOwotfQotCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykg
JiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxNDU0
ZWMxYmE4MTdmYmRiNjRiMzA2MGM5ZjgzNTc3Yjg1OTNkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRp
b1Rvb2xib3guaD4KLSNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2U7Ci1jbGFzcyBB
dWRpb1NhbXBsZUJ1ZmZlckxpc3Q7Ci1jbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247Ci0K
LWNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSBmaW5hbCA6IHB1YmxpYyBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6
Ok9ic2VydmVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EpCi1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2E+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3Ry
ZWFtVHJhY2spCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eoc3RyZWFtVHJhY2spKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGNsZWFyKCk7Ci0KLSAgICB2b2lkIHBsYXkoKTsKLSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgYm9v
bCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2lzUGxheWluZzsgfQotCi0gICAgdm9pZCBzZXRWb2x1
bWUoZmxvYXQpOwotICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9
Ci0KLSAgICB2b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQpIHsgbV9tdXRlZCA9IG11dGVkOyB9Ci0g
ICAgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KLQotcHJpdmF0ZToKLSAg
ICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmKTsKLSAgICB+QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKCk7Ci0KLSAgICAv
LyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlcgotICAgIHZvaWQgc291cmNlU3RvcHBlZCgp
IGZpbmFsOwotICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYs
IGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYs
IHNpemVfdCkgZmluYWw7Ci0KLSAgICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBB
dWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMy
IGluQnVzTnVtYmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCopOwot
ICAgIE9TU3RhdHVzIHJlbmRlcihVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYs
IFVJbnQzMiBpbkJ1c051bWJlciwgY29uc3QgQXVkaW9UaW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5k
ZXJBY3Rpb25GbGFncyYpOwotCi0gICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSBjcmVhdGVBdWRp
b1VuaXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7Ci0gICAgdm9pZCBjbGVhbnVwKCk7Ci0g
ICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3QpOwotICAgIHZv
aWQgcGxheUludGVybmFsKCk7Ci0KLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25z
dCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hIjsgfQotI2VuZGlmCi0KLSAgICAvLyBBdWRpbyB0aHJlYWQg
bWVtYmVycwotICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgbV9yZW1vdGVJT1VuaXQgeyBudWxs
cHRyIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9p
bnB1dERlc2NyaXB0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24+IG1fb3V0cHV0RGVzY3JpcHRpb247Ci0gICAgYm9vbCBtX2lzQXVkaW9Vbml0U3RhcnRl
ZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1N0YXJ0ZWRBdXRvcGxheSB7IGZhbHNlIH07Ci0K
LSAgICAvLyBDcm9zcyB0aHJlYWQgbWVtYmVycwotICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFT
b3VyY2U+IG1fZGF0YVNvdXJjZTsKLQotICAgIC8vIE1haW4gdGhyZWFkIHdyaXRhYmxlIG1lbWJl
cnMKLSAgICBmbG9hdCBtX3ZvbHVtZSB7IDEgfTsKLSAgICBib29sIG1faXNQbGF5aW5nIHsgZmFs
c2UgfTsKLSAgICBib29sIG1fYXV0b1BsYXkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tdXRlZCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQ2xlYXJlZCB7IGZhbHNlIH07Ci19OwotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387524</attachid>
            <date>2020-01-13 06:57:05 -0800</date>
            <delta_ts>2020-01-13 07:43:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206172-20200113155702.patch</filename>
            <type>text/plain</type>
            <size>65293</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhNjVjNjY5MWY0ZmQw
ZDAzOGE0MzYzMDU3NzMxMjllZDdmNGFlNC4uOGYwNTViOWQ1NmU0MmI4MzhjMTFjNzZkY2U4Mjhm
MzUxNWZmZWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTAxLTEzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgdG8gaW1wbGVtZW50IHJlbW90ZSBhdWRpbyByZW5kZXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yIGNvZGUgdG8gYWxsb3cgaW4gdGhlIGZ1dHVyZSByZW5kZXJpbmcgb2YgbWVkaWEgc3RyZWFt
IGF1ZGlvIHRyYWNrcyBpbiBhIHJlbW90ZSBwcm9jZXNzLgorICAgICAgICBGb3IgdGhhdCBwdXJw
b3NlLCBzcGxpdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZnVuY3Rpb25hbGl0
eSBpbiB0d28gcGFydHMuCisgICAgICAgIFRoZSBmaXJzdCBwYXJ0IGlzIG1vdmVkIGJhY2sgdG8g
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS4KKyAgICAgICAgVGhlIHNlY29uZCBwYXJ0IGlz
IHBsYXRmb3JtIHNwZWNpZmljIGFuZCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIGFuIGludGVyZmFj
ZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgICAgICBhbmQgYW4gaW4gcHJvY2Vz
cyBpbXBsZW1lbnRhdGlvbiBuYW1lZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
LgorCisgICAgICAgIE1ha2UgVHJhY2tQcml2YXRlQmFzZSBhbmQgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgcHVibGljIExvZ2dlckhlbHBlci4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFraW5nIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIGFuZCBBdWRpb1NhbXBsZURhdGFTb3VyY2UgdG8g
dGFrZSBhIExvZ2dlckhlbHBlciBpbnN0ZWFkIG9mIGEgZGVyaXZlZCBpbnN0YW5jZS4KKworICAg
ICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6QXVkaW9TYW1w
bGVEYXRhU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldE11dGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRWb2x1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnZvbHVtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6aXNNdXRl
ZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6fkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OnZvbHVtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtOjp1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tFbmRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0UGF1c2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0ZUF1ZGlvVW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmg6IFJlbW92ZWQuCisKIDIwMjAtMDEtMTIgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0LWluZGVudCB3aXRoIHBlcmNlbnRhZ2UgdmFs
dWUgc2hvdWxkIHJlc29sdmUgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIHdpZHRoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDQxMTIxNTU3YWU2ZjM1ZGI5YWQ1ZjRjMWU4YWNjY2EwODY2M2U2ZmIuLmQ4NWIxNzlh
ZGM3MTI0N2JiYmU4NjM5M2EyYzAzNWVhZTBhYjNiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcw
LDYgKzE5NzAsOCBAQCBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGll
c0xvZ2dpbmcuY3BwCiAKIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcAogCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0uY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAK
IHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IGU0NTNkODkwOTdlNjg2YjJjMzM1MmJhZDY2ZWU3MTIzNDdjMTY2YjUuLmU2Zjgx
N2E3ODE2ZDZhNGJjYzIwMTNhNTc5NDQ0NDc2N2FlNzA4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtNDg5LDcgKzQ4OSw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0KIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0gQG5vLXVuaWZ5CiAKLXBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3Bw
CitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJD
b2NvYS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOWJiODQzMTQ1MzlhZDA5NTE0NjMxYjIxMzA2MTZhZjYwYmE5
YTFjMy4uZTA1NTM2ZjczY2IwYWU2NGZlNTJhMjEwNmJkNmY5NjVhMjc5M2UwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAw
MCw3ICsxMDAwLDYgQEAKIAkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzJDMDBE
ODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzJEM0U1NDIxNjU3OEFFMDBDNUUwMjEgLyog
RGF0YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oICovOyB9
OwogCQkzNzJEM0U1NTIxNjU3OEFFMDBDNUUwMjEgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQx
NDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07Ci0JCTM3MkQzRTU2MjE2
NTc4QUUwMEM1RTAyMSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM2MUU0MjUx
MkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLzsgfTsK
IAkJMzcyRDNFNTcyMTY1NzhBRTAwQzVFMDIxIC8qIE5hdmlnYXRvckNyZWRlbnRpYWxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYyNjFGRTg5
NUY4MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaCAqLzsgfTsKIAkJMzc1Q0QyMzIx
MTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVu
YXRpb24uaCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0
UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MDg2LDYgKzEwODUsNyBAQAogCQk0MTYxRTJENTFGRTQ4REM1MDBFQzJFOTYgLyogRmV0Y2hMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDdF
MkI1MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAv
KiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07CiAJCTQxNjJBNDU4MTAxMTQ2NDcwMERGRjNFRCAv
KiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OworCQk0MTZBMDZBMTIzQ0NBRDAzMDAzNDcx
MDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBOZXR3
b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIwMDRB
OTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVw
b3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICov
OyB9OwpAQCAtNTQ3Miw3ICs1NDcyLDYgQEAKIAkJMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8q
IFRleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Njk3MDg1
MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tQcml2YXRlQmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NkVDMTMyMUU0NEYyQ0IwMEU1RDgxMyAvKiBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTU1NTIsNyArNTU1MSw2IEBACiAJCTA3QjcxMTZDMUQ4OTlFNjMwMDlGMEZGQiAvKiBD
YXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I5
M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
SU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjkzRkZCMjNC
OTJBQUIwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1J
TUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0MwNDZDNjFF
NDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFMDFCRkI2MDAx
MDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFMTFCRkI2MDAxMDBCRDIyNTYgLyog
TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzM4OCw2ICs3Mzg2LDExIEBACiAJCTQxNjJBNDRGMTAxMTQ1QUUw
MERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZBMDY5MjIz
Q0NBQTkzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkEwNjkzMjNDQ0FB
OTQwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZBMDY5NDIz
Q0NBQTlFMDAzNDcxMDkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2QTA2OTUyM0NDQUE5RTAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2QTA2OTYyM0NDQUE5RjAwMzQ3MTA5
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxNkNFNEE0MjI5REYxMkUwMEE4QTY4NiAvKiBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RDc1
OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxNjEsNiArMTYxNjQsOSBA
QAogCQkJCUNEQzY3NTFGMUVBRUE5OTYwMDcyN0M4NCAvKiBpb3MgKi8sCiAJCQkJNDE1NzQ3NDIx
RTM4Njk4MDAwRTkxNEQ4IC8qIGxpYndlYnJ0YyAqLywKIAkJCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0
RjFENjAgLyogbWFjICovLAorCQkJCTQxNkEwNjk1MjNDQ0FBOUUwMDM0NzEwOSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgKi8sCisJCQkJNDE2QTA2OTYyM0NDQUE5RjAwMzQ3
MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi8sCisJCQkJNDE2QTA2OTQy
M0NDQUE5RTAwMzQ3MTA5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwICovLAog
CQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmggKi8sCiAJCQkJMDdCNzExNkExRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2Uu
aCAqLywKIAkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwICovLApAQCAtMTYyMzQsOCArMTYyNDAsOCBAQAogCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0
RjFENjAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQkwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmNwcCAqLywKLQkJCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8sCisJCQkJNDE2QTA2OTMyM0NDQUE5NDAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwICovLAorCQkJ
CTQxNkEwNjkyMjNDQ0FBOTMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckNvY29hLmggKi8sCiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaCAqLywKIAkJCQkwNzAzNjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0
dXJlRGV2aWNlTWFuYWdlci5tbSAqLywKIAkJCQkwNzAzNjNERTE4MUExQ0RDMDBDMDc0QTUgLyog
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLywKQEAgLTI5MDg0LDYgKzI5MDkwLDcgQEAKIAkJCQlD
RDJGNEEyODE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGREUyRDU1QjE1OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVk
aW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2QTA2QTEyM0NDQUQwMzAwMzQ3MTA5
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAxMzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDE4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVPdXRwdXQuaCBp
biBIZWFkZXJzICovLApAQCAtMjkxMTAsNyArMjkxMTcsNiBAQAogCQkJCUNERTNBODU4MTdGNjAy
MDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNENTRBNzYzMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdENkE0RjgxQkYyMzA3RDAwMTc0MTQ2
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTM3
MkQzRTU2MjE2NTc4QUUwMEM1RTAyMSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDhCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NjExMkQyNkUzODAwRTc5NDE1
IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRGNzEz
QTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAppbmRleCBhYTU2OGMyZjQ2MTFmN2M2YjkxM2RjZGYw
ZDgzMzU0NDU0NDJkM2VlLi4zMjZjOWJjMmE5YThjZTA2NTQzNjM3NTBkZmIzZmJmNTBlYzU4ZmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1w
bGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCkBAIC00Miw3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogY2xhc3MgQ0FSaW5nQnVmZmVy
OwotY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiAKIGNsYXNzIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb1NhbXBsZURhdGFTb3Vy
Y2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPgogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApAQCAtNTAsNyArNDksNyBAQCBjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9TYW1wbGVEYXRhU291cmNlLAogI2Vu
ZGlmCiAgICAgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNl
PiBjcmVhdGUoc2l6ZV90LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBS
ZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBjcmVhdGUoc2l6ZV90LCBXVEY6OkxvZ2dlckhlbHBl
ciYpOwogCiAgICAgfkF1ZGlvU2FtcGxlRGF0YVNvdXJjZSgpOwogCkBAIC04MSw3ICs4MCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShz
aXplX3QsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisgICAgQXVkaW9TYW1wbGVEYXRhU291
cmNlKHNpemVfdCwgTG9nZ2VySGVscGVyJik7CiAKICAgICBPU1N0YXR1cyBzZXR1cENvbnZlcnRl
cigpOwogICAgIGJvb2wgcHVsbFNhbXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmLCBzaXpl
X3QmLCB1aW50NjRfdCwgZG91YmxlLCBQdWxsTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRl
eCA0MWFmZTM5ZjIzMmFlNTg4MDg2MGYwODRkNTU2Y2I0YTVkOGFlMjVhLi5hZGQ2ZDYwMGM3Y2Q2
YWI2OGRjNGMwNjg1NWM0NTI2MTU2MjUxYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTQ2
LDE5ICs0NiwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9T
YW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQorUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9n
Z2VySGVscGVyJiBsb2dnZXJIZWxwZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9TYW1wbGVEYXRhU291cmNlKG1heGltdW1TYW1wbGVDb3VudCwgdHJhY2spKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1NhbXBsZURhdGFTb3VyY2UobWF4aW11bVNhbXBsZUNvdW50
LCBsb2dnZXJIZWxwZXIpKTsKIH0KIAotQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBs
ZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmIHRyYWNrKQorQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBsZURhdGFTb3Vy
Y2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGVscGVyJiBsb2dnZXJIZWxwZXIp
CiAgICAgOiBtX2lucHV0U2FtcGxlT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAg
ICAsIG1fbWF4aW11bVNhbXBsZUNvdW50KG1heGltdW1TYW1wbGVDb3VudCkKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICAsIG1fbG9nZ2VyKHRyYWNrLmxvZ2dlcigpKQotICAgICwgbV9s
b2dJZGVudGlmaWVyKHRyYWNrLmxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fbG9nZ2VyKGxvZ2dl
ckhlbHBlci5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihsb2dnZXJIZWxwZXIubG9n
SWRlbnRpZmllcigpKQogI2VuZGlmCiB7CisjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBV
TlVTRURfUEFSQU0obG9nZ2VySGVscGVyKTsKKyNlbmRpZgogfQogCiBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6On5BdWRpb1NhbXBsZURhdGFTb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCmluZGV4IGVkNzk5M2Q4YWRhNDY1
YWRmMzg2Mjg0ODVjNDc3MTNmMTRjNjJiZmQuLjBlZmJmMzNiYzgyOTJhMzhlZTBiYTYxZGM4ZWE1
MTQ0OTJkNDdjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RyYWNrUHJpdmF0ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UcmFja1ByaXZhdGVCYXNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogY2xhc3MgVHJh
Y2tQcml2YXRlQmFzZQogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYWNrUHJp
dmF0ZUJhc2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dl
ckhlbHBlcgogI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tQcml2YXRl
QmFzZSk7CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lk
Kik7CisgICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lk
Kik7CiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xv
Z2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaAppbmRleCBiYzVmMzkxYjY1MjBiMDMxYjZlNmM4NTU1ZGE5YzNlMjIwMzk0MDkxLi4yZmQz
ZTczMWVlYTZlMzYzNGNjODdkMzFjNDM3ZjhjN2MwNjJmYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBDbG9jazsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E7CitjbGFzcyBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOwogY2xhc3MgQVZWaWRlb0NhcHR1cmVTb3VyY2U7
CiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBDdXJyZW50
RnJhbWVQYWludGVyIG1faW1hZ2VQYWludGVyOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E+PiBtX2F1ZGlvVHJhY2tNYXA7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4g
bV9hdWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKICAgICBQZW5kaW5nU2FtcGxlUXVl
dWUgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CmluZGV4IDZjNWY1MGI0ZGEwMGQyMTAyYmFkZTM3OTRmOWRkZDBiZDQxOTI2NjMuLmM1ZWQwYTYz
YmJlOWZmZmQ3ZTYyMWE3Y2Q0MzNkODIxZmRmZDE1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShBVkZPVU5EQVRJT04pCiAKLSNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYS5oIgorI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhU3RyZWFtUHJpdmF0ZS5oIgpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygpCiB7CiAgICAgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGVWZWN0b3IgY3VycmVudFRyYWNrcyA9IG1fbWVkaWFTdHJlYW1Qcml2
YXRlLT50cmFja3MoKTsKIAotICAgIGF1dG8gc2V0QXVkaW9UcmFja1N0YXRlID0gW3RoaXNdKEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSYgdHJhY2ssIGludCBpbmRleCwgVHJhY2tT
dGF0ZSBzdGF0ZSkKKyAgICBhdXRvIHNldEF1ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtJiB0cmFjaywgaW50IGluZGV4LCBUcmFja1N0YXRlIHN0YXRl
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgICAgICBjYXNlIFRyYWNrU3Rh
dGU6OlJlbW92ZToKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9OwotICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBjdXJyZW50VHJhY2tzLCAmQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGUsIFdURk1vdmUoc2V0QXVkaW9UcmFj
a1N0YXRlKSk7CisgICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1fYXVkaW9UcmFja01hcCwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIGN1cnJlbnRUcmFja3MsICZBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUsIFdURk1vdmUoc2V0QXVkaW9UcmFja1N0YXRlKSk7CiAK
ICAgICBhdXRvIHNldFZpZGVvVHJhY2tTdGF0ZSA9IFt0aGlzXShWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtJiB0cmFjaywgaW50IGluZGV4LCBUcmFja1N0YXRlIHN0YXRlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTE2NDlh
MGE4ZDVmZTdkMzRiMTkxYzZmODkxYWY0MDI5ZTZiNDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaCIK
KyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1lZGlhVGltZTsKK30KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6UmVuZGVyZXJD
cmVhdG9yIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjptX3JlbmRlcmVyQ3JlYXRvciA9
IG51bGxwdHI7Cit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRDcmVhdG9y
KFJlbmRlcmVyQ3JlYXRvciBjcmVhdG9yKQoreworICAgIG1fcmVuZGVyZXJDcmVhdG9yID0gY3Jl
YXRvcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
PiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6Y3JlYXRlKCkKK3sKKyAgICBpZiAobV9y
ZW5kZXJlckNyZWF0b3IpCisgICAgICAgIHJldHVybiBtX3JlbmRlcmVyQ3JlYXRvcigpOworCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYT4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5k
aWYKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAordm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lk
KiBpZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKKyAgICBtX2xvZ0lkZW50
aWZpZXIgPSBpZGVudGlmaWVyOworfQorCitXVEZMb2dDaGFubmVsJiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ01lZGlh
OworfQorI2VuZGlmCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc4ZTg3NjUzN2QyNmYyMzlkNzA2MmI5YmQ2ZmY0MDI1Zjg1Y2U5ZmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKworbmFtZXNwYWNlIFdURiB7
CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbjsKK2NsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOworCitjbGFzcyBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciA6IHB1YmxpYyBMb2dnZXJIZWxwZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IGNyZWF0ZSgpOworICAgIHZpcnR1
YWwgfkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyKCkgPSBkZWZhdWx0OworCisgICAgdmly
dHVhbCB2b2lkIHNldFBhdXNlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgPSAwOworICAgIC8vIE1heSBiZSBjYWxsZWQg
b24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFNhbXBsZXMoY29u
c3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRN
dXRlZChib29sIHZhbHVlKSB7IG1fbXV0ZWQgPSB2YWx1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRWb2x1bWUoZmxvYXQgdm9sdW1lKSB7IG1fdm9sdW1lID0gdm9sdW1lOyB9CisgICAgZmxvYXQg
dm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0KKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKTsK
KyNlbmRpZgorCisgICAgdXNpbmcgUmVuZGVyZXJDcmVhdG9yID0gc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyPiAoKikoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBzZXRDcmVhdG9yKFJlbmRlcmVyQ3JlYXRvcik7CisKK3Byb3RlY3RlZDoKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICptX2xvZ2dlcjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKworICAgIGNvbnN0
IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlciI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29u
c3QgZmluYWw7CisjZW5kaWYKKworICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bXV0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgUmVuZGVyZXJDcmVhdG9yIG1fcmVuZGVy
ZXJDcmVhdG9yOworCisgICAgLy8gTWFpbiB0aHJlYWQgd3JpdGFibGUgbWVtYmVycworICAgIGJv
b2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgZmxvYXQgbV92b2x1bWUgeyAxIH07CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsK
KyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKK307CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdkOWU2OWQxNWYw
NjQyMWFiZjk0ZDQ0OGM4ZTg4OWQ0ODYwMzVmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0u
Y3BwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6QXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCisg
ICAgOiBtX3N0cmVhbVRyYWNrKHRyYWNrKQorICAgICwgbV9pZCh0cmFjay5pZCgpKQorICAgICwg
bV9sYWJlbCh0cmFjay5sYWJlbCgpKQorICAgICwgbV90aW1lbGluZU9mZnNldChNZWRpYVRpbWU6
OmludmFsaWRUaW1lKCkpCisgICAgLCBtX3JlbmRlcmVyIHsgQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXI6OmNyZWF0ZSgpIH0KK3sKKyAgICB0cmFjay5hZGRPYnNlcnZlcigqdGhpcyk7Cit9
CisKK0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06On5BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtKCkKK3sKKyAgICBjbGVhcigpOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
Cit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnNldExvZ2dlcihjb25zdCBMb2dn
ZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikKK3sKKyAgICBUcmFja1ByaXZhdGVC
YXNlOjpzZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKKyAgICBtX3JlbmRlcmVyLT5zZXRM
b2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKK30KKyNlbmRpZgorCit2b2lkIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OmNsZWFyKCkKK3sKKyAgICBpZiAobV9pc0NsZWFyZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1faXNDbGVhcmVkID0gdHJ1ZTsKKyAgICBzdHJlYW1UcmFjaygp
LnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKKworICAgIG1fcmVuZGVyZXItPmNsZWFyKCk7Cit9CisK
K3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6cGxheUludGVybmFsKCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1faXNQbGF5aW5nKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZyA9IHRydWU7CisgICAgbV9hdXRvUGxheSA9IGZh
bHNlOworCisgICAgbV9yZW5kZXJlci0+c2V0UGF1c2VkKGZhbHNlKTsKK30KKwordm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpwbGF5KCkKK3sKKyAgICBwbGF5SW50ZXJuYWwoKTsK
K30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpwYXVzZSgpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbV9pc1BsYXlpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAgbV9hdXRvUGxheSA9IGZh
bHNlOworCisgICAgbV9yZW5kZXJlci0+c2V0UGF1c2VkKHRydWUpOworfQorCit2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit7CisgICAg
bV9yZW5kZXJlci0+c2V0Vm9sdW1lKHZvbHVtZSk7Cit9CisKK2Zsb2F0IEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW06OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVuZGVyZXIt
PnZvbHVtZSgpOworfQorCisvLyBNYXkgZ2V0IGNhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFk
Lgordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFi
bGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUs
IGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgaWYgKCFt
X2lzUGxheWluZykgeworICAgICAgICBtX3JlbmRlcmVyLT5zdG9wKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX3JlbmRlcmVyLT5wdXNoU2FtcGxlcyhzYW1wbGVUaW1lLCBhdWRp
b0RhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CisKKyAgICBpZiAobV9hdXRvUGxheSAm
JiAhbV9oYXNTdGFydGVkQXV0b3BsYXkpIHsKKyAgICAgICAgbV9oYXNTdGFydGVkQXV0b3BsYXkg
PSB0cnVlOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgIGlmIChtX2F1dG9QbGF5KQorICAgICAgICAg
ICAgICAgIHBsYXlJbnRlcm5hbCgpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmKQoreworICAgIHVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgpOworfQorCit2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnRyYWNrRW5hYmxlZENoYW5nZWQoTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmKQoreworICAgIHVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgp
OworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnVwZGF0ZVJlbmRlcmVy
TXV0ZWRTdGF0ZSgpCit7CisgICAgbV9yZW5kZXJlci0+c2V0TXV0ZWQobV9pc1BsYXlpbmcgJiYg
IXN0cmVhbVRyYWNrKCkubXV0ZWQoKSAmJiAhc3RyZWFtVHJhY2soKS5lbmRlZCgpICYmIHN0cmVh
bVRyYWNrKCkuZW5hYmxlZCgpKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtOjp0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3sKKyAgICBwYXVzZSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9f
VFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtLmgKaW5kZXggZGNkM2FlYzI1NDlmMzZlZDNlYWM4MWIzZTA0OWQ2NDI0OWY4YjhmYi4u
ZjMyNWM2ZGQ2OWNmODJjYTE4MDVhZDE1MWQxNzQ2ZGI2ZDE2ZDc2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0uaApAQCAtMzIsMTkgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSA6IHB1YmxpYyBB
dWRpb1RyYWNrUHJpdmF0ZSB7CitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjsK
KworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBBdWRp
b1RyYWNrUHJpdmF0ZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0p
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
PiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHN0cmVhbVRyYWNrKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShz
dHJlYW1UcmFjaykpOwogICAgIH0KLQotICAgIEtpbmQga2luZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEtpbmQ6Ok1haW47IH0KLSAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pZDsgfQotICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2xhYmVsOyB9Ci0gICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9Ci0gICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CisgICAgfkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0oKTsKIAogICAgIHZvaWQgc2V0VHJhY2tJbmRleChpbnQgaW5kZXgpIHsgbV9pbmRleCA9
IGluZGV4OyB9CiAKQEAgLTUzLDIwICs1MCw1NyBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIHRp
bWVsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZU9mZnNldDsgfQogICAgIHZv
aWQgc2V0VGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQpIHsgbV90aW1lbGlu
ZU9mZnNldCA9IG9mZnNldDsgfQogCisgICAgdm9pZCBjbGVhcigpOworCisgICAgdm9pZCBwbGF5
KCk7CisgICAgdm9pZCBwYXVzZSgpOworICAgIGJvb2wgaXNQbGF5aW5nKCkgeyByZXR1cm4gbV9p
c1BsYXlpbmc7IH0KKworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICBmbG9hdCB2b2x1
bWUoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCBtdXRlZCkgeyBtX211dGVkID0g
bXV0ZWQ7IH0KKyAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorCisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2Vy
JiwgY29uc3Qgdm9pZCopIGZpbmFsOworICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtIjsgfQorI2Vu
ZGlmCisKIHByb3RlY3RlZDoKLSAgICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKLSAgICAgICAgOiBtX3N0cmVhbVRyYWNrKHRyYWNr
KQotICAgICAgICAsIG1faWQodHJhY2suaWQoKSkKLSAgICAgICAgLCBtX2xhYmVsKHRyYWNrLmxh
YmVsKCkpCi0gICAgICAgICwgbV90aW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkpCi0gICAgewotICAgIH0KKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisKKyAgICAvLyBBdWRpb1RyYWNrUHJpdmF0
ZQorICAgIEtpbmQga2luZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEtpbmQ6Ok1haW47IH0KKyAg
ICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21T
dHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgaW50IHRy
YWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICAvLyBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
ZmluYWw7CisgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmlu
YWw7CisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
ICBmaW5hbDsKKyAgICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmKSAgZmluYWw7CisgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQorCisgICAgdm9pZCBwbGF5SW50ZXJuYWwoKTsKKyAg
ICB2b2lkIHVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgpOworCisgICAgLy8gTWFpbiB0aHJlYWQg
d3JpdGFibGUgbWVtYmVycworICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9hdXRvUGxheSB7IGZhbHNlIH07CisgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faXNDbGVhcmVkIHsgZmFsc2UgfTsKIAogICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4gbV9zdHJlYW1UcmFjazsKICAgICBBdG9tU3RyaW5nIG1faWQ7CiAgICAgQXRvbVN0
cmluZyBtX2xhYmVsOwogICAgIGludCBtX2luZGV4IHsgMCB9OwogICAgIE1lZGlhVGltZSBtX3Rp
bWVsaW5lT2Zmc2V0OworCisgICAgLy8gQXVkaW8gdGhyZWFkIG1lbWJlcnMKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IG1fcmVuZGVyZXI7CisgICAg
Ym9vbCBtX2hhc1N0YXJ0ZWRBdXRvcGxheSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaAppbmRleCAwMDcxNmZkMGE0NTYxNGRlNmNkOGFiYWRlMDU5MGYyYmYxMGMw
MjZlLi4xMGI2NzAzY2ViM2E5ODU2OWY5NDM0YjgyYmFjNTNlZGVjOGJjYjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUgZmluYWwKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+CiAgICAgLCBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKLSAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisgICAgLCBwdWJsaWMgTG9nZ2VySGVs
cGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzU0NjFmNmQ1ZDhmNmI3ZTZh
ZjlmZDU2Y2MyNmY1ZmJkMzkyYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2EuY3BwCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oIgor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5j
bHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRh
U291cmNlLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCisjaW5jbHVkZSA8cGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9BdWRpb1Rv
b2xib3hTUEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hKCkgPSBk
ZWZhdWx0OworCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjp+QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpID0gZGVmYXVsdDsKKwordm9pZCBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1faXNBdWRpb1Vu
aXRTdGFydGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9yZW1vdGVJT1VuaXQpCisg
ICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOworfQorCit2b2lkIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNsZWFyKCkKK3sKKyAgICBpZiAobV9k
YXRhU291cmNlKQorICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFBhdXNlZCh0cnVlKTsKKworICAg
IGlmIChtX3JlbW90ZUlPVW5pdCkgeworICAgICAgICBBdWRpb091dHB1dFVuaXRTdG9wKG1fcmVt
b3RlSU9Vbml0KTsKKyAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UobV9yZW1v
dGVJT1VuaXQpOworICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IG51bGxwdHI7CisgICAgfQorCisg
ICAgbV9kYXRhU291cmNlID0gbnVsbHB0cjsKKyAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBudWxs
cHRyOworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBudWxscHRyOworfQorCit2b2lkIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnNldFBhdXNlZChib29sIHZhbHVlKQorewor
ICAgIG1fcGF1c2VkID0gdmFsdWU7CisgICAgaWYgKG1fZGF0YVNvdXJjZSkKKyAgICAgICAgbV9k
YXRhU291cmNlLT5zZXRQYXVzZWQodmFsdWUpOworfQorCitBdWRpb0NvbXBvbmVudEluc3RhbmNl
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0ZUF1ZGlvVW5pdChDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG91dHB1dERlc2NyaXB0aW9uKQoreworICAgIEF1ZGlvQ29t
cG9uZW50SW5zdGFuY2UgcmVtb3RlSU9Vbml0IHsgbnVsbHB0ciB9OworCisgICAgQXVkaW9Db21w
b25lbnREZXNjcmlwdGlvbiBpb1VuaXREZXNjcmlwdGlvbiB7IGtBdWRpb1VuaXRUeXBlX091dHB1
dCwgMCwga0F1ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZSwgMCwgMCB9OworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9uZW50U3ViVHlwZSA9IGtB
dWRpb1VuaXRTdWJUeXBlX1JlbW90ZUlPOworI2Vsc2UKKyAgICBpb1VuaXREZXNjcmlwdGlvbi5j
b21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKKyNlbmRp
ZgorCisgICAgQXVkaW9Db21wb25lbnQgaW9Db21wb25lbnQgPSBBdWRpb0NvbXBvbmVudEZpbmRO
ZXh0KG51bGxwdHIsICZpb1VuaXREZXNjcmlwdGlvbik7CisgICAgQVNTRVJUKGlvQ29tcG9uZW50
KTsKKyAgICBpZiAoIWlvQ29tcG9uZW50KSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCAidW5hYmxlIHRvIGZpbmQgcmVtb3RlIElPIHVuaXQgY29tcG9uZW50Iik7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIE9TU3RhdHVzIGVyciA9IEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2VOZXcoaW9Db21wb25lbnQsICZyZW1vdGVJT1VuaXQpOworICAgIGlmIChlcnIp
IHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gb3BlbiB2cGlv
IHVuaXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBVSW50MzIgcGFyYW0gPSAxOworICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJl
bW90ZUlPVW5pdCwga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0VuYWJsZUlPLCBrQXVkaW9Vbml0
U2NvcGVfT3V0cHV0LCAwLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOworICAgIGlmIChlcnIpIHsK
KyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZW5hYmxlIHZwaW8g
dW5pdCBvdXRwdXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIiki
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlmCisKKyAgICBBVVJlbmRl
ckNhbGxiYWNrU3RydWN0IGNhbGxiYWNrID0geyBpbnB1dFByb2MsIHRoaXMgfTsKKyAgICBlcnIg
PSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9T
ZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgMCwgJmNhbGxiYWNrLCBz
aXplb2YoY2FsbGJhY2spKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJ
REVOVElGSUVSLCAidW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgc3BlYWtlciBwcm9jLCBlcnJvciA9
ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG91dHB1dERlc2NyaXB0
aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpOworICAgIGVyciAgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0
eShyZW1vdGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1Vu
aXRTY29wZV9JbnB1dCwgMCwgJm91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCks
ICZzaXplKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAidW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJvciA9ICIsIGVyciwgIiAo
IiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkubVNhbXBsZVJh
dGUgPSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVSYXRlKCk7CisKKyAgICBl
cnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0
eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJm91dHB1dERlc2NyaXB0
aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIHNpemVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1E
ZXNjcmlwdGlvbigpKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgInVuYWJsZSB0byBzZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgPSAiLCBl
cnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBlcnIgPSBBdWRpb1VuaXRJbml0aWFsaXplKHJlbW90ZUlPVW5pdCk7
CisgICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlv
VW5pdEluaXRpYWxpemUoKSBmYWlsZWQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hh
ciopJmVyciwgIikiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0
dXJuIHJlbW90ZUlPVW5pdDsKK30KKworLy8gTWF5IGdldCBjYWxsZWQgb24gYSBiYWNrZ3JvdW5k
IHRocmVhZC4KK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cHVzaFNh
bXBsZXMoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0
YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
c2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIEFTU0VSVChkZXNjcmlwdGlvbi5wbGF0Zm9ybURl
c2NyaXB0aW9uKCkudHlwZSA9PSBQbGF0Zm9ybURlc2NyaXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFz
aWNUeXBlKTsKKworICAgIGlmICghbV9pbnB1dERlc2NyaXB0aW9uIHx8ICptX2lucHV0RGVzY3Jp
cHRpb24gIT0gZGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBm
YWxzZTsKKworICAgICAgICBpZiAobV9yZW1vdGVJT1VuaXQpIHsKKyAgICAgICAgICAgIEF1ZGlv
T3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOworICAgICAgICAgICAgQXVkaW9Db21wb25l
bnRJbnN0YW5jZURpc3Bvc2UobV9yZW1vdGVJT1VuaXQpOworICAgICAgICAgICAgbV9yZW1vdGVJ
T1VuaXQgPSBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9u
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CisKKyAg
ICAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGlucHV0RGVzY3JpcHRpb24gPSB0b0NBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CisgICAgICAgIENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiBvdXRwdXREZXNjcmlwdGlvbjsKKworICAgICAgICBhdXRvIHJlbW90ZUlPVW5p
dCA9IGNyZWF0ZUF1ZGlvVW5pdChvdXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIGlmICghcmVt
b3RlSU9Vbml0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1faW5wdXREZXNjcmlw
dGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0
aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CisKKyAgICAgICAgbV9kYXRhU291
cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0
ZSgpICogMiwgKnRoaXMpOworCisgICAgICAgIGlmIChtX2RhdGFTb3VyY2UtPnNldElucHV0Rm9y
bWF0KGlucHV0RGVzY3JpcHRpb24pIHx8IG1fZGF0YVNvdXJjZS0+c2V0T3V0cHV0Rm9ybWF0KG91
dHB1dERlc2NyaXB0aW9uKSkgeworICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURp
c3Bvc2UocmVtb3RlSU9Vbml0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9PdXRwdXRVbml0U3RhcnQocmVtb3RlSU9Vbml0
KSkgeworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpb091dHB1dFVu
aXRTdGFydCBmYWlsZWQsIGVycm9yID0gIiwgZXJyb3IsICIgKCIsIChjb25zdCBjaGFyKikmZXJy
b3IsICIpIik7CisgICAgICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShyZW1v
dGVJT1VuaXQpOworICAgICAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1faXNBdWRpb1VuaXRTdGFy
dGVkID0gdHJ1ZTsKKworICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFZvbHVtZSh2b2x1bWUoKSk7
CisgICAgICAgIG1fcmVtb3RlSU9Vbml0ID0gcmVtb3RlSU9Vbml0OworICAgIH0KKworICAgIG1f
ZGF0YVNvdXJjZS0+cHVzaFNhbXBsZXMoc2FtcGxlVGltZSwgYXVkaW9EYXRhLCBzYW1wbGVDb3Vu
dCk7CisKKyAgICBpZiAoIW1faXNBdWRpb1VuaXRTdGFydGVkKSB7CisgICAgICAgIGlmIChhdXRv
IGVycm9yID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9yZW1vdGVJT1VuaXQpKSB7CisgICAgICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxl
ZCwgZXJyb3IgPSAiLCBlcnJvciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnJvciwgIikiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2lzQXVkaW9Vbml0U3RhcnRl
ZCA9IHRydWU7CisgICAgfQorfQorCitPU1N0YXR1cyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hOjpyZW5kZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QmIGlv
RGF0YSwgVUludDMyIC8qaW5CdXNOdW1iZXIqLywgY29uc3QgQXVkaW9UaW1lU3RhbXAmIHRpbWVT
dGFtcCwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmIGFjdGlvbkZsYWdzKQoreworICAgIGlm
IChpc011dGVkKCkgfHwgbV9wYXVzZWQgfHwgIW1fZGF0YVNvdXJjZSkgeworICAgICAgICBBdWRp
b1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNh
bXBsZUNvdW50ICogbV9vdXRwdXREZXNjcmlwdGlvbi0+Ynl0ZXNQZXJGcmFtZSgpKSk7CisgICAg
ICAgIGFjdGlvbkZsYWdzID0ga0F1ZGlvVW5pdFJlbmRlckFjdGlvbl9PdXRwdXRJc1NpbGVuY2U7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fZGF0YVNvdXJjZS0+cHVsbFNhbXBs
ZXMoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50KSwgdGltZVN0YW1wLm1T
YW1wbGVUaW1lLCB0aW1lU3RhbXAubUhvc3RUaW1lLCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkNv
cHkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK09TU3RhdHVzIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVy
QWN0aW9uRmxhZ3MqIGFjdGlvbkZsYWdzLCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZVN0YW1w
LCBVSW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0
KiBpb0RhdGEpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyQ29jb2EqPih1c2VyRGF0YSktPnJlbmRlcihzYW1wbGVDb3VudCwgKmlvRGF0YSwg
aW5CdXNOdW1iZXIsICp0aW1lU3RhbXAsICphY3Rpb25GbGFncyk7Cit9CisKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTllNTQ2MWNiMDI4ZGZjMWRmZDJlOTRlM2YzYzZkOGQ4
YjVjYWU0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmgKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKKyNpbmNsdWRlIDxBdWRp
b1Rvb2xib3gvQXVkaW9Ub29sYm94Lmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5
cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291
cmNlOworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OworY2xhc3MgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uOworCitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hIDog
cHVibGljIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hKCk7CisgICAgfkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoKTsKKworcHJp
dmF0ZToKKyAgICAvLyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgIHZvaWQgcHVz
aFNhbXBsZXMoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQg
c3RvcCgpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKKyAgICB2b2lkIHNldFBhdXNl
ZChib29sKSBmaW5hbDsKKworICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCosIEF1
ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIg
aW5CdXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0Kik7Cisg
ICAgT1NTdGF0dXMgcmVuZGVyKFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0Jiwg
VUludDMyIGluQnVzTnVtYmVyLCBjb25zdCBBdWRpb1RpbWVTdGFtcCYsIEF1ZGlvVW5pdFJlbmRl
ckFjdGlvbkZsYWdzJik7CisKKyAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIGNyZWF0ZUF1ZGlv
VW5pdChDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mKTsKKworICAgIC8vIEF1ZGlvIHRocmVhZCBt
ZW1iZXJzCisgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSBtX3JlbW90ZUlPVW5pdCB7IG51bGxw
dHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX2lu
cHV0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKKworICAgIC8vIENyb3NzIHRocmVhZCBtZW1iZXJz
CisgICAgUmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9kYXRhU291cmNlOworICAgIGJv
b2wgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9wYXVzZWQgeyBm
YWxzZSB9OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAzODFmYzZj
M2E3MzE4MzkwNjVjNDk5ZTRlMmU5YWIzNzI2ZDJkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDI4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oIgotCi0jaW5jbHVkZSAi
QXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCi0jaW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRhU291cmNl
LmgiCi0jaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi0jaW5jbHVkZSA8cGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9BdWRpb1Rvb2xib3hT
UEkuaD4KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYShNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYgdHJhY2spCi0gICAgOiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKHRyYWNrKQot
ewotICAgIHRyYWNrLnNvdXJjZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKLX0KLQotQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjp+QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hKCkKLXsKLSAgICBjbGVhcigpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW1Db2NvYTo6Y2xlYXIoKQotewotICAgIGlmIChtX2lzQ2xlYXJlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9pc0NsZWFyZWQgPSB0cnVlOwotICAgIHN0cmVhbVRyYWNrKCkuc291cmNl
KCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaWYgKG1fZGF0YVNvdXJjZSkKLSAgICAg
ICAgbV9kYXRhU291cmNlLT5zZXRQYXVzZWQodHJ1ZSk7Ci0KLSAgICBpZiAobV9yZW1vdGVJT1Vu
aXQpIHsKLSAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7Ci0gICAg
ICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVtb3RlSU9Vbml0KTsKLSAgICAg
ICAgbV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOwotICAgIH0KLQotICAgIG1fZGF0YVNvdXJjZSA9
IG51bGxwdHI7Ci0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLSAgICBtX291dHB1
dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2E6OnBsYXlJbnRlcm5hbCgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLQotICAgIGlmIChtX2lzUGxheWluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc1Bs
YXlpbmcgPSB0cnVlOwotICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKLQotICAgIGlmIChtX2RhdGFT
b3VyY2UpCi0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0UGF1c2VkKGZhbHNlKTsKLX0KLQotdm9p
ZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXkoKQotewotICAgIHBsYXlJ
bnRlcm5hbCgpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6
cGF1c2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZiAoIW1faXNQ
bGF5aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUGxheWluZyA9IGZhbHNlOwotICAg
IG1fYXV0b1BsYXkgPSBmYWxzZTsKLQotICAgIGlmIChtX2RhdGFTb3VyY2UpCi0gICAgICAgIG1f
ZGF0YVNvdXJjZS0+c2V0UGF1c2VkKHRydWUpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKLXsKLSAgICBtX3ZvbHVt
ZSA9IHZvbHVtZTsKLSAgICBpZiAobV9kYXRhU291cmNlKQotICAgICAgICBtX2RhdGFTb3VyY2Ut
PnNldFZvbHVtZShtX3ZvbHVtZSk7Ci19Ci0KLUF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiBvdXRwdXREZXNjcmlwdGlvbikKLXsKLSAgICBBdWRpb0NvbXBvbmVudElu
c3RhbmNlIHJlbW90ZUlPVW5pdCB7IG51bGxwdHIgfTsKLQotICAgIEF1ZGlvQ29tcG9uZW50RGVz
Y3JpcHRpb24gaW9Vbml0RGVzY3JpcHRpb24geyBrQXVkaW9Vbml0VHlwZV9PdXRwdXQsIDAsIGtB
dWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGUsIDAsIDAgfTsKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlvVW5pdERlc2NyaXB0aW9uLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0
U3ViVHlwZV9SZW1vdGVJTzsKLSNlbHNlCi0gICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9uZW50
U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX0RlZmF1bHRPdXRwdXQ7Ci0jZW5kaWYKLQotICAg
IEF1ZGlvQ29tcG9uZW50IGlvQ29tcG9uZW50ID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dChudWxs
cHRyLCAmaW9Vbml0RGVzY3JpcHRpb24pOwotICAgIEFTU0VSVChpb0NvbXBvbmVudCk7Ci0gICAg
aWYgKCFpb0NvbXBvbmVudCkgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVu
YWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIpOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlTmV3KGlvQ29tcG9uZW50LCAmcmVtb3RlSU9Vbml0KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAg
ICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBl
cnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgVUlu
dDMyIHBhcmFtID0gMTsKLSAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1Vu
aXQsIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywga0F1ZGlvVW5pdFNjb3BlX091
dHB1dCwgMCwgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGVuYWJsZSB2cGlvIHVuaXQgb3V0
cHV0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSNlbmRpZgotCi0gICAgQVVSZW5kZXJDYWxsYmFj
a1N0cnVjdCBjYWxsYmFjayA9IHsgaW5wdXRQcm9jLCB0aGlzIH07Ci0gICAgZXJyID0gQXVkaW9V
bml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVy
Q2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZjYWxsYmFjaywgc2l6ZW9mKGNh
bGxiYWNrKSk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklF
UiwgInVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNwZWFrZXIgcHJvYywgZXJyb3IgPSAiLCBlcnIs
ICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJl
YW1EZXNjcmlwdGlvbigpKTsKLSAgICBlcnIgID0gQXVkaW9Vbml0R2V0UHJvcGVydHkocmVtb3Rl
SU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVf
SW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmc2l6ZSk7
Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJs
ZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25z
dCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICBvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLm1TYW1wbGVSYXRlID0gQXVk
aW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgpOwotCi0gICAgZXJyID0gQXVk
aW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFt
Rm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJl
YW1EZXNjcmlwdGlvbigpLCBzaXplb2Yob3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRp
b24oKSkpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICJ1bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yID0gIiwgZXJyLCAiICgi
LCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQotCi0gICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShyZW1vdGVJT1VuaXQpOwotICAgIGlm
IChlcnIpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpb1VuaXRJbml0
aWFsaXplKCkgZmFpbGVkLCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIs
ICIpIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiByZW1v
dGVJT1VuaXQ7Ci19Ci0KLS8vIE1heSBnZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQu
Ci12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZh
aWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBBU1NFUlQoZGVzY3JpcHRpb24ucGxhdGZvcm1E
ZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJh
c2ljVHlwZSk7Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5nKSB7Ci0gICAgICAgIGlmIChtX2lzQXVk
aW9Vbml0U3RhcnRlZCkgewotICAgICAgICAgICAgaWYgKG1fcmVtb3RlSU9Vbml0KQotICAgICAg
ICAgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOwotICAgICAgICAg
ICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2lucHV0RGVzY3JpcHRpb24gfHwgKm1faW5wdXREZXNj
cmlwdGlvbiAhPSBkZXNjcmlwdGlvbikgewotICAgICAgICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9
IGZhbHNlOwotCi0gICAgICAgIGlmIChtX3JlbW90ZUlPVW5pdCkgewotICAgICAgICAgICAgQXVk
aW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAgICBBdWRpb0NvbXBv
bmVudEluc3RhbmNlRGlzcG9zZShtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAgICBtX3JlbW90
ZUlPVW5pdCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2lucHV0RGVzY3JpcHRp
b24gPSBudWxscHRyOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLQot
ICAgICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gaW5wdXREZXNjcmlwdGlvbiA9IHRvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKLSAgICAgICAgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uIG91dHB1dERlc2NyaXB0aW9uOwotCi0gICAgICAgIGF1dG8gcmVtb3RlSU9V
bml0ID0gY3JlYXRlQXVkaW9Vbml0KG91dHB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgaWYgKCFy
ZW1vdGVJT1VuaXQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9pbnB1dERlc2Ny
aXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGlucHV0RGVzY3Jp
cHRpb24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKLQotICAgICAgICBtX2RhdGFT
b3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVS
YXRlKCkgKiAyLCBzdHJlYW1UcmFjaygpKTsKLQotICAgICAgICBpZiAobV9kYXRhU291cmNlLT5z
ZXRJbnB1dEZvcm1hdChpbnB1dERlc2NyaXB0aW9uKSB8fCBtX2RhdGFTb3VyY2UtPnNldE91dHB1
dEZvcm1hdChvdXRwdXREZXNjcmlwdGlvbikpIHsKLSAgICAgICAgICAgIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VEaXNwb3NlKHJlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KHJl
bW90ZUlPVW5pdCkpIHsKLSAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiQXVk
aW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkLCBlcnJvciA9ICIsIGVycm9yLCAiICgiLCAoY29uc3Qg
Y2hhciopJmVycm9yLCAiKSIpOwotICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURp
c3Bvc2UocmVtb3RlSU9Vbml0KTsKLSAgICAgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51
bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2lzQXVk
aW9Vbml0U3RhcnRlZCA9IHRydWU7Ci0KLSAgICAgICAgbV9kYXRhU291cmNlLT5zZXRWb2x1bWUo
bV92b2x1bWUpOwotICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IHJlbW90ZUlPVW5pdDsKLSAgICB9
Ci0KLSAgICBtX2RhdGFTb3VyY2UtPnB1c2hTYW1wbGVzKHNhbXBsZVRpbWUsIGF1ZGlvRGF0YSwg
c2FtcGxlQ291bnQpOwotCi0gICAgaWYgKG1fYXV0b1BsYXkgJiYgIW1faGFzU3RhcnRlZEF1dG9w
bGF5KSB7Ci0gICAgICAgIG1faGFzU3RhcnRlZEF1dG9wbGF5ID0gdHJ1ZTsKLSAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0g
ICAgICAgICAgICBpZiAobV9hdXRvUGxheSkKLSAgICAgICAgICAgICAgICBwbGF5SW50ZXJuYWwo
KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2lzQXVkaW9Vbml0U3RhcnRlZCkg
ewotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fcmVtb3Rl
SU9Vbml0KSkgewotICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpb091
dHB1dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0gIiwgZXJyb3IsICIgKCIsIChjb25zdCBjaGFy
KikmZXJyb3IsICIpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
bV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOwotICAgIH0KLX0KLQotdm9pZCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNvdXJjZVN0b3BwZWQoKQotewotICAgIHBhdXNlKCk7
Ci19Ci0KLU9TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6cmVuZGVy
KFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiBpb0RhdGEsIFVJbnQzMiAvKmlu
QnVzTnVtYmVyKi8sIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiB0aW1lU3RhbXAsIEF1ZGlvVW5pdFJl
bmRlckFjdGlvbkZsYWdzJiBhY3Rpb25GbGFncykKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBvbiBhIGhpZ2gtcHJpb3JpdHkgYmFja2dyb3VuZCB0aHJlYWQuIFRoZSBmb2xsb3dp
bmcgcHJvdGVjdGVkVGhpcyBvYmplY3QgZW5zdXJlcyB0aGUgb2JqZWN0IGlzIG5vdAotICAgIC8v
IGRlc3Ryb3llZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIHRoaXMgZnVuY3Rpb24gZXhpdHMu
Ci0gICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYT4gcHJvdGVjdGVkVGhp
cyB7ICp0aGlzIH07Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5nIHx8IG1fbXV0ZWQgfHwgIW1fZGF0
YVNvdXJjZSB8fCBzdHJlYW1UcmFjaygpLm11dGVkKCkgfHwgc3RyZWFtVHJhY2soKS5lbmRlZCgp
IHx8ICFzdHJlYW1UcmFjaygpLmVuYWJsZWQoKSkgewotICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZl
ckxpc3Q6Onplcm9BQkwoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50ICog
bV9vdXRwdXREZXNjcmlwdGlvbi0+Ynl0ZXNQZXJGcmFtZSgpKSk7Ci0gICAgICAgIGFjdGlvbkZs
YWdzID0ga0F1ZGlvVW5pdFJlbmRlckFjdGlvbl9PdXRwdXRJc1NpbGVuY2U7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIG1fZGF0YVNvdXJjZS0+cHVsbFNhbXBsZXMoaW9EYXRhLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50KSwgdGltZVN0YW1wLm1TYW1wbGVUaW1lLCB0
aW1lU3RhbXAubUhvc3RUaW1lLCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkNvcHkpOwotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KLU9TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YTo6aW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyog
YWN0aW9uRmxhZ3MsIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lU3RhbXAsIFVJbnQzMiBpbkJ1
c051bWJlciwgVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
Kj4odXNlckRhdGEpLT5yZW5kZXIoc2FtcGxlQ291bnQsICppb0RhdGEsIGluQnVzTnVtYmVyLCAq
dGltZVN0YW1wLCAqYWN0aW9uRmxhZ3MpOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxNDU0ZWMxYmE4MTdmYmRiNjRiMzA2MGM5Zjgz
NTc3Yjg1OTNkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bS5oIgotI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb1Rvb2xib3guaD4KLSNpbmNsdWRlIDxD
b3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U7Ci1jbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q7Ci1j
bGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247Ci0KLWNsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EpCi1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E+IGNy
ZWF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFtVHJhY2spCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eo
c3RyZWFtVHJhY2spKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAgICB2b2lkIHBs
YXkoKTsKLSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBt
X2lzUGxheWluZzsgfQotCi0gICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOwotICAgIGZsb2F0IHZv
bHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9Ci0KLSAgICB2b2lkIHNldE11dGVkKGJv
b2wgbXV0ZWQpIHsgbV9tdXRlZCA9IG11dGVkOyB9Ci0gICAgYm9vbCBtdXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbXV0ZWQ7IH0KLQotcHJpdmF0ZToKLSAgICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2EoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKLSAgICB+QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hKCk7Ci0KLSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpP
YnNlcnZlcgotICAgIHZvaWQgc291cmNlU3RvcHBlZCgpIGZpbmFsOwotICAgIHZvaWQgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7Ci0KLSAgICBz
dGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFn
cyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50MzIgbnVt
YmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCopOwotICAgIE9TU3RhdHVzIHJlbmRlcihVSW50
MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIFVJbnQzMiBpbkJ1c051bWJlciwgY29u
c3QgQXVkaW9UaW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOwotCi0gICAg
QXVkaW9Db21wb25lbnRJbnN0YW5jZSBjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJik7Ci0gICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChB
dWRpb0J1ZmZlckxpc3QmLCBzaXplX3QpOwotICAgIHZvaWQgcGxheUludGVybmFsKCk7Ci0KLSNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hIjsg
fQotI2VuZGlmCi0KLSAgICAvLyBBdWRpbyB0aHJlYWQgbWVtYmVycwotICAgIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2UgbV9yZW1vdGVJT1VuaXQgeyBudWxscHRyIH07Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRp
b247Ci0gICAgYm9vbCBtX2lzQXVkaW9Vbml0U3RhcnRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2hhc1N0YXJ0ZWRBdXRvcGxheSB7IGZhbHNlIH07Ci0KLSAgICAvLyBDcm9zcyB0aHJlYWQgbWVt
YmVycwotICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fZGF0YVNvdXJjZTsKLQot
ICAgIC8vIE1haW4gdGhyZWFkIHdyaXRhYmxlIG1lbWJlcnMKLSAgICBmbG9hdCBtX3ZvbHVtZSB7
IDEgfTsKLSAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1fYXV0b1Bs
YXkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lz
Q2xlYXJlZCB7IGZhbHNlIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJB
Q0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387526</attachid>
            <date>2020-01-13 07:43:10 -0800</date>
            <delta_ts>2020-01-13 08:11:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206172-20200113164309.patch</filename>
            <type>text/plain</type>
            <size>65308</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhNjVjNjY5MWY0ZmQw
ZDAzOGE0MzYzMDU3NzMxMjllZDdmNGFlNC4uOGYwNTViOWQ1NmU0MmI4MzhjMTFjNzZkY2U4Mjhm
MzUxNWZmZWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTAxLTEzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgdG8gaW1wbGVtZW50IHJlbW90ZSBhdWRpbyByZW5kZXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yIGNvZGUgdG8gYWxsb3cgaW4gdGhlIGZ1dHVyZSByZW5kZXJpbmcgb2YgbWVkaWEgc3RyZWFt
IGF1ZGlvIHRyYWNrcyBpbiBhIHJlbW90ZSBwcm9jZXNzLgorICAgICAgICBGb3IgdGhhdCBwdXJw
b3NlLCBzcGxpdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZnVuY3Rpb25hbGl0
eSBpbiB0d28gcGFydHMuCisgICAgICAgIFRoZSBmaXJzdCBwYXJ0IGlzIG1vdmVkIGJhY2sgdG8g
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS4KKyAgICAgICAgVGhlIHNlY29uZCBwYXJ0IGlz
IHBsYXRmb3JtIHNwZWNpZmljIGFuZCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIGFuIGludGVyZmFj
ZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgICAgICBhbmQgYW4gaW4gcHJvY2Vz
cyBpbXBsZW1lbnRhdGlvbiBuYW1lZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
LgorCisgICAgICAgIE1ha2UgVHJhY2tQcml2YXRlQmFzZSBhbmQgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgcHVibGljIExvZ2dlckhlbHBlci4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFraW5nIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIGFuZCBBdWRpb1NhbXBsZURhdGFTb3VyY2UgdG8g
dGFrZSBhIExvZ2dlckhlbHBlciBpbnN0ZWFkIG9mIGEgZGVyaXZlZCBpbnN0YW5jZS4KKworICAg
ICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6QXVkaW9TYW1w
bGVEYXRhU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldE11dGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRWb2x1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnZvbHVtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6aXNNdXRl
ZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6fkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OnZvbHVtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtOjp1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tFbmRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0UGF1c2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0ZUF1ZGlvVW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmg6IFJlbW92ZWQuCisKIDIwMjAtMDEtMTIgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0LWluZGVudCB3aXRoIHBlcmNlbnRhZ2UgdmFs
dWUgc2hvdWxkIHJlc29sdmUgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIHdpZHRoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDQxMTIxNTU3YWU2ZjM1ZGI5YWQ1ZjRjMWU4YWNjY2EwODY2M2U2ZmIuLmQ4NWIxNzlh
ZGM3MTI0N2JiYmU4NjM5M2EyYzAzNWVhZTBhYjNiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcw
LDYgKzE5NzAsOCBAQCBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGll
c0xvZ2dpbmcuY3BwCiAKIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcAogCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0uY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAK
IHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IGU0NTNkODkwOTdlNjg2YjJjMzM1MmJhZDY2ZWU3MTIzNDdjMTY2YjUuLmU2Zjgx
N2E3ODE2ZDZhNGJjYzIwMTNhNTc5NDQ0NDc2N2FlNzA4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtNDg5LDcgKzQ4OSw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0KIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0gQG5vLXVuaWZ5CiAKLXBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3Bw
CitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJD
b2NvYS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOWJiODQzMTQ1MzlhZDA5NTE0NjMxYjIxMzA2MTZhZjYwYmE5
YTFjMy4uZTA1NTM2ZjczY2IwYWU2NGZlNTJhMjEwNmJkNmY5NjVhMjc5M2UwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAw
MCw3ICsxMDAwLDYgQEAKIAkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzJDMDBE
ODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzJEM0U1NDIxNjU3OEFFMDBDNUUwMjEgLyog
RGF0YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oICovOyB9
OwogCQkzNzJEM0U1NTIxNjU3OEFFMDBDNUUwMjEgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQx
NDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07Ci0JCTM3MkQzRTU2MjE2
NTc4QUUwMEM1RTAyMSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM2MUU0MjUx
MkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLzsgfTsK
IAkJMzcyRDNFNTcyMTY1NzhBRTAwQzVFMDIxIC8qIE5hdmlnYXRvckNyZWRlbnRpYWxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYyNjFGRTg5
NUY4MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaCAqLzsgfTsKIAkJMzc1Q0QyMzIx
MTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVu
YXRpb24uaCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0
UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MDg2LDYgKzEwODUsNyBAQAogCQk0MTYxRTJENTFGRTQ4REM1MDBFQzJFOTYgLyogRmV0Y2hMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDdF
MkI1MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAv
KiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07CiAJCTQxNjJBNDU4MTAxMTQ2NDcwMERGRjNFRCAv
KiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OworCQk0MTZBMDZBMTIzQ0NBRDAzMDAzNDcx
MDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBOZXR3
b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIwMDRB
OTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVw
b3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICov
OyB9OwpAQCAtNTQ3Miw3ICs1NDcyLDYgQEAKIAkJMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8q
IFRleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Njk3MDg1
MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tQcml2YXRlQmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NkVDMTMyMUU0NEYyQ0IwMEU1RDgxMyAvKiBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTU1NTIsNyArNTU1MSw2IEBACiAJCTA3QjcxMTZDMUQ4OTlFNjMwMDlGMEZGQiAvKiBD
YXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I5
M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
SU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjkzRkZCMjNC
OTJBQUIwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1J
TUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0MwNDZDNjFF
NDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFMDFCRkI2MDAx
MDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFMTFCRkI2MDAxMDBCRDIyNTYgLyog
TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzM4OCw2ICs3Mzg2LDExIEBACiAJCTQxNjJBNDRGMTAxMTQ1QUUw
MERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZBMDY5MjIz
Q0NBQTkzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkEwNjkzMjNDQ0FB
OTQwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZBMDY5NDIz
Q0NBQTlFMDAzNDcxMDkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2QTA2OTUyM0NDQUE5RTAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2QTA2OTYyM0NDQUE5RjAwMzQ3MTA5
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxNkNFNEE0MjI5REYxMkUwMEE4QTY4NiAvKiBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RDc1
OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxNjEsNiArMTYxNjQsOSBA
QAogCQkJCUNEQzY3NTFGMUVBRUE5OTYwMDcyN0M4NCAvKiBpb3MgKi8sCiAJCQkJNDE1NzQ3NDIx
RTM4Njk4MDAwRTkxNEQ4IC8qIGxpYndlYnJ0YyAqLywKIAkJCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0
RjFENjAgLyogbWFjICovLAorCQkJCTQxNkEwNjk1MjNDQ0FBOUUwMDM0NzEwOSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgKi8sCisJCQkJNDE2QTA2OTYyM0NDQUE5RjAwMzQ3
MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi8sCisJCQkJNDE2QTA2OTQy
M0NDQUE5RTAwMzQ3MTA5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwICovLAog
CQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmggKi8sCiAJCQkJMDdCNzExNkExRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2Uu
aCAqLywKIAkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwICovLApAQCAtMTYyMzQsOCArMTYyNDAsOCBAQAogCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0
RjFENjAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQkwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmNwcCAqLywKLQkJCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8sCisJCQkJNDE2QTA2OTMyM0NDQUE5NDAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwICovLAorCQkJ
CTQxNkEwNjkyMjNDQ0FBOTMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckNvY29hLmggKi8sCiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaCAqLywKIAkJCQkwNzAzNjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0
dXJlRGV2aWNlTWFuYWdlci5tbSAqLywKIAkJCQkwNzAzNjNERTE4MUExQ0RDMDBDMDc0QTUgLyog
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLywKQEAgLTI5MDg0LDYgKzI5MDkwLDcgQEAKIAkJCQlD
RDJGNEEyODE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGREUyRDU1QjE1OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVk
aW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2QTA2QTEyM0NDQUQwMzAwMzQ3MTA5
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAxMzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDE4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVPdXRwdXQuaCBp
biBIZWFkZXJzICovLApAQCAtMjkxMTAsNyArMjkxMTcsNiBAQAogCQkJCUNERTNBODU4MTdGNjAy
MDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNENTRBNzYzMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdENkE0RjgxQkYyMzA3RDAwMTc0MTQ2
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTM3
MkQzRTU2MjE2NTc4QUUwMEM1RTAyMSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDhCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NjExMkQyNkUzODAwRTc5NDE1
IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRGNzEz
QTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAppbmRleCBhYTU2OGMyZjQ2MTFmN2M2YjkxM2RjZGYw
ZDgzMzU0NDU0NDJkM2VlLi4zMjZjOWJjMmE5YThjZTA2NTQzNjM3NTBkZmIzZmJmNTBlYzU4ZmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1w
bGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCkBAIC00Miw3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogY2xhc3MgQ0FSaW5nQnVmZmVy
OwotY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiAKIGNsYXNzIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb1NhbXBsZURhdGFTb3Vy
Y2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPgogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApAQCAtNTAsNyArNDksNyBAQCBjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9TYW1wbGVEYXRhU291cmNlLAogI2Vu
ZGlmCiAgICAgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNl
PiBjcmVhdGUoc2l6ZV90LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBS
ZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBjcmVhdGUoc2l6ZV90LCBXVEY6OkxvZ2dlckhlbHBl
ciYpOwogCiAgICAgfkF1ZGlvU2FtcGxlRGF0YVNvdXJjZSgpOwogCkBAIC04MSw3ICs4MCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShz
aXplX3QsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisgICAgQXVkaW9TYW1wbGVEYXRhU291
cmNlKHNpemVfdCwgTG9nZ2VySGVscGVyJik7CiAKICAgICBPU1N0YXR1cyBzZXR1cENvbnZlcnRl
cigpOwogICAgIGJvb2wgcHVsbFNhbXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmLCBzaXpl
X3QmLCB1aW50NjRfdCwgZG91YmxlLCBQdWxsTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRl
eCA0MWFmZTM5ZjIzMmFlNTg4MDg2MGYwODRkNTU2Y2I0YTVkOGFlMjVhLi5hZGQ2ZDYwMGM3Y2Q2
YWI2OGRjNGMwNjg1NWM0NTI2MTU2MjUxYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTQ2
LDE5ICs0NiwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9T
YW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQorUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9n
Z2VySGVscGVyJiBsb2dnZXJIZWxwZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9TYW1wbGVEYXRhU291cmNlKG1heGltdW1TYW1wbGVDb3VudCwgdHJhY2spKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1NhbXBsZURhdGFTb3VyY2UobWF4aW11bVNhbXBsZUNvdW50
LCBsb2dnZXJIZWxwZXIpKTsKIH0KIAotQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBs
ZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmIHRyYWNrKQorQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBsZURhdGFTb3Vy
Y2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGVscGVyJiBsb2dnZXJIZWxwZXIp
CiAgICAgOiBtX2lucHV0U2FtcGxlT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAg
ICAsIG1fbWF4aW11bVNhbXBsZUNvdW50KG1heGltdW1TYW1wbGVDb3VudCkKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICAsIG1fbG9nZ2VyKHRyYWNrLmxvZ2dlcigpKQotICAgICwgbV9s
b2dJZGVudGlmaWVyKHRyYWNrLmxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fbG9nZ2VyKGxvZ2dl
ckhlbHBlci5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihsb2dnZXJIZWxwZXIubG9n
SWRlbnRpZmllcigpKQogI2VuZGlmCiB7CisjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBV
TlVTRURfUEFSQU0obG9nZ2VySGVscGVyKTsKKyNlbmRpZgogfQogCiBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6On5BdWRpb1NhbXBsZURhdGFTb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCmluZGV4IGVkNzk5M2Q4YWRhNDY1
YWRmMzg2Mjg0ODVjNDc3MTNmMTRjNjJiZmQuLjBlZmJmMzNiYzgyOTJhMzhlZTBiYTYxZGM4ZWE1
MTQ0OTJkNDdjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RyYWNrUHJpdmF0ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UcmFja1ByaXZhdGVCYXNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogY2xhc3MgVHJh
Y2tQcml2YXRlQmFzZQogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYWNrUHJp
dmF0ZUJhc2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dl
ckhlbHBlcgogI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tQcml2YXRl
QmFzZSk7CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lk
Kik7CisgICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lk
Kik7CiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xv
Z2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaAppbmRleCBiYzVmMzkxYjY1MjBiMDMxYjZlNmM4NTU1ZGE5YzNlMjIwMzk0MDkxLi4yZmQz
ZTczMWVlYTZlMzYzNGNjODdkMzFjNDM3ZjhjN2MwNjJmYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBDbG9jazsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E7CitjbGFzcyBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOwogY2xhc3MgQVZWaWRlb0NhcHR1cmVTb3VyY2U7
CiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBDdXJyZW50
RnJhbWVQYWludGVyIG1faW1hZ2VQYWludGVyOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E+PiBtX2F1ZGlvVHJhY2tNYXA7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4g
bV9hdWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKICAgICBQZW5kaW5nU2FtcGxlUXVl
dWUgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CmluZGV4IDZjNWY1MGI0ZGEwMGQyMTAyYmFkZTM3OTRmOWRkZDBiZDQxOTI2NjMuLmM1ZWQwYTYz
YmJlOWZmZmQ3ZTYyMWE3Y2Q0MzNkODIxZmRmZDE1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShBVkZPVU5EQVRJT04pCiAKLSNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYS5oIgorI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhU3RyZWFtUHJpdmF0ZS5oIgpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygpCiB7CiAgICAgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGVWZWN0b3IgY3VycmVudFRyYWNrcyA9IG1fbWVkaWFTdHJlYW1Qcml2
YXRlLT50cmFja3MoKTsKIAotICAgIGF1dG8gc2V0QXVkaW9UcmFja1N0YXRlID0gW3RoaXNdKEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSYgdHJhY2ssIGludCBpbmRleCwgVHJhY2tT
dGF0ZSBzdGF0ZSkKKyAgICBhdXRvIHNldEF1ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtJiB0cmFjaywgaW50IGluZGV4LCBUcmFja1N0YXRlIHN0YXRl
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgICAgICBjYXNlIFRyYWNrU3Rh
dGU6OlJlbW92ZToKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9OwotICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBjdXJyZW50VHJhY2tzLCAmQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGUsIFdURk1vdmUoc2V0QXVkaW9UcmFj
a1N0YXRlKSk7CisgICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1fYXVkaW9UcmFja01hcCwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIGN1cnJlbnRUcmFja3MsICZBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUsIFdURk1vdmUoc2V0QXVkaW9UcmFja1N0YXRlKSk7CiAK
ICAgICBhdXRvIHNldFZpZGVvVHJhY2tTdGF0ZSA9IFt0aGlzXShWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtJiB0cmFjaywgaW50IGluZGV4LCBUcmFja1N0YXRlIHN0YXRlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTE2NDlh
MGE4ZDVmZTdkMzRiMTkxYzZmODkxYWY0MDI5ZTZiNDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaCIK
KyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1lZGlhVGltZTsKK30KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6UmVuZGVyZXJD
cmVhdG9yIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjptX3JlbmRlcmVyQ3JlYXRvciA9
IG51bGxwdHI7Cit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRDcmVhdG9y
KFJlbmRlcmVyQ3JlYXRvciBjcmVhdG9yKQoreworICAgIG1fcmVuZGVyZXJDcmVhdG9yID0gY3Jl
YXRvcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
PiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6Y3JlYXRlKCkKK3sKKyAgICBpZiAobV9y
ZW5kZXJlckNyZWF0b3IpCisgICAgICAgIHJldHVybiBtX3JlbmRlcmVyQ3JlYXRvcigpOworCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYT4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5k
aWYKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAordm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lk
KiBpZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKKyAgICBtX2xvZ0lkZW50
aWZpZXIgPSBpZGVudGlmaWVyOworfQorCitXVEZMb2dDaGFubmVsJiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ01lZGlh
OworfQorI2VuZGlmCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjExMzA5ZWRlZDA0YzMxMWRlNzQ2YjlkOTVlMDk2ZTRlZWQ1MDVjN2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKworbmFtZXNwYWNlIFdURiB7
CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbjsKK2NsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOworCitjbGFzcyBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciA6IHB1YmxpYyBMb2dnZXJIZWxwZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IGNyZWF0
ZSgpOworICAgIHZpcnR1YWwgfkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyKCkgPSBkZWZh
dWx0OworCisgICAgdmlydHVhbCB2b2lkIHNldFBhdXNlZChib29sKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHN0b3AoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgPSAwOworICAgIC8v
IE1heSBiZSBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICB2aXJ0dWFsIHZvaWQg
cHVzaFNhbXBsZXMoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0
YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpID0gMDsKKworICAgIHZp
cnR1YWwgdm9pZCBzZXRNdXRlZChib29sIHZhbHVlKSB7IG1fbXV0ZWQgPSB2YWx1ZTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKSB7IG1fdm9sdW1lID0gdm9sdW1l
OyB9CisgICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0KKworI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYs
IGNvbnN0IHZvaWQqKTsKKyNlbmRpZgorCisgICAgdXNpbmcgUmVuZGVyZXJDcmVhdG9yID0gc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyPiAoKikoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRDcmVhdG9yKFJlbmRlcmVyQ3JlYXRvcik7CisK
K3Byb3RlY3RlZDoKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXIm
IGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICptX2xvZ2dlcjsgfQorICAgIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7
IH0KKworICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBs
b2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworICAgIGJvb2wgaXNNdXRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgUmVuZGVyZXJD
cmVhdG9yIG1fcmVuZGVyZXJDcmVhdG9yOworCisgICAgLy8gTWFpbiB0aHJlYWQgd3JpdGFibGUg
bWVtYmVycworICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgZmxvYXQgbV92b2x1bWUg
eyAxIH07CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWZQdHI8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTdkOWU2OWQxNWYwNjQyMWFiZjk0ZDQ0OGM4ZTg4OWQ0ODYwMzVmYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0uY3BwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bS5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYgdHJhY2spCisgICAgOiBtX3N0cmVhbVRyYWNrKHRyYWNrKQorICAgICwgbV9pZCh0cmFj
ay5pZCgpKQorICAgICwgbV9sYWJlbCh0cmFjay5sYWJlbCgpKQorICAgICwgbV90aW1lbGluZU9m
ZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCisgICAgLCBtX3JlbmRlcmVyIHsgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZSgpIH0KK3sKKyAgICB0cmFjay5hZGRPYnNl
cnZlcigqdGhpcyk7Cit9CisKK0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06On5BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtKCkKK3sKKyAgICBjbGVhcigpOworfQorCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnNldExv
Z2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikKK3sKKyAg
ICBUcmFja1ByaXZhdGVCYXNlOjpzZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKKyAgICBt
X3JlbmRlcmVyLT5zZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKK30KKyNlbmRpZgorCit2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OmNsZWFyKCkKK3sKKyAgICBpZiAobV9p
c0NsZWFyZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNDbGVhcmVkID0gdHJ1ZTsKKyAg
ICBzdHJlYW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKKworICAgIG1fcmVuZGVyZXIt
PmNsZWFyKCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6cGxheUlu
dGVybmFsKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1faXNQ
bGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGxheWluZyA9IHRydWU7CisgICAg
bV9hdXRvUGxheSA9IGZhbHNlOworCisgICAgbV9yZW5kZXJlci0+c2V0UGF1c2VkKGZhbHNlKTsK
K30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpwbGF5KCkKK3sKKyAgICBw
bGF5SW50ZXJuYWwoKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpw
YXVzZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbV9pc1Bs
YXlpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAg
bV9hdXRvUGxheSA9IGZhbHNlOworCisgICAgbV9yZW5kZXJlci0+c2V0UGF1c2VkKHRydWUpOwor
fQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnNldFZvbHVtZShmbG9hdCB2
b2x1bWUpCit7CisgICAgbV9yZW5kZXJlci0+c2V0Vm9sdW1lKHZvbHVtZSk7Cit9CisKK2Zsb2F0
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcmVuZGVyZXItPnZvbHVtZSgpOworfQorCisvLyBNYXkgZ2V0IGNhbGxlZCBvbiBhIGJh
Y2tncm91bmQgdGhyZWFkLgordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRp
b1NhbXBsZXNBdmFpbGFibGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBjb25zdCBNZWRpYVRp
bWUmIHNhbXBsZVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQp
Cit7CisgICAgaWYgKCFtX2lzUGxheWluZykgeworICAgICAgICBtX3JlbmRlcmVyLT5zdG9wKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3JlbmRlcmVyLT5wdXNoU2FtcGxlcyhz
YW1wbGVUaW1lLCBhdWRpb0RhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CisKKyAgICBp
ZiAobV9hdXRvUGxheSAmJiAhbV9oYXNTdGFydGVkQXV0b3BsYXkpIHsKKyAgICAgICAgbV9oYXNT
dGFydGVkQXV0b3BsYXkgPSB0cnVlOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgIGlmIChtX2F1dG9Q
bGF5KQorICAgICAgICAgICAgICAgIHBsYXlJbnRlcm5hbCgpOworICAgICAgICB9KTsKKyAgICB9
Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENoYW5n
ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQoreworICAgIHVwZGF0ZVJlbmRlcmVyTXV0ZWRT
dGF0ZSgpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnRyYWNrRW5h
YmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKQoreworICAgIHVwZGF0ZVJlbmRl
cmVyTXV0ZWRTdGF0ZSgpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06
OnVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgpCit7CisgICAgbV9yZW5kZXJlci0+c2V0TXV0ZWQo
bV9pc1BsYXlpbmcgJiYgIXN0cmVhbVRyYWNrKCkubXV0ZWQoKSAmJiAhc3RyZWFtVHJhY2soKS5l
bmRlZCgpICYmIHN0cmVhbVRyYWNrKCkuZW5hYmxlZCgpKTsKK30KKwordm9pZCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtOjp0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikK
K3sKKyAgICBwYXVzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgKaW5kZXggZGNkM2FlYzI1NDlmMzZlZDNlYWM4MWIzZTA0
OWQ2NDI0OWY4YjhmYi4uZjMyNWM2ZGQ2OWNmODJjYTE4MDVhZDE1MWQxNzQ2ZGI2ZDE2ZDc2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaApAQCAtMzIsMTkgKzMyLDE2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbSA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CitjbGFzcyBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSBmaW5h
bCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0pCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHN0cmVhbVRy
YWNrKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbShzdHJlYW1UcmFjaykpOwogICAgIH0KLQotICAgIEtpbmQga2luZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEtpbmQ6Ok1haW47IH0KLSAgICBBdG9tU3RyaW5nIGlkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIEF0b21TdHJpbmcgbGFiZWwoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVsOyB9Ci0gICAgQXRvbVN0cmluZyBsYW5ndWFn
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9Ci0gICAgaW50IHRyYWNr
SW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CisgICAgfkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0oKTsKIAogICAgIHZvaWQgc2V0VHJhY2tJbmRleChpbnQgaW5k
ZXgpIHsgbV9pbmRleCA9IGluZGV4OyB9CiAKQEAgLTUzLDIwICs1MCw1NyBAQCBwdWJsaWM6CiAg
ICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZU9m
ZnNldDsgfQogICAgIHZvaWQgc2V0VGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiBvZmZz
ZXQpIHsgbV90aW1lbGluZU9mZnNldCA9IG9mZnNldDsgfQogCisgICAgdm9pZCBjbGVhcigpOwor
CisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgpOworICAgIGJvb2wgaXNQbGF5aW5n
KCkgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KKworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsK
KyAgICBmbG9hdCB2b2x1bWUoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCBtdXRl
ZCkgeyBtX211dGVkID0gbXV0ZWQ7IH0KKyAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4g
bV9tdXRlZDsgfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgdm9pZCBzZXRMb2dn
ZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOworICAgIGNvbnN0IGNoYXIqIGxv
Z0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtIjsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKLSAgICBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKLSAgICAgICAgOiBtX3N0
cmVhbVRyYWNrKHRyYWNrKQotICAgICAgICAsIG1faWQodHJhY2suaWQoKSkKLSAgICAgICAgLCBt
X2xhYmVsKHRyYWNrLmxhYmVsKCkpCi0gICAgICAgICwgbV90aW1lbGluZU9mZnNldChNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCkpCi0gICAgewotICAgIH0KKyAgICBleHBsaWNpdCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisKKyAgICAvLyBB
dWRpb1RyYWNrUHJpdmF0ZQorICAgIEtpbmQga2luZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEtp
bmQ6Ok1haW47IH0KKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
ZDsgfQorICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhYmVs
OyB9CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4OyB9
CisKKyAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKKyAgICB2b2lkIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJikgZmluYWw7CisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYpICBmaW5hbDsKKyAgICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmKSAgZmluYWw7CisgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hh
bmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQorCisgICAgdm9pZCBwbGF5
SW50ZXJuYWwoKTsKKyAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgpOworCisgICAg
Ly8gTWFpbiB0aHJlYWQgd3JpdGFibGUgbWVtYmVycworICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9hdXRvUGxheSB7IGZhbHNlIH07CisgICAgYm9vbCBtX211dGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNDbGVhcmVkIHsgZmFsc2UgfTsKIAogICAgIFJlZjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9zdHJlYW1UcmFjazsKICAgICBBdG9tU3RyaW5nIG1f
aWQ7CiAgICAgQXRvbVN0cmluZyBtX2xhYmVsOwogICAgIGludCBtX2luZGV4IHsgMCB9OwogICAg
IE1lZGlhVGltZSBtX3RpbWVsaW5lT2Zmc2V0OworCisgICAgLy8gQXVkaW8gdGhyZWFkIG1lbWJl
cnMKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IG1f
cmVuZGVyZXI7CisgICAgYm9vbCBtX2hhc1N0YXJ0ZWRBdXRvcGxheSB7IGZhbHNlIH07CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAppbmRleCAwMDcxNmZkMGE0NTYxNGRlNmNkOGFi
YWRlMDU5MGYyYmYxMGMwMjZlLi4xMGI2NzAzY2ViM2E5ODU2OWY5NDM0YjgyYmFjNTNlZGVjOGJj
YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3Mg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUgZmluYWwKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6
RWFnZXI+CiAgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisgICAgLCBw
dWJsaWMgTG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzU0
NjFmNmQ1ZDhmNmI3ZTZhZjlmZDU2Y2MyNmY1ZmJkMzkyYmI1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyQ29jb2EuY3BwCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCisjaW5jbHVkZSAi
QXVkaW9TYW1wbGVEYXRhU291cmNlLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5j
bHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
CisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8cGFsL3Nw
aS9jb2NvYS9BdWRpb1Rvb2xib3hTUEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hKCkgPSBkZWZhdWx0OworCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hOjp+QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpID0gZGVmYXVsdDsKKwor
dm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzdG9wKCkKK3sKKyAgICBp
ZiAoIW1faXNBdWRpb1VuaXRTdGFydGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9y
ZW1vdGVJT1VuaXQpCisgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQp
OworfQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNsZWFyKCkK
K3sKKyAgICBpZiAobV9kYXRhU291cmNlKQorICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFBhdXNl
ZCh0cnVlKTsKKworICAgIGlmIChtX3JlbW90ZUlPVW5pdCkgeworICAgICAgICBBdWRpb091dHB1
dFVuaXRTdG9wKG1fcmVtb3RlSU9Vbml0KTsKKyAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5j
ZURpc3Bvc2UobV9yZW1vdGVJT1VuaXQpOworICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IG51bGxw
dHI7CisgICAgfQorCisgICAgbV9kYXRhU291cmNlID0gbnVsbHB0cjsKKyAgICBtX2lucHV0RGVz
Y3JpcHRpb24gPSBudWxscHRyOworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBudWxscHRyOwor
fQorCit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnNldFBhdXNlZChi
b29sIHZhbHVlKQoreworICAgIG1fcGF1c2VkID0gdmFsdWU7CisgICAgaWYgKG1fZGF0YVNvdXJj
ZSkKKyAgICAgICAgbV9kYXRhU291cmNlLT5zZXRQYXVzZWQodmFsdWUpOworfQorCitBdWRpb0Nv
bXBvbmVudEluc3RhbmNlIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0
ZUF1ZGlvVW5pdChDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG91dHB1dERlc2NyaXB0aW9uKQor
eworICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgcmVtb3RlSU9Vbml0IHsgbnVsbHB0ciB9Owor
CisgICAgQXVkaW9Db21wb25lbnREZXNjcmlwdGlvbiBpb1VuaXREZXNjcmlwdGlvbiB7IGtBdWRp
b1VuaXRUeXBlX091dHB1dCwgMCwga0F1ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZSwgMCwgMCB9
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9u
ZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX1JlbW90ZUlPOworI2Vsc2UKKyAgICBpb1Vu
aXREZXNjcmlwdGlvbi5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVmYXVs
dE91dHB1dDsKKyNlbmRpZgorCisgICAgQXVkaW9Db21wb25lbnQgaW9Db21wb25lbnQgPSBBdWRp
b0NvbXBvbmVudEZpbmROZXh0KG51bGxwdHIsICZpb1VuaXREZXNjcmlwdGlvbik7CisgICAgQVNT
RVJUKGlvQ29tcG9uZW50KTsKKyAgICBpZiAoIWlvQ29tcG9uZW50KSB7CisgICAgICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGZpbmQgcmVtb3RlIElPIHVuaXQgY29tcG9u
ZW50Iik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIE9TU3RhdHVzIGVy
ciA9IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VOZXcoaW9Db21wb25lbnQsICZyZW1vdGVJT1VuaXQp
OworICAgIGlmIChlcnIpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFi
bGUgdG8gb3BlbiB2cGlvIHVuaXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciop
JmVyciwgIikiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBVSW50MzIgcGFyYW0gPSAxOworICAgIGVyciA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KHJlbW90ZUlPVW5pdCwga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0VuYWJs
ZUlPLCBrQXVkaW9Vbml0U2NvcGVfT3V0cHV0LCAwLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOwor
ICAgIGlmIChlcnIpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUg
dG8gZW5hYmxlIHZwaW8gdW5pdCBvdXRwdXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3Qg
Y2hhciopJmVyciwgIikiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlm
CisKKyAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGNhbGxiYWNrID0geyBpbnB1dFByb2MsIHRo
aXMgfTsKKyAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRp
b1VuaXRQcm9wZXJ0eV9TZXRSZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwg
MCwgJmNhbGxiYWNrLCBzaXplb2YoY2FsbGJhY2spKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgc3BlYWtl
ciBwcm9jLCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9m
KG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkpOworICAgIGVyciAgPSBBdWRp
b1VuaXRHZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1G
b3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJm91dHB1dERlc2NyaXB0aW9uLnN0cmVh
bURlc2NyaXB0aW9uKCksICZzaXplKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIEVSUk9SX0xP
RyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJv
ciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0
aW9uKCkubVNhbXBsZVJhdGUgPSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVS
YXRlKCk7CisKKyAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtB
dWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwg
Jm91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksIHNpemVvZihvdXRwdXREZXNj
cmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBF
UlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBzZXQgaW5wdXQgc3RyZWFtIGZvcm1h
dCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBlcnIgPSBBdWRpb1VuaXRJbml0aWFsaXpl
KHJlbW90ZUlPVW5pdCk7CisgICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgIkF1ZGlvVW5pdEluaXRpYWxpemUoKSBmYWlsZWQsIGVycm9yID0gIiwgZXJyLCAi
ICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlbW90ZUlPVW5pdDsKK30KKworLy8gTWF5IGdldCBjYWxsZWQg
b24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJDb2NvYTo6cHVzaFNhbXBsZXMoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIEFTU0VSVChkZXNjcmlw
dGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkudHlwZSA9PSBQbGF0Zm9ybURlc2NyaXB0aW9uOjpD
QUF1ZGlvU3RyZWFtQmFzaWNUeXBlKTsKKworICAgIGlmICghbV9pbnB1dERlc2NyaXB0aW9uIHx8
ICptX2lucHV0RGVzY3JpcHRpb24gIT0gZGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9pc0F1ZGlv
VW5pdFN0YXJ0ZWQgPSBmYWxzZTsKKworICAgICAgICBpZiAobV9yZW1vdGVJT1VuaXQpIHsKKyAg
ICAgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOworICAgICAgICAg
ICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UobV9yZW1vdGVJT1VuaXQpOworICAgICAg
ICAgICAgbV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgbV9p
bnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9
IG51bGxwdHI7CisKKyAgICAgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGlucHV0RGVzY3Jp
cHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CisgICAgICAg
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBvdXRwdXREZXNjcmlwdGlvbjsKKworICAgICAgICBh
dXRvIHJlbW90ZUlPVW5pdCA9IGNyZWF0ZUF1ZGlvVW5pdChvdXRwdXREZXNjcmlwdGlvbik7Cisg
ICAgICAgIGlmICghcmVtb3RlSU9Vbml0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
PihpbnB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VV
bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CisKKyAg
ICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoZGVzY3Jp
cHRpb24uc2FtcGxlUmF0ZSgpICogMiwgKnRoaXMpOworCisgICAgICAgIGlmIChtX2RhdGFTb3Vy
Y2UtPnNldElucHV0Rm9ybWF0KGlucHV0RGVzY3JpcHRpb24pIHx8IG1fZGF0YVNvdXJjZS0+c2V0
T3V0cHV0Rm9ybWF0KG91dHB1dERlc2NyaXB0aW9uKSkgeworICAgICAgICAgICAgQXVkaW9Db21w
b25lbnRJbnN0YW5jZURpc3Bvc2UocmVtb3RlSU9Vbml0KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9PdXRwdXRVbml0U3Rh
cnQocmVtb3RlSU9Vbml0KSkgeworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICJBdWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0gIiwgZXJyb3IsICIgKCIsIChj
b25zdCBjaGFyKikmZXJyb3IsICIpIik7CisgICAgICAgICAgICBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlRGlzcG9zZShyZW1vdGVJT1VuaXQpOworICAgICAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9u
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1f
aXNBdWRpb1VuaXRTdGFydGVkID0gdHJ1ZTsKKworICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFZv
bHVtZSh2b2x1bWUoKSk7CisgICAgICAgIG1fcmVtb3RlSU9Vbml0ID0gcmVtb3RlSU9Vbml0Owor
ICAgIH0KKworICAgIG1fZGF0YVNvdXJjZS0+cHVzaFNhbXBsZXMoc2FtcGxlVGltZSwgYXVkaW9E
YXRhLCBzYW1wbGVDb3VudCk7CisKKyAgICBpZiAoIW1faXNBdWRpb1VuaXRTdGFydGVkKSB7Cisg
ICAgICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9yZW1vdGVJT1Vu
aXQpKSB7CisgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlvT3V0cHV0
VW5pdFN0YXJ0IGZhaWxlZCwgZXJyb3IgPSAiLCBlcnJvciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZl
cnJvciwgIikiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2lz
QXVkaW9Vbml0U3RhcnRlZCA9IHRydWU7CisgICAgfQorfQorCitPU1N0YXR1cyBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpyZW5kZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRp
b0J1ZmZlckxpc3QmIGlvRGF0YSwgVUludDMyIC8qaW5CdXNOdW1iZXIqLywgY29uc3QgQXVkaW9U
aW1lU3RhbXAmIHRpbWVTdGFtcCwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmIGFjdGlvbkZs
YWdzKQoreworICAgIGlmIChpc011dGVkKCkgfHwgbV9wYXVzZWQgfHwgIW1fZGF0YVNvdXJjZSkg
eworICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoaW9EYXRhLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50ICogbV9vdXRwdXREZXNjcmlwdGlvbi0+Ynl0ZXNQZXJG
cmFtZSgpKSk7CisgICAgICAgIGFjdGlvbkZsYWdzID0ga0F1ZGlvVW5pdFJlbmRlckFjdGlvbl9P
dXRwdXRJc1NpbGVuY2U7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fZGF0YVNv
dXJjZS0+cHVsbFNhbXBsZXMoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50
KSwgdGltZVN0YW1wLm1TYW1wbGVUaW1lLCB0aW1lU3RhbXAubUhvc3RUaW1lLCBBdWRpb1NhbXBs
ZURhdGFTb3VyY2U6OkNvcHkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK09TU3RhdHVzIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwg
QXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqIGFjdGlvbkZsYWdzLCBjb25zdCBBdWRpb1RpbWVT
dGFtcCogdGltZVN0YW1wLCBVSW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBzYW1wbGVDb3VudCwg
QXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EqPih1c2VyRGF0YSktPnJlbmRlcihzYW1wbGVD
b3VudCwgKmlvRGF0YSwgaW5CdXNOdW1iZXIsICp0aW1lU3RhbXAsICphY3Rpb25GbGFncyk7Cit9
CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RS
QUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTllNTQ2MWNiMDI4ZGZjMWRm
ZDJlOTRlM2YzYzZkOGQ4YjVjYWU0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisK
KyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Ub29sYm94Lmg+CisjaW5jbHVkZSA8Q29yZUF1
ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVk
aW9TYW1wbGVEYXRhU291cmNlOworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OworY2xhc3Mg
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworCitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hIDogcHVibGljIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckNvY29hKCk7CisgICAgfkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
Q29jb2EoKTsKKworcHJpdmF0ZToKKyAgICAvLyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
cgorICAgIHZvaWQgcHVzaFNhbXBsZXMoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZp
bmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKKyAg
ICB2b2lkIHNldFBhdXNlZChib29sKSBmaW5hbDsKKworICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1
dFByb2Modm9pZCosIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1l
U3RhbXAqLCBVSW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9C
dWZmZXJMaXN0Kik7CisgICAgT1NTdGF0dXMgcmVuZGVyKFVJbnQzMiBzYW1wbGVDb3VudCwgQXVk
aW9CdWZmZXJMaXN0JiwgVUludDMyIGluQnVzTnVtYmVyLCBjb25zdCBBdWRpb1RpbWVTdGFtcCYs
IEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJik7CisKKyAgICBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlIGNyZWF0ZUF1ZGlvVW5pdChDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mKTsKKworICAgIC8v
IEF1ZGlvIHRocmVhZCBtZW1iZXJzCisgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSBtX3JlbW90
ZUlPVW5pdCB7IG51bGxwdHIgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKKworICAgIC8vIENyb3Nz
IHRocmVhZCBtZW1iZXJzCisgICAgUmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9kYXRh
U291cmNlOworICAgIGJvb2wgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9wYXVzZWQgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVP
X1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzAzODFmYzZjM2E3MzE4MzkwNjVjNDk5ZTRlMmU5YWIzNzI2ZDJkOC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDI4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5o
IgotCi0jaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCi0jaW5jbHVkZSAiQXVkaW9T
YW1wbGVEYXRhU291cmNlLmgiCi0jaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCi0jaW5jbHVkZSAi
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi0jaW5j
bHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jb2Nv
YS9BdWRpb1Rvb2xib3hTUEkuaD4KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2E6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYShNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCi0gICAgOiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtKHRyYWNrKQotewotICAgIHRyYWNrLnNvdXJjZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsK
LX0KLQotQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjp+QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hKCkKLXsKLSAgICBjbGVhcigpOwotfQotCi12b2lkIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6Y2xlYXIoKQotewotICAgIGlmIChtX2lzQ2xlYXJl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc0NsZWFyZWQgPSB0cnVlOwotICAgIHN0cmVh
bVRyYWNrKCkuc291cmNlKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaWYgKG1fZGF0
YVNvdXJjZSkKLSAgICAgICAgbV9kYXRhU291cmNlLT5zZXRQYXVzZWQodHJ1ZSk7Ci0KLSAgICBp
ZiAobV9yZW1vdGVJT1VuaXQpIHsKLSAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90
ZUlPVW5pdCk7Ci0gICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVtb3Rl
SU9Vbml0KTsKLSAgICAgICAgbV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOwotICAgIH0KLQotICAg
IG1fZGF0YVNvdXJjZSA9IG51bGxwdHI7Ci0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0
cjsKLSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLX0KLQotdm9pZCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXlJbnRlcm5hbCgpCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLQotICAgIGlmIChtX2lzUGxheWluZykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9pc1BsYXlpbmcgPSB0cnVlOwotICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKLQot
ICAgIGlmIChtX2RhdGFTb3VyY2UpCi0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0UGF1c2VkKGZh
bHNlKTsKLX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXko
KQotewotICAgIHBsYXlJbnRlcm5hbCgpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYTo6cGF1c2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0K
LSAgICBpZiAoIW1faXNQbGF5aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUGxheWlu
ZyA9IGZhbHNlOwotICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKLQotICAgIGlmIChtX2RhdGFTb3Vy
Y2UpCi0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0UGF1c2VkKHRydWUpOwotfQotCi12b2lkIEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkK
LXsKLSAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKLSAgICBpZiAobV9kYXRhU291cmNlKQotICAgICAg
ICBtX2RhdGFTb3VyY2UtPnNldFZvbHVtZShtX3ZvbHVtZSk7Ci19Ci0KLUF1ZGlvQ29tcG9uZW50
SW5zdGFuY2UgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1Vu
aXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdXRwdXREZXNjcmlwdGlvbikKLXsKLSAgICBB
dWRpb0NvbXBvbmVudEluc3RhbmNlIHJlbW90ZUlPVW5pdCB7IG51bGxwdHIgfTsKLQotICAgIEF1
ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gaW9Vbml0RGVzY3JpcHRpb24geyBrQXVkaW9Vbml0VHlw
ZV9PdXRwdXQsIDAsIGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBwbGUsIDAsIDAgfTsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIGlvVW5pdERlc2NyaXB0aW9uLmNvbXBvbmVudFN1YlR5
cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9SZW1vdGVJTzsKLSNlbHNlCi0gICAgaW9Vbml0RGVzY3Jp
cHRpb24uY29tcG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX0RlZmF1bHRPdXRwdXQ7
Ci0jZW5kaWYKLQotICAgIEF1ZGlvQ29tcG9uZW50IGlvQ29tcG9uZW50ID0gQXVkaW9Db21wb25l
bnRGaW5kTmV4dChudWxscHRyLCAmaW9Vbml0RGVzY3JpcHRpb24pOwotICAgIEFTU0VSVChpb0Nv
bXBvbmVudCk7Ci0gICAgaWYgKCFpb0NvbXBvbmVudCkgewotICAgICAgICBFUlJPUl9MT0coTE9H
SURFTlRJRklFUiwgInVuYWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIpOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBPU1N0YXR1cyBlcnIgPSBBdWRp
b0NvbXBvbmVudEluc3RhbmNlTmV3KGlvQ29tcG9uZW50LCAmcmVtb3RlSU9Vbml0KTsKLSAgICBp
ZiAoZXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIG9w
ZW4gdnBpbyB1bml0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIp
Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgVUludDMyIHBhcmFtID0gMTsKLSAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9w
ZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywga0F1
ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKLSAgICBpZiAo
ZXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGVuYWJs
ZSB2cGlvIHVuaXQgb3V0cHV0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZl
cnIsICIpIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSNlbmRpZgotCi0gICAg
QVVSZW5kZXJDYWxsYmFja1N0cnVjdCBjYWxsYmFjayA9IHsgaW5wdXRQcm9jLCB0aGlzIH07Ci0g
ICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJv
cGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZjYWxs
YmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9M
T0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNwZWFrZXIgcHJvYywg
ZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXRE
ZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpKTsKLSAgICBlcnIgID0gQXVkaW9Vbml0R2V0
UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBr
QXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlw
dGlvbigpLCAmc2l6ZSk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgInVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgPSAiLCBl
cnIsICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0KLSAgICBvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLm1T
YW1wbGVSYXRlID0gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgpOwot
Ci0gICAgZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0
UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXRE
ZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCBzaXplb2Yob3V0cHV0RGVzY3JpcHRpb24u
c3RyZWFtRGVzY3JpcHRpb24oKSkpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgRVJST1JfTE9H
KExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9y
ID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotCi0gICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShyZW1vdGVJ
T1VuaXQpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICJBdWRpb1VuaXRJbml0aWFsaXplKCkgZmFpbGVkLCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNv
bnN0IGNoYXIqKSZlcnIsICIpIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQot
ICAgIHJldHVybiByZW1vdGVJT1VuaXQ7Ci19Ci0KLS8vIE1heSBnZXQgY2FsbGVkIG9uIGEgYmFj
a2dyb3VuZCB0aHJlYWQuCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBBU1NFUlQoZGVzY3Jp
cHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6
Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSk7Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5nKSB7Ci0gICAg
ICAgIGlmIChtX2lzQXVkaW9Vbml0U3RhcnRlZCkgewotICAgICAgICAgICAgaWYgKG1fcmVtb3Rl
SU9Vbml0KQotICAgICAgICAgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1Vu
aXQpOwotICAgICAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBmYWxzZTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2lucHV0RGVzY3JpcHRpb24g
fHwgKm1faW5wdXREZXNjcmlwdGlvbiAhPSBkZXNjcmlwdGlvbikgewotICAgICAgICBtX2lzQXVk
aW9Vbml0U3RhcnRlZCA9IGZhbHNlOwotCi0gICAgICAgIGlmIChtX3JlbW90ZUlPVW5pdCkgewot
ICAgICAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAg
ICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShtX3JlbW90ZUlPVW5pdCk7Ci0gICAg
ICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBt
X2lucHV0RGVzY3JpcHRpb24gPSBudWxscHRyOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9u
ID0gbnVsbHB0cjsKLQotICAgICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gaW5wdXREZXNj
cmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKLSAgICAg
ICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG91dHB1dERlc2NyaXB0aW9uOwotCi0gICAgICAg
IGF1dG8gcmVtb3RlSU9Vbml0ID0gY3JlYXRlQXVkaW9Vbml0KG91dHB1dERlc2NyaXB0aW9uKTsK
LSAgICAgICAgaWYgKCFyZW1vdGVJT1VuaXQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24+KGlucHV0RGVzY3JpcHRpb24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFr
ZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKLQot
ICAgICAgICBtX2RhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShkZXNj
cmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAyLCBzdHJlYW1UcmFjaygpKTsKLQotICAgICAgICBpZiAo
bV9kYXRhU291cmNlLT5zZXRJbnB1dEZvcm1hdChpbnB1dERlc2NyaXB0aW9uKSB8fCBtX2RhdGFT
b3VyY2UtPnNldE91dHB1dEZvcm1hdChvdXRwdXREZXNjcmlwdGlvbikpIHsKLSAgICAgICAgICAg
IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKHJlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0
cHV0VW5pdFN0YXJ0KHJlbW90ZUlPVW5pdCkpIHsKLSAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJ
REVOVElGSUVSLCAiQXVkaW9PdXRwdXRVbml0U3RhcnQgZmFpbGVkLCBlcnJvciA9ICIsIGVycm9y
LCAiICgiLCAoY29uc3QgY2hhciopJmVycm9yLCAiKSIpOwotICAgICAgICAgICAgQXVkaW9Db21w
b25lbnRJbnN0YW5jZURpc3Bvc2UocmVtb3RlSU9Vbml0KTsKLSAgICAgICAgICAgIG1faW5wdXRE
ZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9IHRydWU7Ci0KLSAgICAgICAgbV9kYXRhU291
cmNlLT5zZXRWb2x1bWUobV92b2x1bWUpOwotICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IHJlbW90
ZUlPVW5pdDsKLSAgICB9Ci0KLSAgICBtX2RhdGFTb3VyY2UtPnB1c2hTYW1wbGVzKHNhbXBsZVRp
bWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOwotCi0gICAgaWYgKG1fYXV0b1BsYXkgJiYgIW1f
aGFzU3RhcnRlZEF1dG9wbGF5KSB7Ci0gICAgICAgIG1faGFzU3RhcnRlZEF1dG9wbGF5ID0gdHJ1
ZTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7Ci0gICAgICAgICAgICBpZiAobV9hdXRvUGxheSkKLSAgICAgICAgICAgICAg
ICBwbGF5SW50ZXJuYWwoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2lzQXVk
aW9Vbml0U3RhcnRlZCkgewotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0cHV0VW5p
dFN0YXJ0KG1fcmVtb3RlSU9Vbml0KSkgewotICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5U
SUZJRVIsICJBdWRpb091dHB1dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0gIiwgZXJyb3IsICIg
KCIsIChjb25zdCBjaGFyKikmZXJyb3IsICIpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOwotICAgIH0KLX0KLQot
dm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNvdXJjZVN0b3BwZWQoKQot
ewotICAgIHBhdXNlKCk7Ci19Ci0KLU9TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYTo6cmVuZGVyKFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiBpb0Rh
dGEsIFVJbnQzMiAvKmluQnVzTnVtYmVyKi8sIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiB0aW1lU3Rh
bXAsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzJiBhY3Rpb25GbGFncykKLXsKLSAgICAvLyBU
aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBhIGhpZ2gtcHJpb3JpdHkgYmFja2dyb3VuZCB0aHJl
YWQuIFRoZSBmb2xsb3dpbmcgcHJvdGVjdGVkVGhpcyBvYmplY3QgZW5zdXJlcyB0aGUgb2JqZWN0
IGlzIG5vdAotICAgIC8vIGRlc3Ryb3llZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIHRoaXMg
ZnVuY3Rpb24gZXhpdHMuCi0gICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YT4gcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5nIHx8IG1f
bXV0ZWQgfHwgIW1fZGF0YVNvdXJjZSB8fCBzdHJlYW1UcmFjaygpLm11dGVkKCkgfHwgc3RyZWFt
VHJhY2soKS5lbmRlZCgpIHx8ICFzdHJlYW1UcmFjaygpLmVuYWJsZWQoKSkgewotICAgICAgICBB
dWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KHNhbXBsZUNvdW50ICogbV9vdXRwdXREZXNjcmlwdGlvbi0+Ynl0ZXNQZXJGcmFtZSgpKSk7Ci0g
ICAgICAgIGFjdGlvbkZsYWdzID0ga0F1ZGlvVW5pdFJlbmRlckFjdGlvbl9PdXRwdXRJc1NpbGVu
Y2U7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIG1fZGF0YVNvdXJjZS0+cHVsbFNh
bXBsZXMoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50KSwgdGltZVN0YW1w
Lm1TYW1wbGVUaW1lLCB0aW1lU3RhbXAubUhvc3RUaW1lLCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6
OkNvcHkpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLU9TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6aW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5k
ZXJBY3Rpb25GbGFncyogYWN0aW9uRmxhZ3MsIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lU3Rh
bXAsIFVJbnQzMiBpbkJ1c051bWJlciwgVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxp
c3QqIGlvRGF0YSkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hKj4odXNlckRhdGEpLT5yZW5kZXIoc2FtcGxlQ291bnQsICppb0RhdGEs
IGluQnVzTnVtYmVyLCAqdGltZVN0YW1wLCAqYWN0aW9uRmxhZ3MpOwotfQotCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxNDU0ZWMxYmE4MTdm
YmRiNjRiMzA2MGM5ZjgzNTc3Yjg1OTNkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
MDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFZJREVP
X1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb1Rvb2xib3gu
aD4KLSNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2U7Ci1jbGFzcyBBdWRpb1NhbXBs
ZUJ1ZmZlckxpc3Q7Ci1jbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247Ci0KLWNsYXNzIEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVy
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Q29jb2EpCi1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2E+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFtVHJhY2sp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2Eoc3RyZWFtVHJhY2spKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCk7
Ci0KLSAgICB2b2lkIHBsYXkoKTsKLSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgYm9vbCBpc1BsYXlp
bmcoKSB7IHJldHVybiBtX2lzUGxheWluZzsgfQotCi0gICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQp
OwotICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9Ci0KLSAgICB2
b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQpIHsgbV9tdXRlZCA9IG11dGVkOyB9Ci0gICAgYm9vbCBt
dXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KLQotcHJpdmF0ZToKLSAgICBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKLSAg
ICB+QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKCk7Ci0KLSAgICAvLyBSZWFsdGlt
ZU1lZGlhU291cmNlOjpPYnNlcnZlcgotICAgIHZvaWQgc291cmNlU3RvcHBlZCgpIGZpbmFsOwot
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
ZmluYWw7Ci0KLSAgICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBBdWRpb1VuaXRS
ZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGluQnVzTnVt
YmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCopOwotICAgIE9TU3Rh
dHVzIHJlbmRlcihVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIFVJbnQzMiBp
bkJ1c051bWJlciwgY29uc3QgQXVkaW9UaW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25G
bGFncyYpOwotCi0gICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSBjcmVhdGVBdWRpb1VuaXQoQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJik7Ci0gICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgdm9pZCB6
ZXJvQnVmZmVyTGlzdChBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3QpOwotICAgIHZvaWQgcGxheUlu
dGVybmFsKCk7Ci0KLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hIjsgfQotI2VuZGlmCi0KLSAgICAvLyBBdWRpbyB0aHJlYWQgbWVtYmVycwot
ICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgbV9yZW1vdGVJT1VuaXQgeyBudWxscHRyIH07Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2Ny
aXB0aW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1f
b3V0cHV0RGVzY3JpcHRpb247Ci0gICAgYm9vbCBtX2lzQXVkaW9Vbml0U3RhcnRlZCB7IGZhbHNl
IH07Ci0gICAgYm9vbCBtX2hhc1N0YXJ0ZWRBdXRvcGxheSB7IGZhbHNlIH07Ci0KLSAgICAvLyBD
cm9zcyB0aHJlYWQgbWVtYmVycwotICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1f
ZGF0YVNvdXJjZTsKLQotICAgIC8vIE1haW4gdGhyZWFkIHdyaXRhYmxlIG1lbWJlcnMKLSAgICBm
bG9hdCBtX3ZvbHVtZSB7IDEgfTsKLSAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1fYXV0b1BsYXkgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2lzQ2xlYXJlZCB7IGZhbHNlIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387529</attachid>
            <date>2020-01-13 08:11:29 -0800</date>
            <delta_ts>2020-01-13 12:21:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206172-20200113171127.patch</filename>
            <type>text/plain</type>
            <size>65860</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhNjVjNjY5MWY0ZmQw
ZDAzOGE0MzYzMDU3NzMxMjllZDdmNGFlNC4uOGYwNTViOWQ1NmU0MmI4MzhjMTFjNzZkY2U4Mjhm
MzUxNWZmZWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTAxLTEzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgdG8gaW1wbGVtZW50IHJlbW90ZSBhdWRpbyByZW5kZXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjE3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yIGNvZGUgdG8gYWxsb3cgaW4gdGhlIGZ1dHVyZSByZW5kZXJpbmcgb2YgbWVkaWEgc3RyZWFt
IGF1ZGlvIHRyYWNrcyBpbiBhIHJlbW90ZSBwcm9jZXNzLgorICAgICAgICBGb3IgdGhhdCBwdXJw
b3NlLCBzcGxpdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZnVuY3Rpb25hbGl0
eSBpbiB0d28gcGFydHMuCisgICAgICAgIFRoZSBmaXJzdCBwYXJ0IGlzIG1vdmVkIGJhY2sgdG8g
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS4KKyAgICAgICAgVGhlIHNlY29uZCBwYXJ0IGlz
IHBsYXRmb3JtIHNwZWNpZmljIGFuZCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIGFuIGludGVyZmFj
ZSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgICAgICBhbmQgYW4gaW4gcHJvY2Vz
cyBpbXBsZW1lbnRhdGlvbiBuYW1lZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
LgorCisgICAgICAgIE1ha2UgVHJhY2tQcml2YXRlQmFzZSBhbmQgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgcHVibGljIExvZ2dlckhlbHBlci4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFraW5nIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIGFuZCBBdWRpb1NhbXBsZURhdGFTb3VyY2UgdG8g
dGFrZSBhIExvZ2dlckhlbHBlciBpbnN0ZWFkIG9mIGEgZGVyaXZlZCBpbnN0YW5jZS4KKworICAg
ICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6QXVkaW9TYW1w
bGVEYXRhU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp1cGRhdGVUcmFja3MpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldE11dGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRWb2x1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnZvbHVtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6aXNNdXRl
ZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0TG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6fkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbTo6cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW06OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OnZvbHVtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6
dHJhY2tFbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtOjp1cGRhdGVSZW5kZXJlck11dGVkU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tFbmRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0UGF1c2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0ZUF1ZGlvVW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpwdXNoU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6aW5wdXRQcm9jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmg6IFJlbW92ZWQuCisKIDIwMjAtMDEtMTIgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0LWluZGVudCB3aXRoIHBlcmNlbnRhZ2UgdmFs
dWUgc2hvdWxkIHJlc29sdmUgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIHdpZHRoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDQxMTIxNTU3YWU2ZjM1ZGI5YWQ1ZjRjMWU4YWNjY2EwODY2M2U2ZmIuLmQ4NWIxNzlh
ZGM3MTI0N2JiYmU4NjM5M2EyYzAzNWVhZTBhYjNiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTcw
LDYgKzE5NzAsOCBAQCBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNhcGFiaWxpdGll
c0xvZ2dpbmcuY3BwCiAKIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcAogCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW0uY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAK
IHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IGU0NTNkODkwOTdlNjg2YjJjMzM1MmJhZDY2ZWU3MTIzNDdjMTY2YjUuLmU2Zjgx
N2E3ODE2ZDZhNGJjYzIwMTNhNTc5NDQ0NDc2N2FlNzA4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtNDg5LDcgKzQ4OSw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0KIHBsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0gQG5vLXVuaWZ5CiAKLXBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3Bw
CitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJD
b2NvYS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOWJiODQzMTQ1MzlhZDA5NTE0NjMxYjIxMzA2MTZhZjYwYmE5
YTFjMy4uZTA1NTM2ZjczY2IwYWU2NGZlNTJhMjEwNmJkNmY5NjVhMjc5M2UwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAw
MCw3ICsxMDAwLDYgQEAKIAkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzJDMDBE
ODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzJEM0U1NDIxNjU3OEFFMDBDNUUwMjEgLyog
RGF0YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QTAwNzgyMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oICovOyB9
OwogCQkzNzJEM0U1NTIxNjU3OEFFMDBDNUUwMjEgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQx
NDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07Ci0JCTM3MkQzRTU2MjE2
NTc4QUUwMEM1RTAyMSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM2MUU0MjUx
MkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLzsgfTsK
IAkJMzcyRDNFNTcyMTY1NzhBRTAwQzVFMDIxIC8qIE5hdmlnYXRvckNyZWRlbnRpYWxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Q4NDYyNjFGRTg5
NUY4MDBDQTM2ODIgLyogTmF2aWdhdG9yQ3JlZGVudGlhbHMuaCAqLzsgfTsKIAkJMzc1Q0QyMzIx
MTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVu
YXRpb24uaCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0
UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MDg2LDYgKzEwODUsNyBAQAogCQk0MTYxRTJENTFGRTQ4REM1MDBFQzJFOTYgLyogRmV0Y2hMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDdF
MkI1MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAv
KiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmggKi87IH07CiAJCTQxNjJBNDU4MTAxMTQ2NDcwMERGRjNFRCAv
KiBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oICovOyB9OworCQk0MTZBMDZBMTIzQ0NBRDAzMDAzNDcx
MDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkEwNjk2MjNDQ0FBOUYwMDM0NzEwOSAvKiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkQ3NUEyMjBDNjUxQTUwMEQwMkQyQyAvKiBOZXR3
b3JrTG9hZEluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxNkUwQjNBMjA5QkMzQ0IwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkUwQjM3MjA5QkMzQzIwMDRB
OTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVw
b3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICov
OyB9OwpAQCAtNTQ3Miw3ICs1NDcyLDYgQEAKIAkJMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8q
IFRleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Njk3MDg1
MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc2RTExQkUxRjY4M0UwRDAwMTc3Mzk1IC8qIFRyYWNrUHJpdmF0ZUJhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhY2tQcml2YXRlQmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NkVDMTMyMUU0NEYyQ0IwMEU1RDgxMyAvKiBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTU1NTIsNyArNTU1MSw2IEBACiAJCTA3QjcxMTZDMUQ4OTlFNjMwMDlGMEZGQiAvKiBD
YXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0I5
M0ZGOTIzQjkyQUFBMDAzNkY4RUEgLyogTUlNRVR5cGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
SU1FVHlwZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjkzRkZCMjNC
OTJBQUIwMDM2RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1J
TUVUeXBlQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwN0MwNDZDNjFF
NDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFMDFCRkI2MDAx
MDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFMTFCRkI2MDAxMDBCRDIyNTYgLyog
TWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzM4OCw2ICs3Mzg2LDExIEBACiAJCTQxNjJBNDRGMTAxMTQ1QUUw
MERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZBMDY5MjIz
Q0NBQTkzMDAzNDcxMDkgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNkEwNjkzMjNDQ0FB
OTQwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZBMDY5NDIz
Q0NBQTlFMDAzNDcxMDkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2QTA2OTUyM0NDQUE5RTAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2QTA2OTYyM0NDQUE5RjAwMzQ3MTA5
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxNkNFNEE0MjI5REYxMkUwMEE4QTY4NiAvKiBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RDc1
OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYxNjEsNiArMTYxNjQsOSBA
QAogCQkJCUNEQzY3NTFGMUVBRUE5OTYwMDcyN0M4NCAvKiBpb3MgKi8sCiAJCQkJNDE1NzQ3NDIx
RTM4Njk4MDAwRTkxNEQ4IC8qIGxpYndlYnJ0YyAqLywKIAkJCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0
RjFENjAgLyogbWFjICovLAorCQkJCTQxNkEwNjk1MjNDQ0FBOUUwMDM0NzEwOSAvKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAgKi8sCisJCQkJNDE2QTA2OTYyM0NDQUE5RjAwMzQ3
MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggKi8sCisJCQkJNDE2QTA2OTQy
M0NDQUE5RTAwMzQ3MTA5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwICovLAog
CQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmggKi8sCiAJCQkJMDdCNzExNkExRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2Uu
aCAqLywKIAkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwICovLApAQCAtMTYyMzQsOCArMTYyNDAsOCBAQAogCQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0
RjFENjAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQkwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmNwcCAqLywKLQkJCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8sCisJCQkJNDE2QTA2OTMyM0NDQUE5NDAw
MzQ3MTA5IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwICovLAorCQkJ
CTQxNkEwNjkyMjNDQ0FBOTMwMDM0NzEwOSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckNvY29hLmggKi8sCiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaCAqLywKIAkJCQkwNzAzNjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0
dXJlRGV2aWNlTWFuYWdlci5tbSAqLywKIAkJCQkwNzAzNjNERTE4MUExQ0RDMDBDMDc0QTUgLyog
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLywKQEAgLTI5MDg0LDYgKzI5MDkwLDcgQEAKIAkJCQlD
RDJGNEEyODE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGREUyRDU1QjE1OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxi
YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxMDEyQjAyNjc2MDBDMUEzNTkgLyogQXVk
aW9MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2QTA2QTEyM0NDQUQwMzAwMzQ3MTA5
IC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjAxMzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDMxNjAxNjEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Ob2RlSW5wdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDE4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb05vZGVPdXRwdXQuaCBp
biBIZWFkZXJzICovLApAQCAtMjkxMTAsNyArMjkxMTcsNiBAQAogCQkJCUNERTNBODU4MTdGNjAy
MDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNENTRBNzYzMTgwRjlGNzAwMEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdENkE0RjgxQkYyMzA3RDAwMTc0MTQ2
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTM3
MkQzRTU2MjE2NTc4QUUwMEM1RTAyMSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDhCMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NjExMkQyNkUzODAwRTc5NDE1
IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRGNzEz
QTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaAppbmRleCBhYTU2OGMyZjQ2MTFmN2M2YjkxM2RjZGYw
ZDgzMzU0NDU0NDJkM2VlLi4zMjZjOWJjMmE5YThjZTA2NTQzNjM3NTBkZmIzZmJmNTBlYzU4ZmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1w
bGVEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCkBAIC00Miw3ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogY2xhc3MgQ0FSaW5nQnVmZmVy
OwotY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiAKIGNsYXNzIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb1NhbXBsZURhdGFTb3Vy
Y2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPgogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApAQCAtNTAsNyArNDksNyBAQCBjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9TYW1wbGVEYXRhU291cmNlLAogI2Vu
ZGlmCiAgICAgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNl
PiBjcmVhdGUoc2l6ZV90LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBS
ZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBjcmVhdGUoc2l6ZV90LCBXVEY6OkxvZ2dlckhlbHBl
ciYpOwogCiAgICAgfkF1ZGlvU2FtcGxlRGF0YVNvdXJjZSgpOwogCkBAIC04MSw3ICs4MCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShz
aXplX3QsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisgICAgQXVkaW9TYW1wbGVEYXRhU291
cmNlKHNpemVfdCwgTG9nZ2VySGVscGVyJik7CiAKICAgICBPU1N0YXR1cyBzZXR1cENvbnZlcnRl
cigpOwogICAgIGJvb2wgcHVsbFNhbXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmLCBzaXpl
X3QmLCB1aW50NjRfdCwgZG91YmxlLCBQdWxsTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRl
eCA0MWFmZTM5ZjIzMmFlNTg4MDg2MGYwODRkNTU2Y2I0YTVkOGFlMjVhLi5hZGQ2ZDYwMGM3Y2Q2
YWI2OGRjNGMwNjg1NWM0NTI2MTU2MjUxYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTQ2
LDE5ICs0NiwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVkaW9T
YW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrKQorUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9n
Z2VySGVscGVyJiBsb2dnZXJIZWxwZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9TYW1wbGVEYXRhU291cmNlKG1heGltdW1TYW1wbGVDb3VudCwgdHJhY2spKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1NhbXBsZURhdGFTb3VyY2UobWF4aW11bVNhbXBsZUNvdW50
LCBsb2dnZXJIZWxwZXIpKTsKIH0KIAotQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBs
ZURhdGFTb3VyY2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmIHRyYWNrKQorQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBsZURhdGFTb3Vy
Y2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCwgTG9nZ2VySGVscGVyJiBsb2dnZXJIZWxwZXIp
CiAgICAgOiBtX2lucHV0U2FtcGxlT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAg
ICAsIG1fbWF4aW11bVNhbXBsZUNvdW50KG1heGltdW1TYW1wbGVDb3VudCkKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICAsIG1fbG9nZ2VyKHRyYWNrLmxvZ2dlcigpKQotICAgICwgbV9s
b2dJZGVudGlmaWVyKHRyYWNrLmxvZ0lkZW50aWZpZXIoKSkKKyAgICAsIG1fbG9nZ2VyKGxvZ2dl
ckhlbHBlci5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihsb2dnZXJIZWxwZXIubG9n
SWRlbnRpZmllcigpKQogI2VuZGlmCiB7CisjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBV
TlVTRURfUEFSQU0obG9nZ2VySGVscGVyKTsKKyNlbmRpZgogfQogCiBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6On5BdWRpb1NhbXBsZURhdGFTb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCmluZGV4IGVkNzk5M2Q4YWRhNDY1
YWRmMzg2Mjg0ODVjNDc3MTNmMTRjNjJiZmQuLjBlZmJmMzNiYzgyOTJhMzhlZTBiYTYxZGM4ZWE1
MTQ0OTJkNDdjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RyYWNrUHJpdmF0ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UcmFja1ByaXZhdGVCYXNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogY2xhc3MgVHJh
Y2tQcml2YXRlQmFzZQogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYWNrUHJp
dmF0ZUJhc2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dl
ckhlbHBlcgogI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tQcml2YXRl
QmFzZSk7CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lk
Kik7CisgICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lk
Kik7CiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xv
Z2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaAppbmRleCBiYzVmMzkxYjY1MjBiMDMxYjZlNmM4NTU1ZGE5YzNlMjIwMzk0MDkxLi4yZmQz
ZTczMWVlYTZlMzYzNGNjODdkMzFjNDM3ZjhjN2MwNjJmYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBDbG9jazsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E7CitjbGFzcyBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOwogY2xhc3MgQVZWaWRlb0NhcHR1cmVTb3VyY2U7
CiBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBDdXJyZW50
RnJhbWVQYWludGVyIG1faW1hZ2VQYWludGVyOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E+PiBtX2F1ZGlvVHJhY2tNYXA7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4g
bV9hdWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKICAgICBQZW5kaW5nU2FtcGxlUXVl
dWUgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CmluZGV4IDZjNWY1MGI0ZGEwMGQyMTAyYmFkZTM3OTRmOWRkZDBiZDQxOTI2NjMuLmM1ZWQwYTYz
YmJlOWZmZmQ3ZTYyMWE3Y2Q0MzNkODIxZmRmZDE1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVT
RShBVkZPVU5EQVRJT04pCiAKLSNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYS5oIgorI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1l
ZGlhU3RyZWFtUHJpdmF0ZS5oIgpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygpCiB7CiAgICAgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGVWZWN0b3IgY3VycmVudFRyYWNrcyA9IG1fbWVkaWFTdHJlYW1Qcml2
YXRlLT50cmFja3MoKTsKIAotICAgIGF1dG8gc2V0QXVkaW9UcmFja1N0YXRlID0gW3RoaXNdKEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSYgdHJhY2ssIGludCBpbmRleCwgVHJhY2tT
dGF0ZSBzdGF0ZSkKKyAgICBhdXRvIHNldEF1ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtJiB0cmFjaywgaW50IGluZGV4LCBUcmFja1N0YXRlIHN0YXRl
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgICAgICBjYXNlIFRyYWNrU3Rh
dGU6OlJlbW92ZToKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9OwotICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBjdXJyZW50VHJhY2tzLCAmQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGUsIFdURk1vdmUoc2V0QXVkaW9UcmFj
a1N0YXRlKSk7CisgICAgdXBkYXRlVHJhY2tzT2ZUeXBlKG1fYXVkaW9UcmFja01hcCwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIGN1cnJlbnRUcmFja3MsICZBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtOjpjcmVhdGUsIFdURk1vdmUoc2V0QXVkaW9UcmFja1N0YXRlKSk7CiAK
ICAgICBhdXRvIHNldFZpZGVvVHJhY2tTdGF0ZSA9IFt0aGlzXShWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtJiB0cmFjaywgaW50IGluZGV4LCBUcmFja1N0YXRlIHN0YXRlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTE2NDlh
MGE4ZDVmZTdkMzRiMTkxYzZmODkxYWY0MDI5ZTZiNDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaCIK
KyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1lZGlhVGltZTsKK30KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6UmVuZGVyZXJD
cmVhdG9yIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjptX3JlbmRlcmVyQ3JlYXRvciA9
IG51bGxwdHI7Cit2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpzZXRDcmVhdG9y
KFJlbmRlcmVyQ3JlYXRvciBjcmVhdG9yKQoreworICAgIG1fcmVuZGVyZXJDcmVhdG9yID0gY3Jl
YXRvcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
PiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6Y3JlYXRlKCkKK3sKKyAgICBpZiAobV9y
ZW5kZXJlckNyZWF0b3IpCisgICAgICAgIHJldHVybiBtX3JlbmRlcmVyQ3JlYXRvcigpOworCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYT4oKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5k
aWYKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAordm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lk
KiBpZGVudGlmaWVyKQoreworICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKKyAgICBtX2xvZ0lkZW50
aWZpZXIgPSBpZGVudGlmaWVyOworfQorCitXVEZMb2dDaGFubmVsJiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ01lZGlh
OworfQorI2VuZGlmCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgwMGE5MzBjODQ1NWQxYTMzNmI4MGUwNWQ4NmM4Zjk5NjY3ZmNiNzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisKK25hbWVzcGFjZSBXVEYg
eworY2xhc3MgTWVkaWFUaW1lOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb247CitjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKKworY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgOiBwdWJsaWMgTG9n
Z2VySGVscGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyPiBjcmVh
dGUoKTsKKyAgICB2aXJ0dWFsIH5BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcigpID0gZGVm
YXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRQYXVzZWQoYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0gMDsKKyAgICAv
LyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgdmlydHVhbCB2b2lk
IHB1c2hTYW1wbGVzKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShm
bG9hdCk7CisgICAgZmxvYXQgdm9sdW1lKCkgY29uc3Q7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7Cisj
ZW5kaWYKKworICAgIHVzaW5nIFJlbmRlcmVyQ3JlYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gKCopKCk7CisgICAgc3RhdGljIHZvaWQgc2V0Q3Jl
YXRvcihSZW5kZXJlckNyZWF0b3IpOworCitwcm90ZWN0ZWQ6CisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbDsKKyAgICBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbDsKKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVs
KCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0OworCitw
cml2YXRlOgorICAgIHN0YXRpYyBSZW5kZXJlckNyZWF0b3IgbV9yZW5kZXJlckNyZWF0b3I7CisK
KyAgICAvLyBNYWluIHRocmVhZCB3cml0YWJsZSBtZW1iZXJzCisgICAgYm9vbCBtX211dGVkIHsg
ZmFsc2UgfTsKKyAgICBmbG9hdCBtX3ZvbHVtZSB7IDEgfTsKKworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZv
aWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorfTsKKworaW5saW5lIHZvaWQgQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldE11dGVkKGJvb2wgdmFsdWUpCit7CisgICAgbV9tdXRl
ZCA9IHZhbHVlOworfQorCitpbmxpbmUgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
cjo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3sKKyAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKK30K
KworaW5saW5lIGZsb2F0IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjp2b2x1bWUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3ZvbHVtZTsKK30KKworCitpbmxpbmUgYm9vbCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6aXNNdXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bXV0ZWQ7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK2lubGluZSBjb25zdCBMb2dn
ZXImIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpsb2dnZXIoKSBjb25zdAoreworICAg
IHJldHVybiAqbV9sb2dnZXI7CisgICAgCit9CisKK2lubGluZSBjb25zdCB2b2lkKiBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bG9nSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fbG9nSWRlbnRpZmllcjsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIEF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyOjpsb2dDbGFzc05hbWUoKSBjb25zdAoreworICAgIHJldHVybiAi
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIiOworfQorI2VuZGlmCisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdkOWU2OWQxNWYwNjQy
MWFiZjk0ZDQ0OGM4ZTg4OWQ0ODYwMzVmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3Bw
CkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6QXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2spCisgICAg
OiBtX3N0cmVhbVRyYWNrKHRyYWNrKQorICAgICwgbV9pZCh0cmFjay5pZCgpKQorICAgICwgbV9s
YWJlbCh0cmFjay5sYWJlbCgpKQorICAgICwgbV90aW1lbGluZU9mZnNldChNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkpCisgICAgLCBtX3JlbmRlcmVyIHsgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXI6OmNyZWF0ZSgpIH0KK3sKKyAgICB0cmFjay5hZGRPYnNlcnZlcigqdGhpcyk7Cit9CisK
K0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06On5BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtKCkKK3sKKyAgICBjbGVhcigpOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECit2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnNldExvZ2dlcihjb25zdCBMb2dnZXIm
IGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikKK3sKKyAgICBUcmFja1ByaXZhdGVCYXNl
OjpzZXRMb2dnZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKKyAgICBtX3JlbmRlcmVyLT5zZXRMb2dn
ZXIobG9nZ2VyLCBpZGVudGlmaWVyKTsKK30KKyNlbmRpZgorCit2b2lkIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW06OmNsZWFyKCkKK3sKKyAgICBpZiAobV9pc0NsZWFyZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1faXNDbGVhcmVkID0gdHJ1ZTsKKyAgICBzdHJlYW1UcmFjaygpLnJl
bW92ZU9ic2VydmVyKCp0aGlzKTsKKworICAgIG1fcmVuZGVyZXItPmNsZWFyKCk7Cit9CisKK3Zv
aWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6cGxheUludGVybmFsKCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1faXNQbGF5aW5nKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2lzUGxheWluZyA9IHRydWU7CisgICAgbV9hdXRvUGxheSA9IGZhbHNl
OworCisgICAgbV9yZW5kZXJlci0+c2V0UGF1c2VkKGZhbHNlKTsKK30KKwordm9pZCBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpwbGF5KCkKK3sKKyAgICBwbGF5SW50ZXJuYWwoKTsKK30K
Kwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpwYXVzZSgpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbV9pc1BsYXlpbmcpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAgbV9hdXRvUGxheSA9IGZhbHNl
OworCisgICAgbV9yZW5kZXJlci0+c2V0UGF1c2VkKHRydWUpOworfQorCit2b2lkIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW06OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit7CisgICAgbV9y
ZW5kZXJlci0+c2V0Vm9sdW1lKHZvbHVtZSk7Cit9CisKK2Zsb2F0IEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW06OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnZv
bHVtZSgpOworfQorCisvLyBNYXkgZ2V0IGNhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgor
dm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjphdWRpb1NhbXBsZXNBdmFpbGFibGUo
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNv
bnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgaWYgKCFtX2lz
UGxheWluZykgeworICAgICAgICBtX3JlbmRlcmVyLT5zdG9wKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX3JlbmRlcmVyLT5wdXNoU2FtcGxlcyhzYW1wbGVUaW1lLCBhdWRpb0Rh
dGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CisKKyAgICBpZiAobV9hdXRvUGxheSAmJiAh
bV9oYXNTdGFydGVkQXV0b3BsYXkpIHsKKyAgICAgICAgbV9oYXNTdGFydGVkQXV0b3BsYXkgPSB0
cnVlOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgIGlmIChtX2F1dG9QbGF5KQorICAgICAgICAgICAg
ICAgIHBsYXlJbnRlcm5hbCgpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6dHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmKQoreworICAgIHVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgpOworfQorCit2b2lk
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmKQoreworICAgIHVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgpOwor
fQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06OnVwZGF0ZVJlbmRlcmVyTXV0
ZWRTdGF0ZSgpCit7CisgICAgbV9yZW5kZXJlci0+c2V0TXV0ZWQobV9pc1BsYXlpbmcgJiYgIXN0
cmVhbVRyYWNrKCkubXV0ZWQoKSAmJiAhc3RyZWFtVHJhY2soKS5lbmRlZCgpICYmIHN0cmVhbVRy
YWNrKCkuZW5hYmxlZCgpKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Ojp0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKK3sKKyAgICBwYXVzZSgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJB
Q0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtLmgKaW5kZXggZGNkM2FlYzI1NDlmMzZlZDNlYWM4MWIzZTA0OWQ2NDI0OWY4YjhmYi4uZjMy
NWM2ZGQ2OWNmODJjYTE4MDVhZDE1MWQxNzQ2ZGI2ZDE2ZDc2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0uaApAQCAtMzIsMTkgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSA6IHB1YmxpYyBBdWRp
b1RyYWNrUHJpdmF0ZSB7CitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjsKKwor
Y2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBBdWRpb1Ry
YWNrUHJpdmF0ZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pCiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiBj
cmVhdGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHN0cmVhbVRyYWNrKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbShzdHJl
YW1UcmFjaykpOwogICAgIH0KLQotICAgIEtpbmQga2luZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEtpbmQ6Ok1haW47IH0KLSAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9pZDsgfQotICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2xhYmVsOyB9Ci0gICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGVtcHR5QXRvbSgpOyB9Ci0gICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2luZGV4OyB9CisgICAgfkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0oKTsKIAogICAgIHZvaWQgc2V0VHJhY2tJbmRleChpbnQgaW5kZXgpIHsgbV9pbmRleCA9IGlu
ZGV4OyB9CiAKQEAgLTUzLDIwICs1MCw1NyBAQCBwdWJsaWM6CiAgICAgTWVkaWFUaW1lIHRpbWVs
aW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZU9mZnNldDsgfQogICAgIHZvaWQg
c2V0VGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQpIHsgbV90aW1lbGluZU9m
ZnNldCA9IG9mZnNldDsgfQogCisgICAgdm9pZCBjbGVhcigpOworCisgICAgdm9pZCBwbGF5KCk7
CisgICAgdm9pZCBwYXVzZSgpOworICAgIGJvb2wgaXNQbGF5aW5nKCkgeyByZXR1cm4gbV9pc1Bs
YXlpbmc7IH0KKworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICBmbG9hdCB2b2x1bWUo
KSBjb25zdDsKKworICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCBtdXRlZCkgeyBtX211dGVkID0gbXV0
ZWQ7IH0KKyAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwg
Y29uc3Qgdm9pZCopIGZpbmFsOworICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtIjsgfQorI2VuZGlm
CisKIHByb3RlY3RlZDoKLSAgICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlJiB0cmFjaykKLSAgICAgICAgOiBtX3N0cmVhbVRyYWNrKHRyYWNrKQot
ICAgICAgICAsIG1faWQodHJhY2suaWQoKSkKLSAgICAgICAgLCBtX2xhYmVsKHRyYWNrLmxhYmVs
KCkpCi0gICAgICAgICwgbV90aW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkp
Ci0gICAgewotICAgIH0KKyAgICBleHBsaWNpdCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisKKyAgICAvLyBBdWRpb1RyYWNrUHJpdmF0ZQor
ICAgIEtpbmQga2luZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEtpbmQ6Ok1haW47IH0KKyAgICBB
dG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21TdHJp
bmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgaW50IHRyYWNr
SW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICAvLyBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmlu
YWw7CisgICAgdm9pZCB0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgZmluYWw7
CisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpICBm
aW5hbDsKKyAgICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmKSAgZmluYWw7CisgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQorCisgICAgdm9pZCBwbGF5SW50ZXJuYWwoKTsKKyAgICB2
b2lkIHVwZGF0ZVJlbmRlcmVyTXV0ZWRTdGF0ZSgpOworCisgICAgLy8gTWFpbiB0aHJlYWQgd3Jp
dGFibGUgbWVtYmVycworICAgIGJvb2wgbV9pc1BsYXlpbmcgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9hdXRvUGxheSB7IGZhbHNlIH07CisgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNDbGVhcmVkIHsgZmFsc2UgfTsKIAogICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4gbV9zdHJlYW1UcmFjazsKICAgICBBdG9tU3RyaW5nIG1faWQ7CiAgICAgQXRvbVN0cmlu
ZyBtX2xhYmVsOwogICAgIGludCBtX2luZGV4IHsgMCB9OwogICAgIE1lZGlhVGltZSBtX3RpbWVs
aW5lT2Zmc2V0OworCisgICAgLy8gQXVkaW8gdGhyZWFkIG1lbWJlcnMKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IG1fcmVuZGVyZXI7CisgICAgYm9v
bCBtX2hhc1N0YXJ0ZWRBdXRvcGxheSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUuaAppbmRleCAwMDcxNmZkMGE0NTYxNGRlNmNkOGFiYWRlMDU5MGYyYmYxMGMwMjZl
Li4xMGI2NzAzY2ViM2E5ODU2OWY5NDM0YjgyYmFjNTNlZGVjOGJjYjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUgZmluYWwKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+CiAgICAgLCBwdWJs
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisgICAgLCBwdWJsaWMgTG9nZ2VySGVscGVy
CiAjZW5kaWYKIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzU0NjFmNmQ1ZDhmNmI3ZTZhZjlm
ZDU2Y2MyNmY1ZmJkMzkyYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2Eu
Y3BwCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCisjaW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRhU291
cmNlLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCisjaW5jbHVkZSA8cGFsL2Nm
L0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9BdWRpb1Rvb2xi
b3hTUEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hKCkgPSBkZWZh
dWx0OworCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjp+QXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpID0gZGVmYXVsdDsKKwordm9pZCBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1faXNBdWRpb1VuaXRT
dGFydGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9yZW1vdGVJT1VuaXQpCisgICAg
ICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOworfQorCit2b2lkIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNsZWFyKCkKK3sKKyAgICBpZiAobV9kYXRh
U291cmNlKQorICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFBhdXNlZCh0cnVlKTsKKworICAgIGlm
IChtX3JlbW90ZUlPVW5pdCkgeworICAgICAgICBBdWRpb091dHB1dFVuaXRTdG9wKG1fcmVtb3Rl
SU9Vbml0KTsKKyAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UobV9yZW1vdGVJ
T1VuaXQpOworICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IG51bGxwdHI7CisgICAgfQorCisgICAg
bV9kYXRhU291cmNlID0gbnVsbHB0cjsKKyAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBudWxscHRy
OworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBudWxscHRyOworfQorCit2b2lkIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnNldFBhdXNlZChib29sIHZhbHVlKQoreworICAg
IG1fcGF1c2VkID0gdmFsdWU7CisgICAgaWYgKG1fZGF0YVNvdXJjZSkKKyAgICAgICAgbV9kYXRh
U291cmNlLT5zZXRQYXVzZWQodmFsdWUpOworfQorCitBdWRpb0NvbXBvbmVudEluc3RhbmNlIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNyZWF0ZUF1ZGlvVW5pdChDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mIG91dHB1dERlc2NyaXB0aW9uKQoreworICAgIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2UgcmVtb3RlSU9Vbml0IHsgbnVsbHB0ciB9OworCisgICAgQXVkaW9Db21wb25l
bnREZXNjcmlwdGlvbiBpb1VuaXREZXNjcmlwdGlvbiB7IGtBdWRpb1VuaXRUeXBlX091dHB1dCwg
MCwga0F1ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZSwgMCwgMCB9OworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9uZW50U3ViVHlwZSA9IGtBdWRp
b1VuaXRTdWJUeXBlX1JlbW90ZUlPOworI2Vsc2UKKyAgICBpb1VuaXREZXNjcmlwdGlvbi5jb21w
b25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVmYXVsdE91dHB1dDsKKyNlbmRpZgor
CisgICAgQXVkaW9Db21wb25lbnQgaW9Db21wb25lbnQgPSBBdWRpb0NvbXBvbmVudEZpbmROZXh0
KG51bGxwdHIsICZpb1VuaXREZXNjcmlwdGlvbik7CisgICAgQVNTRVJUKGlvQ29tcG9uZW50KTsK
KyAgICBpZiAoIWlvQ29tcG9uZW50KSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAidW5hYmxlIHRvIGZpbmQgcmVtb3RlIElPIHVuaXQgY29tcG9uZW50Iik7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIE9TU3RhdHVzIGVyciA9IEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2VOZXcoaW9Db21wb25lbnQsICZyZW1vdGVJT1VuaXQpOworICAgIGlmIChlcnIpIHsK
KyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gb3BlbiB2cGlvIHVu
aXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBVSW50MzIgcGFyYW0gPSAxOworICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KHJlbW90
ZUlPVW5pdCwga0F1ZGlvT3V0cHV0VW5pdFByb3BlcnR5X0VuYWJsZUlPLCBrQXVkaW9Vbml0U2Nv
cGVfT3V0cHV0LCAwLCAmcGFyYW0sIHNpemVvZihwYXJhbSkpOworICAgIGlmIChlcnIpIHsKKyAg
ICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1bmFibGUgdG8gZW5hYmxlIHZwaW8gdW5p
dCBvdXRwdXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciopJmVyciwgIikiKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlmCisKKyAgICBBVVJlbmRlckNh
bGxiYWNrU3RydWN0IGNhbGxiYWNrID0geyBpbnB1dFByb2MsIHRoaXMgfTsKKyAgICBlcnIgPSBB
dWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TZXRS
ZW5kZXJDYWxsYmFjaywga0F1ZGlvVW5pdFNjb3BlX0dsb2JhbCwgMCwgJmNhbGxiYWNrLCBzaXpl
b2YoY2FsbGJhY2spKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVO
VElGSUVSLCAidW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgc3BlYWtlciBwcm9jLCBlcnJvciA9ICIs
IGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG91dHB1dERlc2NyaXB0aW9u
LnN0cmVhbURlc2NyaXB0aW9uKCkpOworICAgIGVyciAgPSBBdWRpb1VuaXRHZXRQcm9wZXJ0eShy
ZW1vdGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRT
Y29wZV9JbnB1dCwgMCwgJm91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCksICZz
aXplKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAi
dW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJvciA9ICIsIGVyciwgIiAoIiwg
KGNvbnN0IGNoYXIqKSZlcnIsICIpIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIG91dHB1dERlc2NyaXB0aW9uLnN0cmVhbURlc2NyaXB0aW9uKCkubVNhbXBsZVJhdGUg
PSBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVSYXRlKCk7CisKKyAgICBlcnIg
PSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9T
dHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJm91dHB1dERlc2NyaXB0aW9u
LnN0cmVhbURlc2NyaXB0aW9uKCksIHNpemVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNj
cmlwdGlvbigpKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJ
RklFUiwgInVuYWJsZSB0byBzZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgPSAiLCBlcnIs
ICIgKCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBlcnIgPSBBdWRpb1VuaXRJbml0aWFsaXplKHJlbW90ZUlPVW5pdCk7Cisg
ICAgaWYgKGVycikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlvVW5p
dEluaXRpYWxpemUoKSBmYWlsZWQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAoY29uc3QgY2hhciop
JmVyciwgIikiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJu
IHJlbW90ZUlPVW5pdDsKK30KKworLy8gTWF5IGdldCBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRo
cmVhZC4KK3ZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cHVzaFNhbXBs
ZXMoY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYg
YXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6
ZV90IHNhbXBsZUNvdW50KQoreworICAgIEFTU0VSVChkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2Ny
aXB0aW9uKCkudHlwZSA9PSBQbGF0Zm9ybURlc2NyaXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNU
eXBlKTsKKworICAgIGlmICghbV9pbnB1dERlc2NyaXB0aW9uIHx8ICptX2lucHV0RGVzY3JpcHRp
b24gIT0gZGVzY3JpcHRpb24pIHsKKyAgICAgICAgbV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBmYWxz
ZTsKKworICAgICAgICBpZiAobV9yZW1vdGVJT1VuaXQpIHsKKyAgICAgICAgICAgIEF1ZGlvT3V0
cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOworICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJ
bnN0YW5jZURpc3Bvc2UobV9yZW1vdGVJT1VuaXQpOworICAgICAgICAgICAgbV9yZW1vdGVJT1Vu
aXQgPSBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0g
bnVsbHB0cjsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CisKKyAgICAg
ICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGlucHV0RGVzY3JpcHRpb24gPSB0b0NBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CisgICAgICAgIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiBvdXRwdXREZXNjcmlwdGlvbjsKKworICAgICAgICBhdXRvIHJlbW90ZUlPVW5pdCA9
IGNyZWF0ZUF1ZGlvVW5pdChvdXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIGlmICghcmVtb3Rl
SU9Vbml0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1faW5wdXREZXNjcmlwdGlv
biA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9u
KTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CisKKyAgICAgICAgbV9kYXRhU291cmNl
ID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgp
ICogMiwgKnRoaXMpOworCisgICAgICAgIGlmIChtX2RhdGFTb3VyY2UtPnNldElucHV0Rm9ybWF0
KGlucHV0RGVzY3JpcHRpb24pIHx8IG1fZGF0YVNvdXJjZS0+c2V0T3V0cHV0Rm9ybWF0KG91dHB1
dERlc2NyaXB0aW9uKSkgeworICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bv
c2UocmVtb3RlSU9Vbml0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChhdXRvIGVycm9yID0gQXVkaW9PdXRwdXRVbml0U3RhcnQocmVtb3RlSU9Vbml0KSkg
eworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpb091dHB1dFVuaXRT
dGFydCBmYWlsZWQsIGVycm9yID0gIiwgZXJyb3IsICIgKCIsIChjb25zdCBjaGFyKikmZXJyb3Is
ICIpIik7CisgICAgICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZShyZW1vdGVJ
T1VuaXQpOworICAgICAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1faXNBdWRpb1VuaXRTdGFydGVk
ID0gdHJ1ZTsKKworICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFZvbHVtZSh2b2x1bWUoKSk7Cisg
ICAgICAgIG1fcmVtb3RlSU9Vbml0ID0gcmVtb3RlSU9Vbml0OworICAgIH0KKworICAgIG1fZGF0
YVNvdXJjZS0+cHVzaFNhbXBsZXMoc2FtcGxlVGltZSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7
CisKKyAgICBpZiAoIW1faXNBdWRpb1VuaXRTdGFydGVkKSB7CisgICAgICAgIGlmIChhdXRvIGVy
cm9yID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9yZW1vdGVJT1VuaXQpKSB7CisgICAgICAgICAg
ICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkF1ZGlvT3V0cHV0VW5pdFN0YXJ0IGZhaWxlZCwg
ZXJyb3IgPSAiLCBlcnJvciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnJvciwgIikiKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9
IHRydWU7CisgICAgfQorfQorCitPU1N0YXR1cyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckNvY29hOjpyZW5kZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QmIGlvRGF0
YSwgVUludDMyIC8qaW5CdXNOdW1iZXIqLywgY29uc3QgQXVkaW9UaW1lU3RhbXAmIHRpbWVTdGFt
cCwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmIGFjdGlvbkZsYWdzKQoreworICAgIGlmIChp
c011dGVkKCkgfHwgbV9wYXVzZWQgfHwgIW1fZGF0YVNvdXJjZSkgeworICAgICAgICBBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBs
ZUNvdW50ICogbV9vdXRwdXREZXNjcmlwdGlvbi0+Ynl0ZXNQZXJGcmFtZSgpKSk7CisgICAgICAg
IGFjdGlvbkZsYWdzID0ga0F1ZGlvVW5pdFJlbmRlckFjdGlvbl9PdXRwdXRJc1NpbGVuY2U7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fZGF0YVNvdXJjZS0+cHVsbFNhbXBsZXMo
aW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50KSwgdGltZVN0YW1wLm1TYW1w
bGVUaW1lLCB0aW1lU3RhbXAubUhvc3RUaW1lLCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkNvcHkp
OworCisgICAgcmV0dXJuIDA7Cit9CisKK09TU3RhdHVzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0
aW9uRmxhZ3MqIGFjdGlvbkZsYWdzLCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZVN0YW1wLCBV
SW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0KiBp
b0RhdGEpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2EqPih1c2VyRGF0YSktPnJlbmRlcihzYW1wbGVDb3VudCwgKmlvRGF0YSwgaW5C
dXNOdW1iZXIsICp0aW1lU3RhbXAsICphY3Rpb25GbGFncyk7Cit9CisKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ckNvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTllNTQ2MWNiMDI4ZGZjMWRmZDJlOTRlM2YzYzZkOGQ4YjVj
YWU0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKKyNpbmNsdWRlIDxBdWRpb1Rv
b2xib3gvQXVkaW9Ub29sYm94Lmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVz
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNl
OworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uOworCitjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hIDogcHVi
bGljIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
KCk7CisgICAgfkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoKTsKKworcHJpdmF0
ZToKKyAgICAvLyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcgorICAgIHZvaWQgcHVzaFNh
bXBsZXMoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOworICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKKyAgICB2b2lkIHNldFBhdXNlZChi
b29sKSBmaW5hbDsKKworICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCosIEF1ZGlv
VW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgaW5C
dXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0Kik7CisgICAg
T1NTdGF0dXMgcmVuZGVyKFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiwgVUlu
dDMyIGluQnVzTnVtYmVyLCBjb25zdCBBdWRpb1RpbWVTdGFtcCYsIEF1ZGlvVW5pdFJlbmRlckFj
dGlvbkZsYWdzJik7CisKKyAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIGNyZWF0ZUF1ZGlvVW5p
dChDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mKTsKKworICAgIC8vIEF1ZGlvIHRocmVhZCBtZW1i
ZXJzCisgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZSBtX3JlbW90ZUlPVW5pdCB7IG51bGxwdHIg
fTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX2lucHV0
RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKKworICAgIC8vIENyb3NzIHRocmVhZCBtZW1iZXJzCisg
ICAgUmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9kYXRhU291cmNlOworICAgIGJvb2wg
bV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxz
ZSB9OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAzODFmYzZjM2E3
MzE4MzkwNjVjNDk5ZTRlMmU5YWIzNzI2ZDJkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDI4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oIgotCi0jaW5jbHVkZSAiQXVk
aW9TYW1wbGVCdWZmZXJMaXN0LmgiCi0jaW5jbHVkZSAiQXVkaW9TYW1wbGVEYXRhU291cmNlLmgi
Ci0jaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCi0jaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi0jaW5jbHVkZSA8cGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9BdWRpb1Rvb2xib3hTUEku
aD4KLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6
OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYgdHJhY2spCi0gICAgOiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtKHRyYWNrKQotewot
ICAgIHRyYWNrLnNvdXJjZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKLX0KLQotQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hOjp+QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
KCkKLXsKLSAgICBjbGVhcigpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYTo6Y2xlYXIoKQotewotICAgIGlmIChtX2lzQ2xlYXJlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9pc0NsZWFyZWQgPSB0cnVlOwotICAgIHN0cmVhbVRyYWNrKCkuc291cmNlKCku
cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgaWYgKG1fZGF0YVNvdXJjZSkKLSAgICAgICAg
bV9kYXRhU291cmNlLT5zZXRQYXVzZWQodHJ1ZSk7Ci0KLSAgICBpZiAobV9yZW1vdGVJT1VuaXQp
IHsKLSAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAg
IEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVtb3RlSU9Vbml0KTsKLSAgICAgICAg
bV9yZW1vdGVJT1VuaXQgPSBudWxscHRyOwotICAgIH0KLQotICAgIG1fZGF0YVNvdXJjZSA9IG51
bGxwdHI7Ci0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLSAgICBtX291dHB1dERl
c2NyaXB0aW9uID0gbnVsbHB0cjsKLX0KLQotdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2E6OnBsYXlJbnRlcm5hbCgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LQotICAgIGlmIChtX2lzUGxheWluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc1BsYXlp
bmcgPSB0cnVlOwotICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKLQotICAgIGlmIChtX2RhdGFTb3Vy
Y2UpCi0gICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0UGF1c2VkKGZhbHNlKTsKLX0KLQotdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXkoKQotewotICAgIHBsYXlJbnRl
cm5hbCgpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6cGF1
c2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBpZiAoIW1faXNQbGF5
aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUGxheWluZyA9IGZhbHNlOwotICAgIG1f
YXV0b1BsYXkgPSBmYWxzZTsKLQotICAgIGlmIChtX2RhdGFTb3VyY2UpCi0gICAgICAgIG1fZGF0
YVNvdXJjZS0+c2V0UGF1c2VkKHRydWUpOwotfQotCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKLXsKLSAgICBtX3ZvbHVtZSA9
IHZvbHVtZTsKLSAgICBpZiAobV9kYXRhU291cmNlKQotICAgICAgICBtX2RhdGFTb3VyY2UtPnNl
dFZvbHVtZShtX3ZvbHVtZSk7Ci19Ci0KLUF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiBvdXRwdXREZXNjcmlwdGlvbikKLXsKLSAgICBBdWRpb0NvbXBvbmVudEluc3Rh
bmNlIHJlbW90ZUlPVW5pdCB7IG51bGxwdHIgfTsKLQotICAgIEF1ZGlvQ29tcG9uZW50RGVzY3Jp
cHRpb24gaW9Vbml0RGVzY3JpcHRpb24geyBrQXVkaW9Vbml0VHlwZV9PdXRwdXQsIDAsIGtBdWRp
b1VuaXRNYW51ZmFjdHVyZXJfQXBwbGUsIDAsIDAgfTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIGlvVW5pdERlc2NyaXB0aW9uLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3Vi
VHlwZV9SZW1vdGVJTzsKLSNlbHNlCi0gICAgaW9Vbml0RGVzY3JpcHRpb24uY29tcG9uZW50U3Vi
VHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX0RlZmF1bHRPdXRwdXQ7Ci0jZW5kaWYKLQotICAgIEF1
ZGlvQ29tcG9uZW50IGlvQ29tcG9uZW50ID0gQXVkaW9Db21wb25lbnRGaW5kTmV4dChudWxscHRy
LCAmaW9Vbml0RGVzY3JpcHRpb24pOwotICAgIEFTU0VSVChpb0NvbXBvbmVudCk7Ci0gICAgaWYg
KCFpb0NvbXBvbmVudCkgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJs
ZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0NvbXBvbmVudEluc3RhbmNl
TmV3KGlvQ29tcG9uZW50LCAmcmVtb3RlSU9Vbml0KTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJv
ciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgVUludDMy
IHBhcmFtID0gMTsKLSAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShyZW1vdGVJT1VuaXQs
IGtBdWRpb091dHB1dFVuaXRQcm9wZXJ0eV9FbmFibGVJTywga0F1ZGlvVW5pdFNjb3BlX091dHB1
dCwgMCwgJnBhcmFtLCBzaXplb2YocGFyYW0pKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGVuYWJsZSB2cGlvIHVuaXQgb3V0cHV0
LCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIpIik7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLSNlbmRpZgotCi0gICAgQVVSZW5kZXJDYWxsYmFja1N0
cnVjdCBjYWxsYmFjayA9IHsgaW5wdXRQcm9jLCB0aGlzIH07Ci0gICAgZXJyID0gQXVkaW9Vbml0
U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU2V0UmVuZGVyQ2Fs
bGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAsICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxi
YWNrKSk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwg
InVuYWJsZSB0byBzZXQgdnBpbyB1bml0IHNwZWFrZXIgcHJvYywgZXJyb3IgPSAiLCBlcnIsICIg
KCIsIChjb25zdCBjaGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1E
ZXNjcmlwdGlvbigpKTsKLSAgICBlcnIgID0gQXVkaW9Vbml0R2V0UHJvcGVydHkocmVtb3RlSU9V
bml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5w
dXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLCAmc2l6ZSk7Ci0g
ICAgaWYgKGVycikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInVuYWJsZSB0
byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgPSAiLCBlcnIsICIgKCIsIChjb25zdCBj
aGFyKikmZXJyLCAiKSIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBv
dXRwdXREZXNjcmlwdGlvbi5zdHJlYW1EZXNjcmlwdGlvbigpLm1TYW1wbGVSYXRlID0gQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgpOwotCi0gICAgZXJyID0gQXVkaW9V
bml0U2V0UHJvcGVydHkocmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbi5zdHJlYW1E
ZXNjcmlwdGlvbigpLCBzaXplb2Yob3V0cHV0RGVzY3JpcHRpb24uc3RyZWFtRGVzY3JpcHRpb24o
KSkpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJ1
bmFibGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yID0gIiwgZXJyLCAiICgiLCAo
Y29uc3QgY2hhciopJmVyciwgIikiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
Ci0gICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6ZShyZW1vdGVJT1VuaXQpOwotICAgIGlmIChl
cnIpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpb1VuaXRJbml0aWFs
aXplKCkgZmFpbGVkLCBlcnJvciA9ICIsIGVyciwgIiAoIiwgKGNvbnN0IGNoYXIqKSZlcnIsICIp
Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiByZW1vdGVJ
T1VuaXQ7Ci19Ci0KLS8vIE1heSBnZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCi12
b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxh
YmxlKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEm
IGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNp
emVfdCBzYW1wbGVDb3VudCkKLXsKLSAgICBBU1NFUlQoZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNj
cmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2lj
VHlwZSk7Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5nKSB7Ci0gICAgICAgIGlmIChtX2lzQXVkaW9V
bml0U3RhcnRlZCkgewotICAgICAgICAgICAgaWYgKG1fcmVtb3RlSU9Vbml0KQotICAgICAgICAg
ICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1vdGVJT1VuaXQpOwotICAgICAgICAgICAg
bV9pc0F1ZGlvVW5pdFN0YXJ0ZWQgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCFtX2lucHV0RGVzY3JpcHRpb24gfHwgKm1faW5wdXREZXNjcmlw
dGlvbiAhPSBkZXNjcmlwdGlvbikgewotICAgICAgICBtX2lzQXVkaW9Vbml0U3RhcnRlZCA9IGZh
bHNlOwotCi0gICAgICAgIGlmIChtX3JlbW90ZUlPVW5pdCkgewotICAgICAgICAgICAgQXVkaW9P
dXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAgICBBdWRpb0NvbXBvbmVu
dEluc3RhbmNlRGlzcG9zZShtX3JlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAgICBtX3JlbW90ZUlP
VW5pdCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24g
PSBudWxscHRyOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKLQotICAg
ICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gaW5wdXREZXNjcmlwdGlvbiA9IHRvQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKLSAgICAgICAgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uIG91dHB1dERlc2NyaXB0aW9uOwotCi0gICAgICAgIGF1dG8gcmVtb3RlSU9Vbml0
ID0gY3JlYXRlQXVkaW9Vbml0KG91dHB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgaWYgKCFyZW1v
dGVJT1VuaXQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9pbnB1dERlc2NyaXB0
aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGlucHV0RGVzY3JpcHRp
b24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKLQotICAgICAgICBtX2RhdGFTb3Vy
Y2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCkgKiAyLCBzdHJlYW1UcmFjaygpKTsKLQotICAgICAgICBpZiAobV9kYXRhU291cmNlLT5zZXRJ
bnB1dEZvcm1hdChpbnB1dERlc2NyaXB0aW9uKSB8fCBtX2RhdGFTb3VyY2UtPnNldE91dHB1dEZv
cm1hdChvdXRwdXREZXNjcmlwdGlvbikpIHsKLSAgICAgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5z
dGFuY2VEaXNwb3NlKHJlbW90ZUlPVW5pdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KHJlbW90
ZUlPVW5pdCkpIHsKLSAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiQXVkaW9P
dXRwdXRVbml0U3RhcnQgZmFpbGVkLCBlcnJvciA9ICIsIGVycm9yLCAiICgiLCAoY29uc3QgY2hh
ciopJmVycm9yLCAiKSIpOwotICAgICAgICAgICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bv
c2UocmVtb3RlSU9Vbml0KTsKLSAgICAgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxw
dHI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2lzQXVkaW9V
bml0U3RhcnRlZCA9IHRydWU7Ci0KLSAgICAgICAgbV9kYXRhU291cmNlLT5zZXRWb2x1bWUobV92
b2x1bWUpOwotICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IHJlbW90ZUlPVW5pdDsKLSAgICB9Ci0K
LSAgICBtX2RhdGFTb3VyY2UtPnB1c2hTYW1wbGVzKHNhbXBsZVRpbWUsIGF1ZGlvRGF0YSwgc2Ft
cGxlQ291bnQpOwotCi0gICAgaWYgKG1fYXV0b1BsYXkgJiYgIW1faGFzU3RhcnRlZEF1dG9wbGF5
KSB7Ci0gICAgICAgIG1faGFzU3RhcnRlZEF1dG9wbGF5ID0gdHJ1ZTsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAg
ICAgICAgICBpZiAobV9hdXRvUGxheSkKLSAgICAgICAgICAgICAgICBwbGF5SW50ZXJuYWwoKTsK
LSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2lzQXVkaW9Vbml0U3RhcnRlZCkgewot
ICAgICAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fcmVtb3RlSU9V
bml0KSkgewotICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJBdWRpb091dHB1
dFVuaXRTdGFydCBmYWlsZWQsIGVycm9yID0gIiwgZXJyb3IsICIgKCIsIChjb25zdCBjaGFyKikm
ZXJyb3IsICIpIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9p
c0F1ZGlvVW5pdFN0YXJ0ZWQgPSB0cnVlOwotICAgIH0KLX0KLQotdm9pZCBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNvdXJjZVN0b3BwZWQoKQotewotICAgIHBhdXNlKCk7Ci19
Ci0KLU9TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6cmVuZGVyKFVJ
bnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiBpb0RhdGEsIFVJbnQzMiAvKmluQnVz
TnVtYmVyKi8sIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiB0aW1lU3RhbXAsIEF1ZGlvVW5pdFJlbmRl
ckFjdGlvbkZsYWdzJiBhY3Rpb25GbGFncykKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNh
bGxlZCBvbiBhIGhpZ2gtcHJpb3JpdHkgYmFja2dyb3VuZCB0aHJlYWQuIFRoZSBmb2xsb3dpbmcg
cHJvdGVjdGVkVGhpcyBvYmplY3QgZW5zdXJlcyB0aGUgb2JqZWN0IGlzIG5vdAotICAgIC8vIGRl
c3Ryb3llZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIHRoaXMgZnVuY3Rpb24gZXhpdHMuCi0g
ICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYT4gcHJvdGVjdGVkVGhpcyB7
ICp0aGlzIH07Ci0KLSAgICBpZiAoIW1faXNQbGF5aW5nIHx8IG1fbXV0ZWQgfHwgIW1fZGF0YVNv
dXJjZSB8fCBzdHJlYW1UcmFjaygpLm11dGVkKCkgfHwgc3RyZWFtVHJhY2soKS5lbmRlZCgpIHx8
ICFzdHJlYW1UcmFjaygpLmVuYWJsZWQoKSkgewotICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxp
c3Q6Onplcm9BQkwoaW9EYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50ICogbV9v
dXRwdXREZXNjcmlwdGlvbi0+Ynl0ZXNQZXJGcmFtZSgpKSk7Ci0gICAgICAgIGFjdGlvbkZsYWdz
ID0ga0F1ZGlvVW5pdFJlbmRlckFjdGlvbl9PdXRwdXRJc1NpbGVuY2U7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH0KLQotICAgIG1fZGF0YVNvdXJjZS0+cHVsbFNhbXBsZXMoaW9EYXRhLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KHNhbXBsZUNvdW50KSwgdGltZVN0YW1wLm1TYW1wbGVUaW1lLCB0aW1l
U3RhbXAubUhvc3RUaW1lLCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkNvcHkpOwotCi0gICAgcmV0
dXJuIDA7Ci19Ci0KLU9TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6
aW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyogYWN0
aW9uRmxhZ3MsIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiB0aW1lU3RhbXAsIFVJbnQzMiBpbkJ1c051
bWJlciwgVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKj4o
dXNlckRhdGEpLT5yZW5kZXIoc2FtcGxlQ291bnQsICppb0RhdGEsIGluQnVzTnVtYmVyLCAqdGlt
ZVN0YW1wLCAqYWN0aW9uRmxhZ3MpOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUxNDU0ZWMxYmE4MTdmYmRiNjRiMzA2MGM5ZjgzNTc3
Yjg1OTNkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5o
IgotI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb1Rvb2xib3guaD4KLSNpbmNsdWRlIDxDb3Jl
QXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBB
dWRpb1NhbXBsZURhdGFTb3VyY2U7Ci1jbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q7Ci1jbGFz
cyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247Ci0KLWNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
LCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EpCi1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E+IGNyZWF0
ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFtVHJhY2spCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eoc3Ry
ZWFtVHJhY2spKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAgICB2b2lkIHBsYXko
KTsKLSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2lz
UGxheWluZzsgfQotCi0gICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOwotICAgIGZsb2F0IHZvbHVt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9Ci0KLSAgICB2b2lkIHNldE11dGVkKGJvb2wg
bXV0ZWQpIHsgbV9tdXRlZCA9IG11dGVkOyB9Ci0gICAgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbXV0ZWQ7IH0KLQotcHJpdmF0ZToKLSAgICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKLSAgICB+QXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hKCk7Ci0KLSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNl
cnZlcgotICAgIHZvaWQgc291cmNlU3RvcHBlZCgpIGZpbmFsOwotICAgIHZvaWQgYXVkaW9TYW1w
bGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwg
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7Ci0KLSAgICBzdGF0
aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyos
IGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50MzIgbnVtYmVy
T2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCopOwotICAgIE9TU3RhdHVzIHJlbmRlcihVSW50MzIg
c2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIFVJbnQzMiBpbkJ1c051bWJlciwgY29uc3Qg
QXVkaW9UaW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOwotCi0gICAgQXVk
aW9Db21wb25lbnRJbnN0YW5jZSBjcmVhdGVBdWRpb1VuaXQoQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJik7Ci0gICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChBdWRp
b0J1ZmZlckxpc3QmLCBzaXplX3QpOwotICAgIHZvaWQgcGxheUludGVybmFsKCk7Ci0KLSNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hIjsgfQot
I2VuZGlmCi0KLSAgICAvLyBBdWRpbyB0aHJlYWQgbWVtYmVycwotICAgIEF1ZGlvQ29tcG9uZW50
SW5zdGFuY2UgbV9yZW1vdGVJT1VuaXQgeyBudWxscHRyIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRpb247
Ci0gICAgYm9vbCBtX2lzQXVkaW9Vbml0U3RhcnRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hh
c1N0YXJ0ZWRBdXRvcGxheSB7IGZhbHNlIH07Ci0KLSAgICAvLyBDcm9zcyB0aHJlYWQgbWVtYmVy
cwotICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fZGF0YVNvdXJjZTsKLQotICAg
IC8vIE1haW4gdGhyZWFkIHdyaXRhYmxlIG1lbWJlcnMKLSAgICBmbG9hdCBtX3ZvbHVtZSB7IDEg
fTsKLSAgICBib29sIG1faXNQbGF5aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1fYXV0b1BsYXkg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQ2xl
YXJlZCB7IGZhbHNlIH07Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>