<?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>163277</bug_id>
          
          <creation_ts>2016-10-11 07:14:50 -0700</creation_ts>
          <short_desc>Remove CachedResourceRequest::mutableResourceRequest</short_desc>
          <delta_ts>2016-10-13 03:36:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238832</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-11 07:14:50 -0700</bug_when>
    <thetext>It should be replaced by releaseResourceRequest and new CachedResourceRequest methods to alter the request.
This will allow easier-to-read code within CachedResourceLoader.
This will also make more sense if we plan to add CachedResourceRequest::m_isCrossOrigin as envisioned in bug 163103.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238838</commentid>
    <comment_count>1</comment_count>
      <attachid>291256</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-11 07:32:59 -0700</bug_when>
    <thetext>Created attachment 291256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238839</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-11 07:34:58 -0700</bug_when>
    <thetext>Attachment 291256 did not pass style-queue:


ERROR: Source/WebCore/loader/cache/CachedResourceRequest.cpp:145:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238849</commentid>
    <comment_count>3</comment_count>
      <attachid>291258</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-11 08:13:04 -0700</bug_when>
    <thetext>Created attachment 291258
Fixing gtk/efl builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238851</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-11 08:14:52 -0700</bug_when>
    <thetext>Attachment 291258 did not pass style-queue:


ERROR: Source/WebCore/loader/cache/CachedResourceRequest.cpp:147:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239369</commentid>
    <comment_count>5</comment_count>
      <attachid>291258</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 11:17:38 -0700</bug_when>
    <thetext>Comment on attachment 291258
Fixing gtk/efl builds

Rejecting attachment 291258 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 291258, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
oader/cache/CachedResourceRequest.cpp
patching file Source/WebCore/loader/cache/CachedResourceRequest.h
patching file Source/WebCore/loader/icon/IconLoader.cpp
patching file Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp
patching file Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Sam Weinig&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/2271681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239732</commentid>
    <comment_count>6</comment_count>
      <attachid>291470</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-13 03:02:49 -0700</bug_when>
    <thetext>Created attachment 291470
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239733</commentid>
    <comment_count>7</comment_count>
      <attachid>291470</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-13 03:36:52 -0700</bug_when>
    <thetext>Comment on attachment 291470
Patch for landing

Clearing flags on attachment: 291470

Committed r207281: &lt;http://trac.webkit.org/changeset/207281&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239734</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-13 03:36:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291256</attachid>
            <date>2016-10-11 07:32:59 -0700</date>
            <delta_ts>2016-10-11 08:12:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163277-20161011162935.patch</filename>
            <type>text/plain</type>
            <size>40160</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM5YTZiODM5ZTY2ZTNk
