<?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>167821</bug_id>
          
          <creation_ts>2017-02-03 16:41:31 -0800</creation_ts>
          <short_desc>[MediaStream Mac] Stop using AVSampleBufferAudioRenderer</short_desc>
          <delta_ts>2017-02-07 11:36:44 -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>Media</component>
          <version>Other</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jer.noble</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1273102</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-03 16:41:31 -0800</bug_when>
    <thetext>Don&apos;t use AVSampleBufferAudioRenderer to render captured audio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273435</commentid>
    <comment_count>1</comment_count>
      <attachid>300677</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-05 15:44:30 -0800</bug_when>
    <thetext>Created attachment 300677
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273534</commentid>
    <comment_count>2</comment_count>
      <attachid>300713</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-06 05:26:49 -0800</bug_when>
    <thetext>Created attachment 300713
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273554</commentid>
    <comment_count>3</comment_count>
      <attachid>300718</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-02-06 06:47:57 -0800</bug_when>
    <thetext>Created attachment 300718
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273581</commentid>
    <comment_count>4</comment_count>
      <attachid>300718</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-02-06 08:53:24 -0800</bug_when>
    <thetext>Comment on attachment 300718
Updated patch.

Look at all that NLOC! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273590</commentid>
    <comment_count>5</comment_count>
      <attachid>300718</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-06 09:23:58 -0800</bug_when>
    <thetext>Comment on attachment 300718
Updated patch.

Clearing flags on attachment: 300718

Committed r211728: &lt;http://trac.webkit.org/changeset/211728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273591</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-06 09:24:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274077</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-07 11:36:44 -0800</bug_when>
    <thetext>https://trac.webkit.org/r211823</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300677</attachid>
            <date>2017-02-05 15:44:30 -0800</date>
            <delta_ts>2017-02-06 05:26:49 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>core_audio_renderer_patch_1.txt</filename>
            <type>text/plain</type>
            <size>76111</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBAQAorMjAxNy0wMi0wMyAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
