<?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>236131</bug_id>
          
          <creation_ts>2022-02-04 02:01:14 -0800</creation_ts>
          <short_desc>Allow to pass webrtc video frame buffers through RealtimeMediaSource based pipelines</short_desc>
          <delta_ts>2022-03-09 14:38:37 -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>achristensen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</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>1837314</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-04 02:01:14 -0800</bug_when>
    <thetext>Allow to pass webrtc video frame buffers through RealtimeMediaSource based pipelines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837315</commentid>
    <comment_count>1</comment_count>
      <attachid>450881</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-04 02:05:40 -0800</bug_when>
    <thetext>Created attachment 450881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837316</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-04 02:06:22 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #1)
&gt; Created attachment 450881 [details]
&gt; Patch

Not yet ready for review.
Need to sync it with https://bugs.webkit.org/show_bug.cgi?id=236099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840272</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-11 02:02:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/88805580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844670</commentid>
    <comment_count>4</comment_count>
      <attachid>452864</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-22 06:19:12 -0800</bug_when>
    <thetext>Created attachment 452864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845142</commentid>
    <comment_count>5</comment_count>
      <attachid>452982</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-23 08:07:42 -0800</bug_when>
    <thetext>Created attachment 452982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845202</commentid>
    <comment_count>6</comment_count>
      <attachid>452998</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-23 10:16:30 -0800</bug_when>
    <thetext>Created attachment 452998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846565</commentid>
    <comment_count>7</comment_count>
      <attachid>453374</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-28 01:03:05 -0800</bug_when>
    <thetext>Created attachment 453374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847831</commentid>
    <comment_count>8</comment_count>
      <attachid>453720</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-03 04:39:46 -0800</bug_when>
    <thetext>Created attachment 453720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849276</commentid>
    <comment_count>9</comment_count>
      <attachid>453720</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-03-08 08:27:27 -0800</bug_when>
    <thetext>Comment on attachment 453720
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        In case we send VideoFrameLibWebRTC through RealtimeOutgoingVideoSourceCocoa, directly send the video frame buffer.
&gt; +        When receiving libwebrtc video frame buffers in RealtimeIncomingVideoSourceCocoa, make use of VideoFrameLibWebRTC to delay conversion of the video frame buffer in a CVPixelBufferRef.
&gt; +        In most cases, the conversion is unneeded as the video frame buffer will be used for rendering and will be copied to shared memory through SharedVideoFrameWriter.
&gt; +        Fix bugs in handling of YUV conversion libwebrtc routines.
&gt; +        Minor refactoring to have a default asVideoFrameCV method implementatin in VideoFrame.

Nit: these lines are really long</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849722</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-09 09:49:10 -0800</bug_when>
    <thetext>Committed r291051 (248225@main): &lt;https://commits.webkit.org/248225@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453720.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849846</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-09 14:32:05 -0800</bug_when>
    <thetext>r291076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849852</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-09 14:38:37 -0800</bug_when>
    <thetext>r291078</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450881</attachid>
            <date>2022-02-04 02:05:40 -0800</date>
            <delta_ts>2022-02-22 06:19:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236131-20220204110537.patch</filename>
            <type>text/plain</type>
            <size>65871</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBiMDdjYjRjNWI4MTNjNDRkMjc2NjY2ZjBlY2FhYzVlMjQzMzM1NzQ4Li5mNDkw
NjMxNWY2ZmJjZGMyOTJjMDY4MWJjOGVmOTJmMmNlMzU3OWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMi0wMi0wNCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMg
dmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlw
ZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBm
aXgtd2VicnRjLW9wdGltaXphdGlvbgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5l
eHA6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAg
ICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oOgorICAgICAgICAq
IFNvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06CisKIDIwMjItMDIt
MDIgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0g
Rml4IHJlZHVuZGFudCBleGVjdXRpb24gb2YgIkNoZWNrIFZUYWJsZXMuLi4iIHNjcmlwdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGZlMmFjNTNjYWVlYzljZTJmNTViYjJjNzQyMmM4Y2Y1NTg2ODhkZmYuLjVmZmFl
MTgzNWJlMDViOWE1Zjg2Y2RjZWQ2ODY3ZjhkMDFlMGNkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOSBAQAorMjAyMi0wMi0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMgdmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdo
IFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlwZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBmaXgtd2VicnRjLW9wdGltaXphdGlvbgorCisg
ICAgICAgIFBhcnRpYWxseSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIChidXQgbmVlZCBWUDkg
cHJvZmlsZSAyIC0+IEgyNjQpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL01l
ZGlhU2FtcGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUlu
Zm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVNhbXBsZVdl
YlJUQy5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU2Ft
cGxlV2ViUlRDLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
Q29jb2EuY3BwOgorCiAyMDIyLTAyLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlIHNob3Vs
ZCB0YWtlIGEgcHJlc2VudGF0aW9uVGltZSBhcyBwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjc1OTFl
MzQ5ZDU5NzkzZGI2MWZkZjQ2NDEyMzdiMjFlY2Y2ZjQ1MC4uMzdjM2E1YTJjMWYzMzZmMjAxY2U4
MjgxZjNiYjkxNzgzZmZkODM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMi0wMi0w
NCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8g
cGFzcyB3ZWJydGMgdmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3Vy
Y2UgYmFzZWQgcGlwZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzYxMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBmaXgtd2VicnRjLW9wdGltaXphdGlvbgorCisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmg6CisKIDIwMjItMDItMDMg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNoYXJlZFZpZGVv
RnJhbWVSZWFkZXIgY291bGQgZGlyZWN0bHkgdGFrZSBhIElQQ0hhbmRsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1Mu
ZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0
Yy5pT1MuZXhwCmluZGV4IGNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMu
LjUxMmJiYmY0ZTE3YjhjZjNiM2MwYjA1OTRmZWE3NDYyZjE2YzRjZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPUy5leHAKQEAgLTMzMSw0ICszMzEsNSBAQCBfX1pONndlYnJ0YzMyd2VicnRjX3NlcXVl
bmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVlbmNlQ2hlY2tlckltcGxDMkV2CiBfX1pOSzNydGMx
NFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0aWZpY2F0ZUV2CiBfX1pUVk42d2VicnRjMzBXcmFw
cGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRFCiBfX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9t
RnJhbWVFUktOU18xMFZpZGVvRnJhbWVFCi1fX1pONndlYnJ0YzE0Y29weVZpZGVvRnJhbWVFUktO
U18xMFZpZGVvRnJhbWVFUGgKK19fWk42d2VicnRjMjBjb3B5VmlkZW9GcmFtZUJ1ZmZlckVSTlNf
MTZWaWRlb0ZyYW1lQnVmZmVyRVBoCitfX1pONndlYnJ0YzMyY3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWVCdWZmZXJFUk5TXzE2VmlkZW9GcmFtZUJ1ZmZlckVSS05TdDNfXzE4ZnVuY3Rpb25JRlAx
MF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2lt
LmV4cAppbmRleCBjYTU0NzNhNjJhZDk4YmY2YjRlMGNlYjYwMjg4NTY0NWQ5MGY3ZDIzLi41MTJi
YmJmNGUxN2I4Y2YzYjNjMGIwNTk0ZmVhNzQ2MmYxNmM0Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0
Yy5pT1NzaW0uZXhwCkBAIC0zMzEsNCArMzMxLDUgQEAgX19aTjZ3ZWJydGMzMndlYnJ0Y19zZXF1
ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1ZW5jZUNoZWNrZXJJbXBsQzJFdgogX19aTkszcnRj
MTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2VydGlmaWNhdGVFdgogX19aVFZONndlYnJ0YzMwV3Jh
cHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0RQogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJv
bUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRQotX19aTjZ3ZWJydGMxNGNvcHlWaWRlb0ZyYW1lRVJL
TlNfMTBWaWRlb0ZyYW1lRVBoCitfX1pONndlYnJ0YzIwY29weVZpZGVvRnJhbWVCdWZmZXJFUk5T
XzE2VmlkZW9GcmFtZUJ1ZmZlckVQaAorX19aTjZ3ZWJydGMzMmNyZWF0ZVBpeGVsQnVmZmVyRnJv
bUZyYW1lQnVmZmVyRVJOU18xNlZpZGVvRnJhbWVCdWZmZXJFUktOU3QzX18xOGZ1bmN0aW9uSUZQ
MTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAK
aW5kZXggY2E1NDczYTYyYWQ5OGJmNmI0ZTBjZWI2MDI4ODU2NDVkOTBmN2QyMy4uNTEyYmJiZjRl
MTdiOGNmM2IzYzBiMDU5NGZlYTc0NjJmMTZjNGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4
cApAQCAtMzMxLDQgKzMzMSw1IEBAIF9fWk42d2VicnRjMzJ3ZWJydGNfc2VxdWVuY2VfY2hlY2tl
cl9pbnRlcm5hbDE5U2VxdWVuY2VDaGVja2VySW1wbEMyRXYKIF9fWk5LM3J0YzE0UlRDQ2VydGlm
aWNhdGUxN0dldFNTTENlcnRpZmljYXRlRXYKIF9fWlRWTjZ3ZWJydGMzMFdyYXBwaW5nQXN5bmNE
bnNSZXNvbHZlclJlc3VsdEUKIF9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05T
XzEwVmlkZW9GcmFtZUUKLV9fWk42d2VicnRjMTRjb3B5VmlkZW9GcmFtZUVSS05TXzEwVmlkZW9G
cmFtZUVQaAorX19aTjZ3ZWJydGMyMGNvcHlWaWRlb0ZyYW1lQnVmZmVyRVJOU18xNlZpZGVvRnJh
bWVCdWZmZXJFUGgKK19fWk42d2VicnRjMzJjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUJ1ZmZl
ckVSTlNfMTZWaWRlb0ZyYW1lQnVmZmVyRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZl
cm1tTlNfMTBCdWZmZXJUeXBlRUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRp
bGl0aWVzLmgKaW5kZXggYTIzZmFhNmVkNTdkZjdjMzIyYzY3MGI3NzM1Y2FiODNjNjYxNTkzNC4u
ZGUxMGU4M2I2ZGUxMmUxMjY4NWVmMDA5ZThiNGZiNTIyYjE5OTVmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCkBAIC00OCw4ICs0OCw5IEBAIGJvb2wgaXNI
MjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwogCiBlbnVtIGNsYXNzIEJ1ZmZlclR5cGUgeyBJ
NDIwLCBJMDEwIH07CiBDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYo
c2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpIENGX1JFVFVS
TlNfUkVUQUlORUQ7CitDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1l
QnVmZmVyKFZpZGVvRnJhbWVCdWZmZXImLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZm
ZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpIENG
X1JFVFVSTlNfUkVUQUlORUQ7CiBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxC
dWZmZXJSZWYpOwotYm9vbCBjb3B5VmlkZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgdWludDhf
dCopOworYm9vbCBjb3B5VmlkZW9GcmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVmZmVyJiwgdWludDhf
dCopOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCmlu
ZGV4IDdmNmZiYjExZTc2OTNhZDY2ZGY5MjRiOTNmNGQyOGU3ZWU4OWUwYTguLmQ1Njk1ODQ2ZWFj
ZmY0NjZjZDA5NTg3ZDM3YTlhOWRiNTIxNDg3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1t
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xNDYsMjggKzE0NiwzMiBAQCBzdGF0aWMgYm9vbCBD
b3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJMDEwQnVmZmVySW50ZXJm
YWNlKiBmcmFtZQogCiBDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZm
ZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpCiB7
Ci0gICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKLSAgICBpZiAo
YnVmZmVyLT50eXBlKCkgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkgewotICAg
ICAgICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUoKTsKKyAgICByZXR1cm4gY3JlYXRlUGl4ZWxC
dWZmZXJGcm9tRnJhbWVCdWZmZXIoKmZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLCBjcmVhdGVQ
aXhlbEJ1ZmZlcik7Cit9CisKK0NWUGl4ZWxCdWZmZXJSZWYgY3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWVCdWZmZXIoVmlkZW9GcmFtZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4
ZWxCdWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci50eXBlKCkgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6
VHlwZTo6a05hdGl2ZSkgeworICAgICAgICBhdXRvIHR5cGUgPSBidWZmZXIudHlwZSgpOwogICAg
ICAgICBpZiAodHlwZSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCAmJiB0eXBlICE9
IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJMDEwKSB7CiAgICAgICAgICAgICBSVENfTE9HKFdB
Uk5JTkcpIDw8ICJWaWRlbyBmcmFtZSBidWZmZXIgdHlwZSBpcyBub3QgZXhwZWN0ZWQuIjsKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWln
aHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6
Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNy
ZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci53aWR0aCgpLCBidWZmZXIuaGVpZ2h0KCksIHR5cGUgPT0g
VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgPyBCdWZmZXJUeXBlOjpJNDIwIDogQnVmZmVy
VHlwZTo6STAxMCk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKICAgICAgICAgICAgIFJU
Q19MT0coV0FSTklORykgPDwgIlBpeGVsIGJ1ZmZlciBjcmVhdGlvbiBmYWlsZWQuIjsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHR5cGUgPT0g
VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjApCi0gICAgICAgICAgICBDb3B5VmlkZW9GcmFt
ZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAg
ICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihidWZmZXIuR2V0STQyMCgpLCBwaXhlbEJ1
ZmZlcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1
ZmZlcihidWZmZXItPkdldEkwMTAoKSwgcGl4ZWxCdWZmZXIpOworICAgICAgICAgICAgQ29weVZp
ZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGJ1ZmZlci5HZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKICAg
ICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOwogICAgIH0KIAotICAgIGF1dG8gKmZyYW1lQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8T2JqQ0ZyYW1lQnVmZmVyKj4oYnVmZmVyLmdldCgpKS0+d3JhcHBlZF9m
cmFtZV9idWZmZXIoKTsKKyAgICBhdXRvICpmcmFtZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNG
cmFtZUJ1ZmZlcio+KCZidWZmZXIpLT53cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOwogICAgIGlmICgh
W2ZyYW1lQnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE4OSwxOCArMTkzLDE3IEBAIENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUpCiAgICAg
cmV0dXJuIENWUGl4ZWxCdWZmZXJSZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOwog
fQogCi1ib29sIGNvcHlWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90
KiBkYXRhKQorYm9vbCBjb3B5VmlkZW9GcmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVmZmVyJiBidWZm
ZXIsIHVpbnQ4X3QqIGRhdGEpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFt
ZV9idWZmZXIoKTsKLSAgICBpZiAoYnVmZmVyLT50eXBlKCkgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6
VHlwZTo6a05hdGl2ZSkKKyAgICBpZiAoYnVmZmVyLnR5cGUoKSA9PSBWaWRlb0ZyYW1lQnVmZmVy
OjpUeXBlOjprTmF0aXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHR5cGUg
PSBidWZmZXItPnR5cGUoKTsKKyAgICBhdXRvIHR5cGUgPSBidWZmZXIudHlwZSgpOwogICAgIGlm
ICh0eXBlID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKSB7Ci0gICAgICAgIGF1dG8q
IGk0MjBGcmFtZSA9IGJ1ZmZlci0+R2V0STQyMCgpOworICAgICAgICBhdXRvKiBpNDIwRnJhbWUg
PSBidWZmZXIuR2V0STQyMCgpOwogICAgICAgICBhdXRvKiBkYXRhWSA9IGRhdGE7CiAgICAgICAg
IGF1dG8gc3RyaWRlWSA9IGk0MjBGcmFtZS0+d2lkdGgoKTsKLSAgICAgICAgYXV0byBzdHJpZGVV
ViA9IGk0MjBGcmFtZS0+d2lkdGgoKSAvIDI7CisgICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpNDIw
RnJhbWUtPndpZHRoKCk7CiAgICAgICAgIGF1dG8qIGRhdGFVViA9IGRhdGEgKyAoaTQyMEZyYW1l
LT53aWR0aCgpICogaTQyMEZyYW1lLT5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybiAhbGlieXV2
OjpJNDIwVG9OVjEyKGk0MjBGcmFtZS0+RGF0YVkoKSwgaTQyMEZyYW1lLT5TdHJpZGVZKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk0MjBGcmFtZS0+RGF0YVUoKSwgaTQy
MEZyYW1lLT5TdHJpZGVVKCksCkBAIC0yMDksMTAgKzIxMiwxMCBAQCBib29sIGNvcHlWaWRlb0Zy
YW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90KiBkYXRhKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpNDIwRnJhbWUtPndpZHRoKCksIGk0MjBGcmFtZS0+aGVp
Z2h0KCkpOwogICAgIH0KICAgICBpZiAodHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STAxMCkgewotICAgICAgICBhdXRvKiBpMDEwRnJhbWUgPSBidWZmZXItPkdldEkwMTAoKTsKKyAg
ICAgICAgYXV0byogaTAxMEZyYW1lID0gYnVmZmVyLkdldEkwMTAoKTsKICAgICAgICAgYXV0byog
ZGF0YVkgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZGF0YSk7CiAgICAgICAgIGF1dG8g
c3RyaWRlWSA9IGkwMTBGcmFtZS0+d2lkdGgoKTsKLSAgICAgICAgYXV0byBzdHJpZGVVViA9IGkw
MTBGcmFtZS0+d2lkdGgoKSAvIDI7CisgICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpMDEwRnJhbWUt
PndpZHRoKCk7CiAgICAgICAgIGF1dG8qIGRhdGFVViA9IGRhdGFZICsgKGkwMTBGcmFtZS0+d2lk
dGgoKSAqIGkwMTBGcmFtZS0+aGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gIWxpYnl1djo6STAx
MFRvUDAxMChpMDEwRnJhbWUtPkRhdGFZKCksIGkwMTBGcmFtZS0+U3RyaWRlWSgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMDEwRnJhbWUtPkRhdGFVKCksIGkwMTBGcmFt
ZS0+U3RyaWRlVSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1MWJmYWI4ODgwYjlkNjg5NmIzMDc4YjA5
MzBkYmU3NjM3MTFmZTA5Li4zMDQyM2EyMzVmYTc4MzAwNzIzN2NiN2ZhZDU4OWYzYmNkOGZlYjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjE3Niw2ICsyMTc2LDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25z
dHJhaW50cy5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRDb25maWd1cmF0
aW9uLmNwcAorcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTYW1wbGVXZWJSVEMuY3BwCiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTA3MzMyMjQzNmY0ZWMyNTI4MWVhMThi
ZjdkMTgxMGJiMzdkOTMwYi4uN2YwZDdkZmMwMmIwNjFjM2RhZWJiNWJjZGExOTRmZWFlYTNmMGI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTIyMSw2ICsxMjIxLDcgQEAKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8q
IEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLzsg
fTsKIAkJNDFFMkYxOTkyNzRGQUVDRjAwQTA4OUVFIC8qIE5hdmlnYXRpb25QcmVsb2FkTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMkYx
OTcyNzRGQUVDQjAwQTA4OUVFIC8qIE5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oICovOyB9Owog
CQk0MUU2N0E4MzI1RDE2ODQ3MDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU2N0E4MTI1RDE2ODQ3
MDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFFNkQyNTkyN0FDMTdENDAwRDhDRjRCIC8qIE1l
ZGlhU2FtcGxlV2ViUlRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUU2RDI1NTI3QUJFMTk1MDBEOENGNEIgLyogTWVkaWFTYW1wbGVXZWJSVEMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUU2RDcx
QjI2RUExQTQ2MDBCNzY1RDYgLyogUlRDRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjdDMDRCMjZFNjkxNzEwMEQzNkMwNyAvKiBSVENFcnJv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
RTlEQ0U3MjMxOTc0QkYwMEYzNTk0OSAvKiBCbG9iTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5RENFNDIzMTk3M0ZFMDBGMzU5NDkgLyog
QmxvYkxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQxRTlEQ0U5MjMxOUNBNzYwMEYzNTk0OSAvKiBOZXR3b3JrU2VuZFF1ZXVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5RENFODIzMTlD
QTc1MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04OTUyLDYgKzg5NTMsOCBAQAogCQk0MUU1OTQw
MTIxNDg2NUFCMDBEM0NCNjEgLyogUlRDUnRwRmVjUGFyYW1ldGVycy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRw
RmVjUGFyYW1ldGVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTY3QTdG
MjVEMTY4NDYwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1RVTk1lc3NhZ2VQYXJzaW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFNjdBODEyNUQxNjg0NzAwN0IwQTRDIC8qIFNUVU5NZXNz
YWdlUGFyc2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVFVOTWVzc2Fn
ZVBhcnNpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFNkQyNTUyN0FCRTE5
NTAwRDhDRjRCIC8qIE1lZGlhU2FtcGxlV2ViUlRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Ft
cGxlV2ViUlRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRTZEMjU3MjdBQkUx
OTYwMEQ4Q0Y0QiAvKiBNZWRpYVNhbXBsZVdlYlJUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZWRpYVNhbXBsZVdlYlJUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTZE
NzIxMjZFQUEwNDUwMEI3NjVENiAvKiBXcml0YWJsZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUU2RDcyMjI2RUFBMDQ2MDBCNzY1RDYgLyogV3JpdGFibGVTdHJlYW0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU5RENFNDIzMTk3M0ZFMDBGMzU5NDkgLyog
QmxvYkxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9iTG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODYwMSw2ICsxODYwNCw4IEBACiAJ
CQkJNDFCMjhCMTMxRjg1MDFBNDAwRkI1MkFDIC8qIE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9u
LmNwcCAqLywKIAkJCQk0MUIyOEIxMjFGODUwMUEzMDBGQjUyQUMgLyogTWVkaWFFbmRwb2ludENv
bmZpZ3VyYXRpb24uaCAqLywKIAkJCQk1RUJCODkyRjFDNzc3N0QwMDBDNjVENDEgLyogTWVkaWFQ
YXlsb2FkLmggKi8sCisJCQkJNDFFNkQyNTcyN0FCRTE5NjAwRDhDRjRCIC8qIE1lZGlhU2FtcGxl
V2ViUlRDLmNwcCAqLywKKwkJCQk0MUU2RDI1NTI3QUJFMTk1MDBEOENGNEIgLyogTWVkaWFTYW1w
bGVXZWJSVEMuaCAqLywKIAkJCQkwNzBGNTQ5NzE3RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJl
YW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCAqLywKIAkJCQkwNzExNTg4RjE3REY2MzM3
MDBFREZFMkIgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmNwcCAqLywKIAkJCQkwNzIyMUI5RDE3Q0Yw
QUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmggKi8sCkBAIC0zMzM2OCw2ICszMzM3
Myw3IEBACiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzFFRkNFREMyMDJCMzhBOTAwRDdDNDExIC8qIEFuaW1hdGlvbkVmZmVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFFMkM0MjYyMUM5MzUyODAwMjRGOEM4IC8qIEFuaW1h
dGlvbkVmZmVjdFBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUU2RDI1OTI3QUMxN0Q0MDBE
OENGNEIgLyogTWVkaWFTYW1wbGVXZWJSVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxOTg0ODAx
MUExRDgxN0IwMEExMzMxOCAvKiBBbmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzExQUQxMjYyMzZEODZFNTAwNkZGMzdDIC8qIEFuaW1hdGlvbkV2ZW50QmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAzIC8qIEFuaW1hdGlvbkZyYW1lUmF0
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAppbmRl
eCAxODM5OTcyMjYwZjcwZTAwNzM2Nzk3OTE3MjI2MjVmNTZiMjUzZjA4Li4xNTJjNTA4ZDk4NjA2
YTZjOTE3M2IwMzAwZTFmODM1ODdiMGU1ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlh
U2FtcGxlLmgKQEAgLTQxLDYgKzQxLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01G
b3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTW9ja1NhbXBsZUJveDsKK2NsYXNzIFZpZGVvRnJhbWU7CiAKIHN0cnVj
dCBQbGF0Zm9ybVNhbXBsZSB7CiAgICAgZW51bSB7CkBAIC00OSwxMiArNTAsMTQgQEAgc3RydWN0
IFBsYXRmb3JtU2FtcGxlIHsKICAgICAgICAgQ01TYW1wbGVCdWZmZXJUeXBlLAogICAgICAgICBH
U3RyZWFtZXJTYW1wbGVUeXBlLAogICAgICAgICBCeXRlUmFuZ2VTYW1wbGVUeXBlLAorICAgICAg
ICBWaWRlb0ZyYW1lU2FtcGxlVHlwZQogICAgIH0gdHlwZTsKICAgICB1bmlvbiB7CiAgICAgICAg
IE1vY2tTYW1wbGVCb3gqIG1vY2tTYW1wbGVCb3g7CiAgICAgICAgIENNU2FtcGxlQnVmZmVyUmVm
IGNtU2FtcGxlQnVmZmVyOwogICAgICAgICBHc3RTYW1wbGUqIGdzdFNhbXBsZTsKICAgICAgICAg
c3RkOjpwYWlyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZiwgQ01Gb3JtYXREZXNjcmlwdGlvblJlZj4g
Ynl0ZVJhbmdlU2FtcGxlOworICAgICAgICBWaWRlb0ZyYW1lKiB2aWRlb0ZyYW1lOwogICAgIH0g
c2FtcGxlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2hhcmVkVmlkZW9GcmFtZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZFZpZGVvRnJhbWVJbmZvLmgKaW5kZXggNGVlOGE5NmQyZTNhMjJiZmZjNTJmMzY5MGQ5MmJm
ZThmMTgyOGQ3NC4uNTI5OGEzMGY3MWMwMDZkYmZkOTI0NDg1MzY3ZTQ4NDViMDhmM2I1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUlu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1l
SW5mby5oCkBAIC0zNCw3ICszNCw3IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIqIENWUGl4
ZWxCdWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKiBDVlBpeGVs
QnVmZmVyUG9vbFJlZjsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBWaWRlb0ZyYW1lOwor
Y2xhc3MgVmlkZW9GcmFtZUJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEs
OCArNTEsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3cml0ZVBpeGVsQnVm
ZmVyKENWUGl4ZWxCdWZmZXJSZWYsIHVpbnQ4X3QqIGRhdGEpOwogCiAjaWYgVVNFKExJQldFQlJU
QykKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkVmlkZW9GcmFtZUluZm8gZnJvbVZp
ZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCB3cml0ZVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgdWludDhfdCog
ZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJlZFZpZGVvRnJhbWVJbmZvIGZy
b21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgd3JpdGVWaWRlb0ZyYW1lQnVmZmVyKHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1
ZmZlciYsIHVpbnQ4X3QqIGRhdGEpOwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBzaXpl
X3Qgc3RvcmFnZVNpemUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8ubW0KaW5kZXggNjFlZjJjZWJjNzllNzc0Zjg5
NzE1NmE5ZjcxYmI1NmU0NGM0NjZmNi4uYWRiMTk0ZmI0ZjdiMGE1YTZlN2NjY2EwMmEyYjg4MWFk
YzYzNjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVk
VmlkZW9GcmFtZUluZm8ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hh
cmVkVmlkZW9GcmFtZUluZm8ubW0KQEAgLTc4LDYgKzc4LDcgQEAgc2l6ZV90IFNoYXJlZFZpZGVv
RnJhbWVJbmZvOjpzdG9yYWdlU2l6ZSgpIGNvbnN0CiB2b2lkIFNoYXJlZFZpZGVvRnJhbWVJbmZv
OjplbmNvZGUodWludDhfdCogZGVzdGluYXRpb24pCiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6
RW5jb2RlciBlbmNvZGVyOworCiAgICAgZW5jb2RlciA8PCAodWludDMyX3QpbV9idWZmZXJUeXBl
OwogICAgIGVuY29kZXIgPDwgbV93aWR0aDsKICAgICBlbmNvZGVyIDw8IG1faGVpZ2h0OwpAQCAt
MjA3LDcgKzIwOCw2IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBTaGFyZWRWaWRlb0Zy
YW1lSW5mbzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tTWVtb3J5KGNvCiAgICAgICAgIGRhdGEgKz0g
bV9ieXRlc1BlclJvd1BsYW5lQjsKICAgICB9CiAKLSAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFz
ZUFkZHJlc3MocmF3UGl4ZWxCdWZmZXIsIDApOwogICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKIH0K
IApAQCAtMjY2LDMxICsyNjYsMzEgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQb29sUmVmPiBT
aGFyZWRWaWRlb0ZyYW1lSW5mbzo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlclBvb2wKIH0KIAogI2lm
IFVTRShMSUJXRUJSVEMpCi1TaGFyZWRWaWRlb0ZyYW1lSW5mbyBTaGFyZWRWaWRlb0ZyYW1lSW5m
bzo6ZnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKK1NoYXJl
ZFZpZGVvRnJhbWVJbmZvIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpmcm9tVmlkZW9GcmFtZShjb25z
dCB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImIGZyYW1lKQogewotICAgIGF1dG8gYnVmZmVyID0g
ZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7Ci0gICAgaWYgKGJ1ZmZlci0+dHlwZSgpID09IHdl
YnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkKKyAgICBpZiAoZnJhbWUudHlw
ZSgpID09IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkKICAgICAgICAg
cmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsgfTsKIAotICAgIGF1dG8gdHlwZSA9IGJ1ZmZl
ci0+dHlwZSgpOwotCisgICAgYXV0byB0eXBlID0gZnJhbWUudHlwZSgpOwogICAgIGlmICh0eXBl
ID09IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjApCiAgICAgICAgIHJldHVy
biBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQ
bGFuYXJGdWxsUmFuZ2UsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUu
d2lkdGgoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19j
YXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVp
bnQzMl90PihmcmFtZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdo
dCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpIC8gMiB9OworICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpIC8gMiwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSAvIDIsIHN0YXRpY19jYXN0PHVpbnQzMl90Pihm
cmFtZS53aWR0aCgpKSB9OwogCiAgICAgaWYgKHR5cGUgPT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVm
ZmVyOjpUeXBlOjprSTAxMCkKICAgICAgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsg
a0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2UsCiAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0
aCgpICogMiksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgo
KSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihmcmFtZS53aWR0aCgpKSB9OworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGZyYW1lLndpZHRoKCkpIC8gMiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdo
dCgpKSAvIDIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSAqIDIgfTsKIAog
ICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IH07CiB9CiAKLWJvb2wgU2hhcmVkVmlk
ZW9GcmFtZUluZm86OndyaXRlVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZy
YW1lLCB1aW50OF90KiBkYXRhKQorYm9vbCBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6d3JpdGVWaWRl
b0ZyYW1lQnVmZmVyKHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYgZnJhbWVCdWZmZXIsIHVpbnQ4
X3QqIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5
cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlIHx8IG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhl
bEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZSk7Ci0gICAgcmV0dXJuIHdl
YnJ0Yzo6Y29weVZpZGVvRnJhbWUoZnJhbWUsIGRhdGEpOworICAgIGVuY29kZShkYXRhKTsKKyAg
ICBkYXRhICs9IHNpemVvZihTaGFyZWRWaWRlb0ZyYW1lSW5mbyk7CisgICAgcmV0dXJuIHdlYnJ0
Yzo6Y29weVZpZGVvRnJhbWVCdWZmZXIoZnJhbWVCdWZmZXIsIGRhdGEpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmNwcAppbmRleCBjNWIyZGRmOWU2Y2M0MDhhMGM4ZjYyMDAyOWExYWIxY2NmN2MxMzRj
Li4zMTFhZjVlMGRhNWMzZWFmYjAzZDhkOWJlYzQ5MjVkOWYxNWQyOWVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3Bw
CkBAIC04Nyw0MSArODcsNDkgQEAgc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiB0cmFuc2ZlckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKENWUGkKIAogc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1lZGlh
U2FtcGxlJiBzYW1wbGUsIFNob3VsZENoZWNrRm9ySU9TdXJmYWNlIHNob3VsZENoZWNrRm9ySU9T
dXJmYWNlKQogewotICAgIEFTU0VSVChzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09IFBs
YXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpOwotCi0gICAgUmV0YWluUHRyIGltYWdl
QnVmZmVyID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZS5wbGF0Zm9y
bVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcik7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIlJlbW90ZVZpZGVvU2FtcGxlOjpj
cmVhdGU6IENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIgcmV0dXJuZWQgbnVsbHB0ciIpOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4gaW1hZ2VCdWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gaW9T
dXJmYWNlOwotICAgIGF1dG8gc3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UoaW1h
Z2VCdWZmZXIuZ2V0KCkpOwotICAgIGlmICghc3VyZmFjZSAmJiBzaG91bGRDaGVja0ZvcklPU3Vy
ZmFjZSA9PSBTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6WWVzKSB7Ci0gICAgICAgIC8vIFNwZWNp
YWwgY2FzZSBmb3IgY2FudmFzIGRhdGEgdGhhdCBpcyBSR0JBLCBub3QgSU9TdXJmYWNlIGJhY2tl
ZC4KLSAgICAgICAgYXV0byBwaXhlbEZvcm1hdFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxG
b3JtYXRUeXBlKGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICAgICAgaWYgKHBpeGVsRm9ybWF0VHlw
ZSAhPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihNZWRpYSwgIlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUgZG9lcyBub3Qgc3VwcG9y
dCBub24gSU9TdXJmYWNlIGJhY2tlZCBzYW1wbGVzIHRoYXQgYXJlIG5vdCBCR1JBIik7CisgICAg
SU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBudWxscHRyOworICAgIGlmIChzYW1wbGUucGxhdGZvcm1T
YW1wbGUoKS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpIHsKKyAg
ICAgICAgaW1hZ2VCdWZmZXIgPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoc2Ft
cGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKTsKKyAgICAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJS
ZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlOiBDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyIHJl
dHVybmVkIG51bGxwdHIiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CiAKLSAgICAgICAgaW9TdXJmYWNlID0gdHJhbnNmZXJCR1JBUGl4ZWxCdWZmZXJUb0lPU3VyZmFj
ZShpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgIGlmICghaW9TdXJmYWNlKQotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9T
dXJmYWNlKGltYWdlQnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKCFzdXJmYWNlICYmIHNob3Vs
ZENoZWNrRm9ySU9TdXJmYWNlID09IFNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpZZXMpIHsKKyAg
ICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgY2FudmFzIGRhdGEgdGhhdCBpcyBSR0JBLCBu
b3QgSU9TdXJmYWNlIGJhY2tlZC4KKyAgICAgICAgICAgIGF1dG8gcGl4ZWxGb3JtYXRUeXBlID0g
Q1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAg
ICAgICAgICBpZiAocGl4ZWxGb3JtYXRUeXBlICE9IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEp
IHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIlJlbW90ZVZpZGVv
U2FtcGxlOjpjcmVhdGUgZG9lcyBub3Qgc3VwcG9ydCBub24gSU9TdXJmYWNlIGJhY2tlZCBzYW1w
bGVzIHRoYXQgYXJlIG5vdCBCR1JBIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlvU3VyZmFjZSA9IHRyYW5zZmVyQkdSQVBp
eGVsQnVmZmVyVG9JT1N1cmZhY2UoaW1hZ2VCdWZmZXIuZ2V0KCkpOworICAgICAgICAgICAgaWYg
KCFpb1N1cmZhY2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAg
c3VyZmFjZSA9IGlvU3VyZmFjZS0+c3VyZmFjZSgpOworICAgICAgICAgICAgc3VyZmFjZSA9IGlv
U3VyZmFjZS0+c3VyZmFjZSgpOworICAgICAgICB9CiAgICAgfQorICAgIGlmICghc3VyZmFjZSAm
JiBzaG91bGRDaGVja0ZvcklPU3VyZmFjZSA9PSBTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6WWVz
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBXVEZNb3Zl
KGltYWdlQnVmZmVyKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNhbXBsZS5wcmVz
ZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJv
cmVkKCkpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVW
aWRlb1NhbXBsZTo6Y3JlYXRlKFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIGltYWdlQnVm
ZmVyLCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbiByb3RhdGlvbiwgU2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2Ugc2hvdWxkQ2hlY2tGb3JJT1N1
cmZhY2UpCiB7Ci0gICAgYXV0byBzdXJmYWNlID0gQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFjZShp
bWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgaWYgKCFzdXJmYWNlICYmIHNob3VsZENoZWNrRm9ySU9T
dXJmYWNlID09IFNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpZZXMpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWEsICJSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlOiBDVlBpeGVsQnVm
ZmVyR2V0SU9TdXJmYWNlIHJldHVybmVkIG51bGxwdHIiKTsKKyAgICBJT1N1cmZhY2VSZWYgc3Vy
ZmFjZSA9IG51bGxwdHI7CisgICAgaWYgKGltYWdlQnVmZmVyKSB7CisgICAgICAgIHN1cmZhY2Ug
PSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKGltYWdlQnVmZmVyLmdldCgpKTsKKyAgICAgICAg
aWYgKCFzdXJmYWNlICYmIHNob3VsZENoZWNrRm9ySU9TdXJmYWNlID09IFNob3VsZENoZWNrRm9y
SU9TdXJmYWNlOjpZZXMpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAi
UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZTogQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFjZSByZXR1
cm5lZCBudWxscHRyIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQor
ICAgIH0gZWxzZSBpZiAoc2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UgPT0gU2hvdWxkQ2hlY2tGb3JJ
T1N1cmZhY2U6OlllcykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCiAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2Ft
cGxlKHN1cmZhY2UsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNlKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLm1tCmluZGV4IGMxMjZiOTNlODcwNmY5NTUzMGY2MTI2ZjhhZDI1ZmFmNjIyMmFk
NzEuLmJjYzM1NjA0ZWExMDQ1ZWE4ZTU0Y2JlNjQ4ODZjYjk0Y2I0M2I3MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCkBAIC0zMzUsNiArMzM1LDcgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogCisgICAgLy8gRklYTUU6IFdlIGhhdmUgdG8gY2hlY2sgc2Ft
cGxlIHR5cGUuCiAgICAgYXV0byBzYW1wbGVUb0VucXVldWUgPSBzYW1wbGUucGxhdGZvcm1TYW1w
bGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXI7CiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52
YWx1ZSgpICsgcmVuZGVyZXJMYXRlbmN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmlu
ZGV4IDJiYmQ2YTRjYjBkMjJkMmRmOTk3NzVlZTVlZTI3Yzc4YTIwZDU5NTUuLjgwNDkxNWQzYjRk
NjljMGVjMzQxZTFiYWI2ODBlYTA0ODMyNDFkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIkxvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5oIgorI2lt
cG9ydCAiTWVkaWFTYW1wbGVXZWJSVEMuaCIKICNpbXBvcnQgIk1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW1wb3J0ICJQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWLmgiCkBAIC05OTQsNyArOTk1LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAg
aWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+
KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX2ltYWdlUGFpbnRlci5tZWRpYVNh
bXBsZS0+cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKKyAgICBhdXRv
IHBsYXRmb3JtU2FtcGxlID0gbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBsYXRmb3JtU2Ft
cGxlKCk7CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcjsKKyAgICBpZiAocGxhdGZv
cm1TYW1wbGUudHlwZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKQorICAg
ICAgICBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01T
YW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVC
dWZmZXIpKTsKKyAgICBlbHNlCisgICAgICAgIHBpeGVsQnVmZmVyID0gcGxhdGZvcm1TYW1wbGUu
c2FtcGxlLnZpZGVvRnJhbWUtPnRvQ1ZQaXhlbEJ1ZmZlcigpOwogICAgIG1faW1hZ2VQYWludGVy
LmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
bW0KaW5kZXggODQ4NDEwMGVhYzVlMTE1ZTliMGNmMDEyMGJhYmY3OGZiMWExMjc0Yy4uZTc3ZmVh
NjE0N2U2ZGJhYzg5YzE0ZjM4OThmYWZmZTIyYWI1NmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNDAzLDYgKzQwMyw3
IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjb3B5U2FtcGxl
QnVmZmVyV2l0aEN1cnJlbnRUaW1lU3RhbXAoCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiB7Cisg
ICAgLy8gRklYTUU6IFdlIGhhdmUgdG8gY2hlY2sgc2FtcGxlIHR5cGUuCiAgICAgaWYgKCFtX2Zp
cnN0VmlkZW9GcmFtZSkgewogICAgICAgICBtX2ZpcnN0VmlkZW9GcmFtZSA9IHRydWU7CiAgICAg
ICAgIG1fcmVzdW1lZFZpZGVvVGltZSA9IFBBTDo6Q01DbG9ja0dldFRpbWUoUEFMOjpDTUNsb2Nr
R2V0SG9zdFRpbWVDbG9jaygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU2FtcGxlV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU2FtcGxlV2ViUlRDLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTg0YTYy
ZjEwZGE0YmE0MDEzYzZlYzA2NzZjNzBkNGRkYWIzYTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTYW1wbGVXZWJSVEMuY3BwCkBA
IC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZVdlYlJUQy5o
IgorCisjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg+CisKKyNp
bmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlICJDb3JlVmlkZW9T
b2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpZGVvRnJhbWU6OlZpZGVvRnJh
bWUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgYnVmZmVyLCBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQsIE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBNZWRpYVRpbWUgZGVjb2RlVGltZSkKKyAgICA6IG1fdmlkZW9Sb3Rh
dGlvbih2aWRlb1JvdGF0aW9uKQorICAgICwgbV92aWRlb01pcnJvcmVkKHZpZGVvTWlycm9yZWQp
CisgICAgLCBtX3ByZXNlbnRhdGlvblRpbWUocHJlc2VudGF0aW9uVGltZSkKKyAgICAsIG1fZGVj
b2RlVGltZShkZWNvZGVUaW1lKQorICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQorewor
ICAgIG1fdmlkZW9QaXhlbEZvcm1hdCA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUo
c3RkOjpnZXQ8UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PihtX2J1ZmZlcikuZ2V0KCkpOwor
fQorCitWaWRlb0ZyYW1lOjpWaWRlb0ZyYW1lKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZp
ZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyLCBDb252ZXJzaW9uQ2FsbGJhY2smJiBjb252ZXJzaW9u
Q2FsbGJhY2ssIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24sIGJvb2wg
dmlkZW9NaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhVGltZSBkZWNv
ZGVUaW1lKQorICAgIDogbV92aWRlb1JvdGF0aW9uKHZpZGVvUm90YXRpb24pCisgICAgLCBtX3Zp
ZGVvTWlycm9yZWQodmlkZW9NaXJyb3JlZCkKKyAgICAsIG1fcHJlc2VudGF0aW9uVGltZShwcmVz
ZW50YXRpb25UaW1lKQorICAgICwgbV9kZWNvZGVUaW1lKGRlY29kZVRpbWUpCisgICAgLCBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgLCBtX2NvbnZlcnNpb25DYWxsYmFjayhXVEZNb3Zl
KGNvbnZlcnNpb25DYWxsYmFjaykpCit7CisgICAgc3dpdGNoIChzdGQ6OmdldDxydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPj4obV9idWZmZXIpLT50eXBlKCkpIHsK
KyAgICBjYXNlIHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjA6CisgICAgICAg
IG1fdmlkZW9QaXhlbEZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFu
YXJGdWxsUmFuZ2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugd2VicnRjOjpWaWRlb0ZyYW1l
QnVmZmVyOjpUeXBlOjprSTAxMDoKKyAgICAgICAgbV92aWRlb1BpeGVsRm9ybWF0ID0ga0NWUGl4
ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30K
Kworc3RhdGljIGlubGluZSB3ZWJydGM6OlZpZGVvUm90YXRpb24gdG9XZWJSVENSb3RhdGlvbihN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQoreworICAgIHN3aXRjaCAo
dmlkZW9Sb3RhdGlvbikgeworICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5v
bmU6CisgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA7CisgICAgY2FzZSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjoKKyAgICAgICAgcmV0dXJuIHdl
YnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOworICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb246OlJpZ2h0OgorICAgICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl85MDsK
KyAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OgorICAgICAgICByZXR1
cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA7CisgICAgfQorfQorCitydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBWaWRlb0ZyYW1lOjp0b1dlYlJUQ1ZpZGVv
RnJhbWVCdWZmZXIoKQoreworICAgIEFTU0VSVCghbV92aWRlb01pcnJvcmVkKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CisKKyAgICByZXR1cm4gc3dpdGNoT24obV9idWZm
ZXIsIFtdKFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYgYnVmZmVyKSB7CisgICAgICAgIHJl
dHVybiB3ZWJydGM6OnBpeGVsQnVmZmVyVG9GcmFtZShidWZmZXIuZ2V0KCkpOworICAgIH0sIFtd
KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiBidWZmZXIpIHsK
KyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICB9KTsKK30KKworQ1ZQaXhlbEJ1ZmZlclJlZiBW
aWRlb0ZyYW1lOjp0b0NWUGl4ZWxCdWZmZXIoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2J1
ZmZlckxvY2sgfTsKKyAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPj4obV9idWZmZXIpKQorICAgICAgICBtX2J1
ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb252ZXJzaW9uQ2FsbGJhY2ssIHsgfSkoKnN0ZDo6Z2V0
PHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+PihtX2J1ZmZlcikp
OworICAgIHJldHVybiBzdGQ6OmdldDxSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4+KG1fYnVm
ZmVyKS5nZXQoKTsKK30KKworVmlkZW9GcmFtZTo6QnVmZmVyIFZpZGVvRnJhbWU6OmJ1ZmZlcigp
Cit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9OworICAgIHJldHVybiBtX2J1
ZmZlcjsKK30KKworI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPKSAmJiBFTkFCTEVfVklERU8KK3N0
YXRpYyBpbmxpbmUgSW1hZ2VPcmllbnRhdGlvbiB0b0ltYWdlT3JpZW50YXRpb24oTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbikKK3sKKyAgICBzd2l0Y2ggKHZpZGVvUm90
YXRpb24pIHsKKyAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOgorICAg
ICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZTsKKyAgICBjYXNlIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRh
dGlvbjo6T3JpZ2luQm90dG9tUmlnaHQ7CisgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6UmlnaHQ6CisgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdo
dFRvcDsKKyAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OgorICAgICAg
ICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbTsKKyAgICB9Cit9CisK
K3N0ZDo6b3B0aW9uYWw8TWVkaWFTYW1wbGVWaWRlb0ZyYW1lPiBNZWRpYVNhbXBsZVdlYlJUQzo6
dmlkZW9GcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhU2FtcGxlVmlkZW9GcmFtZSB7
IGNvbnN0X2Nhc3Q8VmlkZW9GcmFtZSY+KG1fdmlkZW9GcmFtZS5nZXQoKSkudG9DVlBpeGVsQnVm
ZmVyKCksIHRvSW1hZ2VPcmllbnRhdGlvbihtX3ZpZGVvRnJhbWUtPnZpZGVvUm90YXRpb24oKSkg
fTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVNhbXBsZVdlYlJUQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTYW1wbGVXZWJSVEMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zODQ1YzQyZjY1NzQyYmI1MjA4YjRkZDg4Y2M5OGIxMzk1Y2E3MGJlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTYW1w
bGVXZWJSVEMuaApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lZGlhU2FtcGxl
LmgiCisjaW5jbHVkZSA8dmFyaWFudD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCisjaWYgVVNF
KExJQldFQlJUQykKKworQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KKworI2luY2x1ZGUg
PHdlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuaD4KKworQUxMT1dfVU5VU0VEX1BBUkFNRVRF
UlNfRU5ECisKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvRnJh
bWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFZpZGVvRnJh
bWUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbiwgYm9vbCB2aWRlb01pcnJvcmVkLCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSA9IHsg
fSwgTWVkaWFUaW1lIGRlY29kZVRpbWUgPSB7IH0pOworICAgIHVzaW5nIENvbnZlcnNpb25DYWxs
YmFjayA9IEZ1bmN0aW9uPFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPih3ZWJydGM6OlZpZGVv
RnJhbWVCdWZmZXImKT47CisgICAgVmlkZW9GcmFtZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpWaWRlb0ZyYW1lQnVmZmVyPiYmLCBDb252ZXJzaW9uQ2FsbGJhY2smJiwgTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb24sIGJvb2wgdmlkZW9NaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUgPSB7IH0sIE1lZGlhVGltZSBkZWNvZGVUaW1lID0geyB9KTsKKworICAgIE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
Um90YXRpb247IH0KKyAgICBib29sIHZpZGVvTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZGVvTWlycm9yZWQ7IH0KKyAgICB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV92aWRlb1BpeGVsRm9ybWF0OyB9CisgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRp
bWUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZVRpbWU7IH0KKyAgICBNZWRpYVRpbWUgZGVjb2Rl
VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZTsgfQorICAgIEZsb2F0U2l6
ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgeyByZXR1cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4o
bV93aWR0aCksIHN0YXRpY19jYXN0PGZsb2F0PihtX2hlaWdodCkgfTsgfQorCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gdG9XZWJSVENWaWRlb0ZyYW1l
QnVmZmVyKCk7CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiB0b0NWUGl4ZWxCdWZmZXIoKTsKKworICAg
IHVzaW5nIEJ1ZmZlciA9IHN0ZDo6dmFyaWFudDxSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4s
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+PjsKKyAgICBXRUJD
T1JFX0VYUE9SVCBCdWZmZXIgYnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246Ok5vbmUgfTsKKyAgICBib29sIG1fdmlkZW9NaXJyb3JlZCB7IGZhbHNlIH07CisgICAgdWlu
dDMyX3QgbV92aWRlb1BpeGVsRm9ybWF0IHsgMCB9OworICAgIE1lZGlhVGltZSBtX3ByZXNlbnRh
dGlvblRpbWU7CisgICAgTWVkaWFUaW1lIG1fZGVjb2RlVGltZTsKKyAgICB1bnNpZ25lZCBtX3dp
ZHRoIHsgMCB9OworICAgIHVuc2lnbmVkIG1faGVpZ2h0IHsgMCB9OworCisgICAgTG9jayBtX2J1
ZmZlckxvY2s7CisgICAgQnVmZmVyIG1fYnVmZmVyICBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYnVm
ZmVyTG9jayk7CisgICAgQ29udmVyc2lvbkNhbGxiYWNrIG1fY29udmVyc2lvbkNhbGxiYWNrOwor
fTsKKworY2xhc3MgTWVkaWFTYW1wbGVXZWJSVEMgZmluYWwgOiBwdWJsaWMgTWVkaWFTYW1wbGUg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVXZWJSVEM+IGNyZWF0ZShVbmlx
dWVSZWY8VmlkZW9GcmFtZT4mJiB2aWRlb0ZyYW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1l
ZGlhU2FtcGxlV2ViUlRDIHsgV1RGTW92ZSh2aWRlb0ZyYW1lKSB9KTsgfQorCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IE1lZGlhU2FtcGxlV2ViUlRDKFVuaXF1ZVJlZjxWaWRlb0ZyYW1lPiYmIHZp
ZGVvRnJhbWUpCisgICAgICAgIDogbV92aWRlb0ZyYW1lKFdURk1vdmUodmlkZW9GcmFtZSkpCisg
ICAgeworICAgIH0KKworICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV92aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCk7IH0KKyAgICBNZWRp
YVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdmlkZW9GcmFtZS0+ZGVj
b2RlVGltZSgpOyB9CisgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4geyB9OyB9CisgICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV92aWRlb0ZyYW1lLT52aWRlb1JvdGF0aW9uKCk7IH0KKyAgICBib29sIHZpZGVv
TWlycm9yZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ZpZGVvRnJhbWUtPnZpZGVvTWlycm9y
ZWQoKTsgfQorICAgIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3ZpZGVvRnJhbWUtPnZpZGVvUGl4ZWxGb3JtYXQoKTsgfQorI2lmIGRlZmluZWQoRU5B
QkxFX1ZJREVPKSAmJiBFTkFCTEVfVklERU8KKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhU2FtcGxl
VmlkZW9GcmFtZT4gdmlkZW9GcmFtZSgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisgICAgUGxhdGZv
cm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBmaW5hbCB7IHJldHVybiB7IFBsYXRmb3JtU2FtcGxl
OjpWaWRlb0ZyYW1lU2FtcGxlVHlwZSwgeyAudmlkZW9GcmFtZSA9ICZtX3ZpZGVvRnJhbWUuZ2V0
KCkgfSB9OyB9CisKKyAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUlt
YWdlRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBdG9tU3RyaW5n
IHRyYWNrSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KKyAgICB2b2lkIHNldFRyYWNr
SUQoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29u
c3QgeyByZXR1cm4gMDsgfQorICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV92aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25TaXplKCk7IH0KKyAgICB2
b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbCB7IH0KKyAgICB2
b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgZmlu
YWwgeyB9CisgICAgYm9vbCBpc0RpdmlzYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBs
ZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmLCBVc2VFbmRUaW1lKSBmaW5hbCB7IHJldHVybiB7
IH07IH0KKyAgICBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gUmVmIHsgY29uc3RfY2FzdDxNZWRpYVNhbXBsZVdlYlJUQyY+KCp0
aGlzKSB9OyB9CisgICAgc3RkOjpvcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
IGZpbmFsIHsgfTsKKyAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFNhbXBsZUZsYWdzOjpOb25lOyB9CisKKyAgICBVbmlxdWVSZWY8VmlkZW9GcmFtZT4gbV92aWRl
b0ZyYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRleCBkMGZlOGUwNjU4MjJmODA3ZWJi
NGQ2NWEzMDdiNGJlYzBiOGZhYTYyLi45ZDg0YTRlYjM2ZDY0MWZhOTg3Y2QxMTdkZGE1MzAzZTdl
YmY3ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2EuaApAQCAtNDEsMTQgKzQxLDE2IEBAIGVudW0gY2xhc3MgQnVmZmVyVHlwZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBWaWRlb0ZyYW1lOworCiBjbGFzcyBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2UgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2E+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50
ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAKIHByaXZhdGU6CiAgICAgUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2EocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVy
ZmFjZT4mJiwgU3RyaW5nJiYpOwotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhl
bEJ1ZmZlckZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOwogICAgIENW
UGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBo
ZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRnJh
bWU+IHRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKTsKIAogICAgIC8vIHJ0
Yzo6VmlkZW9TaW5rSW50ZXJmYWNlCiAgICAgdm9pZCBPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSYpIGZpbmFsOwpAQCAtNTksNyArNjEsOCBAQCBwcml2YXRlOgogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgIHNpemVfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwogI2VuZGlm
Ci0gICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQb29sUmVmPiBtX3BpeGVsQnVmZmVyUG9vbDsK
KyAgICBMb2NrIG1fcGl4ZWxCdWZmZXJQb29sTG9jazsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclBvb2xSZWY+IG1fcGl4ZWxCdWZmZXJQb29sIFdURl9HVUFSREVEX0JZX0xPQ0sobV9waXhl
bEJ1ZmZlclBvb2xMb2NrKTsKICAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xXaWR0aCB7IDAg
fTsKICAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgeyAwIH07CiAgICAgd2VicnRj
OjpCdWZmZXJUeXBlIG1fcGl4ZWxCdWZmZXJQb29sQnVmZmVyVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCA1MzdlYTBiNTExMzFj
Y2MxYzg1ZDBiMDNlYzNhNzQyY2I2Mjc5NDZkLi5iYzkzNWJkYTZkMDNkZDc1MDdhNzUzZTI1Zjgw
YzVkNDQ2MWMxNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJDVlV0aWxpdGllcy5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjaW1w
b3J0ICJNZWRpYVNhbXBsZVdlYlJUQy5oIgogI2ltcG9ydCAiUmVhbHRpbWVWaWRlb1V0aWxpdGll
cy5oIgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAKQEAgLTg5LDcgKzkwLDcgQEAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoc2l6ZV90
IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQogICAgIHJldHVybiBhZG9wdENGKHBpeGVsQnVmZmVyKTsK
IH0KIAotQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6
QnVmZmVyVHlwZSBidWZmZXJUeXBlKQorQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSBXVEZfSUdOT1JFU19USFJF
QURfU0FGRVRZX0FOQUxZU0lTCiB7CiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyUG9vbCB8fCBtX3Bp
eGVsQnVmZmVyUG9vbFdpZHRoICE9IHdpZHRoIHx8IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0ICE9
IGhlaWdodCB8fCBtX3BpeGVsQnVmZmVyUG9vbEJ1ZmZlclR5cGUgIT0gYnVmZmVyVHlwZSkgewog
ICAgICAgICBPU1R5cGUgcG9vbEJ1ZmZlclR5cGU7CkBAIC0xMTgsNDMgKzExOSw4IEBAIENWUGl4
ZWxCdWZmZXJQb29sUmVmIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1
ZmZlclBvb2woc2l6ZV90IHdpCiAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpOwog
fQogCi1SZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2E6OnBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0Zy
YW1lJiBmcmFtZSkKK3N0ZDo6dW5pcXVlX3B0cjxWaWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYTo6dG9WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYg
ZnJhbWUpCiB7Ci0gICAgaWYgKG11dGVkKCkpIHsKLSAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWUg
fHwgbV9ibGFja0ZyYW1lV2lkdGggIT0gZnJhbWUud2lkdGgoKSB8fCBtX2JsYWNrRnJhbWVIZWln
aHQgIT0gZnJhbWUuaGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIG1fYmxhY2tGcmFtZVdpZHRoID0g
ZnJhbWUud2lkdGgoKTsKLSAgICAgICAgICAgIG1fYmxhY2tGcmFtZUhlaWdodCA9IGZyYW1lLmhl
aWdodCgpOwotICAgICAgICAgICAgbV9ibGFja0ZyYW1lID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZl
cihtX2JsYWNrRnJhbWVXaWR0aCwgbV9ibGFja0ZyYW1lSGVpZ2h0KTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gbV9ibGFja0ZyYW1lLmdldCgpOwotICAgIH0KLQotICAgIC8vIEluIGNhc2Ug
b2YgaW4gbWVtb3J5IHNhbXBsZXMsIHdlIGhhdmUgbm9uIGludGVybGVhdmVkIFlVViBkYXRhIHdo
aWxlIENWUGl4ZWxCdWZmZXJzIHByZWZlciBpbnRlcmxlYXZlZCBZVVYgZGF0YS4KLSAgICAvLyBN
YXliZSB3ZSBzaG91bGQgaW50cm9kdWNlIGEgTWVkaWFTYW1wbGUgdGhhdCB3b3VsZCByZXByZXNl
bnQgbm9uIGludGVybGVhdmVkIFlVViBkYXRhIGFzIGFuIG9wdGltaXphdGlvbi4KLSAgICByZXR1
cm4gYWRvcHRDRih3ZWJydGM6OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbdGhp
c10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVy
VHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7Ci0gICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29s
ID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIGJ1ZmZlclR5cGUpOwotICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOwotICAgICAg
ICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4ZWxCdWZmZXIoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbV9waXhlbEJ1ZmZlclBvb2wuZ2V0KCksICZwaXhlbEJ1ZmZlcik7Ci0K
LSAgICAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKSB7Ci0gICAgICAgICAgICBF
UlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgY3JlYXRpbmcg
YSBwaXhlbCBidWZmZXIgd2l0aCBlcnJvciAiLCBzdGF0dXMpOwotICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOwotICAgIH0p
KTsKLX0KLQotdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6T25GcmFtZShj
b25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQotewotICAgIGlmICghaXNQcm9kdWNpbmdE
YXRhKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIHdpZHRoID0gZnJhbWUud2lk
dGgoKTsKLSAgICB1bnNpZ25lZCBoZWlnaHQgPSBmcmFtZS5oZWlnaHQoKTsKLQogICAgIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uOwogICAgIHN3aXRjaCAoZnJhbWUucm90YXRp
b24oKSkgewogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOgpAQCAtMTY1LDQ5ICsx
MzEsNjcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6T25GcmFtZShj
b25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQogICAgICAgICBicmVhazsKICAgICBjYXNl
IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA6CiAgICAgICAgIHJvdGF0aW9uID0gTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OwotICAgICAgICBzdGQ6OnN3YXAod2lkdGgsIGhlaWdo
dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA6
CiAgICAgICAgIHJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ7Ci0g
ICAgICAgIHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIo
KSAmJiAhKCsrbV9udW1iZXJPZkZyYW1lcyAlIDYwKSwgTE9HSURFTlRJRklFUiwgImZyYW1lICIs
IG1fbnVtYmVyT2ZGcmFtZXMsICIsIHJvdGF0aW9uICIsIGZyYW1lLnJvdGF0aW9uKCksICIgc2l6
ZSAiLCB3aWR0aCwgIngiLCBoZWlnaHQpOwotI2VuZGlmCisgICAgaWYgKG11dGVkKCkpIHsKKyAg
ICAgICAgaWYgKCFtX2JsYWNrRnJhbWUgfHwgbV9ibGFja0ZyYW1lV2lkdGggIT0gZnJhbWUud2lk
dGgoKSB8fCBtX2JsYWNrRnJhbWVIZWlnaHQgIT0gZnJhbWUuaGVpZ2h0KCkpIHsKKyAgICAgICAg
ICAgIG1fYmxhY2tGcmFtZVdpZHRoID0gZnJhbWUud2lkdGgoKTsKKyAgICAgICAgICAgIG1fYmxh
Y2tGcmFtZUhlaWdodCA9IGZyYW1lLmhlaWdodCgpOworICAgICAgICAgICAgbV9ibGFja0ZyYW1l
ID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihtX2JsYWNrRnJhbWVXaWR0aCwgbV9ibGFja0ZyYW1l
SGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWaWRlb0ZyYW1l
PihtX2JsYWNrRnJhbWUuZ2V0KCksIHJvdGF0aW9uLCBmYWxzZSk7CisgICAgfQorICAgIGlmIChh
dXRvIHBpeGVsQnVmZmZlciA9IHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUpKQor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWaWRlb0ZyYW1lPihXVEZNb3ZlKHBpeGVsQnVmZmZl
ciksIHJvdGF0aW9uLCBmYWxzZSk7CisKKyAgICBhdXRvIGJ1ZmZlclR5cGUgPSBmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKS0+dHlwZSgpOworICAgIGlmIChidWZmZXJUeXBlICE9IHdlYnJ0Yzo6
VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgJiYgYnVmZmVyVHlwZSAhPSB3ZWJydGM6OlZp
ZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJMDEwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFZpZGVvRnJhbWU+KGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZl
cigpLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHRoaXNdKGF1dG8mIGJ1ZmZlcikg
eworICAgICAgICByZXR1cm4gYWRvcHRDRih3ZWJydGM6OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZy
YW1lQnVmZmVyKGJ1ZmZlciwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2Vi
cnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgeworICAgICAg
ICAgICAgTG9ja2VyIGxvY2sobV9waXhlbEJ1ZmZlclBvb2xMb2NrKTsKKyAgICAgICAgICAgIGF1
dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQs
IGJ1ZmZlclR5cGUpOworICAgICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYg
cGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAgICAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVs
QnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxC
dWZmZXJQb29sLmdldCgpLCAmcGl4ZWxCdWZmZXIpOworCisgICAgICAgICAgICBpZiAoc3RhdHVz
ICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBFUlJPUl9MT0dfSUYobG9n
Z2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgY3JlYXRpbmcgYSBwaXhlbCBidWZmZXIg
d2l0aCBlcnJvciAiLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOworICAgICAgICB9
KSk7CisgICAgfSwgcm90YXRpb24sIGZhbHNlKTsKK30KIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBwaXhlbEJ1ZmZlckZyb21WaWRlb0ZyYW1lKGZyYW1lKTsKLSAgICBpZiAoIXBpeGVsQnVmZmVy
KSB7Ci0gICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkZh
aWxlZCB0byBnZXQgYSBwaXhlbCBidWZmZXIgZnJvbSBhIGZyYW1lIik7Cit2b2lkIFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYgd2VicnRjVmlkZW9GcmFtZSkKK3sKKyAgICBpZiAoIWlzUHJvZHVjaW5nRGF0YSgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgQ01TYW1wbGVUaW1pbmdJbmZvIHRpbWluZ0luZm87
Ci0gICAgdGltaW5nSW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSBQQUw6OkNNVGltZU1ha2Uo
ZnJhbWUudGltZXN0YW1wX3VzKCksIDEwMDAwMDApOwotICAgIHRpbWluZ0luZm8uZGVjb2RlVGlt
ZVN0YW1wID0gUEFMOjprQ01UaW1lSW52YWxpZDsKLSAgICB0aW1pbmdJbmZvLmR1cmF0aW9uID0g
UEFMOjprQ01UaW1lSW52YWxpZDsKKyAgICB1bnNpZ25lZCB3aWR0aCA9IHdlYnJ0Y1ZpZGVvRnJh
bWUud2lkdGgoKTsKKyAgICB1bnNpZ25lZCBoZWlnaHQgPSB3ZWJydGNWaWRlb0ZyYW1lLmhlaWdo
dCgpOwogCi0gICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9u
OwotICAgIE9TU3RhdHVzIG9zdGF0dXMgPSBQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNy
ZWF0ZUZvckltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVyUmVm
KXBpeGVsQnVmZmVyLCAmZm9ybWF0RGVzY3JpcHRpb24pOwotICAgIGlmIChvc3RhdHVzICE9IG5v
RXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwg
IkZhaWxlZCB0byBpbml0aWFsaXplIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbiB3aXRoIGVycm9y
ICIsIHN0YXRpY19jYXN0PGludD4ob3N0YXR1cykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCkg
JiYgISgrK21fbnVtYmVyT2ZGcmFtZXMgJSA2MCksIExPR0lERU5USUZJRVIsICJmcmFtZSAiLCBt
X251bWJlck9mRnJhbWVzLCAiLCByb3RhdGlvbiAiLCB3ZWJydGNWaWRlb0ZyYW1lLnJvdGF0aW9u
KCksICIgc2l6ZSAiLCB3aWR0aCwgIngiLCBoZWlnaHQpOworI2VuZGlmCiAKLSAgICBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7Ci0gICAgb3N0YXR1cyA9IFBBTDo6Q01TYW1wbGVCdWZm
ZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ1ZJbWFn
ZUJ1ZmZlclJlZilwaXhlbEJ1ZmZlciwgZm9ybWF0RGVzY3JpcHRpb24sICZ0aW1pbmdJbmZvLCAm
c2FtcGxlQnVmZmVyKTsKLSAgICBDRlJlbGVhc2UoZm9ybWF0RGVzY3JpcHRpb24pOwotICAgIGlm
IChvc3RhdHVzICE9IG5vRXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwg
TE9HSURFTlRJRklFUiwgIkZhaWxlZCB0byBjcmVhdGUgdGhlIHNhbXBsZSBidWZmZXIgd2l0aCBl
cnJvciAiLCBzdGF0aWNfY2FzdDxpbnQ+KG9zdGF0dXMpKTsKKyAgICBhdXRvIHZpZGVvRnJhbWUg
PSB0b1ZpZGVvRnJhbWUod2VicnRjVmlkZW9GcmFtZSk7CisgICAgaWYgKCF2aWRlb0ZyYW1lKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgYXV0byBzYW1wbGUgPSBhZG9wdENGKHNhbXBs
ZUJ1ZmZlcik7CisgICAgaWYgKHdlYnJ0Y1ZpZGVvRnJhbWUucm90YXRpb24oKSA9PSB3ZWJydGM6
OmtWaWRlb1JvdGF0aW9uXzkwIHx8IHdlYnJ0Y1ZpZGVvRnJhbWUucm90YXRpb24oKSA9PSB3ZWJy
dGM6OmtWaWRlb1JvdGF0aW9uXzI3MCkKKyAgICAgICAgc3RkOjpzd2FwKHdpZHRoLCBoZWlnaHQp
OwogCiAgICAgc2V0SW50cmluc2ljU2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLQotICAg
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZS5n
ZXQoKSwgcm90YXRpb24pLCBtZXRhZGF0YUZyb21WaWRlb0ZyYW1lKGZyYW1lKSk7CisgICAgdmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGVXZWJSVEM6OmNyZWF0ZShtYWtlVW5pcXVlUmVm
RnJvbU5vbk51bGxVbmlxdWVQdHIoV1RGTW92ZSh2aWRlb0ZyYW1lKSkpLCBtZXRhZGF0YUZyb21W
aWRlb0ZyYW1lKHdlYnJ0Y1ZpZGVvRnJhbWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAK
aW5kZXggNThjNmJkZTQzNDY2ZWQzOGM3N2JlNjc1YTJiNzIxMjNkNzJlNzEyMi4uMWQxNGFmMjg0
YWU1MjcyYzUwYzNjYzFiODk0MTVjOWIxZTllMjBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNv
Y29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1lZGlhU2FtcGxlV2ViUlRDLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EuaCIKICNpbmNsdWRlICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgi
CiAKQEAgLTYzLDYgKzY0LDcgQEAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OlJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hKFJlZjxNZWRpYVN0cmUKIAogdm9pZCBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFT
YW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGVNZXRhZGF0YSkKIHsKKyAgICAvLyBUT0RPOiBGSVhN
RQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmICghKCsrbV9udW1iZXJPZkZyYW1l
cyAlIDYwKSkKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZnJhbWUgIiwgbV9u
dW1iZXJPZkZyYW1lcyk7CkBAIC04MywxOCArODUsMjIgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2VDb2NvYTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBs
ZSwKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgQVNTRVJUKHNhbXBsZS5wbGF0Zm9ybVNh
bXBsZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7Ci0gICAg
YXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01T
YW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUu
Y21TYW1wbGVCdWZmZXIpKTsKLSAgICBhdXRvIHBpeGVsRm9ybWF0VHlwZSA9IENWUGl4ZWxCdWZm
ZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOworICAgIGlmIChzYW1wbGUucGxhdGZv
cm1TYW1wbGUoKS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpIHsK
KyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+
KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihzYW1wbGUucGxhdGZvcm1TYW1wbGUo
KS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKKyAgICAgICAgYXV0byBwaXhlbEZvcm1hdFR5cGUg
PSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKIAotICAgIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0ZWRCdWZmZXIgPSBwaXhlbEJ1ZmZlcjsK
LSAgICBpZiAocGl4ZWxGb3JtYXRUeXBlICE9IHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkK
LSAgICAgICAgY29udmVydGVkQnVmZmVyID0gY29udmVydFRvWVVWKHBpeGVsQnVmZmVyKTsKKyAg
ICAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnRlZEJ1ZmZlciA9IHBpeGVs
QnVmZmVyOworICAgICAgICBpZiAocGl4ZWxGb3JtYXRUeXBlICE9IHByZWZlcmVkUGl4ZWxCdWZm
ZXJGb3JtYXQoKSkKKyAgICAgICAgICAgIGNvbnZlcnRlZEJ1ZmZlciA9IGNvbnZlcnRUb1lVVihw
aXhlbEJ1ZmZlcik7CiAKLSAgICBpZiAobV9zaG91bGRBcHBseVJvdGF0aW9uICYmIG1fY3VycmVu
dFJvdGF0aW9uICE9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCkKLSAgICAgICAgY29udmVydGVk
QnVmZmVyID0gcm90YXRlUGl4ZWxCdWZmZXIoY29udmVydGVkQnVmZmVyLmdldCgpLCBtX2N1cnJl
bnRSb3RhdGlvbik7CisgICAgICAgIGlmIChtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgbV9jdXJy
ZW50Um90YXRpb24gIT0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wKQorICAgICAgICAgICAgY29u
dmVydGVkQnVmZmVyID0gcm90YXRlUGl4ZWxCdWZmZXIoY29udmVydGVkQnVmZmVyLmdldCgpLCBt
X2N1cnJlbnRSb3RhdGlvbik7CiAKLSAgICBzZW5kRnJhbWUod2VicnRjOjpwaXhlbEJ1ZmZlclRv
RnJhbWUoY29udmVydGVkQnVmZmVyLmdldCgpKSk7CisgICAgICAgIHNlbmRGcmFtZSh3ZWJydGM6
OnBpeGVsQnVmZmVyVG9GcmFtZShjb252ZXJ0ZWRCdWZmZXIuZ2V0KCkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBBU1NFUlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlwZSA9PSBQ
bGF0Zm9ybVNhbXBsZTo6VmlkZW9GcmFtZVNhbXBsZVR5cGUpOworICAgIHNlbmRGcmFtZShzYW1w
bGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUudmlkZW9GcmFtZS0+dG9XZWJSVENWaWRlb0ZyYW1l
QnVmZmVyKCkpOwogfQogCiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVm
ZmVyPiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y3JlYXRlQmxhY2tGcmFtZShz
aXplX3QgIHdpZHRoLCBzaXplX3QgIGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmNwcAppbmRleCA3MjRhOGM5NmI3ZTdlNWUwZGJhYmEwODIzMWJiOGI3OGY5YmJmMGMwLi42
OTM3OWI2NTg5NWZjODc5NzE2YzYyNmM3ZmYzMzAwYzMyMDUxYjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0xMTcsNiArMTE3LDcgQEAgdm9pZCBSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoUmVtb3RlVmlkZW9TYW1wbGUmJiBy
ZW1vdGVTYW0KIHsKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHNhbXBsZTsKICAgICBpZiAoIXJl
bW90ZVNhbXBsZS5zdXJmYWNlKCkpIHsKKyAgICAgICAgCiAgICAgICAgIGF1dG8gcGl4ZWxCdWZm
ZXIgPSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIucmVhZCgpOwogICAgICAgICBpZiAoIXBpeGVs
QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggYWUyMmQ4OTM3
MzRmYzUxZjk2OGY3NDdmN2VkZGIxNzFiOThhMGRhMi4uOTZkNjczYTQ3MTcwNmQxMDA3Zjc0M2Zm
Mzg2NWZhODc5YTE5ZGFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC00MjYsOSArNDI2LDkgQEAgYm9v
bCBMaWJXZWJSVENDb2RlY3M6OmNvcHlTaGFyZWRWaWRlb0ZyYW1lKEVuY29kZXImIGVuY29kZXIs
IENWUGl4ZWxCdWZmZXJSZWYgcGkKICAgICApOwogfQogCi1ib29sIExpYldlYlJUQ0NvZGVjczo6
Y29weVNoYXJlZFZpZGVvRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRl
b0ZyYW1lJiBmcmFtZSkKK2Jvb2wgTGliV2ViUlRDQ29kZWNzOjpjb3B5U2hhcmVkVmlkZW9GcmFt
ZShFbmNvZGVyJiBlbmNvZGVyLCB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImIGZyYW1lQnVmZmVy
KQogewotICAgIHJldHVybiBlbmNvZGVyLnNoYXJlZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUoZnJh
bWUsCisgICAgcmV0dXJuIGVuY29kZXIuc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZShmcmFt
ZUJ1ZmZlciwKICAgICAgICAgWyZlbmNvZGVyXShhdXRvJiBzZW1hcGhvcmUpIHsgZW5jb2Rlci5j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0U2hhcmVk
VmlkZW9GcmFtZVNlbWFwaG9yZSB7IGVuY29kZXIuaWRlbnRpZmllciwgc2VtYXBob3JlIH0sIDAp
OyB9LAogICAgICAgICBbJmVuY29kZXJdKGF1dG8mIGhhbmRsZSkgeyBlbmNvZGVyLmNvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRTaGFyZWRWaWRlb0Zy
YW1lTWVtb3J5IHsgZW5jb2Rlci5pZGVudGlmaWVyLCBoYW5kbGUgfSwgMCk7IH0KICAgICApOwpA
QCAtNDQ0LDExICs0NDQsMTEgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1l
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICBhdXRvIGJ1
ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkpOwogICAg
IGlmICghYnVmZmVyKSB7CiAgICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgbmF0aXZlLCB3ZSBuZWVk
IHRvIGNvcHkgdG8gc2hhcmVkIHZpZGVvIGZyYW1lLgotICAgICAgICBpZiAoIWNvcHlTaGFyZWRW
aWRlb0ZyYW1lKGVuY29kZXIsIGZyYW1lKSkKKyAgICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9G
cmFtZShlbmNvZGVyLCAqZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCkpKQogICAgICAgICAgICAg
cmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKICAgICB9CiAgICAgYXV0byBzYW1wbGUg
PSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgTWVkaWFUaW1lKGZyYW1l
LnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0
aW9uKGZyYW1lLnJvdGF0aW9uKCkpLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tGb3JJ
T1N1cmZhY2U6Ok5vKTsKLSAgICBpZiAoIXNhbXBsZS0+c3VyZmFjZSgpKSB7CisgICAgaWYgKGJ1
ZmZlciAmJiAhc2FtcGxlLT5zdXJmYWNlKCkpIHsKICAgICAgICAgLy8gYnVmZmVyIGlzIG5vdCBJ
T1N1cmZhY2UsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCiAgICAgICAg
IGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgYnVmZmVyLmdldCgpKSkKICAgICAg
ICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDU2
OTFlMzgzNzc0MTY3ODVhN2Q0MTI0YWQxNDQ5NDBlNzc4YjJiZjkuLjllNjg2ZTc4NTRmMTA2ZGZk
YzA0ZmJlNTkxYmJmMTg5YWEwZTBiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC01NSw2ICs1NSw3IEBAIGNs
YXNzIFJlbW90ZVZpZGVvU2FtcGxlOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIFZpZGVv
RnJhbWU7CitjbGFzcyBWaWRlb0ZyYW1lQnVmZmVyOwogc3RydWN0IFdlYktpdEVuY29kZWRGcmFt
ZUluZm87CiB9CiAKQEAgLTEzOSw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOwogCiAgICAgYm9v
bCBjb3B5U2hhcmVkVmlkZW9GcmFtZShFbmNvZGVyJiwgQ1ZQaXhlbEJ1ZmZlclJlZik7Ci0gICAg
Ym9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShFbmNvZGVyJiwgY29uc3Qgd2VicnRjOjpWaWRlb0Zy
YW1lJik7CisgICAgYm9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShFbmNvZGVyJiwgd2VicnRjOjpW
aWRlb0ZyYW1lQnVmZmVyJik7CiAKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBtX2RlY29kZXJzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuY3BwCmluZGV4IDVlYmUxMDhmMjM2NDBkM2E3ZGZlZDMwYTVjNWVhNTc3MDU0OTkx
NGUuLjI3ZTMzNzM0M2NhYThhNDRjMzBiNDI2MjFiMWU0NzRlZDNmZTFkNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5jcHAKQEAgLTk0LDkgKzk0LDggQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGUK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IHJlbW90ZVNhbXBsZTsKICAg
ICBpZiAoc2hvdWxkTXV0ZVZpZGVvKCkpIHsKICAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWUpIHsK
LSAgICAgICAgICAgIGF1dG8gYmxhY2tGcmFtZURlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJH
ZXRGb3JtYXREZXNjcmlwdGlvbihzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1w
bGVCdWZmZXIpOwotICAgICAgICAgICAgYXV0byBkaW1lbnNpb25zID0gQ01WaWRlb0Zvcm1hdERl
c2NyaXB0aW9uR2V0RGltZW5zaW9ucyhibGFja0ZyYW1lRGVzY3JpcHRpb24pOwotICAgICAgICAg
ICAgbV9ibGFja0ZyYW1lID0gY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihkaW1lbnNpb25zLndpZHRo
LCBkaW1lbnNpb25zLmhlaWdodCk7CisgICAgICAgICAgICBhdXRvIHByZXNlbnRhdGlvblNpemUg
PSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgICAgICAgICAgbV9ibGFja0ZyYW1lID0g
Y3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihwcmVzZW50YXRpb25TaXplLndpZHRoKCksIHByZXNlbnRh
dGlvblNpemUuaGVpZ2h0KCkpOwogICAgICAgICB9CiAgICAgICAgIHJlbW90ZVNhbXBsZSA9IFJl
bW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUobV9ibGFja0ZyYW1lLmdldCgpLCBzYW1wbGUucHJlc2Vu
dGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBSZW1vdGVWaWRlb1NhbXBsZTo6
U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKICAgICB9IGVsc2UgewpAQCAtMTA2LDE5ICsx
MDUsMjQgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUo
TWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9TYW1wbGUKIAogICAgIGlmICghcmVtb3RlU2FtcGxl
LT5zdXJmYWNlKCkpIHsKICAgICAgICAgLy8gYnVmZmVyIGlzIG5vdCBJT1N1cmZhY2UsIHdlIG5l
ZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCi0gICAgICAgIGlmICghY29weVNoYXJl
ZFZpZGVvRnJhbWUocmVtb3RlU2FtcGxlLT5pbWFnZUJ1ZmZlcigpKSkKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVtb3RlU2FtcGxlLT5pbWFnZUJ1ZmZl
cigpKSB7CisgICAgICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKGJ1ZmZlcikpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0
byBwbGF0Zm9ybVNhbXBsZSA9IHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpOworICAgICAgICAgICAg
QVNTRVJUKHBsYXRmb3JtU2FtcGxlLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OlZpZGVvRnJhbWVT
YW1wbGVUeXBlKTsKKyAgICAgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUoKnBsYXRm
b3JtU2FtcGxlLnNhbXBsZS52aWRlb0ZyYW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUmVjb3JkZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlIHsgV1RGTW92ZSgqcmVtb3RlU2Ft
cGxlKSB9LCBtX2lkZW50aWZpZXIpOwogfQogCi0KLWJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGU6
OmNvcHlTaGFyZWRWaWRlb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBCdWZmZXI+Citib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpjb3B5U2hh
cmVkVmlkZW9GcmFtZShCdWZmZXImJiBmcmFtZUJ1ZmZlcikKIHsKLSAgICBpZiAoIXBpeGVsQnVm
ZmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fc2hhcmVkVmlkZW9GcmFt
ZVdyaXRlci53cml0ZShwaXhlbEJ1ZmZlciwKKyAgICByZXR1cm4gbV9zaGFyZWRWaWRlb0ZyYW1l
V3JpdGVyLndyaXRlKGZyYW1lQnVmZmVyLAogICAgICAgICBbdGhpc10oYXV0byYgc2VtYXBob3Jl
KSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6U2V0
U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZSB7IHNlbWFwaG9yZSB9LCBtX2lkZW50aWZpZXIpOyB9
LAogICAgICAgICBbdGhpc10oYXV0byYgaGFuZGxlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7IGhh
bmRsZSB9LCBtX2lkZW50aWZpZXIpOyB9CiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4
IGMyYmFkYzljYjM5YjFlZDg2OTQ0ZjkwM2Y1ZDkzZjBkOWFhZGRjMTYuLjk3ODhiN2EyNDc3YjY2
MWJhOGJjNThjNmNhNGMyYWU5ZTQyZTgzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNjYs
NyArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzdW1lUmVjb3JkaW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAKICAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJl
ZE1lbW9yeSosIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0
LCBzaXplX3QgZnJhbWVDb3VudCk7Ci0gICAgYm9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShDVlBp
eGVsQnVmZmVyUmVmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCdWZmZXI+IGJvb2wgY29weVNo
YXJlZFZpZGVvRnJhbWUoQnVmZmVyJiYpOwogCiAgICAgTWVkaWFSZWNvcmRlcklkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIFJlZjxXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU+IG1fc3Ry
ZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggMjE5YTU1ZGYxYzI5ZmQx
YzZmOTMzNjExYTI5MjViNWMzYzA2ZTE3MC4uMWQ4ZDc0M2ZhMmRkMzMwMTk3MzA0NGU3YjMyN2Q4
MTRhYzlhZjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlV2ViUlRDLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZW1vdGVWaWRlb1NhbXBsZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyNiwxMSAr
MTI3LDEwIEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OlBhdXNlIHsgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotYm9vbCBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmNvcHlTaGFyZWRWaWRlb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCdWZmZXI+Citib29sIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Y29weVNoYXJlZFZpZGVvRnJhbWUoQnVmZmVyJiYgZnJhbWVCdWZmZXIpCiB7Ci0gICAgaWYg
KCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX3NoYXJl
ZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUocGl4ZWxCdWZmZXIsCisgICAgcmV0dXJuIG1fc2hhcmVk
VmlkZW9GcmFtZVdyaXRlci53cml0ZShmcmFtZUJ1ZmZlciwKICAgICAgICAgW3RoaXNdKGF1dG8m
IHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZSB7IHNlbWFwaG9y
ZSB9LCBtX2lkZW50aWZpZXIpOyB9LAogICAgICAgICBbdGhpc10oYXV0byYgaGFuZGxlKSB7IG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIG1faWRlbnRpZmllcik7IH0K
ICAgICApOwpAQCAtMTQ0LDggKzE0NCwxNSBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgIGF1dG8gcmVtb3RlU2Ft
cGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShzYW1wbGUsIFJlbW90ZVZpZGVvU2FtcGxl
OjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOwogICAgIGlmICghcmVtb3RlU2FtcGxlLT5z
dXJmYWNlKCkpIHsKICAgICAgICAgLy8gYnVmZmVyIGlzIG5vdCBJT1N1cmZhY2UsIHdlIG5lZWQg
dG8gY29weSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCi0gICAgICAgIGlmICghY29weVNoYXJlZFZp
ZGVvRnJhbWUocmVtb3RlU2FtcGxlLT5pbWFnZUJ1ZmZlcigpKSkKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSByZW1vdGVTYW1wbGUtPmltYWdlQnVm
ZmVyKCkpIHsKKyAgICAgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUocGl4ZWxCdWZm
ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGF1dG8gcGxhdGZvcm1TYW1wbGUgPSBzYW1wbGUucGxhdGZvcm1TYW1wbGUoKTsKKyAgICAg
ICAgICAgIEFTU0VSVChwbGF0Zm9ybVNhbXBsZS50eXBlID09IFBsYXRmb3JtU2FtcGxlOjpWaWRl
b0ZyYW1lU2FtcGxlVHlwZSk7CisgICAgICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1l
KCpwbGF0Zm9ybVNhbXBsZS5zYW1wbGUudmlkZW9GcmFtZSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVTYW1wbGUgeyAqcmVtb3Rl
U2FtcGxlIH0sIG1faWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4
IDU2MzY5YWRkZjBhYmYzNDZiMGQyMWM4NTA2ZDY5Y2IzZDNiNDBlMzkuLjI0ZjRiMTlkNWZiMGJl
N2FhYTAwY2Y3YzNhZDNhNmRjMTU4YTRlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlv
bkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CiAKICAgICB2b2lkIHNldERp
ZEZhaWwoYm9vbCk7Ci0gICAgYm9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShDVlBpeGVsQnVmZmVy
UmVmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCdWZmZXI+IGJvb2wgY29weVNoYXJlZFZpZGVv
RnJhbWUoQnVmZmVyJiYpOwogCiAgICAgV2Vha1B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyPiBtX21hbmFnZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVk
VmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFy
ZWRWaWRlb0ZyYW1lLmNwcAppbmRleCAyOTRhOTQ4NTYxNzY5Y2Y2M2QxYWJhYTI2MTg0YzA3M2Zm
NWE1NTI1Li40MmQ2Y2M2YmEyMTQ5NWUzMjQ4OTFjYTMxYmZjYTVjOWIzMTQxYmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRl
b0ZyYW1lLmNwcApAQCAtODUsMTYgKzg1LDI3IEBAIGJvb2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRl
cjo6d3JpdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29uc3QgRnVuY3Rpb248CiB9
CiAKICNpZiBVU0UoTElCV0VCUlRDKQotYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0
ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCiti
b29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZl
ciYgZnJhbWVCdWZmZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5l
d1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKIHsKLSAgICBhdXRvIGluZm8gPSBT
aGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbVZpZGVvRnJhbWUoZnJhbWUpOworICAgIGF1dG8gaW5m
byA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpmcm9tVmlkZW9GcmFtZShmcmFtZUJ1ZmZlcik7CiAg
ICAgaWYgKCFwcmVwYXJlV3JpdGluZyhpbmZvLCBuZXdTZW1hcGhvcmVDYWxsYmFjaywgbmV3TWVt
b3J5Q2FsbGJhY2spKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gaW5mby53
cml0ZVZpZGVvRnJhbWUoZnJhbWUsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3N0b3JhZ2UtPmRh
dGEoKSkpOworICAgIHJldHVybiBpbmZvLndyaXRlVmlkZW9GcmFtZUJ1ZmZlcihmcmFtZUJ1ZmZl
ciwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0YSgpKSk7CiB9CiAjZW5kaWYK
IAorYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShXZWJDb3JlOjpWaWRlb0ZyYW1l
JiB2aWRlb0ZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdT
ZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCit7CisgICAgcmV0dXJuIHN3aXRjaE9u
KHZpZGVvRnJhbWUuYnVmZmVyKCksIFsmXShSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBi
dWZmZXIpIHsKKyAgICAgICAgcmV0dXJuIHdyaXRlKGJ1ZmZlci5nZXQoKSwgbmV3U2VtYXBob3Jl
Q2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKTsKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIH0s
IFsmXShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1ZmZl
cikgeworICAgICAgICByZXR1cm4gd3JpdGUoKmJ1ZmZlciwgbmV3U2VtYXBob3JlQ2FsbGJhY2ss
IG5ld01lbW9yeUNhbGxiYWNrKTsKKyNlbmRpZgorICAgIH0pOworfQorCiBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjo6cmVhZCgpCiB7CiAgICAgaWYg
KCFtX3N0b3JhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKaW5kZXggOTg1NTEyZmM2ODAxMjdhYWM3MTczZWJiNWEx
NDE1MDg2MzdmMDIxYS4uZjBkM2IyZjhlYjZjNjU1YTBhYzlkMTFmOTkwZjdhNjNkNDQ5ODgyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlk
ZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJl
ZFZpZGVvRnJhbWUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiSVBDU2VtYXBob3Jl
LmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNh
bXBsZVdlYlJUQy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKQEAgLTUxLDggKzUyLDkgQEAgcHVibGljOgogICAgIFNoYXJlZFZpZGVvRnJh
bWVXcml0ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBib29sIHdyaXRlKENWUGl4ZWxCdWZmZXJSZWYs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisgICAgYm9vbCB3cml0ZShX
ZWJDb3JlOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYp
PiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4m
KTsKICNpZiBVU0UoTElCV0VCUlRDKQotICAgIGJvb2wgd3JpdGUoY29uc3Qgd2VicnRjOjpWaWRl
b0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKKyAgICBib29s
IHdyaXRlKHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBD
OjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJik+Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452864</attachid>
            <date>2022-02-22 06:19:12 -0800</date>
            <delta_ts>2022-02-23 08:07:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236131-20220222151910.patch</filename>
            <type>text/plain</type>
            <size>46392</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBkYTNlNmI5OGUzZGU2NjY2YTU2ZjMxZWEzYjg3NzNkZDhhNDdiNTZjLi4zMmI3
M2U0ODYzY2FhYmY0ODZkZWQ2ZWNlNzk3MDRlMjNkZjllNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMi0wMi0yMiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMg
dmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlw
ZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxMzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4ODA1NTgwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSByb3V0aW5lcyB0byB0YWtl
IFZpZGVvRnJhbWVCdWZmZXIgaW5zdGVhZCBvZiBWaWRlb0ZyYW1lLgorICAgICAgICBGaXggYnVn
cyBpbiBoYW5kbGluZyBvZiBZVVYgY29udmVyc2lvbiBsaWJ3ZWJydGMgcm91dGluZXMuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFV0aWxpdGllcy5tbToKKyAgICAgICAgKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9t
RnJhbWUpOgorICAgICAgICAod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUJ1ZmZl
cik6CisgICAgICAgICh3ZWJydGM6OmNvcHlWaWRlb0ZyYW1lQnVmZmVyKToKKyAgICAgICAgKHdl
YnJ0Yzo6Y29weVZpZGVvRnJhbWUpOiBEZWxldGVkLgorCiAyMDIyLTAyLTE4ICBSb2JlcnQgSmVu
bmVyICA8SmVubmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI5MDE0OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZTJlZDM2ZGJlZDUzNWYwOWE4MGIxMzVlOTc1Y2JlZDVl
YWY2Mjg1Li4zMzljZTUwYmRhMTQ2NzJmMzZjMTU1Y2ZmNTJiZDc5YmI1YzhjNDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMjItMDItMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHRvIHBhc3Mgd2VicnRjIHZpZGVvIGZyYW1lIGJ1
ZmZlcnMgdGhyb3VnaCBSZWFsdGltZU1lZGlhU291cmNlIGJhc2VkIHBpcGVsaW5lcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTMxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS84ODgwNTU4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgVmlkZW9GcmFtZUxpYldlYlJUQyBhcyBhIHdy
YXBwZXIgdG8gbGlid2VicnRjIHZpZGVvIGZyYW1lIGJ1ZmZlci4KKyAgICAgICAgSW4gY2FzZSB3
ZSBzZW5kIFZpZGVvRnJhbWVMaWJXZWJSVEMgdGhyb3VnaCBSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYSwgZGlyZWN0bHkgc2VuZCB0aGUgdmlkZW8gZnJhbWUgYnVmZmVyLgorICAgICAg
ICBXaGVuIHJlY2VpdmluZyBsaWJ3ZWJydGMgdmlkZW8gZnJhbWUgYnVmZmVycyBpbiBSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYSwgbWFrZSB1c2Ugb2YgVmlkZW9GcmFtZUxpYldlYlJU
QyB0byBkZWxheSBjb252ZXJzaW9uIG9mIHRoZSB2aWRlbyBmcmFtZSBidWZmZXIgaW4gYSBDVlBp
eGVsQnVmZmVyUmVmLgorICAgICAgICBJbiBtb3N0IGNhc2VzLCB0aGUgY29udmVyc2lvbiBpcyB1
bm5lZWRlZCBhcyB0aGUgdmlkZW8gZnJhbWUgYnVmZmVyIHdpbGwgYmUgdXNlZCBmb3IgcmVuZGVy
aW5nIGFuZCB3aWxsIGJlIGNvcGllZCB0byBzaGFyZWQgbWVtb3J5IHRocm91Z2ggU2hhcmVkVmlk
ZW9GcmFtZVdyaXRlci4KKyAgICAgICAgRml4IGJ1Z3MgaW4gaGFuZGxpbmcgb2YgWVVWIGNvbnZl
cnNpb24gbGlid2VicnRjIHJvdXRpbmVzLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1lOjphc1ZpZGVvRnJhbWVDVik6CisgICAgICAg
ICogcGxhdGZvcm0vVmlkZW9GcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9GcmFtZTo6
aXNMaWJXZWJSVEMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVv
RnJhbWVJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUlu
Zm8ubW06CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFZpZGVvRnJhbWVJbmZvOjpjcmVhdGVQaXhlbEJ1ZmZl
ckZyb21NZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVmlkZW9GcmFtZUluZm86OmZy
b21WaWRlb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFZpZGVvRnJhbWVJbmZvOjp3
cml0ZVZpZGVvRnJhbWVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVmlkZW9GcmFt
ZUluZm86OndyaXRlVmlkZW9GcmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlk
ZW9TYW1wbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9G
cmFtZUNWLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjp0b1ZpZGVvRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVm
ZmVyUG9vbCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSk6CisK
IDIwMjItMDItMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBJbXByb3ZlIGNvbnN0IGNvcnJlY3RuZXNzIGZvciBTZWN1cml0eU9yaWdpbiBh
Y2Nlc3NvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMWUyZjI0OWE2ZWFhMTAyODM0MDkxODU5ODM3OWU3N2FkNGZh
ZjcwNS4uZThhMTJmNTNmMzg5YmE4NmE1MmM4MTIxYzFiY2U2MjVhMWExNjM3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNCBAQAorMjAyMi0wMi0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMgdmlkZW8gZnJhbWUgYnVmZmVy
cyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlwZWxpbmVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMzEKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg4ODA1NTgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBvcHRpbWl6YXRpb24gc3VwcG9ydCBmb3IgVmlkZW9GcmFtZUxp
YldlYlJUQyB3cml0aW5nIGludG8gc2hhcmVkIG1lbW9yeS4KKyAgICAgICAgVGhpcyByZW1vdmVz
IHRoZSBuZWVkIHRvIGNvbnZlcnQgdGhlIHdlYnJ0YyB2aWRlbyBmcmFtZSBpbnRvIGEgQ1ZQaXhl
bEJ1ZmZlciwganVzdCB0byBzZW5kIGl0IHRvIEdQVVByb2Nlc3MgZm9yIHJlbmRlcmluZy4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGl4ZWxCdWZmZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmFzVmlkZW9GcmFt
ZUNWKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFt
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaDoKKwogMjAyMi0w
Mi0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1p
c2UgYmxhY2sgZnJhbWUgc2VuZGluZyBpbiBNZWRpYVJlY29yZGVyUHJpdmF0ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1MuZXhwCmluZGV4IGJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1Y2Rk
ZDMuLjE5ZTU2NjliYmE5ZDNlNzBmMzk1NTRmZWUxMmNiODBmMzRhMmMwZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
LmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPUy5leHAKQEAgLTMzNCw0ICszMzQsNSBAQCBfX1pONndlYnJ0YzMyd2VicnRjX3Nl
cXVlbmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVlbmNlQ2hlY2tlckltcGxDMkV2CiBfX1pOSzNy
dGMxNFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0aWZpY2F0ZUV2CiBfX1pUVk42d2VicnRjMzBX
cmFwcGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRFCiBfX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJG
cm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFCi1fX1pONndlYnJ0YzE0Y29weVZpZGVvRnJhbWVF
UktOU18xMFZpZGVvRnJhbWVFUGgKK19fWk42d2VicnRjMjBjb3B5VmlkZW9GcmFtZUJ1ZmZlckVS
TlNfMTZWaWRlb0ZyYW1lQnVmZmVyRVBoCitfX1pONndlYnJ0YzMyY3JlYXRlUGl4ZWxCdWZmZXJG
cm9tRnJhbWVCdWZmZXJFUk5TXzE2VmlkZW9GcmFtZUJ1ZmZlckVSS05TdDNfXzE4ZnVuY3Rpb25J
RlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9T
c2ltLmV4cAppbmRleCBiYmJjMDU4MjdjZjc0YTkzYTAwMmU1MDc0NzgyMTEwZmNmNWNkZGQzLi4x
OWU1NjY5YmJhOWQzZTcwZjM5NTU0ZmVlMTJjYjgwZjM0YTJjMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5l
eHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1NzaW0uZXhwCkBAIC0zMzQsNCArMzM0LDUgQEAgX19aTjZ3ZWJydGMzMndlYnJ0Y19z
ZXF1ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1ZW5jZUNoZWNrZXJJbXBsQzJFdgogX19aTksz
cnRjMTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2VydGlmaWNhdGVFdgogX19aVFZONndlYnJ0YzMw
V3JhcHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0RQogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVy
RnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRQotX19aTjZ3ZWJydGMxNGNvcHlWaWRlb0ZyYW1l
RVJLTlNfMTBWaWRlb0ZyYW1lRVBoCitfX1pONndlYnJ0YzIwY29weVZpZGVvRnJhbWVCdWZmZXJF
Uk5TXzE2VmlkZW9GcmFtZUJ1ZmZlckVQaAorX19aTjZ3ZWJydGMzMmNyZWF0ZVBpeGVsQnVmZmVy
RnJvbUZyYW1lQnVmZmVyRVJOU18xNlZpZGVvRnJhbWVCdWZmZXJFUktOU3QzX18xOGZ1bmN0aW9u
SUZQMTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5l
eHAKaW5kZXggMmE1N2RjYTVhZjM4ZWRmM2UzYTBlOWE0ZWZlZjY0YzhhNjNlOWU2Yy4uZmEyODBh
NGE0ZmQ4Njg1MWNjYjMxZjNjOWRlNzZiOGVhODg5NThkYyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFj
LmV4cApAQCAtMzM0LDQgKzMzNCw1IEBAIF9fWk42d2VicnRjMzJ3ZWJydGNfc2VxdWVuY2VfY2hl
Y2tlcl9pbnRlcm5hbDE5U2VxdWVuY2VDaGVja2VySW1wbEMyRXYKIF9fWk5LM3J0YzE0UlRDQ2Vy
dGlmaWNhdGUxN0dldFNTTENlcnRpZmljYXRlRXYKIF9fWlRWTjZ3ZWJydGMzMFdyYXBwaW5nQXN5
bmNEbnNSZXNvbHZlclJlc3VsdEUKIF9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVS
S05TXzEwVmlkZW9GcmFtZUUKLV9fWk42d2VicnRjMTRjb3B5VmlkZW9GcmFtZUVSS05TXzEwVmlk
ZW9GcmFtZUVQaAorX19aTjZ3ZWJydGMyMGNvcHlWaWRlb0ZyYW1lQnVmZmVyRVJOU18xNlZpZGVv
RnJhbWVCdWZmZXJFUGgKK19fWk42d2VicnRjMzJjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUJ1
ZmZlckVSTlNfMTZWaWRlb0ZyYW1lQnVmZmVyRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1
ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
VXRpbGl0aWVzLmgKaW5kZXggMmVmOGExZTkxNTM4NjExZWZlNWFmNzM0ZjgwY2Q3YTliYTRmNTNj
Ni4uYTc3OWNhZDFiZDM2MDAyZDc5OTMxNmExNDgwNWQzYTMzZDRjMThiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXRVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCkBAIC00OCw5ICs0OCwxMCBAQCBib29s
IGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKTsKIAogZW51bSBjbGFzcyBCdWZmZXJUeXBl
IHsgSTQyMCwgSTAxMCB9OwogQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21G
cmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVy
UmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKSBDRl9S
RVRVUk5TX1JFVEFJTkVEOworQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21G
cmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVmZmVyJiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVs
QnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVy
KSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21G
cmFtZShjb25zdCBWaWRlb0ZyYW1lJikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBp
eGVsQnVmZmVyUmVmKTsKLWJvb2wgY29weVZpZGVvRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYsIHVp
bnQ4X3QqKTsKK2Jvb2wgY29weVZpZGVvRnJhbWVCdWZmZXIoVmlkZW9GcmFtZUJ1ZmZlciYsIHVp
bnQ4X3QqKTsKIAogdHlwZWRlZiBDVlBpeGVsQnVmZmVyUmVmICgqR2V0QnVmZmVyQ2FsbGJhY2sp
KHZvaWQqKTsKIHR5cGVkZWYgdm9pZCAoKlJlbGVhc2VCdWZmZXJDYWxsYmFjaykodm9pZCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQppbmRleCA2MmY2MjRj
NDk3NmZhNjE4ZDgwY2QxNDBhM2ZkOTFkNmJhOWU5MDlmLi42NmY4MDE5ZWE1OTZjYWNjNDcyYTE1
YjE2ZjBhM2IzNWRhY2FlOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0
aWxpdGllcy5tbQpAQCAtMTYwLDI4ICsxNjAsMzIgQEAgc3RhdGljIGJvb2wgQ29weVZpZGVvRnJh
bWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STAxMEJ1ZmZlckludGVyZmFjZSogZnJhbWUK
IAogQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRl
b0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVf
dCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQogewotICAgIGF1dG8g
YnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7Ci0gICAgaWYgKGJ1ZmZlci0+dHlw
ZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKLSAgICAgICAgYXV0byB0
eXBlID0gYnVmZmVyLT50eXBlKCk7CisgICAgcmV0dXJuIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZy
YW1lQnVmZmVyKCpmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKSwgY3JlYXRlUGl4ZWxCdWZmZXIp
OworfQorCitDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lQnVmZmVy
KFZpZGVvRnJhbWVCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVm
ZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQor
eworICAgIGlmIChidWZmZXIudHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRp
dmUpIHsKKyAgICAgICAgYXV0byB0eXBlID0gYnVmZmVyLnR5cGUoKTsKICAgICAgICAgaWYgKHR5
cGUgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgJiYgdHlwZSAhPSBWaWRlb0ZyYW1l
QnVmZmVyOjpUeXBlOjprSTAxMCkgewogICAgICAgICAgICAgUlRDX0xPRyhXQVJOSU5HKSA8PCAi
VmlkZW8gZnJhbWUgYnVmZmVyIHR5cGUgaXMgbm90IGV4cGVjdGVkLiI7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBj
cmVhdGVQaXhlbEJ1ZmZlcihidWZmZXItPndpZHRoKCksIGJ1ZmZlci0+aGVpZ2h0KCksIHR5cGUg
PT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgPyBCdWZmZXJUeXBlOjpJNDIwIDogQnVm
ZmVyVHlwZTo6STAxMCk7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBjcmVhdGVQaXhlbEJ1
ZmZlcihidWZmZXIud2lkdGgoKSwgYnVmZmVyLmhlaWdodCgpLCB0eXBlID09IFZpZGVvRnJhbWVC
dWZmZXI6OlR5cGU6OmtJNDIwID8gQnVmZmVyVHlwZTo6STQyMCA6IEJ1ZmZlclR5cGU6OkkwMTAp
OwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBSVENfTE9HKFdBUk5J
TkcpIDw8ICJQaXhlbCBidWZmZXIgY3JlYXRpb24gZmFpbGVkLiI7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0eXBlID09IFZpZGVvRnJhbWVC
dWZmZXI6OlR5cGU6OmtJNDIwKQotICAgICAgICAgICAgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVm
ZmVyKGJ1ZmZlci0+R2V0STQyMCgpLCBwaXhlbEJ1ZmZlcik7CisgICAgICAgICAgICBDb3B5Vmlk
ZW9GcmFtZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLkdldEk0MjAoKSwgcGl4ZWxCdWZmZXIpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoYnVmZmVy
LT5HZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9Q
aXhlbEJ1ZmZlcihidWZmZXIuR2V0STAxMCgpLCBwaXhlbEJ1ZmZlcik7CiAgICAgICAgIHJldHVy
biBwaXhlbEJ1ZmZlcjsKICAgICB9CiAKLSAgICBhdXRvICpmcmFtZUJ1ZmZlciA9IHN0YXRpY19j
YXN0PE9iakNGcmFtZUJ1ZmZlcio+KGJ1ZmZlci5nZXQoKSktPndyYXBwZWRfZnJhbWVfYnVmZmVy
KCk7CisgICAgYXV0byAqZnJhbWVCdWZmZXIgPSBzdGF0aWNfY2FzdDxPYmpDRnJhbWVCdWZmZXIq
PigmYnVmZmVyKS0+d3JhcHBlZF9mcmFtZV9idWZmZXIoKTsKICAgICBpZiAoIVtmcmFtZUJ1ZmZl
ciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0yMDMsMTggKzIwNywxNyBAQCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lKQogICAgIHJldHVybiBDVlBp
eGVsQnVmZmVyUmV0YWluKHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyKTsKIH0KIAotYm9vbCBj
b3B5VmlkZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgdWludDhfdCogZGF0YSkKK2Jv
b2wgY29weVZpZGVvRnJhbWVCdWZmZXIoVmlkZW9GcmFtZUJ1ZmZlciYgYnVmZmVyLCB1aW50OF90
KiBkYXRhKQogewotICAgIGF1dG8gYnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7
Ci0gICAgaWYgKGJ1ZmZlci0+dHlwZSgpID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRp
dmUpCisgICAgaWYgKGJ1ZmZlci50eXBlKCkgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05h
dGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB0eXBlID0gYnVmZmVyLT50
eXBlKCk7CisgICAgYXV0byB0eXBlID0gYnVmZmVyLnR5cGUoKTsKICAgICBpZiAodHlwZSA9PSBW
aWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCkgewotICAgICAgICBhdXRvKiBpNDIwRnJhbWUg
PSBidWZmZXItPkdldEk0MjAoKTsKKyAgICAgICAgYXV0byogaTQyMEZyYW1lID0gYnVmZmVyLkdl
dEk0MjAoKTsKICAgICAgICAgYXV0byogZGF0YVkgPSBkYXRhOwogICAgICAgICBhdXRvIHN0cmlk
ZVkgPSBpNDIwRnJhbWUtPndpZHRoKCk7Ci0gICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpNDIwRnJh
bWUtPndpZHRoKCkgLyAyOworICAgICAgICBhdXRvIHN0cmlkZVVWID0gaTQyMEZyYW1lLT53aWR0
aCgpOwogICAgICAgICBhdXRvKiBkYXRhVVYgPSBkYXRhICsgKGk0MjBGcmFtZS0+d2lkdGgoKSAq
IGk0MjBGcmFtZS0+aGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gIWxpYnl1djo6STQyMFRvTlYx
MihpNDIwRnJhbWUtPkRhdGFZKCksIGk0MjBGcmFtZS0+U3RyaWRlWSgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpNDIwRnJhbWUtPkRhdGFVKCksIGk0MjBGcmFtZS0+U3Ry
aWRlVSgpLApAQCAtMjIzLDEwICsyMjYsMTAgQEAgYm9vbCBjb3B5VmlkZW9GcmFtZShjb25zdCBW
aWRlb0ZyYW1lJiBmcmFtZSwgdWludDhfdCogZGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaTQyMEZyYW1lLT53aWR0aCgpLCBpNDIwRnJhbWUtPmhlaWdodCgpKTsKICAg
ICB9CiAgICAgaWYgKHR5cGUgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0kwMTApIHsKLSAg
ICAgICAgYXV0byogaTAxMEZyYW1lID0gYnVmZmVyLT5HZXRJMDEwKCk7CisgICAgICAgIGF1dG8q
IGkwMTBGcmFtZSA9IGJ1ZmZlci5HZXRJMDEwKCk7CiAgICAgICAgIGF1dG8qIGRhdGFZID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGRhdGEpOwogICAgICAgICBhdXRvIHN0cmlkZVkgPSBp
MDEwRnJhbWUtPndpZHRoKCk7Ci0gICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpMDEwRnJhbWUtPndp
ZHRoKCkgLyAyOworICAgICAgICBhdXRvIHN0cmlkZVVWID0gaTAxMEZyYW1lLT53aWR0aCgpOwog
ICAgICAgICBhdXRvKiBkYXRhVVYgPSBkYXRhWSArIChpMDEwRnJhbWUtPndpZHRoKCkgKiBpMDEw
RnJhbWUtPmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuICFsaWJ5dXY6OkkwMTBUb1AwMTAoaTAx
MEZyYW1lLT5EYXRhWSgpLCBpMDEwRnJhbWUtPlN0cmlkZVkoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaTAxMEZyYW1lLT5EYXRhVSgpLCBpMDEwRnJhbWUtPlN0cmlkZVUo
KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggY2FjNGRkZWNhZGYyNDE1OGZmMTQ5YTQwMTlkYWVlMjllZjY3
NTE3My4uNGJhNzY4ZDFlZWNlNGY5Yjc5NjMyMzI4OThlNWU1YTk2MGM1Y2FlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTIyMDAsNiArMjIwMCw3IEBAIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1l
TGliV2ViUlRDLmNwcAogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
Y3BwCiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKIHBsYXRmb3JtL21v
Y2svTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeU1vY2suY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjUzYzg4YThm
MmNjNDFmNmI5MzkxNTczNzk3NTY3ODExNTljOWM4NS4uM2EzMzZmY2IwOTg1M2FjZDU3MTJhMjk1
NzM3MDI5ZGE3NDM1ZjJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIyNiw2ICsxMjI2LDcgQEAKIAkJNDFFNkQ3MUIyNkVB
MUE0NjAwQjc2NUQ2IC8qIFJUQ0Vycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUI3QzA0QjI2RTY5MTcxMDBEMzZDMDcgLyogUlRDRXJyb3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUU5RENF
NzIzMTk3NEJGMDBGMzU5NDkgLyogQmxvYkxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFOURDRTQyMzE5NzNGRTAwRjM1OTQ5IC8qIEJsb2JM
b2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MUU5RENFOTIzMTlDQTc2MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFOURDRTgyMzE5Q0E3NTAw
RjM1OTQ5IC8qIE5ldHdvcmtTZW5kUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk0MUVCNzk3RTI3QzNFNDVFMDAxQzNFM0UgLyogVmlkZW9G
cmFtZUxpYldlYlJUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFFQjc5N0MyN0MzRTQ1RDAwMUMzRTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJSVEMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUYwNjIx
NDBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYyMTIwRjVGMTkyNjAw
QTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLzsgfTsKIAkJNDFGMUQyMUYw
RUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMUQyMUQwRUYzNUMyQTAwREE4NzUz
IC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxRkFCRDJEMUY0REZFNEEwMDZBNkM5NyAvKiBET01DYWNo
ZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFGQUJEMkIxRjRERkU0MjAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg5OTAsNiArODk5MSw4IEBA
CiAJCTQxRTlEQ0U2MjMxOTc0MjMwMEYzNTk0OSAvKiBFbmRpbmdUeXBlLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBFbmRpbmdUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFFOURDRTgyMzE5Q0E3NTAwRjM1OTQ5IC8qIE5ldHdvcmtTZW5kUXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1NlbmRRdWV1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUU5RENFQTIzMTlDQUU4MDBGMzU5NDkgLyogTmV0d29ya1Nl
bmRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3Jr
U2VuZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFQjc5N0IyN0Mz
RTQ1RDAwMUMzRTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA7IHBhdGggPSBsaWJ3
ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxRUI3OTdDMjdDM0U0NUQwMDFDM0UzRSAvKiBWaWRlb0ZyYW1lTGliV2ViUlRDLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFZpZGVvRnJhbWVMaWJXZWJSVEMuaDsgcGF0
aCA9IGxpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxRjA2MjEyMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTMwRjVG
MTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA5NjM0MjRGOTBERUEwMDA5RkI5MyAv
KiBUZXh0RGVjb2RlclN0cmVhbURlY29kZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHREZWNvZGVyU3RyZWFtRGVj
b2Rlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA2Miw2ICsyMTA2NSw4
IEBACiAJCQkJNDFCMjhCMzgxRjg2MEJEMTAwRkI1MkFDIC8qIExpYldlYlJUQ1Byb3ZpZGVyQ29j
b2EuY3BwICovLAogCQkJCTQxQjI4QjM2MUY4NjBCRDAwMEZCNTJBQyAvKiBMaWJXZWJSVENQcm92
aWRlckNvY29hLmggKi8sCiAJCQkJNDEwRTQ0NUYyMzQzNzNBRDAwMDE3M0Q0IC8qIExpYldlYlJU
Q1NvY2tldElkZW50aWZpZXIuaCAqLywKKwkJCQk0MUVCNzk3QjI3QzNFNDVEMDAxQzNFM0UgLyog
VmlkZW9GcmFtZUxpYldlYlJUQy5jcHAgKi8sCisJCQkJNDFFQjc5N0MyN0MzRTQ1RDAwMUMzRTNF
IC8qIFZpZGVvRnJhbWVMaWJXZWJSVEMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gbGlid2VicnRj
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzNTYwLDYgKzMzNTY1LDcgQEAKIAkJ
CQlGRDMxNUZGNzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEMzE1RkY5MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0J1ZmZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1Njg2Q0MxM0FDMTgxNDAwQjY5QzY4IC8qIEF1ZGlv
QnVmZmVyQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRUI3OTdFMjdDM0U0NUUwMDFD
M0UzRSAvKiBWaWRlb0ZyYW1lTGliV2ViUlRDLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNUZG
QzEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4Mzc4ODc4MjI0RDhBNjA5MDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3QzEyQjAyNkY3MDBDMUEzNTkgLyogQXVk
aW9CdXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNw
cAppbmRleCBhNTQ5YzFhNWM0OGViMjNkNjRiYTNmZDM1Mzg0MDhiZDE1NTIzNGYwLi41NGY4YTNk
OGMwYzQxMzhmNWRmYzY0Yzk5OWExMWZlZjE1NzEwZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9WaWRlb0ZyYW1lLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKIAorI2luY2x1ZGUgIlZpZGVvRnJhbWVDVi5oIgorCiAj
aWYgRU5BQkxFKFZJREVPKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzEsNiArMTMzLDE3
IEBAIHZvaWQgVmlkZW9GcmFtZTo6ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0CiB7CiB9CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKK1JlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWU6OmFzVmlk
ZW9GcmFtZUNWKCkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IHBpeGVsQnVmZmVyKCk7CisgICAgaWYg
KCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKHByZXNlbnRhdGlvblRpbWUoKSwgdmlkZW9NaXJyb3JlZCgpLCB2aWRlb1Jv
dGF0aW9uKCksIGJ1ZmZlcik7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ZpZGVvRnJhbWUuaAppbmRleCA2NDExZGY3ZDY0MGNjZGVkMWQxZTNlMTFmZDFhNDI4
YTI5MWIzMWVkLi41OTA5YzM0OGY2YmVlZmFjZTZlNWY2OWEwMzE1MDRhMDRhMmQ5NjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC01Miw5ICs1MiwxMCBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVU
eXBlKCkgY29uc3QgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVQcm94eSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTGliV2ViUlRDKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNpZiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwg
Ym9vbCBpc0NWKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCkgPSAwOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgUmVmUHRyPFZpZGVvRnJhbWVDVj4gYXNWaWRlb0ZyYW1lQ1YoKTsKICNl
bmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaAppbmRleCBiZTNmZGI3OTc4MDNhMTQwZWIwMmM0Njlk
MzM2MjRiNDhiNjI3NTAzLi5hNGY1Y2Y0NTBlMGFhMTg0NmJjY2FhMjY1YmZmYjUxNmQ5MDRhZmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0Zy
YW1lSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVv
RnJhbWVJbmZvLmgKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciog
Q1ZQaXhlbEJ1ZmZlclJlZjsKIHR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENW
UGl4ZWxCdWZmZXJQb29sUmVmOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIFZpZGVvRnJh
bWU7CitjbGFzcyBWaWRlb0ZyYW1lQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdyaXRlUGl4
ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgdWludDhfdCogZGF0YSk7CiAKICNpZiBVU0UoTElC
V0VCUlRDKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRWaWRlb0ZyYW1lSW5mbyBm
cm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHdyaXRlVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCB1aW50
OF90KiBkYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkVmlkZW9GcmFtZUlu
Zm8gZnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCB3cml0ZVZpZGVvRnJhbWVCdWZmZXIod2VicnRjOjpWaWRlb0Zy
YW1lQnVmZmVyJiwgdWludDhfdCogZGF0YSk7CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHNpemVfdCBzdG9yYWdlU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8ubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbQppbmRleCAwOGM2Y2NkODg1Mzcx
ZmFmMWQxMThlMzlkYTIzYWUzMmQ4NDU5YmRlLi5lYzU2NTBlYTM3NjY3YTkwMmYzMjhmNTMyYzQ5
Y2VhZmE3MTQ3ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
aGFyZWRWaWRlb0ZyYW1lSW5mby5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbQpAQCAtNzgsNiArNzgsNyBAQCBzaXplX3QgU2hhcmVk
VmlkZW9GcmFtZUluZm86OnN0b3JhZ2VTaXplKCkgY29uc3QKIHZvaWQgU2hhcmVkVmlkZW9GcmFt
ZUluZm86OmVuY29kZSh1aW50OF90KiBkZXN0aW5hdGlvbikKIHsKICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyIGVuY29kZXI7CisKICAgICBlbmNvZGVyIDw8ICh1aW50MzJfdCltX2J1ZmZl
clR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3dpZHRoOwogICAgIGVuY29kZXIgPDwgbV9oZWlnaHQ7
CkBAIC0yMDcsNyArMjA4LDYgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFNoYXJlZFZp
ZGVvRnJhbWVJbmZvOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21NZW1vcnkoY28KICAgICAgICAgZGF0
YSArPSBtX2J5dGVzUGVyUm93UGxhbmVCOwogICAgIH0KIAotICAgIENWUGl4ZWxCdWZmZXJVbmxv
Y2tCYXNlQWRkcmVzcyhyYXdQaXhlbEJ1ZmZlciwgMCk7CiAgICAgcmV0dXJuIHBpeGVsQnVmZmVy
OwogfQogCkBAIC0yNjYsMzEgKzI2NiwzMSBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xS
ZWY+IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyUG9vbAogfQog
CiAjaWYgVVNFKExJQldFQlJUQykKLVNoYXJlZFZpZGVvRnJhbWVJbmZvIFNoYXJlZFZpZGVvRnJh
bWVJbmZvOjpmcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQor
U2hhcmVkVmlkZW9GcmFtZUluZm8gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYgZnJhbWUpCiB7Ci0gICAgYXV0byBidWZm
ZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKLSAgICBpZiAoYnVmZmVyLT50eXBlKCkg
PT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAgIGlmIChmcmFt
ZS50eXBlKCkgPT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQogICAg
ICAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8geyB9OwogCi0gICAgYXV0byB0eXBlID0g
YnVmZmVyLT50eXBlKCk7Ci0KKyAgICBhdXRvIHR5cGUgPSBmcmFtZS50eXBlKCk7CiAgICAgaWYg
KHR5cGUgPT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCkKICAgICAgICAg
cmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JD
cjhCaVBsYW5hckZ1bGxSYW5nZSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pihm
cmFtZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLAotICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUu
aGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgLyAyIH07Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgLyAyLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpIC8gMiwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGZyYW1lLndpZHRoKCkpIH07CiAKICAgICBpZiAodHlwZSA9PSB3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXI6OlR5cGU6OmtJMDEwKQogICAgICAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUlu
Zm8geyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZSwKICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1l
LndpZHRoKCkgKiAyKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53
aWR0aCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpIH07CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgLyAyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUu
aGVpZ2h0KCkpIC8gMiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpICogMiB9
OwogCiAgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsgfTsKIH0KIAotYm9vbCBTaGFy
ZWRWaWRlb0ZyYW1lSW5mbzo6d3JpdGVWaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYgZnJhbWUsIHVpbnQ4X3QqIGRhdGEpCitib29sIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjp3cml0
ZVZpZGVvRnJhbWVCdWZmZXIod2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyJiBmcmFtZUJ1ZmZlciwg
dWludDhfdCogZGF0YSkKIHsKICAgICBBU1NFUlQobV9idWZmZXJUeXBlID09IGtDVlBpeGVsRm9y
bWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgfHwgbV9idWZmZXJUeXBlID09IGtD
VlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlKTsKLSAgICByZXR1
cm4gd2VicnRjOjpjb3B5VmlkZW9GcmFtZShmcmFtZSwgZGF0YSk7CisgICAgZW5jb2RlKGRhdGEp
OworICAgIGRhdGEgKz0gc2l6ZW9mKFNoYXJlZFZpZGVvRnJhbWVJbmZvKTsKKyAgICByZXR1cm4g
d2VicnRjOjpjb3B5VmlkZW9GcmFtZUJ1ZmZlcihmcmFtZUJ1ZmZlciwgZGF0YSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
VmlkZW9TYW1wbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
VmlkZW9TYW1wbGUuY3BwCmluZGV4IGRhYjZmMmE0MTc3M2E1YjI3ODE1YWIyMGQ0YmQ0NDY5ZDYy
YjkyZWEuLjg3NWRhYTQwZTI4ZThkZjlhZTIyYjY2NzQ2MGVjNmUyOWQ1OGIyNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBs
ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZUNWLmgiCisjaW5jbHVk
ZSAiVmlkZW9GcmFtZUxpYldlYlJUQy5oIgogCiAjaWYgVVNFKEFDQ0VMRVJBVEUpCiAjaW5jbHVk
ZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CkBAIC05MywxMSArOTQsMTEgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1lZGlh
U2FtcGxlJiBzYW1wbGUKICAgICAgICAgaW1hZ2VCdWZmZXIgPSBkb3duY2FzdDxNZWRpYVNhbXBs
ZUFWRk9iakM+KHNhbXBsZSkucGl4ZWxCdWZmZXIoKTsKICAgICBlbHNlIGlmIChpczxWaWRlb0Zy
YW1lQ1Y+KHNhbXBsZSkpCiAgICAgICAgIGltYWdlQnVmZmVyID0gZG93bmNhc3Q8VmlkZW9GcmFt
ZUNWPihzYW1wbGUpLnBpeGVsQnVmZmVyKCk7Ci0gICAgZWxzZSB7CisgICAgZWxzZSBpZiAoc2hv
dWxkQ2hlY2tGb3JJT1N1cmZhY2UgPT0gU2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Olllcykgewog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVh
dGU6IGNhbm5vdCBvYnRhaW4gQ1ZQaXhlbEJ1ZmZlciBmcm9tIHNhbXBsZS4gVW5rbm93biBzYW1w
bGUgdHlwZS4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGlmICghaW1h
Z2VCdWZmZXIpIHsKKyAgICBpZiAoIWltYWdlQnVmZmVyICYmIHNob3VsZENoZWNrRm9ySU9TdXJm
YWNlID09IFNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpZZXMpIHsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlOiBjYW5ub3Qgb2J0YWlu
IENWUGl4ZWxCdWZmZXIgZnJvbSBzYW1wbGUuIE5vIGJ1ZmZlci4iKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvVmlkZW9GcmFtZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLm1tCmluZGV4IGQzOWM5MGUwYzc5MGE1NzUxMTM3YjA1YTZmZDYw
MTExMmQ2YTk4MWEuLjg5ZjFkYzZmMTUzMzJiMmYwYTFlNmMyZTQ1YmU1OTQxNjM3YTI5Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVD
Vi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1l
Q1YubW0KQEAgLTU0LDYgKzU0LDcgQEAgdWludDMyX3QgVmlkZW9GcmFtZUNWOjp2aWRlb1BpeGVs
Rm9ybWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0
VHlwZShtX3BpeGVsQnVmZmVyLmdldCgpKTsKIH0KKwogUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJh
bWVDVj4gVmlkZW9GcmFtZUNWOjphc1ZpZGVvRnJhbWVDVigpCiB7CiAgICAgcmV0dXJuIHRoaXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJh
YTY2MmI2MmQwMjVjZGM2ZjU5MTQ2NTIyOTc1ZTQ3NGE3MmY1MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1l
TGliV2ViUlRDLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWVMaWJXZWJSVEMuaCIKKworI2lmIFVTRShMSUJX
RUJSVEMpCisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRl
ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxWaWRl
b0ZyYW1lTGliV2ViUlRDPiBWaWRlb0ZyYW1lTGliV2ViUlRDOjpjcmVhdGUoTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENv
bnZlcnNpb25DYWxsYmFjayYmIGNvbnZlcnNpb25DYWxsYmFjaykKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBWaWRlb0ZyYW1lTGliV2ViUlRDKHByZXNlbnRhdGlvblRpbWUsIGlzTWlycm9y
ZWQsIHJvdGF0aW9uLCBXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUoY29udmVyc2lvbkNhbGxiYWNr
KSkpOworfQorCitWaWRlb0ZyYW1lTGliV2ViUlRDOjpWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlh
VGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90
YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVm
ZmVyLCBDb252ZXJzaW9uQ2FsbGJhY2smJiBjb252ZXJzaW9uQ2FsbGJhY2spCisgICAgOiBWaWRl
b0ZyYW1lKHByZXNlbnRhdGlvblRpbWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uKQorICAgICwgbV9i
dWZmZXIoV1RGTW92ZShidWZmZXIpKQorICAgICwgbV9zaXplKG1fYnVmZmVyLT53aWR0aCgpLCAg
bV9idWZmZXItPmhlaWdodCgpKQorICAgICwgbV9jb252ZXJzaW9uQ2FsbGJhY2soV1RGTW92ZShj
b252ZXJzaW9uQ2FsbGJhY2spKQoreworICAgIHN3aXRjaCAobV9idWZmZXItPnR5cGUoKSkgewor
ICAgIGNhc2Ugd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMDoKKyAgICAgICAg
bV92aWRlb1BpeGVsRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5h
ckZ1bGxSYW5nZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSB3ZWJydGM6OlZpZGVvRnJhbWVC
dWZmZXI6OlR5cGU6OmtJMDEwOgorICAgICAgICBtX3ZpZGVvUGl4ZWxGb3JtYXQgPSBrQ1ZQaXhl
bEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQor
CitDVlBpeGVsQnVmZmVyUmVmIFZpZGVvRnJhbWVMaWJXZWJSVEM6OnBpeGVsQnVmZmVyKCkgY29u
c3QKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9waXhlbEJ1ZmZlckxvY2sgfTsKKyAgICBpZiAo
IW1fcGl4ZWxCdWZmZXIgJiYgbV9jb252ZXJzaW9uQ2FsbGJhY2spCisgICAgICAgIG1fcGl4ZWxC
dWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29udmVyc2lvbkNhbGxiYWNrLCB7IH0pKCptX2J1ZmZl
cik7CisgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuZ2V0KCk7Cit9CisKK30KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1Zp
ZGVvRnJhbWVMaWJXZWJSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDczNDgzZjhhMTlh
MzMyOTM3ZGRiMDNiZGE4NjFmZTkyOTI5MjljOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRD
LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNF
KExJQldFQlJUQykKKworI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKKworQUxMT1dfVU5VU0VEX1BB
UkFNRVRFUlNfQkVHSU4KKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmg+
CisjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg+CitBTExPV19V
TlVTRURfUEFSQU1FVEVSU19FTkQKKwordXNpbmcgQ1ZQaXhlbEJ1ZmZlclJlZiA9IHN0cnVjdCBf
X0NWQnVmZmVyKjsKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvRnJhbWVM
aWJXZWJSVEMgZmluYWwgOiBwdWJsaWMgVmlkZW9GcmFtZSB7CitwdWJsaWM6CisgICAgdXNpbmcg
Q29udmVyc2lvbkNhbGxiYWNrID0gRnVuY3Rpb248UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
KHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYpPjsKKyAgICBzdGF0aWMgUmVmPFZpZGVvRnJhbWVM
aWJXZWJSVEM+IGNyZWF0ZShNZWRpYVRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlv
biwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiwgQ29udmVy
c2lvbkNhbGxiYWNrJiYpOworCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlcj4gYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKworcHJpdmF0ZToKKyAg
ICBWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1Jv
dGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmLCBD
b252ZXJzaW9uQ2FsbGJhY2smJik7CisKKyAgICAvLyBWaWRlb0ZyYW1lCisgICAgRmxvYXRTaXpl
IHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NpemU7IH0KKyAgICB1
aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV92aWRlb1Bp
eGVsRm9ybWF0OyB9CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IGZp
bmFsOworCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1
ZmZlcj4gbV9idWZmZXI7CisgICAgRmxvYXRTaXplIG1fc2l6ZTsKKyAgICB1aW50MzJfdCBtX3Zp
ZGVvUGl4ZWxGb3JtYXQgeyAwIH07CisKKyAgICBtdXRhYmxlIENvbnZlcnNpb25DYWxsYmFjayBt
X2NvbnZlcnNpb25DYWxsYmFjazsKKyAgICBtdXRhYmxlIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBtX3BpeGVsQnVmZmVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9waXhlbEJ1ZmZlckxvY2sp
OworICAgIG11dGFibGUgTG9jayBtX3BpeGVsQnVmZmVyTG9jazsKK307CisKK30KKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lTGliV2ViUlRDKQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1l
KSB7IHJldHVybiB2aWRlb0ZyYW1lLmlzTGliV2ViUlRDKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBp
czxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYgaXM8V2ViQ29yZTo6VmlkZW9G
cmFtZUxpYldlYlJUQz4oZG93bmNhc3Q8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUp
KTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKaW5kZXggNjAzMzhlYTA3Mzdk
YjYxNjhmYzYxMGIxYzQyMDVjM2FhYTY5YWJlOS4uOGEwMjUyOTYyMTM2YTIyM2VkMzQyZjc4MDc3
MjVhZjg0OGQxYjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLmgKQEAgLTYyLDcgKzYyLDggQEAgcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBzaXplX3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKICNlbmRpZgotICAg
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9vbFJlZj4gbV9waXhlbEJ1ZmZlclBvb2w7CisgICAg
TG9jayBtX3BpeGVsQnVmZmVyUG9vbExvY2s7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQ
b29sUmVmPiBtX3BpeGVsQnVmZmVyUG9vbCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcGl4ZWxCdWZm
ZXJQb29sTG9jayk7CiAgICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJQb29sV2lkdGggeyAwIH07CiAg
ICAgc2l6ZV90IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0IHsgMCB9OwogICAgIHdlYnJ0Yzo6QnVm
ZmVyVHlwZSBtX3BpeGVsQnVmZmVyUG9vbEJ1ZmZlclR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggY2YwMzg0Yjk5ZGI0YzljZDg5
YWRhYWJjNGE1NGY1Y2M2MjMxMDhlNi4uNmZkODJiYTRkYzUwOWFjZjE2ZTUzYTVhYzczZjczOGI5
ZjFkZTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VD
b2NvYS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiQ1ZVdGlsaXRpZXMuaCIKICNpbXBv
cnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2ltcG9ydCAi
VmlkZW9GcmFtZUxpYldlYlJUQy5oIgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAK
IEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0JFR0lOCkBAIC02MSw3ICs2Miw3IEBAIFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2Nv
YShydGM6OnNjb3BlZF9yCiB7CiB9CiAKLUNWUGl4ZWxCdWZmZXJQb29sUmVmIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHdpZHRoLCBzaXpl
X3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkKK0NWUGl4ZWxCdWZmZXJQ
b29sUmVmIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlclBvb2wo
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlw
ZSkgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogewogICAgIGlmICghbV9waXhl
bEJ1ZmZlclBvb2wgfHwgbV9waXhlbEJ1ZmZlclBvb2xXaWR0aCAhPSB3aWR0aCB8fCBtX3BpeGVs
QnVmZmVyUG9vbEhlaWdodCAhPSBoZWlnaHQgfHwgbV9waXhlbEJ1ZmZlclBvb2xCdWZmZXJUeXBl
ICE9IGJ1ZmZlclR5cGUpIHsKICAgICAgICAgT1NUeXBlIHBvb2xCdWZmZXJUeXBlOwpAQCAtMTI3
LDI0ICsxMjgsMzIgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYTo6dG9WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0YzoKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZU1lZGlhU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIobV9ibGFja0ZyYW1lLmdldCgpLCByb3Rh
dGlvbiwgZnJhbWUudGltZXN0YW1wX3VzKCkpOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBEZXRl
Y3QgdGhlIGNhc2Ugb2YgZnJhbWUgaGF2aW5nIGEgRnJhbWVCdWZmZXJQcm92aWRlci4KLSAgICAv
LyBJbiBjYXNlIG9mIGluIG1lbW9yeSBzYW1wbGVzLCB3ZSBoYXZlIG5vbiBpbnRlcmxlYXZlZCBZ
VVYgZGF0YSB3aGlsZSBDVlBpeGVsQnVmZmVycyBwcmVmZXIgaW50ZXJsZWF2ZWQgWVVWIGRhdGEu
Ci0gICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGludHJvZHVjZSBhIE1lZGlhU2FtcGxlIHRoYXQgd291
bGQgcmVwcmVzZW50IG5vbiBpbnRlcmxlYXZlZCBZVVYgZGF0YSBhcyBhbiBvcHRpbWl6YXRpb24u
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZl
ckZyb21GcmFtZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2Vi
cnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewotICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVp
Z2h0LCBidWZmZXJUeXBlKTsKLSAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENy
ZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLmdl
dCgpLCAmcGl4ZWxCdWZmZXIpOworICAgIGlmIChhdXRvKiBwcm92aWRlciA9IHZpZGVvRnJhbWVC
dWZmZXJQcm92aWRlcihmcmFtZSkpIHsKKyAgICAgICAgLy8gVGhlIG9ubHkgc3VwcG9ydGVkIHBy
b3ZpZGVyIGlzIFZpZGVvRnJhbWUuCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb0Zy
YW1lKj4ocHJvdmlkZXIpOworICAgIH0KIAotICAgICAgICBpZiAoc3RhdHVzICE9IGtDVlJldHVy
blN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURF
TlRJRklFUiwgIkZhaWxlZCBjcmVhdGluZyBhIHBpeGVsIGJ1ZmZlciB3aXRoIGVycm9yICIsIHN0
YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gcGl4ZWxCdWZmZXI7Ci0gICAgfSkpOwotICAgIHJldHVybiBjcmVhdGVNZWRpYVNhbXBs
ZUZyb21DVlBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLmdldCgpLCByb3RhdGlvbiwgZnJhbWUudGlt
ZXN0YW1wX3VzKCkpOworICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIENWUGl4ZWxCdWZmZXJS
ZWYsIHVzZSBpdCBkaXJlY3RseS4KKyAgICBpZiAoYXV0byBwaXhlbEJ1ZmZlciA9IHdlYnJ0Yzo6
cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm4gY3JlYXRlTWVkaWFT
YW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlciwgcm90YXRpb24sIGZyYW1lLnRpbWVz
dGFtcF91cygpKTsKKworICAgIHJldHVybiBWaWRlb0ZyYW1lTGliV2ViUlRDOjpjcmVhdGUoTWVk
aWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpLCAxMDAwMDAwKSwgZmFsc2UsIHJvdGF0aW9uLCBm
cmFtZS52aWRlb19mcmFtZV9idWZmZXIoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCB0aGlzXShhdXRvJiBidWZmZXIpIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0Yod2VicnRjOjpj
cmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUJ1ZmZlcihidWZmZXIsIFt0aGlzXShzaXplX3Qgd2lk
dGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBDVlBp
eGVsQnVmZmVyUmVmIHsKKyAgICAgICAgICAgIExvY2tlciBsb2NrKG1fcGl4ZWxCdWZmZXJQb29s
TG9jayk7CisgICAgICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IHRoaXMtPnBpeGVsQnVm
ZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCBidWZmZXJUeXBlKTsKKyAgICAgICAgICAgIGlmICghcGl4
ZWxCdWZmZXJQb29sKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
ICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtX3BpeGVsQnVmZmVyUG9vbC5nZXQoKSwgJnBpeGVsQnVmZmVyKTsKKwor
ICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKSB7CisgICAgICAgICAg
ICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIGNy
ZWF0aW5nIGEgcGl4ZWwgYnVmZmVyIHdpdGggZXJyb3IgIiwgc3RhdHVzKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBw
aXhlbEJ1ZmZlcjsKKyAgICAgICAgfSkpOworICAgIH0pOwogfQogCiB2b2lkIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYg
d2VicnRjVmlkZW9GcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlQ29jb2EuY3BwCmluZGV4IDY5NTIwNWY1MGY5MjMyYTQyYmNhNTAwYjI0NGM4OThmYmE2
NzcxNzAuLjQ5ZmM4YTI4NGNiNDA4YjFkODM1MjRjY2U5MmQ4NjUwMTQzNTc2MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VDb2NvYS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lVmlkZW9VdGlsaXRpZXMu
aCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lTGliV2ViUlRDLmgiCiAKIEFMTE9XX1VOVVNFRF9QQVJB
TUVURVJTX0JFR0lOCiAKQEAgLTg0LDcgKzg1LDIyIEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2E6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUs
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgY2Fz
ZSBvZiBQbGF0Zm9ybVNhbXBsZTo6UmVtb3RlVmlkZW9GcmFtZVByb3h5VHlwZS4KKyAgICBib29s
IHNob3VsZEFwcGx5Um90YXRpb24gPSBtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgbV9jdXJyZW50
Um90YXRpb24gIT0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOworICAgIGlmICghc2hvdWxkQXBw
bHlSb3RhdGlvbiAmJiBpczxWaWRlb0ZyYW1lPihzYW1wbGUpICYmIGRvd25jYXN0PFZpZGVvRnJh
bWU+KHNhbXBsZSkuaXNSZW1vdGVQcm94eSgpKSB7CisgICAgICAgIFJlZiB2aWRlb0ZyYW1lIHsg
ZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKSB9OworICAgICAgICBhdXRvIHNpemUgPSBzYW1w
bGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgICAgICBzZW5kRnJhbWUod2VicnRjOjp0b1dlYlJU
Q1ZpZGVvRnJhbWVCdWZmZXIoJnZpZGVvRnJhbWUubGVha1JlZigpLAorICAgICAgICAgICAgW10o
YXV0byogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHBvaW50ZXIp
LT5waXhlbEJ1ZmZlcigpOyB9LAorICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyBzdGF0
aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPmRlcmVmKCk7IH0sCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWln
aHQoKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc2hvdWxkQXBwbHlS
b3RhdGlvbiAmJiBpczxWaWRlb0ZyYW1lPihzYW1wbGUpICYmIGRvd25jYXN0PFZpZGVvRnJhbWU+
KHNhbXBsZSkuaXNMaWJXZWJSVEMoKSkgeworICAgICAgICBzZW5kRnJhbWUoZG93bmNhc3Q8Vmlk
ZW9GcmFtZUxpYldlYlJUQz4oc2FtcGxlKS5idWZmZXIoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc2FtcGxlLnBpeGVsQnVmZmVyKCk7CiAgICAg
YXV0byBwaXhlbEZvcm1hdFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBp
eGVsQnVmZmVyKTsKIApAQCAtOTIsNyArMTA4LDcgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VDb2NvYTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwK
ICAgICBpZiAocGl4ZWxGb3JtYXRUeXBlICE9IHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkK
ICAgICAgICAgY29udmVydGVkQnVmZmVyID0gY29udmVydFRvWVVWKHBpeGVsQnVmZmVyKTsKIAot
ICAgIGlmIChtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgbV9jdXJyZW50Um90YXRpb24gIT0gd2Vi
cnRjOjprVmlkZW9Sb3RhdGlvbl8wKQorICAgIGlmIChzaG91bGRBcHBseVJvdGF0aW9uKQogICAg
ICAgICBjb252ZXJ0ZWRCdWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihjb252ZXJ0ZWRCdWZmZXIu
Z2V0KCksIG1fY3VycmVudFJvdGF0aW9uKTsKIAogICAgIHNlbmRGcmFtZSh3ZWJydGM6OnBpeGVs
QnVmZmVyVG9GcmFtZShjb252ZXJ0ZWRCdWZmZXIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcAppbmRleCBkMWU0N2FlNTg5ZWY2ZGUyNTZmZGVkY2VmMjkzOGYwY2E3
ODBkNjg5Li5lZDc2MjVhOTZkYjJhNDhkY2Q0NjBhYzczNDkxZmY5NjQxNzIwZDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0xMjIsNyArMTIyLDYgQEAgdm9pZCBS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKIHZvaWQgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlKFNoYXJlZFZpZGVvRnJhbWUmJiBmcmFtZSkKIHsK
ICAgICBhdXRvIHNhbXBsZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5yZWFkKFdURk1vdmUo
ZnJhbWUpKTsKLSAgICBBU1NFUlQoc2FtcGxlKTsKICAgICBpZiAoIXNhbXBsZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKaW5kZXggZDE4MDM0YjQ2MzExYWQzODlh
NmFiNmE4OTVmMWNhMmIxODE3OTkxOC4uYWRjYWFhNjg3MmY4ZmNhMjM5ZTJlMDBiNTRlYjNiZWVk
NjkwMDNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcApAQCAtMTIxLDE1ICsxMjEsNiBAQCBD
VlBpeGVsQnVmZmVyUmVmIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGl4ZWxCdWZmZXIoKSBjb25z
dAogICAgIH0KICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlci5nZXQoKTsKIH0KLQotUmVmUHRyPFdl
YkNvcmU6OlZpZGVvRnJhbWVDVj4gUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojphc1ZpZGVvRnJhbWVD
VigpCi17Ci0gICAgYXV0byBidWZmZXIgPSBwaXhlbEJ1ZmZlcigpOwotICAgIGlmICghYnVmZmVy
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVh
dGUobV9wcmVzZW50YXRpb25UaW1lLCBtX2lzTWlycm9yZWQsIG1fcm90YXRpb24sIFJldGFpblB0
ciB7IGJ1ZmZlciB9KTsKLX0KLQogI2VuZGlmCiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYgcHJv
cGVydGllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCmluZGV4IDBlZWM3Y2M0YmI1NjE2YmQyZWMyZmNm
NjhhOWJkYjkzZDZkNjIwM2IuLjEwMjRlNTUxNjhhMzdmMWFjZmE0OGUxMjg1NGY0MTk2ZjI0YWU1
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApAQCAtODksNyArODksNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1JlbW90ZVByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBm
aW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigp
IGZpbmFsOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCBkMDcwYzJiNzlk
ZjQwY2FjYjQxOGYwNjc4MjY3ZTRjM2I0YTU0NjFjLi44YjA2OTIyMmJjYjA4MjE1MjhiNWMwNDQz
NjE1Y2VhY2EwNWFmZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbnQz
Ml90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
d2VicnRjOjpWaWRlb0ZyYW1lJgogICAgICAgICBidWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6cGl4
ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUpKTsKICAgICAgICAgaWYgKCFidWZmZXIpIHsKICAgICAg
ICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgbmF0aXZlLCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVk
IHZpZGVvIGZyYW1lLgotICAgICAgICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFtZShlbmNv
ZGVyLCBmcmFtZSkpCisgICAgICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKGVuY29k
ZXIsICpmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5j
cHAKaW5kZXggMzk0Mzk1YmI5NWUzNmViYWYxNTRhN2FiNjkwNDJlNDE5MjkxZjcyOC4uYjEwZTE4
MjhjYzg3ODM1NDk3ZjFiOGNmM2ZhYjIyNWU3OTQyNzcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRW
aWRlb0ZyYW1lSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GcmFtZUxpYldlYlJUQy5o
PgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmg+CkBAIC05NSw2ICs5NiwxMyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJh
bWU+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKE1lZGlhU2FtcGxlJiBmcmFtZQogICAg
ICAgICBzaGFyZWRWaWRlb0ZyYW1lLmJ1ZmZlciA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQ
cm94eT4oZnJhbWUpLnJlYWQoKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFZpZGVvRnJhbWU7CiAg
ICAgfQorI2lmIFVTRShMSUJXRUJSVEMpCisgICAgaWYgKGlzPFZpZGVvRnJhbWVMaWJXZWJSVEM+
KGZyYW1lKSkgeworICAgICAgICBpZiAoIXdyaXRlKCpkb3duY2FzdDxWaWRlb0ZyYW1lTGliV2Vi
UlRDPihmcmFtZSkuYnVmZmVyKCksIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBuZXdNZW1vcnlDYWxs
YmFjaykpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gc2hhcmVkVmlk
ZW9GcmFtZTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoaXM8TWVkaWFTYW1wbGVBVkZPYmpDPihm
cmFtZSkpIHsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGRvd25jYXN0PE1lZGlhU2FtcGxl
QVZGT2JqQz4oZnJhbWUpLnBpeGVsQnVmZmVyKCk7CiAgICAgICAgIElPU3VyZmFjZVJlZiBzdXJm
YWNlID0gcGl4ZWxCdWZmZXIgPyBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKHBpeGVsQnVmZmVy
KSA6IG51bGxwdHI7CkBAIC0xMTgsMTMgKzEyNiwxMyBAQCBib29sIFNoYXJlZFZpZGVvRnJhbWVX
cml0ZXI6OndyaXRlKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIGNvbnN0IEZ1bmN0aW9u
PAogfQogCiAjaWYgVVNFKExJQldFQlJUQykKLWJvb2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6
d3JpdGUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3QgRnVuY3Rpb248dm9p
ZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNr
KQorYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZSh3ZWJydGM6OlZpZGVvRnJhbWVC
dWZmZXImIGZyYW1lQnVmZmVyLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+
JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCiB7Ci0gICAgYXV0byBpbmZv
ID0gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lKGZyYW1lKTsKKyAgICBhdXRv
IGluZm8gPSBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbVZpZGVvRnJhbWUoZnJhbWVCdWZmZXIp
OwogICAgIGlmICghcHJlcGFyZVdyaXRpbmcoaW5mbywgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5l
d01lbW9yeUNhbGxiYWNrKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBpbmZv
LndyaXRlVmlkZW9GcmFtZShmcmFtZSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc3RvcmFnZS0+
ZGF0YSgpKSk7CisgICAgcmV0dXJuIGluZm8ud3JpdGVWaWRlb0ZyYW1lQnVmZmVyKGZyYW1lQnVm
ZmVyLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zdG9yYWdlLT5kYXRhKCkpKTsKIH0KICNlbmRp
ZgogCkBAIC0xNzIsNyArMTgwLDYgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBTaGFyZWRWaWRlb0Zy
YW1lUmVhZGVyOjpyZWFkKFNoYXJlZFZpZGVvRnJhbWUmJiBzaGFyZWRWaWRlb0YKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9vYmplY3RIZWFw
LT5yZXRpcmUoV1RGTW92ZShyZWZlcmVuY2UpLCAwX3MpOwotICAgICAgICBBU1NFUlQoc2FtcGxl
ICYmIHNhbXBsZS0+cGl4ZWxCdWZmZXIoKSk7CiAgICAgICAgIGlmICghc2FtcGxlKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBzYW1wbGUtPnBpeGVsQnVmZmVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFy
ZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFy
ZWRWaWRlb0ZyYW1lLmgKaW5kZXggMWJiNTcyYjFiNWYxNWRjZjMzOTExNjM4OWZhNDU4ZTk5YWJj
ODg4My4uMzk5MmQ0ZDNkMjJlNmIzMjMyNzU3MDU2M2I3NjRmYjU0ZWVlYTIyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJh
bWUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzsKIH0KIAog
bmFtZXNwYWNlIHdlYnJ0YyB7Ci1jbGFzcyBWaWRlb0ZyYW1lOworY2xhc3MgVmlkZW9GcmFtZUJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IHdyaXRlKFdlYkNvcmU6Ok1lZGlh
U2FtcGxlJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKICAgICBib29s
IHdyaXRlKENWUGl4ZWxCdWZmZXJSZWYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhv
cmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
Jik+Jik7CiAjaWYgVVNFKExJQldFQlJUQykKLSAgICBib29sIHdyaXRlKGNvbnN0IHdlYnJ0Yzo6
VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisgICAg
Ym9vbCB3cml0ZSh3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImLCBjb25zdCBGdW5jdGlvbjx2b2lk
KElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYpPiYpOwogI2VuZGlmCiAgICAgdm9pZCBkaXNhYmxlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452982</attachid>
            <date>2022-02-23 08:07:42 -0800</date>
            <delta_ts>2022-02-23 10:16:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236131-20220223170738.patch</filename>
            <type>text/plain</type>
            <size>58266</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBkYTNlNmI5OGUzZGU2NjY2YTU2ZjMxZWEzYjg3NzNkZDhhNDdiNTZjLi5jN2Jj
NWUwNjFmYzFiYWU4MWZkNmZkODQzODU5NmRhYmNiZjMyMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMi0yMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMg
dmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlw
ZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxMzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4ODA1NTgwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSByb3V0aW5lcyB0byB0YWtl
IFZpZGVvRnJhbWVCdWZmZXIgaW5zdGVhZCBvZiBWaWRlb0ZyYW1lLgorICAgICAgICBGaXggYnVn
cyBpbiBoYW5kbGluZyBvZiBZVVYgY29udmVyc2lvbiBsaWJ3ZWJydGMgcm91dGluZXMuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFV0aWxpdGllcy5tbToKKwogMjAyMi0wMi0xOCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTAxNDkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZWQxMjA2YTEzZDdhNTRlMDc1YTc0N2M0YzllNjAyNjQwZWRlOWUxNy4uMmE3ZDJl
ZjJkM2Q5YWQzNzg1ZTVlM2U1ZTBiZjE3OTcxZDIwNjc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDIyLTAyLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyB0byBwYXNzIHdlYnJ0YyB2aWRlbyBmcmFtZSBidWZmZXJzIHRocm91Z2gg
UmVhbHRpbWVNZWRpYVNvdXJjZSBiYXNlZCBwaXBlbGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEzMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODg4MDU1ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIFZpZGVvRnJhbWVMaWJXZWJSVEMgYXMgYSB3cmFwcGVyIHRvIGxpYndl
YnJ0YyB2aWRlbyBmcmFtZSBidWZmZXIuCisgICAgICAgIEluIGNhc2Ugd2Ugc2VuZCBWaWRlb0Zy
YW1lTGliV2ViUlRDIHRocm91Z2ggUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EsIGRp
cmVjdGx5IHNlbmQgdGhlIHZpZGVvIGZyYW1lIGJ1ZmZlci4KKyAgICAgICAgV2hlbiByZWNlaXZp
bmcgbGlid2VicnRjIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgaW4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EsIG1ha2UgdXNlIG9mIFZpZGVvRnJhbWVMaWJXZWJSVEMgdG8gZGVsYXkgY29u
dmVyc2lvbiBvZiB0aGUgdmlkZW8gZnJhbWUgYnVmZmVyIGluIGEgQ1ZQaXhlbEJ1ZmZlclJlZi4K
KyAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhlIGNvbnZlcnNpb24gaXMgdW5uZWVkZWQgYXMgdGhl
IHZpZGVvIGZyYW1lIGJ1ZmZlciB3aWxsIGJlIHVzZWQgZm9yIHJlbmRlcmluZyBhbmQgd2lsbCBi
ZSBjb3BpZWQgdG8gc2hhcmVkIG1lbW9yeSB0aHJvdWdoIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIu
CisgICAgICAgIEZpeCBidWdzIGluIGhhbmRsaW5nIG9mIFlVViBjb252ZXJzaW9uIGxpYndlYnJ0
YyByb3V0aW5lcy4KKyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gaGF2ZSBhIGRlZmF1bHQg
YXNWaWRlb0ZyYW1lQ1YgbWV0aG9kIGltcGxlbWVudGF0aW4gaW4gVmlkZW9GcmFtZS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW06CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoK
KwogMjAyMi0wMi0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dTdHJlYW1lcl0gQWRkIFdlYktpdERNQUJ1ZlZpZGVvU2luawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
ZThmZTJlNjkwMTE1NDk3ZjU2MTk5OTU3NjIwN2U3YzFkYWQ0YjRkLi45ZDI0OWJhMGIyMjhlYzYx
MjlkNTA3YTdmYTRhMjE3ZGM5MzZjMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIy
LTAyLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxv
dyB0byBwYXNzIHdlYnJ0YyB2aWRlbyBmcmFtZSBidWZmZXJzIHRocm91Z2ggUmVhbHRpbWVNZWRp
YVNvdXJjZSBiYXNlZCBwaXBlbGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNjEzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg4MDU1ODA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9w
dGltaXphdGlvbiBzdXBwb3J0IGZvciBWaWRlb0ZyYW1lTGliV2ViUlRDIHdyaXRpbmcgaW50byBz
aGFyZWQgbWVtb3J5LgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgdG8gY29udmVydCB0
aGUgd2VicnRjIHZpZGVvIGZyYW1lIGludG8gYSBDVlBpeGVsQnVmZmVyLCBqdXN0IHRvIHNlbmQg
aXQgdG8gR1BVUHJvY2VzcyBmb3IgcmVuZGVyaW5nLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgVGhpcyBh
c3NlcnRpb24gbWlnaHQgYmUgYnVnZ3kgaW4gY2FzZSBvZiBHUFVQcm9jZXNzIGNyYXNoIChvbGQg
R1BVIHByb2Nlc3MgZnJhbWVzIHN1Ym1pdHRlZCB0byByZW5kZXJpbmcgaW4gbmV3IEdQVSBQcm9j
ZXNzKS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oOgor
CiAyMDIyLTAyLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBPcHRpbWlzZSBibGFjayBmcmFtZSBzZW5kaW5nIGluIE1lZGlhUmVjb3JkZXJQcml2YXRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLmlPUy5leHAKaW5kZXggYmJiYzA1ODI3Y2Y3NGE5M2EwMDJlNTA3NDc4MjEx
MGZjZjVjZGRkMy4uMTllNTY2OWJiYTlkM2U3MGYzOTU1NGZlZTEyY2I4MGYzNGEyYzBmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMzM0LDQgKzMzNCw1IEBAIF9fWk42d2VicnRjMzJ3
ZWJydGNfc2VxdWVuY2VfY2hlY2tlcl9pbnRlcm5hbDE5U2VxdWVuY2VDaGVja2VySW1wbEMyRXYK
IF9fWk5LM3J0YzE0UlRDQ2VydGlmaWNhdGUxN0dldFNTTENlcnRpZmljYXRlRXYKIF9fWlRWTjZ3
ZWJydGMzMFdyYXBwaW5nQXN5bmNEbnNSZXNvbHZlclJlc3VsdEUKIF9fWk42d2VicnRjMjBwaXhl
bEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUUKLV9fWk42d2VicnRjMTRjb3B5Vmlk
ZW9GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVQaAorX19aTjZ3ZWJydGMyMGNvcHlWaWRlb0ZyYW1l
QnVmZmVyRVJOU18xNlZpZGVvRnJhbWVCdWZmZXJFUGgKK19fWk42d2VicnRjMzJjcmVhdGVQaXhl
bEJ1ZmZlckZyb21GcmFtZUJ1ZmZlckVSTlNfMTZWaWRlb0ZyYW1lQnVmZmVyRVJLTlN0M19fMThm
dW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1Nz
aW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1
Y2RkZDMuLjE5ZTU2NjliYmE5ZDNlNzBmMzk1NTRmZWUxMmNiODBmMzRhMmMwZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMu
aU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTMzNCw0ICszMzQsNSBAQCBfX1pONndlYnJ0YzMy
d2VicnRjX3NlcXVlbmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVlbmNlQ2hlY2tlckltcGxDMkV2
CiBfX1pOSzNydGMxNFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0aWZpY2F0ZUV2CiBfX1pUVk42
d2VicnRjMzBXcmFwcGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRFCiBfX1pONndlYnJ0YzIwcGl4
ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFCi1fX1pONndlYnJ0YzE0Y29weVZp
ZGVvRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUGgKK19fWk42d2VicnRjMjBjb3B5VmlkZW9GcmFt
ZUJ1ZmZlckVSTlNfMTZWaWRlb0ZyYW1lQnVmZmVyRVBoCitfX1pONndlYnJ0YzMyY3JlYXRlUGl4
ZWxCdWZmZXJGcm9tRnJhbWVCdWZmZXJFUk5TXzE2VmlkZW9GcmFtZUJ1ZmZlckVSS05TdDNfXzE4
ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFj
LmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMubWFjLmV4cAppbmRleCAyYTU3ZGNhNWFmMzhlZGYzZTNhMGU5YTRlZmVmNjRjOGE2M2U5ZTZj
Li5mYTI4MGE0YTRmZDg2ODUxY2NiMzFmM2M5ZGU3NmI4ZWE4ODk1OGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5l
eHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5tYWMuZXhwCkBAIC0zMzQsNCArMzM0LDUgQEAgX19aTjZ3ZWJydGMzMndlYnJ0Y19zZXF1
ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1ZW5jZUNoZWNrZXJJbXBsQzJFdgogX19aTkszcnRj
MTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2VydGlmaWNhdGVFdgogX19aVFZONndlYnJ0YzMwV3Jh
cHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0RQogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJv
bUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRQotX19aTjZ3ZWJydGMxNGNvcHlWaWRlb0ZyYW1lRVJL
TlNfMTBWaWRlb0ZyYW1lRVBoCitfX1pONndlYnJ0YzIwY29weVZpZGVvRnJhbWVCdWZmZXJFUk5T
XzE2VmlkZW9GcmFtZUJ1ZmZlckVQaAorX19aTjZ3ZWJydGMzMmNyZWF0ZVBpeGVsQnVmZmVyRnJv
bUZyYW1lQnVmZmVyRVJOU18xNlZpZGVvRnJhbWVCdWZmZXJFUktOU3QzX18xOGZ1bmN0aW9uSUZQ
MTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGll
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaAppbmRleCAyZWY4YTFlOTE1Mzg2MTFlZmU1YWY3MzRmODBjZDdh
OWJhNGY1M2M2Li5hNzc5Y2FkMWJkMzYwMDJkNzk5MzE2YTE0ODA1ZDNhMzNkNGMxOGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTQ4LDkgKzQ4LDEw
IEBAIGJvb2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwogCiBlbnVtIGNsYXNzIEJ1
ZmZlclR5cGUgeyBJNDIwLCBJMDEwIH07CiBDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVm
ZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4
ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZm
ZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CitDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVm
ZmVyRnJvbUZyYW1lQnVmZmVyKFZpZGVvRnJhbWVCdWZmZXImLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4
ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CiBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0Zy
YW1lKENWUGl4ZWxCdWZmZXJSZWYpOwotYm9vbCBjb3B5VmlkZW9GcmFtZShjb25zdCBWaWRlb0Zy
YW1lJiwgdWludDhfdCopOworYm9vbCBjb3B5VmlkZW9GcmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVm
ZmVyJiwgdWludDhfdCopOwogCiB0eXBlZGVmIENWUGl4ZWxCdWZmZXJSZWYgKCpHZXRCdWZmZXJD
YWxsYmFjaykodm9pZCopOwogdHlwZWRlZiB2b2lkICgqUmVsZWFzZUJ1ZmZlckNhbGxiYWNrKSh2
b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4
IDYyZjYyNGM0OTc2ZmE2MThkODBjZDE0MGEzZmQ5MWQ2YmE5ZTkwOWYuLjY2ZjgwMTllYTU5NmNh
Y2M0NzJhMTViMTZmMGEzYjM1ZGFjYWU5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xNjAsMjggKzE2MCwzMiBAQCBzdGF0aWMgYm9vbCBDb3B5
VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJMDEwQnVmZmVySW50ZXJmYWNl
KiBmcmFtZQogCiBDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGNv
bnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJS
ZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpCiB7Ci0g
ICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKLSAgICBpZiAoYnVm
ZmVyLT50eXBlKCkgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkgewotICAgICAg
ICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUoKTsKKyAgICByZXR1cm4gY3JlYXRlUGl4ZWxCdWZm
ZXJGcm9tRnJhbWVCdWZmZXIoKmZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLCBjcmVhdGVQaXhl
bEJ1ZmZlcik7Cit9CisKK0NWUGl4ZWxCdWZmZXJSZWYgY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJh
bWVCdWZmZXIoVmlkZW9GcmFtZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENW
UGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxC
dWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci50eXBlKCkgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlw
ZTo6a05hdGl2ZSkgeworICAgICAgICBhdXRvIHR5cGUgPSBidWZmZXIudHlwZSgpOwogICAgICAg
ICBpZiAodHlwZSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCAmJiB0eXBlICE9IFZp
ZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJMDEwKSB7CiAgICAgICAgICAgICBSVENfTE9HKFdBUk5J
TkcpIDw8ICJWaWRlbyBmcmFtZSBidWZmZXIgdHlwZSBpcyBub3QgZXhwZWN0ZWQuIjsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQo
KSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0
MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0
ZVBpeGVsQnVmZmVyKGJ1ZmZlci53aWR0aCgpLCBidWZmZXIuaGVpZ2h0KCksIHR5cGUgPT0gVmlk
ZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgPyBCdWZmZXJUeXBlOjpJNDIwIDogQnVmZmVyVHlw
ZTo6STAxMCk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKICAgICAgICAgICAgIFJUQ19M
T0coV0FSTklORykgPDwgIlBpeGVsIGJ1ZmZlciBjcmVhdGlvbiBmYWlsZWQuIjsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHR5cGUgPT0gVmlk
ZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjApCi0gICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRv
UGl4ZWxCdWZmZXIoYnVmZmVyLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgICAg
IENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihidWZmZXIuR2V0STQyMCgpLCBwaXhlbEJ1ZmZl
cik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZl
cihidWZmZXItPkdldEkwMTAoKSwgcGl4ZWxCdWZmZXIpOworICAgICAgICAgICAgQ29weVZpZGVv
RnJhbWVUb1BpeGVsQnVmZmVyKGJ1ZmZlci5HZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKICAgICAg
ICAgcmV0dXJuIHBpeGVsQnVmZmVyOwogICAgIH0KIAotICAgIGF1dG8gKmZyYW1lQnVmZmVyID0g
c3RhdGljX2Nhc3Q8T2JqQ0ZyYW1lQnVmZmVyKj4oYnVmZmVyLmdldCgpKS0+d3JhcHBlZF9mcmFt
ZV9idWZmZXIoKTsKKyAgICBhdXRvICpmcmFtZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFt
ZUJ1ZmZlcio+KCZidWZmZXIpLT53cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOwogICAgIGlmICghW2Zy
YW1lQnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIwMywxOCArMjA3LDE3IEBAIENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgcmV0
dXJuIENWUGl4ZWxCdWZmZXJSZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOwogfQog
Ci1ib29sIGNvcHlWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90KiBk
YXRhKQorYm9vbCBjb3B5VmlkZW9GcmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVmZmVyJiBidWZmZXIs
IHVpbnQ4X3QqIGRhdGEpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9i
dWZmZXIoKTsKLSAgICBpZiAoYnVmZmVyLT50eXBlKCkgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlw
ZTo6a05hdGl2ZSkKKyAgICBpZiAoYnVmZmVyLnR5cGUoKSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpU
eXBlOjprTmF0aXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHR5cGUgPSBi
dWZmZXItPnR5cGUoKTsKKyAgICBhdXRvIHR5cGUgPSBidWZmZXIudHlwZSgpOwogICAgIGlmICh0
eXBlID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKSB7Ci0gICAgICAgIGF1dG8qIGk0
MjBGcmFtZSA9IGJ1ZmZlci0+R2V0STQyMCgpOworICAgICAgICBhdXRvKiBpNDIwRnJhbWUgPSBi
dWZmZXIuR2V0STQyMCgpOwogICAgICAgICBhdXRvKiBkYXRhWSA9IGRhdGE7CiAgICAgICAgIGF1
dG8gc3RyaWRlWSA9IGk0MjBGcmFtZS0+d2lkdGgoKTsKLSAgICAgICAgYXV0byBzdHJpZGVVViA9
IGk0MjBGcmFtZS0+d2lkdGgoKSAvIDI7CisgICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpNDIwRnJh
bWUtPndpZHRoKCk7CiAgICAgICAgIGF1dG8qIGRhdGFVViA9IGRhdGEgKyAoaTQyMEZyYW1lLT53
aWR0aCgpICogaTQyMEZyYW1lLT5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybiAhbGlieXV2OjpJ
NDIwVG9OVjEyKGk0MjBGcmFtZS0+RGF0YVkoKSwgaTQyMEZyYW1lLT5TdHJpZGVZKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk0MjBGcmFtZS0+RGF0YVUoKSwgaTQyMEZy
YW1lLT5TdHJpZGVVKCksCkBAIC0yMjMsMTAgKzIyNiwxMCBAQCBib29sIGNvcHlWaWRlb0ZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90KiBkYXRhKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpNDIwRnJhbWUtPndpZHRoKCksIGk0MjBGcmFtZS0+aGVpZ2h0
KCkpOwogICAgIH0KICAgICBpZiAodHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTAx
MCkgewotICAgICAgICBhdXRvKiBpMDEwRnJhbWUgPSBidWZmZXItPkdldEkwMTAoKTsKKyAgICAg
ICAgYXV0byogaTAxMEZyYW1lID0gYnVmZmVyLkdldEkwMTAoKTsKICAgICAgICAgYXV0byogZGF0
YVkgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZGF0YSk7CiAgICAgICAgIGF1dG8gc3Ry
aWRlWSA9IGkwMTBGcmFtZS0+d2lkdGgoKTsKLSAgICAgICAgYXV0byBzdHJpZGVVViA9IGkwMTBG
cmFtZS0+d2lkdGgoKSAvIDI7CisgICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpMDEwRnJhbWUtPndp
ZHRoKCk7CiAgICAgICAgIGF1dG8qIGRhdGFVViA9IGRhdGFZICsgKGkwMTBGcmFtZS0+d2lkdGgo
KSAqIGkwMTBGcmFtZS0+aGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gIWxpYnl1djo6STAxMFRv
UDAxMChpMDEwRnJhbWUtPkRhdGFZKCksIGkwMTBGcmFtZS0+U3RyaWRlWSgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpMDEwRnJhbWUtPkRhdGFVKCksIGkwMTBGcmFtZS0+
U3RyaWRlVSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlZjYzYjU0MmNjYmYxOTBjYmI1MWUxYzQ1ZjVl
OWE4MjM2MzVkMjc0Li5jMjAwMzdlODhhMzVjMGI5NTMzMDRiY2MwODY3M2VjZTgzNGU1ZmVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjIwMCw2ICsyMjAwLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZVZpZGVvU291cmNlLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1Zp
ZGVvRnJhbWVMaWJXZWJSVEMuY3BwCiBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5jcHAKIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAogcGxh
dGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
YzM2ZmNmYTAxMTBkMWU4MTJhNDU2MTRkYzFkZTZkNTMxMTRjYzMyLi43MDFkMzQ3M2VmNTBlMmEx
ODM2MzI1MmU2MjY0NmI0ZmM5NzA1NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjI2LDYgKzEyMjYsNyBAQAogCQk0MUU2
RDcxQjI2RUExQTQ2MDBCNzY1RDYgLyogUlRDRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjdDMDRCMjZFNjkxNzEwMEQzNkMwNyAvKiBSVENF
cnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxRTlEQ0U3MjMxOTc0QkYwMEYzNTk0OSAvKiBCbG9iTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5RENFNDIzMTk3M0ZFMDBGMzU5NDkg
LyogQmxvYkxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxRTlEQ0U5MjMxOUNBNzYwMEYzNTk0OSAvKiBOZXR3b3JrU2VuZFF1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5RENFODIz
MTlDQTc1MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAv
KiBWaWRlb0ZyYW1lTGliV2ViUlRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUVCNzk3QzI3QzNFNDVEMDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldl
YlJUQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBG
NUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovOyB9OwogCQk0
MUYxRDIxRjBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYxRDIxRDBFRjM1QzJB
MDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8q
IERPTUNhY2hlRW5naW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZBQkQyQjFGNERGRTQyMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODk5Miw2ICs4
OTkzLDggQEAKIAkJNDFFOURDRTYyMzE5NzQyMzAwRjM1OTQ5IC8qIEVuZGluZ1R5cGUuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEVuZGluZ1R5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUU5RENFODIzMTlDQTc1MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrU2VuZFF1ZXVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTlEQ0VBMjMxOUNBRTgwMEYzNTk0OSAvKiBO
ZXR3b3JrU2VuZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5ldHdvcmtTZW5kUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUVC
Nzk3QjI3QzNFNDVEMDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBWaWRlb0ZyYW1lTGliV2ViUlRDLmNwcDsgcGF0
aCA9IGxpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFFQjc5N0MyN0MzRTQ1RDAwMUMzRTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJS
VEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVmlkZW9GcmFtZUxpYldlYlJU
Qy5oOyBwYXRoID0gbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYw
NjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDk2MzQyNEY5MERFQTAw
MDlGQjkzIC8qIFRleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dERlY29kZXJT
dHJlYW1EZWNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDY2LDYg
KzIxMDY5LDggQEAKIAkJCQk0MUIyOEIzODFGODYwQkQxMDBGQjUyQUMgLyogTGliV2ViUlRDUHJv
dmlkZXJDb2NvYS5jcHAgKi8sCiAJCQkJNDFCMjhCMzYxRjg2MEJEMDAwRkI1MkFDIC8qIExpYldl
YlJUQ1Byb3ZpZGVyQ29jb2EuaCAqLywKIAkJCQk0MTBFNDQ1RjIzNDM3M0FEMDAwMTczRDQgLyog
TGliV2ViUlRDU29ja2V0SWRlbnRpZmllci5oICovLAorCQkJCTQxRUI3OTdCMjdDM0U0NUQwMDFD
M0UzRSAvKiBWaWRlb0ZyYW1lTGliV2ViUlRDLmNwcCAqLywKKwkJCQk0MUVCNzk3QzI3QzNFNDVE
MDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldlYlJUQy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBs
aWJ3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzc5MDgsNiArMzc5MTMs
NyBAQAogCQkJCUNEM0VFRjNCMjU3OTlGQTEwMDY1NjNCQiAvKiBWaWRlb0NvbmZpZ3VyYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0Zy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkUzN0Y4NzI3QkJCNzA4MDA3QTZDRDMgLyogVmlk
ZW9GcmFtZUNWLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUVCNzk3RTI3QzNFNDVFMDAxQzNFM0Ug
LyogVmlkZW9GcmFtZUxpYldlYlJUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjYyNzE5
QkExQTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFERUVGQjAyNzE5QjI5MDAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTUyQjBENEMwMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ZpZGVvRnJhbWUuY3BwCmluZGV4IGE1NDljMWE1YzQ4ZWIyM2Q2NGJhM2ZkMzUzODQwOGJkMTU1
MjM0ZjAuLjU0ZjhhM2Q4YzBjNDEzOGY1ZGZjNjRjOTk5YTExZmVmMTU3MTBkMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgogCisjaW5jbHVkZSAiVmlkZW9G
cmFtZUNWLmgiCisKICNpZiBFTkFCTEUoVklERU8pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTEzMSw2ICsxMzMsMTcgQEAgdm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikgY29u
c3QKIHsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorUmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlk
ZW9GcmFtZTo6YXNWaWRlb0ZyYW1lQ1YoKQoreworICAgIGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZm
ZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUocHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb01pcnJv
cmVkKCksIHZpZGVvUm90YXRpb24oKSwgYnVmZmVyKTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCmluZGV4IDY0MTFkZjdkNjQwY2NkZWQx
ZDFlM2UxMWZkMWE0MjhhMjkxYjMxZWQuLjU5MDljMzQ4ZjZiZWVmYWNlNmU1ZjY5YTAzMTUwNGEw
NGEyZDk2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKQEAgLTUyLDkgKzUy
LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBw
bGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bW90ZVByb3h5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNM
aWJXZWJSVEMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2lmIFVTRShBVkZPVU5EQVRJT04p
CiAgICAgdmlydHVhbCBib29sIGlzQ1YoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4gYXNWaWRlb0ZyYW1lQ1YoKSA9IDA7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8VmlkZW9GcmFtZUNWPiBhc1ZpZGVv
RnJhbWVDVigpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oCmluZGV4IGJlM2ZkYjc5Nzgw
M2ExNDBlYjAyYzQ2OWQzMzYyNGI0OGI2Mjc1MDMuLmE0ZjVjZjQ1MGUwYWExODQ2YmNjYWEyNjVi
ZmZiNTE2ZDkwNGFmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NoYXJlZFZpZGVvRnJhbWVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaApAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIHN0cnVj
dCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX19DVlBpeGVs
QnVmZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewot
Y2xhc3MgVmlkZW9GcmFtZTsKK2NsYXNzIFZpZGVvRnJhbWVCdWZmZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgd3JpdGVQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCB1aW50OF90KiBkYXRhKTsK
IAogI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJlZFZp
ZGVvRnJhbWVJbmZvIGZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd3JpdGVWaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSYsIHVpbnQ4X3QqIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFy
ZWRWaWRlb0ZyYW1lSW5mbyBmcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWVC
dWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdyaXRlVmlkZW9GcmFtZUJ1ZmZlcih3
ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImLCB1aW50OF90KiBkYXRhKTsKICNlbmRpZgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgc2l6ZV90IHN0b3JhZ2VTaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tCmluZGV4
IDA4YzZjY2Q4ODUzNzFmYWYxZDExOGUzOWRhMjNhZTMyZDg0NTliZGUuLmVjNTY1MGVhMzc2Njdh
OTAyZjMyOGY1MzJjNDljZWFmYTcxNDdmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tCkBAIC03OCw2ICs3OCw3IEBA
IHNpemVfdCBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6c3RvcmFnZVNpemUoKSBjb25zdAogdm9pZCBT
aGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZW5jb2RlKHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQogewogICAg
IFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKwogICAgIGVuY29kZXIgPDwgKHVp
bnQzMl90KW1fYnVmZmVyVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fd2lkdGg7CiAgICAgZW5jb2Rl
ciA8PCBtX2hlaWdodDsKQEAgLTIwNyw3ICsyMDgsNiBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gU2hhcmVkVmlkZW9GcmFtZUluZm86OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbU1lbW9yeShj
bwogICAgICAgICBkYXRhICs9IG1fYnl0ZXNQZXJSb3dQbGFuZUI7CiAgICAgfQogCi0gICAgQ1ZQ
aXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHJhd1BpeGVsQnVmZmVyLCAwKTsKICAgICByZXR1
cm4gcGl4ZWxCdWZmZXI7CiB9CiAKQEAgLTI2NiwzMSArMjY2LDMxIEBAIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUG9vbFJlZj4gU2hhcmVkVmlkZW9GcmFtZUluZm86OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXJQb29sCiB9CiAKICNpZiBVU0UoTElCV0VCUlRDKQotU2hhcmVkVmlkZW9GcmFtZUluZm8g
U2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9G
cmFtZSYgZnJhbWUpCitTaGFyZWRWaWRlb0ZyYW1lSW5mbyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6
ZnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyJiBmcmFtZSkKIHsK
LSAgICBhdXRvIGJ1ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOwotICAgIGlmIChi
dWZmZXItPnR5cGUoKSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUp
CisgICAgaWYgKGZyYW1lLnR5cGUoKSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6
OmtOYXRpdmUpCiAgICAgICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IH07CiAKLSAg
ICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUoKTsKLQorICAgIGF1dG8gdHlwZSA9IGZyYW1lLnR5
cGUoKTsKICAgICBpZiAodHlwZSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJ
NDIwKQogICAgICAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8geyBrQ1ZQaXhlbEZvcm1h
dFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlLAogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUu
aGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksCi0gICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0
aCgpKSAvIDIgfTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0
aCgpKSAvIDIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSkgLyAyLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgfTsKIAogICAgIGlmICh0eXBlID09IHdl
YnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0kwMTApCiAgICAgICAgIHJldHVybiBTaGFy
ZWRWaWRlb0ZyYW1lSW5mbyB7IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFy
RnVsbFJhbmdlLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRo
KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZnJhbWUud2lkdGgoKSAqIDIpLAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0
KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgfTsKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSAvIDIsIHN0YXRpY19jYXN0PHVp
bnQzMl90PihmcmFtZS5oZWlnaHQoKSkgLyAyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUu
d2lkdGgoKSkgKiAyIH07CiAKICAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8geyB9Owog
fQogCi1ib29sIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjp3cml0ZVZpZGVvRnJhbWUoY29uc3Qgd2Vi
cnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgdWludDhfdCogZGF0YSkKK2Jvb2wgU2hhcmVkVmlkZW9G
cmFtZUluZm86OndyaXRlVmlkZW9GcmFtZUJ1ZmZlcih3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXIm
IGZyYW1lQnVmZmVyLCB1aW50OF90KiBkYXRhKQogewogICAgIEFTU0VSVChtX2J1ZmZlclR5cGUg
PT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSB8fCBtX2J1
ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFu
Z2UpOwotICAgIHJldHVybiB3ZWJydGM6OmNvcHlWaWRlb0ZyYW1lKGZyYW1lLCBkYXRhKTsKKyAg
ICBlbmNvZGUoZGF0YSk7CisgICAgZGF0YSArPSBzaXplb2YoU2hhcmVkVmlkZW9GcmFtZUluZm8p
OworICAgIHJldHVybiB3ZWJydGM6OmNvcHlWaWRlb0ZyYW1lQnVmZmVyKGZyYW1lQnVmZmVyLCBk
YXRhKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKaW5kZXggZGFiNmYyYTQxNzczYTViMjc4MTVh
YjIwZDRiZDQ0NjlkNjJiOTJlYS4uODc1ZGFhNDBlMjhlOGRmOWFlMjJiNjY3NDYwZWM2ZTI5ZDU4
YjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
VmlkZW9TYW1wbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZVZpZGVvU2FtcGxlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1l
Q1YuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lTGliV2ViUlRDLmgiCiAKICNpZiBVU0UoQUNDRUxF
UkFURSkKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KQEAgLTkzLDExICs5NCwx
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZQogICAgICAgICBpbWFnZUJ1ZmZlciA9IGRvd25j
YXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oc2FtcGxlKS5waXhlbEJ1ZmZlcigpOwogICAgIGVsc2Ug
aWYgKGlzPFZpZGVvRnJhbWVDVj4oc2FtcGxlKSkKICAgICAgICAgaW1hZ2VCdWZmZXIgPSBkb3du
Y2FzdDxWaWRlb0ZyYW1lQ1Y+KHNhbXBsZSkucGl4ZWxCdWZmZXIoKTsKLSAgICBlbHNlIHsKKyAg
ICBlbHNlIGlmIChzaG91bGRDaGVja0ZvcklPU3VyZmFjZSA9PSBTaG91bGRDaGVja0ZvcklPU3Vy
ZmFjZTo6WWVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiUmVtb3RlVmlk
ZW9TYW1wbGU6OmNyZWF0ZTogY2Fubm90IG9idGFpbiBDVlBpeGVsQnVmZmVyIGZyb20gc2FtcGxl
LiBVbmtub3duIHNhbXBsZSB0eXBlLiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikgeworICAgIGlmICghaW1hZ2VCdWZmZXIgJiYgc2hvdWxk
Q2hlY2tGb3JJT1N1cmZhY2UgPT0gU2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6OlllcykgewogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGU6
IGNhbm5vdCBvYnRhaW4gQ1ZQaXhlbEJ1ZmZlciBmcm9tIHNhbXBsZS4gTm8gYnVmZmVyLiIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0KaW5kZXggZDM5YzkwZTBjNzkwYTU3
NTExMzdiMDVhNmZkNjAxMTEyZDZhOTgxYS4uODlmMWRjNmYxNTMzMmIyZjBhMWU2YzJlNDViZTU5
NDE2MzdhMjljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVmlkZW9GcmFtZUNWLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L1ZpZGVvRnJhbWVDVi5tbQpAQCAtNTQsNiArNTQsNyBAQCB1aW50MzJfdCBWaWRlb0ZyYW1l
Q1Y6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBDVlBpeGVsQnVmZmVy
R2V0UGl4ZWxGb3JtYXRUeXBlKG1fcGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQorCiBSZWZQdHI8V2Vi
Q29yZTo6VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmFzVmlkZW9GcmFtZUNWKCkKIHsKICAg
ICByZXR1cm4gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iYmFhNjYyYjYyZDAyNWNkYzZmNTkxNDY1MjI5NzVlNDc0YTcyZjUzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUxpYldlYlJUQy5oIgor
CisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oPgorI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPFZpZGVvRnJhbWVMaWJXZWJSVEM+IFZpZGVvRnJhbWVMaWJXZWJSVEM6OmNyZWF0
ZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0
aW9uIHJvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVy
PiYmIGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNrKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnJhbWVMaWJXZWJSVEMocHJlc2VudGF0aW9u
VGltZSwgaXNNaXJyb3JlZCwgcm90YXRpb24sIFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShjb252
ZXJzaW9uQ2FsbGJhY2spKSk7Cit9CisKK1ZpZGVvRnJhbWVMaWJXZWJSVEM6OlZpZGVvRnJhbWVM
aWJXZWJSVEMoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlk
ZW9Sb3RhdGlvbiByb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFt
ZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZlcnNpb25DYWxsYmFjayYmIGNvbnZlcnNpb25DYWxsYmFj
aykKKyAgICA6IFZpZGVvRnJhbWUocHJlc2VudGF0aW9uVGltZSwgaXNNaXJyb3JlZCwgcm90YXRp
b24pCisgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgLCBtX3NpemUobV9idWZm
ZXItPndpZHRoKCksICBtX2J1ZmZlci0+aGVpZ2h0KCkpCisgICAgLCBtX2NvbnZlcnNpb25DYWxs
YmFjayhXVEZNb3ZlKGNvbnZlcnNpb25DYWxsYmFjaykpCit7CisgICAgc3dpdGNoIChtX2J1ZmZl
ci0+dHlwZSgpKSB7CisgICAgY2FzZSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJ
NDIwOgorICAgICAgICBtX3ZpZGVvUGl4ZWxGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIw
WXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIHdlYnJ0
Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0kwMTA6CisgICAgICAgIG1fdmlkZW9QaXhlbEZv
cm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9Cit9CisKK0NWUGl4ZWxCdWZmZXJSZWYgVmlkZW9GcmFtZUxpYldlYlJUQzo6cGl4
ZWxCdWZmZXIoKSBjb25zdAoreworICAgIExvY2tlciBsb2NrZXIgeyBtX3BpeGVsQnVmZmVyTG9j
ayB9OworICAgIGlmICghbV9waXhlbEJ1ZmZlciAmJiBtX2NvbnZlcnNpb25DYWxsYmFjaykKKyAg
ICAgICAgbV9waXhlbEJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb252ZXJzaW9uQ2FsbGJhY2ss
IHsgfSkoKm1fYnVmZmVyKTsKKyAgICByZXR1cm4gbV9waXhlbEJ1ZmZlci5nZXQoKTsKK30KKwor
fQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNzM0ODNmOGExOWEzMzI5MzdkZGIwM2JkYTg2MWZlOTI5MjkyOWM5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVv
RnJhbWVMaWJXZWJSVEMuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCitB
TExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvdmlkZW8v
dmlkZW9fZnJhbWUuaD4KKyNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRp
ZXMuaD4KK0FMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAorCit1c2luZyBDVlBpeGVsQnVmZmVy
UmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOworCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgVmlkZW9GcmFtZUxpYldlYlJUQyBmaW5hbCA6IHB1YmxpYyBWaWRlb0ZyYW1lIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBDb252ZXJzaW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4od2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyJik+OworICAgIHN0YXRpYyBS
ZWY8VmlkZW9GcmFtZUxpYldlYlJUQz4gY3JlYXRlKE1lZGlhVGltZSwgYm9vbCBpc01pcnJvcmVk
LCBWaWRlb1JvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVm
ZmVyPiYmLCBDb252ZXJzaW9uQ2FsbGJhY2smJik7CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQor
Citwcml2YXRlOgorICAgIFZpZGVvRnJhbWVMaWJXZWJSVEMoTWVkaWFUaW1lLCBib29sIGlzTWly
cm9yZWQsIFZpZGVvUm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXI+JiYsIENvbnZlcnNpb25DYWxsYmFjayYmKTsKKworICAgIC8vIFZpZGVvRnJhbWUK
KyAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c2l6ZTsgfQorICAgIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3ZpZGVvUGl4ZWxGb3JtYXQ7IH0KKyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyKCkgY29uc3QgZmluYWw7CisKKyAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpWaWRlb0ZyYW1lQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBGbG9hdFNpemUgbV9zaXplOworICAg
IHVpbnQzMl90IG1fdmlkZW9QaXhlbEZvcm1hdCB7IDAgfTsKKworICAgIG11dGFibGUgQ29udmVy
c2lvbkNhbGxiYWNrIG1fY29udmVyc2lvbkNhbGxiYWNrOworICAgIG11dGFibGUgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IG1fcGl4ZWxCdWZmZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX3Bp
eGVsQnVmZmVyTG9jayk7CisgICAgbXV0YWJsZSBMb2NrIG1fcGl4ZWxCdWZmZXJMb2NrOworfTsK
KworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlZpZGVvRnJhbWVM
aWJXZWJSVEMpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlZpZGVvRnJh
bWUmIHZpZGVvRnJhbWUpIHsgcmV0dXJuIHZpZGVvRnJhbWUuaXNMaWJXZWJSVEMoKTsgfQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1w
bGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlZpZGVvRnJhbWU+KG1lZGlhU2FtcGxlKSAmJiBpczxX
ZWJDb3JlOjpWaWRlb0ZyYW1lTGliV2ViUlRDPihkb3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1l
PihtZWRpYVNhbXBsZSkpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRl
eCA2MDMzOGVhMDczN2RiNjE2OGZjNjEwYjFjNDIwNWMzYWFhNjlhYmU5Li44YTAyNTI5NjIxMzZh
MjIzZWQzNDJmNzgwNzcyNWFmODQ4ZDFiOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaApAQCAtNjIsNyArNjIsOCBAQCBwcml2YXRlOgogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHNpemVfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9
OwogI2VuZGlmCi0gICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQb29sUmVmPiBtX3BpeGVsQnVm
ZmVyUG9vbDsKKyAgICBMb2NrIG1fcGl4ZWxCdWZmZXJQb29sTG9jazsKKyAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IG1fcGl4ZWxCdWZmZXJQb29sIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9waXhlbEJ1ZmZlclBvb2xMb2NrKTsKICAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xX
aWR0aCB7IDAgfTsKICAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgeyAwIH07CiAg
ICAgd2VicnRjOjpCdWZmZXJUeXBlIG1fcGl4ZWxCdWZmZXJQb29sQnVmZmVyVHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCBmMTBj
ZmUxZjAyOWJmNjY0Y2M4MjMyZDYxN2FmYjE2MDRiYzk3NGIwLi5iNDQ5OGUzYTU4ZGZlZjllYWQ4
NDY2YjE0ODQwMTM1OTM4NDBlMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0ICJDVlV0aWxp
dGllcy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpD
LmgiCi0jaW1wb3J0ICJWaWRlb0ZyYW1lLmgiCisjaW1wb3J0ICJWaWRlb0ZyYW1lTGliV2ViUlRD
LmgiCiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogQUxMT1dfVU5VU0VEX1BBUkFN
RVRFUlNfQkVHSU4KQEAgLTYyLDcgKzYyLDcgQEAgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2E6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hKHJ0Yzo6c2NvcGVkX3IKIHsK
IH0KIAotQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6
QnVmZmVyVHlwZSBidWZmZXJUeXBlKQorQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSBXVEZfSUdOT1JFU19USFJF
QURfU0FGRVRZX0FOQUxZU0lTCiB7CiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyUG9vbCB8fCBtX3Bp
eGVsQnVmZmVyUG9vbFdpZHRoICE9IHdpZHRoIHx8IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0ICE9
IGhlaWdodCB8fCBtX3BpeGVsQnVmZmVyUG9vbEJ1ZmZlclR5cGUgIT0gYnVmZmVyVHlwZSkgewog
ICAgICAgICBPU1R5cGUgcG9vbEJ1ZmZlclR5cGU7CkBAIC0xMzMsMjMgKzEzMywyNiBAQCBSZWZQ
dHI8TWVkaWFTYW1wbGU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjp0b1ZpZGVv
RnJhbWUoY29uc3Qgd2VicnRjOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFt
ZSo+KHByb3ZpZGVyKTsKICAgICB9CiAKLSAgICAvLyBJbiBjYXNlIG9mIGluIG1lbW9yeSBzYW1w
bGVzLCB3ZSBoYXZlIG5vbiBpbnRlcmxlYXZlZCBZVVYgZGF0YSB3aGlsZSBDVlBpeGVsQnVmZmVy
cyBwcmVmZXIgaW50ZXJsZWF2ZWQgWVVWIGRhdGEuCi0gICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGlu
dHJvZHVjZSBhIE1lZGlhU2FtcGxlIHRoYXQgd291bGQgcmVwcmVzZW50IG5vbiBpbnRlcmxlYXZl
ZCBZVVYgZGF0YSBhcyBhbiBvcHRpbWl6YXRpb24uCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFk
b3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNdKHNp
emVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUp
IC0+IENWUGl4ZWxCdWZmZXJSZWYgewotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IHRo
aXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCBidWZmZXJUeXBlKTsKLSAgICAgICAg
aWYgKCFwaXhlbEJ1ZmZlclBvb2wpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
ICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgYXV0
byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpLCAmcGl4ZWxCdWZmZXIpOwotCi0gICAg
ICAgIGlmIChzdGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcykgewotICAgICAgICAgICAgRVJST1Jf
TE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEgcGl4
ZWwgYnVmZmVyIHdpdGggZXJyb3IgIiwgc3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKLSAgICB9KSk7Ci0g
ICAgcmV0dXJuIGNyZWF0ZU1lZGlhU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIu
Z2V0KCksIHJvdGF0aW9uLCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7CisgICAgLy8gSWYgd2UgYWxy
ZWFkeSBoYXZlIGEgQ1ZQaXhlbEJ1ZmZlclJlZiwgdXNlIGl0IGRpcmVjdGx5LgorICAgIGlmIChh
dXRvIHBpeGVsQnVmZmVyID0gd2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkpCisg
ICAgICAgIHJldHVybiBjcmVhdGVNZWRpYVNhbXBsZUZyb21DVlBpeGVsQnVmZmVyKHBpeGVsQnVm
ZmVyLCByb3RhdGlvbiwgZnJhbWUudGltZXN0YW1wX3VzKCkpOworCisgICAgLy8gSW4gY2FzZSBv
ZiBpbiBtZW1vcnkgbGlid2VicnRjIHNhbXBsZXMsIHdlIGhhdmUgbm9uIGludGVybGVhdmVkIFlV
ViBkYXRhLCBsZXQncyBsYXppbHkgY3JlYXRlIENWUGl4ZWxCdWZmZXJzIGlmIG5lZWRlZC4KKyAg
ICByZXR1cm4gVmlkZW9GcmFtZUxpYldlYlJUQzo6Y3JlYXRlKE1lZGlhVGltZShmcmFtZS50aW1l
c3RhbXBfdXMoKSwgMTAwMDAwMCksIGZhbHNlLCByb3RhdGlvbiwgZnJhbWUudmlkZW9fZnJhbWVf
YnVmZmVyKCksIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10oYXV0byYgYnVm
ZmVyKSB7CisgICAgICAgIHJldHVybiBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJG
cm9tRnJhbWVCdWZmZXIoYnVmZmVyLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7Cisg
ICAgICAgICAgICBMb2NrZXIgbG9jayhtX3BpeGVsQnVmZmVyUG9vbExvY2spOworICAgICAgICAg
ICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSB0aGlzLT5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhl
aWdodCwgYnVmZmVyVHlwZSk7CisgICAgICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAgICAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBp
eGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4
ZWxCdWZmZXJQb29sLmdldCgpLCAmcGl4ZWxCdWZmZXIpOworICAgICAgICAgICAgaWYgKHN0YXR1
cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgRVJST1JfTE9HX0lGKGxv
Z2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEgcGl4ZWwgYnVmZmVy
IHdpdGggZXJyb3IgIiwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKKyAgICAgICAg
fSkpOworICAgIH0pOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29h
OjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgd2VicnRjVmlkZW9GcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCmluZGV4
IGE2ZWIxOWQzMmEyNDQ0MTRkOTUxMjU1NDEyZDU4OWNiMDQ2YzcwOTguLmY3MGI0MTU1NGNiZDUx
MDgzMTMwMTU1NmRjYWRkZmRiN2ZjYWEyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5o
IgogI2luY2x1ZGUgIlJlYWx0aW1lVmlkZW9VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJWaWRlb0Zy
YW1lLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUxpYldlYlJUQy5oIgogCiBBTExPV19VTlVTRURf
UEFSQU1FVEVSU19CRUdJTgogCkBAIC04NiwxNCArODYsMjAgQEAgdm9pZCBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VDb2NvYTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNh
bXBsZSwKICAgICB9CiAKICAgICBib29sIHNob3VsZEFwcGx5Um90YXRpb24gPSBtX3Nob3VsZEFw
cGx5Um90YXRpb24gJiYgbV9jdXJyZW50Um90YXRpb24gIT0gd2VicnRjOjprVmlkZW9Sb3RhdGlv
bl8wOwotICAgIGlmICghc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBpczxWaWRlb0ZyYW1lPihzYW1w
bGUpICYmIGRvd25jYXN0PFZpZGVvRnJhbWU+KHNhbXBsZSkuaXNSZW1vdGVQcm94eSgpKSB7Ci0g
ICAgICAgIFJlZiB2aWRlb0ZyYW1lIHsgZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKSB9Owot
ICAgICAgICBhdXRvIHNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOwotICAgICAgICBz
ZW5kRnJhbWUod2VicnRjOjp0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXIoJnZpZGVvRnJhbWUubGVh
a1JlZigpLAotICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8VmlkZW9GcmFtZSo+KHBvaW50ZXIpLT5waXhlbEJ1ZmZlcigpOyB9LAotICAgICAgICAgICAg
W10oYXV0byogcG9pbnRlcikgeyBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPmRl
cmVmKCk7IH0sCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0
YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQoKSkpKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlm
ICghc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBpczxWaWRlb0ZyYW1lPihzYW1wbGUpKSB7CisgICAg
ICAgIGlmIChkb3duY2FzdDxWaWRlb0ZyYW1lPihzYW1wbGUpLmlzUmVtb3RlUHJveHkoKSkgewor
ICAgICAgICAgICAgUmVmIHZpZGVvRnJhbWUgeyBkb3duY2FzdDxWaWRlb0ZyYW1lPihzYW1wbGUp
IH07CisgICAgICAgICAgICBhdXRvIHNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOwor
ICAgICAgICAgICAgc2VuZEZyYW1lKHdlYnJ0Yzo6dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKCZ2
aWRlb0ZyYW1lLmxlYWtSZWYoKSwKKyAgICAgICAgICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPnBpeGVsQnVmZmVyKCk7
IH0sCisgICAgICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyBzdGF0aWNfY2FzdDxWaWRl
b0ZyYW1lKj4ocG9pbnRlciktPmRlcmVmKCk7IH0sCisgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8aW50PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KCkpKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRvd25jYXN0PFZp
ZGVvRnJhbWU+KHNhbXBsZSkuaXNMaWJXZWJSVEMoKSkgeworICAgICAgICAgICAgc2VuZEZyYW1l
KGRvd25jYXN0PFZpZGVvRnJhbWVMaWJXZWJSVEM+KHNhbXBsZSkuYnVmZmVyKCkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IHNhbXBsZS5waXhlbEJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IGI3NTg1MGI5MzI5Yjk3MThj
ZjU1NWRkNjliZTJlNzE4NDAwNGUzMmYuLjMyMTk0MmJlNjlmYWU5ZDNmZTRkMWEzYzJjMGNiN2Yz
MTQwNmUwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcDsKK3N0cnVjdCBTaGFyZWRWaWRlb0ZyYW1lOwogY2xhc3MgU2hhcmVk
VmlkZW9GcmFtZVJlYWRlcjsKIAogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHkgOiBwdWJsaWMg
SVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKQEAgLTg1
LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUVuY29kZXIoUlRDRW5jb2Rlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYsIGJvb2wgdXNlTG93TGF0ZW5jeSk7CiAgICAgdm9pZCByZWxlYXNlRW5jb2RlcihS
VENFbmNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBpbml0aWFsaXplRW5jb2RlcihSVENFbmNv
ZGVySWRlbnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQg
c3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1
aW50MzJfdCBtYXhGcmFtZXJhdGUpOwotICAgIHZvaWQgZW5jb2RlRnJhbWUoUlRDRW5jb2Rlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHVpbnQzMl90IHRpbWVTdGFt
cCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVv
RnJhbWVSZWFkUmVmZXJlbmNlPik7CisgICAgdm9pZCBlbmNvZGVGcmFtZShSVENFbmNvZGVySWRl
bnRpZmllciwgU2hhcmVkVmlkZW9GcmFtZSYmLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hv
dWxkRW5jb2RlQXNLZXlGcmFtZSk7CiAgICAgdm9pZCBzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVy
SWRlbnRpZmllciwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKTsKICAgICB2
b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoUlRDRW5jb2RlcklkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShSVENF
bmNvZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGRmYWY0YTI2YmQxZTMxMjE5MDM0YWJiMDY1
MmRlMjNkOWNlMmQxYWEuLmNhMTVhYjM2NGM1NjA3ZDE3NGZhN2MzMWM3NzhlNzU3Y2JkODhjZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzQsNyArMzQsNyBAQCBtZXNz
YWdlcyAtPiBMaWJXZWJSVENDb2RlY3NQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVF
bmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFN0cmluZyBmb3JtYXROYW1l
LCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gcGFyYW1ldGVycywgYm9vbCB1c2VM
b3dMYXRlbmN5KTsKICAgICBSZWxlYXNlRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlm
aWVyIGlkKQogICAgIEluaXRpYWxpemVFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZp
ZXIgaWQsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0
cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3Qg
bWF4RnJhbWVyYXRlKQotICAgIEVuY29kZUZyYW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZp
ZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSwgdWludDMyX3QgdGltZVN0
YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpS
ZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gc2FtcGxlUmVmZXJlbmNlKQorICAgIEVuY29k
ZUZyYW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlNo
YXJlZFZpZGVvRnJhbWUgZnJhbWUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lKQogICAgIFNldEVuY29kZVJhdGVzKFdlYktpdDo6UlRDRW5jb2RlcklkZW50
aWZpZXIgaWQsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKICAgICBTZXRT
aGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQs
IElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkKICAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5
KFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUgc3RvcmFnZUhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGYwMDY4MWI3OWY1ZmNl
MDM4NmE0ZWU2M2I3MmQ2ZjdlZTQyODgwYmEuLjc1OGNiNDE5ZGZmMmJkNThmNDNjZGZmYjVjODkx
YmE0MWM5NWNiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2Vi
UlRDQ29kZWNzOjpDb21wbGV0ZWRFbmNvZGluZyB7IGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSB7IGJ1ZmZlciwgc2l6ZSB9LCBpbmZvIH0sIDApOwogICAgIH0pLmdldCgpKTsKICAgICB3
ZWJydGM6OnNldExvY2FsRW5jb2Rlckxvd0xhdGVuY3koZW5jb2RlciwgdXNlTG93TGF0ZW5jeSk7
Ci0gICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwgRW5jb2RlciB7IGVuY29kZXIsIG51bGxw
dHIgfSk7CisgICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwgRW5jb2RlciB7IGVuY29kZXIs
IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4obV92aWRlb0ZyYW1lT2JqZWN0SGVh
cC5wdHIoKSkgfSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VFbmNv
ZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0yMzAsMzcgKzIzMCwyMyBA
QCBzdGF0aWMgaW5saW5lIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiB0b1dlYlJUQ1ZpZGVvUm90YXRp
b24oV2ViQ29yZTo6TWVkaWFTYW1wbGU6OgogCiAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywg
dGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBp
cyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NR
dWV1ZQogLy8gYW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4K
LXZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCB1aW50
MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSwgc3RkOjpvcHRpb25h
bDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4gc2FtcGxlUmVmZXJlbmNlKQordm9pZCBM
aWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgU2hhcmVkVmlkZW9GcmFtZSYmIGZyYW1lLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJv
b2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKIHsKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gcGl4ZWxCdWZmZXI7Ci0gICAgaWYgKHNhbXBsZVJlZmVyZW5jZSkgewotICAgICAgICBh
dXRvIHNhbXBsZSA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKCpzYW1w
bGVSZWZlcmVuY2UpLCAwX3MpOwotICAgICAgICBpZiAoIXNhbXBsZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBhdXRvIHBsYXRmb3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNh
bXBsZSgpOwotICAgICAgICBBU1NFUlQocGxhdGZvcm1TYW1wbGUudHlwZSA9PSBXZWJDb3JlOjpQ
bGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKLSAgICAgICAgcGl4ZWxCdWZmZXIg
PSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1h
Z2VCdWZmZXIocGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7Ci0gICAgfQot
CiAgICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcikpOwogICAgIGF1
dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwotICAgIGlm
ICghZW5jb2RlcikKKyAgICBpZiAoIWVuY29kZXIpIHsKKyAgICAgICAgLy8gTGV0J3MgcHJldmVu
dCBtZW1vcnkgbGVha3MgaWYgZW5jb2RlciBpcyBnb25lLgorICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZT4oZnJhbWUuYnVmZmVy
KSkKKyAgICAgICAgICAgIG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKHN0
ZDo6Z2V0PFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPihmcmFtZS5idWZmZXIpKSwgMF9z
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
LSAgICBpZiAoIXBpeGVsQnVmZmVyKSB7Ci0gICAgICAgIGlmIChzYW1wbGUuc3VyZmFjZSgpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVm
ZmVyKHNhbXBsZS5zdXJmYWNlKCkpKQotICAgICAgICAgICAgICAgIHBpeGVsQnVmZmVyID0gV1RG
TW92ZSgqYnVmZmVyKTsKLSAgICAgICAgfSBlbHNlIGlmIChlbmNvZGVyLT5mcmFtZVJlYWRlcikK
LSAgICAgICAgICAgIHBpeGVsQnVmZmVyID0gZW5jb2Rlci0+ZnJhbWVSZWFkZXItPnJlYWQoKTsK
LQotICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBhdXRvIG1lZGlhU2FtcGxlID0gZW5jb2Rlci0+ZnJhbWVSZWFkZXItPnJlYWQoV1RGTW92
ZShmcmFtZSkpOworICAgIGlmICghbWVkaWFTYW1wbGUpCisgICAgICAgIHJldHVybjsKIAotICAg
IHdlYnJ0Yzo6ZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWUoZW5jb2Rlci0+d2VicnRjRW5jb2Rlciwg
cGl4ZWxCdWZmZXIuZ2V0KCksIHNhbXBsZS50aW1lKCkudG9UaW1lU2NhbGUoMTAwMDAwMCkudGlt
ZVZhbHVlKCksIHRpbWVTdGFtcCwgdG9XZWJSVENWaWRlb1JvdGF0aW9uKHNhbXBsZS5yb3RhdGlv
bigpKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CisgICAgd2VicnRjOjplbmNvZGVMb2NhbEVu
Y29kZXJGcmFtZShlbmNvZGVyLT53ZWJydGNFbmNvZGVyLCBtZWRpYVNhbXBsZS0+cGl4ZWxCdWZm
ZXIoKSwgZnJhbWUudGltZS50b1RpbWVTY2FsZSgxMDAwMDAwKS50aW1lVmFsdWUoKSwgdGltZVN0
YW1wLCB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24pLCBzaG91bGRFbmNvZGVB
c0tleUZyYW1lKTsKICNlbmRpZgogfQogCkBAIC0yODQsOCArMjcwLDYgQEAgdm9pZCBMaWJXZWJS
VENDb2RlY3NQcm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShSVENFbmNvZGVySWRl
bnRpZmllciBpZGUKICAgICBpZiAoIWVuY29kZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghZW5jb2Rlci0+ZnJhbWVSZWFkZXIpCi0gICAgICAgIGVuY29kZXItPmZyYW1lUmVhZGVyID0g
bWFrZVVuaXF1ZTxTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyPihSZWYgeyBtX3ZpZGVvRnJhbWVPYmpl
Y3RIZWFwIH0pOwogICAgIGVuY29kZXItPmZyYW1lUmVhZGVyLT5zZXRTZW1hcGhvcmUoV1RGTW92
ZShzZW1hcGhvcmUpKTsKIH0KIApAQCAtMjk4LDggKzI4Miw2IEBAIHZvaWQgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoUlRDRW5jb2RlcklkZW50aWZpZXIg
aWRlbnRpCiAgICAgaWYgKCFlbmNvZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWVu
Y29kZXItPmZyYW1lUmVhZGVyKQotICAgICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlciA9IG1ha2VV
bmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4oUmVmIHsgbV92aWRlb0ZyYW1lT2JqZWN0SGVh
cCB9KTsKICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlci0+c2V0U2hhcmVkTWVtb3J5KGlwY0hhbmRs
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCBkMWU0N2Fl
NTg5ZWY2ZGUyNTZmZGVkY2VmMjkzOGYwY2E3ODBkNjg5Li5lZDc2MjVhOTZkYjJhNDhkY2Q0NjBh
YzczNDkxZmY5NjQxNzIwZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3Bw
CkBAIC0xMjIsNyArMTIyLDYgQEAgdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OnBhdXNlKCkKIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlKFNo
YXJlZFZpZGVvRnJhbWUmJiBmcmFtZSkKIHsKICAgICBhdXRvIHNhbXBsZSA9IG1fc2hhcmVkVmlk
ZW9GcmFtZVJlYWRlci5yZWFkKFdURk1vdmUoZnJhbWUpKTsKLSAgICBBU1NFUlQoc2FtcGxlKTsK
ICAgICBpZiAoIXNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1OTU2ODU1YWM1OWJmN2E1ZDE3
YjI5MWZhNGUxZjEyZTFlYTdkNWJhLi4zNzUxMWU4YWI4MDEwZjU1Y2NjZmU0M2EyNTRlMGEyZWYx
NDAwYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTg0Niw2ICs4NDYsNyBAQAogCQk0MTMwNzVCMDFERTg1RjU4MDAzOUVDNjkgLyog
V2ViUlRDTW9uaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzMDc1QTMxREU4NUVFNzAwMzlFQzY5IC8qIFdlYlJUQ01vbml0b3IuaCAqLzsgfTsK
IAkJNDEzMDc1QjIxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE2MURF
ODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggKi87IH07CiAJCTQxMzA3
NUI0MURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5
IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87IH07CisJCTQxM0M1NDFBMjdDNjdDMzkwMDJGQ0RB
OCAvKiBMaWJXZWJSVENDb2RlY3NQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTBBN0M4MjNCNjM5NzkwMDU2MTA2MCAvKiBMaWJXZWJSVEND
b2RlY3NQcm94eS5tbSAqLzsgfTsKIAkJNDE3NjkwMTQyMkZERDQxQjAwQjE1NzZEIC8qIE5ldHdv
cmtSVENQcm92aWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNzY5MDEzMjJGREQ0MUIwMEIxNTc2RCAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubW0g
Ki87IH07CiAJCTQxNzkxNUFGMjI1NkJCNzUwMEQ2Rjk3RSAvKiBXZWJTb2NrZXRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5MTVBRDIy
NTZCQjc0MDBENkY5N0UgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovOyB9OwogCQk0MTc5MTVCMTIy
NTZDMEQ2MDBENkY5N0UgLyogV2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzkxNUIwMjI1NkMwRDYwMEQ2Rjk3
RSAvKiBXZWJTb2NrZXRDaGFubmVsTWFuYWdlci5oICovOyB9OwpAQCAtMTYwNTYsNiArMTYwNTcs
NyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJ
CTVDRTkxMjEwMjI5M0MyNzcwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0MTNDNTQxQTI3QzY3QzM5MDAyRkNEQTggLyogTGliV2ViUlRDQ29k
ZWNzUHJveHkubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzlBOTExMTIyOEY2OUNDMDA1QzVCMTcg
LyogWFBDU2VydmljZU1haW4ubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAppbmRl
eCBkMTgwMzRiNDYzMTFhZDM4OWE2YWI2YTg5NWYxY2EyYjE4MTc5OTE4Li5hZGNhYWE2ODcyZjhm
Y2EyMzllMmUwMGI1NGViM2JlZWQ2OTAwM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBA
IC0xMjEsMTUgKzEyMSw2IEBAIENWUGl4ZWxCdWZmZXJSZWYgUmVtb3RlVmlkZW9GcmFtZVByb3h5
OjpwaXhlbEJ1ZmZlcigpIGNvbnN0CiAgICAgfQogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyLmdl
dCgpOwogfQotCi1SZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiBSZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OmFzVmlkZW9GcmFtZUNWKCkKLXsKLSAgICBhdXRvIGJ1ZmZlciA9IHBpeGVsQnVmZmVy
KCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShtX3ByZXNlbnRhdGlvblRpbWUsIG1faXNNaXJyb3JlZCwg
bV9yb3RhdGlvbiwgUmV0YWluUHRyIHsgYnVmZmVyIH0pOwotfQotCiAjZW5kaWYKIAogVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKaW5kZXggZGFj
ZDg4NjQ4YjEyYmE2MTdkNzAzOGY4NmQ0OTQyZDQ4YmQ4YjNhZC4uMWQ4MmVkOWMxOGVmMWNmMTkw
NzcwZGQ4YjM2YzQyZDljMzVmN2NjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC04OSw3ICs4
OSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVtb3RlUHJveHkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBw
aXhlbEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0ZyYW1l
Q1Y+IGFzVmlkZW9GcmFtZUNWKCkgZmluYWw7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwCmluZGV4IDhhZmMxYWMwMzIyNWU2NDNkODc1MjU2YjExY2IxNzkzMzgxMmQ5YTkuLjcxODk5
OTRkMDI0ZTI4YzBlMGNiOWMzYmNjYzEyYTlkNDUxOGRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAt
NDU3LDMxICs0NTcsMTUgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICBpZiAoIWVuY29k
ZXIuY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsK
IAotICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHJlbW90
ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlOwotICAgIGlmIChhdXRvKiBwcm92aWRlciA9IHdlYnJ0
Yzo6dmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVyKGZyYW1lKSkgewotICAgICAgICBhdXRvKiB2aWRl
b0ZyYW1lID0gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHByb3ZpZGVyKTsKLSAgICAgICAgaWYg
KGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4odmlkZW9GcmFtZSkpCi0gICAgICAgICAgICByZW1v
dGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94
eT4odmlkZW9GcmFtZSktPnJlYWQoKTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4gYnVmZmVyOwotICAgIGlmICghcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Up
IHsKLSAgICAgICAgYnVmZmVyID0gYWRvcHRDRih3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1l
KGZyYW1lKSk7Ci0gICAgICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgICAgICAvLyBidWZmZXIg
aXMgbm90IG5hdGl2ZSwgd2UgbmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KLSAg
ICAgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgZnJhbWUpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBhdXRvIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoYnVm
ZmVyLmdldCgpLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAw
KSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24oKSksIFJlbW90ZVZp
ZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOwotICAgIGlmIChidWZmZXIg
JiYgIXNhbXBsZS0+c3VyZmFjZSgpKSB7Ci0gICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgSU9TdXJm
YWNlLCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVkIHZpZGVvIGZyYW1lLgotICAgICAgICBpZiAo
IWNvcHlTaGFyZWRWaWRlb0ZyYW1lKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwotICAgIH0KKyAgICBhdXRvIHNoYXJl
ZFZpZGVvRnJhbWUgPSBlbmNvZGVyLnNoYXJlZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUoZnJhbWUs
CisgICAgICAgIFsmXShhdXRvJiBzZW1hcGhvcmUpIHsgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFw
aG9yZSB7IGVuY29kZXIuaWRlbnRpZmllciwgc2VtYXBob3JlIH0sIDApOyB9LAorICAgICAgICBb
Jl0oYXV0byYgaGFuZGxlKSB7IGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGli
V2ViUlRDQ29kZWNzUHJveHk6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBlbmNvZGVyLmlk
ZW50aWZpZXIsIGhhbmRsZSB9LCAwKTsgfQorICAgICk7CisgICAgQVNTRVJUKHNoYXJlZFZpZGVv
RnJhbWUpOworICAgIGlmICghc2hhcmVkVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIFdFQlJU
Q19WSURFT19DT0RFQ19FUlJPUjsKIAotICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVudGlm
aWVyLCAqc2FtcGxlLCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSwg
cmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgfSwgMCk7CisgICAgZW5jb2Rlci5jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBl
bmNvZGVyLmlkZW50aWZpZXIsICpzaGFyZWRWaWRlb0ZyYW1lLCBmcmFtZS50aW1lc3RhbXAoKSwg
c2hvdWxkRW5jb2RlQXNLZXlGcmFtZSB9LCAwKTsKICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCmluZGV4IDhhOGJhODk2NmZmMjljZjQyOTU4MTZh
MGM3MThmMTM5OTQ5ZGZjNmIuLmNlZDU2NjA4OGFhZTBmNWUzODljNGM3NTQ4NDBhMzY4MjFiNTEz
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJl
ZFZpZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NoYXJlZFZpZGVvRnJhbWUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkVmlkZW9GcmFtZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogI2lu
Y2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgpAQCAtOTUsNiArOTYsMTMgQEAgc3Rk
OjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0
ZShNZWRpYVNhbXBsZSYgZnJhbWUKICAgICAgICAgc2hhcmVkVmlkZW9GcmFtZS5idWZmZXIgPSBk
b3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KGZyYW1lKS5yZWFkKCk7CiAgICAgICAgIHJl
dHVybiBzaGFyZWRWaWRlb0ZyYW1lOwogICAgIH0KKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIGlm
IChpczxWaWRlb0ZyYW1lTGliV2ViUlRDPihmcmFtZSkpIHsKKyAgICAgICAgaWYgKCF3cml0ZSgq
ZG93bmNhc3Q8VmlkZW9GcmFtZUxpYldlYlJUQz4oZnJhbWUpLmJ1ZmZlcigpLCBuZXdTZW1hcGhv
cmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgcmV0dXJuIHNoYXJlZFZpZGVvRnJhbWU7CisgICAgfQorI2VuZGlmCiAgICAgaWYg
KGlzPE1lZGlhU2FtcGxlQVZGT2JqQz4oZnJhbWUpKSB7CiAgICAgICAgIGlmIChhdXRvIHBpeGVs
QnVmZmVyID0gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPihmcmFtZSkucGl4ZWxCdWZmZXIo
KSkgewogICAgICAgICAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1
cmZhY2UocGl4ZWxCdWZmZXIpKSB7CkBAIC0xMDMsNiArMTExLDcgQEAgc3RkOjpvcHRpb25hbDxT
aGFyZWRWaWRlb0ZyYW1lPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShNZWRpYVNhbXBs
ZSYgZnJhbWUKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKwogICAgIGlmICghd3Jp
dGUoZnJhbWUucGl4ZWxCdWZmZXIoKSwgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNh
bGxiYWNrKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gc2hhcmVkVmlkZW9GcmFt
ZTsKQEAgLTExOCwxMyArMTI3LDMwIEBAIGJvb2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6d3Jp
dGUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29uc3QgRnVuY3Rpb248CiB9CiAKICNp
ZiBVU0UoTElCV0VCUlRDKQotYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShjb25z
dCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2Vt
YXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCitzdGQ6Om9w
dGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKGNv
bnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpT
ZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3sKKyAg
ICBpZiAoYXV0byogcHJvdmlkZXIgPSB3ZWJydGM6OnZpZGVvRnJhbWVCdWZmZXJQcm92aWRlcihm
cmFtZSkpCisgICAgICAgIHJldHVybiB3cml0ZSgqc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHBy
b3ZpZGVyKSwgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKTsKKworICAg
IFNoYXJlZFZpZGVvRnJhbWUgc2hhcmVkVmlkZW9GcmFtZSB7IE1lZGlhVGltZShmcmFtZS50aW1l
c3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDApLCBmYWxzZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb246Ok5vbmUsIG51bGxwdHIgfTsKKyAgICBpZiAoYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0
Q0Yod2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkpKSB7CisgICAgICAgIGlmICgh
d3JpdGUocGl4ZWxCdWZmZXIuZ2V0KCksIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBuZXdNZW1vcnlD
YWxsYmFjaykpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gc2hhcmVk
VmlkZW9GcmFtZTsKKyAgICB9CisKKyAgICBpZiAoIXdyaXRlKCpmcmFtZS52aWRlb19mcmFtZV9i
dWZmZXIoKSwgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gc2hhcmVkVmlkZW9GcmFtZTsKK30KKworYm9vbCBT
aGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZSh3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImIGZy
YW1lQnVmZmVyLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1h
cGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCiB7Ci0gICAgYXV0byBpbmZvID0gU2hhcmVk
VmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lKGZyYW1lKTsKKyAgICBhdXRvIGluZm8gPSBT
aGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbVZpZGVvRnJhbWUoZnJhbWVCdWZmZXIpOwogICAgIGlm
ICghcHJlcGFyZVdyaXRpbmcoaW5mbywgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNh
bGxiYWNrKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBpbmZvLndyaXRlVmlk
ZW9GcmFtZShmcmFtZSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0YSgpKSk7
CisgICAgcmV0dXJuIGluZm8ud3JpdGVWaWRlb0ZyYW1lQnVmZmVyKGZyYW1lQnVmZmVyLCBzdGF0
aWNfY2FzdDx1aW50OF90Kj4obV9zdG9yYWdlLT5kYXRhKCkpKTsKIH0KICNlbmRpZgogCkBAIC0x
NzYsOSArMjAyLDkgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVy
OjpyZWFkKFNoYXJlZFZpZGVvRnJhbWUmJiBzaGFyZWRWaWRlb0YKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9vYmplY3RIZWFwLT5yZXRpcmUo
V1RGTW92ZShyZWZlcmVuY2UpLCAwX3MpOwotICAgICAgICBBU1NFUlQoc2FtcGxlICYmIHNhbXBs
ZS0+cGl4ZWxCdWZmZXIoKSk7CiAgICAgICAgIGlmICghc2FtcGxlKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIEFTU0VSVChzYW1wbGUtPnBpeGVsQnVmZmVyKCkpOwogICAg
ICAgICByZXR1cm4gc2FtcGxlLT5waXhlbEJ1ZmZlcigpOwogICAgIH0gLCBbXShNYWNoU2VuZFJp
Z2h0JiYgc2VuZFJpZ2h0KSAtPiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gewogICAgICAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
V1RGTW92ZShzZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0Zy
YW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0Zy
YW1lLmgKaW5kZXggYzQ2YjdlMjdmZjFhN2M2Y2Q1OGQ0NzBkNDI1MzY1YjFlMjMzMWE2Yi4uZWZl
ZmE3OTAxNjE2ZDFlNGE2ZmUyZjY1MzhlNjAwMjVlMGUyNjNhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaApAQCAt
NDQsNiArNDQsNyBAQCBjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzsKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiBjbGFzcyBWaWRlb0ZyYW1lOworY2xhc3MgVmlkZW9GcmFtZUJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC02NiwxMCArNjcsMTAgQEAgcHVibGljOgogICAgIFNoYXJl
ZFZpZGVvRnJhbWVXcml0ZXIoKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFt
ZT4gd3JpdGUoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6
U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYpPiYpOwotICAgIGJvb2wgd3JpdGUoQ1ZQaXhlbEJ1ZmZlclJlZiwgY29uc3QgRnVu
Y3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKICNpZiBVU0UoTElCV0VCUlRDKQotICAgIGJv
b2wgd3JpdGUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJ
UEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmKT4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IHdy
aXRlKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpT
ZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik+Jik7CiAjZW5kaWYKKyAgICBib29sIHdyaXRlKENWUGl4ZWxCdWZmZXJSZWYsIGNv
bnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CiAgICAgdm9pZCBkaXNhYmxlKCk7
CiAKIHByaXZhdGU6CkBAIC03Nyw2ICs3OCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgYWxsb2Nh
dGVTdG9yYWdlKHNpemVfdCwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYpOwogICAgIGJvb2wgcHJlcGFyZVdyaXRpbmcoY29uc3QgV2ViQ29yZTo6
U2hhcmVkVmlkZW9GcmFtZUluZm8mLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3Jl
Jik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYp
PiYpOwogCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBib29sIHdyaXRlKHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlciYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisjZW5k
aWYKKwogICAgIFVuaXF1ZVJlZjxJUEM6OlNlbWFwaG9yZT4gbV9zZW1hcGhvcmU7CiAgICAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gbV9zdG9yYWdlOwogICAgIGJvb2wgbV9pc1NlbWFwaG9yZUluVXNl
IHsgZmFsc2UgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452998</attachid>
            <date>2022-02-23 10:16:30 -0800</date>
            <delta_ts>2022-02-28 01:03:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236131-20220223191626.patch</filename>
            <type>text/plain</type>
            <size>58296</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBkYTNlNmI5OGUzZGU2NjY2YTU2ZjMxZWEzYjg3NzNkZDhhNDdiNTZjLi5jN2Jj
NWUwNjFmYzFiYWU4MWZkNmZkODQzODU5NmRhYmNiZjMyMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMi0yMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMg
dmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlw
ZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxMzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4ODA1NTgwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSByb3V0aW5lcyB0byB0YWtl
IFZpZGVvRnJhbWVCdWZmZXIgaW5zdGVhZCBvZiBWaWRlb0ZyYW1lLgorICAgICAgICBGaXggYnVn
cyBpbiBoYW5kbGluZyBvZiBZVVYgY29udmVyc2lvbiBsaWJ3ZWJydGMgcm91dGluZXMuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFV0aWxpdGllcy5tbToKKwogMjAyMi0wMi0xOCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTAxNDkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZWQxMjA2YTEzZDdhNTRlMDc1YTc0N2M0YzllNjAyNjQwZWRlOWUxNy4uMmE3ZDJl
ZjJkM2Q5YWQzNzg1ZTVlM2U1ZTBiZjE3OTcxZDIwNjc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDIyLTAyLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyB0byBwYXNzIHdlYnJ0YyB2aWRlbyBmcmFtZSBidWZmZXJzIHRocm91Z2gg
UmVhbHRpbWVNZWRpYVNvdXJjZSBiYXNlZCBwaXBlbGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEzMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODg4MDU1ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIFZpZGVvRnJhbWVMaWJXZWJSVEMgYXMgYSB3cmFwcGVyIHRvIGxpYndl
YnJ0YyB2aWRlbyBmcmFtZSBidWZmZXIuCisgICAgICAgIEluIGNhc2Ugd2Ugc2VuZCBWaWRlb0Zy
YW1lTGliV2ViUlRDIHRocm91Z2ggUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EsIGRp
cmVjdGx5IHNlbmQgdGhlIHZpZGVvIGZyYW1lIGJ1ZmZlci4KKyAgICAgICAgV2hlbiByZWNlaXZp
bmcgbGlid2VicnRjIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgaW4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EsIG1ha2UgdXNlIG9mIFZpZGVvRnJhbWVMaWJXZWJSVEMgdG8gZGVsYXkgY29u
dmVyc2lvbiBvZiB0aGUgdmlkZW8gZnJhbWUgYnVmZmVyIGluIGEgQ1ZQaXhlbEJ1ZmZlclJlZi4K
KyAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhlIGNvbnZlcnNpb24gaXMgdW5uZWVkZWQgYXMgdGhl
IHZpZGVvIGZyYW1lIGJ1ZmZlciB3aWxsIGJlIHVzZWQgZm9yIHJlbmRlcmluZyBhbmQgd2lsbCBi
ZSBjb3BpZWQgdG8gc2hhcmVkIG1lbW9yeSB0aHJvdWdoIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIu
CisgICAgICAgIEZpeCBidWdzIGluIGhhbmRsaW5nIG9mIFlVViBjb252ZXJzaW9uIGxpYndlYnJ0
YyByb3V0aW5lcy4KKyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gaGF2ZSBhIGRlZmF1bHQg
YXNWaWRlb0ZyYW1lQ1YgbWV0aG9kIGltcGxlbWVudGF0aW4gaW4gVmlkZW9GcmFtZS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW06CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoK
KwogMjAyMi0wMi0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dTdHJlYW1lcl0gQWRkIFdlYktpdERNQUJ1ZlZpZGVvU2luawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBk
ZThmZTJlNjkwMTE1NDk3ZjU2MTk5OTU3NjIwN2U3YzFkYWQ0YjRkLi45ZDI0OWJhMGIyMjhlYzYx
MjlkNTA3YTdmYTRhMjE3ZGM5MzZjMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIy
LTAyLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxv
dyB0byBwYXNzIHdlYnJ0YyB2aWRlbyBmcmFtZSBidWZmZXJzIHRocm91Z2ggUmVhbHRpbWVNZWRp
YVNvdXJjZSBiYXNlZCBwaXBlbGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNjEzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg4MDU1ODA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9w
dGltaXphdGlvbiBzdXBwb3J0IGZvciBWaWRlb0ZyYW1lTGliV2ViUlRDIHdyaXRpbmcgaW50byBz
aGFyZWQgbWVtb3J5LgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgdG8gY29udmVydCB0
aGUgd2VicnRjIHZpZGVvIGZyYW1lIGludG8gYSBDVlBpeGVsQnVmZmVyLCBqdXN0IHRvIHNlbmQg
aXQgdG8gR1BVUHJvY2VzcyBmb3IgcmVuZGVyaW5nLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgVGhpcyBh
c3NlcnRpb24gbWlnaHQgYmUgYnVnZ3kgaW4gY2FzZSBvZiBHUFVQcm9jZXNzIGNyYXNoIChvbGQg
R1BVIHByb2Nlc3MgZnJhbWVzIHN1Ym1pdHRlZCB0byByZW5kZXJpbmcgaW4gbmV3IEdQVSBQcm9j
ZXNzKS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oOgor
CiAyMDIyLTAyLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBPcHRpbWlzZSBibGFjayBmcmFtZSBzZW5kaW5nIGluIE1lZGlhUmVjb3JkZXJQcml2YXRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLmlPUy5leHAKaW5kZXggYmJiYzA1ODI3Y2Y3NGE5M2EwMDJlNTA3NDc4MjEx
MGZjZjVjZGRkMy4uMTllNTY2OWJiYTlkM2U3MGYzOTU1NGZlZTEyY2I4MGYzNGEyYzBmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0
aW9ucy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMzM0LDQgKzMzNCw1IEBAIF9fWk42d2VicnRjMzJ3
ZWJydGNfc2VxdWVuY2VfY2hlY2tlcl9pbnRlcm5hbDE5U2VxdWVuY2VDaGVja2VySW1wbEMyRXYK
IF9fWk5LM3J0YzE0UlRDQ2VydGlmaWNhdGUxN0dldFNTTENlcnRpZmljYXRlRXYKIF9fWlRWTjZ3
ZWJydGMzMFdyYXBwaW5nQXN5bmNEbnNSZXNvbHZlclJlc3VsdEUKIF9fWk42d2VicnRjMjBwaXhl
bEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUUKLV9fWk42d2VicnRjMTRjb3B5Vmlk
ZW9GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVQaAorX19aTjZ3ZWJydGMyMGNvcHlWaWRlb0ZyYW1l
QnVmZmVyRVJOU18xNlZpZGVvRnJhbWVCdWZmZXJFUGgKK19fWk42d2VicnRjMzJjcmVhdGVQaXhl
bEJ1ZmZlckZyb21GcmFtZUJ1ZmZlckVSTlNfMTZWaWRlb0ZyYW1lQnVmZmVyRVJLTlN0M19fMThm
dW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1Nz
aW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1
Y2RkZDMuLjE5ZTU2NjliYmE5ZDNlNzBmMzk1NTRmZWUxMmNiODBmMzRhMmMwZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMu
aU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlv
bnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAgLTMzNCw0ICszMzQsNSBAQCBfX1pONndlYnJ0YzMy
d2VicnRjX3NlcXVlbmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVlbmNlQ2hlY2tlckltcGxDMkV2
CiBfX1pOSzNydGMxNFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0aWZpY2F0ZUV2CiBfX1pUVk42
d2VicnRjMzBXcmFwcGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRFCiBfX1pONndlYnJ0YzIwcGl4
ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFCi1fX1pONndlYnJ0YzE0Y29weVZp
ZGVvRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUGgKK19fWk42d2VicnRjMjBjb3B5VmlkZW9GcmFt
ZUJ1ZmZlckVSTlNfMTZWaWRlb0ZyYW1lQnVmZmVyRVBoCitfX1pONndlYnJ0YzMyY3JlYXRlUGl4
ZWxCdWZmZXJGcm9tRnJhbWVCdWZmZXJFUk5TXzE2VmlkZW9GcmFtZUJ1ZmZlckVSS05TdDNfXzE4
ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFj
LmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMubWFjLmV4cAppbmRleCAyYTU3ZGNhNWFmMzhlZGYzZTNhMGU5YTRlZmVmNjRjOGE2M2U5ZTZj
Li5mYTI4MGE0YTRmZDg2ODUxY2NiMzFmM2M5ZGU3NmI4ZWE4ODk1OGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5l
eHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy5tYWMuZXhwCkBAIC0zMzQsNCArMzM0LDUgQEAgX19aTjZ3ZWJydGMzMndlYnJ0Y19zZXF1
ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1ZW5jZUNoZWNrZXJJbXBsQzJFdgogX19aTkszcnRj
MTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2VydGlmaWNhdGVFdgogX19aVFZONndlYnJ0YzMwV3Jh
cHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0RQogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJv
bUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRQotX19aTjZ3ZWJydGMxNGNvcHlWaWRlb0ZyYW1lRVJL
TlNfMTBWaWRlb0ZyYW1lRVBoCitfX1pONndlYnJ0YzIwY29weVZpZGVvRnJhbWVCdWZmZXJFUk5T
XzE2VmlkZW9GcmFtZUJ1ZmZlckVQaAorX19aTjZ3ZWJydGMzMmNyZWF0ZVBpeGVsQnVmZmVyRnJv
bUZyYW1lQnVmZmVyRVJOU18xNlZpZGVvRnJhbWVCdWZmZXJFUktOU3QzX18xOGZ1bmN0aW9uSUZQ
MTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGll
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaAppbmRleCAyZWY4YTFlOTE1Mzg2MTFlZmU1YWY3MzRmODBjZDdh
OWJhNGY1M2M2Li5hNzc5Y2FkMWJkMzYwMDJkNzk5MzE2YTE0ODA1ZDNhMzNkNGMxOGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAgLTQ4LDkgKzQ4LDEw
IEBAIGJvb2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwogCiBlbnVtIGNsYXNzIEJ1
ZmZlclR5cGUgeyBJNDIwLCBJMDEwIH07CiBDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVm
ZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4
ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZm
ZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CitDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVm
ZmVyRnJvbUZyYW1lQnVmZmVyKFZpZGVvRnJhbWVCdWZmZXImLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4
ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CiBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0Zy
YW1lKENWUGl4ZWxCdWZmZXJSZWYpOwotYm9vbCBjb3B5VmlkZW9GcmFtZShjb25zdCBWaWRlb0Zy
YW1lJiwgdWludDhfdCopOworYm9vbCBjb3B5VmlkZW9GcmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVm
ZmVyJiwgdWludDhfdCopOwogCiB0eXBlZGVmIENWUGl4ZWxCdWZmZXJSZWYgKCpHZXRCdWZmZXJD
YWxsYmFjaykodm9pZCopOwogdHlwZWRlZiB2b2lkICgqUmVsZWFzZUJ1ZmZlckNhbGxiYWNrKSh2
b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4
IDYyZjYyNGM0OTc2ZmE2MThkODBjZDE0MGEzZmQ5MWQ2YmE5ZTkwOWYuLjY2ZjgwMTllYTU5NmNh
Y2M0NzJhMTViMTZmMGEzYjM1ZGFjYWU5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xNjAsMjggKzE2MCwzMiBAQCBzdGF0aWMgYm9vbCBDb3B5
VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoY29uc3Qgd2VicnRjOjpJMDEwQnVmZmVySW50ZXJmYWNl
KiBmcmFtZQogCiBDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGNv
bnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJS
ZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpCiB7Ci0g
ICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKLSAgICBpZiAoYnVm
ZmVyLT50eXBlKCkgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkgewotICAgICAg
ICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUoKTsKKyAgICByZXR1cm4gY3JlYXRlUGl4ZWxCdWZm
ZXJGcm9tRnJhbWVCdWZmZXIoKmZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLCBjcmVhdGVQaXhl
bEJ1ZmZlcik7Cit9CisKK0NWUGl4ZWxCdWZmZXJSZWYgY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJh
bWVCdWZmZXIoVmlkZW9GcmFtZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENW
UGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxC
dWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci50eXBlKCkgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlw
ZTo6a05hdGl2ZSkgeworICAgICAgICBhdXRvIHR5cGUgPSBidWZmZXIudHlwZSgpOwogICAgICAg
ICBpZiAodHlwZSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCAmJiB0eXBlICE9IFZp
ZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJMDEwKSB7CiAgICAgICAgICAgICBSVENfTE9HKFdBUk5J
TkcpIDw8ICJWaWRlbyBmcmFtZSBidWZmZXIgdHlwZSBpcyBub3QgZXhwZWN0ZWQuIjsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQo
KSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0
MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0
ZVBpeGVsQnVmZmVyKGJ1ZmZlci53aWR0aCgpLCBidWZmZXIuaGVpZ2h0KCksIHR5cGUgPT0gVmlk
ZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgPyBCdWZmZXJUeXBlOjpJNDIwIDogQnVmZmVyVHlw
ZTo6STAxMCk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKICAgICAgICAgICAgIFJUQ19M
T0coV0FSTklORykgPDwgIlBpeGVsIGJ1ZmZlciBjcmVhdGlvbiBmYWlsZWQuIjsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHR5cGUgPT0gVmlk
ZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjApCi0gICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRv
UGl4ZWxCdWZmZXIoYnVmZmVyLT5HZXRJNDIwKCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgICAg
IENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihidWZmZXIuR2V0STQyMCgpLCBwaXhlbEJ1ZmZl
cik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZl
cihidWZmZXItPkdldEkwMTAoKSwgcGl4ZWxCdWZmZXIpOworICAgICAgICAgICAgQ29weVZpZGVv
RnJhbWVUb1BpeGVsQnVmZmVyKGJ1ZmZlci5HZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKICAgICAg
ICAgcmV0dXJuIHBpeGVsQnVmZmVyOwogICAgIH0KIAotICAgIGF1dG8gKmZyYW1lQnVmZmVyID0g
c3RhdGljX2Nhc3Q8T2JqQ0ZyYW1lQnVmZmVyKj4oYnVmZmVyLmdldCgpKS0+d3JhcHBlZF9mcmFt
ZV9idWZmZXIoKTsKKyAgICBhdXRvICpmcmFtZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFt
ZUJ1ZmZlcio+KCZidWZmZXIpLT53cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOwogICAgIGlmICghW2Zy
YW1lQnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIwMywxOCArMjA3LDE3IEBAIENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgcmV0
dXJuIENWUGl4ZWxCdWZmZXJSZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOwogfQog
Ci1ib29sIGNvcHlWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90KiBk
YXRhKQorYm9vbCBjb3B5VmlkZW9GcmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVmZmVyJiBidWZmZXIs
IHVpbnQ4X3QqIGRhdGEpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9i
dWZmZXIoKTsKLSAgICBpZiAoYnVmZmVyLT50eXBlKCkgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlw
ZTo6a05hdGl2ZSkKKyAgICBpZiAoYnVmZmVyLnR5cGUoKSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpU
eXBlOjprTmF0aXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHR5cGUgPSBi
dWZmZXItPnR5cGUoKTsKKyAgICBhdXRvIHR5cGUgPSBidWZmZXIudHlwZSgpOwogICAgIGlmICh0
eXBlID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKSB7Ci0gICAgICAgIGF1dG8qIGk0
MjBGcmFtZSA9IGJ1ZmZlci0+R2V0STQyMCgpOworICAgICAgICBhdXRvKiBpNDIwRnJhbWUgPSBi
dWZmZXIuR2V0STQyMCgpOwogICAgICAgICBhdXRvKiBkYXRhWSA9IGRhdGE7CiAgICAgICAgIGF1
dG8gc3RyaWRlWSA9IGk0MjBGcmFtZS0+d2lkdGgoKTsKLSAgICAgICAgYXV0byBzdHJpZGVVViA9
IGk0MjBGcmFtZS0+d2lkdGgoKSAvIDI7CisgICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpNDIwRnJh
bWUtPndpZHRoKCk7CiAgICAgICAgIGF1dG8qIGRhdGFVViA9IGRhdGEgKyAoaTQyMEZyYW1lLT53
aWR0aCgpICogaTQyMEZyYW1lLT5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybiAhbGlieXV2OjpJ
NDIwVG9OVjEyKGk0MjBGcmFtZS0+RGF0YVkoKSwgaTQyMEZyYW1lLT5TdHJpZGVZKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk0MjBGcmFtZS0+RGF0YVUoKSwgaTQyMEZy
YW1lLT5TdHJpZGVVKCksCkBAIC0yMjMsMTAgKzIyNiwxMCBAQCBib29sIGNvcHlWaWRlb0ZyYW1l
KGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90KiBkYXRhKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpNDIwRnJhbWUtPndpZHRoKCksIGk0MjBGcmFtZS0+aGVpZ2h0
KCkpOwogICAgIH0KICAgICBpZiAodHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTAx
MCkgewotICAgICAgICBhdXRvKiBpMDEwRnJhbWUgPSBidWZmZXItPkdldEkwMTAoKTsKKyAgICAg
ICAgYXV0byogaTAxMEZyYW1lID0gYnVmZmVyLkdldEkwMTAoKTsKICAgICAgICAgYXV0byogZGF0
YVkgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZGF0YSk7CiAgICAgICAgIGF1dG8gc3Ry
aWRlWSA9IGkwMTBGcmFtZS0+d2lkdGgoKTsKLSAgICAgICAgYXV0byBzdHJpZGVVViA9IGkwMTBG
cmFtZS0+d2lkdGgoKSAvIDI7CisgICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpMDEwRnJhbWUtPndp
ZHRoKCk7CiAgICAgICAgIGF1dG8qIGRhdGFVViA9IGRhdGFZICsgKGkwMTBGcmFtZS0+d2lkdGgo
KSAqIGkwMTBGcmFtZS0+aGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gIWxpYnl1djo6STAxMFRv
UDAxMChpMDEwRnJhbWUtPkRhdGFZKCksIGkwMTBGcmFtZS0+U3RyaWRlWSgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpMDEwRnJhbWUtPkRhdGFVKCksIGkwMTBGcmFtZS0+
U3RyaWRlVSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBlZjYzYjU0MmNjYmYxOTBjYmI1MWUxYzQ1ZjVl
OWE4MjM2MzVkMjc0Li5jMjAwMzdlODhhMzVjMGI5NTMzMDRiY2MwODY3M2VjZTgzNGU1ZmVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjIwMCw2ICsyMjAwLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZVZpZGVvU291cmNlLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1Zp
ZGVvRnJhbWVMaWJXZWJSVEMuY3BwCiBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5jcHAKIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAogcGxh
dGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
YzM2ZmNmYTAxMTBkMWU4MTJhNDU2MTRkYzFkZTZkNTMxMTRjYzMyLi43MDFkMzQ3M2VmNTBlMmEx
ODM2MzI1MmU2MjY0NmI0ZmM5NzA1NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjI2LDYgKzEyMjYsNyBAQAogCQk0MUU2
RDcxQjI2RUExQTQ2MDBCNzY1RDYgLyogUlRDRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjdDMDRCMjZFNjkxNzEwMEQzNkMwNyAvKiBSVENF
cnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxRTlEQ0U3MjMxOTc0QkYwMEYzNTk0OSAvKiBCbG9iTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5RENFNDIzMTk3M0ZFMDBGMzU5NDkg
LyogQmxvYkxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxRTlEQ0U5MjMxOUNBNzYwMEYzNTk0OSAvKiBOZXR3b3JrU2VuZFF1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5RENFODIz
MTlDQTc1MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAv
KiBWaWRlb0ZyYW1lTGliV2ViUlRDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUVCNzk3QzI3QzNFNDVEMDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldl
YlJUQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBG
NUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovOyB9OwogCQk0
MUYxRDIxRjBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYxRDIxRDBFRjM1QzJB
MDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8q
IERPTUNhY2hlRW5naW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUZBQkQyQjFGNERGRTQyMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODk5Miw2ICs4
OTkzLDggQEAKIAkJNDFFOURDRTYyMzE5NzQyMzAwRjM1OTQ5IC8qIEVuZGluZ1R5cGUuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEVuZGluZ1R5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUU5RENFODIzMTlDQTc1MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrU2VuZFF1ZXVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTlEQ0VBMjMxOUNBRTgwMEYzNTk0OSAvKiBO
ZXR3b3JrU2VuZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5ldHdvcmtTZW5kUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUVC
Nzk3QjI3QzNFNDVEMDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBWaWRlb0ZyYW1lTGliV2ViUlRDLmNwcDsgcGF0
aCA9IGxpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFFQjc5N0MyN0MzRTQ1RDAwMUMzRTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJS
VEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVmlkZW9GcmFtZUxpYldlYlJU
Qy5oOyBwYXRoID0gbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYw
NjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDk2MzQyNEY5MERFQTAw
MDlGQjkzIC8qIFRleHREZWNvZGVyU3RyZWFtRGVjb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dERlY29kZXJT
dHJlYW1EZWNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDY2LDYg
KzIxMDY5LDggQEAKIAkJCQk0MUIyOEIzODFGODYwQkQxMDBGQjUyQUMgLyogTGliV2ViUlRDUHJv
dmlkZXJDb2NvYS5jcHAgKi8sCiAJCQkJNDFCMjhCMzYxRjg2MEJEMDAwRkI1MkFDIC8qIExpYldl
YlJUQ1Byb3ZpZGVyQ29jb2EuaCAqLywKIAkJCQk0MTBFNDQ1RjIzNDM3M0FEMDAwMTczRDQgLyog
TGliV2ViUlRDU29ja2V0SWRlbnRpZmllci5oICovLAorCQkJCTQxRUI3OTdCMjdDM0U0NUQwMDFD
M0UzRSAvKiBWaWRlb0ZyYW1lTGliV2ViUlRDLmNwcCAqLywKKwkJCQk0MUVCNzk3QzI3QzNFNDVE
MDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldlYlJUQy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBs
aWJ3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzc5MDgsNiArMzc5MTMs
NyBAQAogCQkJCUNEM0VFRjNCMjU3OTlGQTEwMDY1NjNCQiAvKiBWaWRlb0NvbmZpZ3VyYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTdCNUEzREFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0Zy
YW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkUzN0Y4NzI3QkJCNzA4MDA3QTZDRDMgLyogVmlk
ZW9GcmFtZUNWLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUVCNzk3RTI3QzNFNDVFMDAxQzNFM0Ug
LyogVmlkZW9GcmFtZUxpYldlYlJUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjYyNzE5
QkExQTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFERUVGQjAyNzE5QjI5MDAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTUyQjBENEMwMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ZpZGVvRnJhbWUuY3BwCmluZGV4IGE1NDljMWE1YzQ4ZWIyM2Q2NGJhM2ZkMzUzODQwOGJkMTU1
MjM0ZjAuLmMwMjQ3MmYxMWQzMjA5OWMzODAwZWU0NjgxMDZmYTFiMGMyYzUzMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCkBAIC0yNiw2ICsyNiwxMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorI2luY2x1ZGUgIlZpZGVvRnJhbWVDVi5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoVklE
RU8pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzMSw2ICsxMzUsMTcgQEAgdm9pZCBWaWRl
b0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikgY29uc3QKIHsKIH0KIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorUmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZTo6YXNWaWRlb0ZyYW1lQ1YoKQor
eworICAgIGF1dG8gYnVmZmVyID0gcGl4ZWxCdWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUo
cHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb01pcnJvcmVkKCksIHZpZGVvUm90YXRpb24oKSwgYnVm
ZmVyKTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9G
cmFtZS5oCmluZGV4IDY0MTFkZjdkNjQwY2NkZWQxZDFlM2UxMWZkMWE0MjhhMjkxYjMxZWQuLjU5
MDljMzQ4ZjZiZWVmYWNlNmU1ZjY5YTAzMTUwNGEwNGEyZDk2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9WaWRlb0ZyYW1lLmgKQEAgLTUyLDkgKzUyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBm
aW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZVByb3h5KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNMaWJXZWJSVEMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogI2lmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgdmlydHVhbCBib29sIGlzQ1YoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlZpZGVv
RnJhbWVDVj4gYXNWaWRlb0ZyYW1lQ1YoKSA9IDA7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWZQdHI8VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigpOwogI2VuZGlmCiAKIHByb3Rl
Y3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZp
ZGVvRnJhbWVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRl
b0ZyYW1lSW5mby5oCmluZGV4IGJlM2ZkYjc5NzgwM2ExNDBlYjAyYzQ2OWQzMzYyNGI0OGI2Mjc1
MDMuLmE0ZjVjZjQ1MGUwYWExODQ2YmNjYWEyNjViZmZiNTE2ZDkwNGFmYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaApA
QCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVy
UmVmOwogdHlwZWRlZiBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBv
b2xSZWY7CiAKIG5hbWVzcGFjZSB3ZWJydGMgewotY2xhc3MgVmlkZW9GcmFtZTsKK2NsYXNzIFZp
ZGVvRnJhbWVCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDggKzUxLDgg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd3JpdGVQaXhlbEJ1ZmZlcihDVlBp
eGVsQnVmZmVyUmVmLCB1aW50OF90KiBkYXRhKTsKIAogI2lmIFVTRShMSUJXRUJSVEMpCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJlZFZpZGVvRnJhbWVJbmZvIGZyb21WaWRlb0ZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd3Jp
dGVWaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIHVpbnQ4X3QqIGRhdGEpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRWaWRlb0ZyYW1lSW5mbyBmcm9tVmlkZW9G
cmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHdyaXRlVmlkZW9GcmFtZUJ1ZmZlcih3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImLCB1
aW50OF90KiBkYXRhKTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHN0b3Jh
Z2VTaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tCmluZGV4IDA4YzZjY2Q4ODUzNzFmYWYxZDExOGUzOWRh
MjNhZTMyZDg0NTliZGUuLmVjNTY1MGVhMzc2NjdhOTAyZjMyOGY1MzJjNDljZWFmYTcxNDdmMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJh
bWVJbmZvLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVv
RnJhbWVJbmZvLm1tCkBAIC03OCw2ICs3OCw3IEBAIHNpemVfdCBTaGFyZWRWaWRlb0ZyYW1lSW5m
bzo6c3RvcmFnZVNpemUoKSBjb25zdAogdm9pZCBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZW5jb2Rl
KHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQogewogICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIg
ZW5jb2RlcjsKKwogICAgIGVuY29kZXIgPDwgKHVpbnQzMl90KW1fYnVmZmVyVHlwZTsKICAgICBl
bmNvZGVyIDw8IG1fd2lkdGg7CiAgICAgZW5jb2RlciA8PCBtX2hlaWdodDsKQEAgLTIwNyw3ICsy
MDgsNiBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gU2hhcmVkVmlkZW9GcmFtZUluZm86
OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbU1lbW9yeShjbwogICAgICAgICBkYXRhICs9IG1fYnl0ZXNQ
ZXJSb3dQbGFuZUI7CiAgICAgfQogCi0gICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNz
KHJhd1BpeGVsQnVmZmVyLCAwKTsKICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7CiB9CiAKQEAgLTI2
NiwzMSArMjY2LDMxIEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9vbFJlZj4gU2hhcmVkVmlk
ZW9GcmFtZUluZm86OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXJQb29sCiB9CiAKICNpZiBVU0UoTElC
V0VCUlRDKQotU2hhcmVkVmlkZW9GcmFtZUluZm8gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21W
aWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCitTaGFyZWRWaWRlb0Zy
YW1lSW5mbyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRj
OjpWaWRlb0ZyYW1lQnVmZmVyJiBmcmFtZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IGZyYW1lLnZp
ZGVvX2ZyYW1lX2J1ZmZlcigpOwotICAgIGlmIChidWZmZXItPnR5cGUoKSA9PSB3ZWJydGM6OlZp
ZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAgaWYgKGZyYW1lLnR5cGUoKSA9PSB3
ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCiAgICAgICAgIHJldHVybiBT
aGFyZWRWaWRlb0ZyYW1lSW5mbyB7IH07CiAKLSAgICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUo
KTsKLQorICAgIGF1dG8gdHlwZSA9IGZyYW1lLnR5cGUoKTsKICAgICBpZiAodHlwZSA9PSB3ZWJy
dGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKQogICAgICAgICByZXR1cm4gU2hhcmVk
VmlkZW9GcmFtZUluZm8geyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVs
bFJhbmdlLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkp
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oZnJhbWUud2lkdGgoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
ZnJhbWUud2lkdGgoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0
YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSAvIDIgfTsKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSAvIDIsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihmcmFtZS5oZWlnaHQoKSkgLyAyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lk
dGgoKSkgfTsKIAogICAgIGlmICh0eXBlID09IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlw
ZTo6a0kwMTApCiAgICAgICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IGtDVlBpeGVs
Rm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlLAogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
ZnJhbWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSAqIDIp
LAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
ZnJhbWUud2lkdGgoKSkgfTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFt
ZS53aWR0aCgpKSAvIDIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSkgLyAy
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgKiAyIH07CiAKICAgICByZXR1
cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8geyB9OwogfQogCi1ib29sIFNoYXJlZFZpZGVvRnJhbWVJ
bmZvOjp3cml0ZVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgdWlu
dDhfdCogZGF0YSkKK2Jvb2wgU2hhcmVkVmlkZW9GcmFtZUluZm86OndyaXRlVmlkZW9GcmFtZUJ1
ZmZlcih3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImIGZyYW1lQnVmZmVyLCB1aW50OF90KiBkYXRh
KQogewogICAgIEFTU0VSVChtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlw
Q2JDcjhCaVBsYW5hckZ1bGxSYW5nZSB8fCBtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2UpOwotICAgIHJldHVybiB3ZWJydGM6OmNv
cHlWaWRlb0ZyYW1lKGZyYW1lLCBkYXRhKTsKKyAgICBlbmNvZGUoZGF0YSk7CisgICAgZGF0YSAr
PSBzaXplb2YoU2hhcmVkVmlkZW9GcmFtZUluZm8pOworICAgIHJldHVybiB3ZWJydGM6OmNvcHlW
aWRlb0ZyYW1lQnVmZmVyKGZyYW1lQnVmZmVyLCBkYXRhKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5j
cHAKaW5kZXggZGFiNmYyYTQxNzczYTViMjc4MTVhYjIwZDRiZDQ0NjlkNjJiOTJlYS4uODc1ZGFh
NDBlMjhlOGRmOWFlMjJiNjY3NDYwZWM2ZTI5ZDU4YjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFW
Rk9iakMuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ1YuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1l
TGliV2ViUlRDLmgiCiAKICNpZiBVU0UoQUNDRUxFUkFURSkKICNpbmNsdWRlIDxBY2NlbGVyYXRl
L0FjY2VsZXJhdGUuaD4KQEAgLTkzLDExICs5NCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
VmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBs
ZQogICAgICAgICBpbWFnZUJ1ZmZlciA9IGRvd25jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oc2Ft
cGxlKS5waXhlbEJ1ZmZlcigpOwogICAgIGVsc2UgaWYgKGlzPFZpZGVvRnJhbWVDVj4oc2FtcGxl
KSkKICAgICAgICAgaW1hZ2VCdWZmZXIgPSBkb3duY2FzdDxWaWRlb0ZyYW1lQ1Y+KHNhbXBsZSku
cGl4ZWxCdWZmZXIoKTsKLSAgICBlbHNlIHsKKyAgICBlbHNlIGlmIChzaG91bGRDaGVja0ZvcklP
U3VyZmFjZSA9PSBTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6WWVzKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhLCAiUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZTogY2Fubm90IG9i
dGFpbiBDVlBpeGVsQnVmZmVyIGZyb20gc2FtcGxlLiBVbmtub3duIHNhbXBsZSB0eXBlLiIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikgewor
ICAgIGlmICghaW1hZ2VCdWZmZXIgJiYgc2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UgPT0gU2hvdWxk
Q2hlY2tGb3JJT1N1cmZhY2U6OlllcykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YSwgIlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGU6IGNhbm5vdCBvYnRhaW4gQ1ZQaXhlbEJ1ZmZl
ciBmcm9tIHNhbXBsZS4gTm8gYnVmZmVyLiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRl
b0ZyYW1lQ1YubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0Zy
YW1lQ1YubW0KaW5kZXggZDM5YzkwZTBjNzkwYTU3NTExMzdiMDVhNmZkNjAxMTEyZDZhOTgxYS4u
ODlmMWRjNmYxNTMzMmIyZjBhMWU2YzJlNDViZTU5NDE2MzdhMjljYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbQpAQCAtNTQs
NiArNTQsNyBAQCB1aW50MzJfdCBWaWRlb0ZyYW1lQ1Y6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25z
dAogewogICAgIHJldHVybiBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKG1fcGl4ZWxC
dWZmZXIuZ2V0KCkpOwogfQorCiBSZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiBWaWRlb0Zy
YW1lQ1Y6OmFzVmlkZW9GcmFtZUNWKCkKIHsKICAgICByZXR1cm4gdGhpczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1l
TGliV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmFhNjYyYjYyZDAyNWNk
YzZmNTkxNDY1MjI5NzVlNDc0YTcyZjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3Bw
CkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVmlkZW9GcmFtZUxpYldlYlJUQy5oIgorCisjaWYgVVNFKExJQldFQlJUQykKKworI2lu
Y2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgIkNvcmVWaWRlb1Nv
ZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFZpZGVvRnJhbWVMaWJXZWJS
VEM+IFZpZGVvRnJhbWVMaWJXZWJSVEM6OmNyZWF0ZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxi
YWNrJiYgY29udmVyc2lvbkNhbGxiYWNrKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZp
ZGVvRnJhbWVMaWJXZWJSVEMocHJlc2VudGF0aW9uVGltZSwgaXNNaXJyb3JlZCwgcm90YXRpb24s
IFdURk1vdmUoYnVmZmVyKSwgV1RGTW92ZShjb252ZXJzaW9uQ2FsbGJhY2spKSk7Cit9CisKK1Zp
ZGVvRnJhbWVMaWJXZWJSVEM6OlZpZGVvRnJhbWVMaWJXZWJSVEMoTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZlcnNp
b25DYWxsYmFjayYmIGNvbnZlcnNpb25DYWxsYmFjaykKKyAgICA6IFZpZGVvRnJhbWUocHJlc2Vu
dGF0aW9uVGltZSwgaXNNaXJyb3JlZCwgcm90YXRpb24pCisgICAgLCBtX2J1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpCisgICAgLCBtX3NpemUobV9idWZmZXItPndpZHRoKCksICBtX2J1ZmZlci0+aGVp
Z2h0KCkpCisgICAgLCBtX2NvbnZlcnNpb25DYWxsYmFjayhXVEZNb3ZlKGNvbnZlcnNpb25DYWxs
YmFjaykpCit7CisgICAgc3dpdGNoIChtX2J1ZmZlci0+dHlwZSgpKSB7CisgICAgY2FzZSB3ZWJy
dGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwOgorICAgICAgICBtX3ZpZGVvUGl4ZWxG
b3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6
a0kwMTA6CisgICAgICAgIG1fdmlkZW9QaXhlbEZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80
MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK0NWUGl4ZWxCdWZm
ZXJSZWYgVmlkZW9GcmFtZUxpYldlYlJUQzo6cGl4ZWxCdWZmZXIoKSBjb25zdAoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3BpeGVsQnVmZmVyTG9jayB9OworICAgIGlmICghbV9waXhlbEJ1ZmZl
ciAmJiBtX2NvbnZlcnNpb25DYWxsYmFjaykKKyAgICAgICAgbV9waXhlbEJ1ZmZlciA9IHN0ZDo6
ZXhjaGFuZ2UobV9jb252ZXJzaW9uQ2FsbGJhY2ssIHsgfSkoKm1fYnVmZmVyKTsKKyAgICByZXR1
cm4gbV9waXhlbEJ1ZmZlci5nZXQoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldl
YlJUQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1Zp
ZGVvRnJhbWVMaWJXZWJSVEMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzM0ODNmOGExOWEzMzI5MzdkZGIwM2Jk
YTg2MWZlOTI5MjkyOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaApAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQor
CisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgorCitBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJ
TgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuaD4KKyNpbmNsdWRlIDx3
ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaD4KK0FMTE9XX1VOVVNFRF9QQVJBTUVU
RVJTX0VORAorCit1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwor
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlkZW9GcmFtZUxpYldlYlJUQyBmaW5h
bCA6IHB1YmxpYyBWaWRlb0ZyYW1lIHsKK3B1YmxpYzoKKyAgICB1c2luZyBDb252ZXJzaW9uQ2Fs
bGJhY2sgPSBGdW5jdGlvbjxSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4od2VicnRjOjpWaWRl
b0ZyYW1lQnVmZmVyJik+OworICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUxpYldlYlJUQz4gY3Jl
YXRlKE1lZGlhVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uLCBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmLCBDb252ZXJzaW9uQ2FsbGJhY2sm
Jik7CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBi
dWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorCitwcml2YXRlOgorICAgIFZpZGVvRnJhbWVM
aWJXZWJSVEMoTWVkaWFUaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24sIHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYsIENvbnZlcnNpb25DYWxs
YmFjayYmKTsKKworICAgIC8vIFZpZGVvRnJhbWUKKyAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9u
U2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHVpbnQzMl90IHZpZGVv
UGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ZpZGVvUGl4ZWxGb3JtYXQ7IH0K
KyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7CisKKyAgICBj
b25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBGbG9hdFNpemUgbV9zaXplOworICAgIHVpbnQzMl90IG1fdmlkZW9QaXhlbEZvcm1h
dCB7IDAgfTsKKworICAgIG11dGFibGUgQ29udmVyc2lvbkNhbGxiYWNrIG1fY29udmVyc2lvbkNh
bGxiYWNrOworICAgIG11dGFibGUgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fcGl4ZWxC
dWZmZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX3BpeGVsQnVmZmVyTG9jayk7CisgICAgbXV0YWJs
ZSBMb2NrIG1fcGl4ZWxCdWZmZXJMb2NrOworfTsKKworfQorCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYkNvcmU6OlZpZGVvRnJhbWVMaWJXZWJSVEMpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OlZpZGVvRnJhbWUmIHZpZGVvRnJhbWUpIHsgcmV0dXJuIHZp
ZGVvRnJhbWUuaXNMaWJXZWJSVEMoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlZp
ZGVvRnJhbWU+KG1lZGlhU2FtcGxlKSAmJiBpczxXZWJDb3JlOjpWaWRlb0ZyYW1lTGliV2ViUlRD
Pihkb3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkpOyB9CitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0VORCgpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRleCA2MDMzOGVhMDczN2RiNjE2OGZjNjEwYjFj
NDIwNWMzYWFhNjlhYmU5Li44YTAyNTI5NjIxMzZhMjIzZWQzNDJmNzgwNzcyNWFmODQ4ZDFiOGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaApA
QCAtNjIsNyArNjIsOCBAQCBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IHNpemVfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwogI2VuZGlmCi0gICAgUmV0YWluUHRyPENW
UGl4ZWxCdWZmZXJQb29sUmVmPiBtX3BpeGVsQnVmZmVyUG9vbDsKKyAgICBMb2NrIG1fcGl4ZWxC
dWZmZXJQb29sTG9jazsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IG1fcGl4
ZWxCdWZmZXJQb29sIFdURl9HVUFSREVEX0JZX0xPQ0sobV9waXhlbEJ1ZmZlclBvb2xMb2NrKTsK
ICAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xXaWR0aCB7IDAgfTsKICAgICBzaXplX3QgbV9w
aXhlbEJ1ZmZlclBvb2xIZWlnaHQgeyAwIH07CiAgICAgd2VicnRjOjpCdWZmZXJUeXBlIG1fcGl4
ZWxCdWZmZXJQb29sQnVmZmVyVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCBmMTBjZmUxZjAyOWJmNjY0Y2M4MjMyZDYxN2FmYjE2
MDRiYzk3NGIwLi5iNDQ5OGUzYTU4ZGZlZjllYWQ4NDY2YjE0ODQwMTM1OTM4NDBlMTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC0z
Myw3ICszMyw3IEBACiAjaW1wb3J0ICJDVlV0aWxpdGllcy5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCi0jaW1wb3J0ICJWaWRlb0ZyYW1lLmgi
CisjaW1wb3J0ICJWaWRlb0ZyYW1lTGliV2ViUlRDLmgiCiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNh
c3RzQ0YuaD4KIAogQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KQEAgLTYyLDcgKzYyLDcg
QEAgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OlJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZUNvY29hKHJ0Yzo6c2NvcGVkX3IKIHsKIH0KIAotQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYg
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qg
d2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKQorQ1ZQ
aXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVs
QnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlw
ZSBidWZmZXJUeXBlKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiB7CiAgICAg
aWYgKCFtX3BpeGVsQnVmZmVyUG9vbCB8fCBtX3BpeGVsQnVmZmVyUG9vbFdpZHRoICE9IHdpZHRo
IHx8IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0ICE9IGhlaWdodCB8fCBtX3BpeGVsQnVmZmVyUG9v
bEJ1ZmZlclR5cGUgIT0gYnVmZmVyVHlwZSkgewogICAgICAgICBPU1R5cGUgcG9vbEJ1ZmZlclR5
cGU7CkBAIC0xMzMsMjMgKzEzMywyNiBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hOjp0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOgogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHByb3ZpZGVyKTsKICAgICB9CiAKLSAg
ICAvLyBJbiBjYXNlIG9mIGluIG1lbW9yeSBzYW1wbGVzLCB3ZSBoYXZlIG5vbiBpbnRlcmxlYXZl
ZCBZVVYgZGF0YSB3aGlsZSBDVlBpeGVsQnVmZmVycyBwcmVmZXIgaW50ZXJsZWF2ZWQgWVVWIGRh
dGEuCi0gICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGludHJvZHVjZSBhIE1lZGlhU2FtcGxlIHRoYXQg
d291bGQgcmVwcmVzZW50IG5vbiBpbnRlcmxlYXZlZCBZVVYgZGF0YSBhcyBhbiBvcHRpbWl6YXRp
b24uCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1
ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwg
d2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewotICAg
ICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IHRoaXMtPnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwg
aGVpZ2h0LCBidWZmZXJUeXBlKTsKLSAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9v
bENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29s
LmdldCgpLCAmcGl4ZWxCdWZmZXIpOwotCi0gICAgICAgIGlmIChzdGF0dXMgIT0ga0NWUmV0dXJu
U3VjY2VzcykgewotICAgICAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVO
VElGSUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEgcGl4ZWwgYnVmZmVyIHdpdGggZXJyb3IgIiwgc3Rh
dHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBwaXhlbEJ1ZmZlcjsKLSAgICB9KSk7Ci0gICAgcmV0dXJuIGNyZWF0ZU1lZGlhU2FtcGxl
RnJvbUNWUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCksIHJvdGF0aW9uLCBmcmFtZS50aW1l
c3RhbXBfdXMoKSk7CisgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgQ1ZQaXhlbEJ1ZmZlclJl
ZiwgdXNlIGl0IGRpcmVjdGx5LgorICAgIGlmIChhdXRvIHBpeGVsQnVmZmVyID0gd2VicnRjOjpw
aXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiBjcmVhdGVNZWRpYVNh
bXBsZUZyb21DVlBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLCByb3RhdGlvbiwgZnJhbWUudGltZXN0
YW1wX3VzKCkpOworCisgICAgLy8gSW4gY2FzZSBvZiBpbiBtZW1vcnkgbGlid2VicnRjIHNhbXBs
ZXMsIHdlIGhhdmUgbm9uIGludGVybGVhdmVkIFlVViBkYXRhLCBsZXQncyBsYXppbHkgY3JlYXRl
IENWUGl4ZWxCdWZmZXJzIGlmIG5lZWRlZC4KKyAgICByZXR1cm4gVmlkZW9GcmFtZUxpYldlYlJU
Qzo6Y3JlYXRlKE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSwgMTAwMDAwMCksIGZhbHNl
LCByb3RhdGlvbiwgZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCksIFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgdGhpc10oYXV0byYgYnVmZmVyKSB7CisgICAgICAgIHJldHVybiBhZG9w
dENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWVCdWZmZXIoYnVmZmVyLCBbdGhp
c10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVy
VHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgICAgICAgICBMb2NrZXIgbG9jayhtX3Bp
eGVsQnVmZmVyUG9vbExvY2spOworICAgICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSB0
aGlzLT5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgYnVmZmVyVHlwZSk7CisgICAgICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIgPSBudWxscHRyOwor
ICAgICAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVm
ZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpLCAmcGl4ZWxC
dWZmZXIpOworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKSB7Cisg
ICAgICAgICAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAi
RmFpbGVkIGNyZWF0aW5nIGEgcGl4ZWwgYnVmZmVyIHdpdGggZXJyb3IgIiwgc3RhdHVzKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiBwaXhlbEJ1ZmZlcjsKKyAgICAgICAgfSkpOworICAgIH0pOwogfQogCiB2b2lkIFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSYgd2VicnRjVmlkZW9GcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCmluZGV4IGE2ZWIxOWQzMmEyNDQ0MTRkOTUxMjU1NDEy
ZDU4OWNiMDQ2YzcwOTguLmY3MGI0MTU1NGNiZDUxMDgzMTMwMTU1NmRjYWRkZmRiN2ZjYWEyMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lVmlkZW9V
dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFt
ZUxpYldlYlJUQy5oIgogCiBBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgogCkBAIC04Niwx
NCArODYsMjAgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6dmlkZW9T
YW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwKICAgICB9CiAKICAgICBib29sIHNo
b3VsZEFwcGx5Um90YXRpb24gPSBtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgbV9jdXJyZW50Um90
YXRpb24gIT0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOwotICAgIGlmICghc2hvdWxkQXBwbHlS
b3RhdGlvbiAmJiBpczxWaWRlb0ZyYW1lPihzYW1wbGUpICYmIGRvd25jYXN0PFZpZGVvRnJhbWU+
KHNhbXBsZSkuaXNSZW1vdGVQcm94eSgpKSB7Ci0gICAgICAgIFJlZiB2aWRlb0ZyYW1lIHsgZG93
bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKSB9OwotICAgICAgICBhdXRvIHNpemUgPSBzYW1wbGUu
cHJlc2VudGF0aW9uU2l6ZSgpOwotICAgICAgICBzZW5kRnJhbWUod2VicnRjOjp0b1dlYlJUQ1Zp
ZGVvRnJhbWVCdWZmZXIoJnZpZGVvRnJhbWUubGVha1JlZigpLAotICAgICAgICAgICAgW10oYXV0
byogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHBvaW50ZXIpLT5w
aXhlbEJ1ZmZlcigpOyB9LAotICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyBzdGF0aWNf
Y2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPmRlcmVmKCk7IH0sCi0gICAgICAgICAgICBzdGF0
aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQo
KSkpKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBp
czxWaWRlb0ZyYW1lPihzYW1wbGUpKSB7CisgICAgICAgIGlmIChkb3duY2FzdDxWaWRlb0ZyYW1l
PihzYW1wbGUpLmlzUmVtb3RlUHJveHkoKSkgeworICAgICAgICAgICAgUmVmIHZpZGVvRnJhbWUg
eyBkb3duY2FzdDxWaWRlb0ZyYW1lPihzYW1wbGUpIH07CisgICAgICAgICAgICBhdXRvIHNpemUg
PSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgICAgICAgICAgc2VuZEZyYW1lKHdlYnJ0
Yzo6dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKCZ2aWRlb0ZyYW1lLmxlYWtSZWYoKSwKKyAgICAg
ICAgICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7IHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb0Zy
YW1lKj4ocG9pbnRlciktPnBpeGVsQnVmZmVyKCk7IH0sCisgICAgICAgICAgICAgICAgW10oYXV0
byogcG9pbnRlcikgeyBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPmRlcmVmKCk7
IH0sCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKCkpLCBzdGF0
aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGRvd25jYXN0PFZpZGVvRnJhbWU+KHNhbXBsZSkuaXNMaWJXZWJS
VEMoKSkgeworICAgICAgICAgICAgc2VuZEZyYW1lKGRvd25jYXN0PFZpZGVvRnJhbWVMaWJXZWJS
VEM+KHNhbXBsZSkuYnVmZmVyKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNhbXBsZS5waXhlbEJ1ZmZlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5oCmluZGV4IGI3NTg1MGI5MzI5Yjk3MThjZjU1NWRkNjliZTJlNzE4NDAwNGUzMmYuLjMy
MTk0MmJlNjlmYWU5ZDNmZTRkMWEzYzJjMGNiN2YzMTQwNmUwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKQEAg
LTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CiBjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDsKK3N0cnVjdCBT
aGFyZWRWaWRlb0ZyYW1lOwogY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsKIAogY2xhc3Mg
TGliV2ViUlRDQ29kZWNzUHJveHkgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNz
YWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKQEAgLTg1LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYsIGJvb2wgdXNlTG93TGF0ZW5j
eSk7CiAgICAgdm9pZCByZWxlYXNlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllcik7CiAgICAg
dm9pZCBpbml0aWFsaXplRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciwgdWludDE2X3Qgd2lk
dGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhC
aXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpOwotICAg
IHZvaWQgZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlJiYsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZy
YW1lLCBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlPik7CisgICAg
dm9pZCBlbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciwgU2hhcmVkVmlkZW9GcmFtZSYm
LCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CiAgICAg
dm9pZCBzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmllciwgdWludDMyX3QgYml0UmF0
ZSwgdWludDMyX3QgZnJhbWVSYXRlKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVTZW1h
cGhvcmUoUlRDRW5jb2RlcklkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQg
c2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShSVENFbmNvZGVySWRlbnRpZmllciwgY29uc3QgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGRmYWY0YTI2YmQxZTMxMjE5MDM0YWJiMDY1MmRlMjNkOWNlMmQxYWEuLmNhMTVhYjM2NGM1
NjA3ZDE3NGZhN2MzMWM3NzhlNzU3Y2JkODhjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMzQsNyArMzQsNyBAQCBtZXNzYWdlcyAtPiBMaWJXZWJSVENDb2RlY3NQcm94
eSBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2Rlcklk
ZW50aWZpZXIgaWQsIFN0cmluZyBmb3JtYXROYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4gcGFyYW1ldGVycywgYm9vbCB1c2VMb3dMYXRlbmN5KTsKICAgICBSZWxlYXNlRW5j
b2RlcihXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkKQogICAgIEluaXRpYWxpemVFbmNv
ZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQxNl90IHdpZHRoLCB1aW50
MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwg
dW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKQotICAgIEVuY29kZUZy
YW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVv
U2FtcGxlIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5
RnJhbWUsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5j
ZT4gc2FtcGxlUmVmZXJlbmNlKQorICAgIEVuY29kZUZyYW1lKFdlYktpdDo6UlRDRW5jb2Rlcklk
ZW50aWZpZXIgaWQsIHN0cnVjdCBXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUsIHVpbnQz
Ml90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQogICAgIFNldEVuY29k
ZVJhdGVzKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IGJpdFJhdGUs
IHVpbnQzMl90IGZyYW1lUmF0ZSkKICAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFdl
YktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkK
ICAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZp
ZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tCmluZGV4IGYwMDY4MWI3OWY1ZmNlMDM4NmE0ZWU2M2I3MmQ2ZjdlZTQyODgwYmEu
Ljc1OGNiNDE5ZGZmMmJkNThmNDNjZGZmYjVjODkxYmE0MWM5NWNiYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
bQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVu
Y29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QKICAgICAgICAgY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpDb21wbGV0ZWRFbmNvZGlu
ZyB7IGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGJ1ZmZlciwgc2l6ZSB9LCBpbmZv
IH0sIDApOwogICAgIH0pLmdldCgpKTsKICAgICB3ZWJydGM6OnNldExvY2FsRW5jb2Rlckxvd0xh
dGVuY3koZW5jb2RlciwgdXNlTG93TGF0ZW5jeSk7Ci0gICAgbV9lbmNvZGVycy5hZGQoaWRlbnRp
ZmllciwgRW5jb2RlciB7IGVuY29kZXIsIG51bGxwdHIgfSk7CisgICAgbV9lbmNvZGVycy5hZGQo
aWRlbnRpZmllciwgRW5jb2RlciB7IGVuY29kZXIsIG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFt
ZVJlYWRlcj4obV92aWRlb0ZyYW1lT2JqZWN0SGVhcC5wdHIoKSkgfSk7CiB9CiAKIHZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCkBAIC0yMzAsMzcgKzIzMCwyMyBAQCBzdGF0aWMgaW5saW5lIHdlYnJ0Yzo6Vmlk
ZW9Sb3RhdGlvbiB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oV2ViQ29yZTo6TWVkaWFTYW1wbGU6Ogog
CiAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2Vu
Y29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlv
biBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQogLy8gYW5kIG1fZW5jb2RlcnMgb25s
eSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KLXZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6
OmVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxk
RW5jb2RlQXNLZXlGcmFtZSwgc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVy
ZW5jZT4gc2FtcGxlUmVmZXJlbmNlKQordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2Rl
RnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2hhcmVkVmlkZW9GcmFtZSYm
IGZyYW1lLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkK
IHsKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7Ci0gICAgaWYg
KHNhbXBsZVJlZmVyZW5jZSkgewotICAgICAgICBhdXRvIHNhbXBsZSA9IG1fdmlkZW9GcmFtZU9i
amVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKCpzYW1wbGVSZWZlcmVuY2UpLCAwX3MpOwotICAgICAg
ICBpZiAoIXNhbXBsZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHBsYXRm
b3JtU2FtcGxlID0gc2FtcGxlLT5wbGF0Zm9ybVNhbXBsZSgpOwotICAgICAgICBBU1NFUlQocGxh
dGZvcm1TYW1wbGUudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZm
ZXJUeXBlKTsKLSAgICAgICAgcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVy
UmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIocGxhdGZvcm1TYW1wbGUuc2Ft
cGxlLmNtU2FtcGxlQnVmZmVyKSk7Ci0gICAgfQotCiAgICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0
aG91dExvY2soaWRlbnRpZmllcikpOwogICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2Rlcldp
dGhvdXRMb2NrKGlkZW50aWZpZXIpOwotICAgIGlmICghZW5jb2RlcikKKyAgICBpZiAoIWVuY29k
ZXIpIHsKKyAgICAgICAgLy8gTGV0J3MgcHJldmVudCBtZW1vcnkgbGVha3MgaWYgZW5jb2RlciBp
cyBnb25lLgorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZW1vdGVWaWRlb0Zy
YW1lUmVhZFJlZmVyZW5jZT4oZnJhbWUuYnVmZmVyKSkKKyAgICAgICAgICAgIG1fdmlkZW9GcmFt
ZU9iamVjdEhlYXAtPnJldGlyZShXVEZNb3ZlKHN0ZDo6Z2V0PFJlbW90ZVZpZGVvRnJhbWVSZWFk
UmVmZXJlbmNlPihmcmFtZS5idWZmZXIpKSwgMF9zKTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
IAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBpZiAoIXBpeGVsQnVmZmVyKSB7Ci0g
ICAgICAgIGlmIChzYW1wbGUuc3VyZmFjZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHNhbXBsZS5zdXJmYWNlKCkpKQotICAg
ICAgICAgICAgICAgIHBpeGVsQnVmZmVyID0gV1RGTW92ZSgqYnVmZmVyKTsKLSAgICAgICAgfSBl
bHNlIGlmIChlbmNvZGVyLT5mcmFtZVJlYWRlcikKLSAgICAgICAgICAgIHBpeGVsQnVmZmVyID0g
ZW5jb2Rlci0+ZnJhbWVSZWFkZXItPnJlYWQoKTsKLQotICAgICAgICBpZiAoIXBpeGVsQnVmZmVy
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIG1lZGlhU2FtcGxlID0gZW5j
b2Rlci0+ZnJhbWVSZWFkZXItPnJlYWQoV1RGTW92ZShmcmFtZSkpOworICAgIGlmICghbWVkaWFT
YW1wbGUpCisgICAgICAgIHJldHVybjsKIAotICAgIHdlYnJ0Yzo6ZW5jb2RlTG9jYWxFbmNvZGVy
RnJhbWUoZW5jb2Rlci0+d2VicnRjRW5jb2RlciwgcGl4ZWxCdWZmZXIuZ2V0KCksIHNhbXBsZS50
aW1lKCkudG9UaW1lU2NhbGUoMTAwMDAwMCkudGltZVZhbHVlKCksIHRpbWVTdGFtcCwgdG9XZWJS
VENWaWRlb1JvdGF0aW9uKHNhbXBsZS5yb3RhdGlvbigpKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFt
ZSk7CisgICAgd2VicnRjOjplbmNvZGVMb2NhbEVuY29kZXJGcmFtZShlbmNvZGVyLT53ZWJydGNF
bmNvZGVyLCBtZWRpYVNhbXBsZS0+cGl4ZWxCdWZmZXIoKSwgZnJhbWUudGltZS50b1RpbWVTY2Fs
ZSgxMDAwMDAwKS50aW1lVmFsdWUoKSwgdGltZVN0YW1wLCB0b1dlYlJUQ1ZpZGVvUm90YXRpb24o
ZnJhbWUucm90YXRpb24pLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKICNlbmRpZgogfQogCkBA
IC0yODQsOCArMjcwLDYgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0U2hhcmVkVmlk
ZW9GcmFtZVNlbWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmllciBpZGUKICAgICBpZiAoIWVuY29k
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghZW5jb2Rlci0+ZnJhbWVSZWFkZXIpCi0g
ICAgICAgIGVuY29kZXItPmZyYW1lUmVhZGVyID0gbWFrZVVuaXF1ZTxTaGFyZWRWaWRlb0ZyYW1l
UmVhZGVyPihSZWYgeyBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwIH0pOwogICAgIGVuY29kZXItPmZy
YW1lUmVhZGVyLT5zZXRTZW1hcGhvcmUoV1RGTW92ZShzZW1hcGhvcmUpKTsKIH0KIApAQCAtMjk4
LDggKzI4Miw2IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJh
bWVNZW1vcnkoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpCiAgICAgaWYgKCFlbmNvZGVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWVuY29kZXItPmZyYW1lUmVhZGVyKQotICAgICAg
ICBlbmNvZGVyLT5mcmFtZVJlYWRlciA9IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRl
cj4oUmVmIHsgbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCB9KTsKICAgICBlbmNvZGVyLT5mcmFtZVJl
YWRlci0+c2V0U2hhcmVkTWVtb3J5KGlwY0hhbmRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcAppbmRleCBkMWU0N2FlNTg5ZWY2ZGUyNTZmZGVkY2VmMjkzOGYwY2E3
ODBkNjg5Li5lZDc2MjVhOTZkYjJhNDhkY2Q0NjBhYzczNDkxZmY5NjQxNzIwZDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0xMjIsNyArMTIyLDYgQEAgdm9pZCBS
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKIHZvaWQgUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlKFNoYXJlZFZpZGVvRnJhbWUmJiBmcmFtZSkKIHsK
ICAgICBhdXRvIHNhbXBsZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5yZWFkKFdURk1vdmUo
ZnJhbWUpKTsKLSAgICBBU1NFUlQoc2FtcGxlKTsKICAgICBpZiAoIXNhbXBsZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1OTU2ODU1YWM1OWJmN2E1ZDE3YjI5MWZhNGUxZjEyZTFlYTdkNWJhLi4zNzUx
MWU4YWI4MDEwZjU1Y2NjZmU0M2EyNTRlMGEyZWYxNDAwYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg0Niw2ICs4NDYsNyBAQAog
CQk0MTMwNzVCMDFERTg1RjU4MDAzOUVDNjkgLyogV2ViUlRDTW9uaXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTMxREU4NUVFNzAwMzlF
QzY5IC8qIFdlYlJUQ01vbml0b3IuaCAqLzsgfTsKIAkJNDEzMDc1QjIxREU4NUY1ODAwMzlFQzY5
IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENT
b2NrZXRGYWN0b3J5LmggKi87IH07CiAJCTQxMzA3NUI0MURFODVGNTgwMDM5RUM2OSAvKiBMaWJX
ZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87
IH07CisJCTQxM0M1NDFBMjdDNjdDMzkwMDJGQ0RBOCAvKiBMaWJXZWJSVENDb2RlY3NQcm94eS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTBBN0M4
MjNCNjM5NzkwMDU2MTA2MCAvKiBMaWJXZWJSVENDb2RlY3NQcm94eS5tbSAqLzsgfTsKIAkJNDE3
NjkwMTQyMkZERDQxQjAwQjE1NzZEIC8qIE5ldHdvcmtSVENQcm92aWRlci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzY5MDEzMjJGREQ0MUIwMEIx
NTc2RCAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubW0gKi87IH07CiAJCTQxNzkxNUFGMjI1NkJCNzUw
MEQ2Rjk3RSAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5MTVBRDIyNTZCQjc0MDBENkY5N0UgLyogV2ViU29ja2V0
Q2hhbm5lbC5oICovOyB9OwogCQk0MTc5MTVCMTIyNTZDMEQ2MDBENkY5N0UgLyogV2ViU29ja2V0
Q2hhbm5lbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNzkxNUIwMjI1NkMwRDYwMEQ2Rjk3RSAvKiBXZWJTb2NrZXRDaGFubmVsTWFuYWdl
ci5oICovOyB9OwpAQCAtMTYwNTYsNiArMTYwNTcsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTVDRTkxMjEwMjI5M0MyNzcwMDVCRUM3OCAv
KiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTNDNTQxQTI3
QzY3QzM5MDAyRkNEQTggLyogTGliV2ViUlRDQ29kZWNzUHJveHkubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1QzlBOTExMTIyOEY2OUNDMDA1QzVCMTcgLyogWFBDU2VydmljZU1haW4ubW0gaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAppbmRleCBkMTgwMzRiNDYzMTFhZDM4OWE2YWI2YTg5
NWYxY2EyYjE4MTc5OTE4Li5hZGNhYWE2ODcyZjhmY2EyMzllMmUwMGI1NGViM2JlZWQ2OTAwM2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBAIC0xMjEsMTUgKzEyMSw2IEBAIENWUGl4ZWxC
dWZmZXJSZWYgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwaXhlbEJ1ZmZlcigpIGNvbnN0CiAgICAg
fQogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyLmdldCgpOwogfQotCi1SZWZQdHI8V2ViQ29yZTo6
VmlkZW9GcmFtZUNWPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OmFzVmlkZW9GcmFtZUNWKCkKLXsK
LSAgICBhdXRvIGJ1ZmZlciA9IHBpeGVsQnVmZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShtX3By
ZXNlbnRhdGlvblRpbWUsIG1faXNNaXJyb3JlZCwgbV9yb3RhdGlvbiwgUmV0YWluUHRyIHsgYnVm
ZmVyIH0pOwotfQotCiAjZW5kaWYKIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVW
aWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZVByb3h5LmgKaW5kZXggZGFjZDg4NjQ4YjEyYmE2MTdkNzAzOGY4NmQ0OTQy
ZDQ4YmQ4YjNhZC4uMWQ4MmVkOWMxOGVmMWNmMTkwNzcwZGQ4YjM2YzQyZDljMzVmN2NjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0Zy
YW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC04OSw3ICs4OSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlz
UmVtb3RlUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCkgZmluYWw7
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDhhZmMxYWMwMzIyNWU2NDNk
ODc1MjU2YjExY2IxNzkzMzgxMmQ5YTkuLjcxODk5OTRkMDI0ZTI4YzBlMGNiOWMzYmNjYzEyYTlk
NDUxOGRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtNDU3LDMxICs0NTcsMTUgQEAgaW50MzJfdCBM
aWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0
Yzo6VmlkZW9GcmFtZSYKICAgICBpZiAoIWVuY29kZXIuY29ubmVjdGlvbikKICAgICAgICAgcmV0
dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKIAotICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3Rl
VmlkZW9GcmFtZVJlYWRSZWZlcmVuY2U+IHJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlOwot
ICAgIGlmIChhdXRvKiBwcm92aWRlciA9IHdlYnJ0Yzo6dmlkZW9GcmFtZUJ1ZmZlclByb3ZpZGVy
KGZyYW1lKSkgewotICAgICAgICBhdXRvKiB2aWRlb0ZyYW1lID0gc3RhdGljX2Nhc3Q8VmlkZW9G
cmFtZSo+KHByb3ZpZGVyKTsKLSAgICAgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4o
dmlkZW9GcmFtZSkpCi0gICAgICAgICAgICByZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSA9
IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4odmlkZW9GcmFtZSktPnJlYWQoKTsKLSAg
ICB9Ci0KLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gYnVmZmVyOwotICAgIGlmICgh
cmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UpIHsKLSAgICAgICAgYnVmZmVyID0gYWRvcHRD
Rih3ZWJydGM6OnBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lKSk7Ci0gICAgICAgIGlmICghYnVm
ZmVyKSB7Ci0gICAgICAgICAgICAvLyBidWZmZXIgaXMgbm90IG5hdGl2ZSwgd2UgbmVlZCB0byBj
b3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KLSAgICAgICAgICAgIGlmICghY29weVNoYXJlZFZp
ZGVvRnJhbWUoZW5jb2RlciwgZnJhbWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfRVJST1I7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBhdXRvIHNhbXBsZSA9
IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBNZWRpYVRpbWUoZnJhbWUu
dGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRp
b24oZnJhbWUucm90YXRpb24oKSksIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklP
U3VyZmFjZTo6Tm8pOwotICAgIGlmIChidWZmZXIgJiYgIXNhbXBsZS0+c3VyZmFjZSgpKSB7Ci0g
ICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgSU9TdXJmYWNlLCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hh
cmVkIHZpZGVvIGZyYW1lLgotICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKGVuY29k
ZXIsIGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVD
X0VSUk9SOwotICAgIH0KKyAgICBhdXRvIHNoYXJlZFZpZGVvRnJhbWUgPSBlbmNvZGVyLnNoYXJl
ZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUoZnJhbWUsCisgICAgICAgIFsmXShhdXRvJiBzZW1hcGhv
cmUpIHsgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZSB7IGVuY29kZXIuaWRlbnRpZmllciwg
c2VtYXBob3JlIH0sIDApOyB9LAorICAgICAgICBbJl0oYXV0byYgaGFuZGxlKSB7IGVuY29kZXIu
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldFNoYXJl
ZFZpZGVvRnJhbWVNZW1vcnkgeyBlbmNvZGVyLmlkZW50aWZpZXIsIGhhbmRsZSB9LCAwKTsgfQor
ICAgICk7CisgICAgQVNTRVJUKHNoYXJlZFZpZGVvRnJhbWUpOworICAgIGlmICghc2hhcmVkVmlk
ZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKIAotICAg
IGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVudGlmaWVyLCAqc2FtcGxlLCBmcmFtZS50aW1lc3Rh
bXAoKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSwgcmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVu
Y2UgfSwgMCk7CisgICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJS
VENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlkZW50aWZpZXIsICpzaGFyZWRW
aWRlb0ZyYW1lLCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSB9LCAw
KTsKICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3Bw
CmluZGV4IDhhOGJhODk2NmZmMjljZjQyOTU4MTZhMGM3MThmMTM5OTQ5ZGZjNmIuLmNlZDU2NjA4
OGFhZTBmNWUzODljNGM3NTQ4NDBhMzY4MjFiNTEzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkVmlk
ZW9GcmFtZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaD4K
ICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0
TGluay5oPgpAQCAtOTUsNiArOTYsMTMgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1l
PiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShNZWRpYVNhbXBsZSYgZnJhbWUKICAgICAg
ICAgc2hhcmVkVmlkZW9GcmFtZS5idWZmZXIgPSBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk+KGZyYW1lKS5yZWFkKCk7CiAgICAgICAgIHJldHVybiBzaGFyZWRWaWRlb0ZyYW1lOwogICAg
IH0KKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIGlmIChpczxWaWRlb0ZyYW1lTGliV2ViUlRDPihm
cmFtZSkpIHsKKyAgICAgICAgaWYgKCF3cml0ZSgqZG93bmNhc3Q8VmlkZW9GcmFtZUxpYldlYlJU
Qz4oZnJhbWUpLmJ1ZmZlcigpLCBuZXdTZW1hcGhvcmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJh
Y2spKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIHNoYXJlZFZpZGVv
RnJhbWU7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKGlzPE1lZGlhU2FtcGxlQVZGT2JqQz4oZnJh
bWUpKSB7CiAgICAgICAgIGlmIChhdXRvIHBpeGVsQnVmZmVyID0gZG93bmNhc3Q8TWVkaWFTYW1w
bGVBVkZPYmpDPihmcmFtZSkucGl4ZWxCdWZmZXIoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8g
c3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UocGl4ZWxCdWZmZXIpKSB7CkBAIC0x
MDMsNiArMTExLDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lPiBTaGFyZWRWaWRl
b0ZyYW1lV3JpdGVyOjp3cml0ZShNZWRpYVNhbXBsZSYgZnJhbWUKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KKwogICAgIGlmICghd3JpdGUoZnJhbWUucGl4ZWxCdWZmZXIoKSwgbmV3
U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICByZXR1cm4gc2hhcmVkVmlkZW9GcmFtZTsKQEAgLTExOCwxMyArMTI3LDMwIEBAIGJv
b2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6d3JpdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlciwgY29uc3QgRnVuY3Rpb248CiB9CiAKICNpZiBVU0UoTElCV0VCUlRDKQotYm9vbCBTaGFy
ZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1l
LCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxs
YmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYp
PiYgbmV3TWVtb3J5Q2FsbGJhY2spCitzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IFNo
YXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJh
bWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNh
bGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
Jik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3sKKyAgICBpZiAoYXV0byogcHJvdmlkZXIgPSB3ZWJy
dGM6OnZpZGVvRnJhbWVCdWZmZXJQcm92aWRlcihmcmFtZSkpCisgICAgICAgIHJldHVybiB3cml0
ZSgqc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHByb3ZpZGVyKSwgbmV3U2VtYXBob3JlQ2FsbGJh
Y2ssIG5ld01lbW9yeUNhbGxiYWNrKTsKKworICAgIFNoYXJlZFZpZGVvRnJhbWUgc2hhcmVkVmlk
ZW9GcmFtZSB7IE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDAp
LCBmYWxzZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIG51bGxwdHIgfTsKKyAg
ICBpZiAoYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpwaXhlbEJ1ZmZlckZyb21G
cmFtZShmcmFtZSkpKSB7CisgICAgICAgIGlmICghd3JpdGUocGl4ZWxCdWZmZXIuZ2V0KCksIG5l
d1NlbWFwaG9yZUNhbGxiYWNrLCBuZXdNZW1vcnlDYWxsYmFjaykpCisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICByZXR1cm4gc2hhcmVkVmlkZW9GcmFtZTsKKyAgICB9CisKKyAgICBp
ZiAoIXdyaXRlKCpmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKSwgbmV3U2VtYXBob3JlQ2FsbGJh
Y2ssIG5ld01lbW9yeUNhbGxiYWNrKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4g
c2hhcmVkVmlkZW9GcmFtZTsKK30KKworYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0
ZSh3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImIGZyYW1lQnVmZmVyLCBjb25zdCBGdW5jdGlvbjx2
b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJh
Y2spCiB7Ci0gICAgYXV0byBpbmZvID0gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0Zy
YW1lKGZyYW1lKTsKKyAgICBhdXRvIGluZm8gPSBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbVZp
ZGVvRnJhbWUoZnJhbWVCdWZmZXIpOwogICAgIGlmICghcHJlcGFyZVdyaXRpbmcoaW5mbywgbmV3
U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIHJldHVybiBpbmZvLndyaXRlVmlkZW9GcmFtZShmcmFtZSwgc3RhdGljX2Nhc3Q8
dWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0YSgpKSk7CisgICAgcmV0dXJuIGluZm8ud3JpdGVWaWRl
b0ZyYW1lQnVmZmVyKGZyYW1lQnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zdG9yYWdl
LT5kYXRhKCkpKTsKIH0KICNlbmRpZgogCkBAIC0xNzYsOSArMjAyLDkgQEAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpyZWFkKFNoYXJlZFZpZGVvRnJhbWUmJiBz
aGFyZWRWaWRlb0YKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGF1dG8g
c2FtcGxlID0gbV9vYmplY3RIZWFwLT5yZXRpcmUoV1RGTW92ZShyZWZlcmVuY2UpLCAwX3MpOwot
ICAgICAgICBBU1NFUlQoc2FtcGxlICYmIHNhbXBsZS0+cGl4ZWxCdWZmZXIoKSk7CiAgICAgICAg
IGlmICghc2FtcGxlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIEFTU0VS
VChzYW1wbGUtPnBpeGVsQnVmZmVyKCkpOwogICAgICAgICByZXR1cm4gc2FtcGxlLT5waXhlbEJ1
ZmZlcigpOwogICAgIH0gLCBbXShNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KSAtPiBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gewogICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzZW5kUmlnaHQpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKaW5kZXggYzQ2YjdlMjdmZjFhN2M2
Y2Q1OGQ0NzBkNDI1MzY1YjFlMjMzMWE2Yi4uZWZlZmE3OTAxNjE2ZDFlNGE2ZmUyZjY1MzhlNjAw
MjVlMGUyNjNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2hhcmVkVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBTaGFyZWRW
aWRlb0ZyYW1lSW5mbzsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBWaWRlb0ZyYW1lOwor
Y2xhc3MgVmlkZW9GcmFtZUJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Niwx
MCArNjcsMTAgQEAgcHVibGljOgogICAgIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIoKTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZT4gd3JpdGUoV2ViQ29yZTo6TWVkaWFTYW1w
bGUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOwotICAgIGJvb2wgd3Jp
dGUoQ1ZQaXhlbEJ1ZmZlclJlZiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYp
PiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4m
KTsKICNpZiBVU0UoTElCV0VCUlRDKQotICAgIGJvb2wgd3JpdGUoY29uc3Qgd2VicnRjOjpWaWRl
b0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IHdyaXRlKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CiAjZW5kaWYKKyAgICBi
b29sIHdyaXRlKENWUGl4ZWxCdWZmZXJSZWYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1h
cGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlJik+Jik7CiAgICAgdm9pZCBkaXNhYmxlKCk7CiAKIHByaXZhdGU6CkBAIC03Nyw2ICs3OCwx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgYWxsb2NhdGVTdG9yYWdlKHNpemVfdCwgY29uc3QgRnVu
Y3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOwogICAgIGJvb2wg
cHJlcGFyZVdyaXRpbmcoY29uc3QgV2ViQ29yZTo6U2hhcmVkVmlkZW9GcmFtZUluZm8mLCBjb25z
dCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOwogCisjaWYgVVNFKExJQldFQlJUQykK
KyAgICBib29sIHdyaXRlKHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisjZW5kaWYKKwogICAgIFVuaXF1ZVJlZjxJUEM6OlNl
bWFwaG9yZT4gbV9zZW1hcGhvcmU7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zdG9yYWdl
OwogICAgIGJvb2wgbV9pc1NlbWFwaG9yZUluVXNlIHsgZmFsc2UgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453374</attachid>
            <date>2022-02-28 01:03:05 -0800</date>
            <delta_ts>2022-03-03 04:39:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236131-20220228100304.patch</filename>
            <type>text/plain</type>
            <size>45737</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBkYTNlNmI5OGUzZGU2NjY2YTU2ZjMxZWEzYjg3NzNkZDhhNDdiNTZjLi43OTM1
M2VjNGEwZTc0ZDVhY2E5YTVhMzAwNjk2N2MyYTgwNDdkYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMi0yOCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMg
dmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlw
ZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxMzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4ODA1NTgwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSByb3V0aW5lcyB0byB0YWtl
IFZpZGVvRnJhbWVCdWZmZXIgaW5zdGVhZCBvZiBWaWRlb0ZyYW1lLgorICAgICAgICBGaXggYnVn
cyBpbiBoYW5kbGluZyBvZiBZVVYgY29udmVyc2lvbiBsaWJ3ZWJydGMgcm91dGluZXMuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFV0aWxpdGllcy5tbToKKwogMjAyMi0wMi0xOCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTAxNDkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNTU4NjdjNzA5MGY4YmE1YWNhYTUyNTQxYWYzYmE4YjRmNzUxYmY5ZC4uYTM5NmRk
Yzg2MjdkZmJkMjdjYzhkMzY0ZjM4MTFjMjU4YTc0Mzc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDIyLTAyLTI4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyB0byBwYXNzIHdlYnJ0YyB2aWRlbyBmcmFtZSBidWZmZXJzIHRocm91Z2gg
UmVhbHRpbWVNZWRpYVNvdXJjZSBiYXNlZCBwaXBlbGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEzMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODg4MDU1ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIFZpZGVvRnJhbWVMaWJXZWJSVEMgYXMgYSB3cmFwcGVyIHRvIGxpYndl
YnJ0YyB2aWRlbyBmcmFtZSBidWZmZXIuCisgICAgICAgIEluIGNhc2Ugd2Ugc2VuZCBWaWRlb0Zy
YW1lTGliV2ViUlRDIHRocm91Z2ggUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EsIGRp
cmVjdGx5IHNlbmQgdGhlIHZpZGVvIGZyYW1lIGJ1ZmZlci4KKyAgICAgICAgV2hlbiByZWNlaXZp
bmcgbGlid2VicnRjIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgaW4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EsIG1ha2UgdXNlIG9mIFZpZGVvRnJhbWVMaWJXZWJSVEMgdG8gZGVsYXkgY29u
dmVyc2lvbiBvZiB0aGUgdmlkZW8gZnJhbWUgYnVmZmVyIGluIGEgQ1ZQaXhlbEJ1ZmZlclJlZi4K
KyAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhlIGNvbnZlcnNpb24gaXMgdW5uZWVkZWQgYXMgdGhl
IHZpZGVvIGZyYW1lIGJ1ZmZlciB3aWxsIGJlIHVzZWQgZm9yIHJlbmRlcmluZyBhbmQgd2lsbCBi
ZSBjb3BpZWQgdG8gc2hhcmVkIG1lbW9yeSB0aHJvdWdoIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIu
CisgICAgICAgIEZpeCBidWdzIGluIGhhbmRsaW5nIG9mIFlVViBjb252ZXJzaW9uIGxpYndlYnJ0
YyByb3V0aW5lcy4KKyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gaGF2ZSBhIGRlZmF1bHQg
YXNWaWRlb0ZyYW1lQ1YgbWV0aG9kIGltcGxlbWVudGF0aW4gaW4gVmlkZW9GcmFtZS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGli
V2ViUlRDLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29j
b2EuY3BwOgorCiAyMDIyLTAyLTI3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBFbnN1cmUgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBzZXRzIGl0cyByZXNvdXJj
ZSBvd25lciB0byBwaXhlbCBidWZmZXJzIGNyZWF0ZWQgYnkgaXRzIHBsYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1NzdkOTY0MmI3ZWNhY2Y4YzdjMzhiODY3MTIwNWRhZjg4MDNkMWZhLi5hZjEwMDZkMTliOTI5
ODM2NjlmZDZhZTg2OTk2YjkxZDUxYzA3NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDIyLTAyLTI4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyB0byBwYXNzIHdlYnJ0YyB2aWRlbyBmcmFtZSBidWZmZXJzIHRocm91Z2ggUmVhbHRpbWVN
ZWRpYVNvdXJjZSBiYXNlZCBwaXBlbGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjEzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg4MDU1
ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IG9wdGltaXphdGlvbiBzdXBwb3J0IGZvciBWaWRlb0ZyYW1lTGliV2ViUlRDIHdyaXRpbmcgaW50
byBzaGFyZWQgbWVtb3J5LgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgdG8gY29udmVy
dCB0aGUgd2VicnRjIHZpZGVvIGZyYW1lIGludG8gYSBDVlBpeGVsQnVmZmVyLCBqdXN0IHRvIHNl
bmQgaXQgdG8gR1BVUHJvY2VzcyBmb3IgcmVuZGVyaW5nLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZVZpZGVvRnJhbWVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
aGFyZWRWaWRlb0ZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hh
cmVkVmlkZW9GcmFtZS5oOgorCiAyMDIyLTAyLTI3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2Ugcm91dGluZXMgdG8gZXhjaGFuZ2UgU2hhcmVk
VmlkZW9GcmFtZTo6QnVmZmVyIGRpcmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKaW5kZXgg
YmJiYzA1ODI3Y2Y3NGE5M2EwMDJlNTA3NDc4MjExMGZjZjVjZGRkMy4uMTllNTY2OWJiYTlkM2U3
MGYzOTU1NGZlZTEyY2I4MGYzNGEyYzBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cApAQCAt
MzM0LDQgKzMzNCw1IEBAIF9fWk42d2VicnRjMzJ3ZWJydGNfc2VxdWVuY2VfY2hlY2tlcl9pbnRl
cm5hbDE5U2VxdWVuY2VDaGVja2VySW1wbEMyRXYKIF9fWk5LM3J0YzE0UlRDQ2VydGlmaWNhdGUx
N0dldFNTTENlcnRpZmljYXRlRXYKIF9fWlRWTjZ3ZWJydGMzMFdyYXBwaW5nQXN5bmNEbnNSZXNv
bHZlclJlc3VsdEUKIF9fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlk
ZW9GcmFtZUUKLV9fWk42d2VicnRjMTRjb3B5VmlkZW9GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVQ
aAorX19aTjZ3ZWJydGMyMGNvcHlWaWRlb0ZyYW1lQnVmZmVyRVJOU18xNlZpZGVvRnJhbWVCdWZm
ZXJFUGgKK19fWk42d2VicnRjMzJjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUJ1ZmZlckVSTlNf
MTZWaWRlb0ZyYW1lQnVmZmVyRVJLTlN0M19fMThmdW5jdGlvbklGUDEwX19DVkJ1ZmZlcm1tTlNf
MTBCdWZmZXJUeXBlRUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGJiYmMw
NTgyN2NmNzRhOTNhMDAyZTUwNzQ3ODIxMTBmY2Y1Y2RkZDMuLjE5ZTU2NjliYmE5ZDNlNzBmMzk1
NTRmZWUxMmNiODBmMzRhMmMwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKQEAg
LTMzNCw0ICszMzQsNSBAQCBfX1pONndlYnJ0YzMyd2VicnRjX3NlcXVlbmNlX2NoZWNrZXJfaW50
ZXJuYWwxOVNlcXVlbmNlQ2hlY2tlckltcGxDMkV2CiBfX1pOSzNydGMxNFJUQ0NlcnRpZmljYXRl
MTdHZXRTU0xDZXJ0aWZpY2F0ZUV2CiBfX1pUVk42d2VicnRjMzBXcmFwcGluZ0FzeW5jRG5zUmVz
b2x2ZXJSZXN1bHRFCiBfX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZp
ZGVvRnJhbWVFCi1fX1pONndlYnJ0YzE0Y29weVZpZGVvRnJhbWVFUktOU18xMFZpZGVvRnJhbWVF
UGgKK19fWk42d2VicnRjMjBjb3B5VmlkZW9GcmFtZUJ1ZmZlckVSTlNfMTZWaWRlb0ZyYW1lQnVm
ZmVyRVBoCitfX1pONndlYnJ0YzMyY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWVCdWZmZXJFUk5T
XzE2VmlkZW9GcmFtZUJ1ZmZlckVSS05TdDNfXzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5T
XzEwQnVmZmVyVHlwZUVFRUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAppbmRleCAyYTU3ZGNhNWFm
MzhlZGYzZTNhMGU5YTRlZmVmNjRjOGE2M2U5ZTZjLi5mYTI4MGE0YTRmZDg2ODUxY2NiMzFmM2M5
ZGU3NmI4ZWE4ODk1OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC0zMzQsNCArMzM0
LDUgQEAgX19aTjZ3ZWJydGMzMndlYnJ0Y19zZXF1ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1
ZW5jZUNoZWNrZXJJbXBsQzJFdgogX19aTkszcnRjMTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2Vy
dGlmaWNhdGVFdgogX19aVFZONndlYnJ0YzMwV3JhcHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0
RQogX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRQot
X19aTjZ3ZWJydGMxNGNvcHlWaWRlb0ZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVBoCitfX1pONndl
YnJ0YzIwY29weVZpZGVvRnJhbWVCdWZmZXJFUk5TXzE2VmlkZW9GcmFtZUJ1ZmZlckVQaAorX19a
TjZ3ZWJydGMzMmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lQnVmZmVyRVJOU18xNlZpZGVvRnJh
bWVCdWZmZXJFUktOU3QzX18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5
cGVFRUVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAppbmRleCAy
ZWY4YTFlOTE1Mzg2MTFlZmU1YWY3MzRmODBjZDdhOWJhNGY1M2M2Li5hNzc5Y2FkMWJkMzYwMDJk
Nzk5MzE2YTE0ODA1ZDNhMzNkNGMxOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2Vi
S2l0VXRpbGl0aWVzLmgKQEAgLTQ4LDkgKzQ4LDEwIEBAIGJvb2wgaXNIMjY0SGFyZHdhcmVFbmNv
ZGVyQWxsb3dlZCgpOwogCiBlbnVtIGNsYXNzIEJ1ZmZlclR5cGUgeyBJNDIwLCBJMDEwIH07CiBD
VlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJh
bWUmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3Qs
IEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CitD
VlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lQnVmZmVyKFZpZGVvRnJh
bWVCdWZmZXImLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBz
aXplX3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVUQUlO
RUQ7CiBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJh
bWUmKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxCdWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOwotYm9v
bCBjb3B5VmlkZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgdWludDhfdCopOworYm9vbCBjb3B5
VmlkZW9GcmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVmZmVyJiwgdWludDhfdCopOwogCiB0eXBlZGVm
IENWUGl4ZWxCdWZmZXJSZWYgKCpHZXRCdWZmZXJDYWxsYmFjaykodm9pZCopOwogdHlwZWRlZiB2
b2lkICgqUmVsZWFzZUJ1ZmZlckNhbGxiYWNrKSh2b2lkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxp
dGllcy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4IDYyZjYyNGM0OTc2ZmE2MThkODBjZDE0MGEz
ZmQ5MWQ2YmE5ZTkwOWYuLjY2ZjgwMTllYTU5NmNhY2M0NzJhMTViMTZmMGEzYjM1ZGFjYWU5ZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nk
ay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xNjAs
MjggKzE2MCwzMiBAQCBzdGF0aWMgYm9vbCBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoY29u
c3Qgd2VicnRjOjpJMDEwQnVmZmVySW50ZXJmYWNlKiBmcmFtZQogCiBDVlBpeGVsQnVmZmVyUmVm
IGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25z
dCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5
cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKTsKLSAgICBpZiAoYnVmZmVyLT50eXBlKCkgIT0gVmlkZW9GcmFtZUJ1
ZmZlcjo6VHlwZTo6a05hdGl2ZSkgewotICAgICAgICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUo
KTsKKyAgICByZXR1cm4gY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWVCdWZmZXIoKmZyYW1lLnZp
ZGVvX2ZyYW1lX2J1ZmZlcigpLCBjcmVhdGVQaXhlbEJ1ZmZlcik7Cit9CisKK0NWUGl4ZWxCdWZm
ZXJSZWYgY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWVCdWZmZXIoVmlkZW9GcmFtZUJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXpl
X3QsIEJ1ZmZlclR5cGUpPiYgY3JlYXRlUGl4ZWxCdWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci50
eXBlKCkgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkgeworICAgICAgICBhdXRv
IHR5cGUgPSBidWZmZXIudHlwZSgpOwogICAgICAgICBpZiAodHlwZSAhPSBWaWRlb0ZyYW1lQnVm
ZmVyOjpUeXBlOjprSTQyMCAmJiB0eXBlICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJMDEw
KSB7CiAgICAgICAgICAgICBSVENfTE9HKFdBUk5JTkcpIDw8ICJWaWRlbyBmcmFtZSBidWZmZXIg
dHlwZSBpcyBub3QgZXhwZWN0ZWQuIjsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1
ZmZlci0+d2lkdGgoKSwgYnVmZmVyLT5oZWlnaHQoKSwgdHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVy
OjpUeXBlOjprSTQyMCA/IEJ1ZmZlclR5cGU6Okk0MjAgOiBCdWZmZXJUeXBlOjpJMDEwKTsKKyAg
ICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZVBpeGVsQnVmZmVyKGJ1ZmZlci53aWR0aCgp
LCBidWZmZXIuaGVpZ2h0KCksIHR5cGUgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAg
PyBCdWZmZXJUeXBlOjpJNDIwIDogQnVmZmVyVHlwZTo6STAxMCk7CiAgICAgICAgIGlmICghcGl4
ZWxCdWZmZXIpIHsKICAgICAgICAgICAgIFJUQ19MT0coV0FSTklORykgPDwgIlBpeGVsIGJ1ZmZl
ciBjcmVhdGlvbiBmYWlsZWQuIjsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKHR5cGUgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAp
Ci0gICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLT5HZXRJNDIw
KCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZl
cihidWZmZXIuR2V0STQyMCgpLCBwaXhlbEJ1ZmZlcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIENvcHlWaWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihidWZmZXItPkdldEkwMTAoKSwgcGl4ZWxC
dWZmZXIpOworICAgICAgICAgICAgQ29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGJ1ZmZlci5H
ZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKICAgICAgICAgcmV0dXJuIHBpeGVsQnVmZmVyOwogICAg
IH0KIAotICAgIGF1dG8gKmZyYW1lQnVmZmVyID0gc3RhdGljX2Nhc3Q8T2JqQ0ZyYW1lQnVmZmVy
Kj4oYnVmZmVyLmdldCgpKS0+d3JhcHBlZF9mcmFtZV9idWZmZXIoKTsKKyAgICBhdXRvICpmcmFt
ZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1ZmZlcio+KCZidWZmZXIpLT53cmFwcGVk
X2ZyYW1lX2J1ZmZlcigpOwogICAgIGlmICghW2ZyYW1lQnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JU
Q0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIw
MywxOCArMjA3LDE3IEBAIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXJGcm9tRnJhbWUoY29u
c3QgVmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJSZXRhaW4ocnRj
UGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOwogfQogCi1ib29sIGNvcHlWaWRlb0ZyYW1lKGNvbnN0
IFZpZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90KiBkYXRhKQorYm9vbCBjb3B5VmlkZW9GcmFtZUJ1
ZmZlcihWaWRlb0ZyYW1lQnVmZmVyJiBidWZmZXIsIHVpbnQ4X3QqIGRhdGEpCiB7Ci0gICAgYXV0
byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKLSAgICBpZiAoYnVmZmVyLT50
eXBlKCkgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkKKyAgICBpZiAoYnVmZmVy
LnR5cGUoKSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUoKTsKKyAgICBhdXRvIHR5
cGUgPSBidWZmZXIudHlwZSgpOwogICAgIGlmICh0eXBlID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5
cGU6OmtJNDIwKSB7Ci0gICAgICAgIGF1dG8qIGk0MjBGcmFtZSA9IGJ1ZmZlci0+R2V0STQyMCgp
OworICAgICAgICBhdXRvKiBpNDIwRnJhbWUgPSBidWZmZXIuR2V0STQyMCgpOwogICAgICAgICBh
dXRvKiBkYXRhWSA9IGRhdGE7CiAgICAgICAgIGF1dG8gc3RyaWRlWSA9IGk0MjBGcmFtZS0+d2lk
dGgoKTsKLSAgICAgICAgYXV0byBzdHJpZGVVViA9IGk0MjBGcmFtZS0+d2lkdGgoKSAvIDI7Cisg
ICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpNDIwRnJhbWUtPndpZHRoKCk7CiAgICAgICAgIGF1dG8q
IGRhdGFVViA9IGRhdGEgKyAoaTQyMEZyYW1lLT53aWR0aCgpICogaTQyMEZyYW1lLT5oZWlnaHQo
KSk7CiAgICAgICAgIHJldHVybiAhbGlieXV2OjpJNDIwVG9OVjEyKGk0MjBGcmFtZS0+RGF0YVko
KSwgaTQyMEZyYW1lLT5TdHJpZGVZKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGk0MjBGcmFtZS0+RGF0YVUoKSwgaTQyMEZyYW1lLT5TdHJpZGVVKCksCkBAIC0yMjMsMTAg
KzIyNiwxMCBAQCBib29sIGNvcHlWaWRlb0ZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCB1
aW50OF90KiBkYXRhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpNDIwRnJh
bWUtPndpZHRoKCksIGk0MjBGcmFtZS0+aGVpZ2h0KCkpOwogICAgIH0KICAgICBpZiAodHlwZSA9
PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTAxMCkgewotICAgICAgICBhdXRvKiBpMDEwRnJh
bWUgPSBidWZmZXItPkdldEkwMTAoKTsKKyAgICAgICAgYXV0byogaTAxMEZyYW1lID0gYnVmZmVy
LkdldEkwMTAoKTsKICAgICAgICAgYXV0byogZGF0YVkgPSByZWludGVycHJldF9jYXN0PHVpbnQx
Nl90Kj4oZGF0YSk7CiAgICAgICAgIGF1dG8gc3RyaWRlWSA9IGkwMTBGcmFtZS0+d2lkdGgoKTsK
LSAgICAgICAgYXV0byBzdHJpZGVVViA9IGkwMTBGcmFtZS0+d2lkdGgoKSAvIDI7CisgICAgICAg
IGF1dG8gc3RyaWRlVVYgPSBpMDEwRnJhbWUtPndpZHRoKCk7CiAgICAgICAgIGF1dG8qIGRhdGFV
ViA9IGRhdGFZICsgKGkwMTBGcmFtZS0+d2lkdGgoKSAqIGkwMTBGcmFtZS0+aGVpZ2h0KCkpOwog
ICAgICAgICByZXR1cm4gIWxpYnl1djo6STAxMFRvUDAxMChpMDEwRnJhbWUtPkRhdGFZKCksIGkw
MTBGcmFtZS0+U3RyaWRlWSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
MDEwRnJhbWUtPkRhdGFVKCksIGkwMTBGcmFtZS0+U3RyaWRlVSgpLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRl
eCBlZjYzYjU0MmNjYmYxOTBjYmI1MWUxYzQ1ZjVlOWE4MjM2MzVkMjc0Li5jMjAwMzdlODhhMzVj
MGI5NTMzMDRiY2MwODY3M2VjZTgzNGU1ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjIwMCw2ICsy
MjAwLDcgQEAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2Uu
Y3BwCiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcAogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmNwcAog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCiBwbGF0
Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKIHBsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAogcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5TW9jay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YjQyZTVmYWQyOTYxNjY5ZjQzMzEzODAzZmQz
NDE3MjZjYTIyZmM5Li5jNjA0ODA1MWQxY2Q1NTc2MzZlZTY3NWQ4YmI1OTQwYTcyNTM5M2Y4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMjI3LDYgKzEyMjcsNyBAQAogCQk0MUU2RDcxQjI2RUExQTQ2MDBCNzY1RDYgLyogUlRD
RXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
QjdDMDRCMjZFNjkxNzEwMEQzNkMwNyAvKiBSVENFcnJvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRTlEQ0U3MjMxOTc0QkYwMEYzNTk0OSAv
KiBCbG9iTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUU5RENFNDIzMTk3M0ZFMDBGMzU5NDkgLyogQmxvYkxvYWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRTlEQ0U5MjMxOUNBNzYw
MEYzNTk0OSAvKiBOZXR3b3JrU2VuZFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU5RENFODIzMTlDQTc1MDBGMzU5NDkgLyogTmV0d29ya1Nl
bmRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTQxRUI3OTdFMjdDM0U0NUUwMDFDM0UzRSAvKiBWaWRlb0ZyYW1lTGliV2ViUlRDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUVCNzk3QzI3QzNF
NDVEMDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldlYlJUQy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAv
KiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5oICovOyB9OwogCQk0MUYxRDIxRjBFRjM1QzJBMDBEQTg3NTMgLyog
U2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBQkQyQjFGNERGRTQyMDA2
QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtODk5Niw2ICs4OTk3LDggQEAKIAkJNDFFOURDRTYyMzE5NzQy
MzAwRjM1OTQ5IC8qIEVuZGluZ1R5cGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVuZGlu
Z1R5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU5RENFODIzMTlDQTc1
MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrU2VuZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRTlEQ0VBMjMxOUNBRTgwMEYzNTk0OSAvKiBOZXR3b3JrU2VuZFF1ZXVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtTZW5kUXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUVCNzk3QjI3QzNFNDVEMDAxQzNFM0UgLyogVmlk
ZW9GcmFtZUxpYldlYlJUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBWaWRlb0ZyYW1lTGliV2ViUlRDLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9WaWRlb0ZyYW1lTGli
V2ViUlRDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFQjc5N0MyN0MzRTQ1
RDAwMUMzRTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJSVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gVmlkZW9GcmFtZUxpYldlYlJUQy5oOyBwYXRoID0gbGlid2VicnRjL1ZpZGVv
RnJhbWVMaWJXZWJSVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYyMTIw
RjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFGMDk2MzQyNEY5MERFQTAwMDlGQjkzIC8qIFRleHREZWNvZGVyU3RyZWFt
RGVjb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gVGV4dERlY29kZXJTdHJlYW1EZWNvZGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDg2LDYgKzIxMDg5LDggQEAKIAkJCQk0MUIyOEIzODFG
ODYwQkQxMDBGQjUyQUMgLyogTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAgKi8sCiAJCQkJNDFC
MjhCMzYxRjg2MEJEMDAwRkI1MkFDIC8qIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaCAqLywKIAkJ
CQk0MTBFNDQ1RjIzNDM3M0FEMDAwMTczRDQgLyogTGliV2ViUlRDU29ja2V0SWRlbnRpZmllci5o
ICovLAorCQkJCTQxRUI3OTdCMjdDM0U0NUQwMDFDM0UzRSAvKiBWaWRlb0ZyYW1lTGliV2ViUlRD
LmNwcCAqLywKKwkJCQk0MUVCNzk3QzI3QzNFNDVEMDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldl
YlJUQy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBsaWJ3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMzc5MzAsNiArMzc5MzUsNyBAQAogCQkJCUNEM0VFRjNCMjU3OTlGQTEw
MDY1NjNCQiAvKiBWaWRlb0NvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdCNUEz
REFGMjdBQkY4QzUwMDZDNkY5NyAvKiBWaWRlb0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QkUzN0Y4NzI3QkJCNzA4MDA3QTZDRDMgLyogVmlkZW9GcmFtZUNWLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MUVCNzk3RTI3QzNFNDVFMDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldlYlJUQy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjYyNzE5QkExQTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVN
ZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjAyNzE5QjI5MDAwQ0I4RDc0IC8q
IFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTUyQjBENEMw
MUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCmluZGV4IGE1NDlj
MWE1YzQ4ZWIyM2Q2NGJhM2ZkMzUzODQwOGJkMTU1MjM0ZjAuLmMwMjQ3MmYxMWQzMjA5OWMzODAw
ZWU0NjgxMDZmYTFiMGMyYzUzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ZpZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUu
Y3BwCkBAIC0yNiw2ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZp
ZGVvRnJhbWUuaCIKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlZpZGVvRnJhbWVD
Vi5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU8pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEzMSw2ICsxMzUsMTcgQEAgdm9pZCBWaWRlb0ZyYW1lOjpkdW1wKFByaW50U3RyZWFtJikg
Y29uc3QKIHsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorUmVmUHRyPFZpZGVvRnJhbWVDVj4g
VmlkZW9GcmFtZTo6YXNWaWRlb0ZyYW1lQ1YoKQoreworICAgIGF1dG8gYnVmZmVyID0gcGl4ZWxC
dWZmZXIoKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUocHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb01p
cnJvcmVkKCksIHZpZGVvUm90YXRpb24oKSwgYnVmZmVyKTsKK30KKyNlbmRpZgorCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCmluZGV4IDY0MTFkZjdkNjQwY2Nk
ZWQxZDFlM2UxMWZkMWE0MjhhMjkxYjMxZWQuLjU5MDljMzQ4ZjZiZWVmYWNlNmU1ZjY5YTAzMTUw
NGEwNGEyZDk2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKQEAgLTUyLDkg
KzUyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVNhbXBsZTo6VHlw
ZSBwbGF0Zm9ybVNhbXBsZVR5cGUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c1JlbW90ZVByb3h5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNMaWJXZWJSVEMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2lmIFVTRShBVkZPVU5EQVRJ
T04pCiAgICAgdmlydHVhbCBib29sIGlzQ1YoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4gYXNWaWRlb0ZyYW1lQ1YoKSA9
IDA7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8VmlkZW9GcmFtZUNWPiBhc1Zp
ZGVvRnJhbWVDVigpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oCmluZGV4IGJlM2ZkYjc5
NzgwM2ExNDBlYjAyYzQ2OWQzMzYyNGI0OGI2Mjc1MDMuLjQ3ODg0NWJkYmFmMjk5MmFkNWFjMmY0
ZTc4NmVjMDkxNGExZmE3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaApAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIHN0
cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX19DVlBp
eGVsQnVmZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CiAKIG5hbWVzcGFjZSB3ZWJydGMg
ewotY2xhc3MgVmlkZW9GcmFtZTsKK2NsYXNzIFZpZGVvRnJhbWVCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgd3JpdGVQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCB1aW50OF90KiBkYXRh
KTsKIAogI2lmIFVTRShMSUJXRUJSVEMpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJl
ZFZpZGVvRnJhbWVJbmZvIGZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd3JpdGVWaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6
VmlkZW9GcmFtZSYsIHVpbnQ4X3QqIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
aGFyZWRWaWRlb0ZyYW1lSW5mbyBmcm9tVmlkZW9GcmFtZUJ1ZmZlcihjb25zdCB3ZWJydGM6OlZp
ZGVvRnJhbWVCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdyaXRlVmlkZW9GcmFt
ZUJ1ZmZlcih3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImLCB1aW50OF90KiBkYXRhKTsKICNlbmRp
ZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHN0b3JhZ2VTaXplKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5m
by5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZv
Lm1tCmluZGV4IGNlYWZiZmQ3MWJiYzhkNThkYTNiNTE0MzEyNzA2ZjI1MGVjYWQyYjUuLjAxMjZk
YmJhMTg0NWU1MjM1YjU4MzEyMGYwZjIxNDRhN2IzMmM2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tCkBAIC03Miw2
ICs3Miw3IEBAIHNpemVfdCBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6c3RvcmFnZVNpemUoKSBjb25z
dAogdm9pZCBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZW5jb2RlKHVpbnQ4X3QqIGRlc3RpbmF0aW9u
KQogewogICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKwogICAgIGVuY29k
ZXIgPDwgKHVpbnQzMl90KW1fYnVmZmVyVHlwZTsKICAgICBlbmNvZGVyIDw8IG1fd2lkdGg7CiAg
ICAgZW5jb2RlciA8PCBtX2hlaWdodDsKQEAgLTIwOSwzMSArMjEwLDMxIEBAIFJldGFpblB0cjxD
VlBpeGVsQnVmZmVyUG9vbFJlZj4gU2hhcmVkVmlkZW9GcmFtZUluZm86OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXJQb29sCiB9CiAKICNpZiBVU0UoTElCV0VCUlRDKQotU2hhcmVkVmlkZW9GcmFtZUlu
Zm8gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSYgZnJhbWUpCitTaGFyZWRWaWRlb0ZyYW1lSW5mbyBTaGFyZWRWaWRlb0ZyYW1lSW5m
bzo6ZnJvbVZpZGVvRnJhbWVCdWZmZXIoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyJiBm
cmFtZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOwot
ICAgIGlmIChidWZmZXItPnR5cGUoKSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6
OmtOYXRpdmUpCisgICAgaWYgKGZyYW1lLnR5cGUoKSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZm
ZXI6OlR5cGU6OmtOYXRpdmUpCiAgICAgICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7
IH07CiAKLSAgICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUoKTsKLQorICAgIGF1dG8gdHlwZSA9
IGZyYW1lLnR5cGUoKTsKICAgICBpZiAodHlwZSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6
OlR5cGU6OmtJNDIwKQogICAgICAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8geyBrQ1ZQ
aXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlLAogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZnJhbWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSks
Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pihm
cmFtZS53aWR0aCgpKSAvIDIgfTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pihm
cmFtZS53aWR0aCgpKSAvIDIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSkg
LyAyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgfTsKIAogICAgIGlmICh0
eXBlID09IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0kwMTApCiAgICAgICAgIHJl
dHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3Ix
MEJpUGxhbmFyRnVsbFJhbmdlLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZy
YW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSAqIDIpLAotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJh
bWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgfTsKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSAvIDIsIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSkgLyAyLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZnJhbWUud2lkdGgoKSkgKiAyIH07CiAKICAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUlu
Zm8geyB9OwogfQogCi1ib29sIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjp3cml0ZVZpZGVvRnJhbWUo
Y29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgdWludDhfdCogZGF0YSkKK2Jvb2wgU2hh
cmVkVmlkZW9GcmFtZUluZm86OndyaXRlVmlkZW9GcmFtZUJ1ZmZlcih3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXImIGZyYW1lQnVmZmVyLCB1aW50OF90KiBkYXRhKQogewogICAgIEFTU0VSVChtX2J1
ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5n
ZSB8fCBtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFu
YXJGdWxsUmFuZ2UpOwotICAgIHJldHVybiB3ZWJydGM6OmNvcHlWaWRlb0ZyYW1lKGZyYW1lLCBk
YXRhKTsKKyAgICBlbmNvZGUoZGF0YSk7CisgICAgZGF0YSArPSBzaXplb2YoU2hhcmVkVmlkZW9G
cmFtZUluZm8pOworICAgIHJldHVybiB3ZWJydGM6OmNvcHlWaWRlb0ZyYW1lQnVmZmVyKGZyYW1l
QnVmZmVyLCBkYXRhKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKaW5kZXggZGFiNmYyYTQxNzcz
YTViMjc4MTVhYjIwZDRiZDQ0NjlkNjJiOTJlYS4uODc1ZGFhNDBlMjhlOGRmOWFlMjJiNjY3NDYw
ZWM2ZTI5ZDU4YjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbmNsdWRlICJW
aWRlb0ZyYW1lQ1YuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lTGliV2ViUlRDLmgiCiAKICNpZiBV
U0UoQUNDRUxFUkFURSkKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KQEAgLTkz
LDExICs5NCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZQogICAgICAgICBpbWFnZUJ1ZmZl
ciA9IGRvd25jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oc2FtcGxlKS5waXhlbEJ1ZmZlcigpOwog
ICAgIGVsc2UgaWYgKGlzPFZpZGVvRnJhbWVDVj4oc2FtcGxlKSkKICAgICAgICAgaW1hZ2VCdWZm
ZXIgPSBkb3duY2FzdDxWaWRlb0ZyYW1lQ1Y+KHNhbXBsZSkucGl4ZWxCdWZmZXIoKTsKLSAgICBl
bHNlIHsKKyAgICBlbHNlIGlmIChzaG91bGRDaGVja0ZvcklPU3VyZmFjZSA9PSBTaG91bGRDaGVj
a0ZvcklPU3VyZmFjZTo6WWVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAi
UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZTogY2Fubm90IG9idGFpbiBDVlBpeGVsQnVmZmVyIGZy
b20gc2FtcGxlLiBVbmtub3duIHNhbXBsZSB0eXBlLiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikgeworICAgIGlmICghaW1hZ2VCdWZmZXIg
JiYgc2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UgPT0gU2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Olll
cykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIlJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGU6IGNhbm5vdCBvYnRhaW4gQ1ZQaXhlbEJ1ZmZlciBmcm9tIHNhbXBsZS4gTm8gYnVm
ZmVyLiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldl
YlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
VmlkZW9GcmFtZUxpYldlYlJUQy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY4NzAwMjBjOWI5NjI1NTc3Mjlk
ZjdjMWU0YzU4NmU1ZmEzN2Y3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcApAQCAt
MCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlZpZGVvRnJhbWVMaWJXZWJSVEMuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElC
V0VCUlRDKQorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVk
ZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8Vmlk
ZW9GcmFtZUxpYldlYlJUQz4gVmlkZW9GcmFtZUxpYldlYlJUQzo6Y3JlYXRlKE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24s
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyLCBD
b252ZXJzaW9uQ2FsbGJhY2smJiBjb252ZXJzaW9uQ2FsbGJhY2spCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVmlkZW9GcmFtZUxpYldlYlJUQyhwcmVzZW50YXRpb25UaW1lLCBpc01pcnJv
cmVkLCByb3RhdGlvbiwgV1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKGNvbnZlcnNpb25DYWxsYmFj
aykpKTsKK30KKworVmlkZW9GcmFtZUxpYldlYlJUQzo6VmlkZW9GcmFtZUxpYldlYlJUQyhNZWRp
YVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uIHJv
dGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1
ZmZlciwgQ29udmVyc2lvbkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNrKQorICAgIDogVmlk
ZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBpc01pcnJvcmVkLCByb3RhdGlvbikKKyAgICAsIG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKKyAgICAsIG1fc2l6ZShtX2J1ZmZlci0+d2lkdGgoKSwg
IG1fYnVmZmVyLT5oZWlnaHQoKSkKKyAgICAsIG1fY29udmVyc2lvbkNhbGxiYWNrKFdURk1vdmUo
Y29udmVyc2lvbkNhbGxiYWNrKSkKK3sKKyAgICBzd2l0Y2ggKG1fYnVmZmVyLT50eXBlKCkpIHsK
KyAgICBjYXNlIHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjA6CisgICAgICAg
IG1fdmlkZW9QaXhlbEZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFu
YXJGdWxsUmFuZ2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugd2VicnRjOjpWaWRlb0ZyYW1l
QnVmZmVyOjpUeXBlOjprSTAxMDoKKyAgICAgICAgbV92aWRlb1BpeGVsRm9ybWF0ID0ga0NWUGl4
ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30K
KworQ1ZQaXhlbEJ1ZmZlclJlZiBWaWRlb0ZyYW1lTGliV2ViUlRDOjpwaXhlbEJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcGl4ZWxCdWZmZXJMb2NrIH07CisgICAgaWYg
KCFtX3BpeGVsQnVmZmVyICYmIG1fY29udmVyc2lvbkNhbGxiYWNrKQorICAgICAgICBtX3BpeGVs
QnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2NvbnZlcnNpb25DYWxsYmFjaywgeyB9KSgqbV9idWZm
ZXIpOworICAgIHJldHVybiBtX3BpeGVsQnVmZmVyLmdldCgpOworfQorCit9CisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJh
bWVMaWJXZWJSVEMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTY2MzkwN2E0NmI4Zjc5M2Q3NTA4OGQ4OGJjNDk2
NTljMzYyZTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaApAQCAtMCwwICsxLDczIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNF
KExJQldFQlJUQykKKworI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKKworQUxMT1dfVU5VU0VEX1BB
UkFNRVRFUlNfQkVHSU4KKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmg+
CisjaW5jbHVkZSA8d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg+CitBTExPV19V
TlVTRURfUEFSQU1FVEVSU19FTkQKKwordXNpbmcgQ1ZQaXhlbEJ1ZmZlclJlZiA9IHN0cnVjdCBf
X0NWQnVmZmVyKjsKKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvRnJhbWVM
aWJXZWJSVEMgZmluYWwgOiBwdWJsaWMgVmlkZW9GcmFtZSB7CitwdWJsaWM6CisgICAgdXNpbmcg
Q29udmVyc2lvbkNhbGxiYWNrID0gRnVuY3Rpb248UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
KHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYpPjsKKyAgICBzdGF0aWMgUmVmPFZpZGVvRnJhbWVM
aWJXZWJSVEM+IGNyZWF0ZShNZWRpYVRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlv
biwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiwgQ29udmVy
c2lvbkNhbGxiYWNrJiYpOworCisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlcj4gYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKworcHJpdmF0ZToKKyAg
ICBWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1Jv
dGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmLCBD
b252ZXJzaW9uQ2FsbGJhY2smJik7CisKKyAgICAvLyBWaWRlb0ZyYW1lCisgICAgRmxvYXRTaXpl
IHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NpemU7IH0KKyAgICB1
aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV92aWRlb1Bp
eGVsRm9ybWF0OyB9CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IGZp
bmFsOworCisgICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1
ZmZlcj4gbV9idWZmZXI7CisgICAgRmxvYXRTaXplIG1fc2l6ZTsKKyAgICB1aW50MzJfdCBtX3Zp
ZGVvUGl4ZWxGb3JtYXQgeyAwIH07CisKKyAgICBtdXRhYmxlIENvbnZlcnNpb25DYWxsYmFjayBt
X2NvbnZlcnNpb25DYWxsYmFjazsKKyAgICBtdXRhYmxlIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBtX3BpeGVsQnVmZmVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9waXhlbEJ1ZmZlckxvY2sp
OworICAgIG11dGFibGUgTG9jayBtX3BpeGVsQnVmZmVyTG9jazsKK307CisKK30KKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lTGliV2ViUlRDKQorICAg
IHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1l
KSB7IHJldHVybiB2aWRlb0ZyYW1lLmlzTGliV2ViUlRDKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBp
czxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYgaXM8V2ViQ29yZTo6VmlkZW9G
cmFtZUxpYldlYlJUQz4oZG93bmNhc3Q8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUp
KTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCisjZW5kaWYgLy8gUExBVEZPUk0o
Q09DT0EpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYS5oCmluZGV4IDYwMzM4ZWEwNzM3ZGI2MTY4ZmM2MTBiMWM0MjA1YzNh
YWE2OWFiZTkuLjhhMDI1Mjk2MjEzNmEyMjNlZDM0MmY3ODA3NzI1YWY4NDhkMWI4YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCkBAIC02Miw3
ICs2Miw4IEBAIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc2l6ZV90
IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CiAjZW5kaWYKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclBvb2xSZWY+IG1fcGl4ZWxCdWZmZXJQb29sOworICAgIExvY2sgbV9waXhlbEJ1ZmZlclBv
b2xMb2NrOworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9vbFJlZj4gbV9waXhlbEJ1ZmZl
clBvb2wgV1RGX0dVQVJERURfQllfTE9DSyhtX3BpeGVsQnVmZmVyUG9vbExvY2spOwogICAgIHNp
emVfdCBtX3BpeGVsQnVmZmVyUG9vbFdpZHRoIHsgMCB9OwogICAgIHNpemVfdCBtX3BpeGVsQnVm
ZmVyUG9vbEhlaWdodCB7IDAgfTsKICAgICB3ZWJydGM6OkJ1ZmZlclR5cGUgbV9waXhlbEJ1ZmZl
clBvb2xCdWZmZXJUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLm1tCmluZGV4IGYxMGNmZTFmMDI5YmY2NjRjYzgyMzJkNjE3YWZiMTYwNGJjOTc0
YjAuLmI0NDk4ZTNhNThkZmVmOWVhZDg0NjZiMTQ4NDAxMzU5Mzg0MGUxODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTMzLDcgKzMz
LDcgQEAKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKLSNpbXBvcnQgIlZpZGVvRnJhbWUuaCIKKyNpbXBv
cnQgIlZpZGVvRnJhbWVMaWJXZWJSVEMuaCIKICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5o
PgogCiBBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgpAQCAtNjIsNyArNjIsNyBAQCBSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2EocnRjOjpzY29wZWRfcgogewogfQogCi1DVlBpeGVsQnVmZmVyUG9vbFJlZiBSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwg
c2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpCitDVlBpeGVsQnVm
ZmVyUG9vbFJlZiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJQ
b29sKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZl
clR5cGUpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKIHsKICAgICBpZiAoIW1f
cGl4ZWxCdWZmZXJQb29sIHx8IG1fcGl4ZWxCdWZmZXJQb29sV2lkdGggIT0gd2lkdGggfHwgbV9w
aXhlbEJ1ZmZlclBvb2xIZWlnaHQgIT0gaGVpZ2h0IHx8IG1fcGl4ZWxCdWZmZXJQb29sQnVmZmVy
VHlwZSAhPSBidWZmZXJUeXBlKSB7CiAgICAgICAgIE9TVHlwZSBwb29sQnVmZmVyVHlwZTsKQEAg
LTEzMywyMyArMTMzLDI2IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2E6OnRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocHJvdmlkZXIpOwogICAgIH0KIAotICAgIC8vIElu
IGNhc2Ugb2YgaW4gbWVtb3J5IHNhbXBsZXMsIHdlIGhhdmUgbm9uIGludGVybGVhdmVkIFlVViBk
YXRhIHdoaWxlIENWUGl4ZWxCdWZmZXJzIHByZWZlciBpbnRlcmxlYXZlZCBZVVYgZGF0YS4KLSAg
ICAvLyBNYXliZSB3ZSBzaG91bGQgaW50cm9kdWNlIGEgTWVkaWFTYW1wbGUgdGhhdCB3b3VsZCBy
ZXByZXNlbnQgbm9uIGludGVybGVhdmVkIFlVViBkYXRhIGFzIGFuIG9wdGltaXphdGlvbi4KLSAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gYWRvcHRDRih3ZWJydGM6OmNyZWF0ZVBpeGVsQnVmZmVyRnJv
bUZyYW1lKGZyYW1lLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6
OkJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7Ci0gICAgICAgIGF1
dG8gcGl4ZWxCdWZmZXJQb29sID0gdGhpcy0+cGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQs
IGJ1ZmZlclR5cGUpOwotICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIg
PSBudWxscHRyOwotICAgICAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRl
UGl4ZWxCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9waXhlbEJ1ZmZlclBvb2wuZ2V0KCks
ICZwaXhlbEJ1ZmZlcik7Ci0KLSAgICAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNz
KSB7Ci0gICAgICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIs
ICJGYWlsZWQgY3JlYXRpbmcgYSBwaXhlbCBidWZmZXIgd2l0aCBlcnJvciAiLCBzdGF0dXMpOwot
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBp
eGVsQnVmZmVyOwotICAgIH0pKTsKLSAgICByZXR1cm4gY3JlYXRlTWVkaWFTYW1wbGVGcm9tQ1ZQ
aXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlci5nZXQoKSwgcm90YXRpb24sIGZyYW1lLnRpbWVzdGFtcF91
cygpKTsKKyAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBDVlBpeGVsQnVmZmVyUmVmLCB1c2Ug
aXQgZGlyZWN0bHkuCisgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSB3ZWJydGM6OnBpeGVsQnVm
ZmVyRnJvbUZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU1lZGlhU2FtcGxlRnJv
bUNWUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIHJvdGF0aW9uLCBmcmFtZS50aW1lc3RhbXBfdXMo
KSk7CisKKyAgICAvLyBJbiBjYXNlIG9mIGluIG1lbW9yeSBsaWJ3ZWJydGMgc2FtcGxlcywgd2Ug
aGF2ZSBub24gaW50ZXJsZWF2ZWQgWVVWIGRhdGEsIGxldCdzIGxhemlseSBjcmVhdGUgQ1ZQaXhl
bEJ1ZmZlcnMgaWYgbmVlZGVkLgorICAgIHJldHVybiBWaWRlb0ZyYW1lTGliV2ViUlRDOjpjcmVh
dGUoTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpLCAxMDAwMDAwKSwgZmFsc2UsIHJvdGF0
aW9uLCBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCB0aGlzXShhdXRvJiBidWZmZXIpIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0Yod2Vi
cnRjOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZUJ1ZmZlcihidWZmZXIsIFt0aGlzXShzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAt
PiBDVlBpeGVsQnVmZmVyUmVmIHsKKyAgICAgICAgICAgIExvY2tlciBsb2NrKG1fcGl4ZWxCdWZm
ZXJQb29sTG9jayk7CisgICAgICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IHRoaXMtPnBp
eGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVpZ2h0LCBidWZmZXJUeXBlKTsKKyAgICAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXJQb29sKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAg
ICAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4ZWxCdWZmZXIoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbV9waXhlbEJ1ZmZlclBvb2wuZ2V0KCksICZwaXhlbEJ1ZmZlcik7
CisgICAgICAgICAgICBpZiAoc3RhdHVzICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKKyAgICAgICAg
ICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQg
Y3JlYXRpbmcgYSBwaXhlbCBidWZmZXIgd2l0aCBlcnJvciAiLCBzdGF0dXMpOworICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IHBpeGVsQnVmZmVyOworICAgICAgICB9KSk7CisgICAgfSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1l
JiB3ZWJydGNWaWRlb0ZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VDb2NvYS5jcHAKaW5kZXggYTZlYjE5ZDMyYTI0NDQxNGQ5NTEyNTU0MTJkNTg5Y2Iw
NDZjNzA5OC4uZjcwYjQxNTU0Y2JkNTEwODMxMzAxNTU2ZGNhZGRmZGI3ZmNhYTIxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCkBAIC0z
Myw3ICszMyw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVWaWRlb1V0aWxpdGll
cy5oIgotI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lTGliV2Vi
UlRDLmgiCiAKIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0JFR0lOCiAKQEAgLTg2LDE0ICs4Niwy
MCBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjp2aWRlb1NhbXBsZUF2
YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLAogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkQXBw
bHlSb3RhdGlvbiA9IG1fc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBtX2N1cnJlbnRSb3RhdGlvbiAh
PSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA7Ci0gICAgaWYgKCFzaG91bGRBcHBseVJvdGF0aW9u
ICYmIGlzPFZpZGVvRnJhbWU+KHNhbXBsZSkgJiYgZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxl
KS5pc1JlbW90ZVByb3h5KCkpIHsKLSAgICAgICAgUmVmIHZpZGVvRnJhbWUgeyBkb3duY2FzdDxW
aWRlb0ZyYW1lPihzYW1wbGUpIH07Ci0gICAgICAgIGF1dG8gc2l6ZSA9IHNhbXBsZS5wcmVzZW50
YXRpb25TaXplKCk7Ci0gICAgICAgIHNlbmRGcmFtZSh3ZWJydGM6OnRvV2ViUlRDVmlkZW9GcmFt
ZUJ1ZmZlcigmdmlkZW9GcmFtZS5sZWFrUmVmKCksCi0gICAgICAgICAgICBbXShhdXRvKiBwb2lu
dGVyKSB7IHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPnBpeGVsQnVm
ZmVyKCk7IH0sCi0gICAgICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7IHN0YXRpY19jYXN0PFZp
ZGVvRnJhbWUqPihwb2ludGVyKS0+ZGVyZWYoKTsgfSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludD4oc2l6ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCgpKSkpOwot
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFzaG91bGRBcHBseVJvdGF0aW9uICYmIGlzPFZpZGVv
RnJhbWU+KHNhbXBsZSkpIHsKKyAgICAgICAgaWYgKGRvd25jYXN0PFZpZGVvRnJhbWU+KHNhbXBs
ZSkuaXNSZW1vdGVQcm94eSgpKSB7CisgICAgICAgICAgICBSZWYgdmlkZW9GcmFtZSB7IGRvd25j
YXN0PFZpZGVvRnJhbWU+KHNhbXBsZSkgfTsKKyAgICAgICAgICAgIGF1dG8gc2l6ZSA9IHNhbXBs
ZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAgICAgICAgICBzZW5kRnJhbWUod2VicnRjOjp0b1dl
YlJUQ1ZpZGVvRnJhbWVCdWZmZXIoJnZpZGVvRnJhbWUubGVha1JlZigpLAorICAgICAgICAgICAg
ICAgIFtdKGF1dG8qIHBvaW50ZXIpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFZpZGVvRnJhbWUqPihw
b2ludGVyKS0+cGl4ZWxCdWZmZXIoKTsgfSwKKyAgICAgICAgICAgICAgICBbXShhdXRvKiBwb2lu
dGVyKSB7IHN0YXRpY19jYXN0PFZpZGVvRnJhbWUqPihwb2ludGVyKS0+ZGVyZWYoKTsgfSwKKyAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0
PGludD4oc2l6ZS5oZWlnaHQoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKS5pc0xpYldlYlJUQygpKSB7
CisgICAgICAgICAgICBzZW5kRnJhbWUoZG93bmNhc3Q8VmlkZW9GcmFtZUxpYldlYlJUQz4oc2Ft
cGxlKS5idWZmZXIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc2FtcGxlLnBpeGVsQnVmZmVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgK
aW5kZXggMTkyNjczOGY5ZTAyODE5YzdmNGZiOWRjOGFlNTM1OTkzYzA0ZTkwOS4uYjI3NjExZGUz
NDViMDQwNWRiZDhiYmI0ODBjM2IyNjMzYWZkOWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaApAQCAtNTcsNiAr
NTcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKIGNsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOworc3RydWN0IFNoYXJlZFZp
ZGVvRnJhbWU7CiBjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOwogCiBjbGFzcyBMaWJXZWJS
VENDb2RlY3NQcm94eSBmaW5hbCA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3Nh
Z2VSZWNlaXZlclJlZkNvdW50ZWQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzkxZmJmYmUxZThkZjE0ODhkNWFlMGE2MjA1ZjUyNTY1
MzgxNWExOC4uMjMyYjRmNmI3MTc0YTc0MTViZmY3Y2M3YjY5ZGZlMjJiNjkwZmJhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NDYs
NiArODQ2LDggQEAKIAkJNDEzMDc1QjAxREU4NUY1ODAwMzlFQzY5IC8qIFdlYlJUQ01vbml0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUEz
MURFODVFRTcwMDM5RUM2OSAvKiBXZWJSVENNb25pdG9yLmggKi87IH07CiAJCTQxMzA3NUIyMURF
ODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkg
LyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovOyB9OwogCQk0MTMwNzVCNDFERTg1RjU4MDAz
OUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQ
cm92aWRlci5oICovOyB9OworCQk0MTNDNTQxQTI3QzY3QzM5MDAyRkNEQTggLyogTGliV2ViUlRD
Q29kZWNzUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUUwQTdDODIzQjYzOTc5MDA1NjEwNjAgLyogTGliV2ViUlRDQ29kZWNzUHJveHkubW0g
Ki87IH07CisJCTQxM0M1NDI1MjdDQ0I3Q0UwMDJGQ0RBOCAvKiBTaGFyZWRWaWRlb0ZyYW1lLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREMwNEY5
MjdBODE2QkIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lLmNwcCAqLzsgfTsKIAkJNDE3Njkw
MTQyMkZERDQxQjAwQjE1NzZEIC8qIE5ldHdvcmtSVENQcm92aWRlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzY5MDEzMjJGREQ0MUIwMEIxNTc2
RCAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubW0gKi87IH07CiAJCTQxNzkxNUFGMjI1NkJCNzUwMEQ2
Rjk3RSAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTc5MTVBRDIyNTZCQjc0MDBENkY5N0UgLyogV2ViU29ja2V0Q2hh
bm5lbC5oICovOyB9OwogCQk0MTc5MTVCMTIyNTZDMEQ2MDBENkY5N0UgLyogV2ViU29ja2V0Q2hh
bm5lbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNzkxNUIwMjI1NkMwRDYwMEQ2Rjk3RSAvKiBXZWJTb2NrZXRDaGFubmVsTWFuYWdlci5o
ICovOyB9OwpAQCAtMTYwNjYsNiArMTYwNjgsOCBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTVDRTkxMjEwMjI5M0MyNzcwMDVCRUM3OCAvKiBB
dXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTNDNTQxQTI3QzY3
QzM5MDAyRkNEQTggLyogTGliV2ViUlRDQ29kZWNzUHJveHkubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk0MTNDNTQyNTI3Q0NCN0NFMDAyRkNEQTggLyogU2hhcmVkVmlkZW9GcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1QzlBOTExMTIyOEY2OUNDMDA1QzVCMTcgLyogWFBDU2VydmljZU1haW4u
bW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAppbmRleCA2MDE3MDM1ZTI1N2Y3ZDQ5
ZjY5YzBiNDg2MjliOWMxM2U1MGViMzk3Li4yYTQ1MjEwMmQxMTg1YjA0OGY5MTIxYWFjYzgzZTE1
MmQyYjAxZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBAIC0xMTksMTUgKzExOSw2IEBA
IENWUGl4ZWxCdWZmZXJSZWYgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwaXhlbEJ1ZmZlcigpIGNv
bnN0CiAgICAgICAgIG1fcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVCbGFja1BpeGVsQnVm
ZmVyKHN0YXRpY19jYXN0PHNpemVfdD4obV9zaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KG1fc2l6ZS5oZWlnaHQoKSkpOwogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyLmdldCgpOwog
fQotCi1SZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OmFzVmlkZW9GcmFtZUNWKCkKLXsKLSAgICBhdXRvIGJ1ZmZlciA9IHBpeGVsQnVmZmVyKCk7Ci0g
ICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBWaWRl
b0ZyYW1lQ1Y6OmNyZWF0ZShtX3ByZXNlbnRhdGlvblRpbWUsIG1faXNNaXJyb3JlZCwgbV9yb3Rh
dGlvbiwgUmV0YWluUHRyIHsgYnVmZmVyIH0pOwotfQotCiAjZW5kaWYKIAogVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKaW5kZXggZDRjNDY5NTE0
YmVlYmYxZjBlNmZmYzdhZDU0NGEzYzI0YzZkNDgzMy4uY2U0MDcxMGQ3MWUwNDJjY2IxNzc5YmNj
M2U0NWIzYmFiMmYzNDEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC04OCw3ICs4OCw2IEBA
IHB1YmxpYzoKICAgICBib29sIGlzUmVtb3RlUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlcigpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+IGFz
VmlkZW9GcmFtZUNWKCkgZmluYWw7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAK
aW5kZXggY2QyOWZhZTdiNWFmMGQ3ZDNjYjQ0MWU0ZTM4MjBmYzMwYWU2NzY5Mi4uOWE3ZWUyMTJi
ZDU0NzUzZTAyNTkzZmQyOTA5MmY1MjI3NzA5MmZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRWaWRl
b0ZyYW1lSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GcmFtZUxpYldlYlJUQy5oPgog
I2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oPgogI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgogCkBAIC0xMDIsNiArMTAzLDExIEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVk
VmlkZW9GcmFtZTo6QnVmZmVyPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZUJ1ZmZlcihN
ZWRpCiAgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oZnJhbWUpKQogICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihmcmFtZSkubmV3UmVhZFJlZmVy
ZW5jZSgpOwogCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBpZiAoaXM8VmlkZW9GcmFtZUxpYldl
YlJUQz4oZnJhbWUpKQorICAgICAgICByZXR1cm4gd3JpdGVCdWZmZXIoKmRvd25jYXN0PFZpZGVv
RnJhbWVMaWJXZWJSVEM+KGZyYW1lKS5idWZmZXIoKSwgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5l
d01lbW9yeUNhbGxiYWNrKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHdyaXRlQnVmZmVyKGZyYW1l
LnBpeGVsQnVmZmVyKCksIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBuZXdNZW1vcnlDYWxsYmFjayk7
CiB9CiAKQEAgLTEzMywxMSArMTM5LDE2IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFt
ZTo6QnVmZmVyPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZUJ1ZmZlcihjb25zCiAgICAg
aWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJh
bWUoZnJhbWUpKSkKICAgICAgICAgcmV0dXJuIHdyaXRlQnVmZmVyKHBpeGVsQnVmZmVyLmdldCgp
LCBuZXdTZW1hcGhvcmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spOwogCi0gICAgYXV0byBp
bmZvID0gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lKGZyYW1lKTsKKyAgICBy
ZXR1cm4gd3JpdGVCdWZmZXIoKmZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLCBuZXdTZW1hcGhv
cmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spOworfQorCitzdGQ6Om9wdGlvbmFsPFNoYXJl
ZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6d3JpdGVCdWZmZXIo
d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyJiBmcmFtZUJ1ZmZlciwgY29uc3QgRnVuY3Rpb248dm9p
ZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNr
KQoreworICAgIGF1dG8gaW5mbyA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpmcm9tVmlkZW9GcmFt
ZUJ1ZmZlcihmcmFtZUJ1ZmZlcik7CiAgICAgaWYgKCFwcmVwYXJlV3JpdGluZyhpbmZvLCBuZXdT
ZW1hcGhvcmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgaWYgKCFpbmZvLndyaXRlVmlkZW9GcmFtZShmcmFtZSwgc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KG1fc3RvcmFnZS0+ZGF0YSgpKSkpCisgICAgaWYgKCFpbmZvLndyaXRlVmlkZW9GcmFt
ZUJ1ZmZlcihmcmFtZUJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0
YSgpKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0Zy
YW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0Zy
YW1lLmgKaW5kZXggNWFiNDZlODA2NjM1NDE2ZTZmZDRhMGVjYzE5ZDQ1ZjEyMzAxZDc3OS4uM2Rl
YTY4MWEyNDJiNTk2M2ZmNjVlMzRkNDQwY2U5ZGQ2YzJlZTlkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaApAQCAt
NDUsNiArNDUsNyBAQCBjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzsKIAogbmFtZXNwYWNlIHdl
YnJ0YyB7CiBjbGFzcyBWaWRlb0ZyYW1lOworY2xhc3MgVmlkZW9GcmFtZUJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC03OCw3ICs3OSwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wg
d2FpdChjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+Jik7CiAgICAgYm9vbCBh
bGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlJik+Jik7CiAgICAgYm9vbCBwcmVwYXJlV3JpdGluZyhjb25zdCBXZWJD
b3JlOjpTaGFyZWRWaWRlb0ZyYW1lSW5mbyYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1h
cGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlJik+Jik7CisKICAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4g
d3JpdGVCdWZmZXIoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYpOworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgc3RkOjpvcHRpb25hbDxT
aGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IHdyaXRlQnVmZmVyKHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1
ZmZlciYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisjZW5kaWYKIAog
ICAgIFVuaXF1ZVJlZjxJUEM6OlNlbWFwaG9yZT4gbV9zZW1hcGhvcmU7CiAgICAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gbV9zdG9yYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453720</attachid>
            <date>2022-03-03 04:39:46 -0800</date>
            <delta_ts>2022-03-09 09:49:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236131-20220303133942.patch</filename>
            <type>text/plain</type>
            <size>44303</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBkYTNlNmI5OGUzZGU2NjY2YTU2ZjMxZWEzYjg3NzNkZDhhNDdiNTZjLi5lOTE3
MWU0YmI1MGY5MjgyNTFmOGIzMjA2NGEyN2Q2ZDgyNTU2MGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMy0wMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMg
dmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlw
ZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxMzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4ODA1NTgwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSByb3V0aW5lcyB0byB0YWtl
IFZpZGVvRnJhbWVCdWZmZXIgaW5zdGVhZCBvZiBWaWRlb0ZyYW1lLgorICAgICAgICBGaXggYnVn
cyBpbiBoYW5kbGluZyBvZiBZVVYgY29udmVyc2lvbiBsaWJ3ZWJydGMgcm91dGluZXMuCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cDoKKyAgICAgICAgKiBDb25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9u
cy9saWJ3ZWJydGMubWFjLmV4cDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLmg6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFV0aWxpdGllcy5tbToKKwogMjAyMi0wMi0xOCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTAxNDkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNTYzNDY5YTkyN2NiMGUwODdkNzVjY2VmMWRjNTVlNTM3OWViNWU1NS4uMDZiNzg0
MDY0OGIzY2EzYzNiZGZjYzFkM2FhMThjYzlhYWEyNjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMyIEBACisyMDIyLTAzLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyB0byBwYXNzIHdlYnJ0YyB2aWRlbyBmcmFtZSBidWZmZXJzIHRocm91Z2gg
UmVhbHRpbWVNZWRpYVNvdXJjZSBiYXNlZCBwaXBlbGluZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEzMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODg4MDU1ODA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIFZpZGVvRnJhbWVMaWJXZWJSVEMgYXMgYSB3cmFwcGVyIHRvIGxpYndl
YnJ0YyB2aWRlbyBmcmFtZSBidWZmZXIuCisgICAgICAgIEluIGNhc2Ugd2Ugc2VuZCBWaWRlb0Zy
YW1lTGliV2ViUlRDIHRocm91Z2ggUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EsIGRp
cmVjdGx5IHNlbmQgdGhlIHZpZGVvIGZyYW1lIGJ1ZmZlci4KKyAgICAgICAgV2hlbiByZWNlaXZp
bmcgbGlid2VicnRjIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgaW4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EsIG1ha2UgdXNlIG9mIFZpZGVvRnJhbWVMaWJXZWJSVEMgdG8gZGVsYXkgY29u
dmVyc2lvbiBvZiB0aGUgdmlkZW8gZnJhbWUgYnVmZmVyIGluIGEgQ1ZQaXhlbEJ1ZmZlclJlZi4K
KyAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhlIGNvbnZlcnNpb24gaXMgdW5uZWVkZWQgYXMgdGhl
IHZpZGVvIGZyYW1lIGJ1ZmZlciB3aWxsIGJlIHVzZWQgZm9yIHJlbmRlcmluZyBhbmQgd2lsbCBi
ZSBjb3BpZWQgdG8gc2hhcmVkIG1lbW9yeSB0aHJvdWdoIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIu
CisgICAgICAgIEZpeCBidWdzIGluIGhhbmRsaW5nIG9mIFlVViBjb252ZXJzaW9uIGxpYndlYnJ0
YyByb3V0aW5lcy4KKyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gaGF2ZSBhIGRlZmF1bHQg
YXNWaWRlb0ZyYW1lQ1YgbWV0aG9kIGltcGxlbWVudGF0aW4gaW4gVmlkZW9GcmFtZS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJh
bWVMaWJXZWJSVEMuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5jcHA6CisKIDIwMjItMDMtMDMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIG1hY09TIFNhZmFyaSAxNS4yIEF1ZGlvIEVjaG8gSXNzdWUgYWZ0ZXIg
Y2FtZXJhIHBhdXNlL3VucGF1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmM4Zjg4YmZiZWM4NGFkYzIyOWIxZDY0
OGE3NWJkMjYwZmExNDFlYS4uZjQ3Y2NhNmZkNjU4OWNhMmQyNjNjZjE2ODgxZTRjYTYyMTBkODFj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wMy0wMyAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMgdmlkZW8g
ZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlwZWxpbmVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMzEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4ODA1NTgwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcHRpbWl6YXRpb24gc3VwcG9ydCBmb3Ig
VmlkZW9GcmFtZUxpYldlYlJUQyB3cml0aW5nIGludG8gc2hhcmVkIG1lbW9yeS4KKyAgICAgICAg
VGhpcyByZW1vdmVzIHRoZSBuZWVkIHRvIGNvbnZlcnQgdGhlIHdlYnJ0YyB2aWRlbyBmcmFtZSBp
bnRvIGEgQ1ZQaXhlbEJ1ZmZlciwganVzdCB0byBzZW5kIGl0IHRvIEdQVVByb2Nlc3MgZm9yIHJl
bmRlcmluZy4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1By
b3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaDoKKwogMjAyMi0w
My0wMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9k
dWNlIHJvdXRpbmVzIHRvIGV4Y2hhbmdlIFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlciBkaXJlY3Rs
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGJiYmMwNTgyN2NmNzRhOTNhMDAyZTUwNzQ3
ODIxMTBmY2Y1Y2RkZDMuLjE5ZTU2NjliYmE5ZDNlNzBmMzk1NTRmZWUxMmNiODBmMzRhMmMwZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmln
dXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTMzNCw0ICszMzQsNSBAQCBfX1pONndlYnJ0
YzMyd2VicnRjX3NlcXVlbmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVlbmNlQ2hlY2tlckltcGxD
MkV2CiBfX1pOSzNydGMxNFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0aWZpY2F0ZUV2CiBfX1pU
Vk42d2VicnRjMzBXcmFwcGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRFCiBfX1pONndlYnJ0YzIw
cGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFCi1fX1pONndlYnJ0YzE0Y29w
eVZpZGVvRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUGgKK19fWk42d2VicnRjMjBjb3B5VmlkZW9G
cmFtZUJ1ZmZlckVSTlNfMTZWaWRlb0ZyYW1lQnVmZmVyRVBoCitfX1pONndlYnJ0YzMyY3JlYXRl
UGl4ZWxCdWZmZXJGcm9tRnJhbWVCdWZmZXJFUk5TXzE2VmlkZW9GcmFtZUJ1ZmZlckVSS05TdDNf
XzE4ZnVuY3Rpb25JRlAxMF9fQ1ZCdWZmZXJtbU5TXzEwQnVmZmVyVHlwZUVFRUUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMu
aU9Tc2ltLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMuaU9Tc2ltLmV4cAppbmRleCBiYmJjMDU4MjdjZjc0YTkzYTAwMmU1MDc0NzgyMTEw
ZmNmNWNkZGQzLi4xOWU1NjY5YmJhOWQzZTcwZjM5NTU0ZmVlMTJjYjgwZjM0YTJjMGZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2Vi
cnRjLmlPU3NpbS5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3Vy
YXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCkBAIC0zMzQsNCArMzM0LDUgQEAgX19aTjZ3ZWJy
dGMzMndlYnJ0Y19zZXF1ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1ZW5jZUNoZWNrZXJJbXBs
QzJFdgogX19aTkszcnRjMTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2VydGlmaWNhdGVFdgogX19a
VFZONndlYnJ0YzMwV3JhcHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0RQogX19aTjZ3ZWJydGMy
MHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRQotX19aTjZ3ZWJydGMxNGNv
cHlWaWRlb0ZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVBoCitfX1pONndlYnJ0YzIwY29weVZpZGVv
RnJhbWVCdWZmZXJFUk5TXzE2VmlkZW9GcmFtZUJ1ZmZlckVQaAorX19aTjZ3ZWJydGMzMmNyZWF0
ZVBpeGVsQnVmZmVyRnJvbUZyYW1lQnVmZmVyRVJOU18xNlZpZGVvRnJhbWVCdWZmZXJFUktOU3Qz
X18xOGZ1bmN0aW9uSUZQMTBfX0NWQnVmZmVybW1OU18xMEJ1ZmZlclR5cGVFRUVFCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRj
Lm1hYy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGli
d2VicnRjLm1hYy5leHAKaW5kZXggMmE1N2RjYTVhZjM4ZWRmM2UzYTBlOWE0ZWZlZjY0YzhhNjNl
OWU2Yy4uZmEyODBhNGE0ZmQ4Njg1MWNjYjMxZjNjOWRlNzZiOGVhODg5NThkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5t
YWMuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMubWFjLmV4cApAQCAtMzM0LDQgKzMzNCw1IEBAIF9fWk42d2VicnRjMzJ3ZWJydGNf
c2VxdWVuY2VfY2hlY2tlcl9pbnRlcm5hbDE5U2VxdWVuY2VDaGVja2VySW1wbEMyRXYKIF9fWk5L
M3J0YzE0UlRDQ2VydGlmaWNhdGUxN0dldFNTTENlcnRpZmljYXRlRXYKIF9fWlRWTjZ3ZWJydGMz
MFdyYXBwaW5nQXN5bmNEbnNSZXNvbHZlclJlc3VsdEUKIF9fWk42d2VicnRjMjBwaXhlbEJ1ZmZl
ckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUUKLV9fWk42d2VicnRjMTRjb3B5VmlkZW9GcmFt
ZUVSS05TXzEwVmlkZW9GcmFtZUVQaAorX19aTjZ3ZWJydGMyMGNvcHlWaWRlb0ZyYW1lQnVmZmVy
RVJOU18xNlZpZGVvRnJhbWVCdWZmZXJFUGgKK19fWk42d2VicnRjMzJjcmVhdGVQaXhlbEJ1ZmZl
ckZyb21GcmFtZUJ1ZmZlckVSTlNfMTZWaWRlb0ZyYW1lQnVmZmVyRVJLTlN0M19fMThmdW5jdGlv
bklGUDEwX19DVkJ1ZmZlcm1tTlNfMTBCdWZmZXJUeXBlRUVFRQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGls
aXRpZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKaW5kZXggMmVmOGExZTkxNTM4NjExZWZlNWFmNzM0Zjgw
Y2Q3YTliYTRmNTNjNi4uYTc3OWNhZDFiZDM2MDAyZDc5OTMxNmExNDgwNWQzYTMzZDRjMThiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCkBAIC00OCw5ICs0
OCwxMCBAQCBib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKTsKIAogZW51bSBjbGFz
cyBCdWZmZXJUeXBlIHsgSTQyMCwgSTAxMCB9OwogQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhl
bEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxD
VlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVs
QnVmZmVyKSBDRl9SRVRVUk5TX1JFVEFJTkVEOworQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhl
bEJ1ZmZlckZyb21GcmFtZUJ1ZmZlcihWaWRlb0ZyYW1lQnVmZmVyJiwgY29uc3Qgc3RkOjpmdW5j
dGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0
ZVBpeGVsQnVmZmVyKSBDRl9SRVRVUk5TX1JFVEFJTkVEOwogQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhl
bEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsK
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVy
VG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKLWJvb2wgY29weVZpZGVvRnJhbWUoY29uc3QgVmlk
ZW9GcmFtZSYsIHVpbnQ4X3QqKTsKK2Jvb2wgY29weVZpZGVvRnJhbWVCdWZmZXIoVmlkZW9GcmFt
ZUJ1ZmZlciYsIHVpbnQ4X3QqKTsKIAogdHlwZWRlZiBDVlBpeGVsQnVmZmVyUmVmICgqR2V0QnVm
ZmVyQ2FsbGJhY2spKHZvaWQqKTsKIHR5cGVkZWYgdm9pZCAoKlJlbGVhc2VCdWZmZXJDYWxsYmFj
aykodm9pZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQpp
bmRleCA2MmY2MjRjNDk3NmZhNjE4ZDgwY2QxNDBhM2ZkOTFkNmJhOWU5MDlmLi42NmY4MDE5ZWE1
OTZjYWNjNDcyYTE1YjE2ZjBhM2IzNWRhY2FlOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5t
bQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdFV0aWxpdGllcy5tbQpAQCAtMTYwLDI4ICsxNjAsMzIgQEAgc3RhdGljIGJvb2wg
Q29weVZpZGVvRnJhbWVUb1BpeGVsQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6STAxMEJ1ZmZlckludGVy
ZmFjZSogZnJhbWUKIAogQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFt
ZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVm
ZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKQog
ewotICAgIGF1dG8gYnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7Ci0gICAgaWYg
KGJ1ZmZlci0+dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKLSAg
ICAgICAgYXV0byB0eXBlID0gYnVmZmVyLT50eXBlKCk7CisgICAgcmV0dXJuIGNyZWF0ZVBpeGVs
QnVmZmVyRnJvbUZyYW1lQnVmZmVyKCpmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKSwgY3JlYXRl
UGl4ZWxCdWZmZXIpOworfQorCitDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJv
bUZyYW1lQnVmZmVyKFZpZGVvRnJhbWVCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBp
eGVsQnVmZmVyKQoreworICAgIGlmIChidWZmZXIudHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6
OlR5cGU6OmtOYXRpdmUpIHsKKyAgICAgICAgYXV0byB0eXBlID0gYnVmZmVyLnR5cGUoKTsKICAg
ICAgICAgaWYgKHR5cGUgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgJiYgdHlwZSAh
PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTAxMCkgewogICAgICAgICAgICAgUlRDX0xPRyhX
QVJOSU5HKSA8PCAiVmlkZW8gZnJhbWUgYnVmZmVyIHR5cGUgaXMgbm90IGV4cGVjdGVkLiI7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBjcmVhdGVQaXhlbEJ1ZmZlcihidWZmZXItPndpZHRoKCksIGJ1ZmZlci0+aGVp
Z2h0KCksIHR5cGUgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjAgPyBCdWZmZXJUeXBl
OjpJNDIwIDogQnVmZmVyVHlwZTo6STAxMCk7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBj
cmVhdGVQaXhlbEJ1ZmZlcihidWZmZXIud2lkdGgoKSwgYnVmZmVyLmhlaWdodCgpLCB0eXBlID09
IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwID8gQnVmZmVyVHlwZTo6STQyMCA6IEJ1ZmZl
clR5cGU6OkkwMTApOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBS
VENfTE9HKFdBUk5JTkcpIDw8ICJQaXhlbCBidWZmZXIgY3JlYXRpb24gZmFpbGVkLiI7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0eXBlID09
IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKQotICAgICAgICAgICAgQ29weVZpZGVvRnJh
bWVUb1BpeGVsQnVmZmVyKGJ1ZmZlci0+R2V0STQyMCgpLCBwaXhlbEJ1ZmZlcik7CisgICAgICAg
ICAgICBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxCdWZmZXIoYnVmZmVyLkdldEk0MjAoKSwgcGl4ZWxC
dWZmZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBDb3B5VmlkZW9GcmFtZVRvUGl4ZWxC
dWZmZXIoYnVmZmVyLT5HZXRJMDEwKCksIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgICAgIENvcHlW
aWRlb0ZyYW1lVG9QaXhlbEJ1ZmZlcihidWZmZXIuR2V0STAxMCgpLCBwaXhlbEJ1ZmZlcik7CiAg
ICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICAgICB9CiAKLSAgICBhdXRvICpmcmFtZUJ1ZmZl
ciA9IHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1ZmZlcio+KGJ1ZmZlci5nZXQoKSktPndyYXBwZWRf
ZnJhbWVfYnVmZmVyKCk7CisgICAgYXV0byAqZnJhbWVCdWZmZXIgPSBzdGF0aWNfY2FzdDxPYmpD
RnJhbWVCdWZmZXIqPigmYnVmZmVyKS0+d3JhcHBlZF9mcmFtZV9idWZmZXIoKTsKICAgICBpZiAo
IVtmcmFtZUJ1ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMDMsMTggKzIwNywxNyBAQCBDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lKQogICAg
IHJldHVybiBDVlBpeGVsQnVmZmVyUmV0YWluKHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyKTsK
IH0KIAotYm9vbCBjb3B5VmlkZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgdWludDhf
dCogZGF0YSkKK2Jvb2wgY29weVZpZGVvRnJhbWVCdWZmZXIoVmlkZW9GcmFtZUJ1ZmZlciYgYnVm
ZmVyLCB1aW50OF90KiBkYXRhKQogewotICAgIGF1dG8gYnVmZmVyID0gZnJhbWUudmlkZW9fZnJh
bWVfYnVmZmVyKCk7Ci0gICAgaWYgKGJ1ZmZlci0+dHlwZSgpID09IFZpZGVvRnJhbWVCdWZmZXI6
OlR5cGU6OmtOYXRpdmUpCisgICAgaWYgKGJ1ZmZlci50eXBlKCkgPT0gVmlkZW9GcmFtZUJ1ZmZl
cjo6VHlwZTo6a05hdGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB0eXBl
ID0gYnVmZmVyLT50eXBlKCk7CisgICAgYXV0byB0eXBlID0gYnVmZmVyLnR5cGUoKTsKICAgICBp
ZiAodHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCkgewotICAgICAgICBhdXRv
KiBpNDIwRnJhbWUgPSBidWZmZXItPkdldEk0MjAoKTsKKyAgICAgICAgYXV0byogaTQyMEZyYW1l
ID0gYnVmZmVyLkdldEk0MjAoKTsKICAgICAgICAgYXV0byogZGF0YVkgPSBkYXRhOwogICAgICAg
ICBhdXRvIHN0cmlkZVkgPSBpNDIwRnJhbWUtPndpZHRoKCk7Ci0gICAgICAgIGF1dG8gc3RyaWRl
VVYgPSBpNDIwRnJhbWUtPndpZHRoKCkgLyAyOworICAgICAgICBhdXRvIHN0cmlkZVVWID0gaTQy
MEZyYW1lLT53aWR0aCgpOwogICAgICAgICBhdXRvKiBkYXRhVVYgPSBkYXRhICsgKGk0MjBGcmFt
ZS0+d2lkdGgoKSAqIGk0MjBGcmFtZS0+aGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gIWxpYnl1
djo6STQyMFRvTlYxMihpNDIwRnJhbWUtPkRhdGFZKCksIGk0MjBGcmFtZS0+U3RyaWRlWSgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpNDIwRnJhbWUtPkRhdGFVKCksIGk0
MjBGcmFtZS0+U3RyaWRlVSgpLApAQCAtMjIzLDEwICsyMjYsMTAgQEAgYm9vbCBjb3B5VmlkZW9G
cmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgdWludDhfdCogZGF0YSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaTQyMEZyYW1lLT53aWR0aCgpLCBpNDIwRnJhbWUtPmhl
aWdodCgpKTsKICAgICB9CiAgICAgaWYgKHR5cGUgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6
a0kwMTApIHsKLSAgICAgICAgYXV0byogaTAxMEZyYW1lID0gYnVmZmVyLT5HZXRJMDEwKCk7Cisg
ICAgICAgIGF1dG8qIGkwMTBGcmFtZSA9IGJ1ZmZlci5HZXRJMDEwKCk7CiAgICAgICAgIGF1dG8q
IGRhdGFZID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGRhdGEpOwogICAgICAgICBhdXRv
IHN0cmlkZVkgPSBpMDEwRnJhbWUtPndpZHRoKCk7Ci0gICAgICAgIGF1dG8gc3RyaWRlVVYgPSBp
MDEwRnJhbWUtPndpZHRoKCkgLyAyOworICAgICAgICBhdXRvIHN0cmlkZVVWID0gaTAxMEZyYW1l
LT53aWR0aCgpOwogICAgICAgICBhdXRvKiBkYXRhVVYgPSBkYXRhWSArIChpMDEwRnJhbWUtPndp
ZHRoKCkgKiBpMDEwRnJhbWUtPmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuICFsaWJ5dXY6Okkw
MTBUb1AwMTAoaTAxMEZyYW1lLT5EYXRhWSgpLCBpMDEwRnJhbWUtPlN0cmlkZVkoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTAxMEZyYW1lLT5EYXRhVSgpLCBpMDEwRnJh
bWUtPlN0cmlkZVUoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYTFkNmI2ZmM2M2FkMjkxZjA3MjhkNTE4
OTdlOGI5YzE3OTdjYjMwMS4uMzU3YTZjYjQ1MWU3YTVjYzhiMWVlYzA3N2Y0ZTc1MjEyZDE3NDRj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIyMDEsNiArMjIwMSw3IEBAIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcAogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2suY3BwCiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAK
IHBsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeU1vY2suY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZWE1NzY1ZWY2OGQzMzgxZDg3MDY0NWZmM2U3ZmI3NWZiY2Q0NGRlMy4uYjM0MmNkZmUyMjI1
MTFkYmMxNjY2YTVlNTg4YjZlYWY2NWNiMGM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIyNyw2ICsxMjI3LDcgQEAKIAkJ
NDFFNkQ3MUIyNkVBMUE0NjAwQjc2NUQ2IC8qIFJUQ0Vycm9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI3QzA0QjI2RTY5MTcxMDBEMzZDMDcgLyog
UlRDRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MUU5RENFNzIzMTk3NEJGMDBGMzU5NDkgLyogQmxvYkxvYWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFOURDRTQyMzE5NzNGRTAwRjM1
OTQ5IC8qIEJsb2JMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MUU5RENFOTIzMTlDQTc2MDBGMzU5NDkgLyogTmV0d29ya1NlbmRRdWV1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFOURD
RTgyMzE5Q0E3NTAwRjM1OTQ5IC8qIE5ldHdvcmtTZW5kUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUVCNzk3RTI3QzNFNDVFMDAxQzNF
M0UgLyogVmlkZW9GcmFtZUxpYldlYlJUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFFQjc5N0MyN0MzRTQ1RDAwMUMzRTNFIC8qIFZpZGVvRnJhbWVM
aWJXZWJSVEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMDYy
MTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCAqLzsgfTsK
IAkJNDFGMUQyMUYwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGMUQyMUQwRUYz
NUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRkFCRDJEMUY0REZFNEEwMDZBNkM5
NyAvKiBET01DYWNoZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGQUJEMkIxRjRERkU0MjAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg5OTYs
NiArODk5Nyw4IEBACiAJCTQxRTlEQ0U2MjMxOTc0MjMwMEYzNTk0OSAvKiBFbmRpbmdUeXBlLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbmRpbmdUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFFOURDRTgyMzE5Q0E3NTAwRjM1OTQ5IC8qIE5ldHdvcmtTZW5kUXVl
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1NlbmRRdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU5RENFQTIzMTlDQUU4MDBGMzU5NDkg
LyogTmV0d29ya1NlbmRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXR3b3JrU2VuZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFFQjc5N0IyN0MzRTQ1RDAwMUMzRTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA7
IHBhdGggPSBsaWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxRUI3OTdDMjdDM0U0NUQwMDFDM0UzRSAvKiBWaWRlb0ZyYW1lTGli
V2ViUlRDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFZpZGVvRnJhbWVMaWJX
ZWJSVEMuaDsgcGF0aCA9IGxpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MjEyMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFGMDYyMTMwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA5NjM0MjRGOTBE
RUEwMDA5RkI5MyAvKiBUZXh0RGVjb2RlclN0cmVhbURlY29kZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHREZWNv
ZGVyU3RyZWFtRGVjb2Rlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTA4
Nyw2ICsyMTA5MCw4IEBACiAJCQkJNDFCMjhCMzgxRjg2MEJEMTAwRkI1MkFDIC8qIExpYldlYlJU
Q1Byb3ZpZGVyQ29jb2EuY3BwICovLAogCQkJCTQxQjI4QjM2MUY4NjBCRDAwMEZCNTJBQyAvKiBM
aWJXZWJSVENQcm92aWRlckNvY29hLmggKi8sCiAJCQkJNDEwRTQ0NUYyMzQzNzNBRDAwMDE3M0Q0
IC8qIExpYldlYlJUQ1NvY2tldElkZW50aWZpZXIuaCAqLywKKwkJCQk0MUVCNzk3QjI3QzNFNDVE
MDAxQzNFM0UgLyogVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAgKi8sCisJCQkJNDFFQjc5N0MyN0Mz
RTQ1RDAwMUMzRTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJSVEMuaCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gbGlid2VicnRjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM3OTMyLDYgKzM3
OTM3LDcgQEAKIAkJCQlDRDNFRUYzQjI1Nzk5RkExMDA2NTYzQkIgLyogVmlkZW9Db25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjVBM0RBRjI3QUJGOEM1MDA2QzZGOTcgLyogVmlk
ZW9GcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0JFMzdGODcyN0JCQjcwODAwN0E2Q0QzIC8q
IFZpZGVvRnJhbWVDVi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFFQjc5N0UyN0MzRTQ1RTAwMUMz
RTNFIC8qIFZpZGVvRnJhbWVMaWJXZWJSVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2
MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxREVFRkIwMjcxOUIyOTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9G
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9WaWRlb0ZyYW1lLmNwcAppbmRleCBhNTQ5YzFhNWM0OGViMjNkNjRiYTNmZDM1Mzg0MDhi
ZDE1NTIzNGYwLi5jMDI0NzJmMTFkMzIwOTljMzgwMGVlNDY4MTA2ZmExYjBjMmM1MzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtMjYsNiArMjYsMTAgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ1YuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KFZJREVPKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzEsNiArMTM1LDE3IEBAIHZvaWQg
VmlkZW9GcmFtZTo6ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0CiB7CiB9CiAKKyNpZiBQTEFURk9S
TShDT0NPQSkKK1JlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWU6OmFzVmlkZW9GcmFtZUNW
KCkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IHBpeGVsQnVmZmVyKCk7CisgICAgaWYgKCFidWZmZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKHByZXNlbnRhdGlvblRpbWUoKSwgdmlkZW9NaXJyb3JlZCgpLCB2aWRlb1JvdGF0aW9uKCks
IGJ1ZmZlcik7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuaAppbmRleCA2NDExZGY3ZDY0MGNjZGVkMWQxZTNlMTFmZDFhNDI4YTI5MWIzMWVk
Li41OTA5YzM0OGY2YmVlZmFjZTZlNWY2OWEwMzE1MDRhMDRhMmQ5NjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC01Miw5ICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxhdGZvcm1TYW1wbGVUeXBlKCkgY29u
c3QgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVQcm94eSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTGliV2ViUlRDKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICNpZiBVU0UoQVZGT1VOREFUSU9OKQogICAgIHZpcnR1YWwgYm9vbCBpc0NW
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpW
aWRlb0ZyYW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCkgPSAwOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgUmVmUHRyPFZpZGVvRnJhbWVDVj4gYXNWaWRlb0ZyYW1lQ1YoKTsKICNlbmRpZgogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRWaWRlb0ZyYW1lSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVk
VmlkZW9GcmFtZUluZm8uaAppbmRleCBiZTNmZGI3OTc4MDNhMTQwZWIwMmM0NjlkMzM2MjRiNDhi
NjI3NTAzLi40Nzg4NDViZGJhZjI5OTJhZDVhYzJmNGU3ODZlYzA5MTRhMWZhNzA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZv
LmgKQEAgLTM0LDcgKzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhlbEJ1
ZmZlclJlZjsKIHR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4ZWxCdWZm
ZXJQb29sUmVmOwogCiBuYW1lc3BhY2Ugd2VicnRjIHsKLWNsYXNzIFZpZGVvRnJhbWU7CitjbGFz
cyBWaWRlb0ZyYW1lQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw4ICs1
MSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdyaXRlUGl4ZWxCdWZmZXIo
Q1ZQaXhlbEJ1ZmZlclJlZiwgdWludDhfdCogZGF0YSk7CiAKICNpZiBVU0UoTElCV0VCUlRDKQot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTaGFyZWRWaWRlb0ZyYW1lSW5mbyBmcm9tVmlkZW9G
cmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHdyaXRlVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCB1aW50OF90KiBkYXRh
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2hhcmVkVmlkZW9GcmFtZUluZm8gZnJvbVZp
ZGVvRnJhbWVCdWZmZXIoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCB3cml0ZVZpZGVvRnJhbWVCdWZmZXIod2VicnRjOjpWaWRlb0ZyYW1l
QnVmZmVyJiwgdWludDhfdCogZGF0YSk7CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIHNp
emVfdCBzdG9yYWdlU2l6ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbQppbmRleCBjZWFmYmZkNzFiYmM4ZDU4
ZGEzYjUxNDMxMjcwNmYyNTBlY2FkMmI1Li4wMTI2ZGJiYTE4NDVlNTIzNWI1ODMxMjBmMGYyMTQ0
YTdiMzJjNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRWaWRlb0ZyYW1lSW5mby5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
aGFyZWRWaWRlb0ZyYW1lSW5mby5tbQpAQCAtNzIsNiArNzIsNyBAQCBzaXplX3QgU2hhcmVkVmlk
ZW9GcmFtZUluZm86OnN0b3JhZ2VTaXplKCkgY29uc3QKIHZvaWQgU2hhcmVkVmlkZW9GcmFtZUlu
Zm86OmVuY29kZSh1aW50OF90KiBkZXN0aW5hdGlvbikKIHsKICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpFbmNvZGVyIGVuY29kZXI7CisKICAgICBlbmNvZGVyIDw8ICh1aW50MzJfdCltX2J1ZmZlclR5
cGU7CiAgICAgZW5jb2RlciA8PCBtX3dpZHRoOwogICAgIGVuY29kZXIgPDwgbV9oZWlnaHQ7CkBA
IC0yMDksMzEgKzIxMCwzMSBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IFNoYXJl
ZFZpZGVvRnJhbWVJbmZvOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyUG9vbAogfQogCiAjaWYgVVNF
KExJQldFQlJUQykKLVNoYXJlZFZpZGVvRnJhbWVJbmZvIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpm
cm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQorU2hhcmVkVmlk
ZW9GcmFtZUluZm8gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lQnVmZmVyKGNv
bnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYgZnJhbWUpCiB7Ci0gICAgYXV0byBidWZmZXIg
PSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKLSAgICBpZiAoYnVmZmVyLT50eXBlKCkgPT0g
d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAgIGlmIChmcmFtZS50
eXBlKCkgPT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQogICAgICAg
ICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8geyB9OwogCi0gICAgYXV0byB0eXBlID0gYnVm
ZmVyLT50eXBlKCk7Ci0KKyAgICBhdXRvIHR5cGUgPSBmcmFtZS50eXBlKCk7CiAgICAgaWYgKHR5
cGUgPT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCkKICAgICAgICAgcmV0
dXJuIFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhC
aVBsYW5hckZ1bGxSYW5nZSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFt
ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVp
Z2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgLyAyIH07CisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgLyAyLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpIC8gMiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGZyYW1lLndpZHRoKCkpIH07CiAKICAgICBpZiAodHlwZSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVC
dWZmZXI6OlR5cGU6OmtJMDEwKQogICAgICAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8g
eyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZSwKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndp
ZHRoKCkgKiAyKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0
aCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpIH07CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oZnJhbWUud2lkdGgoKSkgLyAyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVp
Z2h0KCkpIC8gMiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpICogMiB9Owog
CiAgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsgfTsKIH0KIAotYm9vbCBTaGFyZWRW
aWRlb0ZyYW1lSW5mbzo6d3JpdGVWaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYg
ZnJhbWUsIHVpbnQ4X3QqIGRhdGEpCitib29sIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjp3cml0ZVZp
ZGVvRnJhbWVCdWZmZXIod2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyJiBmcmFtZUJ1ZmZlciwgdWlu
dDhfdCogZGF0YSkKIHsKICAgICBBU1NFUlQobV9idWZmZXJUeXBlID09IGtDVlBpeGVsRm9ybWF0
VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UgfHwgbV9idWZmZXJUeXBlID09IGtDVlBp
eGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlKTsKLSAgICByZXR1cm4g
d2VicnRjOjpjb3B5VmlkZW9GcmFtZShmcmFtZSwgZGF0YSk7CisgICAgZW5jb2RlKGRhdGEpOwor
ICAgIGRhdGEgKz0gc2l6ZW9mKFNoYXJlZFZpZGVvRnJhbWVJbmZvKTsKKyAgICByZXR1cm4gd2Vi
cnRjOjpjb3B5VmlkZW9GcmFtZUJ1ZmZlcihmcmFtZUJ1ZmZlciwgZGF0YSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVm
ODcwMDIwYzliOTYyNTU3NzI5ZGY3YzFlNGM1ODZlNWZhMzdmNzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFt
ZUxpYldlYlJUQy5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lTGliV2ViUlRDLmgiCisKKyNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oPgorI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVmPFZpZGVvRnJhbWVMaWJXZWJSVEM+IFZpZGVvRnJhbWVMaWJXZWJSVEM6
OmNyZWF0ZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1l
QnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNr
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnJhbWVMaWJXZWJSVEMocHJlc2Vu
dGF0aW9uVGltZSwgaXNNaXJyb3JlZCwgcm90YXRpb24sIFdURk1vdmUoYnVmZmVyKSwgV1RGTW92
ZShjb252ZXJzaW9uQ2FsbGJhY2spKSk7Cit9CisKK1ZpZGVvRnJhbWVMaWJXZWJSVEM6OlZpZGVv
RnJhbWVMaWJXZWJSVEMoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3Jl
ZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZlcnNpb25DYWxsYmFjayYmIGNvbnZlcnNpb25D
YWxsYmFjaykKKyAgICA6IFZpZGVvRnJhbWUocHJlc2VudGF0aW9uVGltZSwgaXNNaXJyb3JlZCwg
cm90YXRpb24pCisgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCisgICAgLCBtX3NpemUo
bV9idWZmZXItPndpZHRoKCksICBtX2J1ZmZlci0+aGVpZ2h0KCkpCisgICAgLCBtX2NvbnZlcnNp
b25DYWxsYmFjayhXVEZNb3ZlKGNvbnZlcnNpb25DYWxsYmFjaykpCit7CisgICAgc3dpdGNoICht
X2J1ZmZlci0+dHlwZSgpKSB7CisgICAgY2FzZSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5
cGU6OmtJNDIwOgorICAgICAgICBtX3ZpZGVvUGl4ZWxGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5
cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0kwMTA6CisgICAgICAgIG1fdmlkZW9Q
aXhlbEZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJh
bmdlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9Cit9CisKK0NWUGl4ZWxCdWZmZXJSZWYgVmlkZW9GcmFtZUxpYldlYlJU
Qzo6cGl4ZWxCdWZmZXIoKSBjb25zdAoreworICAgIExvY2tlciBsb2NrZXIgeyBtX3BpeGVsQnVm
ZmVyTG9jayB9OworICAgIGlmICghbV9waXhlbEJ1ZmZlciAmJiBtX2NvbnZlcnNpb25DYWxsYmFj
aykKKyAgICAgICAgbV9waXhlbEJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb252ZXJzaW9uQ2Fs
bGJhY2ssIHsgfSkoKm1fYnVmZmVyKTsKKyAgICByZXR1cm4gbV9waXhlbEJ1ZmZlci5nZXQoKTsK
K30KKworfQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1Zp
ZGVvRnJhbWVMaWJXZWJSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E2NjM5MDdhNDZi
OGY3OTNkNzUwODhkODhiYzQ5NjU5YzM2MmU0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRD
LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExB
VEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lLmgi
CisKK0FMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0JFR0lOCisjaW5jbHVkZSA8d2VicnRjL2FwaS92
aWRlby92aWRlb19mcmFtZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0
aWxpdGllcy5oPgorQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECisKK3VzaW5nIENWUGl4ZWxC
dWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBWaWRlb0ZyYW1lTGliV2ViUlRDIGZpbmFsIDogcHVibGljIFZpZGVvRnJhbWUgewor
cHVibGljOgorICAgIHVzaW5nIENvbnZlcnNpb25DYWxsYmFjayA9IEZ1bmN0aW9uPFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPih3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImKT47CisgICAgc3Rh
dGljIFJlZjxWaWRlb0ZyYW1lTGliV2ViUlRDPiBjcmVhdGUoTWVkaWFUaW1lLCBib29sIGlzTWly
cm9yZWQsIFZpZGVvUm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXI+JiYsIENvbnZlcnNpb25DYWxsYmFjayYmKTsKKworICAgIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVy
OyB9CisKK3ByaXZhdGU6CisgICAgVmlkZW9GcmFtZUxpYldlYlJUQyhNZWRpYVRpbWUsIGJvb2wg
aXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlcj4mJiwgQ29udmVyc2lvbkNhbGxiYWNrJiYpOworCisgICAgLy8gVmlkZW9G
cmFtZQorICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9zaXplOyB9CisgICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fdmlkZW9QaXhlbEZvcm1hdDsgfQorICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKKworICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IG1fYnVmZmVyOworICAgIEZsb2F0U2l6ZSBtX3NpemU7
CisgICAgdWludDMyX3QgbV92aWRlb1BpeGVsRm9ybWF0IHsgMCB9OworCisgICAgbXV0YWJsZSBD
b252ZXJzaW9uQ2FsbGJhY2sgbV9jb252ZXJzaW9uQ2FsbGJhY2s7CisgICAgbXV0YWJsZSBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9waXhlbEJ1ZmZlciBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fcGl4ZWxCdWZmZXJMb2NrKTsKKyAgICBtdXRhYmxlIExvY2sgbV9waXhlbEJ1ZmZlckxvY2s7
Cit9OworCit9CisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9G
cmFtZUxpYldlYlJUQykKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Vmlk
ZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyByZXR1cm4gdmlkZW9GcmFtZS5pc0xpYldlYlJUQygpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRp
YVNhbXBsZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUpICYm
IGlzPFdlYkNvcmU6OlZpZGVvRnJhbWVMaWJXZWJSVEM+KGRvd25jYXN0PFdlYkNvcmU6OlZpZGVv
RnJhbWU+KG1lZGlhU2FtcGxlKSk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwor
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRleCA2MDMzOGVhMDczN2Ri
NjE2OGZjNjEwYjFjNDIwNWMzYWFhNjlhYmU5Li44YTAyNTI5NjIxMzZhMjIzZWQzNDJmNzgwNzcy
NWFmODQ4ZDFiOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EuaApAQCAtNjIsNyArNjIsOCBAQCBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIHNpemVfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwogI2VuZGlmCi0gICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQb29sUmVmPiBtX3BpeGVsQnVmZmVyUG9vbDsKKyAgICBM
b2NrIG1fcGl4ZWxCdWZmZXJQb29sTG9jazsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBv
b2xSZWY+IG1fcGl4ZWxCdWZmZXJQb29sIFdURl9HVUFSREVEX0JZX0xPQ0sobV9waXhlbEJ1ZmZl
clBvb2xMb2NrKTsKICAgICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xXaWR0aCB7IDAgfTsKICAg
ICBzaXplX3QgbV9waXhlbEJ1ZmZlclBvb2xIZWlnaHQgeyAwIH07CiAgICAgd2VicnRjOjpCdWZm
ZXJUeXBlIG1fcGl4ZWxCdWZmZXJQb29sQnVmZmVyVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCBmMTBjZmUxZjAyOWJmNjY0Y2M4
MjMyZDYxN2FmYjE2MDRiYzk3NGIwLi5iNDQ5OGUzYTU4ZGZlZjllYWQ4NDY2YjE0ODQwMTM1OTM4
NDBlMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tCkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0ICJDVlV0aWxpdGllcy5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCi0jaW1wb3J0ICJW
aWRlb0ZyYW1lLmgiCisjaW1wb3J0ICJWaWRlb0ZyYW1lTGliV2ViUlRDLmgiCiAjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KQEAg
LTYyLDcgKzYyLDcgQEAgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OlJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hKHJ0Yzo6c2NvcGVkX3IKIHsKIH0KIAotQ1ZQaXhlbEJ1
ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVy
UG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZm
ZXJUeXBlKQorQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0
Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZ
U0lTCiB7CiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyUG9vbCB8fCBtX3BpeGVsQnVmZmVyUG9vbFdp
ZHRoICE9IHdpZHRoIHx8IG1fcGl4ZWxCdWZmZXJQb29sSGVpZ2h0ICE9IGhlaWdodCB8fCBtX3Bp
eGVsQnVmZmVyUG9vbEJ1ZmZlclR5cGUgIT0gYnVmZmVyVHlwZSkgewogICAgICAgICBPU1R5cGUg
cG9vbEJ1ZmZlclR5cGU7CkBAIC0xMzMsMjMgKzEzMywyNiBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjp0b1ZpZGVvRnJhbWUoY29uc3Qgd2Vi
cnRjOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHByb3ZpZGVyKTsK
ICAgICB9CiAKLSAgICAvLyBJbiBjYXNlIG9mIGluIG1lbW9yeSBzYW1wbGVzLCB3ZSBoYXZlIG5v
biBpbnRlcmxlYXZlZCBZVVYgZGF0YSB3aGlsZSBDVlBpeGVsQnVmZmVycyBwcmVmZXIgaW50ZXJs
ZWF2ZWQgWVVWIGRhdGEuCi0gICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGludHJvZHVjZSBhIE1lZGlh
U2FtcGxlIHRoYXQgd291bGQgcmVwcmVzZW50IG5vbiBpbnRlcmxlYXZlZCBZVVYgZGF0YSBhcyBh
biBvcHRpbWl6YXRpb24uCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpj
cmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW3RoaXNdKHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZm
ZXJSZWYgewotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IHRoaXMtPnBpeGVsQnVmZmVy
UG9vbCh3aWR0aCwgaGVpZ2h0LCBidWZmZXJUeXBlKTsKLSAgICAgICAgaWYgKCFwaXhlbEJ1ZmZl
clBvb2wpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBp
eGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4
ZWxCdWZmZXJQb29sLmdldCgpLCAmcGl4ZWxCdWZmZXIpOwotCi0gICAgICAgIGlmIChzdGF0dXMg
IT0ga0NWUmV0dXJuU3VjY2VzcykgewotICAgICAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0
cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEgcGl4ZWwgYnVmZmVyIHdpdGgg
ZXJyb3IgIiwgc3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKLSAgICB9KSk7Ci0gICAgcmV0dXJuIGNyZWF0
ZU1lZGlhU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCksIHJvdGF0aW9u
LCBmcmFtZS50aW1lc3RhbXBfdXMoKSk7CisgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgQ1ZQ
aXhlbEJ1ZmZlclJlZiwgdXNlIGl0IGRpcmVjdGx5LgorICAgIGlmIChhdXRvIHBpeGVsQnVmZmVy
ID0gd2VicnRjOjpwaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiBj
cmVhdGVNZWRpYVNhbXBsZUZyb21DVlBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLCByb3RhdGlvbiwg
ZnJhbWUudGltZXN0YW1wX3VzKCkpOworCisgICAgLy8gSW4gY2FzZSBvZiBpbiBtZW1vcnkgbGli
d2VicnRjIHNhbXBsZXMsIHdlIGhhdmUgbm9uIGludGVybGVhdmVkIFlVViBkYXRhLCBsZXQncyBs
YXppbHkgY3JlYXRlIENWUGl4ZWxCdWZmZXJzIGlmIG5lZWRlZC4KKyAgICByZXR1cm4gVmlkZW9G
cmFtZUxpYldlYlJUQzo6Y3JlYXRlKE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSwgMTAw
MDAwMCksIGZhbHNlLCByb3RhdGlvbiwgZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCksIFtwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdGhpc10oYXV0byYgYnVmZmVyKSB7CisgICAgICAg
IHJldHVybiBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWVCdWZmZXIo
YnVmZmVyLCBbdGhpc10oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZl
clR5cGUgYnVmZmVyVHlwZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7CisgICAgICAgICAgICBMb2Nr
ZXIgbG9jayhtX3BpeGVsQnVmZmVyUG9vbExvY2spOworICAgICAgICAgICAgYXV0byBwaXhlbEJ1
ZmZlclBvb2wgPSB0aGlzLT5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgYnVmZmVyVHlw
ZSk7CisgICAgICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIg
PSBudWxscHRyOworICAgICAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENy
ZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLmdl
dCgpLCAmcGl4ZWxCdWZmZXIpOworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5T
dWNjZXNzKSB7CisgICAgICAgICAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJ
REVOVElGSUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEgcGl4ZWwgYnVmZmVyIHdpdGggZXJyb3IgIiwg
c3RhdHVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKKyAgICAgICAgfSkpOworICAgIH0pOwog
fQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0
IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgd2VicnRjVmlkZW9GcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCmluZGV4IGE2ZWIxOWQzMmEyNDQ0
MTRkOTUxMjU1NDEyZDU4OWNiMDQ2YzcwOTguLmY3MGI0MTU1NGNiZDUxMDgzMTMwMTU1NmRjYWRk
ZmRiN2ZjYWEyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUNvY29hLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oIgogI2luY2x1ZGUgIlJl
YWx0aW1lVmlkZW9VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCisjaW5jbHVk
ZSAiVmlkZW9GcmFtZUxpYldlYlJUQy5oIgogCiBBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJ
TgogCkBAIC04NiwxNCArODYsMjAgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwKICAgICB9CiAK
ICAgICBib29sIHNob3VsZEFwcGx5Um90YXRpb24gPSBtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYg
bV9jdXJyZW50Um90YXRpb24gIT0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOwotICAgIGlmICgh
c2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBpczxWaWRlb0ZyYW1lPihzYW1wbGUpICYmIGRvd25jYXN0
PFZpZGVvRnJhbWU+KHNhbXBsZSkuaXNSZW1vdGVQcm94eSgpKSB7Ci0gICAgICAgIFJlZiB2aWRl
b0ZyYW1lIHsgZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKSB9OwotICAgICAgICBhdXRvIHNp
emUgPSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOwotICAgICAgICBzZW5kRnJhbWUod2VicnRj
Ojp0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXIoJnZpZGVvRnJhbWUubGVha1JlZigpLAotICAgICAg
ICAgICAgW10oYXV0byogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+
KHBvaW50ZXIpLT5waXhlbEJ1ZmZlcigpOyB9LAotICAgICAgICAgICAgW10oYXV0byogcG9pbnRl
cikgeyBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPmRlcmVmKCk7IH0sCi0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4o
c2l6ZS5oZWlnaHQoKSkpKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghc2hvdWxkQXBwbHlS
b3RhdGlvbiAmJiBpczxWaWRlb0ZyYW1lPihzYW1wbGUpKSB7CisgICAgICAgIGlmIChkb3duY2Fz
dDxWaWRlb0ZyYW1lPihzYW1wbGUpLmlzUmVtb3RlUHJveHkoKSkgeworICAgICAgICAgICAgUmVm
IHZpZGVvRnJhbWUgeyBkb3duY2FzdDxWaWRlb0ZyYW1lPihzYW1wbGUpIH07CisgICAgICAgICAg
ICBhdXRvIHNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgICAgICAgICAgc2Vu
ZEZyYW1lKHdlYnJ0Yzo6dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKCZ2aWRlb0ZyYW1lLmxlYWtS
ZWYoKSwKKyAgICAgICAgICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPnBpeGVsQnVmZmVyKCk7IH0sCisgICAgICAgICAg
ICAgICAgW10oYXV0byogcG9pbnRlcikgeyBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRl
ciktPmRlcmVmKCk7IH0sCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzaXplLndp
ZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KCkpKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRvd25jYXN0PFZpZGVvRnJhbWU+KHNhbXBs
ZSkuaXNMaWJXZWJSVEMoKSkgeworICAgICAgICAgICAgc2VuZEZyYW1lKGRvd25jYXN0PFZpZGVv
RnJhbWVMaWJXZWJSVEM+KHNhbXBsZSkuYnVmZmVyKCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNhbXBsZS5waXhlbEJ1
ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3NQcm94eS5oCmluZGV4IDE5MjY3MzhmOWUwMjgxOWM3ZjRmYjlkYzhhZTUzNTk5
M2MwNGU5MDkuLmIyNzYxMWRlMzQ1YjA0MDVkYmQ4YmJiNDgwYzNiMjYzM2FmZDljM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVj
c1Byb3h5LmgKQEAgLTU3LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDsKK3N0cnVjdCBTaGFyZWRWaWRlb0ZyYW1lOwogY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVJlYWRl
cjsKIAogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHkgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25u
ZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVkYmRjOTQyZDk5YjYz
NjQ4NzEzNTA2YjUwZTliNDQ2NDRjMWUwOTAuLmU0YjlhZWRmZjkyZGM5YjlhOTIyMzExOTg4M2Jj
N2Y2YTEwMzAxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtODQ2LDYgKzg0Niw4IEBACiAJCTQxMzA3NUIwMURFODVGNTgwMDM5RUM2
OSAvKiBXZWJSVENNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTMwNzVBMzFERTg1RUU3MDAzOUVDNjkgLyogV2ViUlRDTW9uaXRvci5oICov
OyB9OwogCQk0MTMwNzVCMjFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1
QTYxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCAqLzsgfTsKIAkJ
NDEzMDc1QjQxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBODFERTg1RUU3MDAz
OUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLzsgfTsKKwkJNDEzQzU0MUEyN0M2N0MzOTAw
MkZDREE4IC8qIExpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMEE3QzgyM0I2Mzk3OTAwNTYxMDYwIC8qIExpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tICovOyB9OworCQk0MTNDNTQyNTI3Q0NCN0NFMDAyRkNEQTggLyog
U2hhcmVkVmlkZW9GcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MURDMDRGOTI3QTgxNkJCMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZS5j
cHAgKi87IH07CiAJCTQxNzY5MDE0MjJGREQ0MUIwMEIxNTc2RCAvKiBOZXR3b3JrUlRDUHJvdmlk
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2
OTAxMzIyRkRENDFCMDBCMTU3NkQgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1tICovOyB9OwogCQk0
MTc5MTVBRjIyNTZCQjc1MDBENkY5N0UgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3OTE1QUQyMjU2QkI3NDAwRDZG
OTdFIC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsKIAkJNDE3OTE1QjEyMjU2QzBENjAwRDZG
OTdFIC8qIFdlYlNvY2tldENoYW5uZWxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc5MTVCMDIyNTZDMEQ2MDBENkY5N0UgLyogV2ViU29j
a2V0Q2hhbm5lbE1hbmFnZXIuaCAqLzsgfTsKQEAgLTE2MTM4LDYgKzE2MTQwLDggQEAKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQk1Q0U5MTIxMDIy
OTNDMjc3MDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDEzQzU0MUEyN0M2N0MzOTAwMkZDREE4IC8qIExpYldlYlJUQ0NvZGVjc1Byb3h5Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDEzQzU0MjUyN0NDQjdDRTAwMkZDREE4IC8qIFNoYXJlZFZp
ZGVvRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM5QTkxMTEyMjhGNjlDQzAwNUM1QjE3
IC8qIFhQQ1NlcnZpY2VNYWluLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKaW5k
ZXggYjAwZmQyNGQyMTU5MGIwOWVkNDYwOTk0ZDM5NDJiNDBlZmQ2YzdmMy4uYWI4ZjY5MjhhZWY3
MzNlNTkwZTdhZDlmZDgwZjQ5YjQwNjgyODM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcApA
QCAtMTI3LDE1ICsxMjcsNiBAQCBDVlBpeGVsQnVmZmVyUmVmIFJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6cGl4ZWxCdWZmZXIoKSBjb25zdAogICAgICAgICBtX3BpeGVsQnVmZmVyID0gV2ViQ29yZTo6
Y3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihzdGF0aWNfY2FzdDxzaXplX3Q+KG1fc2l6ZS53aWR0aCgp
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3NpemUuaGVpZ2h0KCkpKTsKICAgICByZXR1cm4gbV9w
aXhlbEJ1ZmZlci5nZXQoKTsKIH0KLQotUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4gUmVt
b3RlVmlkZW9GcmFtZVByb3h5Ojphc1ZpZGVvRnJhbWVDVigpCi17Ci0gICAgYXV0byBidWZmZXIg
PSBwaXhlbEJ1ZmZlcigpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUobV9wcmVzZW50YXRpb25UaW1lLCBt
X2lzTWlycm9yZWQsIG1fcm90YXRpb24sIFJldGFpblB0ciB7IGJ1ZmZlciB9KTsKLX0KLQogI2Vu
ZGlmCiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYgcHJvcGVydGllcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94
eS5oCmluZGV4IGQ0YzQ2OTUxNGJlZWJmMWYwZTZmZmM3YWQ1NDRhM2MyNGM2ZDQ4MzMuLmNlNDA3
MTBkNzFlMDQyY2NiMTc3OWJjYzNlNDViM2JhYjJmMzQxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHku
aApAQCAtODgsNyArODgsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlbW90ZVByb3h5KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigpIGZpbmFsOwogI2VuZGlmCiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFy
ZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1No
YXJlZFZpZGVvRnJhbWUuY3BwCmluZGV4IGQ4NDM3NjY1OTRmZTRkMmM0OGI2ZTU5NWE4NmNkNTZh
MzA5OWI0MzMuLmNjOTE2ZjIxZTQxOGQ0MTEyMmNmYjcwZjNhMWU3NjIzZTVkOTVlYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZp
ZGVvRnJhbWUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZh
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkVmlkZW9GcmFtZUluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVv
RnJhbWVMaWJXZWJSVEMuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogI2lmIFVTRShMSUJX
RUJSVEMpCkBAIC0xMDUsNiArMTA2LDExIEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFt
ZTo6QnVmZmVyPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZUJ1ZmZlcihNZWRpCiAgICAg
aWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oZnJhbWUpKQogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihmcmFtZSkubmV3UmVhZFJlZmVyZW5jZSgpOwog
CisjaWYgVVNFKExJQldFQlJUQykKKyAgICBpZiAoaXM8VmlkZW9GcmFtZUxpYldlYlJUQz4oZnJh
bWUpKQorICAgICAgICByZXR1cm4gd3JpdGVCdWZmZXIoKmRvd25jYXN0PFZpZGVvRnJhbWVMaWJX
ZWJSVEM+KGZyYW1lKS5idWZmZXIoKSwgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNh
bGxiYWNrKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHdyaXRlQnVmZmVyKGZyYW1lLnBpeGVsQnVm
ZmVyKCksIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBuZXdNZW1vcnlDYWxsYmFjayk7CiB9CiAKQEAg
LTEzNiwxMSArMTQyLDE2IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVy
PiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZUJ1ZmZlcihjb25zCiAgICAgaWYgKGF1dG8g
cGl4ZWxCdWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUp
KSkKICAgICAgICAgcmV0dXJuIHdyaXRlQnVmZmVyKHBpeGVsQnVmZmVyLmdldCgpLCBuZXdTZW1h
cGhvcmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spOwogCi0gICAgYXV0byBpbmZvID0gU2hh
cmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lKGZyYW1lKTsKKyAgICByZXR1cm4gd3Jp
dGVCdWZmZXIoKmZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLCBuZXdTZW1hcGhvcmVDYWxsYmFj
aywgbmV3TWVtb3J5Q2FsbGJhY2spOworfQorCitzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJh
bWU6OkJ1ZmZlcj4gU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6d3JpdGVCdWZmZXIod2VicnRjOjpW
aWRlb0ZyYW1lQnVmZmVyJiBmcmFtZUJ1ZmZlciwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNl
bWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29u
c3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQoreworICAg
IGF1dG8gaW5mbyA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpmcm9tVmlkZW9GcmFtZUJ1ZmZlcihm
cmFtZUJ1ZmZlcik7CiAgICAgaWYgKCFwcmVwYXJlV3JpdGluZyhpbmZvLCBuZXdTZW1hcGhvcmVD
YWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
aWYgKCFpbmZvLndyaXRlVmlkZW9GcmFtZShmcmFtZSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1f
c3RvcmFnZS0+ZGF0YSgpKSkpCisgICAgaWYgKCFpbmZvLndyaXRlVmlkZW9GcmFtZUJ1ZmZlcihm
cmFtZUJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0YSgpKSkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKaW5k
ZXggNWFiNDZlODA2NjM1NDE2ZTZmZDRhMGVjYzE5ZDQ1ZjEyMzAxZDc3OS4uM2RlYTY4MWEyNDJi
NTk2M2ZmNjVlMzRkNDQwY2U5ZGQ2YzJlZTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaApAQCAtNDUsNiArNDUs
NyBAQCBjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzsKIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBj
bGFzcyBWaWRlb0ZyYW1lOworY2xhc3MgVmlkZW9GcmFtZUJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC03OCw3ICs3OSwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgd2FpdChjb25z
dCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+Jik7CiAgICAgYm9vbCBhbGxvY2F0ZVN0
b3JhZ2Uoc2l6ZV90LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik+Jik7CiAgICAgYm9vbCBwcmVwYXJlV3JpdGluZyhjb25zdCBXZWJDb3JlOjpTaGFy
ZWRWaWRlb0ZyYW1lSW5mbyYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4m
LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7
CisKICAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gd3JpdGVCdWZm
ZXIoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBo
b3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYpPiYpOworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRl
b0ZyYW1lOjpCdWZmZXI+IHdyaXRlQnVmZmVyKHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYsIGNv
bnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisjZW5kaWYKIAogICAgIFVuaXF1
ZVJlZjxJUEM6OlNlbWFwaG9yZT4gbV9zZW1hcGhvcmU7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gbV9zdG9yYWdlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>