MTgwZTlmNDZlZDQ4NmEyNzAwMjIwZGQ1Ny4uYmZiZGNhNzk4MGQwZGRiMjliZmJjODRkNWUyMGQz
NjcyMGU4NjhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE2LTEwLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjptdXRhYmxlUmVzb3VyY2VSZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAg
ICAgICAgUmVtb3ZpbmcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjptdXRhYmxlUmVzb3VyY2VSZXF1
ZXN0IHJlcXVpcmVzIGNhbGwgc2l0ZXMgdG8gZWl0aGVyIHVwZGF0ZSB0aGUgUmVzb3VyY2VSZXF1
ZXN0CisgICAgICAgIGJlZm9yZSBjcmVhdGluZyB0aGUgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IG9y
IHRvIGFkZCBtZXRob2RzIGF0IENhY2hlZFJlc291cmNlUmVxdWVzdC4KKworICAgICAgICBBZGRp
bmcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpyZWxlYXNlUmVzb3VyY2VSZXF1ZXN0IGZvciBDYWNo
ZWRSZXNvdXJjZSBjb25zdHJ1Y3Rvci4KKworICAgICAgICBNb3N0IG5ldyBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgbWV0aG9kcyBhcmUgdXNlZCBieSBDYWNoZWRSZXNvdXJjZUxvYWRlciB3aGljaCBp
cyBwYXNzZWQgYSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuCisgICAgICAgIFRoaXMgYWxsb3dzIGNv
ZGUgaW4gQ2FjaGVkUmVzb3VyY2VMb2FkZXIgdG8gYmUgZWFzaWVyIHRvIHJlYWQuCisKKyAgICAg
ICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFn
ZVNldFZhbHVlOjpsb2FkQmVzdEZpdEltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQWNjZXNzQ29u
dHJvbFByZWZsaWdodFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6c3Rh
cnRQcmVmbGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyOjpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZXBhcmVGZXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlSFRUUFJlcXVlc3RIZWFkZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6YWNjZXB0SGVhZGVyVmFsdWVGcm9tVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVSZXF1ZXN0QWNjb3JkaW5nQ2FjaGVNb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6c2V0QXNQb3RlbnRpYWxseUNyb3Nz
T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6dXBkYXRl
Rm9yQWNjZXNzQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVl
c3Q6OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFjY2VwdEhlYWRlclZhbHVlRnJvbVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRBY2NlcHRIZWFkZXJJZk5vbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVBY2NvcmRpbmdDYWNoZU1v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpyZW1vdmVGcmFn
bWVudElkZW50aWZpZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZVJlcXVlc3Q6OmFwcGx5QmxvY2tlZFN0YXR1cyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0OjpyZWxlYXNlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlUmVxdWVzdDo6c2V0Q2FjaGluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6Om11dGFibGVSZXNvdXJjZVJlcXVlc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRDYWNoZU1vZGVUb05v
U3RvcmUpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpzdGFy
dExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKwogMjAxNi0xMC0xMSAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJv
bHNdIEJ1dHRvbnMgY29udGFpbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHAKaW5kZXggZGQxNGU3MWQ0MTJkNjZhOWFiZTAyZjBhMWMwZjhjNjI5YzUzY2I2NC4uNWE5YzIy
MjNkNGYxYzQyZmZjYWFjZGNlMmUzMWRkNzQ2M2I4MWVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVNldFZhbHVlLmNwcApAQCAtOTAsNiArOTAsOCBAQCBDU1NJbWFnZVNldFZhbHVlOjpJ
bWFnZVdpdGhTY2FsZSBDU1NJbWFnZVNldFZhbHVlOjpiZXN0SW1hZ2VGb3JTY2FsZUZhY3Rvcigp
CiBzdGQ6OnBhaXI8Q2FjaGVkSW1hZ2UqLCBmbG9hdD4gQ1NTSW1hZ2VTZXRWYWx1ZTo6bG9hZEJl
c3RGaXRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbG9hZGVy
LmRvY3VtZW50KCk7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKKwogICAgIHVwZGF0ZURldmljZVNj
YWxlRmFjdG9yKCpkb2N1bWVudCk7CiAKICAgICBpZiAoIW1fYWNjZXNzZWRCZXN0Rml0SW1hZ2Up
IHsKQEAgLTEwMSwxMCArMTAzLDkgQEAgc3RkOjpwYWlyPENhY2hlZEltYWdlKiwgZmxvYXQ+IENT
U0ltYWdlU2V0VmFsdWU6OmxvYWRCZXN0Rml0SW1hZ2UoQ2FjaGVkUmVzb3VyY2UKICAgICAgICAg
SW1hZ2VXaXRoU2NhbGUgaW1hZ2UgPSBiZXN0SW1hZ2VGb3JTY2FsZUZhY3RvcigpOwogICAgICAg
ICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQt
PmNvbXBsZXRlVVJMKGltYWdlLmltYWdlVVJMKSksIG9wdGlvbnMpOwogICAgICAgICByZXF1ZXN0
LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAg
ICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgICAgICAg
ICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJl
cXVlc3QoKSwgKmRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLmFsbG93Q3JlZGVu
dGlhbHMpOwotICAgICAgICB9CisgICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRp
b25zOjpNb2RlOjpDb3JzKQorICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVGb3JBY2Nlc3NDb250
cm9sKCpkb2N1bWVudCk7CisKICAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0
SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIG1fYmVzdEZpdEltYWdlU2NhbGVGYWN0
b3IgPSBpbWFnZS5zY2FsZUZhY3RvcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5jcHAKaW5kZXggOWRkOGVmMjJkZTA1N2Q3YWJhZDBkNzk1Yjk0NzI5Njc2NzYxYjNmYS4uMmYy
YThkYzNlMjNhZjMxODYwYmNhZWEwYmI4MjlmZTllYTIyMzVlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmNwcApAQCAtNzIsOCArNzIsOCBAQCBDYWNoZWRJbWFnZSogQ1NTSW1hZ2VW
YWx1ZTo6bG9hZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291
cgogICAgICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IobV9pbml0aWF0b3JOYW1lKTsKIAog
ICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycykgewot
ICAgICAgICAgICAgQVNTRVJUKGxvYWRlci5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsK
LSAgICAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKHJlcXVlc3QubXV0YWJs
ZVJlc291cmNlUmVxdWVzdCgpLCAqbG9hZGVyLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyk7CisgICAgICAgICAgICBBU1NFUlQobG9hZGVyLmRv
Y3VtZW50KCkpOworICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVGb3JBY2Nlc3NDb250cm9sKCps
b2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxv
YWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDJiNjk1ODExMzdiZTI1MmZjNThkZjhhMWY4M2JiNDQw
MzBjYTAzNjMuLjIyY2Y4NTI0Njc3ZDhkNWQ4MTMwOTRkNTI5YTNhZDZjNzlmMjM4YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTI5Myw4ICsyOTMsNyBAQCBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRX
aXRoQ2FjaGUoY29uc3QgVQogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KHNvdXJjZVVSTCksIG9wdGlvbnMpOwogICAgIHJlcXVlc3Quc2V0QXNQb3Rl
bnRpYWxseUNyb3NzT3JpZ2luKG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKSwgZG9jdW1lbnQpOwotCi0gICAgZG9jdW1l
bnQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRl
ZChyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKyAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3Vy
ZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7CiAKICAgICByZXF1ZXN0LnNldENoYXJzZXQoc2Ny
aXB0Q2hhcnNldCgpKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcigmZWxlbWVudCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAK
aW5kZXggYjQ1ZTVlYmI0MTM2NWQwNGFhNWNlYWRmNTYxNGVjYjAzZjEzYmRkZS4uNGZlZGM0YTU3
MmJiOTZkMTIyODRmMzkxMmI4ZjI2MTIyZjFhMzRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAgLTEwMywxMyArMTAzLDE1
IEBAIHZvaWQgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBTZWN1cml0eU9yaWdpbiYgc2VjCiAgICAgcmVxdWVzdC5zZXRIVFRQT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpOwogfQogCi1SZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNj
ZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCitSZXNvdXJjZVJlcXVlc3QgY3JlYXRl
QWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QocmVxdWVzdC51cmwo
KSk7CiAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocHJlZmxpZ2h0UmVxdWVzdCwg
c2VjdXJpdHlPcmlnaW4sIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CiAgICAgcHJlZmxp
Z2h0UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJPUFRJT05TIik7CiAgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xSZXF1ZXN0
TWV0aG9kLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CiAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRQ
cmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkpOworICAgIGlmICghcmVmZXJyZXIuaXNOdWxsKCkp
CisgICAgICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKIAog
ICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJGaWVsZHMgPSByZXF1ZXN0Lmh0
dHBIZWFkZXJGaWVsZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oCmluZGV4IGI3MjM5ZGNmMmJkM2M5MzQ0ZjhiYjlhOWVkZDQ4Mjlh
NjRkNmVhNWEuLjI4ODgyMDFmM2I1MTI3YzNkNjRhOGI5M2IwNDVkNDY2MDUxY2RmMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RIZWFkZXJX
aGl0ZWxpc3QoSFRUUEhlYWRlck5hbWUsIGNvbnN0IFN0cmluZyYKIGJvb2wgaXNPbkFjY2Vzc0Nv
bnRyb2xSZXNwb25zZUhlYWRlcldoaXRlbGlzdChjb25zdCBTdHJpbmcmKTsKIAogdm9pZCB1cGRh
dGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdp
biYsIFN0b3JlZENyZWRlbnRpYWxzKTsKLVJlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250
cm9sUHJlZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdp
biYpOworUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5nJik7
CiAKIGJvb2wgaXNWYWxpZENyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwoY29uc3QgVVJMJik7CiB2
b2lkIGNsZWFuUmVkaXJlY3RlZFJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKFJlc291cmNlUmVxdWVz
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcAppbmRleCA2YjY1MDQyZTJlYTcyMTE2MWNkZWFkMDExZDk5MGY1NzQxMzlh
ZmM0Li4wYzhhOThhNDM2ZDI1NjdiZWUyZWVhN2FmMjg3M2EwZGFiN2Y0YWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cApAQCAtMTA5LDEzICsxMDksMTAgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6
OnN0YXJ0UHJlZmxpZ2h0KCkKICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpS
ZWRpcmVjdDo6TWFudWFsOwogICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3Np
dGlvbiA9IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjazsK
IAotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0KGNyZWF0ZUFjY2Vz
c0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KG1fcmVxdWVzdCwgbV9sb2FkZXIuc2VjdXJpdHlPcmln
aW4oKSksIG9wdGlvbnMpOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1
ZXN0KGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KG1fcmVxdWVzdCwgbV9sb2Fk
ZXIuc2VjdXJpdHlPcmlnaW4oKSwgbV9sb2FkZXIucmVmZXJyZXIoKSksIG9wdGlvbnMpOwogICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGlt
aW5nRW5hYmxlZCgpKQogICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEluaXRpYXRvcihtX2xv
YWRlci5vcHRpb25zKCkuaW5pdGlhdG9yKTsKIAotICAgIGlmICghbV9sb2FkZXIucmVmZXJyZXIo
KS5pc051bGwoKSkKLSAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1
ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1fbG9hZGVyLnJlZmVycmVyKCkpOwotCiAgICAgQVNTRVJU
KCFtX3Jlc291cmNlKTsKICAgICBtX3Jlc291cmNlID0gbV9sb2FkZXIuZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKHByZWZsaWdodFJl
cXVlc3QpKTsKICAgICBpZiAobV9yZXNvdXJjZSkKQEAgLTEyNywxNCArMTI0LDExIEBAIHZvaWQg
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXImIGxvYWRlciwKICAgICBpZiAoIWxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0g
Y3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3Vy
aXR5T3JpZ2luKCkpOworICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3Jl
YXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5
T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKIAotICAgIGlmICghbG9hZGVyLnJlZmVycmVyKCkuaXNOdWxsKCkpCi0gICAgICAgIHBy
ZWZsaWdodFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGxvYWRlci5yZWZlcnJlcigpKTsKLQogICAg
IHVuc2lnbmVkIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIo
KS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIERvTm90QWxsb3dT
dG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKICAgICBpZiAoIWVycm9y
LmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IDRiNGFhZDVjZTVhOTI2ZjJkMDRmMjhlMzZmYzczYTgzZDMw
N2JiNDAuLmRmMzI4ZjMzMWVhZjIyMjg1MzNhMTA4NTMzMmVkYTgzMGFkZDMxMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBA
IC0zODAsMTAgKzM4MCwxMCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgICAgICBvcHRp
b25zLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSBtX3NhbWVPcmlnaW5SZXF1ZXN0ID8gQ2xpZW50
Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgOiBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKICAgICAgICAgb3B0
aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrOwogCisgICAgICAgIHJlcXVlc3Quc2V0QWxs
b3dDb29raWVzKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHMpOwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zKTsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCiAgICAgICAgICAgICBu
ZXdSZXF1ZXN0LnNldEluaXRpYXRvcihtX29wdGlvbnMuaW5pdGlhdG9yKTsKLSAgICAgICAgbmV3
UmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0QWxsb3dDb29raWVzKG1fb3B0aW9u
cy5hbGxvd0NyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwogICAgICAgICBu
ZXdSZXF1ZXN0LnNldE9yaWdpbigmc2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICAgICAgQVNTRVJU
KCFtX3Jlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA0YWY5MjBkZTNkMDgyZmEyMDI1ODAzMDZlMTBjMzNlZjQ5Y2NlMjc2Li43
MjdiNTZkNWFmZTZjMTRiZDBhOGVjOGMyMTlhZWU1OWYyNGQ2MGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02NSwyMCArNjUsMjAgQEAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKGNvbnN0IFJlc291cmMKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGJ1ZmZlcmlu
Z1BvbGljeSA9IG9wdGlvbnMgJiBMb2FkT3B0aW9uOjpCdWZmZXJEYXRhID8gV2ViQ29yZTo6QnVm
ZmVyRGF0YSA6IFdlYkNvcmU6OkRvTm90QnVmZmVyRGF0YTsKICAgICBhdXRvIGNhY2hpbmdQb2xp
Y3kgPSBvcHRpb25zICYgTG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nID8gQ2FjaGluZ1BvbGlj
eTo6RGlzYWxsb3dDYWNoaW5nIDogQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nOwogCisgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChyZXF1ZXN0KTsKKyAgICByZXNvdXJjZVJl
cXVlc3Quc2V0UmVxdWVzdGVyKFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNZWRpYSk7Cisj
aWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKSAmJiBQTEFURk9STShNQUMpCisg
ICAgLy8gRklYTUU6IFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8yNjA3MTYwNz4uIFdl
IGFyZSBub3QgYWJsZSB0byBkbyBDT1JTIGNoZWNraW5nIG9uIDMwNCByZXNwb25zZXMgYmVjYXVz
ZSB0aGV5IGFyZSB1c3VhbGx5IG1pc3NpbmcgdGhlIGhlYWRlcnMgd2UgbmVlZC4KKyAgICBpZiAo
IW1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpKQorICAgICAgICByZXNvdXJjZVJlcXVlc3QubWFr
ZVVuY29uZGl0aW9uYWwoKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkg
dG8gcmVtb3ZlIHRoZSBjb3B5IG9mIHJlcXVlc3Qgd2hlbiBjcmVhcmluZyBjYWNoZVJlcXVlc3Qu
CiAgICAgLy8gRklYTUU6IFNraXAgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY2hlY2sgaWYgdGhl
IGVsZW1lbnQgdGhhdCBpbml0aXRhdGVkIHRoaXMgcmVxdWVzdCBpcyBpbiBhIHVzZXItYWdlbnQg
c2hhZG93IHRyZWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTUwNT4uCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBE
b05vdFNuaWZmQ29udGVudCwgYnVmZmVyaW5nUG9saWN5LCBBbGxvd1N0b3JlZENyZWRlbnRpYWxz
LCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSwgRG9TZWN1cml0eUNoZWNrLCBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9s
aWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIGNhY2hpbmdQb2xpY3kpKTsKKyAgICBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QgY2FjaGVSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25pZmZDb250ZW50LCBidWZmZXJp
bmdQb2xpY3ksIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6
Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJ
bmNsdWRlLCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzLCBEb05v
dEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246
OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywg
Y2FjaGluZ1BvbGljeSkpOwogCiAgICAgY2FjaGVSZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9z
c09yaWdpbihtX2Nyb3NzT3JpZ2luTW9kZSwgKm1fZG9jdW1lbnQpOwogCi0gICAgY2FjaGVSZXF1
ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRSZXF1ZXN0ZXIoUmVzb3VyY2VSZXF1ZXN0
OjpSZXF1ZXN0ZXI6Ok1lZGlhKTsKLSNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdB
VEUpICYmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzI2MDcxNjA3Pi4gV2UgYXJlIG5vdCBhYmxlIHRvIGRvIENPUlMgY2hlY2tpbmcg
b24gMzA0IHJlc3BvbnNlcyBiZWNhdXNlIHRoZXkKLSAgICAvLyBhcmUgdXN1YWxseSBtaXNzaW5n
IHRoZSBoZWFkZXJzIHdlIG5lZWQuCi0gICAgaWYgKGNhY2hlUmVxdWVzdC5vcHRpb25zKCkubW9k
ZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpCi0gICAgICAgIGNhY2hlUmVxdWVzdC5tdXRh
YmxlUmVzb3VyY2VSZXF1ZXN0KCkubWFrZVVuY29uZGl0aW9uYWwoKTsKLSNlbmRpZgotCiAgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHJlc291cmNlID0gbV9kb2N1
bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0TWVkaWEoV1RGTW92ZShjYWNoZVJl
cXVlc3QpKTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGZm
NDYyYWNmMDUxZjMxNzU2MjIyNDQyNDk1YzNjYjEzMjJjYzUyNDMuLjQyZDdiNTIyZDBkNjU4NWQ0
ZTVjNTVhZmE1YjQzNDU2ZmMyYWNkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWxGb3JSZXNv
dXJjZVR5cGUoCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoUmVmQ291bnRlZExlYWtDb3VudGVy
LCBjYWNoZWRSZXNvdXJjZUxlYWtDb3VudGVyLCAoIkNhY2hlZFJlc291cmNlIikpOwogCiBDYWNo
ZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgVHlwZSB0eXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9yZXNvdXJjZVJlcXVl
c3QoV1RGTW92ZShyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgOiBtX3Jl
c291cmNlUmVxdWVzdChyZXF1ZXN0LnJlbGVhc2VSZXNvdXJjZVJlcXVlc3QoKSkKICAgICAsIG1f
b3B0aW9ucyhyZXF1ZXN0Lm9wdGlvbnMoKSkKICAgICAsIG1fZGVjb2RlZERhdGFEZWxldGlvblRp
bWVyKCp0aGlzLCAmQ2FjaGVkUmVzb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSwgZGVhZERlY29k
ZWREYXRhRGVsZXRpb25JbnRlcnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fc2Vz
c2lvbklEKHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGYxZmFiMjJlNjlhMGJmZjk5ZGJlN2Q3NzIx
N2UwMDRiNThjOGFiZDcuLmMwYWE4OWM2YzhlYzQxNThiOWJjNTgwMzY3NmIyMjI3Y2U4MzBmOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcApAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJIVFRQSGVhZGVyVmFsdWVzLmgiCiAjaW5jbHVkZSAiTG9hZGVy
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtMTgyLDcgKzE4MSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZElt
YWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKENhY2hlZFJlc291CiAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5s
b2FkZXIoKS5wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKSAhPSBGcmFtZUxvYWRl
cjo6UGFnZURpc21pc3NhbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIGlmIChEb2N1bWVudCog
ZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudC0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChy
ZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJ
bnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnVwZ3Jh
ZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCgqZG9jdW1lbnQpOwogICAgICAgICAgICAgVVJMIHJl
cXVlc3RVUkwgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgICAgICAgICAg
aWYgKHJlcXVlc3RVUkwuaXNWYWxpZCgpICYmIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6Oklt
YWdlUmVzb3VyY2UsIHJlcXVlc3RVUkwsIHJlcXVlc3QsIEZvclByZWxvYWQ6Ok5vKSkKICAgICAg
ICAgICAgICAgICBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoKmZyYW1lLCByZXF1ZXN0VVJMKTsKQEAg
LTIxOSwxMCArMjE4LDkgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVl
dD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVMKIAogQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewot
ICAgIFVSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVk
ZWQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7Ci0KICNpZiBFTkFCTEUoQ0FDSEVf
UEFSVElUSU9OSU5HKQotICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldERv
bWFpbkZvckNhY2hlUGFydGl0aW9uKGRvY3VtZW50KCktPnRvcE9yaWdpbigpLT5kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigpKTsKKyAgICBBU1NFUlQoZG9jdW1lbnQoKSk7CisgICAgcmVxdWVzdC5z
ZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbigqZG9jdW1lbnQoKSk7CiAjZW5kaWYKIAogICAgIGF1
dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwpAQCAtMjM0LDggKzIz
Miw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAodXJsLnN0cmluZygpICE9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpCi0gICAg
ICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldFVSTCh1cmwpOworICAgIHJl
cXVlc3QucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQoKTsKIAogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHVzZXJTaGVldCA9IG5ldyBDYWNoZWRD
U1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCgpKTsKIApAQCAtNjI5LDI3
ICs2MjYsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbG9nTWVtb3J5Q2FjaGVSZXNvdXJjZVJlcXVl
c3QoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRlcwogICAgICAgICBmcmFtZS0+cGFnZSgp
LT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VSZXF1ZXN0S2V5KCksIGRlc2NyaXB0aW9u
LCB2YWx1ZSwgU2hvdWxkU2FtcGxlOjpZZXMpOwogfQogCi1zdGF0aWMgaW5saW5lIFN0cmluZyBh
Y2NlcHRIZWFkZXJWYWx1ZUZyb21UeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCi17Ci0g
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJl
c291cmNlOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwsYXBwbGljYXRp
b24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgiKTsKLSAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJpbWFnZS9wbmcsaW1hZ2Uvc3ZnK3htbCxpbWFnZS8qO3E9MC44LCovKjtxPTAu
NSIpOwotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQ6Ci0gICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInRleHQvY3NzLCovKjtxPTAuMSIpOwotICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNWR0RvY3VtZW50UmVzb3VyY2U6Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoImltYWdlL3N2Zyt4bWwiKTsKLSNpZiBFTkFCTEUoWFNMVCkKLSAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpYU0xTdHlsZVNoZWV0OgotICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYWNjZXB0IG1vcmUgZ2VuZXJhbCB4bWwgZm9ybWF0cyAqLyoreG1sLCBp
bWFnZS9zdmcreG1sIGZvciBleGFtcGxlLgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0
ZXh0L3htbCxhcHBsaWNhdGlvbi94bWwsYXBwbGljYXRpb24veGh0bWwreG1sLHRleHQveHNsLGFw
cGxpY2F0aW9uL3Jzcyt4bWwsYXBwbGljYXRpb24vYXRvbSt4bWwiKTsKLSNlbmRpZgotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIiovKiIpOwotICAgIH0KLX0KLQog
dm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlcGFyZUZldGNoKENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICAvLyBJbXBs
ZW1lbnRpbmcgc3RlcCAxIHRvIDcgb2YgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2Zl
dGNoaW5nCkBAIC02NTcsNjAgKzYzMywyMyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmVwYXJlRmV0Y2goQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyYwogICAg
IGlmICghcmVxdWVzdC5vcmlnaW4oKSAmJiBkb2N1bWVudCgpKQogICAgICAgICByZXF1ZXN0LnNl
dE9yaWdpbihkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKIAotICAgIGlmICghcmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS5oYXNIVFRQSGVhZGVyKEhUVFBIZWFkZXJOYW1lOjpBY2NlcHQp
KQotICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2VwdCwgYWNjZXB0SGVhZGVyVmFsdWVGcm9tVHlwZSh0
eXBlKSk7CisgICAgcmVxdWVzdC5zZXRBY2NlcHRIZWFkZXJJZk5vbmUodHlwZSk7CiAKICAgICAv
LyBBY2NlcHQtTGFuZ3VhZ2UgdmFsdWUgaXMgaGFuZGxlZCBpbiB1bmRlcmx5aW5nIHBvcnQtc3Bl
Y2lmaWMgY29kZS4KICAgICAvLyBGSVhNRTogRGVjaWRlIHdoZXRoZXIgdG8gc3VwcG9ydCBjbGll
bnQgaGludHMKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZVJlcXVlc3RBY2NvcmRpbmdD
YWNoZU1vZGUoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIGlmIChyZXF1
ZXN0Lm9wdGlvbnMoKS5jYWNoZSA9PSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpEZWZhdWx0Ci0gICAg
ICAgICAgICAmJiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5oYXNIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OklmTW9kaWZpZWRTaW5jZSkKLSAgICAgICAgICAgICAgICB8fCByZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
SWZOb25lTWF0Y2gpCi0gICAgICAgICAgICAgICAgfHwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS5oYXNIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OklmVW5tb2RpZmllZFNpbmNlKQot
ICAgICAgICAgICAgICAgIHx8IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaGFzSFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1hdGNoKQotICAgICAgICAgICAgICAgIHx8IHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJ
ZlJhbmdlKSkpCi0gICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVNb2RlVG9Ob1N0b3JlKCk7Ci0KLSAg
ICBzd2l0Y2ggKHJlcXVlc3Qub3B0aW9ucygpLmNhY2hlKSB7Ci0gICAgY2FzZSBGZXRjaE9wdGlv
bnM6OkNhY2hlOjpOb0NhY2hlOgotICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVl
c3QoKS5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0gICAgICAgIHJl
cXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLmFkZEhUVFBIZWFkZXJGaWVsZElmTm90UHJl
c2VudChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVyVmFsdWVzOjptYXhB
Z2UwKCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5v
U3RvcmU6Ci0gICAgICAgIHJlcXVlc3Quc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpE
aXNhbGxvd0NhY2hpbmcpOwotICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3Qo
KS5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0gICAgICAgIHJlcXVl
c3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLmFkZEhUVFBIZWFkZXJGaWVsZElmTm90UHJlc2Vu
dChIVFRQSGVhZGVyTmFtZTo6UHJhZ21hLCBIVFRQSGVhZGVyVmFsdWVzOjpub0NhY2hlKCkpOwot
ICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5hZGRIVFRQSGVhZGVyRmll
bGRJZk5vdFByZXNlbnQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgSFRUUEhlYWRlclZh
bHVlczo6bm9DYWNoZSgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6
OkNhY2hlOjpSZWxvYWQ6Ci0gICAgICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgp
LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKLSAgICAgICAgcmVxdWVz
dC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuYWRkSFRUUEhlYWRlckZpZWxkSWZOb3RQcmVzZW50
KEhUVFBIZWFkZXJOYW1lOjpQcmFnbWEsIEhUVFBIZWFkZXJWYWx1ZXM6Om5vQ2FjaGUoKSk7Ci0g
ICAgICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLmFkZEhUVFBIZWFkZXJGaWVs
ZElmTm90UHJlc2VudChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVyVmFs
dWVzOjpub0NhY2hlKCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6
Q2FjaGU6OkRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpD
YWNoZTo6Rm9yY2VDYWNoZToKLSAgICAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0
KCkuc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6Ok9ubHlJZkNhY2hlZDoKLSAgICAgICAg
cmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2Fj
aGVEYXRhRG9udExvYWQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnVwZGF0ZUhUVFBSZXF1ZXN0SGVhZGVycyhDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnVwZGF0
ZUhUVFBSZXF1ZXN0SGVhZGVycyhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAg
ICAgLy8gSW1wbGVtZW50aW5nIHN0ZXBzIDEwIHRvIDEyIG9mIGh0dHBzOi8vZmV0Y2guc3BlYy53
aGF0d2cub3JnLyNodHRwLW5ldHdvcmstb3ItY2FjaGUtZmV0Y2gKLSAgICB1cGRhdGVSZXF1ZXN0
QWNjb3JkaW5nQ2FjaGVNb2RlKHJlc291cmNlUmVxdWVzdCk7CisgICAgcmVxdWVzdC51cGRhdGVB
Y2NvcmRpbmdDYWNoZU1vZGUoKTsKIH0KIAogQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRm9yUHJlbG9h
ZCBmb3JQcmVsb2FkLCBEZWZlck9wdGlvbiBkZWZlcikKIHsKICAgICBpZiAoRG9jdW1lbnQqIGRv
Y3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQtPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdC5tdXRh
YmxlUmVzb3VyY2VSZXF1ZXN0KCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1
ZXN0VHlwZTo6TG9hZCk7CisgICAgICAgIHJlcXVlc3QudXBncmFkZUluc2VjdXJlUmVxdWVzdElm
TmVlZGVkKCpkb2N1bWVudCk7CiAKICAgICBVUkwgdXJsID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKTsKIApAQCAtNzM0LDE2ICs2NzMsMTYgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGUKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGZyYW1lKCkgJiYg
ZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpICYmIG1fZG9jdW1lbnRMb2FkZXIpIHsKLSAgICAg
ICAgYXV0byYgcmVzb3VyY2VSZXF1ZXN0ID0gcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0
KCk7CisgICAgICAgIGNvbnN0IGF1dG8mIHJlc291cmNlUmVxdWVzdCA9IHJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCk7CiAgICAgICAgIGF1dG8gYmxvY2tlZFN0YXR1cyA9IGZyYW1lKCktPm1haW5G
cmFtZSgpLnBhZ2UoKS0+dXNlckNvbnRlbnRQcm92aWRlcigpLnByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKHJlc291cmNlUmVxdWVzdC51cmwoKSwgdG9SZXNvdXJjZVR5cGUodHlw
ZSksICptX2RvY3VtZW50TG9hZGVyKTsKLSAgICAgICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1
ZXN0KGJsb2NrZWRTdGF0dXMsIHJlc291cmNlUmVxdWVzdCk7CisgICAgICAgIHJlcXVlc3QuYXBw
bHlCbG9ja2VkU3RhdHVzKGJsb2NrZWRTdGF0dXMpOwogICAgICAgICBpZiAoYmxvY2tlZFN0YXR1
cy5ibG9ja2VkTG9hZCkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVx
dWVzdFJlc291cmNlOiBSZXNvdXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciAoZnJhbWUg
PSAlcCkiLCBmcmFtZSgpKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNl
OjpUeXBlOjpNYWluUmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlID0g
Y3JlYXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCkpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2Ut
PmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7Ci0gICAgICAgICAgICAg
ICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5z
aW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250
ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlw
dGlvbiIpKSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVz
b3VyY2VFcnJvcihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4s
IDAsIHJlc291cmNlUmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCB3YXMgYmxv
Y2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlciIsICJXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyIGRlc2NyaXB0aW9uIikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc4MCw3ICs3
MTksNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiByZXNvdXJjZTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5H
KQogICAgIGlmIChkb2N1bWVudCgpKQotICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJl
cXVlc3QoKS5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihkb2N1bWVudCgpLT50b3BPcmlnaW4o
KS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgIHJlcXVlc3Quc2V0RG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24oKmRvY3VtZW50KCkpOwogI2VuZGlmCiAKICAgICBpZiAocmVxdWVz
dC5hbGxvd3NDYWNoaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IDI1N2U0ZDUyYjY3NTc5OTdhZDg5OTZh
MGEwYThjY2RjM2FkNTM2ZjAuLmUzMGQ5N2VmNmMyMjIwMDZmYjQ0NTNlOTJkNjczYTMzYzVmMzQ2
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwCkBAIC0yNyw5ICsyNywxMiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNs
dWRlICJDb250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUVFBIZWFkZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJNZW1vcnlDYWNoZS5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC03OCw3ICs4MSwxMTEgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldEFzUG90
ZW50aWFsbHlDcm9zc09yaWdpbihjb25zdCBTdHJpbmcmIG1vZGUsIERvY3UKICAgICBtX29wdGlv
bnMuY3JlZGVudGlhbHMgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtb2RlLCAidXNl
LWNyZWRlbnRpYWxzIikgPyBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlIDogRmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbjsKICAgICBtX29wdGlvbnMuYWxsb3dD
cmVkZW50aWFscyA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1vZGUsICJ1c2UtY3Jl
ZGVudGlhbHMiKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHM7CiAKLSAgICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChtX3Jlc291cmNl
UmVxdWVzdCwgKmRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIG1fb3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzKTsKKyAgICBXZWJDb3JlOjp1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChtX3Jl
c291cmNlUmVxdWVzdCwgKmRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIG1fb3B0aW9ucy5hbGxv
d0NyZWRlbnRpYWxzKTsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZv
ckFjY2Vzc0NvbnRyb2woRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVChtX29wdGlv
bnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpOworICAgIEFTU0VSVChkb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpKTsKKworICAgIG1fb3JpZ2luID0gZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKTsKKyAgICBXZWJDb3JlOjp1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChtX3Jl
c291cmNlUmVxdWVzdCwgKmRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIG1fb3B0aW9ucy5hbGxv
d0NyZWRlbnRpYWxzKTsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnVwZ3JhZGVJ
bnNlY3VyZVJlcXVlc3RJZk5lZWRlZChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgVVJMIHVy
bCA9IG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpOworCisgICAgQVNTRVJUKGRvY3VtZW50LmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpKTsKKyAgICBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKHVybCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKworICAgIGlmICh1cmwgPT0gbV9yZXNv
dXJjZVJlcXVlc3QudXJsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVzb3VyY2VSZXF1
ZXN0LnNldFVSTCh1cmwpOworfQorCit2b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6c2V0RG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVChk
b2N1bWVudC50b3BPcmlnaW4oKSk7CisgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0RG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24oZG9jdW1lbnQudG9wT3JpZ2luKCktPmRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKCkpOworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBhY2NlcHRIZWFkZXJWYWx1ZUZyb21U
eXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlOgorICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0
aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgiKTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBl
OjpJbWFnZVJlc291cmNlOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJpbWFnZS9wbmcs
aW1hZ2Uvc3ZnK3htbCxpbWFnZS8qO3E9MC44LCovKjtxPTAuNSIpOworICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQ6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoInRleHQvY3NzLCovKjtxPTAuMSIpOworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6
OlNWR0RvY3VtZW50UmVzb3VyY2U6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImltYWdl
L3N2Zyt4bWwiKTsKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpU
eXBlOjpYU0xTdHlsZVNoZWV0OgorICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYWNjZXB0
IG1vcmUgZ2VuZXJhbCB4bWwgZm9ybWF0cyAqLyoreG1sLCBpbWFnZS9zdmcreG1sIGZvciBleGFt
cGxlLgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0ZXh0L3htbCxhcHBsaWNhdGlvbi94
bWwsYXBwbGljYXRpb24veGh0bWwreG1sLHRleHQveHNsLGFwcGxpY2F0aW9uL3Jzcyt4bWwsYXBw
bGljYXRpb24vYXRvbSt4bWwiKTsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIiovKiIpOworICAgIH0KK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3Q6OnNldEFjY2VwdEhlYWRlcklmTm9uZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQor
eworICAgIGlmICghbV9yZXNvdXJjZVJlcXVlc3QuaGFzSFRUUEhlYWRlcihIVFRQSGVhZGVyTmFt
ZTo6QWNjZXB0KSkKKyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpBY2NlcHQsIGFjY2VwdEhlYWRlclZhbHVlRnJvbVR5cGUodHlwZSkp
OworfQorCit2b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6dXBkYXRlQWNjb3JkaW5nQ2FjaGVN
b2RlKCkKK3sKKyAgICBpZiAobV9vcHRpb25zLmNhY2hlID09IEZldGNoT3B0aW9uczo6Q2FjaGU6
OkRlZmF1bHQKKyAgICAgICAgICAgICYmIChtX3Jlc291cmNlUmVxdWVzdC5oYXNIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OklmTW9kaWZpZWRTaW5jZSkKKyAgICAgICAgICAgICAgICB8
fCBtX3Jlc291cmNlUmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Oklm
Tm9uZU1hdGNoKQorICAgICAgICAgICAgICAgIHx8IG1fcmVzb3VyY2VSZXF1ZXN0Lmhhc0hUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZVbm1vZGlmaWVkU2luY2UpCisgICAgICAgICAg
ICAgICAgfHwgbV9yZXNvdXJjZVJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpJZk1hdGNoKQorICAgICAgICAgICAgICAgIHx8IG1fcmVzb3VyY2VSZXF1ZXN0Lmhhc0hU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZSYW5nZSkpKQorICAgICAgICBtX29wdGlv
bnMuY2FjaGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb1N0b3JlOworCisgICAgc3dpdGNoICht
X29wdGlvbnMuY2FjaGUpIHsKKyAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vQ2FjaGU6
CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5n
Q2FjaGVEYXRhKTsKKyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxk
SWZOb3RQcmVzZW50KEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsIEhUVFBIZWFkZXJWYWx1
ZXM6Om1heEFnZTAoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpD
YWNoZTo6Tm9TdG9yZToKKyAgICAgICAgbV9vcHRpb25zLmNhY2hpbmdQb2xpY3kgPSBDYWNoaW5n
UG9saWN5OjpEaXNhbGxvd0NhY2hpbmc7CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldENh
Y2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAgICAgICAgbV9yZXNvdXJjZVJl
cXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkSWZOb3RQcmVzZW50KEhUVFBIZWFkZXJOYW1lOjpQcmFn
bWEsIEhUVFBIZWFkZXJWYWx1ZXM6Om5vQ2FjaGUoKSk7CisgICAgICAgIG1fcmVzb3VyY2VSZXF1
ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZElmTm90UHJlc2VudChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVD
b250cm9sLCBIVFRQSGVhZGVyVmFsdWVzOjpub0NhY2hlKCkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6OlJlbG9hZDoKKyAgICAgICAgbV9yZXNvdXJjZVJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOworICAgICAgICBt
X3Jlc291cmNlUmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGRJZk5vdFByZXNlbnQoSFRUUEhlYWRl
ck5hbWU6OlByYWdtYSwgSFRUUEhlYWRlclZhbHVlczo6bm9DYWNoZSgpKTsKKyAgICAgICAgbV9y
ZXNvdXJjZVJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkSWZOb3RQcmVzZW50KEhUVFBIZWFkZXJO
YW1lOjpDYWNoZUNvbnRyb2wsIEhUVFBIZWFkZXJWYWx1ZXM6Om5vQ2FjaGUoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpGb3JjZUNhY2hlOgorICAgICAg
ICBtX3Jlc291cmNlUmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXR1cm5DYWNoZURhdGFFbHNlTG9h
ZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpDYWNoZTo6T25seUlm
Q2FjaGVkOgorICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXR1cm5D
YWNoZURhdGFEb250TG9hZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3Q6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKCkKK3sK
KyAgICBVUkwgdXJsID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVl
ZGVkKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKKyAgICBpZiAodXJsLnN0cmluZygpICE9IG1f
cmVzb3VyY2VSZXF1ZXN0LnVybCgpKQorICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRVUkwo
dXJsKTsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmFwcGx5QmxvY2tlZFN0YXR1
cyhjb25zdCBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYgYmxvY2tlZFN0YXR1cykK
K3sKKyAgICBDb250ZW50RXh0ZW5zaW9uczo6YXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KGJs
b2NrZWRTdGF0dXMsIG1fcmVzb3VyY2VSZXF1ZXN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5oCmluZGV4IGExMzc3ZGNiZGU4YmEyYjEwMWVhM2M4MzgyNDJhMjI5YzNjZTY0ZGQu
LjQyNWJiYzkzZjdmMzU0NzNkOWQwNWQ4ZmFkZTMyMDY1NTY3NDhlOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKQEAgLTM2LDEzICszNywxNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSBDb250ZW50RXh0ZW5zaW9ucyB7CitzdHJ1Y3QgQmxvY2tlZFN0YXR1czsKK30KIGNsYXNzIERv
Y3VtZW50OwogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgewogcHVibGljOgogICAgIENh
Y2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiwgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+ID0gTnVsbG9wdCwgU3Ry
aW5nJiYgY2hhcnNldCA9IFN0cmluZygpKTsKIAotICAgIFJlc291cmNlUmVxdWVzdCYgbXV0YWJs
ZVJlc291cmNlUmVxdWVzdCgpIHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CisgICAgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVsZWFzZVJlc291cmNlUmVxdWVzdCgpIHsgcmV0dXJuIFdURk1vdmUo
bV9yZXNvdXJjZVJlcXVlc3QpOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIGNvbnN0
IFN0cmluZyYgY2hhcnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcnNldDsgfQogICAgIHZvaWQg
c2V0Q2hhcnNldChjb25zdCBTdHJpbmcmIGNoYXJzZXQpIHsgbV9jaGFyc2V0ID0gY2hhcnNldDsg
fQpAQCAtNTMsMTUgKzU4LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluaXRpYXRvcihjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9y
TmFtZSgpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzQ2FjaGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
b3B0aW9ucy5jYWNoaW5nUG9saWN5ID09IENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZzsgfQot
ICAgIHZvaWQgc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5IHBvbGljeSkgeyBtX29wdGlv
bnMuY2FjaGluZ1BvbGljeSA9IHBvbGljeTsgfQorICAgIHZvaWQgc2V0Q2FjaGluZ1BvbGljeShD
YWNoaW5nUG9saWN5IHBvbGljeSkgeyBtX29wdGlvbnMuY2FjaGluZ1BvbGljeSA9IHBvbGljeTsg
IH0KIAogICAgIHZvaWQgc2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2luKGNvbnN0IFN0cmluZyYs
IERvY3VtZW50Jik7CisgICAgdm9pZCB1cGRhdGVGb3JBY2Nlc3NDb250cm9sKERvY3VtZW50Jik7
CisKKyAgICB2b2lkIHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChEb2N1bWVudCYpOwor
ICAgIHZvaWQgc2V0QWNjZXB0SGVhZGVySWZOb25lKENhY2hlZFJlc291cmNlOjpUeXBlKTsKKyAg
ICB2b2lkIHVwZGF0ZUFjY29yZGluZ0NhY2hlTW9kZSgpOworICAgIHZvaWQgc2V0RG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24oRG9jdW1lbnQmKTsKKyAgICB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcklmTmVlZGVkKCk7CisgICAgdm9pZCBhcHBseUJsb2NrZWRTdGF0dXMoY29uc3QgQ29udGVu
dEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMmKTsKKwogICAgIHZvaWQgc2V0T3JpZ2luKFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4pIHsgQVNTRVJUKCFtX29yaWdpbik7IG1fb3JpZ2lu
ID0gV1RGTW92ZShvcmlnaW4pOyB9CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZWxlYXNl
T3JpZ2luKCkgeyByZXR1cm4gV1RGTW92ZShtX29yaWdpbik7IH0KICAgICBTZWN1cml0eU9yaWdp
biogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KIAotICAgIHZvaWQg
c2V0Q2FjaGVNb2RlVG9Ob1N0b3JlKCkgeyBtX29wdGlvbnMuY2FjaGUgPSBGZXRjaE9wdGlvbnM6
OkNhY2hlOjpOb1N0b3JlOyB9Ci0KIHByaXZhdGU6CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVz
b3VyY2VSZXF1ZXN0OwogICAgIFN0cmluZyBtX2NoYXJzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25Mb2FkZXIuY3BwCmluZGV4IDNiYWQ4YmYwMDRiYTg4ZGY0NzhiYmE2ZmMzMDFh
ZjFkYmU4NjU4NjQuLmY5YTYyOWE1MzBlMzRiMDc2OGNmMmEwZGVjZTQwZTFhMmJjNjQ5MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCkBAIC01OCwxMCArNTgs
MTIgQEAgdm9pZCBJY29uTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgIGlmIChtX3Jlc291cmNl
IHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFJlc291cmNl
UmVxdWVzdCByZXNvdXJjZVJlcXVlc3QobV9mcmFtZS5sb2FkZXIoKS5pY29uKCkudXJsKCkpOwor
ICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93
KTsKKwogICAgIC8vIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hl
Y2sgaXMgYSBwbGFjZWhvbGRlciB2YWx1ZS4gSXQgZG9lcyBub3QgYWZmZWN0IHRoZSByZXF1ZXN0
IHNpbmNlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRvZXMgbm90IGFwcGx5IHRvIHJhdyByZXNv
dXJjZXMuCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KG1fZnJhbWUubG9hZGVyKCkuaWNvbigpLnVybCgpKSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNl
bmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVk
ZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdCwgRG9TZWN1cml0eUNoZWNr
LCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZv
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNM
b2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkFsbG93Q2Fj
aGluZykpOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFdURk1vdmUocmVzb3Vy
Y2VSZXF1ZXN0KSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29u
dGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6T21pdCwgRG9TZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6
Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0Rl
ZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZykpOwogCi0gICAgcmVxdWVz
dC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3Jp
dHk6Okxvdyk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycygpLmljb24pOwogCiAgICAgbV9yZXNvdXJjZSA9IG1fZnJhbWUuZG9jdW1lbnQo
KS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShyZXF1
ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggNDBmODBmNjc4MzM0ZDUxZjUwNDM5MzY5MWEyOTkxNDY2ODY4NjI5Mi4u
MDVmZDAyNmEzNGQzNTE3M2RlMmVmMWM2MzZjODlkMTc0NTQwNDEyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNG
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcApAQCAtNzAsMTAg
KzcwLDEyIEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkK
IAogICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHVybFJlcXVlc3QgPSBBVkNGQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0R2V0VVJMUmVxdWVzdChtX2F2UmVxdWVzdC5nZXQoKSk7CiAK
KyAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KHVybFJlcXVlc3QuZ2V0KCkpOwor
ICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93
KTsKKwogICAgIC8vIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hl
Y2sgaXMgYSBwbGFjZWhvbGRlciB2YWx1ZS4gSXQgZG9lcyBub3QgYWZmZWN0IHRoZSByZXF1ZXN0
IHNpbmNlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRvZXMgbm90IGFwcGx5IHRvIHJhdyByZXNv
dXJjZXMuCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KHVybFJlcXVlc3QuZ2V0KCkpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywg
RG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFs
cywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMs
IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERvU2VjdXJpdHlDaGVjaywgRmV0Y2hP
cHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1Bv
bGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcp
KTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVx
dWVzdCksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29u
dGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6T21pdCwgRG9TZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6
Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0Rl
ZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZykpOwogCi0gICAgcmVx
dWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJp
b3JpdHk6Okxvdyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9IG1fcGFyZW50
LT5wbGF5ZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBtX3Jlc291cmNlID0gbG9h
ZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92ZShyZXF1ZXN0KSkgOiAwOwog
ICAgIGlmIChtX3Jlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDUwMTJkODZiNDkyMjIwNGM3Yzg3ZWY1ZTEwMGU5
NjlmZGM2MTU0NzguLjA4ZGU2MzkyYWM4NWIzZGI3MTRiZGEzMWY5MGFkYWE2MjcwZTZjYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KQEAgLTY3LDEwICs2NywxMiBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3Rh
cnRMb2FkaW5nKCkKIAogICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0
LmdldCgpIHJlcXVlc3RdOwogCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChu
c1JlcXVlc3QpOworICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQ
cmlvcml0eTo6TG93KTsKKwogICAgIC8vIEZJWE1FOiBTa2lwIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IGNoZWNrIGlmIHRoZSBlbGVtZW50IHRoYXQgaW5pdGl0YXRlZCB0aGlzIHJlcXVlc3QKICAg
ICAvLyBpcyBpbiBhIHVzZXItYWdlbnQgc2hhZG93IHRyZWUuIFNlZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTUwNT4uCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QobnNSZXF1ZXN0LCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNr
cywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50
aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlh
bHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERvU2VjdXJpdHlDaGVjaywgRmV0
Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29u
dGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGlu
Z1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hp
bmcpKTsKLSAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRQcmlvcml0eShS
ZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93KTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5k
Q2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JD
cmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdCwgRG9TZWN1cml0eUNo
ZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJ
bmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZl
cnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkRpc2Fs
bG93Q2FjaGluZykpOwogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBtX3BhcmVudC0+cGxheWVyKCkt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCkpCiAgICAgICAgIG1fcmVzb3VyY2UgPSBsb2FkZXItPnJl
cXVlc3RNZWRpYShXVEZNb3ZlKHJlcXVlc3QpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291258</attachid>
            <date>2016-10-11 08:13:04 -0700</date>
            <delta_ts>2016-10-13 03:02:42 -0700</delta_ts>
            <desc>Fixing gtk/efl builds</desc>
            <filename>bug-163277-20161011170940.patch</filename>
            <type>text/plain</type>
            <size>40320</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM5YTZiODM5ZTY2ZTNk