TWFjXSBTdG9wIHVzaW5nIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODIxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXNJbnRlcm5hbCk6IERvbid0IGFzc3VtZSB0aGUg
Zmlyc3QgdGltZXN0YW1wIGZyb20gdGhlCisgICAgICAgIHJlbmRlciBwcm9jIGFmdGVyIGEgcGF1
c2UgaXMgemVyby4KKworICAgICAgICBTdG9wIHVzaW5nIGFuIGF1ZGlvIHJlbmRlcmVyIGZvciBl
YWNoIGF1ZGlvIHRyYWNrLiBObyBhdWRpbyByZW5kZXJlcnMgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0
byB1c2UKKyAgICAgICAgYW4gQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgor
ICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGludmFsaWRh
dGVdKTogTm8gbW9yZSBhdWRpbyByZW5kZXJlcnMuCisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVm
ZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpj
aGFuZ2U6Y29udGV4dDpdKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKTogUGF1
c2UKKyAgICAgICAgICBhdWRpbyB0cmFja3MgZXhwbGljaXRseS4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXVkaW9Tb3VyY2VQcm92aWRl
cik6IFJlbW92ZSB0aGUgZXhpc3RpbmcgY29kZSwKKyAgICAgICAgICBpdCB3YXMgaW5jb3JyZWN0
IGFuZCBub3QgdGhyZWFkIHNhZmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmZsdXNoUmVuZGVyZXJzKTogTm8gbW9yZSBhdWRpbyByZW5k
ZXJlcnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmVuc3VyZUxheWVyKTogTm8gbW9yZSByZW5kZXIgc3luY2hyb25pemVyLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95
TGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGxheSk6IFN0YXJ0IGVhY2ggYXVkaW8gdHJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKTogUGF1
c2UgZWFjaCBhdWRpbyB0cmFjay4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKTogUGFzcyB0aGUgY29tbWFuZCB0byBlYWNo
IGF1ZGlvIHRyYWNrLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpzZXRNdXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdHJlYW1UaW1lKTogTm8gbW9yZSByZW5k
ZXIgc3luY2hyb25pemVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzYW1wbGVCdWZmZXJVcGRhdGVkKTogRG9uJ3QgaGFuZGxlIGF1ZGlv
IHNhbXBsZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnVwZGF0ZVRyYWNrcyk6IFVwZGF0ZSBmb3IgYXVkaW8gdHJhY2sgY2xhc3MgY2hh
bmdlLiBObworICAgICAgICBtb3JlIHJlbmRlciBzeW5jaHJvbml6ZXIuCisgICAgICAgICgtW1dl
YkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdSZW5kZXJl
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VM
aXN0ZW5lciBzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6XSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVBdWRpb1Nh
bXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpjcmVhdGVBdWRpb1JlbmRlcmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUF1ZGlvUmVu
ZGVyZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95QXVkaW9SZW5kZXJlcnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW5kZXJl
clN0YXR1c0RpZENoYW5nZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUpOiBh
ZGQvcmVtb3ZlT2JzZXJ2ZXIgdGFrZXMgYSByZWZlcmVuY2UsCisgICAgICAgIG5vdCBhIHBvaW50
ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6fk1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOiBSZW5hbWVkIGZyb20gc291cmNlSGFz
TW9yZU1lZGlhRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Ojpzb3VyY2VIYXNNb3JlTWVkaWFEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcik6IFRha2UgYSByZWZlcmVuY2UsIG5v
dCBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpyZW1v
dmVPYnNlcnZlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOiBSZW5hbWVkIGZyb20gbWVkaWFEYXRhVXBkYXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3Ap
OiBEcml2ZS1ieSBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6cmVxdWVzdFN0b3ApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2U6Om1lZGlhRGF0YVVwZGF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnNodXRkb3duQ2FwdHVyZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRP
dXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVk
LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnByb2Nlc3NO
ZXdGcmFtZSk6IENhbGwgdmlkZW9TYW1wbGVBdmFpbGFibGUsIG5vdCBtZWRpYURhdGFVcGRhdGVk
LgorCisgICAgICAgIFJlbmRlciBhdWRpbyB3aXRoIGEgQ29yZUF1ZGlvIG91dHB1dCB1bml0Lgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6fkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXlJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpwYXVzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldFZv
bHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E6OnNldHVwQXVkaW9Vbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c291cmNlU3RvcHBlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnJlbmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6
OmlucHV0UHJvYyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmFsaWduVG8xNkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjplbWl0U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOiBNaW5vciBj
bGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJl
bmRlcik6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6IENhbGwgdmlkZW9TYW1wbGVBdmFp
bGFibGUsIG5vdCBtZWRpYURhdGFVcGRhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5XZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6cHJvdmlkZUlucHV0KTogVXNlIGEgbXV0ZXguIEdldCByaWQgb2Yg
bV93cml0ZUFoZWFkQ291bnQsCisgICAgICAgIGl0IGlzIGFsd2F5cyAwLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUpOiBVc2UgYSBsb2Nr
LgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnVucHJl
cGFyZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM6OnByb2Nlc3MpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZUF1ZGlvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6cmVuZGVySW50ZXJ2YWwpOiBEZWNyZWFzZSB0aGUgcmVuZGVyIGludGVydmFsLgorCiAy
MDE3LTAyLTAzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXVtXSzJdIEFkZCBTUEkgdG8gb3ZlcnJpZGUgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IG9mIGEgcGFnZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiAr
MTU5LDcgQEAKIAkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzYzOEE5ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSAqLzsg
fTsKIAkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4
NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkwNzY5NzA4NzE0NjNBRDg3
MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xp
c3QuaCAqLzsgfTsKKwkJMDc2RUMxMzMxRTQ0RjU2RDAwRTVEODEzIC8qIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmNwcCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0
IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQkwNzcwN0NCMDFFMjA1RUUz
MDAwMDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAvKiBB
dWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovOyB9OwogCQkwNzc2NjRGQzE4M0U2QjVDMDAxMzNC
OTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyog
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CkBAIC0yODQsNyArMjg1LDYg
QEAKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFE
ODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLzsgfTsKIAkJMDdDMDQ2
QzMxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NzFFNDBEQ0ZE
MDA3MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcCAqLzsgfTsKIAkJMDdDMDQ2
QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQjg3NTgxRTQwRENGRDAw
NzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA3QzA0NkM3MUU0MjUxNTUwMDcyMDFFNyAv
KiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMDQ2QzUxRTQyNTEyRjAwNzIwMUU3IC8q
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgKi87IH07CiAJCTA3QzA0NkM4
MUU0MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM2MUU0
MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLzsg
fTsKIAkJMDdDMDQ2Q0IxRTQyNjQxMzAwNzIwMUU3IC8qIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzU2
MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAw
QkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2
IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9OwpAQCAtNzI1Niw2ICs3
MjU2LDcgQEAKIAkJMDc2MzhBOTgxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNl
c3Npb25NYW5hZ2VySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzY5NzA4
NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc3MDdDQUYxRTIwNUVDNDAwMDA1QkY3IC8qIEF1ZGlvU291cmNlT2JzZXJ2ZXJP
YmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU291cmNlT2JzZXJ2
ZXJPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzM3LDYgKzczMzgsNyBA
QAogCQkwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QjcxMTZCMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjcxMTZD
MUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0MxQzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWlu
dHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBC
RDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUzOTQsMTMgKzE1
Mzk2LDEzIEBACiAJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBtYWMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3NkVDMTMyMUU0NEYyQ0IwMEU1
RDgxMyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwICovLAogCQkJCTVD
REQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3Bw
ICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaCAqLywKIAkJCQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIg
LyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDc3MDdDQjExRTIwNjQ5
QzAwMDA1QkY3IC8qIEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQy5oICovLAogCQkJCTA3
NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovLAot
CQkJCTA3QzA0NkM1MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EuY3BwICovLAogCQkJCTA3QzA0NkM2MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLywKIAkJCQkwNzAzNjNEODE4MUExQ0RDMDBD
MDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJCQkwNzAzNjNEOTE4MUExQ0RD
MDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gKi8sCkBAIC0yNTIyOSw2ICsyNTIz
MSw3IEBACiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRl
QVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0QTc2MzE4MEY5
RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3QzA0NkM4MUU0MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RDZBNEY4MUJGMjMw
N0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDMxNjA4QjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdFRTY4NDYwMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlv
bkNGLmggaW4gSGVhZGVycyAqLywKQEAgLTMxODU0LDYgKzMxODU3LDcgQEAKIAkJCQk3QzM5QzM3
NDFEREJCOEQzMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0U1OEQ1NzFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBRTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RS
ZWZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3NkVDMTMzMUU0NEY1NkQwMEU1RDgx
MyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBRTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RTcGFuRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjIyN0FFOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVVJJUmVmZXJl
bmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUVDMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdVc2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIxMDMsNyArMzIxMDcsNiBAQAog
CQkJCTQ5QzdCOUU1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRleHR1cmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNkY5OTVBMjMxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVHJhbnNmb3JtRmVl
ZGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8q
IFdlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3QzA0NkM3MUU0
MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMjUxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVmVydGV4
QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkYyMjJCNzYxQUI1MkQ4QTAwOTQ2
NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc3QTE3QTc3MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHAJKHJldmlzaW9uIDIx
MTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURh
dGFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsMTQgKzI1NSwxMyBAQCBib29sIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXNJCiAgICAgICAgIGNvbnN0IGRvdWJsZSB0
ZW5NUyA9IC4wMTsKICAgICAgICAgY29uc3QgZG91YmxlIGZpdmVNUyA9IC4wMDU7CiAgICAgICAg
IGRvdWJsZSBzYW1wbGVSYXRlID0gbV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpOwor
ICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IHRpbWVTdGFtcCArIG1fdGltZVN0YW1wOwog
ICAgICAgICBpZiAoYnVmZmVyZWQgPiBzYW1wbGVSYXRlICogdHdlbnR5TVMpCi0gICAgICAgICAg
ICBtX291dHB1dFNhbXBsZU9mZnNldCA9IG1fdGltZVN0YW1wIC0gc2FtcGxlUmF0ZSAqIHR3ZW50
eU1TOworICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgLT0gc2FtcGxlUmF0ZSAqIHR3
ZW50eU1TOwogICAgICAgICBlbHNlIGlmIChidWZmZXJlZCA+IHNhbXBsZVJhdGUgKiB0ZW5NUykK
LSAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gbV90aW1lU3RhbXAgLSBzYW1wbGVS
YXRlICogdGVuTVM7CisgICAgICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCAtPSBzYW1wbGVS
YXRlICogdGVuTVM7CiAgICAgICAgIGVsc2UgaWYgKGJ1ZmZlcmVkID4gc2FtcGxlUmF0ZSAqIGZp
dmVNUykKLSAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gbV90aW1lU3RhbXAgLSBz
YW1wbGVSYXRlICogZml2ZU1TOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX291dHB1dFNh
bXBsZU9mZnNldCA9IG1fdGltZVN0YW1wOworICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZz
ZXQgLT0gc2FtcGxlUmF0ZSAqIGZpdmVNUzsKIAogICAgICAgICBtX3RyYW5zaXRpb25pbmdGcm9t
UGF1c2VkID0gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgJKHJl
dmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxl
QnVmZmVyICpDTVMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtOworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
OwogY2xhc3MgQVZWaWRlb0NhcHR1cmVTb3VyY2U7CiBjbGFzcyBDbG9jazsKIGNsYXNzIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudDsKQEAgLTU1LDEwICs1NSw2IEBAIGNsYXNzIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW07CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI7CiAj
ZW5kaWYKIAotI2lmIF9faGFzX2luY2x1ZGUoPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlclJl
bmRlclN5bmNocm9uaXplci5oPikKLSNkZWZpbmUgVVNFX1JFTkRFUl9TWU5DSFJPTklaRVIgMQot
I2VuZGlmCi0KIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHByaXZhdGUgTWVkaWFTdHJl
YW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2Jz
ZXJ2ZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQyhNZWRpYVBsYXllciopOwpAQCAtODEsNyArNzcsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbnN1cmVMYXllcigpOwogICAgIHZvaWQgZGVzdHJveUxheWVyKCk7CiAKLSAgICB2b2lk
IHJlbmRlcmVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciosIE5T
TnVtYmVyKik7CiAgICAgdm9pZCBsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciosIE5TTnVtYmVyKik7CiAKIHByaXZhdGU6CkBAIC0xNDQsMTMgKzEzOSw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBmbHVzaEFuZFJlbW92ZVZpZGVvU2FtcGxlQnVmZmVycygpOwog
ICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogCi0g
ICAgdm9pZCBlbnF1ZXVlQXVkaW9TYW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBNZWRp
YVNhbXBsZSYpOwotICAgIHZvaWQgY3JlYXRlQXVkaW9SZW5kZXJlcihBdG9taWNTdHJpbmcpOwot
ICAgIHZvaWQgZGVzdHJveUF1ZGlvUmVuZGVyZXIoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVy
Kik7Ci0gICAgdm9pZCBkZXN0cm95QXVkaW9SZW5kZXJlcihBdG9taWNTdHJpbmcpOwotICAgIHZv
aWQgZGVzdHJveUF1ZGlvUmVuZGVyZXJzKCk7Ci0gICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9u
V2hlblJlYWR5Rm9yQXVkaW9EYXRhKEF0b21pY1N0cmluZyk7Ci0KICAgICB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFTdHJlYW1Qcml2YXRlICYmIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2
ZU1ldGFkYXRhOyB9CkBAIC0yMTAsOSArMTk4LDcgQEAgcHJpdmF0ZToKIAogICAgIE1lZGlhVGlt
ZSBzdHJlYW1UaW1lKCkgY29uc3Q7CiAKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7Ci0jZW5k
aWYKIAogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKICAgICBXZWFrUHRy
RmFjdG9yeTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+IG1fd2Vha1B0ckZh
Y3Rvcnk7CkBAIC0yMjIsMjIgKzIwOCwxNCBAQCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRyPFdl
YkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+IG1fc3RhdHVzQ2hhbmdlTGlzdGVu
ZXI7CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICBIYXNo
TWFwPFN0cmluZywgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4+IG1fYXVk
aW9SZW5kZXJlcnM7Ci0gICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25p
emVyPiBtX3N5bmNocm9uaXplcjsKLSNlbHNlCiAgICAgc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBt
X2Nsb2NrOwotI2VuZGlmCiAKICAgICBNZWRpYVRpbWUgbV9wYXVzZWRUaW1lOwogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBtX3BhdXNlZEltYWdlOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNrTWFwOworICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
Pj4gbV9hdWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKICAgICBQZW5kaW5nU2FtcGxl
UXVldWUgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9O
SVpFUikKLSAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZTsK
LSNlbmRpZgogCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7
IE1lZGlhUGxheWVyOjpFbXB0eSB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZyB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbQkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2ltcG9ydCAiQVZGb3VuZGF0
aW9uU1BJLmgiCi0jaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgiCisjaW1w
b3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKICNpbXBvcnQgIkNsb2Nr
LmgiCiAjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0LmgiCkBAIC01Miw3ICs1Miw2IEBACiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uKQogCi1TT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBB
VlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIpCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZG
b3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKIFNPRlRfTElOS19DTEFTU19P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyKQog
CkBAIC02NywxNSArNjYsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBAaW50ZXJmYWNl
IFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7CiAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKiBfcGFyZW50OwogICAgIFZlY3Rv
cjxSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwotICAgIFZl
Y3RvcjxSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPj4gX3JlbmRlcmVyczsK
IH0KIAogLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQyopY2FsbGJhY2s7CiAtICh2b2lkKWludmFsaWRhdGU7CiAtICh2b2lkKWJlZ2luT2Jz
ZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICopbGF5ZXI7CiAtICh2b2lk
KXN0b3BPYnNlcnZpbmdMYXllcjooQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilsYXllcjsK
LS0gKHZvaWQpYmVnaW5PYnNlcnZpbmdSZW5kZXJlcjooQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRl
cmVyICopcmVuZGVyZXI7Ci0tICh2b2lkKXN0b3BPYnNlcnZpbmdSZW5kZXJlcjooQVZTYW1wbGVC
dWZmZXJBdWRpb1JlbmRlcmVyICopcmVuZGVyZXI7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyCkBAIC0xMDEsMTAgKzk3LDYgQEAg
LSAodm9pZClpbnZhbGlkYXRlCiAgICAgICAgIFtsYXllciByZW1vdmVPYnNlcnZlcjpzZWxmIGZv
cktleVBhdGg6QCJzdGF0dXMiXTsKICAgICBfbGF5ZXJzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1
dG8mIHJlbmRlcmVyIDogX3JlbmRlcmVycykKLSAgICAgICAgW3JlbmRlcmVyIHJlbW92ZU9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOwotICAgIF9yZW5kZXJlcnMuY2xlYXIoKTsK
LQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2
ZXI6c2VsZl07CiAKICAgICBfcGFyZW50ID0gbnVsbHB0cjsKQEAgLTEyOCwyNCArMTIwLDYgQEAg
LSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZgogICAgIF9sYXllcnMucmVt
b3ZlKF9sYXllcnMuZmluZChsYXllcikpOwogfQogCi0tICh2b2lkKWJlZ2luT2JzZXJ2aW5nUmVu
ZGVyZXI6KEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciopcmVuZGVyZXIKLXsKLSAgICBBU1NF
UlQoX3BhcmVudCk7Ci0gICAgQVNTRVJUKCFfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVyKSk7
Ci0KLSAgICBfcmVuZGVyZXJzLmFwcGVuZChyZW5kZXJlcik7Ci0gICAgW3JlbmRlcmVyIGFkZE9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07Ci19Ci0KLS0gKHZvaWQpc3RvcE9ic2Vydmlu
Z1JlbmRlcmVyOihBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqKXJlbmRlcmVyCi17Ci0gICAg
QVNTRVJUKF9wYXJlbnQpOwotICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVy
KSk7Ci0KLSAgICBbcmVuZGVyZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3Rh
dHVzIl07Ci0gICAgX3JlbmRlcmVycy5yZW1vdmUoX3JlbmRlcmVycy5maW5kKHJlbmRlcmVyKSk7
Ci19Ci0KIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRo
IG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4
dDoodm9pZCAqKWNvbnRleHQKIHsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CkBAIC0xNjcs
MTkgKzE0MSw2IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcKICAg
ICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyU3RhdHVzRGlkQ2hhbmdlKGxh
eWVyLmdldCgpLCBzdGF0dXMuZ2V0KCkpOwogICAgICAgICB9KTsKIAotICAgIH0gZWxzZSBpZiAo
W29iamVjdCBpc0tpbmRPZkNsYXNzOmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNsYXNz
KCldKSB7Ci0gICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJl
bmRlcmVyID0gKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqKW9iamVjdDsKLSAgICAgICAg
UmV0YWluUHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFs
dWVDaGFuZ2VOZXdLZXldOwotCi0gICAgICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5zKHJl
bmRlcmVyLmdldCgpKSk7Ci0gICAgICAgIEFTU0VSVChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJzdGF0dXMiXSk7Ci0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIHJlbmRlcmVyID0gV1RGTW92ZShyZW5kZXJlciksIHN0
YXR1cyA9IFdURk1vdmUoc3RhdHVzKV0gewotICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxm
LT5fcGFyZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgcHJvdGVj
dGVkU2VsZi0+X3BhcmVudC0+cmVuZGVyZXJTdGF0dXNEaWRDaGFuZ2UocmVuZGVyZXIuZ2V0KCks
IHN0YXR1cy5nZXQoKSk7Ci0gICAgICAgIH0pOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE5NiwxMSArMTU3LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpNZQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV93
ZWFrUHRyRmFjdG9yeSh0aGlzKQogICAgICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5T
KFtbV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQ
YXJlbnQ6dGhpc10pKQotI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgICwgbV9zeW5j
aHJvbml6ZXIoYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplcklu
c3RhbmNlKCkgaW5pdF0pKQotI2Vsc2UKICAgICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgpKQot
I2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpCiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXI6OmNyZWF0ZSgpKQogI2VuZGlmCkBAIC0yMTEsNiArMTY4LDkgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZQogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoJXApIiwgdGhpcyk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkKKyAgICAg
ICAgdHJhY2stPnBhdXNlKCk7CisKICAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUpIHsKICAg
ICAgICAgbV9tZWRpYVN0cmVhbVByaXZhdGUtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIApAQCAt
MjE5LDkgKzE3OSw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk0K
ICAgICB9CiAKICAgICBkZXN0cm95TGF5ZXIoKTsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpF
UikKLSAgICBkZXN0cm95QXVkaW9SZW5kZXJlcnMoKTsKLSNlbmRpZgogCiAgICAgbV9hdWRpb1Ry
YWNrTWFwLmNsZWFyKCk7CiAgICAgbV92aWRlb1RyYWNrTWFwLmNsZWFyKCk7CkBAIC0zMTUsMzMg
KzI3Miw2IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUEKICAgICBy
ZXR1cm4gdGltZWxpbmVPZmZzZXQ7CiB9CiAKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9T
YW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxl
KQotewotICAgIEFTU0VSVChtX2F1ZGlvVHJhY2tNYXAuY29udGFpbnModHJhY2suaWQoKSkpOwot
ICAgIEFTU0VSVChtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHNhbXBsZS50cmFja0lEKCkpKTsK
LQotICAgIGF1dG8gYXVkaW9UcmFjayA9IG1fYXVkaW9UcmFja01hcC5nZXQodHJhY2suaWQoKSk7
Ci0gICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0ID0gYXVkaW9UcmFjay0+dGltZWxpbmVPZmZz
ZXQoKTsKLSAgICBpZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
KSB7Ci0gICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoc2Ft
cGxlLCByZW5kZXJlckxhdGVuY3kpOwotICAgICAgICBhdWRpb1RyYWNrLT5zZXRUaW1lbGluZU9m
ZnNldCh0aW1lbGluZU9mZnNldCk7Ci0gICAgICAgIExPRyhNZWRpYUNhcHR1cmVTYW1wbGVzLCAi
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGU6
IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICVzIiwgdHJhY2suaWQoKS51dGY4
KCkuZGF0YSgpLCB0b1N0cmluZyh0aW1lbGluZU9mZnNldCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
fQotCi0gICAgdXBkYXRlU2FtcGxlVGltZXMoc2FtcGxlLCB0aW1lbGluZU9mZnNldCwgIk1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUF1ZGlvU2FtcGxlIik7Ci0K
LSAgICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRlcmVycy5nZXQoc2FtcGxlLnRyYWNrSUQo
KSk7Ci0gICAgaWYgKCFbcmVuZGVyZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAg
ICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUsIHNh
bXBsZSk7Ci0gICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEo
c2FtcGxlLnRyYWNrSUQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBbcmVuZGVy
ZXIgZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21T
YW1wbGVCdWZmZXJdOwotfQotI2VuZGlmCi0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
IHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAgIEFTU0VSVChtX3ZpZGVvVHJhY2tN
YXAuY29udGFpbnModHJhY2suaWQoKSkpOwpAQCAtNDAwLDEwMSArMzMwLDExIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICB9XTsKIH0KIAotI2lmIFVTRShS
RU5ERVJfU1lOQ0hST05JWkVSKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEoQXRvbWljU3Ry
aW5nIHRyYWNrSUQpCi17Ci0gICAgaWYgKCFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNr
SUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRl
cmVycy5nZXQodHJhY2tJRCk7Ci0gICAgW3JlbmRlcmVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVh
ZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeIHsKLSAgICAg
ICAgW3JlbmRlcmVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKLQotICAgICAgICBhdXRvIGF1
ZGlvVHJhY2sgPSBtX2F1ZGlvVHJhY2tNYXAuZ2V0KHRyYWNrSUQpOwotICAgICAgICB3aGlsZSAo
IW1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAo
IVtyZW5kZXJlciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgICAgICBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yQXVkaW9EYXRhKHRyYWNrSUQpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBzYW1w
bGUgPSBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAgICAg
ZW5xdWV1ZUF1ZGlvU2FtcGxlKGF1ZGlvVHJhY2stPnN0cmVhbVRyYWNrKCksIHNhbXBsZS5nZXQo
KSk7Ci0gICAgICAgIH0KLSAgICB9XTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OmNyZWF0ZUF1ZGlvUmVuZGVyZXIoQXRvbWljU3RyaW5nIHRyYWNrSUQp
Ci17Ci0gICAgQVNTRVJUKCFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKTsKLSAg
ICBhdXRvIHJlbmRlcmVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbcmVuZGVyZXIgc2V0QXVkaW9UaW1lUGl0Y2hBbGdv
cml0aG06KG1fcGxheWVyLT5wcmVzZXJ2ZXNQaXRjaCgpID8gQVZBdWRpb1RpbWVQaXRjaEFsZ29y
aXRobVNwZWN0cmFsIDogQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCldOwotICAg
IG1fYXVkaW9SZW5kZXJlcnMuc2V0KHRyYWNrSUQsIHJlbmRlcmVyKTsKLSAgICBbbV9zeW5jaHJv
bml6ZXIgYWRkUmVuZGVyZXI6cmVuZGVyZXIuZ2V0KCldOwotICAgIFttX3N0YXR1c0NoYW5nZUxp
c3RlbmVyIGJlZ2luT2JzZXJ2aW5nUmVuZGVyZXI6cmVuZGVyZXIuZ2V0KCldOwotICAgIGlmICht
X2F1ZGlvUmVuZGVyZXJzLnNpemUoKSA9PSAxKQotICAgICAgICByZW5kZXJpbmdNb2RlQ2hhbmdl
ZCgpOwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVz
dHJveUF1ZGlvUmVuZGVyZXIoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyKiByZW5kZXJlcikK
LXsKLSAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6cmVu
ZGVyZXJdOwotICAgIFtyZW5kZXJlciBmbHVzaF07Ci0gICAgW3JlbmRlcmVyIHN0b3BSZXF1ZXN0
aW5nTWVkaWFEYXRhXTsKLQotICAgIENNVGltZSBub3cgPSBDTVRpbWViYXNlR2V0VGltZShbbV9z
eW5jaHJvbml6ZXIgdGltZWJhc2VdKTsKLSAgICBbbV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVuZGVy
ZXI6cmVuZGVyZXIgYXRUaW1lOm5vdyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6XihCT09MKSB7IH1d
OwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJv
eUF1ZGlvUmVuZGVyZXIoQXRvbWljU3RyaW5nIHRyYWNrSUQpCi17Ci0gICAgaWYgKCFtX2F1ZGlv
UmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkZXN0
cm95QXVkaW9SZW5kZXJlcihtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFja0lEKS5nZXQoKSk7Ci0g
ICAgbV9hdWRpb1JlbmRlcmVycy5yZW1vdmUodHJhY2tJRCk7Ci0gICAgaWYgKCFtX2F1ZGlvUmVu
ZGVyZXJzLnNpemUoKSkKLSAgICAgICAgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKLX0KLQotdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lBdWRpb1JlbmRl
cmVycygpCi17Ci0gICAgbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5jbGVhcigpOwotICAgIGZv
ciAoYXV0byYgcmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQotICAgICAgICBk
ZXN0cm95QXVkaW9SZW5kZXJlcihyZW5kZXJlci5nZXQoKSk7Ci0gICAgbV9hdWRpb1JlbmRlcmVy
cy5jbGVhcigpOwotfQotCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogewogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCByZXR1cm4gYSBtaXggb2YgYWxsIGF1ZGlvIHRyYWNrcyAtIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzMDUKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICh0cmFj
ay0+c3RyZWFtVHJhY2soKS5lbmRlZCgpIHx8ICF0cmFjay0+c3RyZWFtVHJhY2soKS5lbmFibGVk
KCkgfHwgdHJhY2stPnN0cmVhbVRyYWNrKCkubXV0ZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIHJldHVybiB0cmFjay0+c3RyZWFtVHJhY2soKS5hdWRpb1NvdXJjZVByb3Zp
ZGVyKCk7Ci0gICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQotI2VuZGlmCi0KLXZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW5kZXJlclN0YXR1c0RpZENoYW5n
ZShBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqIHJlbmRlcmVyLCBOU051bWJlciogc3RhdHVz
KQotewotI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgIFN0cmluZyB0cmFja0lEOwot
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fYXVkaW9SZW5kZXJlcnMpIHsKLSAgICAgICAgaWYgKHBh
aXIudmFsdWUgPT0gcmVuZGVyZXIpIHsKLSAgICAgICAgICAgIHRyYWNrSUQgPSBwYWlyLmtleTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIEFTU0VSVCghdHJhY2tJ
RC5pc0VtcHR5KCkpOwotICAgIGlmIChzdGF0dXMuaW50ZWdlclZhbHVlID09IEFWUXVldWVkU2Ft
cGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzUmVuZGVyaW5nKQotICAgICAgICBtX2F1ZGlvVHJhY2tN
YXAuZ2V0KHRyYWNrSUQpLT5zZXRUaW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOwotICAgIFVOVVNFRF9QQVJB
TShzdGF0dXMpOwotI2VuZGlmCi19CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciogbGF5ZXIsIE5TTnVtYmVyKiBzdGF0dXMpCiB7CkBAIC01MTMsMTEgKzM1Myw2IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBpZiAobV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBm
bHVzaF07Ci0KLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICBmb3IgKGF1dG8mIHJl
bmRlcmVyIDogbV9hdWRpb1JlbmRlcmVycy52YWx1ZXMoKSkKLSAgICAgICAgW3JlbmRlcmVyIGZs
dXNoXTsKLSNlbmRpZgogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6c2hvdWxkRW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyKCkgY29uc3QKQEAgLTU0OSwxMCAr
Mzg0LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENH
Q29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9i
c2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKIAotI2lmIFVT
RShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjpt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKV07Ci0jZW5kaWYKLQogICAgIHJlbmRlcmlu
Z01vZGVDaGFuZ2VkKCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCkBAIC01NzAsMTMgKzQwMSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICAgICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIg
c3RvcE9ic2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKICAg
ICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRh
XTsKICAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKLSNpZiBVU0Uo
UkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICAgICAgQ01UaW1lIGN1cnJlbnRUaW1lID0gQ01UaW1l
YmFzZUdldFRpbWUoW21fc3luY2hyb25pemVyIHRpbWViYXNlXSk7Ci0gICAgICAgIFttX3N5bmNo
cm9uaXplciByZW1vdmVSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKSBh
dFRpbWU6Y3VycmVudFRpbWUgd2l0aENvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCkgewotICAgICAg
ICAgICAgLy8gTm8tb3AuCi0gICAgICAgIH1dOwotICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciA9IG51bGxwdHI7Ci0jZW5kaWYKICAgICB9CiAKICAgICByZW5kZXJpbmdNb2RlQ2hh
bmdlZCgpOwpAQCAtNzAwLDEzICs1MjQsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iagogICAgICAgICByZXR1cm47CiAKICAgICBtX3BsYXlpbmcgPSB0cnVlOwot
I2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgIGlmICghbV9zeW5jaHJvbml6ZXIuZ2V0
KCkucmF0ZSkKLSAgICAgICAgW21fc3luY2hyb25pemVyIHNldFJhdGU6MSBdOyAvLyBzdHJlYW10
aW1lCi0jZWxzZQogICAgIGlmICghbV9jbG9jay0+aXNSdW5uaW5nKCkpCiAgICAgICAgIG1fY2xv
Y2stPnN0YXJ0KCk7Ci0jZW5kaWYKKworICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1
ZGlvVHJhY2tNYXAudmFsdWVzKCkpCisgICAgICAgIHRyYWNrLT5wbGF5KCk7CiAKICAgICBtX2hh
dmVFdmVyUGxheWVkID0gdHJ1ZTsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewpA
QCAtNzI1LDYgKzU0Nyw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmoKICAgICBtX3BhdXNlZFRpbWUgPSBjdXJyZW50TWVkaWFUaW1lKCk7CiAgICAgbV9wbGF5aW5n
ID0gZmFsc2U7CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFw
LnZhbHVlcygpKQorICAgICAgICB0cmFjay0+cGF1c2UoKTsKKwogICAgIHVwZGF0ZURpc3BsYXlN
b2RlKCk7CiAgICAgdXBkYXRlUGF1c2VkSW1hZ2UoKTsKICAgICBmbHVzaFJlbmRlcmVycygpOwpA
QCAtNzQzLDExICs1NjgsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdm9sdW1lID0gdm9sdW1lOwotCi0jaWYgVVNF
KFJFTkRFUl9TWU5DSFJPTklaRVIpCi0gICAgZm9yIChhdXRvJiByZW5kZXJlciA6IG1fYXVkaW9S
ZW5kZXJlcnMudmFsdWVzKCkpCi0gICAgICAgIFtyZW5kZXJlciBzZXRWb2x1bWU6dm9sdW1lXTsK
LSNlbmRpZgorICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFs
dWVzKCkpCisgICAgICAgIHRyYWNrLT5zZXRWb2x1bWUobV92b2x1bWUpOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkK
QEAgLTc1OCwxMSArNTgwLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iagogICAgICAgICByZXR1cm47CiAKICAgICBtX211dGVkID0gbXV0ZWQ7Ci0gICAgCi0jaWYg
VVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCi0gICAgZm9yIChhdXRvJiByZW5kZXJlciA6IG1fYXVk
aW9SZW5kZXJlcnMudmFsdWVzKCkpCi0gICAgICAgIFtyZW5kZXJlciBzZXRNdXRlZDptdXRlZF07
Ci0jZW5kaWYKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Omhhc1ZpZGVvKCkgY29uc3QKQEAgLTc5NiwxMSArNjEzLDcgQEAgTWVkaWFUaW1lIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzdHJlYW1UaW1lKCkgY29uc3QKIHsKLSNpZiBVU0UoUkVOREVSX1NZ
TkNIUk9OSVpFUikKLSAgICByZXR1cm4gdG9NZWRpYVRpbWUoQ01UaW1lYmFzZUdldFRpbWUoW21f
c3luY2hyb25pemVyIHRpbWViYXNlXSkpOwotI2Vsc2UKICAgICByZXR1cm4gTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKG1fY2xvY2stPmN1cnJlbnRUaW1lKCkpOwotI2VuZGlmCiB9CiAKIE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpuZXR3b3JrU3RhdGUoKSBjb25zdApAQCAtOTI1LDE5ICs3MzgsMTEgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIGlmICghbV9wbGF5aW5nIHx8IHN0
cmVhbVRpbWUoKS50b0RvdWJsZSgpIDwgMCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgVVNFKFJF
TkRFUl9TWU5DSFJPTklaRVIpCi0gICAgaWYgKCFDTVRpbWViYXNlR2V0RWZmZWN0aXZlUmF0ZShb
bV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KICAg
ICBzd2l0Y2ggKHRyYWNrLnR5cGUoKSkgewogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
Tm9uZToKICAgICAgICAgLy8gRG8gbm90aGluZy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbzoKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikK
LSAgICAgICAgZW5xdWV1ZUF1ZGlvU2FtcGxlKHRyYWNrLCBtZWRpYVNhbXBsZSk7Ci0jZW5kaWYK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoKICAg
ICAgICAgaWYgKCZ0cmFjayA9PSBtX2FjdGl2ZVZpZGVvVHJhY2suZ2V0KCkpCkBAIC0xMDM3LDM2
ICs4NDIsMjMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogewog
ICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yIGN1cnJlbnRUcmFja3MgPSBtX21lZGlh
U3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCk7CiAKLSAgICBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50LCBUcmFja1N0YXRlKT4gIHNldEF1ZGlvVHJh
Y2tTdGF0ZSA9IFt0aGlzXShhdXRvIHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUp
CisgICAgRnVuY3Rpb248dm9pZChSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hPiwgaW50LCBUcmFja1N0YXRlKT4gIHNldEF1ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShhdXRv
IHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUpCiAgICAgewogICAgICAgICBzd2l0
Y2ggKHN0YXRlKSB7CiAgICAgICAgIGNhc2UgVHJhY2tTdGF0ZTo6UmVtb3ZlOgotICAgICAgICAg
ICAgdHJhY2stPnN0cmVhbVRyYWNrKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAg
ICAgbV9wbGF5ZXItPnJlbW92ZUF1ZGlvVHJhY2soKnRyYWNrKTsKLSNpZiBVU0UoUkVOREVSX1NZ
TkNIUk9OSVpFUikKLSAgICAgICAgICAgIGRlc3Ryb3lBdWRpb1JlbmRlcmVyKHRyYWNrLT5pZCgp
KTsKLSNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJhY2tTdGF0ZTo6
QWRkOgotICAgICAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCkuYWRkT2JzZXJ2ZXIoKnRoaXMp
OwogICAgICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soKnRyYWNrKTsKLSNpZiBVU0Uo
UkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICAgICAgICAgIGNyZWF0ZUF1ZGlvUmVuZGVyZXIodHJh
Y2stPmlkKCkpOwotI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUcmFj
a1N0YXRlOjpDb25maWd1cmU6CiAgICAgICAgICAgICB0cmFjay0+c2V0VHJhY2tJbmRleChpbmRl
eCk7CiAgICAgICAgICAgICBib29sIGVuYWJsZWQgPSB0cmFjay0+c3RyZWFtVHJhY2soKS5lbmFi
bGVkKCkgJiYgIXRyYWNrLT5zdHJlYW1UcmFjaygpLm11dGVkKCk7CiAgICAgICAgICAgICB0cmFj
ay0+c2V0RW5hYmxlZChlbmFibGVkKTsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKLSAg
ICAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFjay0+aWQo
KSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVuZGVyZXIpOwotICAgICAgICAgICAgcmVuZGVyZXIu
Z2V0KCkubXV0ZWQgPSAhZW5hYmxlZDsKLSNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9OwotICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBjdXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbTo6Y3JlYXRlLCBzZXRBdWRpb1RyYWNrU3RhdGUpOworICAgIHVwZGF0ZVRy
YWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBj
dXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGUs
IHNldEF1ZGlvVHJhY2tTdGF0ZSk7CiAKICAgICBGdW5jdGlvbjx2b2lkKFJlZlB0cjxWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50LCBUcmFja1N0YXRlKT4gc2V0VmlkZW9UcmFja1N0
YXRlID0gWyZdKGF1dG8gdHJhY2ssIGludCBpbmRleCwgVHJhY2tTdGF0ZSBzdGF0ZSkKICAgICB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCShyZXZpc2lvbiAyMTE2
MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtIGZp
bmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0gOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiBjcmVhdGUoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmIHN0cmVhbVRyYWNrKQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZU9m
ZnNldDsgfQogICAgIHZvaWQgc2V0VGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiBvZmZz
ZXQpIHsgbV90aW1lbGluZU9mZnNldCA9IG9mZnNldDsgfQogCi1wcml2YXRlOgorcHJvdGVjdGVk
OgogICAgIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmIHRyYWNrKQogICAgICAgICA6IG1fc3RyZWFtVHJhY2sodHJhY2spCiAgICAgICAgICwgbV9p
ZCh0cmFjay5pZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAkocmV2aXNp
b24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMiArNTIsMTIgQEAg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok1lZGlhU3RyZWFtVHJhYwogICAgICwgbV9pc0VuYWJs
ZWQodHJ1ZSkKICAgICAsIG1faXNFbmRlZChmYWxzZSkKIHsKLSAgICBtX3NvdXJjZS0+YWRkT2Jz
ZXJ2ZXIodGhpcyk7CisgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KIAogTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6On5NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSgpCiB7Ci0gICAg
bV9zb3VyY2UtPnJlbW92ZU9ic2VydmVyKHRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVPYnNl
cnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmFkZE9ic2Vy
dmVyKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpCkBAIC0xOTgs
NyArMTk4LDcgQEAgYm9vbCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cHJldmVudFNvdQogICAg
IHJldHVybiAhbV9pc0VuZGVkOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpz
b3VyY2VIYXNNb3JlTWVkaWFEYXRhKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3ZvaWQgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBt
ZWRpYVNhbXBsZSkKIHsKICAgICBtZWRpYVNhbXBsZS5zZXRUcmFja0lEKGlkKCkpOwogICAgIGZv
ciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKSBmaW5h
bDsKICAgICB2b2lkIHNvdXJjZVNldHRpbmdzQ2hhbmdlZCgpIGZpbmFsOwogICAgIGJvb2wgcHJl
dmVudFNvdXJjZUZyb21TdG9wcGluZygpIGZpbmFsOwotICAgIHZvaWQgc291cmNlSGFzTW9yZU1l
ZGlhRGF0YShNZWRpYVNhbXBsZSYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmKSBmaW5hbDsKIAogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2
ZXJzOwogICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBtX3NvdXJjZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjcsMTYgKzY3LDE2IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQoKQogICAg
IG1fcmVtb3RlID0gZmFsc2U7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2Jz
ZXJ2ZXIoUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQordm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZl
ciYgb2JzZXJ2ZXIpCiB7Ci0gICAgbV9vYnNlcnZlcnMuYXBwZW5kKG9ic2VydmVyKTsKKyAgICBt
X29ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpyZW1vdmVPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciogb2JzZXJ2
ZXIpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZU9ic2VydmVyKFJlYWx0aW1lTWVk
aWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAgICBzaXplX3QgcG9zID0gbV9vYnNl
cnZlcnMuZmluZChvYnNlcnZlcik7Ci0gICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAg
bV9vYnNlcnZlcnMucmVtb3ZlKHBvcyk7CisgICAgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3RNYXRj
aGluZyhbJm9ic2VydmVyXShhdXRvKiBhbk9ic2VydmVyKSB7CisgICAgICAgIHJldHVybiBhbk9i
c2VydmVyID09ICZvYnNlcnZlcjsKKyAgICB9KTsKIAogICAgIGlmICghbV9vYnNlcnZlcnMuc2l6
ZSgpKQogICAgICAgICBzdG9wKCk7CkBAIC0xMTIsMTAgKzExMiwxNyBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6bWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCit2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxl
JiBtZWRpYVNhbXBsZSkKIHsKLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMp
Ci0gICAgICAgIG9ic2VydmVyLT5zb3VyY2VIYXNNb3JlTWVkaWFEYXRhKG1lZGlhU2FtcGxlKTsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnZpZGVvU2FtcGxlQXZhaWxhYmxl
KG1lZGlhU2FtcGxlKTsKK30KKwordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCB2b2lkKiBhdWRpb0RhdGEsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAg
ICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgZGVz
Y3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKIH0KIAogYm9vbCBSZWFsdGltZU1lZGlhU291cmNl
OjpyZWFkb25seSgpIGNvbnN0CkBAIC0xMzAsNyArMTM3LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjpzdG9wKE9ic2VydmVyKgogCiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIAotICAgIGZv
ciAoYXV0byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgIGZvciAoY29uc3QgYXV0byYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykgewogICAgICAgICBpZiAob2JzZXJ2ZXIgIT0gY2FsbGlu
Z09ic2VydmVyKQogICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVN0b3BwZWQoKTsKICAgICB9
CkBAIC0xNDMsNyArMTUwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0U3Rv
cChPYgogICAgIGlmIChzdG9wcGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0
byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykgewogICAgICAgICBpZiAob2JzZXJ2ZXItPnByZXZlbnRTb3VyY2VG
cm9tU3RvcHBpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDgg
KzQ3LDEzIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNz
IEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIE1lZGlhU3RyZWFtUHJp
dmF0ZTsKQEAgLTY4LDggKzczLDExIEBAIHB1YmxpYzoKICAgICAgICAgLy8gT2JzZXJ2ZXIgc3Rh
dGUgcXVlcmllcy4KICAgICAgICAgdmlydHVhbCBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBp
bmcoKSA9IDA7CiAgICAgICAgIAotICAgICAgICAvLyBNZWRpYSBkYXRhIGNoYW5nZXMuCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VIYXNNb3JlTWVkaWFEYXRhKE1lZGlhU2FtcGxlJikgPSAw
OworICAgICAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKSB7IH0KKworICAgICAgICAv
LyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgICAgIHZpcnR1YWwg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgdm9pZCogLyphdWRp
b0RhdGEqLywgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCAvKm51bWJlck9m
RnJhbWVzKi8pIHsgfQogICAgIH07CiAKICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNl
KCkgeyB9CkBAIC05OSw3ICsxMDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQ29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN0cmluZyYpOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBtZWRpYURhdGFVcGRh
dGVkKE1lZGlhU2FtcGxlJik7CisKKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJik7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1l
Jiwgdm9pZCosIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwogICAgIAog
ICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHBlZDsgfQogCkBAIC0xMTIs
OCArMTIyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZW1vdGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlbW90ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW1vdGUoYm9vbCByZW1vdGUp
IHsgbV9yZW1vdGUgPSByZW1vdGU7IH0KIAotICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIq
KTsKLSAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7CisgICAgdm9pZCBhZGRPYnNl
cnZlcihPYnNlcnZlciYpOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCAr
MzAsMTAgQEAKIAogI2luY2x1ZGUgIkFWTWVkaWFDYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAi
QXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KIAordHlwZWRlZiBzdHJ1Y3Qg
QXVkaW9CdWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsKIHR5cGVkZWYgc3RydWN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb247CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0
aW9uUmVmOwogCkBAIC02NCw5ICs2NiwxMSBAQCBwcml2YXRlOgogICAgIEF1ZGlvU291cmNlUHJv
dmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBvdmVycmlkZTsKIAogICAgIFJldGFpblB0cjxB
VkNhcHR1cmVDb25uZWN0aW9uPiBtX2F1ZGlvQ29ubmVjdGlvbjsKKyAgICBzaXplX3QgbV9saXN0
QnVmZmVyU2l6ZSB7IDAgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PiBt
X2xpc3Q7CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IG1fYXVk
aW9Tb3VyY2VQcm92aWRlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwogICAgIFZlY3RvcjxBdWRp
b1NvdXJjZU9ic2VydmVyT2JqQyo+IG1fb2JzZXJ2ZXJzOwogICAgIExvY2sgbV9sb2NrOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIxMTYzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2ltcG9ydCAiQXVkaW9TYW1wbGVC
dWZmZXJMaXN0LmgiCiAjaW1wb3J0ICJBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oIgorI2ltcG9y
dCAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIK
QEAgLTkxLDcgKzkzLDYgQEAgUmVmUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBBVkF1ZGlvQ2Fw
dAogQVZBdWRpb0NhcHR1cmVTb3VyY2U6OkFWQXVkaW9DYXB0dXJlU291cmNlKEFWQ2FwdHVyZURl
dmljZVR5cGVkZWYqIGRldmljZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKICAgICA6IEFWTWVk
aWFDYXB0dXJlU291cmNlKGRldmljZSwgaWQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQog
ewotICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uPigpOwogfQogICAgIAogQVZBdWRpb0NhcHR1cmVTb3VyY2U6On5BVkF1
ZGlvQ2FwdHVyZVNvdXJjZSgpCkBAIC0xMjAsOCArMTIxLDggQEAgdm9pZCBBVkF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6YWRkT2JzZXJ2ZXIoQQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2spOwog
ICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOwotICAgIGlmIChtX2lucHV0RGVzY3Jp
cHRpb24tPm1TYW1wbGVSYXRlKQotICAgICAgICBvYnNlcnZlci5wcmVwYXJlKG1faW5wdXREZXNj
cmlwdGlvbi5nZXQoKSk7CisgICAgaWYgKG1faW5wdXREZXNjcmlwdGlvbikKKyAgICAgICAgb2Jz
ZXJ2ZXIucHJlcGFyZSgmbV9pbnB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpKTsK
IH0KIAogdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoQXVkaW9Tb3Vy
Y2VPYnNlcnZlck9iakMmIG9ic2VydmVyKQpAQCAtMTYyLDcgKzE2Myw3IEBAIHZvaWQgQVZBdWRp
b0NhcHR1cmVTb3VyY2U6OnNodXRkb3duQ2FwdHUKICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1f
bG9jayk7CiAKICAgICAgICAgbV9hdWRpb0Nvbm5lY3Rpb24gPSBudWxscHRyOwotICAgICAgICBt
X2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbj4oKTsKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKIAogICAg
ICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAgICAgICBvYnNl
cnZlci0+dW5wcmVwYXJlKCk7CkBAIC0xNzQsMjMgKzE3NSw2IEBAIHZvaWQgQVZBdWRpb0NhcHR1
cmVTb3VyY2U6OnNodXRkb3duQ2FwdHUKICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBudWxs
cHRyOwogfQogCi1zdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiYgYSwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBiKQotewot
ICAgIHJldHVybiBhLm1TYW1wbGVSYXRlID09IGIubVNhbXBsZVJhdGUKLSAgICAgICAgJiYgYS5t
Rm9ybWF0SUQgPT0gYi5tRm9ybWF0SUQKLSAgICAgICAgJiYgYS5tRm9ybWF0RmxhZ3MgPT0gYi5t
Rm9ybWF0RmxhZ3MKLSAgICAgICAgJiYgYS5tQnl0ZXNQZXJQYWNrZXQgPT0gYi5tQnl0ZXNQZXJQ
YWNrZXQKLSAgICAgICAgJiYgYS5tRnJhbWVzUGVyUGFja2V0ID09IGIubUZyYW1lc1BlclBhY2tl
dAotICAgICAgICAmJiBhLm1CeXRlc1BlckZyYW1lID09IGIubUJ5dGVzUGVyRnJhbWUKLSAgICAg
ICAgJiYgYS5tQ2hhbm5lbHNQZXJGcmFtZSA9PSBiLm1DaGFubmVsc1BlckZyYW1lCi0gICAgICAg
ICYmIGEubUJpdHNQZXJDaGFubmVsID09IGIubUJpdHNQZXJDaGFubmVsOwotfQotCi1zdGF0aWMg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgYSwgY29u
c3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBiKQotewotICAgIHJldHVybiAhKGEgPT0g
Yik7Ci19Ci0KIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRPdXRw
dXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXRUeXBlKiwgQ01TYW1w
bGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopCiB7CiAg
ICAgaWYgKG11dGVkKCkpCkBAIC0yMDAsMjcgKzE4NCwzNyBAQCB2b2lkIEFWQXVkaW9DYXB0dXJl
U291cmNlOjpjYXB0dXJlT3V0cHV0CiAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBidWZmZXIgPSBz
YW1wbGVCdWZmZXI7Ci0gICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXMsIGJ1ZmZlcl0gewot
ICAgICAgICBtZWRpYURhdGFVcGRhdGVkKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKGJ1ZmZl
ci5nZXQoKSkpOwotICAgIH0pOwotCiAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1f
bG9jaywgc3RkOjp0cnlfdG9fbG9jayk7CiAgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CiAg
ICAgICAgIC8vIEZhaWxlZCB0byBhY3F1aXJlIHRoZSBsb2NrLCBqdXN0IHJldHVybiBpbnN0ZWFk
IG9mIGJsb2NraW5nLgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fb2JzZXJ2
ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBzdHJlYW1EZXNjcmlwdGlvbiA9IENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24pOwotICAgIGlm
ICgqbV9pbnB1dERlc2NyaXB0aW9uICE9ICpzdHJlYW1EZXNjcmlwdGlvbikgewotICAgICAgICBt
X2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbj4oKnN0cmVhbURlc2NyaXB0aW9uKTsKLSAgICAgICAgZm9yIChhdXRvJiBvYnNlcnZl
ciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICAgICAgb2JzZXJ2ZXItPnByZXBhcmUobV9pbnB1dERl
c2NyaXB0aW9uLmdldCgpKTsKKyAgICBpZiAoIW1faW5wdXREZXNjcmlwdGlvbiB8fCAqbV9pbnB1
dERlc2NyaXB0aW9uICE9ICpzdHJlYW1EZXNjcmlwdGlvbikgeworICAgICAgICBtX2lucHV0RGVz
Y3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oKnN0
cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9saXN0QnVmZmVyU2l6ZSA9IEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVhbSgqbV9pbnB1dERlc2NyaXB0
aW9uLmdldCgpKTsKKyAgICAgICAgbV9saXN0ID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVmZmVy
TGlzdD4oc3RhdGljX2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4oOjpvcGVyYXRvciBuZXcgKG1fbGlz
dEJ1ZmZlclNpemUpKSk7CisgICAgICAgIG1lbXNldChtX2xpc3QuZ2V0KCksIDAsIG1fbGlzdEJ1
ZmZlclNpemUpOworICAgICAgICBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzID0gbV9pbnB1dERlc2Ny
aXB0aW9uLT5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCk7CisKKyAgICAgICAgaWYgKCFtX29ic2Vy
dmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29i
c2VydmVycykKKyAgICAgICAgICAgICAgICBvYnNlcnZlci0+cHJlcGFyZShzdHJlYW1EZXNjcmlw
dGlvbik7CisgICAgICAgIH0KICAgICB9CiAKKyAgICBDTUl0ZW1Db3VudCBmcmFtZUNvdW50ID0g
Q01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzKHNhbXBsZUJ1ZmZlcik7CisgICAgQ01CbG9ja0J1
ZmZlclJlZiBidWZmZXIgPSBuaWw7CisgICAgT1NTdGF0dXMgZXJyID0gQ01TYW1wbGVCdWZmZXJH
ZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGVCdWZmZXIsIG51
bGxwdHIsIG1fbGlzdC5nZXQoKSwgbV9saXN0QnVmZmVyU2l6ZSwga0NGQWxsb2NhdG9yU3lzdGVt
RGVmYXVsdCwga0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwga0NNU2FtcGxlQnVmZmVyRmxhZ19B
dWRpb0J1ZmZlckxpc3RfQXNzdXJlMTZCeXRlQWxpZ25tZW50LCAmYnVmZmVyKTsKKyAgICBpZiAo
IWVycikKKyAgICAgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRvTWVkaWFUaW1lKENNU2FtcGxl
QnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKHNhbXBsZUJ1ZmZlcikpLCBtX2xpc3QtPm1C
dWZmZXJzWzBdLm1EYXRhLCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnN0cmVhbURlc2NyaXB0
aW9uKSwgZnJhbWVDb3VudCk7CisgICAgZWxzZQorICAgICAgICBMT0dfRVJST1IoIkFWQXVkaW9D
YXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5l
Y3Rpb24oJXApIC0gQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRC
bG9ja0J1ZmZlciByZXR1cm5lZCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOworCisgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBv
YnNlcnZlci0+cHJvY2Vzcyhmb3JtYXREZXNjcmlwdGlvbiwgc2FtcGxlQnVmZmVyKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIxMTYzOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OnByb2Nlc3NOZXdGcmEKICAgICBpZiAoc2V0dGluZ3NDaGFuZ2VkKQogICAgICAg
ICBzZXR0aW5nc0RpZENoYW5nZSgpOwogCi0gICAgbWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBs
ZUFWRk9iakM6OmNyZWF0ZShtX2J1ZmZlci5nZXQoKSkpOworICAgIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKG1fYnVmZmVyLmdldCgpKSk7CiB9CiAKIHZv
aWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZm
ZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXRUeXBlKiwgQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyLCBBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKKworI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdC5oIgorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUg
IkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQVVDb21wb25lbnQu
aD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxB
dWRpb1Rvb2xib3gvQXVkaW9Vbml0Lmg+CisKKyNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5o
IgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Nv
bnN0IGludCByZW5kZXJCdWZmZXJTaXplID0gMTI4OworCitBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2E6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYShNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYgdHJhY2spCisgICAgOiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
KHRyYWNrKQoreworICAgIHRyYWNrLnNvdXJjZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKK30KKwor
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjp+QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2ludGVy
bmFsU3RhdGVMb2NrKTsKKworICAgIHN0cmVhbVRyYWNrKCkuc291cmNlKCkucmVtb3ZlT2JzZXJ2
ZXIoKnRoaXMpOworCisgICAgaWYgKG1fZGF0YVNvdXJjZSkKKyAgICAgICAgbV9kYXRhU291cmNl
LT5zZXRQYXVzZWQodHJ1ZSk7CisKKyAgICBpZiAobV9yZW1vdGVJT1VuaXQpIHsKKyAgICAgICAg
QXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7CisgICAgICAgIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVtb3RlSU9Vbml0KTsKKyAgICAgICAgbV9yZW1vdGVJT1Vu
aXQgPSBudWxscHRyOworICAgIH0KKworICAgIG1fZGF0YVNvdXJjZSA9IG51bGxwdHI7CisgICAg
bV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0g
bnVsbHB0cjsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBs
YXlJbnRlcm5hbCgpCit7CisgICAgQVNTRVJUKG1faW50ZXJuYWxTdGF0ZUxvY2suaXNIZWxkKCkp
OworCisgICAgaWYgKG1faXNQbGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9y
ZW1vdGVJT1VuaXQpIHsKKyAgICAgICAgQVNTRVJUKG1fZGF0YVNvdXJjZSk7CisgICAgICAgIG1f
ZGF0YVNvdXJjZS0+c2V0UGF1c2VkKGZhbHNlKTsKKyAgICAgICAgaWYgKCFBdWRpb091dHB1dFVu
aXRTdGFydChtX3JlbW90ZUlPVW5pdCkpCisgICAgICAgICAgICBtX2lzUGxheWluZyA9IHRydWU7
CisgICAgfQorCisgICAgbV9hdXRvUGxheSA9ICFtX2lzUGxheWluZzsKK30KKwordm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXkoKQoreworICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1faW50ZXJuYWxTdGF0ZUxvY2spOworICAgIHBsYXlJbnRlcm5hbCgp
OworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6cGF1c2UoKQor
eworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1faW50ZXJuYWxTdGF0ZUxvY2spOwor
CisgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICBtX2F1dG9QbGF5ID0gZmFsc2U7CisKKyAg
ICBpZiAobV9yZW1vdGVJT1VuaXQpCisgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1v
dGVJT1VuaXQpOworICAgIGlmIChtX2RhdGFTb3VyY2UpCisgICAgICAgIG1fZGF0YVNvdXJjZS0+
c2V0UGF1c2VkKHRydWUpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3sKKyAgICBtX3ZvbHVtZSA9IHZvbHVtZTsK
KyAgICBpZiAobV9kYXRhU291cmNlKQorICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFZvbHVtZSht
X3ZvbHVtZSk7Cit9CisKK09TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YTo6c2V0dXBBdWRpb1VuaXQoKQoreworICAgIEFTU0VSVChtX2ludGVybmFsU3RhdGVMb2NrLmlz
SGVsZCgpKTsKKworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gaW9Vbml0RGVzY3JpcHRp
b24geyBrQXVkaW9Vbml0VHlwZV9PdXRwdXQsIDAsIGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBw
bGUsIDAsIDAgfTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaW9Vbml0RGVzY3JpcHRpb24uY29t
cG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX1JlbW90ZUlPOworI2Vsc2UKKyAgICBp
b1VuaXREZXNjcmlwdGlvbi5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVm
YXVsdE91dHB1dDsKKyNlbmRpZgorCisgICAgQXVkaW9Db21wb25lbnQgaW9Db21wb25lbnQgPSBB
dWRpb0NvbXBvbmVudEZpbmROZXh0KG51bGxwdHIsICZpb1VuaXREZXNjcmlwdGlvbik7CisgICAg
QVNTRVJUKGlvQ29tcG9uZW50KTsKKyAgICBpZiAoIWlvQ29tcG9uZW50KSB7CisgICAgICAgIExP
RyhNZWRpYSwgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c2V0dXBBdWRpb1Vu
aXQoJXApIHVuYWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIsIHRoaXMpOwor
ICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgT1NTdGF0dXMgZXJyID0gQXVkaW9Db21w
b25lbnRJbnN0YW5jZU5ldyhpb0NvbXBvbmVudCwgJm1fcmVtb3RlSU9Vbml0KTsKKyAgICBpZiAo
ZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBvcGVuIHZwaW8gdW5pdCwgZXJyb3Ig
JWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0KKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBVSW50MzIgcGFyYW0gPSAxOwor
ICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fcmVtb3RlSU9Vbml0LCBrQXVkaW9PdXRw
dXRVbml0UHJvcGVydHlfRW5hYmxlSU8sIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICZwYXJh
bSwgc2l6ZW9mKHBhcmFtKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEsICJB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFi
bGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBvdXRwdXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChp
bnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorI2VuZGlm
CisKKyAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGNhbGxiYWNrID0geyBpbnB1dFByb2MsIHRo
aXMgfTsKKyAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX3JlbW90ZUlPVW5pdCwga0F1
ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFs
LCAwLCAmY2FsbGJhY2ssIHNpemVvZihjYWxsYmFjaykpOworICAgIGlmIChlcnIpIHsKKyAgICAg
ICAgTE9HKE1lZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpzZXR1cEF1
ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgc3BlYWtlciBwcm9jLCBlcnJvciAl
ZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICByZXR1cm4g
ZXJyOworICAgIH0KKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBvdXRwdXREZXNj
cmlwdGlvbiA9IHsgfTsKKyAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlv
bik7CisgICAgZXJyICA9IEF1ZGlvVW5pdEdldFByb3BlcnR5KG1fcmVtb3RlSU9Vbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZv
dXRwdXREZXNjcmlwdGlvbiwgJnNpemUpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpzZXR1cEF1ZGlvVW5pdHMo
JXApIHVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwg
dGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9
CisKKyAgICBvdXRwdXREZXNjcmlwdGlvbiA9IG1faW5wdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVz
Y3JpcHRpb24oKTsKKyAgICBvdXRwdXREZXNjcmlwdGlvbi5tU2FtcGxlUmF0ZSA9IEF1ZGlvU2Vz
c2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNhbXBsZVJhdGUoKTsKKworICAgIGVyciA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1fcmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbiwgc2l6ZW9m
KG91dHB1dERlc2NyaXB0aW9uKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEs
ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldHVwQXVkaW9Vbml0cyglcCkg
dW5hYmxlIHRvIHNldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJvciAlZCAoJS40cykiLCB0aGlz
LCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKyAg
ICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKKworICAgIGVyciA9IEF1ZGlvVW5pdEluaXRp
YWxpemUobV9yZW1vdGVJT1VuaXQpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgTE9HKE1lZGlh
LCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpzZXR1cEF1ZGlvVW5pdHMoJXAp
IEF1ZGlvVW5pdEluaXRpYWxpemUoKSBmYWlsZWQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChp
bnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAg
QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShyZW5k
ZXJCdWZmZXJTaXplKTsKKworICAgIHJldHVybiBlcnI7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFU
aW1lJiBzYW1wbGVUaW1lLCB2b2lkKiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgQVNTRVJUKGRl
c2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3JtRGVzY3JpcHRp
b246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9pbnRlcm5hbFN0YXRlTG9jayk7CisKKyAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24gc3RyZWFtRGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkZXNjcmlw
dGlvbik7CisgICAgaWYgKCFtX2lucHV0RGVzY3JpcHRpb24gfHwgKm1faW5wdXREZXNjcmlwdGlv
biAhPSBkZXNjcmlwdGlvbikgeworCisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBudWxscHRyOworCisgICAgICAgIGlm
IChtX3JlbW90ZUlPVW5pdCkgeworICAgICAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3Jl
bW90ZUlPVW5pdCk7CisgICAgICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZSht
X3JlbW90ZUlPVW5pdCk7CisgICAgICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IG51bGxwdHI7Cisg
ICAgICAgIH0KKworICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAgICBp
ZiAoc2V0dXBBdWRpb1VuaXQoKSkgeworICAgICAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
bV9kYXRhU291cmNlKQorICAgICAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMik7CisgICAgICAgIGlm
ICghbV9kYXRhU291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX2Rh
dGFTb3VyY2UtPnNldElucHV0Rm9ybWF0KHN0cmVhbURlc2NyaXB0aW9uKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKG1fZGF0YVNvdXJjZS0+c2V0T3V0cHV0Rm9ybWF0KCptX291
dHB1dERlc2NyaXB0aW9uLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBt
X2RhdGFTb3VyY2UtPnNldFZvbHVtZShtX3ZvbHVtZSk7CisgICAgfQorCisgICAgbV9kYXRhU291
cmNlLT5wdXNoU2FtcGxlcyhtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCks
IHNhbXBsZVRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOworCisgICAgaWYgKG1fYXV0b1Bs
YXkpCisgICAgICAgIHBsYXlJbnRlcm5hbCgpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6c291cmNlU3RvcHBlZCgpCit7CisgICAgcGF1c2UoKTsKK30KKwor
T1NTdGF0dXMgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpyZW5kZXIoVUludDMy
IHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QmIGlvRGF0YSwgVUludDMyIC8qaW5CdXNOdW1i
ZXIqLywgY29uc3QgQXVkaW9UaW1lU3RhbXAmIHRpbWVTdGFtcCwgQXVkaW9Vbml0UmVuZGVyQWN0
aW9uRmxhZ3MmIGFjdGlvbkZsYWdzKQoreworICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9j
ayhtX2ludGVybmFsU3RhdGVMb2NrLCBzdGQ6OnRyeV90b19sb2NrKTsKKyAgICBpZiAoIWxvY2su
b3duc19sb2NrKCkpCisgICAgICAgIHJldHVybiBrQXVkaW9Db252ZXJ0ZXJFcnJfVW5zcGVjaWZp
ZWRFcnJvcjsKKworICAgIGlmICghbV9pc1BsYXlpbmcgfHwgbV9tdXRlZCB8fCAhbV9kYXRhU291
cmNlIHx8IHN0cmVhbVRyYWNrKCkubXV0ZWQoKSB8fCBzdHJlYW1UcmFjaygpLmVuZGVkKCkgfHwg
IXN0cmVhbVRyYWNrKCkuZW5hYmxlZCgpKSB7CisgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6emVyb0FCTChpb0RhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4oc2FtcGxlQ291bnQpKTsKKyAg
ICAgICAgYWN0aW9uRmxhZ3MgPSBrQXVkaW9Vbml0UmVuZGVyQWN0aW9uX091dHB1dElzU2lsZW5j
ZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbV9kYXRhU291cmNlLT5wdWxsU2Ft
cGxlcyhpb0RhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4oc2FtcGxlQ291bnQpLCB0aW1lU3RhbXAu
bVNhbXBsZVRpbWUsIHRpbWVTdGFtcC5tSG9zdFRpbWUsIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
Q29weSk7CisKKyAgICByZXR1cm4gMDsKK30KKworT1NTdGF0dXMgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRl
ckFjdGlvbkZsYWdzKiBhY3Rpb25GbGFncywgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVTdGFt
cCwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlz
dCogaW9EYXRhKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EqPih1c2VyRGF0YSktPnJlbmRlcihzYW1wbGVDb3VudCwgKmlvRGF0YSwg
aW5CdXNOdW1iZXIsICp0aW1lU3RhbXAsICphY3Rpb25GbGFncyk7Cit9CisKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9Tb3VyY2VPYnNlcnZl
ck9iakMuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgiCisjaW5j
bHVkZSA8QXVkaW9Ub29sYm94L0FVQ29tcG9uZW50Lmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0Nv
cmVBdWRpb1R5cGVzLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2U7CitjbGFzcyBBdWRpb1NhbXBsZUJ1
ZmZlckxpc3Q7CitjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CisKK2NsYXNzIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2EpCitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2E+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFtVHJhY2spCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2Eoc3RyZWFtVHJhY2spKTsKKyAgICB9CisKKyAgICB2b2lkIHBsYXkoKTsKKyAg
ICB2b2lkIHBhdXNlKCk7CisgICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2lzUGxheWlu
ZzsgfQorCisgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOworICAgIGZsb2F0IHZvbHVtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisKKyAgICB2b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQp
IHsgbV9tdXRlZCA9IG11dGVkOyB9CisgICAgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bXV0ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2EoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKKyAgICB+QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hKCk7CisKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlcgor
ICAgIHZvaWQgc291cmNlU3RvcHBlZCgpIGZpbmFsOworICAgIHZvaWQgc291cmNlTXV0ZWRDaGFu
Z2VkKCkgIGZpbmFsIHsgfQorICAgIHZvaWQgc291cmNlU2V0dGluZ3NDaGFuZ2VkKCkgZmluYWwg
eyB9CisgICAgYm9vbCBwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUm
LCB2b2lkKiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CisK
KyAgICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBBdWRpb1VuaXRSZW5kZXJBY3Rp
b25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50
MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCopOworICAgIE9TU3RhdHVzIHJlbmRl
cihVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIFVJbnQzMiBpbkJ1c051bWJl
ciwgY29uc3QgQXVkaW9UaW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOwor
CisgICAgT1NTdGF0dXMgc2V0dXBBdWRpb1VuaXQoKTsKKyAgICB2b2lkIGNsZWFudXAoKTsKKyAg
ICB2b2lkIHplcm9CdWZmZXJMaXN0KEF1ZGlvQnVmZmVyTGlzdCYsIHNpemVfdCk7CisgICAgdm9p
ZCBwbGF5SW50ZXJuYWwoKTsKKworICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgbV9yZW1vdGVJ
T1VuaXQgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRpb247CisKKyAgICBSZWZQdHI8QXVk
aW9TYW1wbGVEYXRhU291cmNlPiBtX2RhdGFTb3VyY2U7CisKKyAgICBMb2NrIG1faW50ZXJuYWxT
dGF0ZUxvY2s7CisgICAgZmxvYXQgbV92b2x1bWUgeyAxIH07CisgICAgYm9vbCBtX2lzUGxheWlu
ZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2F1dG9QbGF5IHsgZmFsc2UgfTsKKyAgICBib29sIG1f
bXV0ZWQgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjLmgJKHJldmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50MzJfdCBtX21heGlt
aXVtRnJhbWVDb3VudDsKICAgICB1aW50MzJfdCBtX3NhbXBsZVJhdGUgeyA0NDEwMCB9OwotICAg
IGRvdWJsZSBtX2J5dGVzUGVyRnJhbWUgeyBzaXplb2YoRmxvYXQzMikgfTsKKyAgICB1aW50NjRf
dCBtX2J5dGVzRW1pdHRlZCB7IDAgfTsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0
aW9uUmVmPiBtX2Zvcm1hdERlc2NyaXB0aW9uOwogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiBtX3N0cmVhbUZvcm1hdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWMubW0JKHJldmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsOCBAQAogI2ltcG9ydCAiTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VN
YWMuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW1wb3J0ICJBdWRpb1NhbXBsZUJ1
ZmZlckxpc3QuaCIKKyNpbXBvcnQgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogI2ltcG9y
dCAiTWVkaWFDb25zdHJhaW50cy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAj
aW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNDksNiArNTEsMTEgQEAgU09GVF9MSU5LKEF1
ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0
YXRpYyBpbmxpbmUgc2l6ZV90IGFsaWduVG8xNkJ5dGVzKHNpemVfdCBzaXplKQoreworICAgIHJl
dHVybiAoc2l6ZSArIDE1KSAmIH4xNTsKK30KKwogUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAgICAgYXV0byBzb3VyY2Ug
PSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMobmFtZSkpOwpAQCAtOTIs
NyArOTksMTEgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbQogewog
ICAgIEFTU0VSVChtX2Zvcm1hdERlc2NyaXB0aW9uKTsKIAotICAgIENNVGltZSBzdGFydFRpbWUg
PSBDTVRpbWVNYWtlKGVsYXBzZWRUaW1lKCkgKiBtX3NhbXBsZVJhdGUsIG1fc2FtcGxlUmF0ZSk7
CisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9ieXRlc0VtaXR0ZWQsIG1fc2Ft
cGxlUmF0ZSk7CisgICAgbV9ieXRlc0VtaXR0ZWQgKz0gZnJhbWVDb3VudDsKKworICAgIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZSh0b01lZGlhVGltZShzdGFydFRpbWUpLCBtX2F1ZGlvQnVmZmVyTGlz
dC0+bUJ1ZmZlcnNbMF0ubURhdGEsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihtX3N0cmVhbUZv
cm1hdCksIGZyYW1lQ291bnQpOworCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVy
OwogICAgIE9TU3RhdHVzIHJlc3VsdCA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFj
a2V0RGVzY3JpcHRpb25zKG51bGxwdHIsIG51bGxwdHIsIHRydWUsIG51bGxwdHIsIG51bGxwdHIs
IG1fZm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksIGZyYW1lQ291bnQsIHN0YXJ0VGltZSwgbnVsbHB0
ciwgJnNhbXBsZUJ1ZmZlcik7CiAgICAgQVNTRVJUKHNhbXBsZUJ1ZmZlcik7CkBAIC0xMDgsOSAr
MTE5LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbQogICAgIHJl
c3VsdCA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5KHNhbXBsZUJ1ZmZlcik7CiAgICAgQVNT
RVJUKCFyZXN1bHQpOwogCi0gICAgbWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBsZUFWRk9iakM6
OmNyZWF0ZShzYW1wbGVCdWZmZXIpKTsKLQotICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29i
c2VydmVycykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAg
ICAgICAgIG9ic2VydmVyLT5wcm9jZXNzKG1fZm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksIHNhbXBs
ZUJ1ZmZlcik7CiB9CiAKQEAgLTExOSwxMCArMTI4LDI0IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWM6OnJlY29uZmkKICAgICBtX21heGltaXVtRnJhbWVDb3VudCA9IFdURjo6cm91
bmRVcFRvUG93ZXJPZlR3byhyZW5kZXJJbnRlcnZhbCgpIC8gMTAwMC4gKiBtX3NhbXBsZVJhdGUg
KiAyKTsKICAgICBBU1NFUlQobV9tYXhpbWl1bUZyYW1lQ291bnQpOwogCisgICAgY29uc3QgaW50
IGJ5dGVzUGVyRmxvYXQgPSBzaXplb2YoRmxvYXQzMik7CisgICAgY29uc3QgaW50IGJpdHNQZXJC
eXRlID0gODsKKyAgICBpbnQgY2hhbm5lbENvdW50ID0gMTsKKyAgICBtX3N0cmVhbUZvcm1hdCA9
IHsgfTsKKyAgICBtX3N0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc2FtcGxlUmF0ZTsKKyAg
ICBtX3N0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CisgICAg
bV9zdHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9h
dFBhY2tlZDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZs
b2F0ICogY2hhbm5lbENvdW50OworICAgIG1fc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQg
PSAxOworICAgIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lID0gYnl0ZXNQZXJGbG9hdCAq
IGNoYW5uZWxDb3VudDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IGNo
YW5uZWxDb3VudDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQml0c1BlckNoYW5uZWwgPSBiaXRzUGVy
Qnl0ZSAqIGJ5dGVzUGVyRmxvYXQ7CisKICAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJp
YWJsZS1sZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMg
bmV3KCkgb3BlcmF0b3IKICAgICAvLyB3aXRoIGEgY3VzdG9tIHNpemUsIGFuZCBpbml0aWFsaXpl
IHRoZSBzdHJ1Y3QgbWFudWFsbHkuCi0gICAgdWludDMyX3QgYnVmZmVyRGF0YVNpemUgPSBtX2J5
dGVzUGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVDb3VudDsKLSAgICB1aW50MzJfdCBiYXNlU2l6
ZSA9IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgc2l6ZW9mKEF1ZGlvQnVm
ZmVyKTsKKyAgICB1aW50MzJfdCBidWZmZXJEYXRhU2l6ZSA9IG1fc3RyZWFtRm9ybWF0Lm1CeXRl
c1BlckZyYW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQ7CisgICAgdWludDMyX3QgYmFzZVNpemUg
PSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmF1ZGlvQnVmZmVyTGlzdFNpemVGb3JTdHJlYW0obV9z
dHJlYW1Gb3JtYXQpOworCiAgICAgdWludDY0X3QgYnVmZmVyTGlzdFNpemUgPSBiYXNlU2l6ZSAr
IGJ1ZmZlckRhdGFTaXplOwogICAgIEFTU0VSVChidWZmZXJMaXN0U2l6ZSA8PSBTSVpFX01BWCk7
CiAgICAgaWYgKGJ1ZmZlckxpc3RTaXplID4gU0laRV9NQVgpCkBAIC0xMzIsMjMgKzE1NSw4IEBA
IHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmkKICAgICBtX2F1ZGlvQnVm
ZmVyTGlzdCA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1
ZGlvQnVmZmVyTGlzdCo+KDo6b3BlcmF0b3IgbmV3IChtX2F1ZGlvQnVmZmVyTGlzdEJ1ZmZlclNp
emUpKSk7CiAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXJMaXN0LmdldCgpLCAwLCBtX2F1ZGlvQnVm
ZmVyTGlzdEJ1ZmZlclNpemUpOwogCi0gICAgbV9hdWRpb0J1ZmZlckxpc3QtPm1OdW1iZXJCdWZm
ZXJzID0gMTsKLSAgICBhdXRvJiBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNb
MF07Ci0gICAgYnVmZmVyLm1OdW1iZXJDaGFubmVscyA9IDE7Ci0gICAgYnVmZmVyLm1EYXRhQnl0
ZVNpemUgPSBidWZmZXJEYXRhU2l6ZTsKLSAgICBidWZmZXIubURhdGEgPSByZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihtX2F1ZGlvQnVmZmVyTGlzdC5nZXQoKSkgKyBiYXNlU2l6ZTsKLQotICAg
IGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwotICAgIGNvbnN0IGlu
dCBiaXRzUGVyQnl0ZSA9IDg7Ci0gICAgbV9zdHJlYW1Gb3JtYXQgPSB7IH07Ci0gICAgbV9zdHJl
YW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3NhbXBsZVJhdGU7Ci0gICAgbV9zdHJlYW1Gb3JtYXQu
bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwotICAgIG1fc3RyZWFtRm9ybWF0Lm1G
b3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9G
b3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKLSAgICBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQ
YWNrZXQgPSBieXRlc1BlckZsb2F0OwotICAgIG1fc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNr
ZXQgPSAxOwotICAgIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lID0gYnl0ZXNQZXJGbG9h
dDsKLSAgICBtX3N0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IDE7Ci0gICAgbV9zdHJl
YW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0Owor
ICAgIHVpbnQ4X3QqIGJ1ZmZlckRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2F1
ZGlvQnVmZmVyTGlzdC5nZXQoKSkgKyBiYXNlU2l6ZTsKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckxp
c3Q6OmNvbmZpZ3VyZUJ1ZmZlckxpc3RGb3JTdHJlYW0oKm1fYXVkaW9CdWZmZXJMaXN0LmdldCgp
LCBtX3N0cmVhbUZvcm1hdCwgYnVmZmVyRGF0YSwgYnVmZmVyRGF0YVNpemUpOwogCiAgICAgQ01G
b3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKICAgICBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25DcmVhdGUoTlVMTCwgJm1fc3RyZWFtRm9ybWF0LCAwLCBOVUxMLCAwLCBOVUxM
LCBOVUxMLCAmZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTYyLDExICsxNzAsMTIgQEAgdm9pZCBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVuZGVyKAogewogICAgIHN0YXRpYyBkb3VibGUg
dGhldGE7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBmcmVxdWVuY2llc1tdID0geyAxNTAwLiwg
NTAwLiB9OworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdGF1ID0gMiAqIE1fUEk7CiAKICAgICBp
ZiAoIW1fYXVkaW9CdWZmZXJMaXN0KQogICAgICAgICByZWNvbmZpZ3VyZSgpOwogCi0gICAgdWlu
dDMyX3QgdG90YWxGcmFtZUNvdW50ID0gZGVsdGEgKiBtX3NhbXBsZVJhdGU7CisgICAgdWludDMy
X3QgdG90YWxGcmFtZUNvdW50ID0gYWxpZ25UbzE2Qnl0ZXMoZGVsdGEgKiBtX3NhbXBsZVJhdGUp
OwogICAgIHVpbnQzMl90IGZyYW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1lQ291bnQsIG1f
bWF4aW1pdW1GcmFtZUNvdW50KTsKICAgICBkb3VibGUgZWxhcHNlZCA9IGVsYXBzZWRUaW1lKCk7
CiAgICAgd2hpbGUgKGZyYW1lQ291bnQpIHsKQEAgLTE4MCw3ICsxODksNyBAQCB2b2lkIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZW5kZXIoCiAgICAgICAgICAgICBjYXNlIDA6CiAgICAg
ICAgICAgICBjYXNlIDE0OiB7CiAgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gZm1vZChlbGFw
c2VkLCAxKSAqIDI7Ci0gICAgICAgICAgICAgICAgaW5jcmVtZW50ID0gMi4wICogTV9QSSAqIGZy
ZXF1ZW5jaWVzW2luZGV4XSAvIG1fc2FtcGxlUmF0ZTsKKyAgICAgICAgICAgICAgICBpbmNyZW1l
bnQgPSB0YXUgKiBmcmVxdWVuY2llc1tpbmRleF0gLyBtX3NhbXBsZVJhdGU7CiAgICAgICAgICAg
ICAgICAgc2lsZW50ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkBAIC0xOTMsMTAgKzIwMiwxMiBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
OjpyZW5kZXIoCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGJ1ZmZlcltmcmFtZV0gPSBzaW4odGhldGEpICogMC4yNTsKLSAgICAgICAgICAg
IHRoZXRhICs9IGluY3JlbWVudDsKLSAgICAgICAgICAgIGlmICh0aGV0YSA+IDIuMCAqIE1fUEkp
Ci0gICAgICAgICAgICAgICAgdGhldGEgLT0gMi4wICogTV9QSTsKKyAgICAgICAgICAgIGZsb2F0
IHRvbmUgPSBzaW4odGhldGEpICogMC4yNTsKKyAgICAgICAgICAgIGJ1ZmZlcltmcmFtZV0gPSB0
b25lOworCisgICAgICAgICAgICAgICAgdGhldGEgKz0gaW5jcmVtZW50OworICAgICAgICAgICAg
aWYgKHRoZXRhID4gdGF1KQorICAgICAgICAgICAgICAgIHRoZXRhIC09IHRhdTsKICAgICAgICAg
ICAgIGVsYXBzZWQgKz0gMSAvIG1fc2FtcGxlUmF0ZTsKICAgICAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCShyZXZpc2lvbiAyMTE2MzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVTCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IHBpeGVsQnVmZmVyRnJvbUNHSW1hZ2UoaW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKCktPm5hdGl2
ZUltYWdlKCkuZ2V0KCkpOwogICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJG
cm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogICAgIAotICAgIG1lZGlhRGF0YVVw
ZGF0ZWQoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpKSk7Cisg
ICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxl
QnVmZmVyLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oCShyZXZpc2lvbiAyMTE2Mzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDE0IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDX2gKLSNkZWZpbmUgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakNfaAorI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAj
aW5jbHVkZSAiQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmgiCiAjaW5jbHVkZSAiQXVk
aW9Tb3VyY2VPYnNlcnZlck9iakMuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgi
CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNjgsMTYgKzY4LDE0IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNj
cmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7
CiAKLSAgICB1aW50NjRfdCBtX3dyaXRlQWhlYWRDb3VudCB7IDAgfTsKICAgICB1aW50NjRfdCBt
X3dyaXRlQ291bnQgeyAwIH07CiAgICAgdWludDY0X3QgbV9yZWFkQ291bnQgeyAwIH07CiAgICAg
QXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgQXVk
aW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDKiBtX2NhcHR1cmVTb3VyY2UgeyBudWxscHRyIH07
CisgICAgTG9jayBtX211dGV4OwogICAgIGJvb2wgbV9jb25uZWN0ZWQgeyBmYWxzZSB9OwogfTsK
ICAgICAKIH0KIAogI2VuZGlmCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTY1LDYgKzY1LDggQEAgV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OldlYkF1ZGlvUwogCiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6fldl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKCkKIHsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9j
az4gbG9jayhtX211dGV4KTsKKwogICAgIGlmIChtX2NvbnZlcnRlcikgewogICAgICAgICAvLyBG
SVhNRTogbWFrZSBhbmQgdXNlIGEgc21hcnQgcG9pbnRlciBmb3IgQXVkaW9Db252ZXJ0ZXIKICAg
ICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fY29udmVydGVyKTsKQEAgLTc2LDcgKzc4LDgg
QEAgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5XZWJBdWRpbwogCiB2b2lkIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm92aWRlSW5wdXQoQXVkaW9CdXMqIGJ1cywgc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICBpZiAoIW1fcmluZ0J1ZmZlcikgeworICAgIHN0
ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX211dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsKKyAg
ICBpZiAoIWxvY2sub3duc19sb2NrKCkgfHwgIW1fcmluZ0J1ZmZlcikgewogICAgICAgICBidXMt
Pnplcm8oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg1LDEyICs4OCwxMiBAQCB2b2lk
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm92CiAgICAgdWludDY0X3QgZW5kRnJh
bWUgPSAwOwogICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJh
bWUsIGVuZEZyYW1lKTsKIAotICAgIGlmIChtX3dyaXRlQ291bnQgPD0gbV9yZWFkQ291bnQgKyBt
X3dyaXRlQWhlYWRDb3VudCkgeworICAgIGlmIChtX3dyaXRlQ291bnQgPD0gbV9yZWFkQ291bnQp
IHsKICAgICAgICAgYnVzLT56ZXJvKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1
aW50NjRfdCBmcmFtZXNBdmFpbGFibGUgPSBlbmRGcmFtZSAtIChtX3JlYWRDb3VudCArIG1fd3Jp
dGVBaGVhZENvdW50KTsKKyAgICB1aW50NjRfdCBmcmFtZXNBdmFpbGFibGUgPSBlbmRGcmFtZSAt
IG1fcmVhZENvdW50OwogICAgIGlmIChmcmFtZXNBdmFpbGFibGUgPCBmcmFtZXNUb1Byb2Nlc3Mp
IHsKICAgICAgICAgZnJhbWVzVG9Qcm9jZXNzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihmcmFtZXNB
dmFpbGFibGUpOwogICAgICAgICBidXMtPnplcm8oKTsKQEAgLTEzNiw2ICsxMzksOCBAQCB2b2lk
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpzZXRDCiAKIHZvaWQgV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uKiBmb3JtYXQpCiB7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7
CisKICAgICBMT0coTWVkaWEsICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFy
ZSglcCkiLCB0aGlzKTsKIAogICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqZm9ybWF0KTsKQEAgLTIwMCw2ICsyMDUs
OCBAQCB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwCiAKIHZvaWQgV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnVucHJlcGFyZSgpCiB7CisgICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBu
dWxscHRyOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBudWxscHRyOwogICAgIG1fcmluZ0J1
ZmZlciA9IG51bGxwdHI7CkBAIC0yMTQsNiArMjIxLDggQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQzo6dW5wcgogCiB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
Ojpwcm9jZXNzKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlcikKIHsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKwog
ICAgIGlmICghbV9yaW5nQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmgJKHJldmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcihkb3VibGUpIHsgfQogCiAgICAgZG91
YmxlIGVsYXBzZWRUaW1lKCk7Ci0gICAgc3RhdGljIGludCByZW5kZXJJbnRlcnZhbCgpIHsgcmV0
dXJuIDEyNTsgfQorICAgIHN0YXRpYyBpbnQgcmVuZGVySW50ZXJ2YWwoKSB7IHJldHVybiA2MDsg
fQogCiBwcml2YXRlOgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300713</attachid>
            <date>2017-02-06 05:26:49 -0800</date>
            <delta_ts>2017-02-06 06:47:57 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>core_audio_renderer_patch_2.txt</filename>
            <type>text/plain</type>
            <size>76112</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBAQAorMjAxNy0wMi0wMyAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
TWFjXSBTdG9wIHVzaW5nIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODIxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXNJbnRlcm5hbCk6IERvbid0IGFzc3VtZSB0aGUg
Zmlyc3QgdGltZXN0YW1wIGZyb20gdGhlCisgICAgICAgIHJlbmRlciBwcm9jIGFmdGVyIGEgcGF1
c2UgaXMgemVyby4KKworICAgICAgICBTdG9wIHVzaW5nIGFuIGF1ZGlvIHJlbmRlcmVyIGZvciBl
YWNoIGF1ZGlvIHRyYWNrLiBObyBhdWRpbyByZW5kZXJlcnMgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0
byB1c2UKKyAgICAgICAgYW4gQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgor
ICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGludmFsaWRh
dGVdKTogTm8gbW9yZSBhdWRpbyByZW5kZXJlcnMuCisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVm
ZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpj
aGFuZ2U6Y29udGV4dDpdKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKTogUGF1
c2UKKyAgICAgICAgICBhdWRpbyB0cmFja3MgZXhwbGljaXRseS4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXVkaW9Tb3VyY2VQcm92aWRl
cik6IFJlbW92ZSB0aGUgZXhpc3RpbmcgY29kZSwKKyAgICAgICAgICBpdCB3YXMgaW5jb3JyZWN0
IGFuZCBub3QgdGhyZWFkIHNhZmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmZsdXNoUmVuZGVyZXJzKTogTm8gbW9yZSBhdWRpbyByZW5k
ZXJlcnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmVuc3VyZUxheWVyKTogTm8gbW9yZSByZW5kZXIgc3luY2hyb25pemVyLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95
TGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGxheSk6IFN0YXJ0IGVhY2ggYXVkaW8gdHJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKTogUGF1
c2UgZWFjaCBhdWRpbyB0cmFjay4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKTogUGFzcyB0aGUgY29tbWFuZCB0byBlYWNo
IGF1ZGlvIHRyYWNrLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpzZXRNdXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdHJlYW1UaW1lKTogTm8gbW9yZSByZW5k
ZXIgc3luY2hyb25pemVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzYW1wbGVCdWZmZXJVcGRhdGVkKTogRG9uJ3QgaGFuZGxlIGF1ZGlv
IHNhbXBsZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnVwZGF0ZVRyYWNrcyk6IFVwZGF0ZSBmb3IgYXVkaW8gdHJhY2sgY2xhc3MgY2hh
bmdlLiBObworICAgICAgICBtb3JlIHJlbmRlciBzeW5jaHJvbml6ZXIuCisgICAgICAgICgtW1dl
YkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdSZW5kZXJl
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VM
aXN0ZW5lciBzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6XSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVBdWRpb1Nh
bXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpjcmVhdGVBdWRpb1JlbmRlcmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUF1ZGlvUmVu
ZGVyZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95QXVkaW9SZW5kZXJlcnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW5kZXJl
clN0YXR1c0RpZENoYW5nZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUpOiBh
ZGQvcmVtb3ZlT2JzZXJ2ZXIgdGFrZXMgYSByZWZlcmVuY2UsCisgICAgICAgIG5vdCBhIHBvaW50
ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6fk1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOiBSZW5hbWVkIGZyb20gc291cmNlSGFz
TW9yZU1lZGlhRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Ojpzb3VyY2VIYXNNb3JlTWVkaWFEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcik6IFRha2UgYSByZWZlcmVuY2UsIG5v
dCBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpyZW1v
dmVPYnNlcnZlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOiBSZW5hbWVkIGZyb20gbWVkaWFEYXRhVXBkYXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3Ap
OiBEcml2ZS1ieSBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6cmVxdWVzdFN0b3ApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2U6Om1lZGlhRGF0YVVwZGF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnNodXRkb3duQ2FwdHVyZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRP
dXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVk
LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnByb2Nlc3NO
ZXdGcmFtZSk6IENhbGwgdmlkZW9TYW1wbGVBdmFpbGFibGUsIG5vdCBtZWRpYURhdGFVcGRhdGVk
LgorCisgICAgICAgIFJlbmRlciBhdWRpbyB3aXRoIGEgQ29yZUF1ZGlvIG91dHB1dCB1bml0Lgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6fkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXlJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpwYXVzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldFZv
bHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E6OnNldHVwQXVkaW9Vbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c291cmNlU3RvcHBlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnJlbmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6
OmlucHV0UHJvYyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmFsaWduVG8xNkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjplbWl0U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOiBNaW5vciBj
bGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJl
bmRlcik6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6IENhbGwgdmlkZW9TYW1wbGVBdmFp
bGFibGUsIG5vdCBtZWRpYURhdGFVcGRhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5XZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6cHJvdmlkZUlucHV0KTogVXNlIGEgbXV0ZXguIEdldCByaWQgb2Yg
bV93cml0ZUFoZWFkQ291bnQsCisgICAgICAgIGl0IGlzIGFsd2F5cyAwLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUpOiBVc2UgYSBsb2Nr
LgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnVucHJl
cGFyZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM6OnByb2Nlc3MpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZUF1ZGlvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6cmVuZGVySW50ZXJ2YWwpOiBEZWNyZWFzZSB0aGUgcmVuZGVyIGludGVydmFsLgorCiAy
MDE3LTAyLTAzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXVtXSzJdIEFkZCBTUEkgdG8gb3ZlcnJpZGUgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IG9mIGEgcGFnZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiAr
MTU5LDcgQEAKIAkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzYzOEE5ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSAqLzsg
fTsKIAkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4
NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkwNzY5NzA4NzE0NjNBRDg3
MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xp
c3QuaCAqLzsgfTsKKwkJMDc2RUMxMzMxRTQ0RjU2RDAwRTVEODEzIC8qIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmNwcCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0
IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQkwNzcwN0NCMDFFMjA1RUUz
MDAwMDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAvKiBB
dWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovOyB9OwogCQkwNzc2NjRGQzE4M0U2QjVDMDAxMzNC
OTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyog
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CkBAIC0yODQsNyArMjg1LDYg
QEAKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFE
ODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLzsgfTsKIAkJMDdDMDQ2
QzMxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NzFFNDBEQ0ZE
MDA3MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcCAqLzsgfTsKIAkJMDdDMDQ2
QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQjg3NTgxRTQwRENGRDAw
NzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA3QzA0NkM3MUU0MjUxNTUwMDcyMDFFNyAv
KiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMDQ2QzUxRTQyNTEyRjAwNzIwMUU3IC8q
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgKi87IH07CiAJCTA3QzA0NkM4
MUU0MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM2MUU0
MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLzsg
fTsKIAkJMDdDMDQ2Q0IxRTQyNjQxMzAwNzIwMUU3IC8qIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzU2
MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAw
QkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2
IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9OwpAQCAtNzI1Niw2ICs3
MjU2LDcgQEAKIAkJMDc2MzhBOTgxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNl
c3Npb25NYW5hZ2VySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzY5NzA4
NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc3MDdDQUYxRTIwNUVDNDAwMDA1QkY3IC8qIEF1ZGlvU291cmNlT2JzZXJ2ZXJP
YmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU291cmNlT2JzZXJ2
ZXJPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzM3LDYgKzczMzgsNyBA
QAogCQkwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QjcxMTZCMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjcxMTZD
MUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0MxQzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWlu
dHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBC
RDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUzOTQsMTMgKzE1
Mzk2LDEzIEBACiAJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBtYWMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3NkVDMTMyMUU0NEYyQ0IwMEU1
RDgxMyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwICovLAogCQkJCTVD
REQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3Bw
ICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaCAqLywKIAkJCQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIg
LyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDc3MDdDQjExRTIwNjQ5
QzAwMDA1QkY3IC8qIEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQy5oICovLAogCQkJCTA3
NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovLAot
CQkJCTA3QzA0NkM1MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EuY3BwICovLAogCQkJCTA3QzA0NkM2MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLywKIAkJCQkwNzAzNjNEODE4MUExQ0RDMDBD
MDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJCQkwNzAzNjNEOTE4MUExQ0RD
MDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gKi8sCkBAIC0yNTIyOSw2ICsyNTIz
MSw3IEBACiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRl
QVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0QTc2MzE4MEY5
RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3QzA0NkM4MUU0MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RDZBNEY4MUJGMjMw
N0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDMxNjA4QjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdFRTY4NDYwMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlv
bkNGLmggaW4gSGVhZGVycyAqLywKQEAgLTMxODU0LDYgKzMxODU3LDcgQEAKIAkJCQk3QzM5QzM3
NDFEREJCOEQzMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0U1OEQ1NzFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBRTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RS
ZWZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3NkVDMTMzMUU0NEY1NkQwMEU1RDgx
MyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBRTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RTcGFuRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjIyN0FFOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVVJJUmVmZXJl
bmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUVDMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdVc2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIxMDMsNyArMzIxMDcsNiBAQAog
CQkJCTQ5QzdCOUU1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRleHR1cmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNkY5OTVBMjMxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVHJhbnNmb3JtRmVl
ZGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8q
IFdlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3QzA0NkM3MUU0
MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMjUxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVmVydGV4
QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkYyMjJCNzYxQUI1MkQ4QTAwOTQ2
NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc3QTE3QTc3MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHAJKHJldmlzaW9uIDIx
MTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURh
dGFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsMTQgKzI1NSwxMyBAQCBib29sIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXNJCiAgICAgICAgIGNvbnN0IGRvdWJsZSB0
ZW5NUyA9IC4wMTsKICAgICAgICAgY29uc3QgZG91YmxlIGZpdmVNUyA9IC4wMDU7CiAgICAgICAg
IGRvdWJsZSBzYW1wbGVSYXRlID0gbV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpOwor
ICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IHRpbWVTdGFtcCArIG1fdGltZVN0YW1wOwog
ICAgICAgICBpZiAoYnVmZmVyZWQgPiBzYW1wbGVSYXRlICogdHdlbnR5TVMpCi0gICAgICAgICAg
ICBtX291dHB1dFNhbXBsZU9mZnNldCA9IG1fdGltZVN0YW1wIC0gc2FtcGxlUmF0ZSAqIHR3ZW50
eU1TOworICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgLT0gc2FtcGxlUmF0ZSAqIHR3
ZW50eU1TOwogICAgICAgICBlbHNlIGlmIChidWZmZXJlZCA+IHNhbXBsZVJhdGUgKiB0ZW5NUykK
LSAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gbV90aW1lU3RhbXAgLSBzYW1wbGVS
YXRlICogdGVuTVM7CisgICAgICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCAtPSBzYW1wbGVS
YXRlICogdGVuTVM7CiAgICAgICAgIGVsc2UgaWYgKGJ1ZmZlcmVkID4gc2FtcGxlUmF0ZSAqIGZp
dmVNUykKLSAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gbV90aW1lU3RhbXAgLSBz
YW1wbGVSYXRlICogZml2ZU1TOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX291dHB1dFNh
bXBsZU9mZnNldCA9IG1fdGltZVN0YW1wOworICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZz
ZXQgLT0gc2FtcGxlUmF0ZSAqIGZpdmVNUzsKIAogICAgICAgICBtX3RyYW5zaXRpb25pbmdGcm9t
UGF1c2VkID0gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgJKHJl
dmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxl
QnVmZmVyICpDTVMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtOworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
OwogY2xhc3MgQVZWaWRlb0NhcHR1cmVTb3VyY2U7CiBjbGFzcyBDbG9jazsKIGNsYXNzIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudDsKQEAgLTU1LDEwICs1NSw2IEBAIGNsYXNzIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW07CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI7CiAj
ZW5kaWYKIAotI2lmIF9faGFzX2luY2x1ZGUoPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlclJl
bmRlclN5bmNocm9uaXplci5oPikKLSNkZWZpbmUgVVNFX1JFTkRFUl9TWU5DSFJPTklaRVIgMQot
I2VuZGlmCi0KIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHByaXZhdGUgTWVkaWFTdHJl
YW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2Jz
ZXJ2ZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQyhNZWRpYVBsYXllciopOwpAQCAtODEsNyArNzcsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbnN1cmVMYXllcigpOwogICAgIHZvaWQgZGVzdHJveUxheWVyKCk7CiAKLSAgICB2b2lk
IHJlbmRlcmVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciosIE5T
TnVtYmVyKik7CiAgICAgdm9pZCBsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciosIE5TTnVtYmVyKik7CiAKIHByaXZhdGU6CkBAIC0xNDQsMTMgKzEzOSw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBmbHVzaEFuZFJlbW92ZVZpZGVvU2FtcGxlQnVmZmVycygpOwog
ICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogCi0g
ICAgdm9pZCBlbnF1ZXVlQXVkaW9TYW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBNZWRp
YVNhbXBsZSYpOwotICAgIHZvaWQgY3JlYXRlQXVkaW9SZW5kZXJlcihBdG9taWNTdHJpbmcpOwot
ICAgIHZvaWQgZGVzdHJveUF1ZGlvUmVuZGVyZXIoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVy
Kik7Ci0gICAgdm9pZCBkZXN0cm95QXVkaW9SZW5kZXJlcihBdG9taWNTdHJpbmcpOwotICAgIHZv
aWQgZGVzdHJveUF1ZGlvUmVuZGVyZXJzKCk7Ci0gICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9u
V2hlblJlYWR5Rm9yQXVkaW9EYXRhKEF0b21pY1N0cmluZyk7Ci0KICAgICB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFTdHJlYW1Qcml2YXRlICYmIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2
ZU1ldGFkYXRhOyB9CkBAIC0yMTAsOSArMTk4LDcgQEAgcHJpdmF0ZToKIAogICAgIE1lZGlhVGlt
ZSBzdHJlYW1UaW1lKCkgY29uc3Q7CiAKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7Ci0jZW5k
aWYKIAogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKICAgICBXZWFrUHRy
RmFjdG9yeTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+IG1fd2Vha1B0ckZh
Y3Rvcnk7CkBAIC0yMjIsMjIgKzIwOCwxNCBAQCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRyPFdl
YkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+IG1fc3RhdHVzQ2hhbmdlTGlzdGVu
ZXI7CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICBIYXNo
TWFwPFN0cmluZywgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4+IG1fYXVk
aW9SZW5kZXJlcnM7Ci0gICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25p
emVyPiBtX3N5bmNocm9uaXplcjsKLSNlbHNlCiAgICAgc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBt
X2Nsb2NrOwotI2VuZGlmCiAKICAgICBNZWRpYVRpbWUgbV9wYXVzZWRUaW1lOwogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBtX3BhdXNlZEltYWdlOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNrTWFwOworICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
Pj4gbV9hdWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKICAgICBQZW5kaW5nU2FtcGxl
UXVldWUgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9O
SVpFUikKLSAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZTsK
LSNlbmRpZgogCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7
IE1lZGlhUGxheWVyOjpFbXB0eSB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZyB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbQkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2ltcG9ydCAiQVZGb3VuZGF0
aW9uU1BJLmgiCi0jaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgiCisjaW1w
b3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKICNpbXBvcnQgIkNsb2Nr
LmgiCiAjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0LmgiCkBAIC01Miw3ICs1Miw2IEBACiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uKQogCi1TT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBB
VlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIpCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZG
b3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKIFNPRlRfTElOS19DTEFTU19P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyKQog
CkBAIC02NywxNSArNjYsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBAaW50ZXJmYWNl
IFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7CiAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKiBfcGFyZW50OwogICAgIFZlY3Rv
cjxSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwotICAgIFZl
Y3RvcjxSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPj4gX3JlbmRlcmVyczsK
IH0KIAogLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQyopY2FsbGJhY2s7CiAtICh2b2lkKWludmFsaWRhdGU7CiAtICh2b2lkKWJlZ2luT2Jz
ZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICopbGF5ZXI7CiAtICh2b2lk
KXN0b3BPYnNlcnZpbmdMYXllcjooQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilsYXllcjsK
LS0gKHZvaWQpYmVnaW5PYnNlcnZpbmdSZW5kZXJlcjooQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRl
cmVyICopcmVuZGVyZXI7Ci0tICh2b2lkKXN0b3BPYnNlcnZpbmdSZW5kZXJlcjooQVZTYW1wbGVC
dWZmZXJBdWRpb1JlbmRlcmVyICopcmVuZGVyZXI7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyCkBAIC0xMDEsMTAgKzk3LDYgQEAg
LSAodm9pZClpbnZhbGlkYXRlCiAgICAgICAgIFtsYXllciByZW1vdmVPYnNlcnZlcjpzZWxmIGZv
cktleVBhdGg6QCJzdGF0dXMiXTsKICAgICBfbGF5ZXJzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1
dG8mIHJlbmRlcmVyIDogX3JlbmRlcmVycykKLSAgICAgICAgW3JlbmRlcmVyIHJlbW92ZU9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOwotICAgIF9yZW5kZXJlcnMuY2xlYXIoKTsK
LQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2
ZXI6c2VsZl07CiAKICAgICBfcGFyZW50ID0gbnVsbHB0cjsKQEAgLTEyOCwyNCArMTIwLDYgQEAg
LSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZgogICAgIF9sYXllcnMucmVt
b3ZlKF9sYXllcnMuZmluZChsYXllcikpOwogfQogCi0tICh2b2lkKWJlZ2luT2JzZXJ2aW5nUmVu
ZGVyZXI6KEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciopcmVuZGVyZXIKLXsKLSAgICBBU1NF
UlQoX3BhcmVudCk7Ci0gICAgQVNTRVJUKCFfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVyKSk7
Ci0KLSAgICBfcmVuZGVyZXJzLmFwcGVuZChyZW5kZXJlcik7Ci0gICAgW3JlbmRlcmVyIGFkZE9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07Ci19Ci0KLS0gKHZvaWQpc3RvcE9ic2Vydmlu
Z1JlbmRlcmVyOihBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqKXJlbmRlcmVyCi17Ci0gICAg
QVNTRVJUKF9wYXJlbnQpOwotICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVy
KSk7Ci0KLSAgICBbcmVuZGVyZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3Rh
dHVzIl07Ci0gICAgX3JlbmRlcmVycy5yZW1vdmUoX3JlbmRlcmVycy5maW5kKHJlbmRlcmVyKSk7
Ci19Ci0KIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRo
IG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4
dDoodm9pZCAqKWNvbnRleHQKIHsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CkBAIC0xNjcs
MTkgKzE0MSw2IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcKICAg
ICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyU3RhdHVzRGlkQ2hhbmdlKGxh
eWVyLmdldCgpLCBzdGF0dXMuZ2V0KCkpOwogICAgICAgICB9KTsKIAotICAgIH0gZWxzZSBpZiAo
W29iamVjdCBpc0tpbmRPZkNsYXNzOmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNsYXNz
KCldKSB7Ci0gICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJl
bmRlcmVyID0gKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqKW9iamVjdDsKLSAgICAgICAg
UmV0YWluUHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFs
dWVDaGFuZ2VOZXdLZXldOwotCi0gICAgICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5zKHJl
bmRlcmVyLmdldCgpKSk7Ci0gICAgICAgIEFTU0VSVChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJzdGF0dXMiXSk7Ci0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIHJlbmRlcmVyID0gV1RGTW92ZShyZW5kZXJlciksIHN0
YXR1cyA9IFdURk1vdmUoc3RhdHVzKV0gewotICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxm
LT5fcGFyZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgcHJvdGVj
dGVkU2VsZi0+X3BhcmVudC0+cmVuZGVyZXJTdGF0dXNEaWRDaGFuZ2UocmVuZGVyZXIuZ2V0KCks
IHN0YXR1cy5nZXQoKSk7Ci0gICAgICAgIH0pOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE5NiwxMSArMTU3LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpNZQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV93
ZWFrUHRyRmFjdG9yeSh0aGlzKQogICAgICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5T
KFtbV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQ
YXJlbnQ6dGhpc10pKQotI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgICwgbV9zeW5j
aHJvbml6ZXIoYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplcklu
c3RhbmNlKCkgaW5pdF0pKQotI2Vsc2UKICAgICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgpKQot
I2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpCiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXI6OmNyZWF0ZSgpKQogI2VuZGlmCkBAIC0yMTEsNiArMTY4LDkgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZQogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoJXApIiwgdGhpcyk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkKKyAgICAg
ICAgdHJhY2stPnBhdXNlKCk7CisKICAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUpIHsKICAg
ICAgICAgbV9tZWRpYVN0cmVhbVByaXZhdGUtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIApAQCAt
MjE5LDkgKzE3OSw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk0K
ICAgICB9CiAKICAgICBkZXN0cm95TGF5ZXIoKTsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpF
UikKLSAgICBkZXN0cm95QXVkaW9SZW5kZXJlcnMoKTsKLSNlbmRpZgogCiAgICAgbV9hdWRpb1Ry
YWNrTWFwLmNsZWFyKCk7CiAgICAgbV92aWRlb1RyYWNrTWFwLmNsZWFyKCk7CkBAIC0zMTUsMzMg
KzI3Miw2IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUEKICAgICBy
ZXR1cm4gdGltZWxpbmVPZmZzZXQ7CiB9CiAKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9T
YW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxl
KQotewotICAgIEFTU0VSVChtX2F1ZGlvVHJhY2tNYXAuY29udGFpbnModHJhY2suaWQoKSkpOwot
ICAgIEFTU0VSVChtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHNhbXBsZS50cmFja0lEKCkpKTsK
LQotICAgIGF1dG8gYXVkaW9UcmFjayA9IG1fYXVkaW9UcmFja01hcC5nZXQodHJhY2suaWQoKSk7
Ci0gICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0ID0gYXVkaW9UcmFjay0+dGltZWxpbmVPZmZz
ZXQoKTsKLSAgICBpZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
KSB7Ci0gICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoc2Ft
cGxlLCByZW5kZXJlckxhdGVuY3kpOwotICAgICAgICBhdWRpb1RyYWNrLT5zZXRUaW1lbGluZU9m
ZnNldCh0aW1lbGluZU9mZnNldCk7Ci0gICAgICAgIExPRyhNZWRpYUNhcHR1cmVTYW1wbGVzLCAi
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGU6
IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICVzIiwgdHJhY2suaWQoKS51dGY4
KCkuZGF0YSgpLCB0b1N0cmluZyh0aW1lbGluZU9mZnNldCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
fQotCi0gICAgdXBkYXRlU2FtcGxlVGltZXMoc2FtcGxlLCB0aW1lbGluZU9mZnNldCwgIk1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUF1ZGlvU2FtcGxlIik7Ci0K
LSAgICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRlcmVycy5nZXQoc2FtcGxlLnRyYWNrSUQo
KSk7Ci0gICAgaWYgKCFbcmVuZGVyZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAg
ICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUsIHNh
bXBsZSk7Ci0gICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEo
c2FtcGxlLnRyYWNrSUQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBbcmVuZGVy
ZXIgZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21T
YW1wbGVCdWZmZXJdOwotfQotI2VuZGlmCi0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
IHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAgIEFTU0VSVChtX3ZpZGVvVHJhY2tN
YXAuY29udGFpbnModHJhY2suaWQoKSkpOwpAQCAtNDAwLDEwMSArMzMwLDExIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICB9XTsKIH0KIAotI2lmIFVTRShS
RU5ERVJfU1lOQ0hST05JWkVSKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEoQXRvbWljU3Ry
aW5nIHRyYWNrSUQpCi17Ci0gICAgaWYgKCFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNr
SUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRl
cmVycy5nZXQodHJhY2tJRCk7Ci0gICAgW3JlbmRlcmVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVh
ZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeIHsKLSAgICAg
ICAgW3JlbmRlcmVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKLQotICAgICAgICBhdXRvIGF1
ZGlvVHJhY2sgPSBtX2F1ZGlvVHJhY2tNYXAuZ2V0KHRyYWNrSUQpOwotICAgICAgICB3aGlsZSAo
IW1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAo
IVtyZW5kZXJlciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgICAgICBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yQXVkaW9EYXRhKHRyYWNrSUQpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBzYW1w
bGUgPSBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAgICAg
ZW5xdWV1ZUF1ZGlvU2FtcGxlKGF1ZGlvVHJhY2stPnN0cmVhbVRyYWNrKCksIHNhbXBsZS5nZXQo
KSk7Ci0gICAgICAgIH0KLSAgICB9XTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OmNyZWF0ZUF1ZGlvUmVuZGVyZXIoQXRvbWljU3RyaW5nIHRyYWNrSUQp
Ci17Ci0gICAgQVNTRVJUKCFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKTsKLSAg
ICBhdXRvIHJlbmRlcmVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbcmVuZGVyZXIgc2V0QXVkaW9UaW1lUGl0Y2hBbGdv
cml0aG06KG1fcGxheWVyLT5wcmVzZXJ2ZXNQaXRjaCgpID8gQVZBdWRpb1RpbWVQaXRjaEFsZ29y
aXRobVNwZWN0cmFsIDogQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCldOwotICAg
IG1fYXVkaW9SZW5kZXJlcnMuc2V0KHRyYWNrSUQsIHJlbmRlcmVyKTsKLSAgICBbbV9zeW5jaHJv
bml6ZXIgYWRkUmVuZGVyZXI6cmVuZGVyZXIuZ2V0KCldOwotICAgIFttX3N0YXR1c0NoYW5nZUxp
c3RlbmVyIGJlZ2luT2JzZXJ2aW5nUmVuZGVyZXI6cmVuZGVyZXIuZ2V0KCldOwotICAgIGlmICht
X2F1ZGlvUmVuZGVyZXJzLnNpemUoKSA9PSAxKQotICAgICAgICByZW5kZXJpbmdNb2RlQ2hhbmdl
ZCgpOwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVz
dHJveUF1ZGlvUmVuZGVyZXIoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyKiByZW5kZXJlcikK
LXsKLSAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6cmVu
ZGVyZXJdOwotICAgIFtyZW5kZXJlciBmbHVzaF07Ci0gICAgW3JlbmRlcmVyIHN0b3BSZXF1ZXN0
aW5nTWVkaWFEYXRhXTsKLQotICAgIENNVGltZSBub3cgPSBDTVRpbWViYXNlR2V0VGltZShbbV9z
eW5jaHJvbml6ZXIgdGltZWJhc2VdKTsKLSAgICBbbV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVuZGVy
ZXI6cmVuZGVyZXIgYXRUaW1lOm5vdyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6XihCT09MKSB7IH1d
OwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJv
eUF1ZGlvUmVuZGVyZXIoQXRvbWljU3RyaW5nIHRyYWNrSUQpCi17Ci0gICAgaWYgKCFtX2F1ZGlv
UmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkZXN0
cm95QXVkaW9SZW5kZXJlcihtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFja0lEKS5nZXQoKSk7Ci0g
ICAgbV9hdWRpb1JlbmRlcmVycy5yZW1vdmUodHJhY2tJRCk7Ci0gICAgaWYgKCFtX2F1ZGlvUmVu
ZGVyZXJzLnNpemUoKSkKLSAgICAgICAgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKLX0KLQotdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lBdWRpb1JlbmRl
cmVycygpCi17Ci0gICAgbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5jbGVhcigpOwotICAgIGZv
ciAoYXV0byYgcmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQotICAgICAgICBk
ZXN0cm95QXVkaW9SZW5kZXJlcihyZW5kZXJlci5nZXQoKSk7Ci0gICAgbV9hdWRpb1JlbmRlcmVy
cy5jbGVhcigpOwotfQotCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogewogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCByZXR1cm4gYSBtaXggb2YgYWxsIGF1ZGlvIHRyYWNrcyAtIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzMDUKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICh0cmFj
ay0+c3RyZWFtVHJhY2soKS5lbmRlZCgpIHx8ICF0cmFjay0+c3RyZWFtVHJhY2soKS5lbmFibGVk
KCkgfHwgdHJhY2stPnN0cmVhbVRyYWNrKCkubXV0ZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIHJldHVybiB0cmFjay0+c3RyZWFtVHJhY2soKS5hdWRpb1NvdXJjZVByb3Zp
ZGVyKCk7Ci0gICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQotI2VuZGlmCi0KLXZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW5kZXJlclN0YXR1c0RpZENoYW5n
ZShBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqIHJlbmRlcmVyLCBOU051bWJlciogc3RhdHVz
KQotewotI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgIFN0cmluZyB0cmFja0lEOwot
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fYXVkaW9SZW5kZXJlcnMpIHsKLSAgICAgICAgaWYgKHBh
aXIudmFsdWUgPT0gcmVuZGVyZXIpIHsKLSAgICAgICAgICAgIHRyYWNrSUQgPSBwYWlyLmtleTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIEFTU0VSVCghdHJhY2tJ
RC5pc0VtcHR5KCkpOwotICAgIGlmIChzdGF0dXMuaW50ZWdlclZhbHVlID09IEFWUXVldWVkU2Ft
cGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzUmVuZGVyaW5nKQotICAgICAgICBtX2F1ZGlvVHJhY2tN
YXAuZ2V0KHRyYWNrSUQpLT5zZXRUaW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOwotICAgIFVOVVNFRF9QQVJB
TShzdGF0dXMpOwotI2VuZGlmCi19CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciogbGF5ZXIsIE5TTnVtYmVyKiBzdGF0dXMpCiB7CkBAIC01MTMsMTEgKzM1Myw2IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBpZiAobV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBm
bHVzaF07Ci0KLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICBmb3IgKGF1dG8mIHJl
bmRlcmVyIDogbV9hdWRpb1JlbmRlcmVycy52YWx1ZXMoKSkKLSAgICAgICAgW3JlbmRlcmVyIGZs
dXNoXTsKLSNlbmRpZgogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6c2hvdWxkRW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyKCkgY29uc3QKQEAgLTU0OSwxMCAr
Mzg0LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENH
Q29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9i
c2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKIAotI2lmIFVT
RShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjpt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKV07Ci0jZW5kaWYKLQogICAgIHJlbmRlcmlu
Z01vZGVDaGFuZ2VkKCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCkBAIC01NzAsMTMgKzQwMSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICAgICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIg
c3RvcE9ic2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKICAg
ICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRh
XTsKICAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKLSNpZiBVU0Uo
UkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICAgICAgQ01UaW1lIGN1cnJlbnRUaW1lID0gQ01UaW1l
YmFzZUdldFRpbWUoW21fc3luY2hyb25pemVyIHRpbWViYXNlXSk7Ci0gICAgICAgIFttX3N5bmNo
cm9uaXplciByZW1vdmVSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKSBh
dFRpbWU6Y3VycmVudFRpbWUgd2l0aENvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCkgewotICAgICAg
ICAgICAgLy8gTm8tb3AuCi0gICAgICAgIH1dOwotICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciA9IG51bGxwdHI7Ci0jZW5kaWYKICAgICB9CiAKICAgICByZW5kZXJpbmdNb2RlQ2hh
bmdlZCgpOwpAQCAtNzAwLDEzICs1MjQsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iagogICAgICAgICByZXR1cm47CiAKICAgICBtX3BsYXlpbmcgPSB0cnVlOwot
I2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgIGlmICghbV9zeW5jaHJvbml6ZXIuZ2V0
KCkucmF0ZSkKLSAgICAgICAgW21fc3luY2hyb25pemVyIHNldFJhdGU6MSBdOyAvLyBzdHJlYW10
aW1lCi0jZWxzZQogICAgIGlmICghbV9jbG9jay0+aXNSdW5uaW5nKCkpCiAgICAgICAgIG1fY2xv
Y2stPnN0YXJ0KCk7Ci0jZW5kaWYKKworICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1
ZGlvVHJhY2tNYXAudmFsdWVzKCkpCisgICAgICAgIHRyYWNrLT5wbGF5KCk7CiAKICAgICBtX2hh
dmVFdmVyUGxheWVkID0gdHJ1ZTsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewpA
QCAtNzI1LDYgKzU0Nyw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmoKICAgICBtX3BhdXNlZFRpbWUgPSBjdXJyZW50TWVkaWFUaW1lKCk7CiAgICAgbV9wbGF5aW5n
ID0gZmFsc2U7CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFw
LnZhbHVlcygpKQorICAgICAgICB0cmFjay0+cGF1c2UoKTsKKwogICAgIHVwZGF0ZURpc3BsYXlN
b2RlKCk7CiAgICAgdXBkYXRlUGF1c2VkSW1hZ2UoKTsKICAgICBmbHVzaFJlbmRlcmVycygpOwpA
QCAtNzQzLDExICs1NjgsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdm9sdW1lID0gdm9sdW1lOwotCi0jaWYgVVNF
KFJFTkRFUl9TWU5DSFJPTklaRVIpCi0gICAgZm9yIChhdXRvJiByZW5kZXJlciA6IG1fYXVkaW9S
ZW5kZXJlcnMudmFsdWVzKCkpCi0gICAgICAgIFtyZW5kZXJlciBzZXRWb2x1bWU6dm9sdW1lXTsK
LSNlbmRpZgorICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFs
dWVzKCkpCisgICAgICAgIHRyYWNrLT5zZXRWb2x1bWUobV92b2x1bWUpOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkK
QEAgLTc1OCwxMSArNTgwLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iagogICAgICAgICByZXR1cm47CiAKICAgICBtX211dGVkID0gbXV0ZWQ7Ci0gICAgCi0jaWYg
VVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCi0gICAgZm9yIChhdXRvJiByZW5kZXJlciA6IG1fYXVk
aW9SZW5kZXJlcnMudmFsdWVzKCkpCi0gICAgICAgIFtyZW5kZXJlciBzZXRNdXRlZDptdXRlZF07
Ci0jZW5kaWYKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Omhhc1ZpZGVvKCkgY29uc3QKQEAgLTc5NiwxMSArNjEzLDcgQEAgTWVkaWFUaW1lIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzdHJlYW1UaW1lKCkgY29uc3QKIHsKLSNpZiBVU0UoUkVOREVSX1NZ
TkNIUk9OSVpFUikKLSAgICByZXR1cm4gdG9NZWRpYVRpbWUoQ01UaW1lYmFzZUdldFRpbWUoW21f
c3luY2hyb25pemVyIHRpbWViYXNlXSkpOwotI2Vsc2UKICAgICByZXR1cm4gTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKG1fY2xvY2stPmN1cnJlbnRUaW1lKCkpOwotI2VuZGlmCiB9CiAKIE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpuZXR3b3JrU3RhdGUoKSBjb25zdApAQCAtOTI1LDE5ICs3MzgsMTEgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIGlmICghbV9wbGF5aW5nIHx8IHN0
cmVhbVRpbWUoKS50b0RvdWJsZSgpIDwgMCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgVVNFKFJF
TkRFUl9TWU5DSFJPTklaRVIpCi0gICAgaWYgKCFDTVRpbWViYXNlR2V0RWZmZWN0aXZlUmF0ZShb
bV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KICAg
ICBzd2l0Y2ggKHRyYWNrLnR5cGUoKSkgewogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
Tm9uZToKICAgICAgICAgLy8gRG8gbm90aGluZy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbzoKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikK
LSAgICAgICAgZW5xdWV1ZUF1ZGlvU2FtcGxlKHRyYWNrLCBtZWRpYVNhbXBsZSk7Ci0jZW5kaWYK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoKICAg
ICAgICAgaWYgKCZ0cmFjayA9PSBtX2FjdGl2ZVZpZGVvVHJhY2suZ2V0KCkpCkBAIC0xMDM3LDM2
ICs4NDIsMjMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogewog
ICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yIGN1cnJlbnRUcmFja3MgPSBtX21lZGlh
U3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCk7CiAKLSAgICBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50LCBUcmFja1N0YXRlKT4gIHNldEF1ZGlvVHJh
Y2tTdGF0ZSA9IFt0aGlzXShhdXRvIHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUp
CisgICAgRnVuY3Rpb248dm9pZChSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hPiwgaW50LCBUcmFja1N0YXRlKT4gIHNldEF1ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShhdXRv
IHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUpCiAgICAgewogICAgICAgICBzd2l0
Y2ggKHN0YXRlKSB7CiAgICAgICAgIGNhc2UgVHJhY2tTdGF0ZTo6UmVtb3ZlOgotICAgICAgICAg
ICAgdHJhY2stPnN0cmVhbVRyYWNrKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAg
ICAgbV9wbGF5ZXItPnJlbW92ZUF1ZGlvVHJhY2soKnRyYWNrKTsKLSNpZiBVU0UoUkVOREVSX1NZ
TkNIUk9OSVpFUikKLSAgICAgICAgICAgIGRlc3Ryb3lBdWRpb1JlbmRlcmVyKHRyYWNrLT5pZCgp
KTsKLSNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJhY2tTdGF0ZTo6
QWRkOgotICAgICAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCkuYWRkT2JzZXJ2ZXIoKnRoaXMp
OwogICAgICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soKnRyYWNrKTsKLSNpZiBVU0Uo
UkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICAgICAgICAgIGNyZWF0ZUF1ZGlvUmVuZGVyZXIodHJh
Y2stPmlkKCkpOwotI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUcmFj
a1N0YXRlOjpDb25maWd1cmU6CiAgICAgICAgICAgICB0cmFjay0+c2V0VHJhY2tJbmRleChpbmRl
eCk7CiAgICAgICAgICAgICBib29sIGVuYWJsZWQgPSB0cmFjay0+c3RyZWFtVHJhY2soKS5lbmFi
bGVkKCkgJiYgIXRyYWNrLT5zdHJlYW1UcmFjaygpLm11dGVkKCk7CiAgICAgICAgICAgICB0cmFj
ay0+c2V0RW5hYmxlZChlbmFibGVkKTsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKLSAg
ICAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFjay0+aWQo
KSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVuZGVyZXIpOwotICAgICAgICAgICAgcmVuZGVyZXIu
Z2V0KCkubXV0ZWQgPSAhZW5hYmxlZDsKLSNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9OwotICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBjdXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbTo6Y3JlYXRlLCBzZXRBdWRpb1RyYWNrU3RhdGUpOworICAgIHVwZGF0ZVRy
YWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBj
dXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGUs
IHNldEF1ZGlvVHJhY2tTdGF0ZSk7CiAKICAgICBGdW5jdGlvbjx2b2lkKFJlZlB0cjxWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50LCBUcmFja1N0YXRlKT4gc2V0VmlkZW9UcmFja1N0
YXRlID0gWyZdKGF1dG8gdHJhY2ssIGludCBpbmRleCwgVHJhY2tTdGF0ZSBzdGF0ZSkKICAgICB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCShyZXZpc2lvbiAyMTE2
MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtIGZp
bmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0gOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiBjcmVhdGUoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmIHN0cmVhbVRyYWNrKQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZU9m
ZnNldDsgfQogICAgIHZvaWQgc2V0VGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiBvZmZz
ZXQpIHsgbV90aW1lbGluZU9mZnNldCA9IG9mZnNldDsgfQogCi1wcml2YXRlOgorcHJvdGVjdGVk
OgogICAgIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmIHRyYWNrKQogICAgICAgICA6IG1fc3RyZWFtVHJhY2sodHJhY2spCiAgICAgICAgICwgbV9p
ZCh0cmFjay5pZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAkocmV2aXNp
b24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMiArNTIsMTIgQEAg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok1lZGlhU3RyZWFtVHJhYwogICAgICwgbV9pc0VuYWJs
ZWQodHJ1ZSkKICAgICAsIG1faXNFbmRlZChmYWxzZSkKIHsKLSAgICBtX3NvdXJjZS0+YWRkT2Jz
ZXJ2ZXIodGhpcyk7CisgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KIAogTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6On5NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSgpCiB7Ci0gICAg
bV9zb3VyY2UtPnJlbW92ZU9ic2VydmVyKHRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVPYnNl
cnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmFkZE9ic2Vy
dmVyKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpCkBAIC0xOTgs
NyArMTk4LDcgQEAgYm9vbCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cHJldmVudFNvdQogICAg
IHJldHVybiAhbV9pc0VuZGVkOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpz
b3VyY2VIYXNNb3JlTWVkaWFEYXRhKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3ZvaWQgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBt
ZWRpYVNhbXBsZSkKIHsKICAgICBtZWRpYVNhbXBsZS5zZXRUcmFja0lEKGlkKCkpOwogICAgIGZv
ciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKSBmaW5h
bDsKICAgICB2b2lkIHNvdXJjZVNldHRpbmdzQ2hhbmdlZCgpIGZpbmFsOwogICAgIGJvb2wgcHJl
dmVudFNvdXJjZUZyb21TdG9wcGluZygpIGZpbmFsOwotICAgIHZvaWQgc291cmNlSGFzTW9yZU1l
ZGlhRGF0YShNZWRpYVNhbXBsZSYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmKSBmaW5hbDsKIAogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2
ZXJzOwogICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBtX3NvdXJjZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjcsMTYgKzY3LDE2IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQoKQogICAg
IG1fcmVtb3RlID0gZmFsc2U7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2Jz
ZXJ2ZXIoUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQordm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZl
ciYgb2JzZXJ2ZXIpCiB7Ci0gICAgbV9vYnNlcnZlcnMuYXBwZW5kKG9ic2VydmVyKTsKKyAgICBt
X29ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpyZW1vdmVPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciogb2JzZXJ2
ZXIpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZU9ic2VydmVyKFJlYWx0aW1lTWVk
aWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAgICBzaXplX3QgcG9zID0gbV9vYnNl
cnZlcnMuZmluZChvYnNlcnZlcik7Ci0gICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAg
bV9vYnNlcnZlcnMucmVtb3ZlKHBvcyk7CisgICAgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3RNYXRj
aGluZyhbJm9ic2VydmVyXShhdXRvKiBhbk9ic2VydmVyKSB7CisgICAgICAgIHJldHVybiBhbk9i
c2VydmVyID09ICZvYnNlcnZlcjsKKyAgICB9KTsKIAogICAgIGlmICghbV9vYnNlcnZlcnMuc2l6
ZSgpKQogICAgICAgICBzdG9wKCk7CkBAIC0xMTIsMTAgKzExMiwxNyBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6bWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCit2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxl
JiBtZWRpYVNhbXBsZSkKIHsKLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMp
Ci0gICAgICAgIG9ic2VydmVyLT5zb3VyY2VIYXNNb3JlTWVkaWFEYXRhKG1lZGlhU2FtcGxlKTsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnZpZGVvU2FtcGxlQXZhaWxhYmxl
KG1lZGlhU2FtcGxlKTsKK30KKwordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCB2b2lkKiBhdWRpb0RhdGEsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAg
ICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgZGVz
Y3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKIH0KIAogYm9vbCBSZWFsdGltZU1lZGlhU291cmNl
OjpyZWFkb25seSgpIGNvbnN0CkBAIC0xMzAsNyArMTM3LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjpzdG9wKE9ic2VydmVyKgogCiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIAotICAgIGZv
ciAoYXV0byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgIGZvciAoY29uc3QgYXV0byYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykgewogICAgICAgICBpZiAob2JzZXJ2ZXIgIT0gY2FsbGlu
Z09ic2VydmVyKQogICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVN0b3BwZWQoKTsKICAgICB9
CkBAIC0xNDMsNyArMTUwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0U3Rv
cChPYgogICAgIGlmIChzdG9wcGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0
byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykgewogICAgICAgICBpZiAob2JzZXJ2ZXItPnByZXZlbnRTb3VyY2VG
cm9tU3RvcHBpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDgg
KzQ3LDEzIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNz
IEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIE1lZGlhU3RyZWFtUHJp
dmF0ZTsKQEAgLTY4LDggKzczLDExIEBAIHB1YmxpYzoKICAgICAgICAgLy8gT2JzZXJ2ZXIgc3Rh
dGUgcXVlcmllcy4KICAgICAgICAgdmlydHVhbCBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBp
bmcoKSA9IDA7CiAgICAgICAgIAotICAgICAgICAvLyBNZWRpYSBkYXRhIGNoYW5nZXMuCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VIYXNNb3JlTWVkaWFEYXRhKE1lZGlhU2FtcGxlJikgPSAw
OworICAgICAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKSB7IH0KKworICAgICAgICAv
LyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgICAgIHZpcnR1YWwg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgdm9pZCogLyphdWRp
b0RhdGEqLywgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCAvKm51bWJlck9m
RnJhbWVzKi8pIHsgfQogICAgIH07CiAKICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNl
KCkgeyB9CkBAIC05OSw3ICsxMDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQ29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN0cmluZyYpOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBtZWRpYURhdGFVcGRh
dGVkKE1lZGlhU2FtcGxlJik7CisKKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJik7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1l
Jiwgdm9pZCosIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwogICAgIAog
ICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHBlZDsgfQogCkBAIC0xMTIs
OCArMTIyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZW1vdGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlbW90ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW1vdGUoYm9vbCByZW1vdGUp
IHsgbV9yZW1vdGUgPSByZW1vdGU7IH0KIAotICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIq
KTsKLSAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7CisgICAgdm9pZCBhZGRPYnNl
cnZlcihPYnNlcnZlciYpOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCAr
MzAsMTAgQEAKIAogI2luY2x1ZGUgIkFWTWVkaWFDYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAi
QXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KIAordHlwZWRlZiBzdHJ1Y3Qg
QXVkaW9CdWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsKIHR5cGVkZWYgc3RydWN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb247CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0
aW9uUmVmOwogCkBAIC02NCw5ICs2NiwxMSBAQCBwcml2YXRlOgogICAgIEF1ZGlvU291cmNlUHJv
dmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBvdmVycmlkZTsKIAogICAgIFJldGFpblB0cjxB
VkNhcHR1cmVDb25uZWN0aW9uPiBtX2F1ZGlvQ29ubmVjdGlvbjsKKyAgICBzaXplX3QgbV9saXN0
QnVmZmVyU2l6ZSB7IDAgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PiBt
X2xpc3Q7CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IG1fYXVk
aW9Tb3VyY2VQcm92aWRlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwogICAgIFZlY3RvcjxBdWRp
b1NvdXJjZU9ic2VydmVyT2JqQyo+IG1fb2JzZXJ2ZXJzOwogICAgIExvY2sgbV9sb2NrOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIxMTYzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2ltcG9ydCAiQXVkaW9TYW1wbGVC
dWZmZXJMaXN0LmgiCiAjaW1wb3J0ICJBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oIgorI2ltcG9y
dCAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIK
QEAgLTkxLDcgKzkzLDYgQEAgUmVmUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBBVkF1ZGlvQ2Fw
dAogQVZBdWRpb0NhcHR1cmVTb3VyY2U6OkFWQXVkaW9DYXB0dXJlU291cmNlKEFWQ2FwdHVyZURl
dmljZVR5cGVkZWYqIGRldmljZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKICAgICA6IEFWTWVk
aWFDYXB0dXJlU291cmNlKGRldmljZSwgaWQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQog
ewotICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uPigpOwogfQogICAgIAogQVZBdWRpb0NhcHR1cmVTb3VyY2U6On5BVkF1
ZGlvQ2FwdHVyZVNvdXJjZSgpCkBAIC0xMjAsOCArMTIxLDggQEAgdm9pZCBBVkF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6YWRkT2JzZXJ2ZXIoQQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2spOwog
ICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOwotICAgIGlmIChtX2lucHV0RGVzY3Jp
cHRpb24tPm1TYW1wbGVSYXRlKQotICAgICAgICBvYnNlcnZlci5wcmVwYXJlKG1faW5wdXREZXNj
cmlwdGlvbi5nZXQoKSk7CisgICAgaWYgKG1faW5wdXREZXNjcmlwdGlvbikKKyAgICAgICAgb2Jz
ZXJ2ZXIucHJlcGFyZSgmbV9pbnB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpKTsK
IH0KIAogdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoQXVkaW9Tb3Vy
Y2VPYnNlcnZlck9iakMmIG9ic2VydmVyKQpAQCAtMTYyLDcgKzE2Myw3IEBAIHZvaWQgQVZBdWRp
b0NhcHR1cmVTb3VyY2U6OnNodXRkb3duQ2FwdHUKICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1f
bG9jayk7CiAKICAgICAgICAgbV9hdWRpb0Nvbm5lY3Rpb24gPSBudWxscHRyOwotICAgICAgICBt
X2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbj4oKTsKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKIAogICAg
ICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAgICAgICBvYnNl
cnZlci0+dW5wcmVwYXJlKCk7CkBAIC0xNzQsMjMgKzE3NSw2IEBAIHZvaWQgQVZBdWRpb0NhcHR1
cmVTb3VyY2U6OnNodXRkb3duQ2FwdHUKICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBudWxs
cHRyOwogfQogCi1zdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiYgYSwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBiKQotewot
ICAgIHJldHVybiBhLm1TYW1wbGVSYXRlID09IGIubVNhbXBsZVJhdGUKLSAgICAgICAgJiYgYS5t
Rm9ybWF0SUQgPT0gYi5tRm9ybWF0SUQKLSAgICAgICAgJiYgYS5tRm9ybWF0RmxhZ3MgPT0gYi5t
Rm9ybWF0RmxhZ3MKLSAgICAgICAgJiYgYS5tQnl0ZXNQZXJQYWNrZXQgPT0gYi5tQnl0ZXNQZXJQ
YWNrZXQKLSAgICAgICAgJiYgYS5tRnJhbWVzUGVyUGFja2V0ID09IGIubUZyYW1lc1BlclBhY2tl
dAotICAgICAgICAmJiBhLm1CeXRlc1BlckZyYW1lID09IGIubUJ5dGVzUGVyRnJhbWUKLSAgICAg
ICAgJiYgYS5tQ2hhbm5lbHNQZXJGcmFtZSA9PSBiLm1DaGFubmVsc1BlckZyYW1lCi0gICAgICAg
ICYmIGEubUJpdHNQZXJDaGFubmVsID09IGIubUJpdHNQZXJDaGFubmVsOwotfQotCi1zdGF0aWMg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgYSwgY29u
c3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBiKQotewotICAgIHJldHVybiAhKGEgPT0g
Yik7Ci19Ci0KIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRPdXRw
dXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXRUeXBlKiwgQ01TYW1w
bGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopCiB7CiAg
ICAgaWYgKG11dGVkKCkpCkBAIC0yMDAsMjcgKzE4NCwzNyBAQCB2b2lkIEFWQXVkaW9DYXB0dXJl
U291cmNlOjpjYXB0dXJlT3V0cHV0CiAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBidWZmZXIgPSBz
YW1wbGVCdWZmZXI7Ci0gICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXMsIGJ1ZmZlcl0gewot
ICAgICAgICBtZWRpYURhdGFVcGRhdGVkKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKGJ1ZmZl
ci5nZXQoKSkpOwotICAgIH0pOwotCiAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1f
bG9jaywgc3RkOjp0cnlfdG9fbG9jayk7CiAgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CiAg
ICAgICAgIC8vIEZhaWxlZCB0byBhY3F1aXJlIHRoZSBsb2NrLCBqdXN0IHJldHVybiBpbnN0ZWFk
IG9mIGJsb2NraW5nLgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fb2JzZXJ2
ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBzdHJlYW1EZXNjcmlwdGlvbiA9IENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24pOwotICAgIGlm
ICgqbV9pbnB1dERlc2NyaXB0aW9uICE9ICpzdHJlYW1EZXNjcmlwdGlvbikgewotICAgICAgICBt
X2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbj4oKnN0cmVhbURlc2NyaXB0aW9uKTsKLSAgICAgICAgZm9yIChhdXRvJiBvYnNlcnZl
ciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICAgICAgb2JzZXJ2ZXItPnByZXBhcmUobV9pbnB1dERl
c2NyaXB0aW9uLmdldCgpKTsKKyAgICBpZiAoIW1faW5wdXREZXNjcmlwdGlvbiB8fCAqbV9pbnB1
dERlc2NyaXB0aW9uICE9ICpzdHJlYW1EZXNjcmlwdGlvbikgeworICAgICAgICBtX2lucHV0RGVz
Y3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oKnN0
cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9saXN0QnVmZmVyU2l6ZSA9IEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVhbSgqbV9pbnB1dERlc2NyaXB0
aW9uLmdldCgpKTsKKyAgICAgICAgbV9saXN0ID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVmZmVy
TGlzdD4oc3RhdGljX2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4oOjpvcGVyYXRvciBuZXcgKG1fbGlz
dEJ1ZmZlclNpemUpKSk7CisgICAgICAgIG1lbXNldChtX2xpc3QuZ2V0KCksIDAsIG1fbGlzdEJ1
ZmZlclNpemUpOworICAgICAgICBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzID0gbV9pbnB1dERlc2Ny
aXB0aW9uLT5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCk7CisKKyAgICAgICAgaWYgKCFtX29ic2Vy
dmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29i
c2VydmVycykKKyAgICAgICAgICAgICAgICBvYnNlcnZlci0+cHJlcGFyZShzdHJlYW1EZXNjcmlw
dGlvbik7CisgICAgICAgIH0KICAgICB9CiAKKyAgICBDTUl0ZW1Db3VudCBmcmFtZUNvdW50ID0g
Q01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzKHNhbXBsZUJ1ZmZlcik7CisgICAgQ01CbG9ja0J1
ZmZlclJlZiBidWZmZXIgPSBuaWw7CisgICAgT1NTdGF0dXMgZXJyID0gQ01TYW1wbGVCdWZmZXJH
ZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGVCdWZmZXIsIG51
bGxwdHIsIG1fbGlzdC5nZXQoKSwgbV9saXN0QnVmZmVyU2l6ZSwga0NGQWxsb2NhdG9yU3lzdGVt
RGVmYXVsdCwga0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwga0NNU2FtcGxlQnVmZmVyRmxhZ19B
dWRpb0J1ZmZlckxpc3RfQXNzdXJlMTZCeXRlQWxpZ25tZW50LCAmYnVmZmVyKTsKKyAgICBpZiAo
IWVycikKKyAgICAgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRvTWVkaWFUaW1lKENNU2FtcGxl
QnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKHNhbXBsZUJ1ZmZlcikpLCBtX2xpc3QtPm1C
dWZmZXJzWzBdLm1EYXRhLCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnN0cmVhbURlc2NyaXB0
aW9uKSwgZnJhbWVDb3VudCk7CisgICAgZWxzZQorICAgICAgICBMT0dfRVJST1IoIkFWQXVkaW9D
YXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5l
Y3Rpb24oJXApIC0gQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRC
bG9ja0J1ZmZlciByZXR1cm5lZCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOworCisgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBv
YnNlcnZlci0+cHJvY2Vzcyhmb3JtYXREZXNjcmlwdGlvbiwgc2FtcGxlQnVmZmVyKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIxMTYzOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OnByb2Nlc3NOZXdGcmEKICAgICBpZiAoc2V0dGluZ3NDaGFuZ2VkKQogICAgICAg
ICBzZXR0aW5nc0RpZENoYW5nZSgpOwogCi0gICAgbWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBs
ZUFWRk9iakM6OmNyZWF0ZShtX2J1ZmZlci5nZXQoKSkpOworICAgIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKG1fYnVmZmVyLmdldCgpKSk7CiB9CiAKIHZv
aWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZm
ZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXRUeXBlKiwgQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyLCBBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKKworI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdC5oIgorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUg
IkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQVVDb21wb25lbnQu
aD4KKyNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252ZXJ0ZXIuaD4KKyNpbmNsdWRlIDxB
dWRpb1Rvb2xib3gvQXVkaW9Vbml0Lmg+CisKKyNpbmNsdWRlICJDb3JlTWVkaWFTb2Z0TGluay5o
IgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Nv
bnN0IGludCByZW5kZXJCdWZmZXJTaXplID0gMTI4OworCitBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2E6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYShNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZSYgdHJhY2spCisgICAgOiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
KHRyYWNrKQoreworICAgIHRyYWNrLnNvdXJjZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKK30KKwor
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjp+QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2ludGVy
bmFsU3RhdGVMb2NrKTsKKworICAgIHN0cmVhbVRyYWNrKCkuc291cmNlKCkucmVtb3ZlT2JzZXJ2
ZXIoKnRoaXMpOworCisgICAgaWYgKG1fZGF0YVNvdXJjZSkKKyAgICAgICAgbV9kYXRhU291cmNl
LT5zZXRQYXVzZWQodHJ1ZSk7CisKKyAgICBpZiAobV9yZW1vdGVJT1VuaXQpIHsKKyAgICAgICAg
QXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlPVW5pdCk7CisgICAgICAgIEF1ZGlvQ29tcG9u
ZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVtb3RlSU9Vbml0KTsKKyAgICAgICAgbV9yZW1vdGVJT1Vu
aXQgPSBudWxscHRyOworICAgIH0KKworICAgIG1fZGF0YVNvdXJjZSA9IG51bGxwdHI7CisgICAg
bV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0g
bnVsbHB0cjsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBs
YXlJbnRlcm5hbCgpCit7CisgICAgQVNTRVJUKG1faW50ZXJuYWxTdGF0ZUxvY2suaXNIZWxkKCkp
OworCisgICAgaWYgKG1faXNQbGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9y
ZW1vdGVJT1VuaXQpIHsKKyAgICAgICAgQVNTRVJUKG1fZGF0YVNvdXJjZSk7CisgICAgICAgIG1f
ZGF0YVNvdXJjZS0+c2V0UGF1c2VkKGZhbHNlKTsKKyAgICAgICAgaWYgKCFBdWRpb091dHB1dFVu
aXRTdGFydChtX3JlbW90ZUlPVW5pdCkpCisgICAgICAgICAgICBtX2lzUGxheWluZyA9IHRydWU7
CisgICAgfQorCisgICAgbV9hdXRvUGxheSA9ICFtX2lzUGxheWluZzsKK30KKwordm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXkoKQoreworICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1faW50ZXJuYWxTdGF0ZUxvY2spOworICAgIHBsYXlJbnRlcm5hbCgp
OworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6cGF1c2UoKQor
eworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1faW50ZXJuYWxTdGF0ZUxvY2spOwor
CisgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICBtX2F1dG9QbGF5ID0gZmFsc2U7CisKKyAg
ICBpZiAobV9yZW1vdGVJT1VuaXQpCisgICAgICAgIEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9yZW1v
dGVJT1VuaXQpOworICAgIGlmIChtX2RhdGFTb3VyY2UpCisgICAgICAgIG1fZGF0YVNvdXJjZS0+
c2V0UGF1c2VkKHRydWUpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYTo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKK3sKKyAgICBtX3ZvbHVtZSA9IHZvbHVtZTsK
KyAgICBpZiAobV9kYXRhU291cmNlKQorICAgICAgICBtX2RhdGFTb3VyY2UtPnNldFZvbHVtZSht
X3ZvbHVtZSk7Cit9CisKK09TU3RhdHVzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YTo6c2V0dXBBdWRpb1VuaXQoKQoreworICAgIEFTU0VSVChtX2ludGVybmFsU3RhdGVMb2NrLmlz
SGVsZCgpKTsKKworICAgIEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gaW9Vbml0RGVzY3JpcHRp
b24geyBrQXVkaW9Vbml0VHlwZV9PdXRwdXQsIDAsIGtBdWRpb1VuaXRNYW51ZmFjdHVyZXJfQXBw
bGUsIDAsIDAgfTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaW9Vbml0RGVzY3JpcHRpb24uY29t
cG9uZW50U3ViVHlwZSA9IGtBdWRpb1VuaXRTdWJUeXBlX1JlbW90ZUlPOworI2Vsc2UKKyAgICBp
b1VuaXREZXNjcmlwdGlvbi5jb21wb25lbnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfRGVm
YXVsdE91dHB1dDsKKyNlbmRpZgorCisgICAgQXVkaW9Db21wb25lbnQgaW9Db21wb25lbnQgPSBB
dWRpb0NvbXBvbmVudEZpbmROZXh0KG51bGxwdHIsICZpb1VuaXREZXNjcmlwdGlvbik7CisgICAg
QVNTRVJUKGlvQ29tcG9uZW50KTsKKyAgICBpZiAoIWlvQ29tcG9uZW50KSB7CisgICAgICAgIExP
RyhNZWRpYSwgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c2V0dXBBdWRpb1Vu
aXQoJXApIHVuYWJsZSB0byBmaW5kIHJlbW90ZSBJTyB1bml0IGNvbXBvbmVudCIsIHRoaXMpOwor
ICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgT1NTdGF0dXMgZXJyID0gQXVkaW9Db21w
b25lbnRJbnN0YW5jZU5ldyhpb0NvbXBvbmVudCwgJm1fcmVtb3RlSU9Vbml0KTsKKyAgICBpZiAo
ZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0byBvcGVuIHZwaW8gdW5pdCwgZXJyb3Ig
JWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0dXJu
IC0xOworICAgIH0KKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBVSW50MzIgcGFyYW0gPSAxOwor
ICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fcmVtb3RlSU9Vbml0LCBrQXVkaW9PdXRw
dXRVbml0UHJvcGVydHlfRW5hYmxlSU8sIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICZwYXJh
bSwgc2l6ZW9mKHBhcmFtKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEsICJB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldHVwQXVkaW9Vbml0KCVwKSB1bmFi
bGUgdG8gZW5hYmxlIHZwaW8gdW5pdCBvdXRwdXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChp
bnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorI2VuZGlm
CisKKyAgICBBVVJlbmRlckNhbGxiYWNrU3RydWN0IGNhbGxiYWNrID0geyBpbnB1dFByb2MsIHRo
aXMgfTsKKyAgICBlcnIgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eShtX3JlbW90ZUlPVW5pdCwga0F1
ZGlvVW5pdFByb3BlcnR5X1NldFJlbmRlckNhbGxiYWNrLCBrQXVkaW9Vbml0U2NvcGVfR2xvYmFs
LCAwLCAmY2FsbGJhY2ssIHNpemVvZihjYWxsYmFjaykpOworICAgIGlmIChlcnIpIHsKKyAgICAg
ICAgTE9HKE1lZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpzZXR1cEF1
ZGlvVW5pdCglcCkgdW5hYmxlIHRvIHNldCB2cGlvIHVuaXQgc3BlYWtlciBwcm9jLCBlcnJvciAl
ZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICByZXR1cm4g
ZXJyOworICAgIH0KKworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBvdXRwdXREZXNj
cmlwdGlvbiA9IHsgfTsKKyAgICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXREZXNjcmlwdGlv
bik7CisgICAgZXJyICA9IEF1ZGlvVW5pdEdldFByb3BlcnR5KG1fcmVtb3RlSU9Vbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZv
dXRwdXREZXNjcmlwdGlvbiwgJnNpemUpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpzZXR1cEF1ZGlvVW5pdHMo
JXApIHVuYWJsZSB0byBnZXQgaW5wdXQgc3RyZWFtIGZvcm1hdCwgZXJyb3IgJWQgKCUuNHMpIiwg
dGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9
CisKKyAgICBvdXRwdXREZXNjcmlwdGlvbiA9IG1faW5wdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVz
Y3JpcHRpb24oKTsKKyAgICBvdXRwdXREZXNjcmlwdGlvbi5tU2FtcGxlUmF0ZSA9IEF1ZGlvU2Vz
c2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNhbXBsZVJhdGUoKTsKKworICAgIGVyciA9IEF1ZGlvVW5p
dFNldFByb3BlcnR5KG1fcmVtb3RlSU9Vbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9y
bWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICZvdXRwdXREZXNjcmlwdGlvbiwgc2l6ZW9m
KG91dHB1dERlc2NyaXB0aW9uKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEs
ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldHVwQXVkaW9Vbml0cyglcCkg
dW5hYmxlIHRvIHNldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJvciAlZCAoJS40cykiLCB0aGlz
LCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKyAg
ICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKKworICAgIGVyciA9IEF1ZGlvVW5pdEluaXRp
YWxpemUobV9yZW1vdGVJT1VuaXQpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgTE9HKE1lZGlh
LCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpzZXR1cEF1ZGlvVW5pdHMoJXAp
IEF1ZGlvVW5pdEluaXRpYWxpemUoKSBmYWlsZWQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChp
bnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAg
QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShyZW5k
ZXJCdWZmZXJTaXplKTsKKworICAgIHJldHVybiBlcnI7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFU
aW1lJiBzYW1wbGVUaW1lLCB2b2lkKiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgQVNTRVJUKGRl
c2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3JtRGVzY3JpcHRp
b246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOworCisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sobV9pbnRlcm5hbFN0YXRlTG9jayk7CisKKyAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24gc3RyZWFtRGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkZXNjcmlw
dGlvbik7CisgICAgaWYgKCFtX2lucHV0RGVzY3JpcHRpb24gfHwgKm1faW5wdXREZXNjcmlwdGlv
biAhPSBkZXNjcmlwdGlvbikgeworCisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxw
dHI7CisgICAgICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBudWxscHRyOworCisgICAgICAgIGlm
IChtX3JlbW90ZUlPVW5pdCkgeworICAgICAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3Jl
bW90ZUlPVW5pdCk7CisgICAgICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlzcG9zZSht
X3JlbW90ZUlPVW5pdCk7CisgICAgICAgICAgICBtX3JlbW90ZUlPVW5pdCA9IG51bGxwdHI7Cisg
ICAgICAgIH0KKworICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oc3RyZWFtRGVzY3JpcHRpb24pOworICAgICAgICBp
ZiAoc2V0dXBBdWRpb1VuaXQoKSkgeworICAgICAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
bV9kYXRhU291cmNlKQorICAgICAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMik7CisgICAgICAgIGlm
ICghbV9kYXRhU291cmNlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX2Rh
dGFTb3VyY2UtPnNldElucHV0Rm9ybWF0KHN0cmVhbURlc2NyaXB0aW9uKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKG1fZGF0YVNvdXJjZS0+c2V0T3V0cHV0Rm9ybWF0KCptX291
dHB1dERlc2NyaXB0aW9uLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBt
X2RhdGFTb3VyY2UtPnNldFZvbHVtZShtX3ZvbHVtZSk7CisgICAgfQorCisgICAgbV9kYXRhU291
cmNlLT5wdXNoU2FtcGxlcyhtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCks
IHNhbXBsZVRpbWUsIGF1ZGlvRGF0YSwgc2FtcGxlQ291bnQpOworCisgICAgaWYgKG1fYXV0b1Bs
YXkpCisgICAgICAgIHBsYXlJbnRlcm5hbCgpOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6c291cmNlU3RvcHBlZCgpCit7CisgICAgcGF1c2UoKTsKK30KKwor
T1NTdGF0dXMgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpyZW5kZXIoVUludDMy
IHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QmIGlvRGF0YSwgVUludDMyIC8qaW5CdXNOdW1i
ZXIqLywgY29uc3QgQXVkaW9UaW1lU3RhbXAmIHRpbWVTdGFtcCwgQXVkaW9Vbml0UmVuZGVyQWN0
aW9uRmxhZ3MmIGFjdGlvbkZsYWdzKQoreworICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9j
ayhtX2ludGVybmFsU3RhdGVMb2NrLCBzdGQ6OnRyeV90b19sb2NrKTsKKyAgICBpZiAoIWxvY2su
b3duc19sb2NrKCkpCisgICAgICAgIHJldHVybiBrQXVkaW9Db252ZXJ0ZXJFcnJfVW5zcGVjaWZp
ZWRFcnJvcjsKKworICAgIGlmICghbV9pc1BsYXlpbmcgfHwgbV9tdXRlZCB8fCAhbV9kYXRhU291
cmNlIHx8IHN0cmVhbVRyYWNrKCkubXV0ZWQoKSB8fCBzdHJlYW1UcmFjaygpLmVuZGVkKCkgfHwg
IXN0cmVhbVRyYWNrKCkuZW5hYmxlZCgpKSB7CisgICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6emVyb0FCTChpb0RhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4oc2FtcGxlQ291bnQpKTsKKyAg
ICAgICAgYWN0aW9uRmxhZ3MgPSBrQXVkaW9Vbml0UmVuZGVyQWN0aW9uX091dHB1dElzU2lsZW5j
ZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbV9kYXRhU291cmNlLT5wdWxsU2Ft
cGxlcyhpb0RhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4oc2FtcGxlQ291bnQpLCB0aW1lU3RhbXAu
bVNhbXBsZVRpbWUsIHRpbWVTdGFtcC5tSG9zdFRpbWUsIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
Q29weSk7CisKKyAgICByZXR1cm4gMDsKK30KKworT1NTdGF0dXMgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hOjppbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRl
ckFjdGlvbkZsYWdzKiBhY3Rpb25GbGFncywgY29uc3QgQXVkaW9UaW1lU3RhbXAqIHRpbWVTdGFt
cCwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlz
dCogaW9EYXRhKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2EqPih1c2VyRGF0YSktPnJlbmRlcihzYW1wbGVDb3VudCwgKmlvRGF0YSwg
aW5CdXNOdW1iZXIsICp0aW1lU3RhbXAsICphY3Rpb25GbGFncyk7Cit9CisKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9Tb3VyY2VPYnNlcnZl
ck9iakMuaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgiCisjaW5j
bHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvVG9vbGJveC5oPgorI2luY2x1ZGUgPENvcmVBdWRpby9D
b3JlQXVkaW9UeXBlcy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNlOworY2xhc3MgQXVkaW9TYW1wbGVC
dWZmZXJMaXN0OworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworCitjbGFzcyBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EgZmluYWwgOiBwdWJsaWMgQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbSwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hKQorcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHN0cmVhbVRyYWNrKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hKHN0cmVhbVRyYWNrKSk7CisgICAgfQorCisgICAgdm9pZCBwbGF5KCk7Cisg
ICAgdm9pZCBwYXVzZSgpOworICAgIGJvb2wgaXNQbGF5aW5nKCkgeyByZXR1cm4gbV9pc1BsYXlp
bmc7IH0KKworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICBmbG9hdCB2b2x1bWUoKSBj
b25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQorCisgICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVk
KSB7IG1fbXV0ZWQgPSBtdXRlZDsgfQorICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBt
X211dGVkOyB9CisKK3ByaXZhdGU6CisgICAgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CisgICAgfkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYSgpOworCisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIK
KyAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZU11dGVkQ2hh
bmdlZCgpICBmaW5hbCB7IH0KKyAgICB2b2lkIHNvdXJjZVNldHRpbmdzQ2hhbmdlZCgpIGZpbmFs
IHsgfQorICAgIGJvb2wgcHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1l
Jiwgdm9pZCosIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwor
CisgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiwgQXVkaW9Vbml0UmVuZGVyQWN0
aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBpbkJ1c051bWJlciwgVUlu
dDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqKTsKKyAgICBPU1N0YXR1cyByZW5k
ZXIoVUludDMyIHNhbXBsZUNvdW50LCBBdWRpb0J1ZmZlckxpc3QmLCBVSW50MzIgaW5CdXNOdW1i
ZXIsIGNvbnN0IEF1ZGlvVGltZVN0YW1wJiwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmKTsK
KworICAgIE9TU3RhdHVzIHNldHVwQXVkaW9Vbml0KCk7CisgICAgdm9pZCBjbGVhbnVwKCk7Cisg
ICAgdm9pZCB6ZXJvQnVmZmVyTGlzdChBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3QpOworICAgIHZv
aWQgcGxheUludGVybmFsKCk7CisKKyAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlIG1fcmVtb3Rl
SU9Vbml0IHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24+IG1faW5wdXREZXNjcmlwdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uPiBtX291dHB1dERlc2NyaXB0aW9uOworCisgICAgUmVmUHRyPEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9kYXRhU291cmNlOworCisgICAgTG9jayBtX2ludGVybmFs
U3RhdGVMb2NrOworICAgIGZsb2F0IG1fdm9sdW1lIHsgMSB9OworICAgIGJvb2wgbV9pc1BsYXlp
bmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hdXRvUGxheSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X211dGVkIHsgZmFsc2UgfTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFD
SykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5oCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgdWludDMyX3QgbV9tYXhp
bWl1bUZyYW1lQ291bnQ7CiAgICAgdWludDMyX3QgbV9zYW1wbGVSYXRlIHsgNDQxMDAgfTsKLSAg
ICBkb3VibGUgbV9ieXRlc1BlckZyYW1lIHsgc2l6ZW9mKEZsb2F0MzIpIH07CisgICAgdWludDY0
X3QgbV9ieXRlc0VtaXR0ZWQgeyAwIH07CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlw
dGlvblJlZj4gbV9mb3JtYXREZXNjcmlwdGlvbjsKICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24gbV9zdHJlYW1Gb3JtYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlTWFjLm1tCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDggQEAKICNpbXBvcnQgIk1vY2tSZWFsdGltZUF1ZGlvU291cmNl
TWFjLmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2ltcG9ydCAiQXVkaW9TYW1wbGVC
dWZmZXJMaXN0LmgiCisjaW1wb3J0ICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbXBv
cnQgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgog
I2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTQ5LDYgKzUxLDExIEBAIFNPRlRfTElOSyhB
dWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmUKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgaW5saW5lIHNpemVfdCBhbGlnblRvMTZCeXRlcyhzaXplX3Qgc2l6ZSkKK3sKKyAgICBy
ZXR1cm4gKHNpemUgKyAxNSkgJiB+MTU7Cit9CisKIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZT4gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewogICAgIGF1dG8gc291cmNl
ID0gYWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjKG5hbWUpKTsKQEAgLTky
LDcgKzk5LDExIEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmVtaXRTYW0KIHsK
ICAgICBBU1NFUlQobV9mb3JtYXREZXNjcmlwdGlvbik7CiAKLSAgICBDTVRpbWUgc3RhcnRUaW1l
ID0gQ01UaW1lTWFrZShlbGFwc2VkVGltZSgpICogbV9zYW1wbGVSYXRlLCBtX3NhbXBsZVJhdGUp
OworICAgIENNVGltZSBzdGFydFRpbWUgPSBDTVRpbWVNYWtlKG1fYnl0ZXNFbWl0dGVkLCBtX3Nh
bXBsZVJhdGUpOworICAgIG1fYnl0ZXNFbWl0dGVkICs9IGZyYW1lQ291bnQ7CisKKyAgICBhdWRp
b1NhbXBsZXNBdmFpbGFibGUodG9NZWRpYVRpbWUoc3RhcnRUaW1lKSwgbV9hdWRpb0J1ZmZlckxp
c3QtPm1CdWZmZXJzWzBdLm1EYXRhLCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24obV9zdHJlYW1G
b3JtYXQpLCBmcmFtZUNvdW50KTsKKwogICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZl
cjsKICAgICBPU1N0YXR1cyByZXN1bHQgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBh
Y2tldERlc2NyaXB0aW9ucyhudWxscHRyLCBudWxscHRyLCB0cnVlLCBudWxscHRyLCBudWxscHRy
LCBtX2Zvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBmcmFtZUNvdW50LCBzdGFydFRpbWUsIG51bGxw
dHIsICZzYW1wbGVCdWZmZXIpOwogICAgIEFTU0VSVChzYW1wbGVCdWZmZXIpOwpAQCAtMTA4LDkg
KzExOSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmVtaXRTYW0KICAgICBy
ZXN1bHQgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFkeShzYW1wbGVCdWZmZXIpOwogICAgIEFT
U0VSVCghcmVzdWx0KTsKIAotICAgIG1lZGlhRGF0YVVwZGF0ZWQoTWVkaWFTYW1wbGVBVkZPYmpD
OjpjcmVhdGUoc2FtcGxlQnVmZmVyKSk7Ci0KLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9v
YnNlcnZlcnMpCisgICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQog
ICAgICAgICBvYnNlcnZlci0+cHJvY2VzcyhtX2Zvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBzYW1w
bGVCdWZmZXIpOwogfQogCkBAIC0xMTksMTAgKzEyOCwyNCBAQCB2b2lkIE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjOjpyZWNvbmZpCiAgICAgbV9tYXhpbWl1bUZyYW1lQ291bnQgPSBXVEY6OnJv
dW5kVXBUb1Bvd2VyT2ZUd28ocmVuZGVySW50ZXJ2YWwoKSAvIDEwMDAuICogbV9zYW1wbGVSYXRl
ICogMik7CiAgICAgQVNTRVJUKG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKIAorICAgIGNvbnN0IGlu
dCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0IGludCBiaXRzUGVy
Qnl0ZSA9IDg7CisgICAgaW50IGNoYW5uZWxDb3VudCA9IDE7CisgICAgbV9zdHJlYW1Gb3JtYXQg
PSB7IH07CisgICAgbV9zdHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3NhbXBsZVJhdGU7Cisg
ICAgbV9zdHJlYW1Gb3JtYXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAg
IG1fc3RyZWFtRm9ybWF0Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxv
YXRQYWNrZWQ7CisgICAgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID0gYnl0ZXNQZXJG
bG9hdCAqIGNoYW5uZWxDb3VudDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0
ID0gMTsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQg
KiBjaGFubmVsQ291bnQ7CisgICAgbV9zdHJlYW1Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSBj
aGFubmVsQ291bnQ7CisgICAgbV9zdHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1Bl
ckJ5dGUgKiBieXRlc1BlckZsb2F0OworCiAgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFy
aWFibGUtbGVuZ3RoIHN0cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmlj
IG5ldygpIG9wZXJhdG9yCiAgICAgLy8gd2l0aCBhIGN1c3RvbSBzaXplLCBhbmQgaW5pdGlhbGl6
ZSB0aGUgc3RydWN0IG1hbnVhbGx5LgotICAgIHVpbnQzMl90IGJ1ZmZlckRhdGFTaXplID0gbV9i
eXRlc1BlckZyYW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQ7Ci0gICAgdWludDMyX3QgYmFzZVNp
emUgPSBvZmZzZXRvZihBdWRpb0J1ZmZlckxpc3QsIG1CdWZmZXJzKSArIHNpemVvZihBdWRpb0J1
ZmZlcik7CisgICAgdWludDMyX3QgYnVmZmVyRGF0YVNpemUgPSBtX3N0cmVhbUZvcm1hdC5tQnl0
ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50OworICAgIHVpbnQzMl90IGJhc2VTaXpl
ID0gQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjphdWRpb0J1ZmZlckxpc3RTaXplRm9yU3RyZWFtKG1f
c3RyZWFtRm9ybWF0KTsKKwogICAgIHVpbnQ2NF90IGJ1ZmZlckxpc3RTaXplID0gYmFzZVNpemUg
KyBidWZmZXJEYXRhU2l6ZTsKICAgICBBU1NFUlQoYnVmZmVyTGlzdFNpemUgPD0gU0laRV9NQVgp
OwogICAgIGlmIChidWZmZXJMaXN0U2l6ZSA+IFNJWkVfTUFYKQpAQCAtMTMyLDIzICsxNTUsOCBA
QCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZWNvbmZpCiAgICAgbV9hdWRpb0J1
ZmZlckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PihzdGF0aWNfY2FzdDxB
dWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAobV9hdWRpb0J1ZmZlckxpc3RCdWZmZXJT
aXplKSkpOwogICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyTGlzdC5nZXQoKSwgMCwgbV9hdWRpb0J1
ZmZlckxpc3RCdWZmZXJTaXplKTsKIAotICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVm
ZmVycyA9IDE7Ci0gICAgYXV0byYgYnVmZmVyID0gbV9hdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJz
WzBdOwotICAgIGJ1ZmZlci5tTnVtYmVyQ2hhbm5lbHMgPSAxOwotICAgIGJ1ZmZlci5tRGF0YUJ5
dGVTaXplID0gYnVmZmVyRGF0YVNpemU7Ci0gICAgYnVmZmVyLm1EYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4obV9hdWRpb0J1ZmZlckxpc3QuZ2V0KCkpICsgYmFzZVNpemU7Ci0KLSAg
ICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihGbG9hdDMyKTsKLSAgICBjb25zdCBp
bnQgYml0c1BlckJ5dGUgPSA4OwotICAgIG1fc3RyZWFtRm9ybWF0ID0geyB9OwotICAgIG1fc3Ry
ZWFtRm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9zYW1wbGVSYXRlOwotICAgIG1fc3RyZWFtRm9ybWF0
Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKLSAgICBtX3N0cmVhbUZvcm1hdC5t
Rm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlv
Rm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7Ci0gICAgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVy
UGFja2V0ID0gYnl0ZXNQZXJGbG9hdDsKLSAgICBtX3N0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFj
a2V0ID0gMTsKLSAgICBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxv
YXQ7Ci0gICAgbV9zdHJlYW1Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSAxOwotICAgIG1fc3Ry
ZWFtRm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsK
KyAgICB1aW50OF90KiBidWZmZXJEYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9h
dWRpb0J1ZmZlckxpc3QuZ2V0KCkpICsgYmFzZVNpemU7CisgICAgQXVkaW9TYW1wbGVCdWZmZXJM
aXN0Ojpjb25maWd1cmVCdWZmZXJMaXN0Rm9yU3RyZWFtKCptX2F1ZGlvQnVmZmVyTGlzdC5nZXQo
KSwgbV9zdHJlYW1Gb3JtYXQsIGJ1ZmZlckRhdGEsIGJ1ZmZlckRhdGFTaXplKTsKIAogICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247CiAgICAgQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uQ3JlYXRlKE5VTEwsICZtX3N0cmVhbUZvcm1hdCwgMCwgTlVMTCwgMCwgTlVM
TCwgTlVMTCwgJmZvcm1hdERlc2NyaXB0aW9uKTsKQEAgLTE2MiwxMSArMTcwLDEyIEBAIHZvaWQg
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRlcigKIHsKICAgICBzdGF0aWMgZG91Ymxl
IHRoZXRhOwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZnJlcXVlbmNpZXNbXSA9IHsgMTUwMC4s
IDUwMC4gfTsKKyAgICBzdGF0aWMgY29uc3QgZG91YmxlIHRhdSA9IDIgKiBNX1BJOwogCiAgICAg
aWYgKCFtX2F1ZGlvQnVmZmVyTGlzdCkKICAgICAgICAgcmVjb25maWd1cmUoKTsKIAotICAgIHVp
bnQzMl90IHRvdGFsRnJhbWVDb3VudCA9IGRlbHRhICogbV9zYW1wbGVSYXRlOworICAgIHVpbnQz
Ml90IHRvdGFsRnJhbWVDb3VudCA9IGFsaWduVG8xNkJ5dGVzKGRlbHRhICogbV9zYW1wbGVSYXRl
KTsKICAgICB1aW50MzJfdCBmcmFtZUNvdW50ID0gc3RkOjptaW4odG90YWxGcmFtZUNvdW50LCBt
X21heGltaXVtRnJhbWVDb3VudCk7CiAgICAgZG91YmxlIGVsYXBzZWQgPSBlbGFwc2VkVGltZSgp
OwogICAgIHdoaWxlIChmcmFtZUNvdW50KSB7CkBAIC0xODAsNyArMTg5LDcgQEAgdm9pZCBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVuZGVyKAogICAgICAgICAgICAgY2FzZSAwOgogICAg
ICAgICAgICAgY2FzZSAxNDogewogICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGZtb2QoZWxh
cHNlZCwgMSkgKiAyOwotICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IDIuMCAqIE1fUEkgKiBm
cmVxdWVuY2llc1tpbmRleF0gLyBtX3NhbXBsZVJhdGU7CisgICAgICAgICAgICAgICAgaW5jcmVt
ZW50ID0gdGF1ICogZnJlcXVlbmNpZXNbaW5kZXhdIC8gbV9zYW1wbGVSYXRlOwogICAgICAgICAg
ICAgICAgIHNpbGVudCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpAQCAtMTkzLDEwICsyMDIsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yzo6cmVuZGVyKAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBidWZmZXJbZnJhbWVdID0gc2luKHRoZXRhKSAqIDAuMjU7Ci0gICAgICAgICAg
ICB0aGV0YSArPSBpbmNyZW1lbnQ7Ci0gICAgICAgICAgICBpZiAodGhldGEgPiAyLjAgKiBNX1BJ
KQotICAgICAgICAgICAgICAgIHRoZXRhIC09IDIuMCAqIE1fUEk7CisgICAgICAgICAgICBmbG9h
dCB0b25lID0gc2luKHRoZXRhKSAqIDAuMjU7CisgICAgICAgICAgICBidWZmZXJbZnJhbWVdID0g
dG9uZTsKKworICAgICAgICAgICAgICAgIHRoZXRhICs9IGluY3JlbWVudDsKKyAgICAgICAgICAg
IGlmICh0aGV0YSA+IHRhdSkKKyAgICAgICAgICAgICAgICB0aGV0YSAtPSB0YXU7CiAgICAgICAg
ICAgICBlbGFwc2VkICs9IDEgLyBtX3NhbXBsZVJhdGU7CiAgICAgICAgIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQkocmV2aXNpb24gMjExNjM4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUwogICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBwaXhlbEJ1ZmZlckZyb21DR0ltYWdlKGltYWdlQnVmZmVyKCktPmNvcHlJbWFnZSgpLT5uYXRp
dmVJbWFnZSgpLmdldCgpKTsKICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IENNU2FtcGxlQnVmZmVy
RnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLmdldCgpKTsKICAgICAKLSAgICBtZWRpYURhdGFV
cGRhdGVkKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSkpOwor
ICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBs
ZUJ1ZmZlci5nZXQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaAkocmV2aXNpb24gMjExNjM4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE0ICsyMywxNCBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQ19oCi0jZGVmaW5lIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDX2gKKyNwcmFnbWEg
b25jZQogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAog
I2luY2x1ZGUgIkF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQy5oIgogI2luY2x1ZGUgIkF1
ZGlvU291cmNlT2JzZXJ2ZXJPYmpDLmgiCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5o
IgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTY4LDE2ICs2OCwxNCBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVz
Y3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPENBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVy
OwogCi0gICAgdWludDY0X3QgbV93cml0ZUFoZWFkQ291bnQgeyAwIH07CiAgICAgdWludDY0X3Qg
bV93cml0ZUNvdW50IHsgMCB9OwogICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OwogICAg
IEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIEF1
ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQyogbV9jYXB0dXJlU291cmNlIHsgbnVsbHB0ciB9
OworICAgIExvY2sgbV9tdXRleDsKICAgICBib29sIG1fY29ubmVjdGVkIHsgZmFsc2UgfTsKIH07
CiAgICAgCiB9CiAKICNlbmRpZgotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0JKHJldmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02NSw2ICs2NSw4IEBAIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDOjpXZWJBdWRpb1MKIAogV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5X
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQygpCiB7CisgICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV9tdXRleCk7CisKICAgICBpZiAobV9jb252ZXJ0ZXIpIHsKICAgICAgICAgLy8g
RklYTUU6IG1ha2UgYW5kIHVzZSBhIHNtYXJ0IHBvaW50ZXIgZm9yIEF1ZGlvQ29udmVydGVyCiAg
ICAgICAgIEF1ZGlvQ29udmVydGVyRGlzcG9zZShtX2NvbnZlcnRlcik7CkBAIC03Niw3ICs3OCw4
IEBAIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW8KIAogdm9pZCBXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgaWYgKCFtX3JpbmdCdWZmZXIpIHsKKyAgICBz
dGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9tdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7Cisg
ICAgaWYgKCFsb2NrLm93bnNfbG9jaygpIHx8ICFtX3JpbmdCdWZmZXIpIHsKICAgICAgICAgYnVz
LT56ZXJvKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04NSwxMiArODgsMTIgQEAgdm9p
ZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvdgogICAgIHVpbnQ2NF90IGVuZEZy
YW1lID0gMDsKICAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZy
YW1lLCBlbmRGcmFtZSk7CiAKLSAgICBpZiAobV93cml0ZUNvdW50IDw9IG1fcmVhZENvdW50ICsg
bV93cml0ZUFoZWFkQ291bnQpIHsKKyAgICBpZiAobV93cml0ZUNvdW50IDw9IG1fcmVhZENvdW50
KSB7CiAgICAgICAgIGJ1cy0+emVybygpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgZnJhbWVzQXZhaWxhYmxlID0gZW5kRnJhbWUgLSAobV9yZWFkQ291bnQgKyBtX3dy
aXRlQWhlYWRDb3VudCk7CisgICAgdWludDY0X3QgZnJhbWVzQXZhaWxhYmxlID0gZW5kRnJhbWUg
LSBtX3JlYWRDb3VudDsKICAgICBpZiAoZnJhbWVzQXZhaWxhYmxlIDwgZnJhbWVzVG9Qcm9jZXNz
KSB7CiAgICAgICAgIGZyYW1lc1RvUHJvY2VzcyA9IHN0YXRpY19jYXN0PHNpemVfdD4oZnJhbWVz
QXZhaWxhYmxlKTsKICAgICAgICAgYnVzLT56ZXJvKCk7CkBAIC0xMzYsNiArMTM5LDggQEAgdm9p
ZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6c2V0QwogCiB2b2lkIFdlYkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiogZm9ybWF0KQogeworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgp
OworCiAgICAgTE9HKE1lZGlhLCAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBh
cmUoJXApIiwgdGhpcyk7CiAKICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKmZvcm1hdCk7CkBAIC0yMDAsNiArMjA1
LDggQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcAogCiB2b2lkIFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp1bnByZXBhcmUoKQogeworICAgIHN0ZDo6bG9j
a19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOworCiAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0g
bnVsbHB0cjsKICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKICAgICBtX3JpbmdC
dWZmZXIgPSBudWxscHRyOwpAQCAtMjE0LDYgKzIyMSw4IEBAIHZvaWQgV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakM6OnVucHIKIAogdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6cHJvY2VzcyhDTUZvcm1hdERlc2NyaXB0aW9uUmVmLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGVCdWZmZXIpCiB7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisK
ICAgICBpZiAoIW1fcmluZ0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZS5oCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoZG91YmxlKSB7IH0KIAogICAgIGRv
dWJsZSBlbGFwc2VkVGltZSgpOwotICAgIHN0YXRpYyBpbnQgcmVuZGVySW50ZXJ2YWwoKSB7IHJl
dHVybiAxMjU7IH0KKyAgICBzdGF0aWMgaW50IHJlbmRlckludGVydmFsKCkgeyByZXR1cm4gNjA7
IH0KIAogcHJpdmF0ZToKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300718</attachid>
            <date>2017-02-06 06:47:57 -0800</date>
            <delta_ts>2017-02-06 09:23:58 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>core_audio_renderer_patch_2.txt</filename>
            <type>text/plain</type>
            <size>75994</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMTY1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBAQAorMjAxNy0wMi0wMyAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW0g