MTgwZTlmNDZlZDQ4NmEyNzAwMjIwZGQ1Ny4uYmZiZGNhNzk4MGQwZGRiMjliZmJjODRkNWUyMGQz
NjcyMGU4NjhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE2LTEwLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjptdXRhYmxlUmVzb3VyY2VSZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAg
ICAgICAgUmVtb3ZpbmcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjptdXRhYmxlUmVzb3VyY2VSZXF1
ZXN0IHJlcXVpcmVzIGNhbGwgc2l0ZXMgdG8gZWl0aGVyIHVwZGF0ZSB0aGUgUmVzb3VyY2VSZXF1
ZXN0CisgICAgICAgIGJlZm9yZSBjcmVhdGluZyB0aGUgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IG9y
IHRvIGFkZCBtZXRob2RzIGF0IENhY2hlZFJlc291cmNlUmVxdWVzdC4KKworICAgICAgICBBZGRp
bmcgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpyZWxlYXNlUmVzb3VyY2VSZXF1ZXN0IGZvciBDYWNo
ZWRSZXNvdXJjZSBjb25zdHJ1Y3Rvci4KKworICAgICAgICBNb3N0IG5ldyBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgbWV0aG9kcyBhcmUgdXNlZCBieSBDYWNoZWRSZXNvdXJjZUxvYWRlciB3aGljaCBp
cyBwYXNzZWQgYSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuCisgICAgICAgIFRoaXMgYWxsb3dzIGNv
ZGUgaW4gQ2FjaGVkUmVzb3VyY2VMb2FkZXIgdG8gYmUgZWFzaWVyIHRvIHJlYWQuCisKKyAgICAg
ICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFn
ZVNldFZhbHVlOjpsb2FkQmVzdEZpdEltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6OnJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQWNjZXNzQ29u
dHJvbFByZWZsaWdodFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuaDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6c3Rh
cnRQcmVmbGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyOjpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZXBhcmVGZXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlSFRUUFJlcXVlc3RIZWFkZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6YWNjZXB0SGVhZGVyVmFsdWVGcm9tVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVSZXF1ZXN0QWNjb3JkaW5nQ2FjaGVNb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6c2V0QXNQb3RlbnRpYWxseUNyb3Nz
T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6dXBkYXRl
Rm9yQWNjZXNzQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVl
c3Q6OnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFjY2VwdEhlYWRlclZhbHVlRnJvbVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRBY2NlcHRIZWFkZXJJZk5vbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVBY2NvcmRpbmdDYWNoZU1v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpyZW1vdmVGcmFn
bWVudElkZW50aWZpZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZVJlcXVlc3Q6OmFwcGx5QmxvY2tlZFN0YXR1cyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0OjpyZWxlYXNlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlUmVxdWVzdDo6c2V0Q2FjaGluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6Om11dGFibGVSZXNvdXJjZVJlcXVlc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRDYWNoZU1vZGVUb05v
U3RvcmUpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpzdGFy
dExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKwogMjAxNi0xMC0xMSAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJv
bHNdIEJ1dHRvbnMgY29udGFpbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHAKaW5kZXggZGQxNGU3MWQ0MTJkNjZhOWFiZTAyZjBhMWMwZjhjNjI5YzUzY2I2NC4uNWE5YzIy
MjNkNGYxYzQyZmZjYWFjZGNlMmUzMWRkNzQ2M2I4MWVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVNldFZhbHVlLmNwcApAQCAtOTAsNiArOTAsOCBAQCBDU1NJbWFnZVNldFZhbHVlOjpJ
bWFnZVdpdGhTY2FsZSBDU1NJbWFnZVNldFZhbHVlOjpiZXN0SW1hZ2VGb3JTY2FsZUZhY3Rvcigp
CiBzdGQ6OnBhaXI8Q2FjaGVkSW1hZ2UqLCBmbG9hdD4gQ1NTSW1hZ2VTZXRWYWx1ZTo6bG9hZEJl
c3RGaXRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbG9hZGVy
LmRvY3VtZW50KCk7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKKwogICAgIHVwZGF0ZURldmljZVNj
YWxlRmFjdG9yKCpkb2N1bWVudCk7CiAKICAgICBpZiAoIW1fYWNjZXNzZWRCZXN0Rml0SW1hZ2Up
IHsKQEAgLTEwMSwxMCArMTAzLDkgQEAgc3RkOjpwYWlyPENhY2hlZEltYWdlKiwgZmxvYXQ+IENT
U0ltYWdlU2V0VmFsdWU6OmxvYWRCZXN0Rml0SW1hZ2UoQ2FjaGVkUmVzb3VyY2UKICAgICAgICAg
SW1hZ2VXaXRoU2NhbGUgaW1hZ2UgPSBiZXN0SW1hZ2VGb3JTY2FsZUZhY3RvcigpOwogICAgICAg
ICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoZG9jdW1lbnQt
PmNvbXBsZXRlVVJMKGltYWdlLmltYWdlVVJMKSksIG9wdGlvbnMpOwogICAgICAgICByZXF1ZXN0
LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKLSAg
ICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgICAgICAg
ICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJl
cXVlc3QoKSwgKmRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25zLmFsbG93Q3JlZGVu
dGlhbHMpOwotICAgICAgICB9CisgICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRp
b25zOjpNb2RlOjpDb3JzKQorICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVGb3JBY2Nlc3NDb250
cm9sKCpkb2N1bWVudCk7CisKICAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0
SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIG1fYmVzdEZpdEltYWdlU2NhbGVGYWN0
b3IgPSBpbWFnZS5zY2FsZUZhY3RvcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5jcHAKaW5kZXggOWRkOGVmMjJkZTA1N2Q3YWJhZDBkNzk1Yjk0NzI5Njc2NzYxYjNmYS4uMmYy
YThkYzNlMjNhZjMxODYwYmNhZWEwYmI4MjlmZTllYTIyMzVlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmNwcApAQCAtNzIsOCArNzIsOCBAQCBDYWNoZWRJbWFnZSogQ1NTSW1hZ2VW
YWx1ZTo6bG9hZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291
cgogICAgICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IobV9pbml0aWF0b3JOYW1lKTsKIAog
ICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycykgewot
ICAgICAgICAgICAgQVNTRVJUKGxvYWRlci5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsK
LSAgICAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKHJlcXVlc3QubXV0YWJs
ZVJlc291cmNlUmVxdWVzdCgpLCAqbG9hZGVyLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyk7CisgICAgICAgICAgICBBU1NFUlQobG9hZGVyLmRv
Y3VtZW50KCkpOworICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVGb3JBY2Nlc3NDb250cm9sKCps
b2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxv
YWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDJiNjk1ODExMzdiZTI1MmZjNThkZjhhMWY4M2JiNDQw
MzBjYTAzNjMuLjIyY2Y4NTI0Njc3ZDhkNWQ4MTMwOTRkNTI5YTNhZDZjNzlmMjM4YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTI5Myw4ICsyOTMsNyBAQCBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHRX
aXRoQ2FjaGUoY29uc3QgVQogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KHNvdXJjZVVSTCksIG9wdGlvbnMpOwogICAgIHJlcXVlc3Quc2V0QXNQb3Rl
bnRpYWxseUNyb3NzT3JpZ2luKG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKSwgZG9jdW1lbnQpOwotCi0gICAgZG9jdW1l
bnQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRl
ZChyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKyAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3Vy
ZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7CiAKICAgICByZXF1ZXN0LnNldENoYXJzZXQoc2Ny
aXB0Q2hhcnNldCgpKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcigmZWxlbWVudCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAK
aW5kZXggYjQ1ZTVlYmI0MTM2NWQwNGFhNWNlYWRmNTYxNGVjYjAzZjEzYmRkZS4uNGZlZGM0YTU3
MmJiOTZkMTIyODRmMzkxMmI4ZjI2MTIyZjFhMzRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAgLTEwMywxMyArMTAzLDE1
IEBAIHZvaWQgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBTZWN1cml0eU9yaWdpbiYgc2VjCiAgICAgcmVxdWVzdC5zZXRIVFRQT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpOwogfQogCi1SZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNj
ZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCitSZXNvdXJjZVJlcXVlc3QgY3JlYXRl
QWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QocmVxdWVzdC51cmwo
KSk7CiAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocHJlZmxpZ2h0UmVxdWVzdCwg
c2VjdXJpdHlPcmlnaW4sIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CiAgICAgcHJlZmxp
Z2h0UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJPUFRJT05TIik7CiAgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xSZXF1ZXN0
TWV0aG9kLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CiAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRQ
cmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkpOworICAgIGlmICghcmVmZXJyZXIuaXNOdWxsKCkp
CisgICAgICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKIAog
ICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJGaWVsZHMgPSByZXF1ZXN0Lmh0
dHBIZWFkZXJGaWVsZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oCmluZGV4IGI3MjM5ZGNmMmJkM2M5MzQ0ZjhiYjlhOWVkZDQ4Mjlh
NjRkNmVhNWEuLjI4ODgyMDFmM2I1MTI3YzNkNjRhOGI5M2IwNDVkNDY2MDUxY2RmMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJlcXVlc3RIZWFkZXJX
aGl0ZWxpc3QoSFRUUEhlYWRlck5hbWUsIGNvbnN0IFN0cmluZyYKIGJvb2wgaXNPbkFjY2Vzc0Nv
bnRyb2xSZXNwb25zZUhlYWRlcldoaXRlbGlzdChjb25zdCBTdHJpbmcmKTsKIAogdm9pZCB1cGRh
dGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdp
biYsIFN0b3JlZENyZWRlbnRpYWxzKTsKLVJlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250
cm9sUHJlZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eU9yaWdp
biYpOworUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5nJik7
CiAKIGJvb2wgaXNWYWxpZENyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwoY29uc3QgVVJMJik7CiB2
b2lkIGNsZWFuUmVkaXJlY3RlZFJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKFJlc291cmNlUmVxdWVz
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcAppbmRleCA2YjY1MDQyZTJlYTcyMTE2MWNkZWFkMDExZDk5MGY1NzQxMzlh
ZmM0Li4wYzhhOThhNDM2ZDI1NjdiZWUyZWVhN2FmMjg3M2EwZGFiN2Y0YWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNw
cApAQCAtMTA5LDEzICsxMDksMTAgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6
OnN0YXJ0UHJlZmxpZ2h0KCkKICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpS
ZWRpcmVjdDo6TWFudWFsOwogICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3Np
dGlvbiA9IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjazsK
IAotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0KGNyZWF0ZUFjY2Vz
c0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KG1fcmVxdWVzdCwgbV9sb2FkZXIuc2VjdXJpdHlPcmln
aW4oKSksIG9wdGlvbnMpOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1
ZXN0KGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KG1fcmVxdWVzdCwgbV9sb2Fk
ZXIuc2VjdXJpdHlPcmlnaW4oKSwgbV9sb2FkZXIucmVmZXJyZXIoKSksIG9wdGlvbnMpOwogICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGlt
aW5nRW5hYmxlZCgpKQogICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEluaXRpYXRvcihtX2xv
YWRlci5vcHRpb25zKCkuaW5pdGlhdG9yKTsKIAotICAgIGlmICghbV9sb2FkZXIucmVmZXJyZXIo
KS5pc051bGwoKSkKLSAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1
ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1fbG9hZGVyLnJlZmVycmVyKCkpOwotCiAgICAgQVNTRVJU
KCFtX3Jlc291cmNlKTsKICAgICBtX3Jlc291cmNlID0gbV9sb2FkZXIuZG9jdW1lbnQoKS5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3ZlKHByZWZsaWdodFJl
cXVlc3QpKTsKICAgICBpZiAobV9yZXNvdXJjZSkKQEAgLTEyNywxNCArMTI0LDExIEBAIHZvaWQg
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXImIGxvYWRlciwKICAgICBpZiAoIWxvYWRlci5kb2N1bWVudCgpLmZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0g
Y3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3Vy
aXR5T3JpZ2luKCkpOworICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3Jl
YXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5
T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKIAotICAgIGlmICghbG9hZGVyLnJlZmVycmVyKCkuaXNOdWxsKCkpCi0gICAgICAgIHBy
ZWZsaWdodFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGxvYWRlci5yZWZlcnJlcigpKTsKLQogICAg
IHVuc2lnbmVkIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIo
KS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIERvTm90QWxsb3dT
dG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKICAgICBpZiAoIWVycm9y
LmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IDRiNGFhZDVjZTVhOTI2ZjJkMDRmMjhlMzZmYzczYTgzZDMw
N2JiNDAuLmRmMzI4ZjMzMWVhZjIyMjg1MzNhMTA4NTMzMmVkYTgzMGFkZDMxMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBA
IC0zODAsMTAgKzM4MCwxMCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgICAgICBvcHRp
b25zLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSBtX3NhbWVPcmlnaW5SZXF1ZXN0ID8gQ2xpZW50
Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgOiBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKICAgICAgICAgb3B0
aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrOwogCisgICAgICAgIHJlcXVlc3Quc2V0QWxs
b3dDb29raWVzKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHMpOwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3QpLCBvcHRpb25zKTsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCiAgICAgICAgICAgICBu
ZXdSZXF1ZXN0LnNldEluaXRpYXRvcihtX29wdGlvbnMuaW5pdGlhdG9yKTsKLSAgICAgICAgbmV3
UmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0QWxsb3dDb29raWVzKG1fb3B0aW9u
cy5hbGxvd0NyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwogICAgICAgICBu
ZXdSZXF1ZXN0LnNldE9yaWdpbigmc2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICAgICAgQVNTRVJU
KCFtX3Jlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA0YWY5MjBkZTNkMDgyZmEyMDI1ODAzMDZlMTBjMzNlZjQ5Y2NlMjc2Li43
MjdiNTZkNWFmZTZjMTRiZDBhOGVjOGMyMTlhZWU1OWYyNGQ2MGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02NSwyMCArNjUsMjAgQEAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKGNvbnN0IFJlc291cmMKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGJ1ZmZlcmlu
Z1BvbGljeSA9IG9wdGlvbnMgJiBMb2FkT3B0aW9uOjpCdWZmZXJEYXRhID8gV2ViQ29yZTo6QnVm
ZmVyRGF0YSA6IFdlYkNvcmU6OkRvTm90QnVmZmVyRGF0YTsKICAgICBhdXRvIGNhY2hpbmdQb2xp
Y3kgPSBvcHRpb25zICYgTG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nID8gQ2FjaGluZ1BvbGlj
eTo6RGlzYWxsb3dDYWNoaW5nIDogQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nOwogCisgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChyZXF1ZXN0KTsKKyAgICByZXNvdXJjZVJl
cXVlc3Quc2V0UmVxdWVzdGVyKFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpNZWRpYSk7Cisj
aWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKSAmJiBQTEFURk9STShNQUMpCisg
ICAgLy8gRklYTUU6IFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8yNjA3MTYwNz4uIFdl
IGFyZSBub3QgYWJsZSB0byBkbyBDT1JTIGNoZWNraW5nIG9uIDMwNCByZXNwb25zZXMgYmVjYXVz
ZSB0aGV5IGFyZSB1c3VhbGx5IG1pc3NpbmcgdGhlIGhlYWRlcnMgd2UgbmVlZC4KKyAgICBpZiAo
IW1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpKQorICAgICAgICByZXNvdXJjZVJlcXVlc3QubWFr
ZVVuY29uZGl0aW9uYWwoKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkg
dG8gcmVtb3ZlIHRoZSBjb3B5IG9mIHJlcXVlc3Qgd2hlbiBjcmVhcmluZyBjYWNoZVJlcXVlc3Qu
CiAgICAgLy8gRklYTUU6IFNraXAgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY2hlY2sgaWYgdGhl
IGVsZW1lbnQgdGhhdCBpbml0aXRhdGVkIHRoaXMgcmVxdWVzdCBpcyBpbiBhIHVzZXItYWdlbnQg
c2hhZG93IHRyZWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTUwNT4uCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBE
b05vdFNuaWZmQ29udGVudCwgYnVmZmVyaW5nUG9saWN5LCBBbGxvd1N0b3JlZENyZWRlbnRpYWxz
LCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSwgRG9TZWN1cml0eUNoZWNrLCBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9s
aWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIGNhY2hpbmdQb2xpY3kpKTsKKyAgICBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QgY2FjaGVSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25pZmZDb250ZW50LCBidWZmZXJp
bmdQb2xpY3ksIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6
Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJ
bmNsdWRlLCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzLCBEb05v
dEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246
OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywg
Y2FjaGluZ1BvbGljeSkpOwogCiAgICAgY2FjaGVSZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9z
c09yaWdpbihtX2Nyb3NzT3JpZ2luTW9kZSwgKm1fZG9jdW1lbnQpOwogCi0gICAgY2FjaGVSZXF1
ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRSZXF1ZXN0ZXIoUmVzb3VyY2VSZXF1ZXN0
OjpSZXF1ZXN0ZXI6Ok1lZGlhKTsKLSNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdB
VEUpICYmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzI2MDcxNjA3Pi4gV2UgYXJlIG5vdCBhYmxlIHRvIGRvIENPUlMgY2hlY2tpbmcg
b24gMzA0IHJlc3BvbnNlcyBiZWNhdXNlIHRoZXkKLSAgICAvLyBhcmUgdXN1YWxseSBtaXNzaW5n
IHRoZSBoZWFkZXJzIHdlIG5lZWQuCi0gICAgaWYgKGNhY2hlUmVxdWVzdC5vcHRpb25zKCkubW9k
ZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpCi0gICAgICAgIGNhY2hlUmVxdWVzdC5tdXRh
YmxlUmVzb3VyY2VSZXF1ZXN0KCkubWFrZVVuY29uZGl0aW9uYWwoKTsKLSNlbmRpZgotCiAgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHJlc291cmNlID0gbV9kb2N1
bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0TWVkaWEoV1RGTW92ZShjYWNoZVJl
cXVlc3QpKTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGZm
NDYyYWNmMDUxZjMxNzU2MjIyNDQyNDk1YzNjYjEzMjJjYzUyNDMuLjQyZDdiNTIyZDBkNjU4NWQ0
ZTVjNTVhZmE1YjQzNDU2ZmMyYWNkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWxGb3JSZXNv
dXJjZVR5cGUoCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoUmVmQ291bnRlZExlYWtDb3VudGVy
LCBjYWNoZWRSZXNvdXJjZUxlYWtDb3VudGVyLCAoIkNhY2hlZFJlc291cmNlIikpOwogCiBDYWNo
ZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgVHlwZSB0eXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9yZXNvdXJjZVJlcXVl
c3QoV1RGTW92ZShyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSkpCisgICAgOiBtX3Jl
c291cmNlUmVxdWVzdChyZXF1ZXN0LnJlbGVhc2VSZXNvdXJjZVJlcXVlc3QoKSkKICAgICAsIG1f
b3B0aW9ucyhyZXF1ZXN0Lm9wdGlvbnMoKSkKICAgICAsIG1fZGVjb2RlZERhdGFEZWxldGlvblRp
bWVyKCp0aGlzLCAmQ2FjaGVkUmVzb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSwgZGVhZERlY29k
ZWREYXRhRGVsZXRpb25JbnRlcnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fc2Vz
c2lvbklEKHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGYxZmFiMjJlNjlhMGJmZjk5ZGJlN2Q3NzIx
N2UwMDRiNThjOGFiZDcuLmMwYWE4OWM2YzhlYzQxNThiOWJjNTgwMzY3NmIyMjI3Y2U4MzBmOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcApAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJIVFRQSGVhZGVyVmFsdWVzLmgiCiAjaW5jbHVkZSAiTG9hZGVy
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtMTgyLDcgKzE4MSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZElt
YWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKENhY2hlZFJlc291CiAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5s
b2FkZXIoKS5wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKSAhPSBGcmFtZUxvYWRl
cjo6UGFnZURpc21pc3NhbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgIGlmIChEb2N1bWVudCog
ZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudC0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChy
ZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpJ
bnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnVwZ3Jh
ZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCgqZG9jdW1lbnQpOwogICAgICAgICAgICAgVVJMIHJl
cXVlc3RVUkwgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgICAgICAgICAg
aWYgKHJlcXVlc3RVUkwuaXNWYWxpZCgpICYmIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6Oklt
YWdlUmVzb3VyY2UsIHJlcXVlc3RVUkwsIHJlcXVlc3QsIEZvclByZWxvYWQ6Ok5vKSkKICAgICAg
ICAgICAgICAgICBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoKmZyYW1lLCByZXF1ZXN0VVJMKTsKQEAg
LTIxOSwxMCArMjE4LDkgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVl
dD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVMKIAogQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewot
ICAgIFVSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVk
ZWQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7Ci0KICNpZiBFTkFCTEUoQ0FDSEVf
UEFSVElUSU9OSU5HKQotICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldERv
bWFpbkZvckNhY2hlUGFydGl0aW9uKGRvY3VtZW50KCktPnRvcE9yaWdpbigpLT5kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigpKTsKKyAgICBBU1NFUlQoZG9jdW1lbnQoKSk7CisgICAgcmVxdWVzdC5z
ZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbigqZG9jdW1lbnQoKSk7CiAjZW5kaWYKIAogICAgIGF1
dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwpAQCAtMjM0LDggKzIz
Miw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAodXJsLnN0cmluZygpICE9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpCi0gICAg
ICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldFVSTCh1cmwpOworICAgIHJl
cXVlc3QucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQoKTsKIAogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IHVzZXJTaGVldCA9IG5ldyBDYWNoZWRD
U1NTdHlsZVNoZWV0KFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCgpKTsKIApAQCAtNjI5LDI3
ICs2MjYsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbG9nTWVtb3J5Q2FjaGVSZXNvdXJjZVJlcXVl
c3QoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRlcwogICAgICAgICBmcmFtZS0+cGFnZSgp
LT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VSZXF1ZXN0S2V5KCksIGRlc2NyaXB0aW9u
LCB2YWx1ZSwgU2hvdWxkU2FtcGxlOjpZZXMpOwogfQogCi1zdGF0aWMgaW5saW5lIFN0cmluZyBh
Y2NlcHRIZWFkZXJWYWx1ZUZyb21UeXBlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCi17Ci0g
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJl
c291cmNlOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwsYXBwbGljYXRp
b24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgiKTsKLSAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJpbWFnZS9wbmcsaW1hZ2Uvc3ZnK3htbCxpbWFnZS8qO3E9MC44LCovKjtxPTAu
NSIpOwotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQ6Ci0gICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInRleHQvY3NzLCovKjtxPTAuMSIpOwotICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNWR0RvY3VtZW50UmVzb3VyY2U6Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoImltYWdlL3N2Zyt4bWwiKTsKLSNpZiBFTkFCTEUoWFNMVCkKLSAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpYU0xTdHlsZVNoZWV0OgotICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYWNjZXB0IG1vcmUgZ2VuZXJhbCB4bWwgZm9ybWF0cyAqLyoreG1sLCBp
bWFnZS9zdmcreG1sIGZvciBleGFtcGxlLgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0
ZXh0L3htbCxhcHBsaWNhdGlvbi94bWwsYXBwbGljYXRpb24veGh0bWwreG1sLHRleHQveHNsLGFw
cGxpY2F0aW9uL3Jzcyt4bWwsYXBwbGljYXRpb24vYXRvbSt4bWwiKTsKLSNlbmRpZgotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIiovKiIpOwotICAgIH0KLX0KLQog
dm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlcGFyZUZldGNoKENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICAvLyBJbXBs
ZW1lbnRpbmcgc3RlcCAxIHRvIDcgb2YgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2Zl
dGNoaW5nCkBAIC02NTcsNjAgKzYzMywyMyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmVwYXJlRmV0Y2goQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyYwogICAg
IGlmICghcmVxdWVzdC5vcmlnaW4oKSAmJiBkb2N1bWVudCgpKQogICAgICAgICByZXF1ZXN0LnNl
dE9yaWdpbihkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKIAotICAgIGlmICghcmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS5oYXNIVFRQSGVhZGVyKEhUVFBIZWFkZXJOYW1lOjpBY2NlcHQp
KQotICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2VwdCwgYWNjZXB0SGVhZGVyVmFsdWVGcm9tVHlwZSh0
eXBlKSk7CisgICAgcmVxdWVzdC5zZXRBY2NlcHRIZWFkZXJJZk5vbmUodHlwZSk7CiAKICAgICAv
LyBBY2NlcHQtTGFuZ3VhZ2UgdmFsdWUgaXMgaGFuZGxlZCBpbiB1bmRlcmx5aW5nIHBvcnQtc3Bl
Y2lmaWMgY29kZS4KICAgICAvLyBGSVhNRTogRGVjaWRlIHdoZXRoZXIgdG8gc3VwcG9ydCBjbGll
bnQgaGludHMKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZVJlcXVlc3RBY2NvcmRpbmdD
YWNoZU1vZGUoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIGlmIChyZXF1
ZXN0Lm9wdGlvbnMoKS5jYWNoZSA9PSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpEZWZhdWx0Ci0gICAg
ICAgICAgICAmJiAocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5oYXNIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OklmTW9kaWZpZWRTaW5jZSkKLSAgICAgICAgICAgICAgICB8fCByZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
SWZOb25lTWF0Y2gpCi0gICAgICAgICAgICAgICAgfHwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS5oYXNIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OklmVW5tb2RpZmllZFNpbmNlKQot
ICAgICAgICAgICAgICAgIHx8IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaGFzSFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1hdGNoKQotICAgICAgICAgICAgICAgIHx8IHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJ
ZlJhbmdlKSkpCi0gICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVNb2RlVG9Ob1N0b3JlKCk7Ci0KLSAg
ICBzd2l0Y2ggKHJlcXVlc3Qub3B0aW9ucygpLmNhY2hlKSB7Ci0gICAgY2FzZSBGZXRjaE9wdGlv
bnM6OkNhY2hlOjpOb0NhY2hlOgotICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVl
c3QoKS5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0gICAgICAgIHJl
cXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLmFkZEhUVFBIZWFkZXJGaWVsZElmTm90UHJl
c2VudChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVyVmFsdWVzOjptYXhB
Z2UwKCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5v
U3RvcmU6Ci0gICAgICAgIHJlcXVlc3Quc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5OjpE
aXNhbGxvd0NhY2hpbmcpOwotICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3Qo
KS5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0gICAgICAgIHJlcXVl
c3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLmFkZEhUVFBIZWFkZXJGaWVsZElmTm90UHJlc2Vu
dChIVFRQSGVhZGVyTmFtZTo6UHJhZ21hLCBIVFRQSGVhZGVyVmFsdWVzOjpub0NhY2hlKCkpOwot
ICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5hZGRIVFRQSGVhZGVyRmll
bGRJZk5vdFByZXNlbnQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgSFRUUEhlYWRlclZh
bHVlczo6bm9DYWNoZSgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6
OkNhY2hlOjpSZWxvYWQ6Ci0gICAgICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgp
LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKLSAgICAgICAgcmVxdWVz
dC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuYWRkSFRUUEhlYWRlckZpZWxkSWZOb3RQcmVzZW50
KEhUVFBIZWFkZXJOYW1lOjpQcmFnbWEsIEhUVFBIZWFkZXJWYWx1ZXM6Om5vQ2FjaGUoKSk7Ci0g
ICAgICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLmFkZEhUVFBIZWFkZXJGaWVs
ZElmTm90UHJlc2VudChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVyVmFs
dWVzOjpub0NhY2hlKCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6
Q2FjaGU6OkRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpD
YWNoZTo6Rm9yY2VDYWNoZToKLSAgICAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0
KCkuc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6Ok9ubHlJZkNhY2hlZDoKLSAgICAgICAg
cmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2Fj
aGVEYXRhRG9udExvYWQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnVwZGF0ZUhUVFBSZXF1ZXN0SGVhZGVycyhDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnVwZGF0
ZUhUVFBSZXF1ZXN0SGVhZGVycyhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAg
ICAgLy8gSW1wbGVtZW50aW5nIHN0ZXBzIDEwIHRvIDEyIG9mIGh0dHBzOi8vZmV0Y2guc3BlYy53
aGF0d2cub3JnLyNodHRwLW5ldHdvcmstb3ItY2FjaGUtZmV0Y2gKLSAgICB1cGRhdGVSZXF1ZXN0
QWNjb3JkaW5nQ2FjaGVNb2RlKHJlc291cmNlUmVxdWVzdCk7CisgICAgcmVxdWVzdC51cGRhdGVB
Y2NvcmRpbmdDYWNoZU1vZGUoKTsKIH0KIAogQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRm9yUHJlbG9h
ZCBmb3JQcmVsb2FkLCBEZWZlck9wdGlvbiBkZWZlcikKIHsKICAgICBpZiAoRG9jdW1lbnQqIGRv
Y3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQtPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdC5tdXRh
YmxlUmVzb3VyY2VSZXF1ZXN0KCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1
ZXN0VHlwZTo6TG9hZCk7CisgICAgICAgIHJlcXVlc3QudXBncmFkZUluc2VjdXJlUmVxdWVzdElm
TmVlZGVkKCpkb2N1bWVudCk7CiAKICAgICBVUkwgdXJsID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKTsKIApAQCAtNzM0LDE2ICs2NzMsMTYgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGUKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGZyYW1lKCkgJiYg
ZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpICYmIG1fZG9jdW1lbnRMb2FkZXIpIHsKLSAgICAg
ICAgYXV0byYgcmVzb3VyY2VSZXF1ZXN0ID0gcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0
KCk7CisgICAgICAgIGNvbnN0IGF1dG8mIHJlc291cmNlUmVxdWVzdCA9IHJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCk7CiAgICAgICAgIGF1dG8gYmxvY2tlZFN0YXR1cyA9IGZyYW1lKCktPm1haW5G
cmFtZSgpLnBhZ2UoKS0+dXNlckNvbnRlbnRQcm92aWRlcigpLnByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKHJlc291cmNlUmVxdWVzdC51cmwoKSwgdG9SZXNvdXJjZVR5cGUodHlw
ZSksICptX2RvY3VtZW50TG9hZGVyKTsKLSAgICAgICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1
ZXN0KGJsb2NrZWRTdGF0dXMsIHJlc291cmNlUmVxdWVzdCk7CisgICAgICAgIHJlcXVlc3QuYXBw
bHlCbG9ja2VkU3RhdHVzKGJsb2NrZWRTdGF0dXMpOwogICAgICAgICBpZiAoYmxvY2tlZFN0YXR1
cy5ibG9ja2VkTG9hZCkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVx
dWVzdFJlc291cmNlOiBSZXNvdXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciAoZnJhbWUg
PSAlcCkiLCBmcmFtZSgpKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNl
OjpUeXBlOjpNYWluUmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlID0g
Y3JlYXRlUmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgc2Vzc2lvbklEKCkpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2Ut
PmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7Ci0gICAgICAgICAgICAg
ICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5z
aW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250
ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlw
dGlvbiIpKSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVz
b3VyY2VFcnJvcihDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4s
IDAsIHJlc291cmNlUmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCB3YXMgYmxv
Y2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlciIsICJXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyIGRlc2NyaXB0aW9uIikpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc4MCw3ICs3
MTksNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiByZXNvdXJjZTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5H
KQogICAgIGlmIChkb2N1bWVudCgpKQotICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJl
cXVlc3QoKS5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihkb2N1bWVudCgpLT50b3BPcmlnaW4o
KS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgIHJlcXVlc3Quc2V0RG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24oKmRvY3VtZW50KCkpOwogI2VuZGlmCiAKICAgICBpZiAocmVxdWVz
dC5hbGxvd3NDYWNoaW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IDI1N2U0ZDUyYjY3NTc5OTdhZDg5OTZh
MGEwYThjY2RjM2FkNTM2ZjAuLjEyMjdmNDNjZTllN2MyNWFmMTc3YTMzMDI0OGE4OTg1M2UyMTVl
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwCkBAIC0yNyw5ICsyNywxMiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNs
dWRlICJDb250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUVFBIZWFkZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJNZW1vcnlDYWNoZS5o
IgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC03OCw3ICs4MSwxMTUgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldEFzUG90
ZW50aWFsbHlDcm9zc09yaWdpbihjb25zdCBTdHJpbmcmIG1vZGUsIERvY3UKICAgICBtX29wdGlv
bnMuY3JlZGVudGlhbHMgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtb2RlLCAidXNl
LWNyZWRlbnRpYWxzIikgPyBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlIDogRmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbjsKICAgICBtX29wdGlvbnMuYWxsb3dD
cmVkZW50aWFscyA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1vZGUsICJ1c2UtY3Jl
ZGVudGlhbHMiKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHM7CiAKLSAgICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChtX3Jlc291cmNl
UmVxdWVzdCwgKmRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIG1fb3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzKTsKKyAgICBXZWJDb3JlOjp1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChtX3Jl
c291cmNlUmVxdWVzdCwgKmRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIG1fb3B0aW9ucy5hbGxv
d0NyZWRlbnRpYWxzKTsKIH0KIAordm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZv
ckFjY2Vzc0NvbnRyb2woRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVChtX29wdGlv
bnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpOworICAgIEFTU0VSVChkb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpKTsKKworICAgIG1fb3JpZ2luID0gZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKTsKKyAgICBXZWJDb3JlOjp1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChtX3Jl
c291cmNlUmVxdWVzdCwgKmRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIG1fb3B0aW9ucy5hbGxv
d0NyZWRlbnRpYWxzKTsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnVwZ3JhZGVJ
bnNlY3VyZVJlcXVlc3RJZk5lZWRlZChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgVVJMIHVy
bCA9IG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpOworCisgICAgQVNTRVJUKGRvY3VtZW50LmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpKTsKKyAgICBkb2N1bWVudC5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKHVybCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKworICAgIGlmICh1cmwgPT0gbV9yZXNv
dXJjZVJlcXVlc3QudXJsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVzb3VyY2VSZXF1
ZXN0LnNldFVSTCh1cmwpOworfQorCisjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKK3Zv
aWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihEb2N1
bWVudCYgZG9jdW1lbnQpCit7CisgICAgQVNTRVJUKGRvY3VtZW50LnRvcE9yaWdpbigpKTsKKyAg
ICBtX3Jlc291cmNlUmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihkb2N1bWVudC50
b3BPcmlnaW4oKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7Cit9CisjZW5kaWYKKworc3Rh
dGljIGlubGluZSBTdHJpbmcgYWNjZXB0SGVhZGVyVmFsdWVGcm9tVHlwZShDYWNoZWRSZXNvdXJj
ZTo6VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
dGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksKi8q
O3E9MC44Iik7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SW1hZ2VSZXNvdXJjZToK
KyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvcG5nLGltYWdlL3N2Zyt4bWwsaW1h
Z2UvKjtxPTAuOCwqLyo7cT0wLjUiKTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpD
U1NTdHlsZVNoZWV0OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ0ZXh0L2NzcywqLyo7
cT0wLjEiKTsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpTVkdEb2N1bWVudFJlc291
cmNlOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJpbWFnZS9zdmcreG1sIik7CisjaWYg
RU5BQkxFKFhTTFQpCisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6WFNMU3R5bGVTaGVl
dDoKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGFjY2VwdCBtb3JlIGdlbmVyYWwgeG1s
IGZvcm1hdHMgKi8qK3htbCwgaW1hZ2Uvc3ZnK3htbCBmb3IgZXhhbXBsZS4KKyAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC94bWwsYXBwbGljYXRpb24veG1sLGFwcGxpY2F0aW9uL3ho
dG1sK3htbCx0ZXh0L3hzbCxhcHBsaWNhdGlvbi9yc3MreG1sLGFwcGxpY2F0aW9uL2F0b20reG1s
Iik7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIq
LyoiKTsKKyAgICB9Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRBY2NlcHRI
ZWFkZXJJZk5vbmUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSkKK3sKKyAgICBpZiAoIW1fcmVz
b3VyY2VSZXF1ZXN0Lmhhc0hUVFBIZWFkZXIoSFRUUEhlYWRlck5hbWU6OkFjY2VwdCkpCisgICAg
ICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
QWNjZXB0LCBhY2NlcHRIZWFkZXJWYWx1ZUZyb21UeXBlKHR5cGUpKTsKK30KKwordm9pZCBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUFjY29yZGluZ0NhY2hlTW9kZSgpCit7CisgICAgaWYg
KG1fb3B0aW9ucy5jYWNoZSA9PSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpEZWZhdWx0CisgICAgICAg
ICAgICAmJiAobV9yZXNvdXJjZVJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpJZk1vZGlmaWVkU2luY2UpCisgICAgICAgICAgICAgICAgfHwgbV9yZXNvdXJjZVJlcXVl
c3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk5vbmVNYXRjaCkKKyAgICAg
ICAgICAgICAgICB8fCBtX3Jlc291cmNlUmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OklmVW5tb2RpZmllZFNpbmNlKQorICAgICAgICAgICAgICAgIHx8IG1fcmVzb3Vy
Y2VSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZNYXRjaCkKKyAg
ICAgICAgICAgICAgICB8fCBtX3Jlc291cmNlUmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OklmUmFuZ2UpKSkKKyAgICAgICAgbV9vcHRpb25zLmNhY2hlID0gRmV0Y2hP
cHRpb25zOjpDYWNoZTo6Tm9TdG9yZTsKKworICAgIHN3aXRjaCAobV9vcHRpb25zLmNhY2hlKSB7
CisgICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlOgorICAgICAgICBtX3Jlc291
cmNlUmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CisgICAg
ICAgIG1fcmVzb3VyY2VSZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZElmTm90UHJlc2VudChIVFRQ
SGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVyVmFsdWVzOjptYXhBZ2UwKCkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vU3RvcmU6Cisg
ICAgICAgIG1fb3B0aW9ucy5jYWNoaW5nUG9saWN5ID0gQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dD
YWNoaW5nOworICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJ
Z25vcmluZ0NhY2hlRGF0YSk7CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LmFkZEhUVFBIZWFk
ZXJGaWVsZElmTm90UHJlc2VudChIVFRQSGVhZGVyTmFtZTo6UHJhZ21hLCBIVFRQSGVhZGVyVmFs
dWVzOjpub0NhY2hlKCkpOworICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5hZGRIVFRQSGVhZGVy
RmllbGRJZk5vdFByZXNlbnQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgSFRUUEhlYWRl
clZhbHVlczo6bm9DYWNoZSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGZXRjaE9wdGlv
bnM6OkNhY2hlOjpSZWxvYWQ6CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldENhY2hlUG9s
aWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3Qu
YWRkSFRUUEhlYWRlckZpZWxkSWZOb3RQcmVzZW50KEhUVFBIZWFkZXJOYW1lOjpQcmFnbWEsIEhU
VFBIZWFkZXJWYWx1ZXM6Om5vQ2FjaGUoKSk7CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LmFk
ZEhUVFBIZWFkZXJGaWVsZElmTm90UHJlc2VudChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9s
LCBIVFRQSGVhZGVyVmFsdWVzOjpub0NhY2hlKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEZldGNoT3B0aW9uczo6Q2FjaGU6OkRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RmV0Y2hPcHRpb25zOjpDYWNoZTo6Rm9yY2VDYWNoZToKKyAgICAgICAgbV9yZXNvdXJjZVJlcXVl
c3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6Ok9ubHlJZkNhY2hlZDoKKyAgICAgICAg
bV9yZXNvdXJjZVJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
OjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZCgpCit7CisgICAgVVJMIHVybCA9IE1l
bW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChtX3Jlc291cmNlUmVx
dWVzdC51cmwoKSk7CisgICAgaWYgKHVybC5zdHJpbmcoKSAhPSBtX3Jlc291cmNlUmVxdWVzdC51
cmwoKSkKKyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0VVJMKHVybCk7Cit9CisKKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQordm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmFw
cGx5QmxvY2tlZFN0YXR1cyhjb25zdCBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYg
YmxvY2tlZFN0YXR1cykKK3sKKyAgICBDb250ZW50RXh0ZW5zaW9uczo6YXBwbHlCbG9ja2VkU3Rh
dHVzVG9SZXF1ZXN0KGJsb2NrZWRTdGF0dXMsIG1fcmVzb3VyY2VSZXF1ZXN0KTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggYTEzNzdkY2JkZThiYTJiMTAx
ZWEzYzgzODI0MmEyMjljM2NlNjRkZC4uYjI4YWQwMzZlZmNiZGEzNjliYTdjZTRmOGE0MmI3ODJj
NTMzYzdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3RfaAogI2RlZmluZSBDYWNoZWRSZXNvdXJjZVJlcXVlc3RfaAogCisjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUg
IkVsZW1lbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgpAQCAtMzYsMTMg
KzM3LDE3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK3N0cnVjdCBCbG9j
a2VkU3RhdHVzOworfQogY2xhc3MgRG9jdW1lbnQ7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlUmVx
dWVzdCB7CiBwdWJsaWM6CiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQ
cmlvcml0eT4gPSBOdWxsb3B0LCBTdHJpbmcmJiBjaGFyc2V0ID0gU3RyaW5nKCkpOwogCi0gICAg
UmVzb3VyY2VSZXF1ZXN0JiBtdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkgeyByZXR1cm4gbV9yZXNv
dXJjZVJlcXVlc3Q7IH0KKyAgICBSZXNvdXJjZVJlcXVlc3QmJiByZWxlYXNlUmVzb3VyY2VSZXF1
ZXN0KCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc291cmNlUmVxdWVzdCk7IH0KICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3Vy
Y2VSZXF1ZXN0OyB9CiAgICAgY29uc3QgU3RyaW5nJiBjaGFyc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9jaGFyc2V0OyB9CiAgICAgdm9pZCBzZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYgY2hhcnNldCkg
eyBtX2NoYXJzZXQgPSBjaGFyc2V0OyB9CkBAIC01MywxNSArNTgsMjYgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0SW5pdGlhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lKCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd3NDYWNo
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLmNhY2hpbmdQb2xpY3kgPT0gQ2FjaGluZ1Bv
bGljeTo6QWxsb3dDYWNoaW5nOyB9Ci0gICAgdm9pZCBzZXRDYWNoaW5nUG9saWN5KENhY2hpbmdQ
b2xpY3kgcG9saWN5KSB7IG1fb3B0aW9ucy5jYWNoaW5nUG9saWN5ID0gcG9saWN5OyB9CisgICAg
dm9pZCBzZXRDYWNoaW5nUG9saWN5KENhY2hpbmdQb2xpY3kgcG9saWN5KSB7IG1fb3B0aW9ucy5j
YWNoaW5nUG9saWN5ID0gcG9saWN5OyAgfQogCiAgICAgdm9pZCBzZXRBc1BvdGVudGlhbGx5Q3Jv
c3NPcmlnaW4oY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQmKTsKKyAgICB2b2lkIHVwZGF0ZUZvckFj
Y2Vzc0NvbnRyb2woRG9jdW1lbnQmKTsKKworICAgIHZvaWQgdXBncmFkZUluc2VjdXJlUmVxdWVz
dElmTmVlZGVkKERvY3VtZW50Jik7CisgICAgdm9pZCBzZXRBY2NlcHRIZWFkZXJJZk5vbmUoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUpOworICAgIHZvaWQgdXBkYXRlQWNjb3JkaW5nQ2FjaGVNb2RlKCk7
CisgICAgdm9pZCByZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZCgpOworI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgdm9pZCBhcHBseUJsb2NrZWRTdGF0dXMoY29uc3Qg
Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMmKTsKKyNlbmRpZgorI2lmIEVOQUJMRShD
QUNIRV9QQVJUSVRJT05JTkcpCisgICAgdm9pZCBzZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihE
b2N1bWVudCYpOworI2VuZGlmCisKICAgICB2b2lkIHNldE9yaWdpbihSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+JiYgb3JpZ2luKSB7IEFTU0VSVCghbV9vcmlnaW4pOyBtX29yaWdpbiA9IFdURk1vdmUo
b3JpZ2luKTsgfQogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVsZWFzZU9yaWdpbigpIHsg
cmV0dXJuIFdURk1vdmUobV9vcmlnaW4pOyB9CiAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldENhY2hlTW9k
ZVRvTm9TdG9yZSgpIHsgbV9vcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9T
dG9yZTsgfQotCiBwcml2YXRlOgogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVxdWVz
dDsKICAgICBTdHJpbmcgbV9jaGFyc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
TG9hZGVyLmNwcAppbmRleCAzYmFkOGJmMDA0YmE4OGRmNDc4YmJhNmZjMzAxYWYxZGJlODY1ODY0
Li5mOWE2MjlhNTMwZTM0YjA3NjhjZjJhMGRlY2U0MGUxYTJiYzY0OTExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcApAQCAtNTgsMTAgKzU4LDEyIEBAIHZvaWQg
SWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICBpZiAobV9yZXNvdXJjZSB8fCAhbV9mcmFt
ZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVz
b3VyY2VSZXF1ZXN0KG1fZnJhbWUubG9hZGVyKCkuaWNvbigpLnVybCgpKTsKKyAgICByZXNvdXJj
ZVJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7CisKICAgICAv
LyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrIGlzIGEgcGxh
Y2Vob2xkZXIgdmFsdWUuIEl0IGRvZXMgbm90IGFmZmVjdCB0aGUgcmVxdWVzdCBzaW5jZSBDb250
ZW50IFNlY3VyaXR5IFBvbGljeSBkb2VzIG5vdCBhcHBseSB0byByYXcgcmVzb3VyY2VzLgotICAg
IENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChtX2ZyYW1lLmxv
YWRlcigpLmljb24oKS51cmwoKSksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tz
LCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywg
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZl
dGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERvU2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRp
b25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNl
Y3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGlj
eTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmcpKTsKKyAg
ICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCks
IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZl
ckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlh
bHM6Ok9taXQsIERvU2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERv
Tm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlv
bjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5n
LCBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmcpKTsKIAotICAgIHJlcXVlc3QubXV0YWJsZVJl
c291cmNlUmVxdWVzdCgpLnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cpOwog
ICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMo
KS5pY29uKTsKIAogICAgIG1fcmVzb3VyY2UgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmNhY2hlZFJl
c291cmNlTG9hZGVyKCkucmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUocmVxdWVzdCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDQwZjgwZjY3ODMzNGQ1MWY1MDQzOTM2OTFhMjk5MTQ2Njg2ODYyOTIuLjA1ZmQwMjZhMzRk
MzUxNzNkZTJlZjFjNjM2Yzg5ZDE3NDU0MDQxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTcwLDEwICs3MCwxMiBAQCB2
b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAKICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiB1cmxSZXF1ZXN0ID0gQVZDRkFzc2V0UmVzb3VyY2VMb2Fk
aW5nUmVxdWVzdEdldFVSTFJlcXVlc3QobV9hdlJlcXVlc3QuZ2V0KCkpOwogCisgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCh1cmxSZXF1ZXN0LmdldCgpKTsKKyAgICByZXNvdXJj
ZVJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7CisKICAgICAv
LyBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrIGlzIGEgcGxh
Y2Vob2xkZXIgdmFsdWUuIEl0IGRvZXMgbm90IGFmZmVjdCB0aGUgcmVxdWVzdCBzaW5jZSBDb250
ZW50IFNlY3VyaXR5IFBvbGljeSBkb2VzIG5vdCBhcHBseSB0byByYXcgcmVzb3VyY2VzLgotICAg
IENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdCh1cmxSZXF1ZXN0
LmdldCgpKSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25pZmZD
b250ZW50LCBCdWZmZXJEYXRhLCBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlv
bnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6TW9k
ZTo6Tm9Db3JzLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBv
bGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93
RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKSk7CisgICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZl
ckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlh
bHM6Ok9taXQsIERvU2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERv
Tm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlv
bjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5n
LCBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcpKTsKIAotICAgIHJlcXVlc3QubXV0YWJs
ZVJlc291cmNlUmVxdWVzdCgpLnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cp
OwogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIgPSBtX3BhcmVudC0+cGxheWVyKCkt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiAgICAgbV9yZXNvdXJjZSA9IGxvYWRlciA/IGxvYWRl
ci0+cmVxdWVzdFJhd1Jlc291cmNlKFdURk1vdmUocmVxdWVzdCkpIDogMDsKICAgICBpZiAobV9y
ZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbQppbmRleCA1MDEyZDg2YjQ5MjIyMDRjN2M4N2VmNWUxMDBlOTY5ZmRjNjE1NDc4
Li4wOGRlNjM5MmFjODViM2RiNzE0YmRhMzFmOTBhZGFhNjI3MGU2Y2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC02Nywx
MCArNjcsMTIgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygp
CiAKICAgICBOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IFttX2F2UmVxdWVzdC5nZXQoKSByZXF1
ZXN0XTsKIAorICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QobnNSZXF1ZXN0KTsK
KyAgICByZXNvdXJjZVJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxv
dyk7CisKICAgICAvLyBGSVhNRTogU2tpcCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjaGVjayBp
ZiB0aGUgZWxlbWVudCB0aGF0IGluaXRpdGF0ZWQgdGhpcyByZXF1ZXN0CiAgICAgLy8gaXMgaW4g
YSB1c2VyLWFnZW50IHNoYWRvdyB0cmVlLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTU1MDU+LgotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KG5zUmVxdWVzdCwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25p
ZmZDb250ZW50LCBCdWZmZXJEYXRhLCBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIENsaWVu
dENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9w
dGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0LCBEb1NlY3VyaXR5Q2hlY2ssIEZldGNoT3B0aW9uczo6
TW9kZTo6Tm9Db3JzLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0
eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFs
bG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nKSk7Ci0gICAg
cmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2Fk
UHJpb3JpdHk6Okxvdyk7CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoV1RGTW92
ZShyZXNvdXJjZVJlcXVlc3QpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywg
RG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFs
cywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMs
IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERvU2VjdXJpdHlDaGVjaywgRmV0Y2hP
cHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1Bv
bGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmcp
KTsKICAgICBpZiAoYXV0byogbG9hZGVyID0gbV9wYXJlbnQtPnBsYXllcigpLT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpKQogICAgICAgICBtX3Jlc291cmNlID0gbG9hZGVyLT5yZXF1ZXN0TWVkaWEo
V1RGTW92ZShyZXF1ZXN0KSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291470</attachid>
            <date>2016-10-13 03:02:49 -0700</date>
            <delta_ts>2016-10-13 03:36:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-163277-20161013115922.patch</filename>
            <type>text/plain</type>
            <size>39722</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5YTc1YzUxYzE1ZWJm
YmM1MjliMWE0NmYzOTQyOGQyNWE5Y2M5NS4uNGRiNTJlYTBmNGE5NDUwYTcwMTViMTZmZGM5ODQ0
YzU5YTVhNDljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE2LTEwLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjptdXRhYmxlUmVzb3VyY2VSZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYW0gV2VpbmlnLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAgICAg
ICBSZW1vdmluZyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6Om11dGFibGVSZXNvdXJjZVJlcXVlc3Qg
cmVxdWlyZXMgY2FsbCBzaXRlcyB0byBlaXRoZXIgdXBkYXRlIHRoZSBSZXNvdXJjZVJlcXVlc3QK
KyAgICAgICAgYmVmb3JlIGNyZWF0aW5nIHRoZSBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qgb3IgdG8g
YWRkIG1ldGhvZHMgYXQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LgorCisgICAgICAgIEFkZGluZyBD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnJlbGVhc2VSZXNvdXJjZVJlcXVlc3QgZm9yIENhY2hlZFJl
c291cmNlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIE1vc3QgbmV3IENhY2hlZFJlc291cmNlUmVx
dWVzdCBtZXRob2RzIGFyZSB1c2VkIGJ5IENhY2hlZFJlc291cmNlTG9hZGVyIHdoaWNoIGlzIHBh
c3NlZCBhIENhY2hlZFJlc291cmNlUmVxdWVzdC4KKyAgICAgICAgVGhpcyBhbGxvd3MgY29kZSBp
biBDYWNoZWRSZXNvdXJjZUxvYWRlciB0byBiZSBlYXNpZXIgdG8gcmVhZC4KKworICAgICAgICAq
IGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0
VmFsdWU6OmxvYWRCZXN0Rml0SW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmxvYWRJbWFnZSk6CisgICAgICAg
ICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVu
dDo6cmVxdWVzdFNjcmlwdFdpdGhDYWNoZSk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2Nlc3NDb250cm9s
UHJlZmxpZ2h0UmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5oOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpzdGFydFBy
ZWZsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6
OmRvUHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlcGFyZUZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlTG9hZGVyOjp1cGRhdGVIVFRQUmVxdWVzdEhlYWRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjphY2NlcHRIZWFkZXJWYWx1ZUZyb21UeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnVwZGF0ZVJlcXVlc3RBY2NvcmRpbmdDYWNoZU1vZGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVGb3JB
Y2Nlc3NDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6
dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlUmVxdWVzdDo6c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6YWNjZXB0SGVhZGVyVmFsdWVGcm9tVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldEFjY2VwdEhlYWRlcklmTm9uZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUFjY29yZGluZ0NhY2hlTW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVx
dWVzdDo6YXBwbHlCbG9ja2VkU3RhdHVzKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVl
c3Q6OnJlbGVhc2VSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjpzZXRDYWNoaW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlUmVxdWVzdDo6bXV0YWJsZVJlc291cmNlUmVxdWVzdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldENhY2hlTW9kZVRvTm9TdG9y
ZSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uTG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9h
ZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcpOgorCiAyMDE2LTEwLTEyICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBJRExdIERyb3Agc3VwcG9ydCBmb3Ig
bGVnYWN5IFtDb25zdHJ1Y3RvckNvbmRpdGlvbmFsPSpdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VTZXRWYWx1ZS5jcHAKaW5kZXggZGQxNGU3MWQ0MTJkNjZhOWFiZTAyZjBhMWMwZjhjNjI5YzUz
Y2I2NC4uNWE5YzIyMjNkNGYxYzQyZmZjYWFjZGNlMmUzMWRkNzQ2M2I4MWVmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAtOTAsNiArOTAsOCBAQCBDU1NJbWFn
ZVNldFZhbHVlOjpJbWFnZVdpdGhTY2FsZSBDU1NJbWFnZVNldFZhbHVlOjpiZXN0SW1hZ2VGb3JT
Y2FsZUZhY3RvcigpCiBzdGQ6OnBhaXI8Q2FjaGVkSW1hZ2UqLCBmbG9hdD4gQ1NTSW1hZ2VTZXRW
YWx1ZTo6bG9hZEJlc3RGaXRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25z
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbG9hZGVyLmRvY3VtZW50KCk7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKKwogICAgIHVw
ZGF0ZURldmljZVNjYWxlRmFjdG9yKCpkb2N1bWVudCk7CiAKICAgICBpZiAoIW1fYWNjZXNzZWRC
ZXN0Rml0SW1hZ2UpIHsKQEAgLTEwMSwxMCArMTAzLDkgQEAgc3RkOjpwYWlyPENhY2hlZEltYWdl
KiwgZmxvYXQ+IENTU0ltYWdlU2V0VmFsdWU6OmxvYWRCZXN0Rml0SW1hZ2UoQ2FjaGVkUmVzb3Vy
Y2UKICAgICAgICAgSW1hZ2VXaXRoU2NhbGUgaW1hZ2UgPSBiZXN0SW1hZ2VGb3JTY2FsZUZhY3Rv
cigpOwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QoZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGltYWdlLmltYWdlVVJMKSksIG9wdGlvbnMpOwogICAg
ICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KCkuY3NzKTsKLSAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6
OkNvcnMpIHsKLSAgICAgICAgICAgIEFTU0VSVChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSk7
Ci0gICAgICAgICAgICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChyZXF1ZXN0Lm11dGFi
bGVSZXNvdXJjZVJlcXVlc3QoKSwgKmRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBvcHRpb25z
LmFsbG93Q3JlZGVudGlhbHMpOwotICAgICAgICB9CisgICAgICAgIGlmIChvcHRpb25zLm1vZGUg
PT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKQorICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVG
b3JBY2Nlc3NDb250cm9sKCpkb2N1bWVudCk7CisKICAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxv
YWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIG1fYmVzdEZpdElt
YWdlU2NhbGVGYWN0b3IgPSBpbWFnZS5zY2FsZUZhY3RvcjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VWYWx1ZS5jcHAKaW5kZXggOWRkOGVmMjJkZTA1N2Q3YWJhZDBkNzk1Yjk0NzI5Njc2
NzYxYjNmYS4uMmYyYThkYzNlMjNhZjMxODYwYmNhZWEwYmI4MjlmZTllYTIyMzVlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtNzIsOCArNzIsOCBAQCBDYWNoZWRJbWFn
ZSogQ1NTSW1hZ2VWYWx1ZTo6bG9hZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIs
IGNvbnN0IFJlc291cgogICAgICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IobV9pbml0aWF0
b3JOYW1lKTsKIAogICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9k
ZTo6Q29ycykgewotICAgICAgICAgICAgQVNTRVJUKGxvYWRlci5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKTsKLSAgICAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKHJl
cXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCAqbG9hZGVyLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyk7CisgICAgICAgICAgICBBU1NF
UlQobG9hZGVyLmRvY3VtZW50KCkpOworICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVGb3JBY2Nl
c3NDb250cm9sKCpsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9jYWNo
ZWRJbWFnZSA9IGxvYWRlci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDJiNjk1ODExMzdiZTI1MmZjNThk
ZjhhMWY4M2JiNDQwMzBjYTAzNjMuLjIyY2Y4NTI0Njc3ZDhkNWQ4MTMwOTRkNTI5YTNhZDZjNzlm
MjM4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTI5Myw4ICsyOTMs
NyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IFNjcmlwdEVsZW1lbnQ6OnJl
cXVlc3RTY3JpcHRXaXRoQ2FjaGUoY29uc3QgVQogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHNvdXJjZVVSTCksIG9wdGlvbnMpOwogICAgIHJlcXVl
c3Quc2V0QXNQb3RlbnRpYWxseUNyb3NzT3JpZ2luKG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKSwgZG9jdW1lbnQpOwot
Ci0gICAgZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJl
cXVlc3RJZk5lZWRlZChyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKKyAgICByZXF1ZXN0LnVw
Z3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZChkb2N1bWVudCk7CiAKICAgICByZXF1ZXN0LnNl
dENoYXJzZXQoc2NyaXB0Q2hhcnNldCgpKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcigmZWxl
bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5jcHAKaW5kZXggYjQ1ZTVlYmI0MTM2NWQwNGFhNWNlYWRmNTYxNGVjYjAzZjEzYmRk
ZS4uNGZlZGM0YTU3MmJiOTZkMTIyODRmMzkxMmI4ZjI2MTIyZjFhMzRhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAgLTEw
MywxMyArMTAzLDE1IEBAIHZvaWQgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cml0eU9yaWdpbiYgc2VjCiAgICAgcmVxdWVzdC5zZXRI
VFRQT3JpZ2luKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpOwogfQogCi1SZXNvdXJjZVJlcXVl
c3QgY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCitSZXNvdXJjZVJl
cXVlc3QgY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3Qo
cmVxdWVzdC51cmwoKSk7CiAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocHJlZmxp
Z2h0UmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4sIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscyk7
CiAgICAgcHJlZmxpZ2h0UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJPUFRJT05TIik7CiAgICAgcHJl
ZmxpZ2h0UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0Nv
bnRyb2xSZXF1ZXN0TWV0aG9kLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CiAgICAgcHJlZmxpZ2h0
UmVxdWVzdC5zZXRQcmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkpOworICAgIGlmICghcmVmZXJy
ZXIuaXNOdWxsKCkpCisgICAgICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJl
ZmVycmVyKTsKIAogICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJGaWVsZHMg
PSByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oCmluZGV4IGI3MjM5ZGNmMmJkM2M5MzQ0Zjhi
YjlhOWVkZDQ4MjlhNjRkNmVhNWEuLjI4ODgyMDFmM2I1MTI3YzNkNjRhOGI5M2IwNDVkNDY2MDUx
Y2RmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJl
cXVlc3RIZWFkZXJXaGl0ZWxpc3QoSFRUUEhlYWRlck5hbWUsIGNvbnN0IFN0cmluZyYKIGJvb2wg
aXNPbkFjY2Vzc0NvbnRyb2xSZXNwb25zZUhlYWRlcldoaXRlbGlzdChjb25zdCBTdHJpbmcmKTsK
IAogdm9pZCB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChSZXNvdXJjZVJlcXVlc3QmLCBT
ZWN1cml0eU9yaWdpbiYsIFN0b3JlZENyZWRlbnRpYWxzKTsKLVJlc291cmNlUmVxdWVzdCBjcmVh
dGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBT
ZWN1cml0eU9yaWdpbiYpOworUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVm
bGlnaHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgU3RyaW5nJik7CiAKIGJvb2wgaXNWYWxpZENyb3NzT3JpZ2luUmVkaXJlY3Rpb25VUkwoY29u
c3QgVVJMJik7CiB2b2lkIGNsZWFuUmVkaXJlY3RlZFJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKFJl
c291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCA2YjY1MDQyZTJlYTcyMTE2MWNkZWFkMDEx
ZDk5MGY1NzQxMzlhZmM0Li4wYzhhOThhNDM2ZDI1NjdiZWUyZWVhN2FmMjg3M2EwZGFiN2Y0YWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcApAQCAtMTA5LDEzICsxMDksMTAgQEAgdm9pZCBDcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXI6OnN0YXJ0UHJlZmxpZ2h0KCkKICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0
Y2hPcHRpb25zOjpSZWRpcmVjdDo6TWFudWFsOwogICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5
UG9saWN5SW1wb3NpdGlvbiA9IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQ
b2xpY3lDaGVjazsKIAotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0
KGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KG1fcmVxdWVzdCwgbV9sb2FkZXIu
c2VjdXJpdHlPcmlnaW4oKSksIG9wdGlvbnMpOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBw
cmVmbGlnaHRSZXF1ZXN0KGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KG1fcmVx
dWVzdCwgbV9sb2FkZXIuc2VjdXJpdHlPcmlnaW4oKSwgbV9sb2FkZXIucmVmZXJyZXIoKSksIG9w
dGlvbnMpOwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnJlc291cmNlVGltaW5nRW5hYmxlZCgpKQogICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldElu
aXRpYXRvcihtX2xvYWRlci5vcHRpb25zKCkuaW5pdGlhdG9yKTsKIAotICAgIGlmICghbV9sb2Fk
ZXIucmVmZXJyZXIoKS5pc051bGwoKSkKLSAgICAgICAgcHJlZmxpZ2h0UmVxdWVzdC5tdXRhYmxl
UmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKG1fbG9hZGVyLnJlZmVycmVyKCkpOwot
CiAgICAgQVNTRVJUKCFtX3Jlc291cmNlKTsKICAgICBtX3Jlc291cmNlID0gbV9sb2FkZXIuZG9j
dW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnJlcXVlc3RSYXdSZXNvdXJjZShXVEZNb3Zl
KHByZWZsaWdodFJlcXVlc3QpKTsKICAgICBpZiAobV9yZXNvdXJjZSkKQEAgLTEyNywxNCArMTI0
LDExIEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1
bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBpZiAoIWxvYWRlci5kb2N1bWVudCgp
LmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGln
aHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwg
bG9hZGVyLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRS
ZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9h
ZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVy
cm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKIAotICAgIGlmICghbG9hZGVyLnJlZmVycmVyKCkuaXNOdWxsKCkp
Ci0gICAgICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGxvYWRlci5yZWZlcnJl
cigpKTsKLQogICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3Qs
IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fu
bm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKICAg
ICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDRiNGFhZDVjZTVhOTI2ZjJkMDRmMjhl
MzZmYzczYTgzZDMwN2JiNDAuLmRmMzI4ZjMzMWVhZjIyMjg1MzNhMTA4NTMzMmVkYTgzMGFkZDMx
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC0zODAsMTAgKzM4MCwxMCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAog
ICAgICAgICBvcHRpb25zLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPSBtX3NhbWVPcmlnaW5SZXF1
ZXN0ID8gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMg
OiBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFsczsK
ICAgICAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gQ29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrOwogCisgICAgICAgIHJl
cXVlc3Quc2V0QWxsb3dDb29raWVzKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID09IEFsbG93
U3RvcmVkQ3JlZGVudGlhbHMpOwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgbmV3UmVx
dWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCiAg
ICAgICAgICAgICBuZXdSZXF1ZXN0LnNldEluaXRpYXRvcihtX29wdGlvbnMuaW5pdGlhdG9yKTsK
LSAgICAgICAgbmV3UmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0QWxsb3dDb29r
aWVzKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMp
OwogICAgICAgICBuZXdSZXF1ZXN0LnNldE9yaWdpbigmc2VjdXJpdHlPcmlnaW4oKSk7CiAKICAg
ICAgICAgQVNTRVJUKCFtX3Jlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA2NDc0ZTU2YTU4ZmMzZTk4NzQxZGMyYWExYzE4MDkw
OWNmZTE0MzVlLi5jOWY1ZjdhMDlkODAyNDBhMGViOGZkOWRmZTRlY2U0NjIwY2JjYTIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02NSwx
OSArNjUsMTcgQEAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWUKICAgICBEYXRhQnVmZmVyaW5nUG9s
aWN5IGJ1ZmZlcmluZ1BvbGljeSA9IG9wdGlvbnMgJiBMb2FkT3B0aW9uOjpCdWZmZXJEYXRhID8g
V2ViQ29yZTo6QnVmZmVyRGF0YSA6IFdlYkNvcmU6OkRvTm90QnVmZmVyRGF0YTsKICAgICBhdXRv
IGNhY2hpbmdQb2xpY3kgPSBvcHRpb25zICYgTG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nID8g
Q2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nIDogQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNo
aW5nOwogCisgICAgcmVxdWVzdC5zZXRSZXF1ZXN0ZXIoUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0
ZXI6Ok1lZGlhKTsKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpICYmIFBM
QVRGT1JNKE1BQykKKyAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVt
LzI2MDcxNjA3Pi4gV2UgYXJlIG5vdCBhYmxlIHRvIGRvIENPUlMgY2hlY2tpbmcgb24gMzA0IHJl
c3BvbnNlcyBiZWNhdXNlIHRoZXkgYXJlIHVzdWFsbHkgbWlzc2luZyB0aGUgaGVhZGVycyB3ZSBu
ZWVkLgorICAgIGlmICghbV9jcm9zc09yaWdpbk1vZGUuaXNOdWxsKCkpCisgICAgICAgIHJlcXVl
c3QubWFrZVVuY29uZGl0aW9uYWwoKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFNraXAgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kgY2hlY2sgaWYgdGhlIGVsZW1lbnQgdGhhdCBpbml0aWF0ZWQg
dGhpcyByZXF1ZXN0IGlzIGluIGEgdXNlci1hZ2VudCBzaGFkb3cgdHJlZS4gU2VlIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NTA1Pi4KICAgICBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QgY2FjaGVSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIFJlc291cmNlTG9hZGVy
T3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgYnVmZmVyaW5nUG9saWN5
LCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tD
bGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSwg
RG9TZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRl
Q2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGlj
eUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIGNhY2hpbmdQ
b2xpY3kpKTsKLQogICAgIGNhY2hlUmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4o
bV9jcm9zc09yaWdpbk1vZGUsICptX2RvY3VtZW50KTsKIAotICAgIGNhY2hlUmVxdWVzdC5tdXRh
YmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UmVxdWVzdGVyKFJlc291cmNlUmVxdWVzdDo6UmVxdWVz
dGVyOjpNZWRpYSk7Ci0jaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKSAmJiBQ
TEFURk9STShNQUMpCi0gICAgLy8gRklYTUU6IFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxl
bS8yNjA3MTYwNz4uIFdlIGFyZSBub3QgYWJsZSB0byBkbyBDT1JTIGNoZWNraW5nIG9uIDMwNCBy
ZXNwb25zZXMgYmVjYXVzZSB0aGV5Ci0gICAgLy8gYXJlIHVzdWFsbHkgbWlzc2luZyB0aGUgaGVh
ZGVycyB3ZSBuZWVkLgotICAgIGlmIChjYWNoZVJlcXVlc3Qub3B0aW9ucygpLm1vZGUgPT0gRmV0
Y2hPcHRpb25zOjpNb2RlOjpDb3JzKQotICAgICAgICBjYWNoZVJlcXVlc3QubXV0YWJsZVJlc291
cmNlUmVxdWVzdCgpLm1ha2VVbmNvbmRpdGlvbmFsKCk7Ci0jZW5kaWYKLQogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXNvdXJjZSA9IG1fZG9jdW1lbnQtPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdE1lZGlhKFdURk1vdmUoY2FjaGVSZXF1ZXN0KSk7
CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBmZjQ2MmFjZjA1
MWYzMTc1NjIyMjQ0MjQ5NWMzY2IxMzIyY2M1MjQzLi40MmQ3YjUyMmQwZDY1ODVkNGU1YzU1YWZh
NWI0MzQ1NmZjMmFjZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsRm9yUmVzb3VyY2VUeXBl
KAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFJlZkNvdW50ZWRMZWFrQ291bnRlciwgY2FjaGVk
UmVzb3VyY2VMZWFrQ291bnRlciwgKCJDYWNoZWRSZXNvdXJjZSIpKTsKIAogQ2FjaGVkUmVzb3Vy
Y2U6OkNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUg
dHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0KFdURk1v
dmUocmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkpKQorICAgIDogbV9yZXNvdXJjZVJl
cXVlc3QocmVxdWVzdC5yZWxlYXNlUmVzb3VyY2VSZXF1ZXN0KCkpCiAgICAgLCBtX29wdGlvbnMo
cmVxdWVzdC5vcHRpb25zKCkpCiAgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcigqdGhp
cywgJkNhY2hlZFJlc291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEsIGRlYWREZWNvZGVkRGF0YURl
bGV0aW9uSW50ZXJ2YWxGb3JSZXNvdXJjZVR5cGUodHlwZSkpCiAgICAgLCBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA1MmM2ZDQwMTgxNWU1OTkwODgyYTQ5NGIyZTcxMTFlZTdm
MjdhZTZiLi5lYjQ1MDAyMDViYjJhNWI4YjE3NTA4NTNjMjBjNDMxZmY1ZjliNThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiSFRUUEhlYWRlclZhbHVlcy5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
QEAgLTE4Miw3ICsxODEsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdQogICAgIGlmIChGcmFt
ZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCku
cGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkgIT0gRnJhbWVMb2FkZXI6OlBhZ2VE
aXNtaXNzYWxUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50
ID0gZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQtPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT51cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdC5t
dXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVS
ZXF1ZXN0VHlwZTo6TG9hZCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC51cGdyYWRlSW5zZWN1
cmVSZXF1ZXN0SWZOZWVkZWQoKmRvY3VtZW50KTsKICAgICAgICAgICAgIFVSTCByZXF1ZXN0VVJM
ID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICAgICAgICAgIGlmIChyZXF1
ZXN0VVJMLmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291
cmNlLCByZXF1ZXN0VVJMLCByZXF1ZXN0LCBGb3JQcmVsb2FkOjpObykpCiAgICAgICAgICAgICAg
ICAgUGluZ0xvYWRlcjo6bG9hZEltYWdlKCpmcmFtZSwgcmVxdWVzdFVSTCk7CkBAIC0yMTksMTAg
KzIxOCw5IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTCiAKIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNT
U1N0eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKLSAgICBVUkwg
dXJsID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwotCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElP
TklORykKLSAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXREb21haW5Gb3JD
YWNoZVBhcnRpdGlvbihkb2N1bWVudCgpLT50b3BPcmlnaW4oKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24oKSk7CisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIHJlcXVlc3Quc2V0RG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24oKmRvY3VtZW50KCkpOwogI2VuZGlmCiAKICAgICBhdXRvJiBtZW1v
cnlDYWNoZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKQEAgLTIzNCw4ICsyMzIsNyBAQCBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFVzZXJDU1NTdAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHVybC5z
dHJpbmcoKSAhPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKQotICAgICAgICByZXF1
ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwodXJsKTsKKyAgICByZXF1ZXN0LnJl
bW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiB1c2VyU2hlZXQgPSBuZXcgQ2FjaGVkQ1NTU3R5bGVT
aGVldChXVEZNb3ZlKHJlcXVlc3QpLCBzZXNzaW9uSUQoKSk7CiAKQEAgLTYzMywyNyArNjMwLDYg
QEAgc3RhdGljIGlubGluZSB2b2lkIGxvZ01lbW9yeUNhY2hlUmVzb3VyY2VSZXF1ZXN0KEZyYW1l
KiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkZXMKICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+ZGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OnJlc291cmNlUmVxdWVzdEtleSgpLCBkZXNjcmlwdGlvbiwgdmFsdWUs
IFNob3VsZFNhbXBsZTo6WWVzKTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgYWNjZXB0SGVh
ZGVyVmFsdWVGcm9tVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQotewotICAgIHN3aXRj
aCAodHlwZSkgewotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZToK
LSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1s
K3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksKi8qO3E9MC44Iik7Ci0gICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6VHlwZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiaW1hZ2UvcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKjtxPTAuOCwqLyo7cT0wLjUiKTsKLSAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0OgotICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJ0ZXh0L2NzcywqLyo7cT0wLjEiKTsKLSAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpUeXBlOjpTVkdEb2N1bWVudFJlc291cmNlOgotICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJpbWFnZS9zdmcreG1sIik7Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6WFNMU3R5bGVTaGVldDoKLSAgICAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGFjY2VwdCBtb3JlIGdlbmVyYWwgeG1sIGZvcm1hdHMgKi8qK3htbCwgaW1hZ2Uvc3Zn
K3htbCBmb3IgZXhhbXBsZS4KLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC94bWws
YXBwbGljYXRpb24veG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCx0ZXh0L3hzbCxhcHBsaWNhdGlv
bi9yc3MreG1sLGFwcGxpY2F0aW9uL2F0b20reG1sIik7Ci0jZW5kaWYKLSAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIqLyoiKTsKLSAgICB9Ci19Ci0KIHZvaWQgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnByZXBhcmVGZXRjaChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBl
LCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgLy8gSW1wbGVtZW50aW5n
IHN0ZXAgMSB0byA3IG9mIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNmZXRjaGluZwpA
QCAtNjYxLDYwICs2MzcsMjMgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlcGFyZUZl
dGNoKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmMKICAgICBpZiAoIXJl
cXVlc3Qub3JpZ2luKCkgJiYgZG9jdW1lbnQoKSkKICAgICAgICAgcmVxdWVzdC5zZXRPcmlnaW4o
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAKLSAgICBpZiAoIXJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkuaGFzSFRUUEhlYWRlcihIVFRQSGVhZGVyTmFtZTo6QWNjZXB0KSkKLSAgICAg
ICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpBY2NlcHQsIGFjY2VwdEhlYWRlclZhbHVlRnJvbVR5cGUodHlwZSkpOwor
ICAgIHJlcXVlc3Quc2V0QWNjZXB0SGVhZGVySWZOb25lKHR5cGUpOwogCiAgICAgLy8gQWNjZXB0
LUxhbmd1YWdlIHZhbHVlIGlzIGhhbmRsZWQgaW4gdW5kZXJseWluZyBwb3J0LXNwZWNpZmljIGNv
ZGUuCiAgICAgLy8gRklYTUU6IERlY2lkZSB3aGV0aGVyIHRvIHN1cHBvcnQgY2xpZW50IGhpbnRz
CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVSZXF1ZXN0QWNjb3JkaW5nQ2FjaGVNb2Rl
KENhY2hlZFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAocmVxdWVzdC5vcHRp
b25zKCkuY2FjaGUgPT0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdAotICAgICAgICAgICAg
JiYgKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpJZk1vZGlmaWVkU2luY2UpCi0gICAgICAgICAgICAgICAgfHwgcmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKS5oYXNIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OklmTm9uZU1h
dGNoKQotICAgICAgICAgICAgICAgIHx8IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaGFzSFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZlVubW9kaWZpZWRTaW5jZSkKLSAgICAgICAg
ICAgICAgICB8fCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmhhc0hUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6SWZNYXRjaCkKLSAgICAgICAgICAgICAgICB8fCByZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZSYW5nZSkp
KQotICAgICAgICByZXF1ZXN0LnNldENhY2hlTW9kZVRvTm9TdG9yZSgpOwotCi0gICAgc3dpdGNo
IChyZXF1ZXN0Lm9wdGlvbnMoKS5jYWNoZSkgewotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpDYWNo
ZTo6Tm9DYWNoZToKLSAgICAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0
Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwotICAgICAgICByZXF1ZXN0Lm11
dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5hZGRIVFRQSGVhZGVyRmllbGRJZk5vdFByZXNlbnQoSFRU
UEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgSFRUUEhlYWRlclZhbHVlczo6bWF4QWdlMCgpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb1N0b3JlOgot
ICAgICAgICByZXF1ZXN0LnNldENhY2hpbmdQb2xpY3koQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dD
YWNoaW5nKTsKLSAgICAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0Q2Fj
aGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwotICAgICAgICByZXF1ZXN0Lm11dGFi
bGVSZXNvdXJjZVJlcXVlc3QoKS5hZGRIVFRQSGVhZGVyRmllbGRJZk5vdFByZXNlbnQoSFRUUEhl
YWRlck5hbWU6OlByYWdtYSwgSFRUUEhlYWRlclZhbHVlczo6bm9DYWNoZSgpKTsKLSAgICAgICAg
cmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuYWRkSFRUUEhlYWRlckZpZWxkSWZOb3RQ
cmVzZW50KEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsIEhUVFBIZWFkZXJWYWx1ZXM6Om5v
Q2FjaGUoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpDYWNoZTo6
UmVsb2FkOgotICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRDYWNo
ZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7Ci0gICAgICAgIHJlcXVlc3QubXV0YWJs
ZVJlc291cmNlUmVxdWVzdCgpLmFkZEhUVFBIZWFkZXJGaWVsZElmTm90UHJlc2VudChIVFRQSGVh
ZGVyTmFtZTo6UHJhZ21hLCBIVFRQSGVhZGVyVmFsdWVzOjpub0NhY2hlKCkpOwotICAgICAgICBy
ZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5hZGRIVFRQSGVhZGVyRmllbGRJZk5vdFBy
ZXNlbnQoSFRUUEhlYWRlck5hbWU6OkNhY2hlQ29udHJvbCwgSFRUUEhlYWRlclZhbHVlczo6bm9D
YWNoZSgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpE
ZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6OkZv
cmNlQ2FjaGU6Ci0gICAgICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldENh
Y2hlUG9saWN5KFJldHVybkNhY2hlRGF0YUVsc2VMb2FkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpPbmx5SWZDYWNoZWQ6Ci0gICAgICAgIHJlcXVlc3Qu
bXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldENhY2hlUG9saWN5KFJldHVybkNhY2hlRGF0YURv
bnRMb2FkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQogCi12b2lkIENhY2hlZFJlc291cmNl
TG9hZGVyOjp1cGRhdGVIVFRQUmVxdWVzdEhlYWRlcnMoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QpCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjp1cGRhdGVIVFRQUmVx
dWVzdEhlYWRlcnMoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIC8vIElt
cGxlbWVudGluZyBzdGVwcyAxMCB0byAxMiBvZiBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9y
Zy8jaHR0cC1uZXR3b3JrLW9yLWNhY2hlLWZldGNoCi0gICAgdXBkYXRlUmVxdWVzdEFjY29yZGlu
Z0NhY2hlTW9kZShyZXNvdXJjZVJlcXVlc3QpOworICAgIHJlcXVlc3QudXBkYXRlQWNjb3JkaW5n
Q2FjaGVNb2RlKCk7CiB9CiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZvclByZWxvYWQgZm9yUHJl
bG9hZCwgRGVmZXJPcHRpb24gZGVmZXIpCiB7CiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9
IHRoaXMtPmRvY3VtZW50KCkpCi0gICAgICAgIGRvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xp
Y3koKS0+dXBncmFkZUluc2VjdXJlUmVxdWVzdElmTmVlZGVkKHJlcXVlc3QubXV0YWJsZVJlc291
cmNlUmVxdWVzdCgpLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6
OkxvYWQpOworICAgICAgICByZXF1ZXN0LnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCgq
ZG9jdW1lbnQpOwogCiAgICAgVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJs
KCk7CiAKQEAgLTczOCwxNiArNjc3LDE2IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJl
c291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCkt
Pm1haW5GcmFtZSgpLnBhZ2UoKSAmJiBtX2RvY3VtZW50TG9hZGVyKSB7Ci0gICAgICAgIGF1dG8m
IHJlc291cmNlUmVxdWVzdCA9IHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpOworICAg
ICAgICBjb25zdCBhdXRvJiByZXNvdXJjZVJlcXVlc3QgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpOwogICAgICAgICBhdXRvIGJsb2NrZWRTdGF0dXMgPSBmcmFtZSgpLT5tYWluRnJhbWUoKS5w
YWdlKCktPnVzZXJDb250ZW50UHJvdmlkZXIoKS5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVz
Rm9yTG9hZChyZXNvdXJjZVJlcXVlc3QudXJsKCksIHRvUmVzb3VyY2VUeXBlKHR5cGUpLCAqbV9k
b2N1bWVudExvYWRlcik7Ci0gICAgICAgIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChibG9j
a2VkU3RhdHVzLCByZXNvdXJjZVJlcXVlc3QpOworICAgICAgICByZXF1ZXN0LmFwcGx5QmxvY2tl
ZFN0YXR1cyhibG9ja2VkU3RhdHVzKTsKICAgICAgICAgaWYgKGJsb2NrZWRTdGF0dXMuYmxvY2tl
ZExvYWQpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlcXVlc3RSZXNv
dXJjZTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIgKGZyYW1lID0gJXApIiwg
ZnJhbWUoKSk7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6
TWFpblJlc291cmNlKSB7CiAgICAgICAgICAgICAgICAgYXV0byByZXNvdXJjZSA9IGNyZWF0ZVJl
c291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCksIHNlc3Npb25JRCgpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAgICAgICAgICAgICAgIHJlc291cmNlLT5lcnJvcihD
YWNoZWRSZXNvdXJjZTo6U3RhdHVzOjpMb2FkRXJyb3IpOwotICAgICAgICAgICAgICAgIHJlc291
cmNlLT5zZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3IoQ29udGVudEV4dGVuc2lvbnM6Oldl
YktpdENvbnRlbnRCbG9ja2VyRG9tYWluLCAwLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVy
bCgpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIHdhcyBibG9ja2VkIGJ5IGEgY29udGVudCBibG9j
a2VyIiwgIldlYktpdEVycm9yQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIgZGVzY3JpcHRpb24iKSkp
OworICAgICAgICAgICAgICAgIHJlc291cmNlLT5zZXRSZXNvdXJjZUVycm9yKFJlc291cmNlRXJy
b3IoQ29udGVudEV4dGVuc2lvbnM6OldlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluLCAwLCByZXNv
dXJjZVJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkg
YSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBk
ZXNjcmlwdGlvbiIpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03ODQsNyArNzIzLDcgQEAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gcmVzb3VyY2U7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBp
ZiAoZG9jdW1lbnQoKSkKLSAgICAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCku
c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCktPmRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKCkpOworICAgICAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hl
UGFydGl0aW9uKCpkb2N1bWVudCgpKTsKICNlbmRpZgogCiAgICAgaWYgKHJlcXVlc3QuYWxsb3dz
Q2FjaGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCAyNTdlNGQ1MmI2NzU3OTk3YWQ4OTk2YTBhMGE4Y2Nk
YzNhZDUzNmYwLi4wYzM0MDZmNDZmMjFhYjI2NjA0MWIxYjQ3MmM1ZjJhYTM1YTkwYzJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmNwcApAQCAtMjcsOSArMjcsMTIgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiQ29u
dGVudEV4dGVuc2lvbkFjdGlvbnMuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNs
dWRlICJIVFRQSGVhZGVyVmFsdWVzLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzgs
NyArODEsMTE1IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRBc1BvdGVudGlhbGx5
Q3Jvc3NPcmlnaW4oY29uc3QgU3RyaW5nJiBtb2RlLCBEb2N1CiAgICAgbV9vcHRpb25zLmNyZWRl
bnRpYWxzID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobW9kZSwgInVzZS1jcmVkZW50
aWFscyIpID8gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA6IEZldGNoT3B0aW9u
czo6Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW47CiAgICAgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlh
bHMgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtb2RlLCAidXNlLWNyZWRlbnRpYWxz
IikgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxz
OwogCi0gICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wobV9yZXNvdXJjZVJlcXVlc3Qs
ICpkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCBtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscyk7
CisgICAgV2ViQ29yZTo6dXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wobV9yZXNvdXJjZVJl
cXVlc3QsICpkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCBtX29wdGlvbnMuYWxsb3dDcmVkZW50
aWFscyk7CiB9CiAKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVGb3JBY2Nlc3ND
b250cm9sKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQobV9vcHRpb25zLm1vZGUg
PT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKTsKKyAgICBBU1NFUlQoZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSk7CisKKyAgICBtX29yaWdpbiA9IGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCk7
CisgICAgV2ViQ29yZTo6dXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wobV9yZXNvdXJjZVJl
cXVlc3QsICpkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCBtX29wdGlvbnMuYWxsb3dDcmVkZW50
aWFscyk7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojp1cGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0SWZOZWVkZWQoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIFVSTCB1cmwgPSBtX3Jl
c291cmNlUmVxdWVzdC51cmwoKTsKKworICAgIEFTU0VSVChkb2N1bWVudC5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSk7CisgICAgZG9jdW1lbnQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3Jh
ZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRlZCh1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5z
ZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7CisKKyAgICBpZiAodXJsID09IG1fcmVzb3VyY2VSZXF1
ZXN0LnVybCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRV
UkwodXJsKTsKK30KKworI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCit2b2lkIENhY2hl
ZFJlc291cmNlUmVxdWVzdDo6c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oRG9jdW1lbnQmIGRv
Y3VtZW50KQoreworICAgIEFTU0VSVChkb2N1bWVudC50b3BPcmlnaW4oKSk7CisgICAgbV9yZXNv
dXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oZG9jdW1lbnQudG9wT3JpZ2lu
KCktPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOworfQorI2VuZGlmCisKK3N0YXRpYyBpbmxp
bmUgU3RyaW5nIGFjY2VwdEhlYWRlclZhbHVlRnJvbVR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpU
eXBlOjpNYWluUmVzb3VyY2U6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInRleHQvaHRt
bCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCovKjtxPTAuOCIp
OworICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6CisgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoImltYWdlL3BuZyxpbWFnZS9zdmcreG1sLGltYWdlLyo7cT0w
LjgsKi8qO3E9MC41Iik7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVT
aGVldDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC9jc3MsKi8qO3E9MC4xIik7
CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZToKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiaW1hZ2Uvc3ZnK3htbCIpOworI2lmIEVOQUJMRShY
U0xUKQorICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlhTTFN0eWxlU2hlZXQ6CisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBhY2NlcHQgbW9yZSBnZW5lcmFsIHhtbCBmb3JtYXRz
ICovKit4bWwsIGltYWdlL3N2Zyt4bWwgZm9yIGV4YW1wbGUuCisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoInRleHQveG1sLGFwcGxpY2F0aW9uL3htbCxhcHBsaWNhdGlvbi94aHRtbCt4bWws
dGV4dC94c2wsYXBwbGljYXRpb24vcnNzK3htbCxhcHBsaWNhdGlvbi9hdG9tK3htbCIpOworI2Vu
ZGlmCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiKi8qIik7Cisg
ICAgfQorfQorCit2b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6c2V0QWNjZXB0SGVhZGVySWZO
b25lKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCit7CisgICAgaWYgKCFtX3Jlc291cmNlUmVx
dWVzdC5oYXNIVFRQSGVhZGVyKEhUVFBIZWFkZXJOYW1lOjpBY2NlcHQpKQorICAgICAgICBtX3Jl
c291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2VwdCwg
YWNjZXB0SGVhZGVyVmFsdWVGcm9tVHlwZSh0eXBlKSk7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0Ojp1cGRhdGVBY2NvcmRpbmdDYWNoZU1vZGUoKQoreworICAgIGlmIChtX29wdGlv
bnMuY2FjaGUgPT0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdAorICAgICAgICAmJiAobV9y
ZXNvdXJjZVJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1vZGlm
aWVkU2luY2UpCisgICAgICAgICAgICB8fCBtX3Jlc291cmNlUmVxdWVzdC5oYXNIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OklmTm9uZU1hdGNoKQorICAgICAgICAgICAgfHwgbV9yZXNv
dXJjZVJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZlVubW9kaWZp
ZWRTaW5jZSkKKyAgICAgICAgICAgIHx8IG1fcmVzb3VyY2VSZXF1ZXN0Lmhhc0hUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6SWZNYXRjaCkKKyAgICAgICAgICAgIHx8IG1fcmVzb3VyY2VS
ZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZSYW5nZSkpKQorICAg
ICAgICBtX29wdGlvbnMuY2FjaGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb1N0b3JlOworCisg
ICAgc3dpdGNoIChtX29wdGlvbnMuY2FjaGUpIHsKKyAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2Fj
aGU6Ok5vQ2FjaGU6CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldENhY2hlUG9saWN5KFJl
bG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3QuYWRkSFRU
UEhlYWRlckZpZWxkSWZOb3RQcmVzZW50KEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsIEhU
VFBIZWFkZXJWYWx1ZXM6Om1heEFnZTAoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmV0
Y2hPcHRpb25zOjpDYWNoZTo6Tm9TdG9yZToKKyAgICAgICAgbV9vcHRpb25zLmNhY2hpbmdQb2xp
Y3kgPSBDYWNoaW5nUG9saWN5OjpEaXNhbGxvd0NhY2hpbmc7CisgICAgICAgIG1fcmVzb3VyY2VS
ZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAgICAgICAg
bV9yZXNvdXJjZVJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkSWZOb3RQcmVzZW50KEhUVFBIZWFk
ZXJOYW1lOjpQcmFnbWEsIEhUVFBIZWFkZXJWYWx1ZXM6Om5vQ2FjaGUoKSk7CisgICAgICAgIG1f
cmVzb3VyY2VSZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZElmTm90UHJlc2VudChIVFRQSGVhZGVy
TmFtZTo6Q2FjaGVDb250cm9sLCBIVFRQSGVhZGVyVmFsdWVzOjpub0NhY2hlKCkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEZldGNoT3B0aW9uczo6Q2FjaGU6OlJlbG9hZDoKKyAgICAgICAg
bV9yZXNvdXJjZVJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEp
OworICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGRJZk5vdFByZXNl
bnQoSFRUUEhlYWRlck5hbWU6OlByYWdtYSwgSFRUUEhlYWRlclZhbHVlczo6bm9DYWNoZSgpKTsK
KyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkSWZOb3RQcmVzZW50
KEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wsIEhUVFBIZWFkZXJWYWx1ZXM6Om5vQ2FjaGUo
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpGb3JjZUNh
Y2hlOgorICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXR1cm5DYWNo
ZURhdGFFbHNlTG9hZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmV0Y2hPcHRpb25zOjpD
YWNoZTo6T25seUlmQ2FjaGVkOgorICAgICAgICBtX3Jlc291cmNlUmVxdWVzdC5zZXRDYWNoZVBv
bGljeShSZXR1cm5DYWNoZURhdGFEb250TG9hZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kwordm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklm
TmVlZGVkKCkKK3sKKyAgICBVUkwgdXJsID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcklmTmVlZGVkKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKKyAgICBpZiAodXJsLnN0
cmluZygpICE9IG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKQorICAgICAgICBtX3Jlc291cmNlUmVx
dWVzdC5zZXRVUkwodXJsKTsKK30KKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCit2
b2lkIENhY2hlZFJlc291cmNlUmVxdWVzdDo6YXBwbHlCbG9ja2VkU3RhdHVzKGNvbnN0IENvbnRl
bnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzJiBibG9ja2VkU3RhdHVzKQoreworICAgIENvbnRl
bnRFeHRlbnNpb25zOjphcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QoYmxvY2tlZFN0YXR1cywg
bV9yZXNvdXJjZVJlcXVlc3QpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVl
c3QuaAppbmRleCBhMTM3N2RjYmRlOGJhMmIxMDFlYTNjODM4MjQyYTIyOWMzY2U2NGRkLi5iMjhh
ZDAzNmVmY2JkYTM2OWJhN2NlNGY4YTQyYjc4MmM1MzNjN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjaWZuZGVmIENhY2hlZFJlc291cmNlUmVxdWVzdF9oCiAjZGVmaW5lIENhY2hlZFJl
c291cmNlUmVxdWVzdF9oCiAKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZFByaW9yaXR5LmgiCkBAIC0zNiwxMyArMzcsMTcgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgQ29u
dGVudEV4dGVuc2lvbnMgeworc3RydWN0IEJsb2NrZWRTdGF0dXM7Cit9CiBjbGFzcyBEb2N1bWVu
dDsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHsKIHB1YmxpYzoKICAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYsIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IE51bGxvcHQsIFN0cmluZyYm
IGNoYXJzZXQgPSBTdHJpbmcoKSk7CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QmIG11dGFibGVSZXNv
dXJjZVJlcXVlc3QoKSB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQorICAgIFJlc291cmNl
UmVxdWVzdCYmIHJlbGVhc2VSZXNvdXJjZVJlcXVlc3QoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVz
b3VyY2VSZXF1ZXN0KTsgfQogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBjb25zdCBTdHJp
bmcmIGNoYXJzZXQoKSBjb25zdCB7IHJldHVybiBtX2NoYXJzZXQ7IH0KICAgICB2b2lkIHNldENo
YXJzZXQoY29uc3QgU3RyaW5nJiBjaGFyc2V0KSB7IG1fY2hhcnNldCA9IGNoYXJzZXQ7IH0KQEAg
LTUzLDE1ICs1OCwyNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0aWF0b3IoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUo
KSBjb25zdDsKICAgICBib29sIGFsbG93c0NhY2hpbmcoKSBjb25zdCB7IHJldHVybiBtX29wdGlv
bnMuY2FjaGluZ1BvbGljeSA9PSBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmc7IH0KLSAgICB2
b2lkIHNldENhY2hpbmdQb2xpY3koQ2FjaGluZ1BvbGljeSBwb2xpY3kpIHsgbV9vcHRpb25zLmNh
Y2hpbmdQb2xpY3kgPSBwb2xpY3k7IH0KKyAgICB2b2lkIHNldENhY2hpbmdQb2xpY3koQ2FjaGlu
Z1BvbGljeSBwb2xpY3kpIHsgbV9vcHRpb25zLmNhY2hpbmdQb2xpY3kgPSBwb2xpY3k7ICB9CiAK
ICAgICB2b2lkIHNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihjb25zdCBTdHJpbmcmLCBEb2N1
bWVudCYpOworICAgIHZvaWQgdXBkYXRlRm9yQWNjZXNzQ29udHJvbChEb2N1bWVudCYpOworCisg
ICAgdm9pZCB1cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQoRG9jdW1lbnQmKTsKKyAgICB2
b2lkIHNldEFjY2VwdEhlYWRlcklmTm9uZShDYWNoZWRSZXNvdXJjZTo6VHlwZSk7CisgICAgdm9p
ZCB1cGRhdGVBY2NvcmRpbmdDYWNoZU1vZGUoKTsKKyAgICB2b2lkIHJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcklmTmVlZGVkKCk7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB2
b2lkIGFwcGx5QmxvY2tlZFN0YXR1cyhjb25zdCBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0
YXR1cyYpOworI2VuZGlmCisjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKKyAgICB2b2lk
IHNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKERvY3VtZW50Jik7CisjZW5kaWYKKwogICAgIHZv
aWQgc2V0T3JpZ2luKFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4pIHsgQVNTRVJUKCFt
X29yaWdpbik7IG1fb3JpZ2luID0gV1RGTW92ZShvcmlnaW4pOyB9CiAgICAgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiByZWxlYXNlT3JpZ2luKCkgeyByZXR1cm4gV1RGTW92ZShtX29yaWdpbik7IH0K
ICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4uZ2V0
KCk7IH0KIAotICAgIHZvaWQgc2V0Q2FjaGVNb2RlVG9Ob1N0b3JlKCkgeyBtX29wdGlvbnMuY2Fj
aGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb1N0b3JlOyB9Ci0KIHByaXZhdGU6CiAgICAgUmVz
b3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwogICAgIFN0cmluZyBtX2NoYXJzZXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCmluZGV4IDNiYWQ4YmYwMDRi
YTg4ZGY0NzhiYmE2ZmMzMDFhZjFkYmU4NjU4NjQuLmY5YTYyOWE1MzBlMzRiMDc2OGNmMmEwZGVj
ZTQwZTFhMmJjNjQ5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIu
Y3BwCkBAIC01OCwxMCArNTgsMTIgQEAgdm9pZCBJY29uTG9hZGVyOjpzdGFydExvYWRpbmcoKQog
ICAgIGlmIChtX3Jlc291cmNlIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QobV9mcmFtZS5sb2FkZXIo
KS5pY29uKCkudXJsKCkpOworICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJj
ZUxvYWRQcmlvcml0eTo6TG93KTsKKwogICAgIC8vIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9z
aXRpb246OkRvUG9saWN5Q2hlY2sgaXMgYSBwbGFjZWhvbGRlciB2YWx1ZS4gSXQgZG9lcyBub3Qg
YWZmZWN0IHRoZSByZXF1ZXN0IHNpbmNlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRvZXMgbm90
IGFwcGx5IHRvIHJhdyByZXNvdXJjZXMuCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KG1fZnJhbWUubG9hZGVyKCkuaWNvbigpLnVybCgpKSwgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwg
RG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5u
b3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21p
dCwgRG9TZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNs
dWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1Bv
bGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hp
bmdQb2xpY3k6OkFsbG93Q2FjaGluZykpOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRD
YWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENyZWRl
bnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50
aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdCwgRG9TZWN1cml0eUNoZWNrLCBG
ZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2Fk
aW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGlu
ZykpOwogCi0gICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UHJpb3JpdHko
UmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmljb24pOwogCiAgICAgbV9yZXNvdXJjZSA9
IG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVz
b3VyY2UoV1RGTW92ZShyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2Vi
Q29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDBmODBmNjc4MzM0ZDUxZjUwNDM5MzY5
MWEyOTkxNDY2ODY4NjI5Mi4uMDVmZDAyNmEzNGQzNTE3M2RlMmVmMWM2MzZjODlkMTc0NTQwNDEy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyLmNwcApAQCAtNzAsMTAgKzcwLDEyIEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
cjo6c3RhcnRMb2FkaW5nKCkKIAogICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHVybFJl
cXVlc3QgPSBBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0R2V0VVJMUmVxdWVzdChtX2F2
UmVxdWVzdC5nZXQoKSk7CiAKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0KHVy
bFJlcXVlc3QuZ2V0KCkpOworICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJj
ZUxvYWRQcmlvcml0eTo6TG93KTsKKwogICAgIC8vIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9z
aXRpb246OkRvUG9saWN5Q2hlY2sgaXMgYSBwbGFjZWhvbGRlciB2YWx1ZS4gSXQgZG9lcyBub3Qg
YWZmZWN0IHRoZSByZXF1ZXN0IHNpbmNlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRvZXMgbm90
IGFwcGx5IHRvIHJhdyByZXNvdXJjZXMuCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KHVybFJlcXVlc3QuZ2V0KCkpLCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxs
b3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERvU2Vj
dXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRp
ZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVj
aywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5
OjpEaXNhbGxvd0NhY2hpbmcpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChX
VEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJh
Y2tzLCBEb05vdFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENyZWRl
bnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50
aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdCwgRG9TZWN1cml0eUNoZWNrLCBG
ZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2Fk
aW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2Fj
aGluZykpOwogCi0gICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UHJpb3Jp
dHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IGxvYWRlciA9IG1fcGFyZW50LT5wbGF5ZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAg
ICBtX3Jlc291cmNlID0gbG9hZGVyID8gbG9hZGVyLT5yZXF1ZXN0UmF3UmVzb3VyY2UoV1RGTW92
ZShyZXF1ZXN0KSkgOiAwOwogICAgIGlmIChtX3Jlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IDUwMTJkODZiNDky
MjIwNGM3Yzg3ZWY1ZTEwMGU5NjlmZGM2MTU0NzguLjA4ZGU2MzkyYWM4NWIzZGI3MTRiZGEzMWY5
MGFkYWE2MjcwZTZjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTY3LDEwICs2NywxMiBAQCB2b2lkIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKIAogICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1
ZXN0ID0gW21fYXZSZXF1ZXN0LmdldCgpIHJlcXVlc3RdOwogCisgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlc291cmNlUmVxdWVzdChuc1JlcXVlc3QpOworICAgIHJlc291cmNlUmVxdWVzdC5zZXRQcmlv
cml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93KTsKKwogICAgIC8vIEZJWE1FOiBTa2lwIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5IGNoZWNrIGlmIHRoZSBlbGVtZW50IHRoYXQgaW5pdGl0YXRl
ZCB0aGlzIHJlcXVlc3QKICAgICAvLyBpcyBpbiBhIHVzZXItYWdlbnQgc2hhZG93IHRyZWUuIFNl
ZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTUwNT4uCi0gICAg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobnNSZXF1ZXN0LCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90
QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNr
Q2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQsIERv
U2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNl
cnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lD
aGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9s
aWN5OjpEaXNhbGxvd0NhY2hpbmcpKTsKLSAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVl
c3QoKS5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93KTsKKyAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFJlc291cmNl
TG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgQnVmZmVyRGF0
YSwgRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpD
YW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
T21pdCwgRG9TZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJ
bmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpE
b1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENh
Y2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZykpOwogICAgIGlmIChhdXRvKiBsb2FkZXIgPSBt
X3BhcmVudC0+cGxheWVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpCiAgICAgICAgIG1fcmVz
b3VyY2UgPSBsb2FkZXItPnJlcXVlc3RNZWRpYShXVEZNb3ZlKHJlcXVlc3QpKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>