TWFjXSBTdG9wIHVzaW5nIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODIxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXNJbnRlcm5hbCk6IERvbid0IGFzc3VtZSB0aGUg
Zmlyc3QgdGltZXN0YW1wIGZyb20gdGhlCisgICAgICAgIHJlbmRlciBwcm9jIGFmdGVyIGEgcGF1
c2UgaXMgemVyby4KKworICAgICAgICBTdG9wIHVzaW5nIGFuIGF1ZGlvIHJlbmRlcmVyIGZvciBl
YWNoIGF1ZGlvIHRyYWNrLiBObyBhdWRpbyByZW5kZXJlcnMgbWVhbnMgd2UgZG9uJ3QgbmVlZCB0
byB1c2UKKyAgICAgICAgYW4gQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgor
ICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGludmFsaWRh
dGVdKTogTm8gbW9yZSBhdWRpbyByZW5kZXJlcnMuCisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVm
ZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpj
aGFuZ2U6Y29udGV4dDpdKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKTogUGF1
c2UKKyAgICAgICAgICBhdWRpbyB0cmFja3MgZXhwbGljaXRseS4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXVkaW9Tb3VyY2VQcm92aWRl
cik6IFJlbW92ZSB0aGUgZXhpc3RpbmcgY29kZSwKKyAgICAgICAgICBpdCB3YXMgaW5jb3JyZWN0
IGFuZCBub3QgdGhyZWFkIHNhZmUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmZsdXNoUmVuZGVyZXJzKTogTm8gbW9yZSBhdWRpbyByZW5k
ZXJlcnMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmVuc3VyZUxheWVyKTogTm8gbW9yZSByZW5kZXIgc3luY2hyb25pemVyLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95
TGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGxheSk6IFN0YXJ0IGVhY2ggYXVkaW8gdHJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKTogUGF1
c2UgZWFjaCBhdWRpbyB0cmFjay4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKTogUGFzcyB0aGUgY29tbWFuZCB0byBlYWNo
IGF1ZGlvIHRyYWNrLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpzZXRNdXRlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdHJlYW1UaW1lKTogTm8gbW9yZSByZW5k
ZXIgc3luY2hyb25pemVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzYW1wbGVCdWZmZXJVcGRhdGVkKTogRG9uJ3QgaGFuZGxlIGF1ZGlv
IHNhbXBsZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnVwZGF0ZVRyYWNrcyk6IFVwZGF0ZSBmb3IgYXVkaW8gdHJhY2sgY2xhc3MgY2hh
bmdlLiBObworICAgICAgICBtb3JlIHJlbmRlciBzeW5jaHJvbml6ZXIuCisgICAgICAgICgtW1dl
YkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdSZW5kZXJl
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VM
aXN0ZW5lciBzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6XSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVBdWRpb1Nh
bXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpjcmVhdGVBdWRpb1JlbmRlcmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUF1ZGlvUmVu
ZGVyZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95QXVkaW9SZW5kZXJlcnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW5kZXJl
clN0YXR1c0RpZENoYW5nZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUpOiBh
ZGQvcmVtb3ZlT2JzZXJ2ZXIgdGFrZXMgYSByZWZlcmVuY2UsCisgICAgICAgIG5vdCBhIHBvaW50
ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6fk1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOiBSZW5hbWVkIGZyb20gc291cmNlSGFz
TW9yZU1lZGlhRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Ojpzb3VyY2VIYXNNb3JlTWVkaWFEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcik6IFRha2UgYSByZWZlcmVuY2UsIG5v
dCBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpyZW1v
dmVPYnNlcnZlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOiBSZW5hbWVkIGZyb20gbWVkaWFEYXRhVXBkYXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZSk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3Ap
OiBEcml2ZS1ieSBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6cmVxdWVzdFN0b3ApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2U6Om1lZGlhRGF0YVVwZGF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnNodXRkb3duQ2FwdHVyZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRP
dXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOiBEZWxldGVk
LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnByb2Nlc3NO
ZXdGcmFtZSk6IENhbGwgdmlkZW9TYW1wbGVBdmFpbGFibGUsIG5vdCBtZWRpYURhdGFVcGRhdGVk
LgorCisgICAgICAgIFJlbmRlciBhdWRpbyB3aXRoIGEgQ29yZUF1ZGlvIG91dHB1dCB1bml0Lgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6fkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXlJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnBsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpwYXVzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldFZv
bHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E6OnNldHVwQXVkaW9Vbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c291cmNlU3RvcHBlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnJlbmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6
OmlucHV0UHJvYyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmFsaWduVG8xNkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjplbWl0U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOiBNaW5vciBj
bGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJl
bmRlcik6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcik6IENhbGwgdmlkZW9TYW1wbGVBdmFp
bGFibGUsIG5vdCBtZWRpYURhdGFVcGRhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5XZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6cHJvdmlkZUlucHV0KTogVXNlIGEgbXV0ZXguIEdldCByaWQgb2Yg
bV93cml0ZUFoZWFkQ291bnQsCisgICAgICAgIGl0IGlzIGFsd2F5cyAwLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUpOiBVc2UgYSBsb2Nr
LgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnVucHJl
cGFyZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM6OnByb2Nlc3MpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZUF1ZGlvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6cmVuZGVySW50ZXJ2YWwpOiBEZWNyZWFzZSB0aGUgcmVuZGVyIGludGVydmFsLgorCiAy
MDE3LTAyLTAzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXVtXSzJdIEFkZCBTUEkgdG8gb3ZlcnJpZGUgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IG9mIGEgcGFnZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiAr
MTU5LDcgQEAKIAkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzYzOEE5ODE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSAqLzsg
fTsKIAkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4
NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkwNzY5NzA4NzE0NjNBRDg3
MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xp
c3QuaCAqLzsgfTsKKwkJMDc2RUMxMzMxRTQ0RjU2RDAwRTVEODEzIC8qIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmNwcCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0
IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQkwNzcwN0NCMDFFMjA1RUUz
MDAwMDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAvKiBB
dWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovOyB9OwogCQkwNzc2NjRGQzE4M0U2QjVDMDAxMzNC
OTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyog
SlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CkBAIC0yODQsNyArMjg1LDYg
QEAKIAkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QzFE
ODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLzsgfTsKIAkJMDdDMDQ2
QzMxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc1NzFFNDBEQ0ZE
MDA3MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcCAqLzsgfTsKIAkJMDdDMDQ2
QzQxRTQyNTA4QjAwNzIwMUU3IC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQjg3NTgxRTQwRENGRDAw
NzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA3QzA0NkM3MUU0MjUxNTUwMDcyMDFFNyAv
KiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMDQ2QzUxRTQyNTEyRjAwNzIwMUU3IC8q
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgKi87IH07CiAJCTA3QzA0NkM4
MUU0MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzA0NkM2MUU0
MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLzsg
fTsKIAkJMDdDMDQ2Q0IxRTQyNjQxMzAwNzIwMUU3IC8qIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzU2
MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdDMUMwRTIxQkZCNjAwMTAw
QkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMUMwRTAxQkZCNjAwMTAwQkQyMjU2
IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9OwpAQCAtNzI1Niw2ICs3
MjU2LDcgQEAKIAkJMDc2MzhBOTgxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNl
c3Npb25NYW5hZ2VySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzY5NzA4
NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzZFQzEzMjFFNDRGMkNCMDBFNUQ4MTMgLyogQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc3MDdDQUYxRTIwNUVDNDAwMDA1QkY3IC8qIEF1ZGlvU291cmNlT2JzZXJ2ZXJP
YmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU291cmNlT2JzZXJ2
ZXJPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzM3LDYgKzczMzgsNyBA
QAogCQkwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3QjcxMTZCMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjcxMTZD
MUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwN0MwNDZDNjFFNDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0MxQzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWlu
dHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBC
RDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUzOTQsMTMgKzE1
Mzk2LDEzIEBACiAJCTA3MjlCMTREMTdDRkNDQTAwMDRGMUQ2MCAvKiBtYWMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3NkVDMTMyMUU0NEYyQ0IwMEU1
RDgxMyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwICovLAogCQkJCTVD
REQ4MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3Bw
ICovLAogCQkJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaCAqLywKIAkJCQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmNwcCAqLywKIAkJCQk1Q0REODMzQzFFNDMyNEJCMDA2MjFFOTIg
LyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggKi8sCiAJCQkJMDc3MDdDQjExRTIwNjQ5
QzAwMDA1QkY3IC8qIEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQy5oICovLAogCQkJCTA3
NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovLAot
CQkJCTA3QzA0NkM1MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EuY3BwICovLAogCQkJCTA3QzA0NkM2MUU0MjUxMkYwMDcyMDFFNyAvKiBBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCAqLywKIAkJCQkwNzAzNjNEODE4MUExQ0RDMDBD
MDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJCQkwNzAzNjNEOTE4MUExQ0RD
MDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gKi8sCkBAIC0yNTIyOSw2ICsyNTIz
MSw3IEBACiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRl
QVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0QTc2MzE4MEY5
RjcwMDBCMDc2QzkgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3QzA0NkM4MUU0MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RDZBNEY4MUJGMjMw
N0QwMDE3NDE0NiAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDMxNjA4QjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdFRTY4NDYwMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlv
bkNGLmggaW4gSGVhZGVycyAqLywKQEAgLTMxODU0LDYgKzMxODU3LDcgQEAKIAkJCQk3QzM5QzM3
NDFEREJCOEQzMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0U1OEQ1NzFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBRTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RS
ZWZFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3NkVDMTMzMUU0NEY1NkQwMEU1RDgx
MyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjdBRTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RTcGFuRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjIyN0FFOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVVJJUmVmZXJl
bmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUVDMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdVc2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIxMDMsNyArMzIxMDcsNiBAQAog
CQkJCTQ5QzdCOUU1MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRleHR1cmUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNkY5OTVBMjMxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVHJhbnNmb3JtRmVl
ZGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEMzRjFGNUExMEM4ODcxMjAwRDcyQ0UxIC8q
IFdlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3QzA0NkM3MUU0
MjUxNTUwMDcyMDFFNyAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNkY5OTVBMjUxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMVmVydGV4
QXJyYXlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkYyMjJCNzYxQUI1MkQ4QTAwOTQ2
NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc3QTE3QTc3MTJGMjg2NDIwMDRFMDJGNiAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHAJKHJldmlzaW9uIDIx
MTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURh
dGFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsMTQgKzI1NSwxMyBAQCBib29sIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXNJCiAgICAgICAgIGNvbnN0IGRvdWJsZSB0
ZW5NUyA9IC4wMTsKICAgICAgICAgY29uc3QgZG91YmxlIGZpdmVNUyA9IC4wMDU7CiAgICAgICAg
IGRvdWJsZSBzYW1wbGVSYXRlID0gbV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpOwor
ICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IHRpbWVTdGFtcCArIG1fdGltZVN0YW1wOwog
ICAgICAgICBpZiAoYnVmZmVyZWQgPiBzYW1wbGVSYXRlICogdHdlbnR5TVMpCi0gICAgICAgICAg
ICBtX291dHB1dFNhbXBsZU9mZnNldCA9IG1fdGltZVN0YW1wIC0gc2FtcGxlUmF0ZSAqIHR3ZW50
eU1TOworICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgLT0gc2FtcGxlUmF0ZSAqIHR3
ZW50eU1TOwogICAgICAgICBlbHNlIGlmIChidWZmZXJlZCA+IHNhbXBsZVJhdGUgKiB0ZW5NUykK
LSAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gbV90aW1lU3RhbXAgLSBzYW1wbGVS
YXRlICogdGVuTVM7CisgICAgICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCAtPSBzYW1wbGVS
YXRlICogdGVuTVM7CiAgICAgICAgIGVsc2UgaWYgKGJ1ZmZlcmVkID4gc2FtcGxlUmF0ZSAqIGZp
dmVNUykKLSAgICAgICAgICAgIG1fb3V0cHV0U2FtcGxlT2Zmc2V0ID0gbV90aW1lU3RhbXAgLSBz
YW1wbGVSYXRlICogZml2ZU1TOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX291dHB1dFNh
bXBsZU9mZnNldCA9IG1fdGltZVN0YW1wOworICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZz
ZXQgLT0gc2FtcGxlUmF0ZSAqIGZpdmVNUzsKIAogICAgICAgICBtX3RyYW5zaXRpb25pbmdGcm9t
UGF1c2VkID0gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgJKHJl
dmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxl
QnVmZmVyICpDTVMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtOworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
OwogY2xhc3MgQVZWaWRlb0NhcHR1cmVTb3VyY2U7CiBjbGFzcyBDbG9jazsKIGNsYXNzIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudDsKQEAgLTU1LDEwICs1NSw2IEBAIGNsYXNzIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW07CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI7CiAj
ZW5kaWYKIAotI2lmIF9faGFzX2luY2x1ZGUoPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlclJl
bmRlclN5bmNocm9uaXplci5oPikKLSNkZWZpbmUgVVNFX1JFTkRFUl9TWU5DSFJPTklaRVIgMQot
I2VuZGlmCi0KIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHByaXZhdGUgTWVkaWFTdHJl
YW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2Jz
ZXJ2ZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQyhNZWRpYVBsYXllciopOwpAQCAtODEsNyArNzcsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbnN1cmVMYXllcigpOwogICAgIHZvaWQgZGVzdHJveUxheWVyKCk7CiAKLSAgICB2b2lk
IHJlbmRlcmVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciosIE5T
TnVtYmVyKik7CiAgICAgdm9pZCBsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciosIE5TTnVtYmVyKik7CiAKIHByaXZhdGU6CkBAIC0xNDQsMTMgKzEzOSw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBmbHVzaEFuZFJlbW92ZVZpZGVvU2FtcGxlQnVmZmVycygpOwog
ICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogCi0g
ICAgdm9pZCBlbnF1ZXVlQXVkaW9TYW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBNZWRp
YVNhbXBsZSYpOwotICAgIHZvaWQgY3JlYXRlQXVkaW9SZW5kZXJlcihBdG9taWNTdHJpbmcpOwot
ICAgIHZvaWQgZGVzdHJveUF1ZGlvUmVuZGVyZXIoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVy
Kik7Ci0gICAgdm9pZCBkZXN0cm95QXVkaW9SZW5kZXJlcihBdG9taWNTdHJpbmcpOwotICAgIHZv
aWQgZGVzdHJveUF1ZGlvUmVuZGVyZXJzKCk7Ci0gICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9u
V2hlblJlYWR5Rm9yQXVkaW9EYXRhKEF0b21pY1N0cmluZyk7Ci0KICAgICB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBtZXRhRGF0YUF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFTdHJlYW1Qcml2YXRlICYmIG1fcmVhZHlTdGF0ZSA+PSBNZWRpYVBsYXllcjo6SGF2
ZU1ldGFkYXRhOyB9CkBAIC0yMTAsOSArMTk4LDcgQEAgcHJpdmF0ZToKIAogICAgIE1lZGlhVGlt
ZSBzdHJlYW1UaW1lKCkgY29uc3Q7CiAKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKICAg
ICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7Ci0jZW5k
aWYKIAogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKICAgICBXZWFrUHRy
RmFjdG9yeTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+IG1fd2Vha1B0ckZh
Y3Rvcnk7CkBAIC0yMjIsMjIgKzIwOCwxNCBAQCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRyPFdl
YkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+IG1fc3RhdHVzQ2hhbmdlTGlzdGVu
ZXI7CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICBIYXNo
TWFwPFN0cmluZywgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcj4+IG1fYXVk
aW9SZW5kZXJlcnM7Ci0gICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25p
emVyPiBtX3N5bmNocm9uaXplcjsKLSNlbHNlCiAgICAgc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBt
X2Nsb2NrOwotI2VuZGlmCiAKICAgICBNZWRpYVRpbWUgbV9wYXVzZWRUaW1lOwogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBtX3BhdXNlZEltYWdlOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNrTWFwOworICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
Pj4gbV9hdWRpb1RyYWNrTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbT4+IG1fdmlkZW9UcmFja01hcDsKICAgICBQZW5kaW5nU2FtcGxl
UXVldWUgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9O
SVpFUikKLSAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZTsK
LSNlbmRpZgogCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7
IE1lZGlhUGxheWVyOjpFbXB0eSB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZyB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbQkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2ltcG9ydCAiQVZGb3VuZGF0
aW9uU1BJLmgiCi0jaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgiCisjaW1w
b3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKICNpbXBvcnQgIkNsb2Nr
LmgiCiAjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0LmgiCkBAIC01Miw3ICs1Miw2IEBACiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uKQogCi1TT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBB
VlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIpCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZG
b3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKIFNPRlRfTElOS19DTEFTU19P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyKQog
CkBAIC02NywxNSArNjYsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBAaW50ZXJmYWNl
IFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7CiAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKiBfcGFyZW50OwogICAgIFZlY3Rv
cjxSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+PiBfbGF5ZXJzOwotICAgIFZl
Y3RvcjxSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyPj4gX3JlbmRlcmVyczsK
IH0KIAogLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQyopY2FsbGJhY2s7CiAtICh2b2lkKWludmFsaWRhdGU7CiAtICh2b2lkKWJlZ2luT2Jz
ZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICopbGF5ZXI7CiAtICh2b2lk
KXN0b3BPYnNlcnZpbmdMYXllcjooQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilsYXllcjsK
LS0gKHZvaWQpYmVnaW5PYnNlcnZpbmdSZW5kZXJlcjooQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRl
cmVyICopcmVuZGVyZXI7Ci0tICh2b2lkKXN0b3BPYnNlcnZpbmdSZW5kZXJlcjooQVZTYW1wbGVC
dWZmZXJBdWRpb1JlbmRlcmVyICopcmVuZGVyZXI7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyCkBAIC0xMDEsMTAgKzk3LDYgQEAg
LSAodm9pZClpbnZhbGlkYXRlCiAgICAgICAgIFtsYXllciByZW1vdmVPYnNlcnZlcjpzZWxmIGZv
cktleVBhdGg6QCJzdGF0dXMiXTsKICAgICBfbGF5ZXJzLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1
dG8mIHJlbmRlcmVyIDogX3JlbmRlcmVycykKLSAgICAgICAgW3JlbmRlcmVyIHJlbW92ZU9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOwotICAgIF9yZW5kZXJlcnMuY2xlYXIoKTsK
LQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2
ZXI6c2VsZl07CiAKICAgICBfcGFyZW50ID0gbnVsbHB0cjsKQEAgLTEyOCwyNCArMTIwLDYgQEAg
LSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVmZgogICAgIF9sYXllcnMucmVt
b3ZlKF9sYXllcnMuZmluZChsYXllcikpOwogfQogCi0tICh2b2lkKWJlZ2luT2JzZXJ2aW5nUmVu
ZGVyZXI6KEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciopcmVuZGVyZXIKLXsKLSAgICBBU1NF
UlQoX3BhcmVudCk7Ci0gICAgQVNTRVJUKCFfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVyKSk7
Ci0KLSAgICBfcmVuZGVyZXJzLmFwcGVuZChyZW5kZXJlcik7Ci0gICAgW3JlbmRlcmVyIGFkZE9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07Ci19Ci0KLS0gKHZvaWQpc3RvcE9ic2Vydmlu
Z1JlbmRlcmVyOihBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqKXJlbmRlcmVyCi17Ci0gICAg
QVNTRVJUKF9wYXJlbnQpOwotICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5zKHJlbmRlcmVy
KSk7Ci0KLSAgICBbcmVuZGVyZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3Rh
dHVzIl07Ci0gICAgX3JlbmRlcmVycy5yZW1vdmUoX3JlbmRlcmVycy5maW5kKHJlbmRlcmVyKSk7
Ci19Ci0KIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRo
IG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4
dDoodm9pZCAqKWNvbnRleHQKIHsKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CkBAIC0xNjcs
MTkgKzE0MSw2IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcKICAg
ICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyU3RhdHVzRGlkQ2hhbmdlKGxh
eWVyLmdldCgpLCBzdGF0dXMuZ2V0KCkpOwogICAgICAgICB9KTsKIAotICAgIH0gZWxzZSBpZiAo
W29iamVjdCBpc0tpbmRPZkNsYXNzOmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNsYXNz
KCldKSB7Ci0gICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJl
bmRlcmVyID0gKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqKW9iamVjdDsKLSAgICAgICAg
UmV0YWluUHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFs
dWVDaGFuZ2VOZXdLZXldOwotCi0gICAgICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRhaW5zKHJl
bmRlcmVyLmdldCgpKSk7Ci0gICAgICAgIEFTU0VSVChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJzdGF0dXMiXSk7Ci0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFdURk1vdmUocHJvdGVjdGVkU2VsZiksIHJlbmRlcmVyID0gV1RGTW92ZShyZW5kZXJlciksIHN0
YXR1cyA9IFdURk1vdmUoc3RhdHVzKV0gewotICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxm
LT5fcGFyZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgcHJvdGVj
dGVkU2VsZi0+X3BhcmVudC0+cmVuZGVyZXJTdGF0dXNEaWRDaGFuZ2UocmVuZGVyZXIuZ2V0KCks
IHN0YXR1cy5nZXQoKSk7Ci0gICAgICAgIH0pOwogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KQEAgLTE5NiwxMSArMTU3LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpNZQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV93
ZWFrUHRyRmFjdG9yeSh0aGlzKQogICAgICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5T
KFtbV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQ
YXJlbnQ6dGhpc10pKQotI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgICwgbV9zeW5j
aHJvbml6ZXIoYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplcklu
c3RhbmNlKCkgaW5pdF0pKQotI2Vsc2UKICAgICAsIG1fY2xvY2soQ2xvY2s6OmNyZWF0ZSgpKQot
I2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpCiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXI6OmNyZWF0ZSgpKQogI2VuZGlmCkBAIC0yMTEsNiArMTY4LDkgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZQogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoJXApIiwgdGhpcyk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkKKyAgICAg
ICAgdHJhY2stPnBhdXNlKCk7CisKICAgICBpZiAobV9tZWRpYVN0cmVhbVByaXZhdGUpIHsKICAg
ICAgICAgbV9tZWRpYVN0cmVhbVByaXZhdGUtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIApAQCAt
MjE5LDkgKzE3OSw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk0K
ICAgICB9CiAKICAgICBkZXN0cm95TGF5ZXIoKTsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpF
UikKLSAgICBkZXN0cm95QXVkaW9SZW5kZXJlcnMoKTsKLSNlbmRpZgogCiAgICAgbV9hdWRpb1Ry
YWNrTWFwLmNsZWFyKCk7CiAgICAgbV92aWRlb1RyYWNrTWFwLmNsZWFyKCk7CkBAIC0zMTUsMzMg
KzI3Miw2IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUEKICAgICBy
ZXR1cm4gdGltZWxpbmVPZmZzZXQ7CiB9CiAKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9T
YW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxl
KQotewotICAgIEFTU0VSVChtX2F1ZGlvVHJhY2tNYXAuY29udGFpbnModHJhY2suaWQoKSkpOwot
ICAgIEFTU0VSVChtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHNhbXBsZS50cmFja0lEKCkpKTsK
LQotICAgIGF1dG8gYXVkaW9UcmFjayA9IG1fYXVkaW9UcmFja01hcC5nZXQodHJhY2suaWQoKSk7
Ci0gICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0ID0gYXVkaW9UcmFjay0+dGltZWxpbmVPZmZz
ZXQoKTsKLSAgICBpZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
KSB7Ci0gICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoc2Ft
cGxlLCByZW5kZXJlckxhdGVuY3kpOwotICAgICAgICBhdWRpb1RyYWNrLT5zZXRUaW1lbGluZU9m
ZnNldCh0aW1lbGluZU9mZnNldCk7Ci0gICAgICAgIExPRyhNZWRpYUNhcHR1cmVTYW1wbGVzLCAi
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGU6
IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICVzIiwgdHJhY2suaWQoKS51dGY4
KCkuZGF0YSgpLCB0b1N0cmluZyh0aW1lbGluZU9mZnNldCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
fQotCi0gICAgdXBkYXRlU2FtcGxlVGltZXMoc2FtcGxlLCB0aW1lbGluZU9mZnNldCwgIk1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUF1ZGlvU2FtcGxlIik7Ci0K
LSAgICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRlcmVycy5nZXQoc2FtcGxlLnRyYWNrSUQo
KSk7Ci0gICAgaWYgKCFbcmVuZGVyZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAg
ICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUsIHNh
bXBsZSk7Ci0gICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEo
c2FtcGxlLnRyYWNrSUQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBbcmVuZGVy
ZXIgZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21T
YW1wbGVCdWZmZXJdOwotfQotI2VuZGlmCi0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
IHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAgIEFTU0VSVChtX3ZpZGVvVHJhY2tN
YXAuY29udGFpbnModHJhY2suaWQoKSkpOwpAQCAtNDAwLDEwMSArMzMwLDExIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICB9XTsKIH0KIAotI2lmIFVTRShS
RU5ERVJfU1lOQ0hST05JWkVSKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JBdWRpb0RhdGEoQXRvbWljU3Ry
aW5nIHRyYWNrSUQpCi17Ci0gICAgaWYgKCFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNr
SUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRl
cmVycy5nZXQodHJhY2tJRCk7Ci0gICAgW3JlbmRlcmVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVh
ZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeIHsKLSAgICAg
ICAgW3JlbmRlcmVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKLQotICAgICAgICBhdXRvIGF1
ZGlvVHJhY2sgPSBtX2F1ZGlvVHJhY2tNYXAuZ2V0KHRyYWNrSUQpOwotICAgICAgICB3aGlsZSAo
IW1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAo
IVtyZW5kZXJlciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgICAgICBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yQXVkaW9EYXRhKHRyYWNrSUQpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBzYW1w
bGUgPSBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAgICAg
ZW5xdWV1ZUF1ZGlvU2FtcGxlKGF1ZGlvVHJhY2stPnN0cmVhbVRyYWNrKCksIHNhbXBsZS5nZXQo
KSk7Ci0gICAgICAgIH0KLSAgICB9XTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OmNyZWF0ZUF1ZGlvUmVuZGVyZXIoQXRvbWljU3RyaW5nIHRyYWNrSUQp
Ci17Ci0gICAgQVNTRVJUKCFtX2F1ZGlvUmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKTsKLSAg
ICBhdXRvIHJlbmRlcmVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSAgICBbcmVuZGVyZXIgc2V0QXVkaW9UaW1lUGl0Y2hBbGdv
cml0aG06KG1fcGxheWVyLT5wcmVzZXJ2ZXNQaXRjaCgpID8gQVZBdWRpb1RpbWVQaXRjaEFsZ29y
aXRobVNwZWN0cmFsIDogQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCldOwotICAg
IG1fYXVkaW9SZW5kZXJlcnMuc2V0KHRyYWNrSUQsIHJlbmRlcmVyKTsKLSAgICBbbV9zeW5jaHJv
bml6ZXIgYWRkUmVuZGVyZXI6cmVuZGVyZXIuZ2V0KCldOwotICAgIFttX3N0YXR1c0NoYW5nZUxp
c3RlbmVyIGJlZ2luT2JzZXJ2aW5nUmVuZGVyZXI6cmVuZGVyZXIuZ2V0KCldOwotICAgIGlmICht
X2F1ZGlvUmVuZGVyZXJzLnNpemUoKSA9PSAxKQotICAgICAgICByZW5kZXJpbmdNb2RlQ2hhbmdl
ZCgpOwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVz
dHJveUF1ZGlvUmVuZGVyZXIoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyKiByZW5kZXJlcikK
LXsKLSAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nUmVuZGVyZXI6cmVu
ZGVyZXJdOwotICAgIFtyZW5kZXJlciBmbHVzaF07Ci0gICAgW3JlbmRlcmVyIHN0b3BSZXF1ZXN0
aW5nTWVkaWFEYXRhXTsKLQotICAgIENNVGltZSBub3cgPSBDTVRpbWViYXNlR2V0VGltZShbbV9z
eW5jaHJvbml6ZXIgdGltZWJhc2VdKTsKLSAgICBbbV9zeW5jaHJvbml6ZXIgcmVtb3ZlUmVuZGVy
ZXI6cmVuZGVyZXIgYXRUaW1lOm5vdyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6XihCT09MKSB7IH1d
OwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJv
eUF1ZGlvUmVuZGVyZXIoQXRvbWljU3RyaW5nIHRyYWNrSUQpCi17Ci0gICAgaWYgKCFtX2F1ZGlv
UmVuZGVyZXJzLmNvbnRhaW5zKHRyYWNrSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkZXN0
cm95QXVkaW9SZW5kZXJlcihtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFja0lEKS5nZXQoKSk7Ci0g
ICAgbV9hdWRpb1JlbmRlcmVycy5yZW1vdmUodHJhY2tJRCk7Ci0gICAgaWYgKCFtX2F1ZGlvUmVu
ZGVyZXJzLnNpemUoKSkKLSAgICAgICAgcmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKLX0KLQotdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lBdWRpb1JlbmRl
cmVycygpCi17Ci0gICAgbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5jbGVhcigpOwotICAgIGZv
ciAoYXV0byYgcmVuZGVyZXIgOiBtX2F1ZGlvUmVuZGVyZXJzLnZhbHVlcygpKQotICAgICAgICBk
ZXN0cm95QXVkaW9SZW5kZXJlcihyZW5kZXJlci5nZXQoKSk7Ci0gICAgbV9hdWRpb1JlbmRlcmVy
cy5jbGVhcigpOwotfQotCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogewogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCByZXR1cm4gYSBtaXggb2YgYWxsIGF1ZGlvIHRyYWNrcyAtIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzMDUKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICh0cmFj
ay0+c3RyZWFtVHJhY2soKS5lbmRlZCgpIHx8ICF0cmFjay0+c3RyZWFtVHJhY2soKS5lbmFibGVk
KCkgfHwgdHJhY2stPnN0cmVhbVRyYWNrKCkubXV0ZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIHJldHVybiB0cmFjay0+c3RyZWFtVHJhY2soKS5hdWRpb1NvdXJjZVByb3Zp
ZGVyKCk7Ci0gICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQotI2VuZGlmCi0KLXZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW5kZXJlclN0YXR1c0RpZENoYW5n
ZShBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqIHJlbmRlcmVyLCBOU051bWJlciogc3RhdHVz
KQotewotI2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgIFN0cmluZyB0cmFja0lEOwot
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fYXVkaW9SZW5kZXJlcnMpIHsKLSAgICAgICAgaWYgKHBh
aXIudmFsdWUgPT0gcmVuZGVyZXIpIHsKLSAgICAgICAgICAgIHRyYWNrSUQgPSBwYWlyLmtleTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIEFTU0VSVCghdHJhY2tJ
RC5pc0VtcHR5KCkpOwotICAgIGlmIChzdGF0dXMuaW50ZWdlclZhbHVlID09IEFWUXVldWVkU2Ft
cGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzUmVuZGVyaW5nKQotICAgICAgICBtX2F1ZGlvVHJhY2tN
YXAuZ2V0KHRyYWNrSUQpLT5zZXRUaW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOwotICAgIFVOVVNFRF9QQVJB
TShzdGF0dXMpOwotI2VuZGlmCi19CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciogbGF5ZXIsIE5TTnVtYmVyKiBzdGF0dXMpCiB7CkBAIC01MTMsMTEgKzM1Myw2IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKIHsKICAgICBpZiAobV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBm
bHVzaF07Ci0KLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICBmb3IgKGF1dG8mIHJl
bmRlcmVyIDogbV9hdWRpb1JlbmRlcmVycy52YWx1ZXMoKSkKLSAgICAgICAgW3JlbmRlcmVyIGZs
dXNoXTsKLSNlbmRpZgogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6c2hvdWxkRW5xdWV1ZVZpZGVvU2FtcGxlQnVmZmVyKCkgY29uc3QKQEAgLTU0OSwxMCAr
Mzg0LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENH
Q29sb3IoQ29sb3I6OmJsYWNrKTsKICAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9i
c2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKIAotI2lmIFVT
RShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgIFttX3N5bmNocm9uaXplciBhZGRSZW5kZXJlcjpt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKV07Ci0jZW5kaWYKLQogICAgIHJlbmRlcmlu
Z01vZGVDaGFuZ2VkKCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9f
UFJFU0VOVEFUSU9OX01PREUpCkBAIC01NzAsMTMgKzQwMSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmoKICAgICAgICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIg
c3RvcE9ic2VydmluZ0xheWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKICAg
ICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRh
XTsKICAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKLSNpZiBVU0Uo
UkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICAgICAgQ01UaW1lIGN1cnJlbnRUaW1lID0gQ01UaW1l
YmFzZUdldFRpbWUoW21fc3luY2hyb25pemVyIHRpbWViYXNlXSk7Ci0gICAgICAgIFttX3N5bmNo
cm9uaXplciByZW1vdmVSZW5kZXJlcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKSBh
dFRpbWU6Y3VycmVudFRpbWUgd2l0aENvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCkgewotICAgICAg
ICAgICAgLy8gTm8tb3AuCi0gICAgICAgIH1dOwotICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciA9IG51bGxwdHI7Ci0jZW5kaWYKICAgICB9CiAKICAgICByZW5kZXJpbmdNb2RlQ2hh
bmdlZCgpOwpAQCAtNzAwLDEzICs1MjQsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iagogICAgICAgICByZXR1cm47CiAKICAgICBtX3BsYXlpbmcgPSB0cnVlOwot
I2lmIFVTRShSRU5ERVJfU1lOQ0hST05JWkVSKQotICAgIGlmICghbV9zeW5jaHJvbml6ZXIuZ2V0
KCkucmF0ZSkKLSAgICAgICAgW21fc3luY2hyb25pemVyIHNldFJhdGU6MSBdOyAvLyBzdHJlYW10
aW1lCi0jZWxzZQogICAgIGlmICghbV9jbG9jay0+aXNSdW5uaW5nKCkpCiAgICAgICAgIG1fY2xv
Y2stPnN0YXJ0KCk7Ci0jZW5kaWYKKworICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1
ZGlvVHJhY2tNYXAudmFsdWVzKCkpCisgICAgICAgIHRyYWNrLT5wbGF5KCk7CiAKICAgICBtX2hh
dmVFdmVyUGxheWVkID0gdHJ1ZTsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewpA
QCAtNzI1LDYgKzU0Nyw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmoKICAgICBtX3BhdXNlZFRpbWUgPSBjdXJyZW50TWVkaWFUaW1lKCk7CiAgICAgbV9wbGF5aW5n
ID0gZmFsc2U7CiAKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFw
LnZhbHVlcygpKQorICAgICAgICB0cmFjay0+cGF1c2UoKTsKKwogICAgIHVwZGF0ZURpc3BsYXlN
b2RlKCk7CiAgICAgdXBkYXRlUGF1c2VkSW1hZ2UoKTsKICAgICBmbHVzaFJlbmRlcmVycygpOwpA
QCAtNzQzLDExICs1NjgsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdm9sdW1lID0gdm9sdW1lOwotCi0jaWYgVVNF
KFJFTkRFUl9TWU5DSFJPTklaRVIpCi0gICAgZm9yIChhdXRvJiByZW5kZXJlciA6IG1fYXVkaW9S
ZW5kZXJlcnMudmFsdWVzKCkpCi0gICAgICAgIFtyZW5kZXJlciBzZXRWb2x1bWU6dm9sdW1lXTsK
LSNlbmRpZgorICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFs
dWVzKCkpCisgICAgICAgIHRyYWNrLT5zZXRWb2x1bWUobV92b2x1bWUpOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkK
QEAgLTc1OCwxMSArNTgwLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iagogICAgICAgICByZXR1cm47CiAKICAgICBtX211dGVkID0gbXV0ZWQ7Ci0gICAgCi0jaWYg
VVNFKFJFTkRFUl9TWU5DSFJPTklaRVIpCi0gICAgZm9yIChhdXRvJiByZW5kZXJlciA6IG1fYXVk
aW9SZW5kZXJlcnMudmFsdWVzKCkpCi0gICAgICAgIFtyZW5kZXJlciBzZXRNdXRlZDptdXRlZF07
Ci0jZW5kaWYKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Omhhc1ZpZGVvKCkgY29uc3QKQEAgLTc5NiwxMSArNjEzLDcgQEAgTWVkaWFUaW1lIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzdHJlYW1UaW1lKCkgY29uc3QKIHsKLSNpZiBVU0UoUkVOREVSX1NZ
TkNIUk9OSVpFUikKLSAgICByZXR1cm4gdG9NZWRpYVRpbWUoQ01UaW1lYmFzZUdldFRpbWUoW21f
c3luY2hyb25pemVyIHRpbWViYXNlXSkpOwotI2Vsc2UKICAgICByZXR1cm4gTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKG1fY2xvY2stPmN1cnJlbnRUaW1lKCkpOwotI2VuZGlmCiB9CiAKIE1l
ZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpuZXR3b3JrU3RhdGUoKSBjb25zdApAQCAtOTI1LDE5ICs3MzgsMTEgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIGlmICghbV9wbGF5aW5nIHx8IHN0
cmVhbVRpbWUoKS50b0RvdWJsZSgpIDwgMCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgVVNFKFJF
TkRFUl9TWU5DSFJPTklaRVIpCi0gICAgaWYgKCFDTVRpbWViYXNlR2V0RWZmZWN0aXZlUmF0ZShb
bV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0KICAg
ICBzd2l0Y2ggKHRyYWNrLnR5cGUoKSkgewogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
Tm9uZToKICAgICAgICAgLy8gRG8gbm90aGluZy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbzoKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikK
LSAgICAgICAgZW5xdWV1ZUF1ZGlvU2FtcGxlKHRyYWNrLCBtZWRpYVNhbXBsZSk7Ci0jZW5kaWYK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoKICAg
ICAgICAgaWYgKCZ0cmFjayA9PSBtX2FjdGl2ZVZpZGVvVHJhY2suZ2V0KCkpCkBAIC0xMDM3LDM2
ICs4NDIsMjMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iagogewog
ICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yIGN1cnJlbnRUcmFja3MgPSBtX21lZGlh
U3RyZWFtUHJpdmF0ZS0+dHJhY2tzKCk7CiAKLSAgICBGdW5jdGlvbjx2b2lkKFJlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50LCBUcmFja1N0YXRlKT4gIHNldEF1ZGlvVHJh
Y2tTdGF0ZSA9IFt0aGlzXShhdXRvIHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUp
CisgICAgRnVuY3Rpb248dm9pZChSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hPiwgaW50LCBUcmFja1N0YXRlKT4gIHNldEF1ZGlvVHJhY2tTdGF0ZSA9IFt0aGlzXShhdXRv
IHRyYWNrLCBpbnQgaW5kZXgsIFRyYWNrU3RhdGUgc3RhdGUpCiAgICAgewogICAgICAgICBzd2l0
Y2ggKHN0YXRlKSB7CiAgICAgICAgIGNhc2UgVHJhY2tTdGF0ZTo6UmVtb3ZlOgotICAgICAgICAg
ICAgdHJhY2stPnN0cmVhbVRyYWNrKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAg
ICAgbV9wbGF5ZXItPnJlbW92ZUF1ZGlvVHJhY2soKnRyYWNrKTsKLSNpZiBVU0UoUkVOREVSX1NZ
TkNIUk9OSVpFUikKLSAgICAgICAgICAgIGRlc3Ryb3lBdWRpb1JlbmRlcmVyKHRyYWNrLT5pZCgp
KTsKLSNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJhY2tTdGF0ZTo6
QWRkOgotICAgICAgICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCkuYWRkT2JzZXJ2ZXIoKnRoaXMp
OwogICAgICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soKnRyYWNrKTsKLSNpZiBVU0Uo
UkVOREVSX1NZTkNIUk9OSVpFUikKLSAgICAgICAgICAgIGNyZWF0ZUF1ZGlvUmVuZGVyZXIodHJh
Y2stPmlkKCkpOwotI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUcmFj
a1N0YXRlOjpDb25maWd1cmU6CiAgICAgICAgICAgICB0cmFjay0+c2V0VHJhY2tJbmRleChpbmRl
eCk7CiAgICAgICAgICAgICBib29sIGVuYWJsZWQgPSB0cmFjay0+c3RyZWFtVHJhY2soKS5lbmFi
bGVkKCkgJiYgIXRyYWNrLT5zdHJlYW1UcmFjaygpLm11dGVkKCk7CiAgICAgICAgICAgICB0cmFj
ay0+c2V0RW5hYmxlZChlbmFibGVkKTsKLSNpZiBVU0UoUkVOREVSX1NZTkNIUk9OSVpFUikKLSAg
ICAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFjay0+aWQo
KSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVuZGVyZXIpOwotICAgICAgICAgICAgcmVuZGVyZXIu
Z2V0KCkubXV0ZWQgPSAhZW5hYmxlZDsKLSNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9OwotICAgIHVwZGF0ZVRyYWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBjdXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbTo6Y3JlYXRlLCBzZXRBdWRpb1RyYWNrU3RhdGUpOworICAgIHVwZGF0ZVRy
YWNrc09mVHlwZShtX2F1ZGlvVHJhY2tNYXAsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBj
dXJyZW50VHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpjcmVhdGUs
IHNldEF1ZGlvVHJhY2tTdGF0ZSk7CiAKICAgICBGdW5jdGlvbjx2b2lkKFJlZlB0cjxWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiwgaW50LCBUcmFja1N0YXRlKT4gc2V0VmlkZW9UcmFja1N0
YXRlID0gWyZdKGF1dG8gdHJhY2ssIGludCBpbmRleCwgVHJhY2tTdGF0ZSBzdGF0ZSkKICAgICB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oCShyZXZpc2lvbiAyMTE2
MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtIGZp
bmFsIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKK2NsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW0gOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGUgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0pCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPiBjcmVhdGUoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmIHN0cmVhbVRyYWNrKQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgTWVkaWFUaW1lIHRpbWVsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZU9m
ZnNldDsgfQogICAgIHZvaWQgc2V0VGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiBvZmZz
ZXQpIHsgbV90aW1lbGluZU9mZnNldCA9IG9mZnNldDsgfQogCi1wcml2YXRlOgorcHJvdGVjdGVk
OgogICAgIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUmIHRyYWNrKQogICAgICAgICA6IG1fc3RyZWFtVHJhY2sodHJhY2spCiAgICAgICAgICwgbV9p
ZCh0cmFjay5pZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAkocmV2aXNp
b24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMiArNTIsMTIgQEAg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok1lZGlhU3RyZWFtVHJhYwogICAgICwgbV9pc0VuYWJs
ZWQodHJ1ZSkKICAgICAsIG1faXNFbmRlZChmYWxzZSkKIHsKLSAgICBtX3NvdXJjZS0+YWRkT2Jz
ZXJ2ZXIodGhpcyk7CisgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KIAogTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6On5NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSgpCiB7Ci0gICAg
bV9zb3VyY2UtPnJlbW92ZU9ic2VydmVyKHRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVPYnNl
cnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmFkZE9ic2Vy
dmVyKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpCkBAIC0xOTgs
NyArMTk4LDcgQEAgYm9vbCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cHJldmVudFNvdQogICAg
IHJldHVybiAhbV9pc0VuZGVkOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpz
b3VyY2VIYXNNb3JlTWVkaWFEYXRhKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK3ZvaWQgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBt
ZWRpYVNhbXBsZSkKIHsKICAgICBtZWRpYVNhbXBsZS5zZXRUcmFja0lEKGlkKCkpOwogICAgIGZv
ciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKSBmaW5h
bDsKICAgICB2b2lkIHNvdXJjZVNldHRpbmdzQ2hhbmdlZCgpIGZpbmFsOwogICAgIGJvb2wgcHJl
dmVudFNvdXJjZUZyb21TdG9wcGluZygpIGZpbmFsOwotICAgIHZvaWQgc291cmNlSGFzTW9yZU1l
ZGlhRGF0YShNZWRpYVNhbXBsZSYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmKSBmaW5hbDsKIAogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2
ZXJzOwogICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBtX3NvdXJjZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjcsMTYgKzY3LDE2IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQoKQogICAg
IG1fcmVtb3RlID0gZmFsc2U7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2Jz
ZXJ2ZXIoUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQordm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZl
ciYgb2JzZXJ2ZXIpCiB7Ci0gICAgbV9vYnNlcnZlcnMuYXBwZW5kKG9ic2VydmVyKTsKKyAgICBt
X29ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpyZW1vdmVPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciogb2JzZXJ2
ZXIpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZU9ic2VydmVyKFJlYWx0aW1lTWVk
aWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAgICBzaXplX3QgcG9zID0gbV9vYnNl
cnZlcnMuZmluZChvYnNlcnZlcik7Ci0gICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKLSAgICAgICAg
bV9vYnNlcnZlcnMucmVtb3ZlKHBvcyk7CisgICAgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3RNYXRj
aGluZyhbJm9ic2VydmVyXShhdXRvKiBhbk9ic2VydmVyKSB7CisgICAgICAgIHJldHVybiBhbk9i
c2VydmVyID09ICZvYnNlcnZlcjsKKyAgICB9KTsKIAogICAgIGlmICghbV9vYnNlcnZlcnMuc2l6
ZSgpKQogICAgICAgICBzdG9wKCk7CkBAIC0xMTIsMTAgKzExMiwxNyBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6bWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCit2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxl
JiBtZWRpYVNhbXBsZSkKIHsKLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMp
Ci0gICAgICAgIG9ic2VydmVyLT5zb3VyY2VIYXNNb3JlTWVkaWFEYXRhKG1lZGlhU2FtcGxlKTsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnZpZGVvU2FtcGxlQXZhaWxhYmxl
KG1lZGlhU2FtcGxlKTsKK30KKwordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCB2b2lkKiBhdWRpb0RhdGEsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAg
ICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgZGVz
Y3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKIH0KIAogYm9vbCBSZWFsdGltZU1lZGlhU291cmNl
OjpyZWFkb25seSgpIGNvbnN0CkBAIC0xMzAsNyArMTM3LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjpzdG9wKE9ic2VydmVyKgogCiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIAotICAgIGZv
ciAoYXV0byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgIGZvciAoY29uc3QgYXV0byYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykgewogICAgICAgICBpZiAob2JzZXJ2ZXIgIT0gY2FsbGlu
Z09ic2VydmVyKQogICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVN0b3BwZWQoKTsKICAgICB9
CkBAIC0xNDMsNyArMTUwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0U3Rv
cChPYgogICAgIGlmIChzdG9wcGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0
byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykgewogICAgICAgICBpZiAob2JzZXJ2ZXItPnByZXZlbnRTb3VyY2VG
cm9tU3RvcHBpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDgg
KzQ3LDEzIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNz
IEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIE1lZGlhU3RyZWFtUHJp
dmF0ZTsKQEAgLTY4LDggKzczLDExIEBAIHB1YmxpYzoKICAgICAgICAgLy8gT2JzZXJ2ZXIgc3Rh
dGUgcXVlcmllcy4KICAgICAgICAgdmlydHVhbCBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBp
bmcoKSA9IDA7CiAgICAgICAgIAotICAgICAgICAvLyBNZWRpYSBkYXRhIGNoYW5nZXMuCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VIYXNNb3JlTWVkaWFEYXRhKE1lZGlhU2FtcGxlJikgPSAw
OworICAgICAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKSB7IH0KKworICAgICAgICAv
LyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgICAgIHZpcnR1YWwg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgdm9pZCogLyphdWRp
b0RhdGEqLywgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCAvKm51bWJlck9m
RnJhbWVzKi8pIHsgfQogICAgIH07CiAKICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNl
KCkgeyB9CkBAIC05OSw3ICsxMDcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQ29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN0cmluZyYpOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBtZWRpYURhdGFVcGRh
dGVkKE1lZGlhU2FtcGxlJik7CisKKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJik7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1l
Jiwgdm9pZCosIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwogICAgIAog
ICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHBlZDsgfQogCkBAIC0xMTIs
OCArMTIyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZW1vdGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlbW90ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW1vdGUoYm9vbCByZW1vdGUp
IHsgbV9yZW1vdGUgPSByZW1vdGU7IH0KIAotICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIq
KTsKLSAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7CisgICAgdm9pZCBhZGRPYnNl
cnZlcihPYnNlcnZlciYpOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oCShyZXZpc2lvbiAyMTE2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCAr
MzAsMTAgQEAKIAogI2luY2x1ZGUgIkFWTWVkaWFDYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAi
QXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KIAordHlwZWRlZiBzdHJ1Y3Qg
QXVkaW9CdWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsKIHR5cGVkZWYgc3RydWN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb247CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0
aW9uUmVmOwogCkBAIC02NCw5ICs2NiwxMSBAQCBwcml2YXRlOgogICAgIEF1ZGlvU291cmNlUHJv
dmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBvdmVycmlkZTsKIAogICAgIFJldGFpblB0cjxB
VkNhcHR1cmVDb25uZWN0aW9uPiBtX2F1ZGlvQ29ubmVjdGlvbjsKKyAgICBzaXplX3QgbV9saXN0
QnVmZmVyU2l6ZSB7IDAgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PiBt
X2xpc3Q7CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IG1fYXVk
aW9Tb3VyY2VQcm92aWRlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOwogICAgIFZlY3RvcjxBdWRp
b1NvdXJjZU9ic2VydmVyT2JqQyo+IG1fb2JzZXJ2ZXJzOwogICAgIExvY2sgbV9sb2NrOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIxMTYzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAorI2ltcG9ydCAiQXVkaW9TYW1wbGVC
dWZmZXJMaXN0LmgiCiAjaW1wb3J0ICJBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oIgorI2ltcG9y
dCAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIK
QEAgLTkxLDcgKzkzLDYgQEAgUmVmUHRyPEFWTWVkaWFDYXB0dXJlU291cmNlPiBBVkF1ZGlvQ2Fw
dAogQVZBdWRpb0NhcHR1cmVTb3VyY2U6OkFWQXVkaW9DYXB0dXJlU291cmNlKEFWQ2FwdHVyZURl
dmljZVR5cGVkZWYqIGRldmljZSwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCkKICAgICA6IEFWTWVk
aWFDYXB0dXJlU291cmNlKGRldmljZSwgaWQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQog
ewotICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uPigpOwogfQogICAgIAogQVZBdWRpb0NhcHR1cmVTb3VyY2U6On5BVkF1
ZGlvQ2FwdHVyZVNvdXJjZSgpCkBAIC0xMjAsOCArMTIxLDggQEAgdm9pZCBBVkF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6YWRkT2JzZXJ2ZXIoQQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2spOwog
ICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOwotICAgIGlmIChtX2lucHV0RGVzY3Jp
cHRpb24tPm1TYW1wbGVSYXRlKQotICAgICAgICBvYnNlcnZlci5wcmVwYXJlKG1faW5wdXREZXNj
cmlwdGlvbi5nZXQoKSk7CisgICAgaWYgKG1faW5wdXREZXNjcmlwdGlvbikKKyAgICAgICAgb2Jz
ZXJ2ZXIucHJlcGFyZSgmbV9pbnB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpKTsK
IH0KIAogdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoQXVkaW9Tb3Vy
Y2VPYnNlcnZlck9iakMmIG9ic2VydmVyKQpAQCAtMTYyLDcgKzE2Myw3IEBAIHZvaWQgQVZBdWRp
b0NhcHR1cmVTb3VyY2U6OnNodXRkb3duQ2FwdHUKICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1f
bG9jayk7CiAKICAgICAgICAgbV9hdWRpb0Nvbm5lY3Rpb24gPSBudWxscHRyOwotICAgICAgICBt
X2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbj4oKTsKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsKIAogICAg
ICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAgICAgICBvYnNl
cnZlci0+dW5wcmVwYXJlKCk7CkBAIC0xNzQsMjMgKzE3NSw2IEBAIHZvaWQgQVZBdWRpb0NhcHR1
cmVTb3VyY2U6OnNodXRkb3duQ2FwdHUKICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBudWxs
cHRyOwogfQogCi1zdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiYgYSwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBiKQotewot
ICAgIHJldHVybiBhLm1TYW1wbGVSYXRlID09IGIubVNhbXBsZVJhdGUKLSAgICAgICAgJiYgYS5t
Rm9ybWF0SUQgPT0gYi5tRm9ybWF0SUQKLSAgICAgICAgJiYgYS5tRm9ybWF0RmxhZ3MgPT0gYi5t
Rm9ybWF0RmxhZ3MKLSAgICAgICAgJiYgYS5tQnl0ZXNQZXJQYWNrZXQgPT0gYi5tQnl0ZXNQZXJQ
YWNrZXQKLSAgICAgICAgJiYgYS5tRnJhbWVzUGVyUGFja2V0ID09IGIubUZyYW1lc1BlclBhY2tl
dAotICAgICAgICAmJiBhLm1CeXRlc1BlckZyYW1lID09IGIubUJ5dGVzUGVyRnJhbWUKLSAgICAg
ICAgJiYgYS5tQ2hhbm5lbHNQZXJGcmFtZSA9PSBiLm1DaGFubmVsc1BlckZyYW1lCi0gICAgICAg
ICYmIGEubUJpdHNQZXJDaGFubmVsID09IGIubUJpdHNQZXJDaGFubmVsOwotfQotCi1zdGF0aWMg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgYSwgY29u
c3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBiKQotewotICAgIHJldHVybiAhKGEgPT0g
Yik7Ci19Ci0KIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRPdXRw
dXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXRUeXBlKiwgQ01TYW1w
bGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopCiB7CiAg
ICAgaWYgKG11dGVkKCkpCkBAIC0yMDAsMjcgKzE4NCwzNyBAQCB2b2lkIEFWQXVkaW9DYXB0dXJl
U291cmNlOjpjYXB0dXJlT3V0cHV0CiAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBidWZmZXIgPSBz
YW1wbGVCdWZmZXI7Ci0gICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXMsIGJ1ZmZlcl0gewot
ICAgICAgICBtZWRpYURhdGFVcGRhdGVkKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKGJ1ZmZl
ci5nZXQoKSkpOwotICAgIH0pOwotCiAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1f
bG9jaywgc3RkOjp0cnlfdG9fbG9jayk7CiAgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CiAg
ICAgICAgIC8vIEZhaWxlZCB0byBhY3F1aXJlIHRoZSBsb2NrLCBqdXN0IHJldHVybiBpbnN0ZWFk
IG9mIGJsb2NraW5nLgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fb2JzZXJ2
ZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBzdHJlYW1EZXNjcmlwdGlvbiA9IENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkdldFN0cmVhbUJhc2ljRGVzY3JpcHRpb24oZm9ybWF0RGVzY3JpcHRpb24pOwotICAgIGlm
ICgqbV9pbnB1dERlc2NyaXB0aW9uICE9ICpzdHJlYW1EZXNjcmlwdGlvbikgewotICAgICAgICBt
X2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbj4oKnN0cmVhbURlc2NyaXB0aW9uKTsKLSAgICAgICAgZm9yIChhdXRvJiBvYnNlcnZl
ciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICAgICAgb2JzZXJ2ZXItPnByZXBhcmUobV9pbnB1dERl
c2NyaXB0aW9uLmdldCgpKTsKKyAgICBpZiAoIW1faW5wdXREZXNjcmlwdGlvbiB8fCAqbV9pbnB1
dERlc2NyaXB0aW9uICE9ICpzdHJlYW1EZXNjcmlwdGlvbikgeworICAgICAgICBtX2lucHV0RGVz
Y3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oKnN0
cmVhbURlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9saXN0QnVmZmVyU2l6ZSA9IEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdDo6YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVhbSgqbV9pbnB1dERlc2NyaXB0
aW9uLmdldCgpKTsKKyAgICAgICAgbV9saXN0ID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVmZmVy
TGlzdD4oc3RhdGljX2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4oOjpvcGVyYXRvciBuZXcgKG1fbGlz
dEJ1ZmZlclNpemUpKSk7CisgICAgICAgIG1lbXNldChtX2xpc3QuZ2V0KCksIDAsIG1fbGlzdEJ1
ZmZlclNpemUpOworICAgICAgICBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzID0gbV9pbnB1dERlc2Ny
aXB0aW9uLT5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCk7CisKKyAgICAgICAgaWYgKCFtX29ic2Vy
dmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29i
c2VydmVycykKKyAgICAgICAgICAgICAgICBvYnNlcnZlci0+cHJlcGFyZShzdHJlYW1EZXNjcmlw
dGlvbik7CisgICAgICAgIH0KICAgICB9CiAKKyAgICBDTUl0ZW1Db3VudCBmcmFtZUNvdW50ID0g
Q01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVzKHNhbXBsZUJ1ZmZlcik7CisgICAgQ01CbG9ja0J1
ZmZlclJlZiBidWZmZXIgPSBuaWw7CisgICAgT1NTdGF0dXMgZXJyID0gQ01TYW1wbGVCdWZmZXJH
ZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRCbG9ja0J1ZmZlcihzYW1wbGVCdWZmZXIsIG51
bGxwdHIsIG1fbGlzdC5nZXQoKSwgbV9saXN0QnVmZmVyU2l6ZSwga0NGQWxsb2NhdG9yU3lzdGVt
RGVmYXVsdCwga0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwga0NNU2FtcGxlQnVmZmVyRmxhZ19B
dWRpb0J1ZmZlckxpc3RfQXNzdXJlMTZCeXRlQWxpZ25tZW50LCAmYnVmZmVyKTsKKyAgICBpZiAo
IWVycikKKyAgICAgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRvTWVkaWFUaW1lKENNU2FtcGxl
QnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKHNhbXBsZUJ1ZmZlcikpLCBtX2xpc3QtPm1C
dWZmZXJzWzBdLm1EYXRhLCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnN0cmVhbURlc2NyaXB0
aW9uKSwgZnJhbWVDb3VudCk7CisgICAgZWxzZQorICAgICAgICBMT0dfRVJST1IoIkFWQXVkaW9D
YXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5l
Y3Rpb24oJXApIC0gQ01TYW1wbGVCdWZmZXJHZXRBdWRpb0J1ZmZlckxpc3RXaXRoUmV0YWluZWRC
bG9ja0J1ZmZlciByZXR1cm5lZCBlcnJvciAlZCAoJS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNo
YXIqKSZlcnIpOworCisgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBv
YnNlcnZlci0+cHJvY2Vzcyhmb3JtYXREZXNjcmlwdGlvbiwgc2FtcGxlQnVmZmVyKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIxMTYzOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OnByb2Nlc3NOZXdGcmEKICAgICBpZiAoc2V0dGluZ3NDaGFuZ2VkKQogICAgICAg
ICBzZXR0aW5nc0RpZENoYW5nZSgpOwogCi0gICAgbWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBs
ZUFWRk9iakM6OmNyZWF0ZShtX2J1ZmZlci5nZXQoKSkpOworICAgIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKG1fYnVmZmVyLmdldCgpKSk7CiB9CiAKIHZv
aWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZm
ZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXRUeXBlKiwgQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyLCBBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKKworI2luY2x1ZGUgIkF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdC5oIgorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUg
IkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworI2luY2x1ZGUgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3Qg
aW50IHJlbmRlckJ1ZmZlclNpemUgPSAxMjg7CisKK0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJiB0cmFjaykKKyAgICA6IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0odHJh
Y2spCit7CisgICAgdHJhY2suc291cmNlKCkuYWRkT2JzZXJ2ZXIoKnRoaXMpOworfQorCitBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6On5BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EoKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1faW50ZXJuYWxT
dGF0ZUxvY2spOworCisgICAgc3RyZWFtVHJhY2soKS5zb3VyY2UoKS5yZW1vdmVPYnNlcnZlcigq
dGhpcyk7CisKKyAgICBpZiAobV9kYXRhU291cmNlKQorICAgICAgICBtX2RhdGFTb3VyY2UtPnNl
dFBhdXNlZCh0cnVlKTsKKworICAgIGlmIChtX3JlbW90ZUlPVW5pdCkgeworICAgICAgICBBdWRp
b091dHB1dFVuaXRTdG9wKG1fcmVtb3RlSU9Vbml0KTsKKyAgICAgICAgQXVkaW9Db21wb25lbnRJ
bnN0YW5jZURpc3Bvc2UobV9yZW1vdGVJT1VuaXQpOworICAgICAgICBtX3JlbW90ZUlPVW5pdCA9
IG51bGxwdHI7CisgICAgfQorCisgICAgbV9kYXRhU291cmNlID0gbnVsbHB0cjsKKyAgICBtX2lu
cHV0RGVzY3JpcHRpb24gPSBudWxscHRyOworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBudWxs
cHRyOworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6cGxheUlu
dGVybmFsKCkKK3sKKyAgICBBU1NFUlQobV9pbnRlcm5hbFN0YXRlTG9jay5pc0hlbGQoKSk7CisK
KyAgICBpZiAobV9pc1BsYXlpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3JlbW90
ZUlPVW5pdCkgeworICAgICAgICBBU1NFUlQobV9kYXRhU291cmNlKTsKKyAgICAgICAgbV9kYXRh
U291cmNlLT5zZXRQYXVzZWQoZmFsc2UpOworICAgICAgICBpZiAoIUF1ZGlvT3V0cHV0VW5pdFN0
YXJ0KG1fcmVtb3RlSU9Vbml0KSkKKyAgICAgICAgICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICBtX2F1dG9QbGF5ID0gIW1faXNQbGF5aW5nOworfQorCit2b2lkIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6cGxheSgpCit7CisgICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2sobV9pbnRlcm5hbFN0YXRlTG9jayk7CisgICAgcGxheUludGVybmFsKCk7Cit9
CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpwYXVzZSgpCit7Cisg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9pbnRlcm5hbFN0YXRlTG9jayk7CisKKyAg
ICBtX2lzUGxheWluZyA9IGZhbHNlOworICAgIG1fYXV0b1BsYXkgPSBmYWxzZTsKKworICAgIGlm
IChtX3JlbW90ZUlPVW5pdCkKKyAgICAgICAgQXVkaW9PdXRwdXRVbml0U3RvcChtX3JlbW90ZUlP
VW5pdCk7CisgICAgaWYgKG1fZGF0YVNvdXJjZSkKKyAgICAgICAgbV9kYXRhU291cmNlLT5zZXRQ
YXVzZWQodHJ1ZSk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
OjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQoreworICAgIG1fdm9sdW1lID0gdm9sdW1lOworICAg
IGlmIChtX2RhdGFTb3VyY2UpCisgICAgICAgIG1fZGF0YVNvdXJjZS0+c2V0Vm9sdW1lKG1fdm9s
dW1lKTsKK30KKworT1NTdGF0dXMgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpz
ZXR1cEF1ZGlvVW5pdCgpCit7CisgICAgQVNTRVJUKG1faW50ZXJuYWxTdGF0ZUxvY2suaXNIZWxk
KCkpOworCisgICAgQXVkaW9Db21wb25lbnREZXNjcmlwdGlvbiBpb1VuaXREZXNjcmlwdGlvbiB7
IGtBdWRpb1VuaXRUeXBlX091dHB1dCwgMCwga0F1ZGlvVW5pdE1hbnVmYWN0dXJlcl9BcHBsZSwg
MCwgMCB9OworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpb1VuaXREZXNjcmlwdGlvbi5jb21wb25l
bnRTdWJUeXBlID0ga0F1ZGlvVW5pdFN1YlR5cGVfUmVtb3RlSU87CisjZWxzZQorICAgIGlvVW5p
dERlc2NyaXB0aW9uLmNvbXBvbmVudFN1YlR5cGUgPSBrQXVkaW9Vbml0U3ViVHlwZV9EZWZhdWx0
T3V0cHV0OworI2VuZGlmCisKKyAgICBBdWRpb0NvbXBvbmVudCBpb0NvbXBvbmVudCA9IEF1ZGlv
Q29tcG9uZW50RmluZE5leHQobnVsbHB0ciwgJmlvVW5pdERlc2NyaXB0aW9uKTsKKyAgICBBU1NF
UlQoaW9Db21wb25lbnQpOworICAgIGlmICghaW9Db21wb25lbnQpIHsKKyAgICAgICAgTE9HKE1l
ZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjpzZXR1cEF1ZGlvVW5pdCgl
cCkgdW5hYmxlIHRvIGZpbmQgcmVtb3RlIElPIHVuaXQgY29tcG9uZW50IiwgdGhpcyk7CisgICAg
ICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0NvbXBvbmVu
dEluc3RhbmNlTmV3KGlvQ29tcG9uZW50LCAmbV9yZW1vdGVJT1VuaXQpOworICAgIGlmIChlcnIp
IHsKKyAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
OjpzZXR1cEF1ZGlvVW5pdCglcCkgdW5hYmxlIHRvIG9wZW4gdnBpbyB1bml0LCBlcnJvciAlZCAo
JS40cykiLCB0aGlzLCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICByZXR1cm4gLTE7
CisgICAgfQorCisjaWYgUExBVEZPUk0oSU9TKQorICAgIFVJbnQzMiBwYXJhbSA9IDE7CisgICAg
ZXJyID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9yZW1vdGVJT1VuaXQsIGtBdWRpb091dHB1dFVu
aXRQcm9wZXJ0eV9FbmFibGVJTywga0F1ZGlvVW5pdFNjb3BlX091dHB1dCwgMCwgJnBhcmFtLCBz
aXplb2YocGFyYW0pKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c2V0dXBBdWRpb1VuaXQoJXApIHVuYWJsZSB0
byBlbmFibGUgdnBpbyB1bml0IG91dHB1dCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisjZW5kaWYKKwor
ICAgIEFVUmVuZGVyQ2FsbGJhY2tTdHJ1Y3QgY2FsbGJhY2sgPSB7IGlucHV0UHJvYywgdGhpcyB9
OworICAgIGVyciA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fcmVtb3RlSU9Vbml0LCBrQXVkaW9V
bml0UHJvcGVydHlfU2V0UmVuZGVyQ2FsbGJhY2ssIGtBdWRpb1VuaXRTY29wZV9HbG9iYWwsIDAs
ICZjYWxsYmFjaywgc2l6ZW9mKGNhbGxiYWNrKSk7CisgICAgaWYgKGVycikgeworICAgICAgICBM
T0coTWVkaWEsICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldHVwQXVkaW9V
bml0KCVwKSB1bmFibGUgdG8gc2V0IHZwaW8gdW5pdCBzcGVha2VyIHByb2MsIGVycm9yICVkICgl
LjRzKSIsIHRoaXMsIChpbnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybiBlcnI7
CisgICAgfQorCisgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG91dHB1dERlc2NyaXB0
aW9uID0geyB9OworICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG91dHB1dERlc2NyaXB0aW9uKTsK
KyAgICBlcnIgID0gQXVkaW9Vbml0R2V0UHJvcGVydHkobV9yZW1vdGVJT1VuaXQsIGtBdWRpb1Vu
aXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJm91dHB1
dERlc2NyaXB0aW9uLCAmc2l6ZSk7CisgICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEs
ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldHVwQXVkaW9Vbml0cyglcCkg
dW5hYmxlIHRvIGdldCBpbnB1dCBzdHJlYW0gZm9ybWF0LCBlcnJvciAlZCAoJS40cykiLCB0aGlz
LCAoaW50KWVyciwgKGNoYXIqKSZlcnIpOworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKwor
ICAgIG91dHB1dERlc2NyaXB0aW9uID0gbV9pbnB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlw
dGlvbigpOworICAgIG91dHB1dERlc2NyaXB0aW9uLm1TYW1wbGVSYXRlID0gQXVkaW9TZXNzaW9u
OjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgpOworCisgICAgZXJyID0gQXVkaW9Vbml0U2V0
UHJvcGVydHkobV9yZW1vdGVJT1VuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQs
IGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgJm91dHB1dERlc2NyaXB0aW9uLCBzaXplb2Yob3V0
cHV0RGVzY3JpcHRpb24pKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6c2V0dXBBdWRpb1VuaXRzKCVwKSB1bmFi
bGUgdG8gc2V0IGlucHV0IHN0cmVhbSBmb3JtYXQsIGVycm9yICVkICglLjRzKSIsIHRoaXMsIChp
bnQpZXJyLCAoY2hhciopJmVycik7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorICAgIG1f
b3V0cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4ob3V0cHV0RGVzY3JpcHRpb24pOworCisgICAgZXJyID0gQXVkaW9Vbml0SW5pdGlhbGl6
ZShtX3JlbW90ZUlPVW5pdCk7CisgICAgaWYgKGVycikgeworICAgICAgICBMT0coTWVkaWEsICJB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnNldHVwQXVkaW9Vbml0cyglcCkgQXVk
aW9Vbml0SW5pdGlhbGl6ZSgpIGZhaWxlZCwgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCll
cnIsIChjaGFyKikmZXJyKTsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisKKyAgICBBdWRp
b1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKHJlbmRlckJ1
ZmZlclNpemUpOworCisgICAgcmV0dXJuIGVycjsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUm
IHNhbXBsZVRpbWUsIHZvaWQqIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBBU1NFUlQoZGVzY3Jp
cHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6
Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSk7CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayhtX2ludGVybmFsU3RhdGVMb2NrKTsKKworICAgIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBz
dHJlYW1EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKGRlc2NyaXB0aW9u
KTsKKyAgICBpZiAoIW1faW5wdXREZXNjcmlwdGlvbiB8fCAqbV9pbnB1dERlc2NyaXB0aW9uICE9
IGRlc2NyaXB0aW9uKSB7CisKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbnVsbHB0cjsK
KyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKG1f
cmVtb3RlSU9Vbml0KSB7CisgICAgICAgICAgICBBdWRpb091dHB1dFVuaXRTdG9wKG1fcmVtb3Rl
SU9Vbml0KTsKKyAgICAgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fcmVt
b3RlSU9Vbml0KTsKKyAgICAgICAgICAgIG1fcmVtb3RlSU9Vbml0ID0gbnVsbHB0cjsKKyAgICAg
ICAgfQorCisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uPihzdHJlYW1EZXNjcmlwdGlvbik7CisgICAgICAgIGlmIChz
ZXR1cEF1ZGlvVW5pdCgpKSB7CisgICAgICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBudWxs
cHRyOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2Rh
dGFTb3VyY2UpCisgICAgICAgICAgICBtX2RhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3Vy
Y2U6OmNyZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAyKTsKKyAgICAgICAgaWYgKCFt
X2RhdGFTb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fZGF0YVNv
dXJjZS0+c2V0SW5wdXRGb3JtYXQoc3RyZWFtRGVzY3JpcHRpb24pKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAobV9kYXRhU291cmNlLT5zZXRPdXRwdXRGb3JtYXQoKm1fb3V0cHV0
RGVzY3JpcHRpb24uZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGF0
YVNvdXJjZS0+c2V0Vm9sdW1lKG1fdm9sdW1lKTsKKyAgICB9CisKKyAgICBtX2RhdGFTb3VyY2Ut
PnB1c2hTYW1wbGVzKG1faW5wdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24oKSwgc2Ft
cGxlVGltZSwgYXVkaW9EYXRhLCBzYW1wbGVDb3VudCk7CisKKyAgICBpZiAobV9hdXRvUGxheSkK
KyAgICAgICAgcGxheUludGVybmFsKCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hOjpzb3VyY2VTdG9wcGVkKCkKK3sKKyAgICBwYXVzZSgpOworfQorCitPU1N0
YXR1cyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OnJlbmRlcihVSW50MzIgc2Ft
cGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYgaW9EYXRhLCBVSW50MzIgLyppbkJ1c051bWJlciov
LCBjb25zdCBBdWRpb1RpbWVTdGFtcCYgdGltZVN0YW1wLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25G
bGFncyYgYWN0aW9uRmxhZ3MpCit7CisgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1f
aW50ZXJuYWxTdGF0ZUxvY2ssIHN0ZDo6dHJ5X3RvX2xvY2spOworICAgIGlmICghbG9jay5vd25z
X2xvY2soKSkKKyAgICAgICAgcmV0dXJuIGtBdWRpb0NvbnZlcnRlckVycl9VbnNwZWNpZmllZEVy
cm9yOworCisgICAgaWYgKCFtX2lzUGxheWluZyB8fCBtX211dGVkIHx8ICFtX2RhdGFTb3VyY2Ug
fHwgc3RyZWFtVHJhY2soKS5tdXRlZCgpIHx8IHN0cmVhbVRyYWNrKCkuZW5kZWQoKSB8fCAhc3Ry
ZWFtVHJhY2soKS5lbmFibGVkKCkpIHsKKyAgICAgICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6
ZXJvQUJMKGlvRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVDb3VudCkpOworICAgICAg
ICBhY3Rpb25GbGFncyA9IGtBdWRpb1VuaXRSZW5kZXJBY3Rpb25fT3V0cHV0SXNTaWxlbmNlOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtX2RhdGFTb3VyY2UtPnB1bGxTYW1wbGVz
KGlvRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVDb3VudCksIHRpbWVTdGFtcC5tU2Ft
cGxlVGltZSwgdGltZVN0YW1wLm1Ib3N0VGltZSwgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpDb3B5
KTsKKworICAgIHJldHVybiAwOworfQorCitPU1N0YXR1cyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2E6OmlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0
aW9uRmxhZ3MqIGFjdGlvbkZsYWdzLCBjb25zdCBBdWRpb1RpbWVTdGFtcCogdGltZVN0YW1wLCBV
SW50MzIgaW5CdXNOdW1iZXIsIFVJbnQzMiBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0KiBp
b0RhdGEpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW1Db2NvYSo+KHVzZXJEYXRhKS0+cmVuZGVyKHNhbXBsZUNvdW50LCAqaW9EYXRhLCBpbkJ1
c051bWJlciwgKnRpbWVTdGFtcCwgKmFjdGlvbkZsYWdzKTsKK30KKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBdWRpb1NvdXJjZU9ic2VydmVyT2Jq
Qy5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRl
IDxBdWRpb1Rvb2xib3gvQXVkaW9Ub29sYm94Lmg+CisjaW5jbHVkZSA8Q29yZUF1ZGlvL0NvcmVB
dWRpb1R5cGVzLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2U7CitjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZl
ckxpc3Q7CitjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CisKK2NsYXNzIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYSBmaW5hbCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Ep
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Q29jb2E+IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgc3RyZWFtVHJhY2spCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2Eoc3RyZWFtVHJhY2spKTsKKyAgICB9CisKKyAgICB2b2lkIHBsYXkoKTsKKyAgICB2
b2lkIHBhdXNlKCk7CisgICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2lzUGxheWluZzsg
fQorCisgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOworICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisKKyAgICB2b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQpIHsg
bV9tdXRlZCA9IG11dGVkOyB9CisgICAgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0
ZWQ7IH0KKworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eo
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKKyAgICB+QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hKCk7CisKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlcgorICAg
IHZvaWQgc291cmNlU3RvcHBlZCgpIGZpbmFsOworICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2Vk
KCkgIGZpbmFsIHsgfQorICAgIHZvaWQgc291cmNlU2V0dGluZ3NDaGFuZ2VkKCkgZmluYWwgeyB9
CisgICAgYm9vbCBwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCB2
b2lkKiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CisKKyAg
ICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25G
bGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGluQnVzTnVtYmVyLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCopOworICAgIE9TU3RhdHVzIHJlbmRlcihV
SW50MzIgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIFVJbnQzMiBpbkJ1c051bWJlciwg
Y29uc3QgQXVkaW9UaW1lU3RhbXAmLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOworCisg
ICAgT1NTdGF0dXMgc2V0dXBBdWRpb1VuaXQoKTsKKyAgICB2b2lkIGNsZWFudXAoKTsKKyAgICB2
b2lkIHplcm9CdWZmZXJMaXN0KEF1ZGlvQnVmZmVyTGlzdCYsIHNpemVfdCk7CisgICAgdm9pZCBw
bGF5SW50ZXJuYWwoKTsKKworICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgbV9yZW1vdGVJT1Vu
aXQgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4gbV9pbnB1dERlc2NyaXB0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRpb247CisKKyAgICBSZWZQdHI8QXVkaW9T
YW1wbGVEYXRhU291cmNlPiBtX2RhdGFTb3VyY2U7CisKKyAgICBMb2NrIG1faW50ZXJuYWxTdGF0
ZUxvY2s7CisgICAgZmxvYXQgbV92b2x1bWUgeyAxIH07CisgICAgYm9vbCBtX2lzUGxheWluZyB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2F1dG9QbGF5IHsgZmFsc2UgfTsKKyAgICBib29sIG1fbXV0
ZWQgeyBmYWxzZSB9OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlTWFjLmgJKHJldmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50MzJfdCBtX21heGltaXVt
RnJhbWVDb3VudDsKICAgICB1aW50MzJfdCBtX3NhbXBsZVJhdGUgeyA0NDEwMCB9OwotICAgIGRv
dWJsZSBtX2J5dGVzUGVyRnJhbWUgeyBzaXplb2YoRmxvYXQzMikgfTsKKyAgICB1aW50NjRfdCBt
X2J5dGVzRW1pdHRlZCB7IDAgfTsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9u
UmVmPiBtX2Zvcm1hdERlc2NyaXB0aW9uOwogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlv
biBtX3N0cmVhbUZvcm1hdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWMubW0JKHJldmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsOCBAQAogI2ltcG9ydCAiTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMu
aCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW1wb3J0ICJBdWRpb1NhbXBsZUJ1ZmZl
ckxpc3QuaCIKKyNpbXBvcnQgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogI2ltcG9ydCAi
TWVkaWFDb25zdHJhaW50cy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1w
b3J0ICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtNDksNiArNTEsMTEgQEAgU09GVF9MSU5LKEF1ZGlv
VG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyBpbmxpbmUgc2l6ZV90IGFsaWduVG8xNkJ5dGVzKHNpemVfdCBzaXplKQoreworICAgIHJldHVy
biAoc2l6ZSArIDE1KSAmIH4xNTsKK30KKwogUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
PiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAgICAgYXV0byBzb3VyY2UgPSBh
ZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMobmFtZSkpOwpAQCAtOTIsNyAr
OTksMTEgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbQogewogICAg
IEFTU0VSVChtX2Zvcm1hdERlc2NyaXB0aW9uKTsKIAotICAgIENNVGltZSBzdGFydFRpbWUgPSBD
TVRpbWVNYWtlKGVsYXBzZWRUaW1lKCkgKiBtX3NhbXBsZVJhdGUsIG1fc2FtcGxlUmF0ZSk7Cisg
ICAgQ01UaW1lIHN0YXJ0VGltZSA9IENNVGltZU1ha2UobV9ieXRlc0VtaXR0ZWQsIG1fc2FtcGxl
UmF0ZSk7CisgICAgbV9ieXRlc0VtaXR0ZWQgKz0gZnJhbWVDb3VudDsKKworICAgIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZSh0b01lZGlhVGltZShzdGFydFRpbWUpLCBtX2F1ZGlvQnVmZmVyTGlzdC0+
bUJ1ZmZlcnNbMF0ubURhdGEsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihtX3N0cmVhbUZvcm1h
dCksIGZyYW1lQ291bnQpOworCiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOwog
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0
RGVzY3JpcHRpb25zKG51bGxwdHIsIG51bGxwdHIsIHRydWUsIG51bGxwdHIsIG51bGxwdHIsIG1f
Zm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksIGZyYW1lQ291bnQsIHN0YXJ0VGltZSwgbnVsbHB0ciwg
JnNhbXBsZUJ1ZmZlcik7CiAgICAgQVNTRVJUKHNhbXBsZUJ1ZmZlcik7CkBAIC0xMDgsOSArMTE5
LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbQogICAgIHJlc3Vs
dCA9IENNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5KHNhbXBsZUJ1ZmZlcik7CiAgICAgQVNTRVJU
KCFyZXN1bHQpOwogCi0gICAgbWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBsZUFWRk9iakM6OmNy
ZWF0ZShzYW1wbGVCdWZmZXIpKTsKLQotICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2Vy
dmVycykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAg
ICAgIG9ic2VydmVyLT5wcm9jZXNzKG1fZm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksIHNhbXBsZUJ1
ZmZlcik7CiB9CiAKQEAgLTExOSwxMCArMTI4LDI0IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWM6OnJlY29uZmkKICAgICBtX21heGltaXVtRnJhbWVDb3VudCA9IFdURjo6cm91bmRV
cFRvUG93ZXJPZlR3byhyZW5kZXJJbnRlcnZhbCgpIC8gMTAwMC4gKiBtX3NhbXBsZVJhdGUgKiAy
KTsKICAgICBBU1NFUlQobV9tYXhpbWl1bUZyYW1lQ291bnQpOwogCisgICAgY29uc3QgaW50IGJ5
dGVzUGVyRmxvYXQgPSBzaXplb2YoRmxvYXQzMik7CisgICAgY29uc3QgaW50IGJpdHNQZXJCeXRl
ID0gODsKKyAgICBpbnQgY2hhbm5lbENvdW50ID0gMTsKKyAgICBtX3N0cmVhbUZvcm1hdCA9IHsg
fTsKKyAgICBtX3N0cmVhbUZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc2FtcGxlUmF0ZTsKKyAgICBt
X3N0cmVhbUZvcm1hdC5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CisgICAgbV9z
dHJlYW1Gb3JtYXQubUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBh
Y2tlZDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0
ICogY2hhbm5lbENvdW50OworICAgIG1fc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQgPSAx
OworICAgIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lID0gYnl0ZXNQZXJGbG9hdCAqIGNo
YW5uZWxDb3VudDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IGNoYW5u
ZWxDb3VudDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQml0c1BlckNoYW5uZWwgPSBiaXRzUGVyQnl0
ZSAqIGJ5dGVzUGVyRmxvYXQ7CisKICAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJpYWJs
ZS1sZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMgbmV3
KCkgb3BlcmF0b3IKICAgICAvLyB3aXRoIGEgY3VzdG9tIHNpemUsIGFuZCBpbml0aWFsaXplIHRo
ZSBzdHJ1Y3QgbWFudWFsbHkuCi0gICAgdWludDMyX3QgYnVmZmVyRGF0YVNpemUgPSBtX2J5dGVz
UGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVDb3VudDsKLSAgICB1aW50MzJfdCBiYXNlU2l6ZSA9
IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgc2l6ZW9mKEF1ZGlvQnVmZmVy
KTsKKyAgICB1aW50MzJfdCBidWZmZXJEYXRhU2l6ZSA9IG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1Bl
ckZyYW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQ7CisgICAgdWludDMyX3QgYmFzZVNpemUgPSBB
dWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmF1ZGlvQnVmZmVyTGlzdFNpemVGb3JTdHJlYW0obV9zdHJl
YW1Gb3JtYXQpOworCiAgICAgdWludDY0X3QgYnVmZmVyTGlzdFNpemUgPSBiYXNlU2l6ZSArIGJ1
ZmZlckRhdGFTaXplOwogICAgIEFTU0VSVChidWZmZXJMaXN0U2l6ZSA8PSBTSVpFX01BWCk7CiAg
ICAgaWYgKGJ1ZmZlckxpc3RTaXplID4gU0laRV9NQVgpCkBAIC0xMzIsMjMgKzE1NSw4IEBAIHZv
aWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmkKICAgICBtX2F1ZGlvQnVmZmVy
TGlzdCA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1ZGlv
QnVmZmVyTGlzdCo+KDo6b3BlcmF0b3IgbmV3IChtX2F1ZGlvQnVmZmVyTGlzdEJ1ZmZlclNpemUp
KSk7CiAgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXJMaXN0LmdldCgpLCAwLCBtX2F1ZGlvQnVmZmVy
TGlzdEJ1ZmZlclNpemUpOwogCi0gICAgbV9hdWRpb0J1ZmZlckxpc3QtPm1OdW1iZXJCdWZmZXJz
ID0gMTsKLSAgICBhdXRvJiBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF07
Ci0gICAgYnVmZmVyLm1OdW1iZXJDaGFubmVscyA9IDE7Ci0gICAgYnVmZmVyLm1EYXRhQnl0ZVNp
emUgPSBidWZmZXJEYXRhU2l6ZTsKLSAgICBidWZmZXIubURhdGEgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihtX2F1ZGlvQnVmZmVyTGlzdC5nZXQoKSkgKyBiYXNlU2l6ZTsKLQotICAgIGNv
bnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwotICAgIGNvbnN0IGludCBi
aXRzUGVyQnl0ZSA9IDg7Ci0gICAgbV9zdHJlYW1Gb3JtYXQgPSB7IH07Ci0gICAgbV9zdHJlYW1G
b3JtYXQubVNhbXBsZVJhdGUgPSBtX3NhbXBsZVJhdGU7Ci0gICAgbV9zdHJlYW1Gb3JtYXQubUZv
cm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwotICAgIG1fc3RyZWFtRm9ybWF0Lm1Gb3Jt
YXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVkaW9Gb3Jt
YXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKLSAgICBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJQYWNr
ZXQgPSBieXRlc1BlckZsb2F0OwotICAgIG1fc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQYWNrZXQg
PSAxOwotICAgIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lID0gYnl0ZXNQZXJGbG9hdDsK
LSAgICBtX3N0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IDE7Ci0gICAgbV9zdHJlYW1G
b3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0OworICAg
IHVpbnQ4X3QqIGJ1ZmZlckRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2F1ZGlv
QnVmZmVyTGlzdC5nZXQoKSkgKyBiYXNlU2l6ZTsKKyAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6
OmNvbmZpZ3VyZUJ1ZmZlckxpc3RGb3JTdHJlYW0oKm1fYXVkaW9CdWZmZXJMaXN0LmdldCgpLCBt
X3N0cmVhbUZvcm1hdCwgYnVmZmVyRGF0YSwgYnVmZmVyRGF0YVNpemUpOwogCiAgICAgQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKICAgICBDTUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb25DcmVhdGUoTlVMTCwgJm1fc3RyZWFtRm9ybWF0LCAwLCBOVUxMLCAwLCBOVUxMLCBO
VUxMLCAmZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTYyLDExICsxNzAsMTIgQEAgdm9pZCBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVuZGVyKAogewogICAgIHN0YXRpYyBkb3VibGUgdGhl
dGE7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBmcmVxdWVuY2llc1tdID0geyAxNTAwLiwgNTAw
LiB9OworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdGF1ID0gMiAqIE1fUEk7CiAKICAgICBpZiAo
IW1fYXVkaW9CdWZmZXJMaXN0KQogICAgICAgICByZWNvbmZpZ3VyZSgpOwogCi0gICAgdWludDMy
X3QgdG90YWxGcmFtZUNvdW50ID0gZGVsdGEgKiBtX3NhbXBsZVJhdGU7CisgICAgdWludDMyX3Qg
dG90YWxGcmFtZUNvdW50ID0gYWxpZ25UbzE2Qnl0ZXMoZGVsdGEgKiBtX3NhbXBsZVJhdGUpOwog
ICAgIHVpbnQzMl90IGZyYW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1lQ291bnQsIG1fbWF4
aW1pdW1GcmFtZUNvdW50KTsKICAgICBkb3VibGUgZWxhcHNlZCA9IGVsYXBzZWRUaW1lKCk7CiAg
ICAgd2hpbGUgKGZyYW1lQ291bnQpIHsKQEAgLTE4MCw3ICsxODksNyBAQCB2b2lkIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjOjpyZW5kZXIoCiAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAg
ICAgICBjYXNlIDE0OiB7CiAgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gZm1vZChlbGFwc2Vk
LCAxKSAqIDI7Ci0gICAgICAgICAgICAgICAgaW5jcmVtZW50ID0gMi4wICogTV9QSSAqIGZyZXF1
ZW5jaWVzW2luZGV4XSAvIG1fc2FtcGxlUmF0ZTsKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnQg
PSB0YXUgKiBmcmVxdWVuY2llc1tpbmRleF0gLyBtX3NhbXBsZVJhdGU7CiAgICAgICAgICAgICAg
ICAgc2lsZW50ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CkBAIC0xOTMsMTAgKzIwMiwxMiBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpy
ZW5kZXIoCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGJ1ZmZlcltmcmFtZV0gPSBzaW4odGhldGEpICogMC4yNTsKLSAgICAgICAgICAgIHRo
ZXRhICs9IGluY3JlbWVudDsKLSAgICAgICAgICAgIGlmICh0aGV0YSA+IDIuMCAqIE1fUEkpCi0g
ICAgICAgICAgICAgICAgdGhldGEgLT0gMi4wICogTV9QSTsKKyAgICAgICAgICAgIGZsb2F0IHRv
bmUgPSBzaW4odGhldGEpICogMC4yNTsKKyAgICAgICAgICAgIGJ1ZmZlcltmcmFtZV0gPSB0b25l
OworCisgICAgICAgICAgICAgICAgdGhldGEgKz0gaW5jcmVtZW50OworICAgICAgICAgICAgaWYg
KHRoZXRhID4gdGF1KQorICAgICAgICAgICAgICAgIHRoZXRhIC09IHRhdTsKICAgICAgICAgICAg
IGVsYXBzZWQgKz0gMSAvIG1fc2FtcGxlUmF0ZTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCShyZXZpc2lvbiAyMTE2MzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVTCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBp
eGVsQnVmZmVyRnJvbUNHSW1hZ2UoaW1hZ2VCdWZmZXIoKS0+Y29weUltYWdlKCktPm5hdGl2ZUlt
YWdlKCkuZ2V0KCkpOwogICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJGcm9t
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogICAgIAotICAgIG1lZGlhRGF0YVVwZGF0
ZWQoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpKSk7CisgICAg
dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVm
ZmVyLmdldCgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oCShyZXZpc2lvbiAyMTE2MzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDE0IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
X2gKLSNkZWZpbmUgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakNfaAorI3ByYWdtYSBvbmNl
CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5j
bHVkZSAiQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmgiCiAjaW5jbHVkZSAiQXVkaW9T
b3VyY2VPYnNlcnZlck9iakMuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCisj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNjgsMTYgKzY4LDE0IEBAIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlw
dGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FSaW5nQnVmZmVyPiBtX3JpbmdCdWZmZXI7CiAK
LSAgICB1aW50NjRfdCBtX3dyaXRlQWhlYWRDb3VudCB7IDAgfTsKICAgICB1aW50NjRfdCBtX3dy
aXRlQ291bnQgeyAwIH07CiAgICAgdWludDY0X3QgbV9yZWFkQ291bnQgeyAwIH07CiAgICAgQXVk
aW9Tb3VyY2VQcm92aWRlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgQXVkaW9D
YXB0dXJlU291cmNlUHJvdmlkZXJPYmpDKiBtX2NhcHR1cmVTb3VyY2UgeyBudWxscHRyIH07Cisg
ICAgTG9jayBtX211dGV4OwogICAgIGJvb2wgbV9jb25uZWN0ZWQgeyBmYWxzZSB9OwogfTsKICAg
ICAKIH0KIAogI2VuZGlmCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5tbQkocmV2aXNpb24gMjExNjM4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTY1LDYgKzY1LDggQEAgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM6OldlYkF1ZGlvUwogCiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6fldlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKCkKIHsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX211dGV4KTsKKwogICAgIGlmIChtX2NvbnZlcnRlcikgewogICAgICAgICAvLyBGSVhN
RTogbWFrZSBhbmQgdXNlIGEgc21hcnQgcG9pbnRlciBmb3IgQXVkaW9Db252ZXJ0ZXIKICAgICAg
ICAgQXVkaW9Db252ZXJ0ZXJEaXNwb3NlKG1fY29udmVydGVyKTsKQEAgLTc2LDcgKzc4LDggQEAg
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6On5XZWJBdWRpbwogCiB2b2lkIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm92aWRlSW5wdXQoQXVkaW9CdXMqIGJ1cywgc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICBpZiAoIW1fcmluZ0J1ZmZlcikgeworICAgIHN0ZDo6
dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX211dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsKKyAgICBp
ZiAoIWxvY2sub3duc19sb2NrKCkgfHwgIW1fcmluZ0J1ZmZlcikgewogICAgICAgICBidXMtPnpl
cm8oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg1LDEyICs4OCwxMiBAQCB2b2lkIFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm92CiAgICAgdWludDY0X3QgZW5kRnJhbWUg
PSAwOwogICAgIG1fcmluZ0J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lQm91bmRzKHN0YXJ0RnJhbWUs
IGVuZEZyYW1lKTsKIAotICAgIGlmIChtX3dyaXRlQ291bnQgPD0gbV9yZWFkQ291bnQgKyBtX3dy
aXRlQWhlYWRDb3VudCkgeworICAgIGlmIChtX3dyaXRlQ291bnQgPD0gbV9yZWFkQ291bnQpIHsK
ICAgICAgICAgYnVzLT56ZXJvKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50
NjRfdCBmcmFtZXNBdmFpbGFibGUgPSBlbmRGcmFtZSAtIChtX3JlYWRDb3VudCArIG1fd3JpdGVB
aGVhZENvdW50KTsKKyAgICB1aW50NjRfdCBmcmFtZXNBdmFpbGFibGUgPSBlbmRGcmFtZSAtIG1f
cmVhZENvdW50OwogICAgIGlmIChmcmFtZXNBdmFpbGFibGUgPCBmcmFtZXNUb1Byb2Nlc3MpIHsK
ICAgICAgICAgZnJhbWVzVG9Qcm9jZXNzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihmcmFtZXNBdmFp
bGFibGUpOwogICAgICAgICBidXMtPnplcm8oKTsKQEAgLTEzNiw2ICsxMzksOCBAQCB2b2lkIFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpzZXRDCiAKIHZvaWQgV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakM6OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KiBmb3JtYXQpCiB7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisK
ICAgICBMT0coTWVkaWEsICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSgl
cCkiLCB0aGlzKTsKIAogICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqZm9ybWF0KTsKQEAgLTIwMCw2ICsyMDUsOCBA
QCB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwCiAKIHZvaWQgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnVucHJlcGFyZSgpCiB7CisgICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CisKICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBudWxs
cHRyOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBudWxscHRyOwogICAgIG1fcmluZ0J1ZmZl
ciA9IG51bGxwdHI7CkBAIC0yMTQsNiArMjIxLDggQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQzo6dW5wcgogCiB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpw
cm9jZXNzKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1
ZmZlcikKIHsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsKKwogICAg
IGlmICghbV9yaW5nQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgJ
KHJldmlzaW9uIDIxMTYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcihkb3VibGUpIHsgfQogCiAgICAgZG91Ymxl
IGVsYXBzZWRUaW1lKCk7Ci0gICAgc3RhdGljIGludCByZW5kZXJJbnRlcnZhbCgpIHsgcmV0dXJu
IDEyNTsgfQorICAgIHN0YXRpYyBpbnQgcmVuZGVySW50ZXJ2YWwoKSB7IHJldHVybiA2MDsgfQog
CiBwcml2YXRlOgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>