<?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>190154</bug_id>
          
          <creation_ts>2018-10-01 13:56:22 -0700</creation_ts>
          <short_desc>Remove ParsedURLString</short_desc>
          <delta_ts>2018-10-05 21:20:23 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1465218</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-01 13:56:22 -0700</bug_when>
    <thetext>Remove ParsedURLString</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465222</commentid>
    <comment_count>1</comment_count>
      <attachid>351296</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-01 14:03:57 -0700</bug_when>
    <thetext>Created attachment 351296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465234</commentid>
    <comment_count>2</comment_count>
      <attachid>351299</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-01 14:28:28 -0700</bug_when>
    <thetext>Created attachment 351299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465247</commentid>
    <comment_count>3</comment_count>
      <attachid>351305</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-01 14:45:46 -0700</bug_when>
    <thetext>Created attachment 351305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465326</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-01 17:30:10 -0700</bug_when>
    <thetext>I removed all instances of ParsedURLString but WinCairo still wants it, which means WinCairo is using a stale header somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465353</commentid>
    <comment_count>5</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-10-01 18:35:20 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; I removed all instances of ParsedURLString but WinCairo still wants it,
&gt; which means WinCairo is using a stale header somewhere.

This EWS failure seems a incremental build issue of Ninja.
According to the build log, ResourceRequestBase.h is not copied to forwarding header dir.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465375</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-10-01 20:03:11 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #5)
&gt; This EWS failure seems a incremental build issue of Ninja.
&gt; According to the build log, ResourceRequestBase.h is not copied to
&gt; forwarding header dir.

I&apos;m going to look into it in Bug 190183.
I&apos;ve confirmed this incremental build issue can be recovered by doing the next incremental build.
Feel feel to proceed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465738</commentid>
    <comment_count>7</comment_count>
      <attachid>351305</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-02 13:20:18 -0700</bug_when>
    <thetext>Comment on attachment 351305
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466840</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-10-05 21:19:25 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/236762/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466841</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-05 21:20:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/45062990&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351296</attachid>
            <date>2018-10-01 14:03:57 -0700</date>
            <delta_ts>2018-10-01 14:28:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190154-20181001140356.patch</filename>
            <type>text/plain</type>
            <size>67755</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAxOC0xMC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBQ
YXJzZWRVUkxTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJlZm9yZSB0aGUgaW50cm9kdWN0aW9uIG9mIFVSTFBhcnNlciwgaXQgd291bGQgaW5k
aWNhdGUgdGhhdCB3ZSBzaG91bGQgYXNzdW1lIHRoZSBTdHJpbmcKKyAgICAgICAgaXMgZnJvbSBh
IHZhbGlkIFVSTCBzbyB3ZSBjYW4gc2tpcCBjYW5vbmljYWxpemF0aW9uIGFuZCBqdXN0IGZpbmQg
dGhlIG9mZnNldHMgaW5zaWRlIHRoZSBTdHJpbmcKKyAgICAgICAgdG8gcXVpY2tseSBjcmVhdGUg
YSBVUkwuICBJdCB3YXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdGhhdCBjYXVzZWQgc2Vj
dXJpdHkgaXNzdWVzIHdoZW4KKyAgICAgICAgbWlzdXNlZC4gIFNpbmNlIHRoZSBpbnRyb2R1Y3Rp
b24gb2YgVVJMUGFyc2VyLCB3ZSBoYXZlIGEgZmFzdCBwYXRoIGZvciBhbGwgVVJMIHBhcnNpbmcs
IHNvCisgICAgICAgIHJpZ2h0IG5vdyBpdCBhY3R1YWxseSBkb2Vzbid0IGNoYW5nZSBhbnkgYmVo
YXZpb3IuICBJdCdzIGp1c3QgYSByZWxpYyBvZiB0aGUgcGFzdCB0aGF0IGNvbXBsaWNhdGVzCisg
ICAgICAgIHRoZSBVUkwgY2xhc3MsIG1ha2luZyBpdCBoYXJkZXIgdG8gZXhwcmVzcyB3aGljaCBj
b25zdHJ1Y3RvciB0byB1c2UgYW5kIG1ha2luZyBpdCBoYXJkZXIgdG8gbW92ZQorICAgICAgICB0
aGUgY2xhc3MuCisKKyAgICAgICAgKiBNb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZp
Z2F0b3JDb250ZW50VXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ29udGVu
dFV0aWxzOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JDb250ZW50VXRpbHM6OmlzUHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHM6OnVucmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6dXBkYXRlQmFzZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNl
Y3VyaXR5Q29udGV4dCk6CisgICAgICAgICogZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlZFN0
eWxlU2hlZXRDYWNoZSBjb25zdCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5
bGVTaGVldCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tcGxldGVVUkxzKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlVSTDo6Y3JlYXRlQmxvYlVSTCk6CisgICAgICAgICogaGlzdG9yeS9I
aXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6dXJsIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpvcmlnaW5hbFVSTCBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6bG9jYXRpb24gY29uc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvUHVi
bGljVVJMTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpz
dG9wKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0
IGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlw
dCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1l
bnQpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Okhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGU6OmFkZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6
OnJlc291cmNlRm9yVVJMKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
c3RhcnRMb2FkaW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdy
b3VwOjphZGRFbnRyeSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnVybEZv
ckJsYW5rRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpibGFua1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgICgpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1w
bDo6cG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6OmRlY29kZUJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlzVXNpbmdQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJj
aENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNldENvb2tpZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKwogMjAxOC0x
MC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVSTCBzaG91bGQgbm90IHVzZSBUZXh0RW5jb2RpbmcgaW50ZXJuYWxseQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVu
dFV0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRv
cmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwCShyZXZpc2lvbiAyMzY2NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0
b3JDb250ZW50VXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gTmF2aWdhdG9yQ29udGVudFV0aWxzOgogICAgIGlmICghdmVyaWZ5UHJv
dG9jb2xIYW5kbGVyU2NoZW1lKHNjaGVtZSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
ZWN1cml0eUVycm9yIH07CiAKLSAgICBOYXZpZ2F0b3JDb250ZW50VXRpbHM6OmZyb20obmF2aWdh
dG9yLmZyYW1lKCktPnBhZ2UoKSktPmNsaWVudCgpLT5yZWdpc3RlclByb3RvY29sSGFuZGxlcihz
Y2hlbWUsIGJhc2VVUkwsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIG5hdmlnYXRvci5mcmFt
ZSgpLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHRpdGxlKSk7CisgICAgTmF2aWdh
dG9yQ29udGVudFV0aWxzOjpmcm9tKG5hdmlnYXRvci5mcmFtZSgpLT5wYWdlKCkpLT5jbGllbnQo
KS0+cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoc2NoZW1lLCBiYXNlVVJMLCBVUkwoeyB9LCB1cmwp
LCBuYXZpZ2F0b3IuZnJhbWUoKS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRs
ZSkpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBFeGNlcHRpb25P
cjxTdHJpbmc+IE5hdmlnYXRvckNvbnRlbnRVdGlsCiAgICAgaWYgKCF2ZXJpZnlQcm90b2NvbEhh
bmRsZXJTY2hlbWUoc2NoZW1lKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5
RXJyb3IgfTsKIAotICAgIHJldHVybiBjdXN0b21IYW5kbGVyc1N0YXRlU3RyaW5nKE5hdmlnYXRv
ckNvbnRlbnRVdGlsczo6ZnJvbShuYXZpZ2F0b3IuZnJhbWUoKS0+cGFnZSgpKS0+Y2xpZW50KCkt
PmlzUHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZChzY2hlbWUsIGJhc2VVUkwsIFVSTChQYXJzZWRV
UkxTdHJpbmcsIHVybCkpKTsKKyAgICByZXR1cm4gY3VzdG9tSGFuZGxlcnNTdGF0ZVN0cmluZyhO
YXZpZ2F0b3JDb250ZW50VXRpbHM6OmZyb20obmF2aWdhdG9yLmZyYW1lKCktPnBhZ2UoKSktPmNs
aWVudCgpLT5pc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQoc2NoZW1lLCBiYXNlVVJMLCBVUkwo
eyB9LCB1cmwpKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE5hdmlnYXRvckNvbnRlbnRVdGls
czo6dW5yZWdpc3RlclByb3RvY29sSGFuZGxlcihOYXZpZ2F0b3ImIG5hdmlnYXRvciwgY29uc3Qg
U3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMTYzLDcgKzE2Myw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IE5hdmlnYXRvckNvbnRlbnRVdGlsczoKICAgICBpZiAoIXZlcmlmeVBy
b3RvY29sSGFuZGxlclNjaGVtZShzY2hlbWUpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U2VjdXJpdHlFcnJvciB9OwogCi0gICAgTmF2aWdhdG9yQ29udGVudFV0aWxzOjpmcm9tKG5hdmln
YXRvci5mcmFtZSgpLT5wYWdlKCkpLT5jbGllbnQoKS0+dW5yZWdpc3RlclByb3RvY29sSGFuZGxl
cihzY2hlbWUsIGJhc2VVUkwsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgIE5hdmln
YXRvckNvbnRlbnRVdGlsczo6ZnJvbShuYXZpZ2F0b3IuZnJhbWUoKS0+cGFnZSgpKS0+Y2xpZW50
KCktPnVucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoc2NoZW1lLCBiYXNlVVJMLCBVUkwoeyB9LCB1
cmwpKTsKICAgICByZXR1cm4geyB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxNTksNyArMzE1OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJh
c2VVUkwoKQogICAgICAgICAvLyBUaGUgZG9jdW1lbnRVUkkgYXR0cmlidXRlIGlzIHJlYWQtb25s
eSBmcm9tIEphdmFTY3JpcHQsIGJ1dCB3cml0YWJsZSBmcm9tIE9iamVjdGl2ZSBDLCBzbyB3ZSBu
ZWVkIHRvIHJldGFpbgogICAgICAgICAvLyB0aGlzIGZhbGxiYWNrIGJlaGF2aW9yLiBXZSB1c2Ug
YSBudWxsIGJhc2UgVVJMLCBzaW5jZSB0aGUgZG9jdW1lbnRVUkkgYXR0cmlidXRlIGlzIGFuIGFy
Yml0cmFyeSBzdHJpbmcKICAgICAgICAgLy8gYW5kIERPTSAzIENvcmUgZG9lcyBub3Qgc3BlY2lm
eSBob3cgaXQgc2hvdWxkIGJlIHJlc29sdmVkLgotICAgICAgICBtX2Jhc2VVUkwgPSBVUkwoUGFy
c2VkVVJMU3RyaW5nLCBkb2N1bWVudFVSSSgpKTsKKyAgICAgICAgbV9iYXNlVVJMID0gVVJMKHsg
fSwgZG9jdW1lbnRVUkkoKSk7CiAgICAgfQogCiAgICAgY2xlYXJTZWxlY3RvclF1ZXJ5Q2FjaGUo
KTsKQEAgLTU2MDYsOSArNTYwNiw5IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRl
eHQoKQogICAgIGlmICghbV9mcmFtZSkgewogICAgICAgICAvLyBObyBzb3VyY2UgZm9yIGEgc2Vj
dXJpdHkgY29udGV4dC4KICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCi0gICAgICAgIHNldENvb2tpZVVSTChVUkwo
UGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSk7CisgICAgICAgIHNldENvb2tpZVVSTChV
UkwoeyB9LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5
KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1
ZSgpKSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmlu
ZygpIH0sICp0aGlzKSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1h
a2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygp
IH0sICp0aGlzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgRXh0ZW5zaW9uU3R5bGVTaGVldHM6OnVwZGF0ZUlu
amVjdGUKICAgICAKICAgICBpZiAoIW93bmluZ1BhZ2UtPmNhcHRpb25Vc2VyUHJlZmVyZW5jZXNT
dHlsZVNoZWV0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIElkZW50aWZ5IG91ciBvdmVycmlk
ZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5pcXVlIFVSTCAtIGEgbmV3IHNjaGVtZSBhbmQgYSBVVUlE
LgotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBjYXB0aW9uc1N0eWxlU2hlZXRV
UkwoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0Iw
LTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFVSTD4gY2FwdGlvbnNTdHlsZVNoZWV0VVJMKFVSTCgpLCAidXNlci1jYXB0aW9ucy1vdmVycmlk
ZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKTsKIAogICAgICAgICBhdXRv
IHNoZWV0ID0gY3JlYXRlRXh0ZW5zaW9uc1N0eWxlU2hlZXQoY29uc3RfY2FzdDxEb2N1bWVudCY+
KG1fZG9jdW1lbnQpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwsIG93bmluZ1BhZ2UtPmNhcHRpb25V
c2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0KCksIFVzZXJTdHlsZUF1dGhvckxldmVsKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHJldmlz
aW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OmNoZWNrU3R5bGVTaAogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIGEg
c3ludGhldGljIFhTTFN0eWxlU2hlZXQgdGhhdCBpcyBlbWJlZGRlZC4gIEl0IG5lZWRzIHRvIGJl
IGFibGUKICAgICAgICAgICAgIC8vIHRvIGtpY2sgb2ZmIGltcG9ydC9pbmNsdWRlIGxvYWRzIHRo
YXQgY2FuIGhhbmcgb2ZmIHNvbWUgcGFyZW50IHNoZWV0LgogICAgICAgICAgICAgaWYgKG1faXNY
U0wpIHsKLSAgICAgICAgICAgICAgICBVUkwgZmluYWxVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2xv
Y2FsSHJlZik7CisgICAgICAgICAgICAgICAgVVJMIGZpbmFsVVJMKHsgfSwgbV9sb2NhbEhyZWYp
OwogICAgICAgICAgICAgICAgIG1fc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGVFbWJlZGRl
ZCh0aGlzLCBmaW5hbFVSTCk7CiAgICAgICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5zY2hlZHVsZVRvQXBwbHlYU0xUcmFuc2Zvcm1zKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3
ICsxMTMsNyBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZVVSTHMoRG9jdW1lbnRGcmFnbWVuCiB7CiAg
ICAgVmVjdG9yPEF0dHJpYnV0ZUNoYW5nZT4gY2hhbmdlczsKIAotICAgIFVSTCBwYXJzZWRCYXNl
VVJMKFBhcnNlZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgVVJMIHBhcnNlZEJhc2VVUkwoeyB9
LCBiYXNlVVJMKTsKIAogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBl
PEVsZW1lbnQ+KCpmcmFnbWVudCkpIHsKICAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0
ZXMoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAkocmV2aXNpb24gMjM2Njcz
KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzMsNyArNzMsNyBAQCBVUkwgQmxvYlVSTDo6Y3JlYXRlQmxvYlVSTChjb25zdCBTdHJpbmcm
CiB7CiAgICAgQVNTRVJUKCFvcmlnaW5TdHJpbmcuaXNFbXB0eSgpKTsKICAgICBTdHJpbmcgdXJs
U3RyaW5nID0gImJsb2I6IiArIG9yaWdpblN0cmluZyArICcvJyArIGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKTsKLSAgICByZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsK
KyAgICByZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5nKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9u
IDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBib29sIEhpc3RvcnlJdGVtOjpoYXNDYWNo
ZWRQYWdlRXhwaXJlZCgpCiAKIFVSTCBIaXN0b3J5SXRlbTo6dXJsKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwo
eyB9LCBtX3VybFN0cmluZyk7CiB9CiAKIFVSTCBIaXN0b3J5SXRlbTo6b3JpZ2luYWxVUkwoKSBj
b25zdAogewotICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX29yaWdpbmFsVVJMU3Ry
aW5nKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgbV9vcmlnaW5hbFVSTFN0cmluZyk7CiB9CiAKIGNv
bnN0IFN0cmluZyYgSGlzdG9yeUl0ZW06OnJlZmVycmVyKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAyMzY2NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmRp
ZEF0dGFjaFJlbmQKIFVSTCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6bG9jYXRpb24oKSBjb25zdAog
ewogICAgIGlmIChoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY2RvY0F0dHIp
KQotICAgICAgICByZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgImFib3V0OnNyY2RvYyIpOwor
ICAgICAgICByZXR1cm4gVVJMKHsgfSwgImFib3V0OnNyY2RvYyIpOwogICAgIHJldHVybiBkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0
cikpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxOTksNyArNzE5OSw3IEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6ZW5zdXJlTWVkaWFDb250cm8KIAogI2lmbmRlZiBOREVCVUcKICAgICAvLyBTZXR0
aW5nIGEgc2NyaXB0VVJMIGFsbG93cyB0aGUgc291cmNlIHRvIGJlIGRlYnVnZ2FibGUgaW4gdGhl
IGluc3BlY3Rvci4KLSAgICBVUkwgc2NyaXB0VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgIm1l
ZGlhQ29udHJvbHNTY3JpcHQiX3MpOworICAgIFVSTCBzY3JpcHRVUkwgPSBVUkwoeyB9LCAibWVk
aWFDb250cm9sc1NjcmlwdCJfcyk7CiAjZWxzZQogICAgIFVSTCBzY3JpcHRVUkw7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFB1YmxpY1VSTE1hbmFnZXI6OnN0b3Ao
KQogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJ5IDogbV9y
ZWdpc3RyeVRvVVJMKSB7CiAgICAgICAgIGZvciAoYXV0byYgdXJsIDogcmVnaXN0cnkudmFsdWUp
Ci0gICAgICAgICAgICByZWdpc3RyeS5rZXktPnVucmVnaXN0ZXJVUkwoVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKSk7CisgICAgICAgICAgICByZWdpc3RyeS5rZXktPnVucmVnaXN0ZXJVUkwoVVJM
KHsgfSwgdXJsKSk7CiAgICAgfQogCiAgICAgbV9yZWdpc3RyeVRvVVJMLmNsZWFyKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MTcsNyArMTQxNyw3IEBAIGJvb2wg
SW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHlsZVMKIAogICAgIFN0cmluZyBlcnJvcjsK
ICAgICBib29sIGJhc2U2NEVuY29kZWQ7Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJj
ZUNvbnRlbnQoZXJyb3IsIG93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSwgVVJMKFBhcnNlZFVSTFN0
cmluZywgbV9wYWdlU3R5bGVTaGVldC0+aHJlZigpKSwgcmVzdWx0LCAmYmFzZTY0RW5jb2RlZCk7
CisgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoZXJyb3IsIG93bmVyRG9j
dW1lbnQoKS0+ZnJhbWUoKSwgVVJMKHsgfSwgbV9wYWdlU3R5bGVTaGVldC0+aHJlZigpKSwgcmVz
dWx0LCAmYmFzZTY0RW5jb2RlZCk7CiAgICAgcmV0dXJuIGVycm9yLmlzRW1wdHkoKSAmJiAhYmFz
ZTY0RW5jb2RlZDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAkocmV2aXNpb24gMjM2NjczKQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmdldENvb2tpZXMoRXJybwogCiAgICAgICAgIGZvciAoYXV0byYgdXJsIDogYWxsUmVzb3VyY2Vz
VVJMc0ZvckZyYW1lKGZyYW1lKSkgewogICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29v
a2llc0xpc3Q7Ci0gICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29r
aWVzKCpkb2N1bWVudCwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgZG9jQ29va2llc0xpc3Qp
OworICAgICAgICAgICAgcmF3Q29va2llc0ltcGxlbWVudGVkID0gZ2V0UmF3Q29va2llcygqZG9j
dW1lbnQsIFVSTCh7IH0sIHVybCksIGRvY0Nvb2tpZXNMaXN0KTsKIAogICAgICAgICAgICAgaWYg
KCFyYXdDb29raWVzSW1wbGVtZW50ZWQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
bmVlZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXByZXNlbnRhdGlvbiBv
ZiBjb29raWVzLgpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpn
ZXRDb29raWVzKEVycm8KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tpZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwp
CiB7Ci0gICAgVVJMIHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIHBh
cnNlZFVSTCh7IH0sIHVybCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKCpkb2N1bWVudCwgcGFyc2VkVVJMLCBjb29raWVOYW1l
KTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3Vy
Y2VDb250CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2VD
b250ZW50KGVycm9yU3RyaW5nLCBmcmFtZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgY29u
dGVudCwgYmFzZTY0RW5jb2RlZCk7CisgICAgcmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5nLCBm
cmFtZSwgVVJMKHsgfSwgdXJsKSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29s
KiBvcHRpb25hbElzUmVnZXgsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxSZXF1ZXN0SWQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNo
TWF0Y2g+PiYgcmVzdWx0cykKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2VhcmNoSW5SZXNvdXJjCiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFVSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwga3VybCh7IH0s
IHVybCk7CiAKICAgICBTdHJpbmcgY29udGVudDsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJB
Z2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBTdHJpbmcgUGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJj
ZU1hcFVSTEZvCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRU
UEhlYWRlckRlcHJlY2F0ZWQoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlgtU291cmNlTWFwIikp
OwogCiAgICAgaWYgKCFzY3JpcHQudXJsLmlzRW1wdHkoKSkgewotICAgICAgICBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UgPSBtX3BhZ2VBZ2VudC0+Y2FjaGVkUmVzb3VyY2UoJm1fcGFnZS5tYWlu
RnJhbWUoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgc2NyaXB0LnVybCkpOworICAgICAgICBDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3BhZ2VBZ2VudC0+Y2FjaGVkUmVzb3VyY2UoJm1fcGFn
ZS5tYWluRnJhbWUoKSwgVVJMKHsgfSwgc2NyaXB0LnVybCkpOwogICAgICAgICBpZiAocmVzb3Vy
Y2UpIHsKICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VNYXBIZWFkZXIgPSByZXNvdXJjZS0+cmVz
cG9uc2UoKS5odHRwSGVhZGVyRmllbGQoc291cmNlTWFwSFRUUEhlYWRlcik7CiAgICAgICAgICAg
ICBpZiAoIXNvdXJjZU1hcEhlYWRlci5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MTEsNyAr
MTQxMSw3IEBAIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4gRG9jdW1lbnRMb2EKIAogICAg
IFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4gc3VicmVzb3VyY2VzOwogICAgIGZvciAoYXV0
byYgaGFuZGxlIDogbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+YWxsQ2FjaGVkUmVzb3VyY2VzKCku
dmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSB0aGlzLT5zdWJyZXNv
dXJjZSh7IFBhcnNlZFVSTFN0cmluZywgaGFuZGxlLT51cmwoKSB9KSkKKyAgICAgICAgaWYgKGF1
dG8gc3VicmVzb3VyY2UgPSB0aGlzLT5zdWJyZXNvdXJjZSh7IHsgfSwgaGFuZGxlLT51cmwoKSB9
KSkKICAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQoc3VicmVzb3VyY2UucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgfQogICAgIHJldHVybiBzdWJyZXNvdXJjZXM7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw3ICsz
MDgsNyBAQCBGcmFtZUxvYWRlcjo6fkZyYW1lTG9hZGVyKCkKIHZvaWQgRnJhbWVMb2FkZXI6Omlu
aXQoKQogewogICAgIC8vIFRoaXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUg
ZnJhbWUgYW4gaW5pdGlhbCBlbXB0eSBkb2N1bWVudC4KLSAgICBzZXRQb2xpY3lEb2N1bWVudExv
YWRlcihtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKFBh
cnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5wdHIoKSk7
CisgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTCh7IH0sIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURh
dGEoKSkucHRyKCkpOwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lE
b2N1bWVudExvYWRlci5nZXQoKSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5z
dGFydExvYWRpbmdNYWluUmVzb3VyY2UoU2hvdWxkQ29udGludWU6Olllcyk7CiAKQEAgLTMyNSw3
ICszMjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1CiAgICAg
Ly8gRklYTUU6IFdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZG9jdW1lbnQgVVJMIHRvIHRoZSBz
cGVjaWZpZWQgVVJMLiBDdXJyZW50bHkgdGhlIFVSTCBpcyBlbXB0eSBhbmQgaGVuY2UKICAgICAv
LyBGcmFtZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQoKSB3aWxsIG92ZXJ3cml0ZSB0aGUgVVJMIG9m
IHRoZSBkb2N1bWVudCB0byBiZSBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5kb2N1bWVudFVSTCgp
LgogCi0gICAgYXV0byBsb2FkZXIgPSBtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNv
dXJjZVJlcXVlc3QoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJzdGl0
dXRlRGF0YSgpKTsKKyAgICBhdXRvIGxvYWRlciA9IG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9h
ZGVyKFJlc291cmNlUmVxdWVzdChVUkwoeyB9LCBlbXB0eVN0cmluZygpKSksIFN1YnN0aXR1dGVE
YXRhKCkpOwogICAgIGxvYWRlci0+YXR0YWNoVG9GcmFtZShtX2ZyYW1lKTsKICAgICBsb2FkZXIt
PnNldFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UoVVJMKCksICJ0ZXh0L2h0bWwiX3MsIDAsIFN0
cmluZygpKSk7CiAgICAgbG9hZGVyLT5zZXRDb21taXR0ZWQodHJ1ZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNjY3MykK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3Rh
dGUoUmVmUHRyCiAgICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhZGRWaXNpdGVkTGluaygqcGFnZSwgVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CisgICAgYWRkVmlzaXRlZExpbmsoKnBhZ2UsIFVSTCh7
IH0sIHVybFN0cmluZykpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkudXBkYXRlR2xv
YmFsSGlzdG9yeSgpOwogfQogCkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6cmVwbGFjZVN0YXRlKFJlZgogICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVt
ZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYWRkVmlzaXRlZExpbmsoKm1f
ZnJhbWUucGFnZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKKyAgICBhZGRW
aXNpdGVkTGluaygqbV9mcmFtZS5wYWdlKCksIFVSTCh7IH0sIHVybFN0cmluZykpOwogICAgIG1f
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkudXBkYXRlR2xvYmFsSGlzdG9yeSgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGUuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlOjphZGRSZXNvdXJjZShSZWY8QQogewogICAgIGF1dG8mIHVy
bCA9IHJlc291cmNlLT51cmwoKTsKIAotICAgIEFTU0VSVCghVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKCFVUkwoeyB9LCB1cmwp
Lmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQoIW1fcmVzb3VyY2VzLmNvbnRh
aW5zKHVybCkpOwogCiAgICAgaWYgKG1fc3RvcmFnZUlEKSB7CkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZTo6YWRkUmVzb3VyY2UoUmVmPEEKIAogQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKiBBcHBsaWNhdGlvbkNhY2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcm
IHVybCkKIHsKLSAgICBBU1NFUlQoIVVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuaGFzRnJhZ21l
bnRJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVCghVVJMKHsgfSwgdXJsKS5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSk7CiAgICAgcmV0dXJuIG1fcmVzb3VyY2VzLmdldCh1cmwpOwogfSAgICAKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OTYsNyArODk2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9h
ZGluZwogICAgIEFTU0VSVCghbV9tYW5pZmVzdExvYWRlcik7CiAgICAgQVNTRVJUKCFtX2VudHJ5
TG9hZGVyKTsKIAotICAgIGF1dG8gcmVxdWVzdCA9IGNyZWF0ZVJlcXVlc3QoVVJMIHsgUGFyc2Vk
VVJMU3RyaW5nLCBmaXJzdFBlbmRpbmdFbnRyeVVSTCB9LCBtX25ld2VzdENhY2hlID8gbV9uZXdl
c3RDYWNoZS0+cmVzb3VyY2VGb3JVUkwoZmlyc3RQZW5kaW5nRW50cnlVUkwpIDogbnVsbHB0cik7
CisgICAgYXV0byByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdChVUkwgeyB7IH0sIGZpcnN0UGVuZGlu
Z0VudHJ5VVJMIH0sIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5yZXNvdXJjZUZvclVS
TChmaXJzdFBlbmRpbmdFbnRyeVVSTCkgOiBudWxscHRyKTsKIAogICAgIG1fY3VycmVudFJlc291
cmNlSWRlbnRpZmllciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJ
ZGVudGlmaWVyKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVl
c3QobV9mcmFtZSwgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyLCBtX2ZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlIHsgfSk7CkBAIC05
MzcsNyArOTM3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRlbGl2ZXJEZWxheQog
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFkZEVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCB1
bnNpZ25lZCB0eXBlKQogewogICAgIEFTU0VSVChtX2NhY2hlQmVpbmdVcGRhdGVkKTsKLSAgICBB
U1NFUlQoIVVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkp
OworICAgIEFTU0VSVCghVVJMKHsgfSwgdXJsKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAK
ICAgICAvLyBEb24ndCBhZGQgdGhlIFVSTCBpZiB3ZSBhbHJlYWR5IGhhdmUgYW4gbWFzdGVyIHJl
c291cmNlIGluIHRoZSBjYWNoZQogICAgIC8vIChpLmUuLCB0aGUgbWFpbiByZXNvdXJjZSBmaW5p
c2hlZCBsb2FkaW5nIGJlZm9yZSB0aGUgbWFuaWZlc3QpLgpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNyArMjE4
LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIAogICAg
IGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBT
UUxJVEVfUk9XKSB7Ci0gICAgICAgIFVSTCBtYW5pZmVzdFVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsIHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgVVJMIG1hbmlmZXN0VVJM
ID0gVVJMKHsgfSwgc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOwogCiAgICAgICAgIGlmICht
X2NhY2hlc0luTWVtb3J5LmNvbnRhaW5zKG1hbmlmZXN0VVJMKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMjg1LDcgKzI4NSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRp
b25DYWNoZVMKICAgICAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gc3Rh
dGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBVUkwgbWFuaWZlc3RVUkwg
PSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7CisgICAg
ICAgIFVSTCBtYW5pZmVzdFVSTCA9IFVSTCh7IH0sIHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEp
KTsKIAogICAgICAgICBpZiAobV9jYWNoZXNJbk1lbW9yeS5jb250YWlucyhtYW5pZmVzdFVSTCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTExMDksNyArMTEwOSw3IEBAIFJlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2gKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hp
bGUgKChyZXN1bHQgPSBjYWNoZVN0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpIHsKLSAg
ICAgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRl
eHQoMCkpOworICAgICAgICBVUkwgdXJsKHsgfSwgY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4
dCgwKSk7CiAgICAgICAgIAogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRl
bWVudC5nZXRDb2x1bW5JbnQoMSk7CiAKQEAgLTExNjIsNyArMTE2Miw3IEBAIFJlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2gKICAgICAKICAgICBWZWN0b3I8VVJMPiB3aGl0
ZWxpc3Q7CiAgICAgd2hpbGUgKChyZXN1bHQgPSB3aGl0ZWxpc3RTdGF0ZW1lbnQuc3RlcCgpKSA9
PSBTUUxJVEVfUk9XKSAKLSAgICAgICAgd2hpdGVsaXN0LmFwcGVuZChVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB3aGl0ZWxpc3RTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOworICAgICAgICB3aGl0
ZWxpc3QuYXBwZW5kKFVSTCh7IH0sIHdoaXRlbGlzdFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDAp
KSk7CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBsb2FkIGNhY2hlIG9ubGluZSB3aGl0ZWxpc3QsIGVycm9yIFwiJXNcIiIsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAgUmVmUHRyPEFw
cGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaAogICAgIAogICAgIEZhbGxiYWNrVVJMVmVj
dG9yIGZhbGxiYWNrVVJMczsKICAgICB3aGlsZSAoKHJlc3VsdCA9IGZhbGxiYWNrU3RhdGVtZW50
LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgCi0gICAgICAgIGZhbGxiYWNrVVJMcy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoVVJMKFBhcnNlZFVSTFN0cmluZywgZmFsbGJhY2tTdGF0ZW1lbnQuZ2V0Q29s
dW1uVGV4dCgwKSksIFVSTChQYXJzZWRVUkxTdHJpbmcsIGZhbGxiYWNrU3RhdGVtZW50LmdldENv
bHVtblRleHQoMSkpKSk7CisgICAgICAgIGZhbGxiYWNrVVJMcy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIoVVJMKHsgfSwgZmFsbGJhY2tTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSksIFVSTCh7IH0s
IGZhbGxiYWNrU3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpKSk7CiAKICAgICBpZiAocmVzdWx0
ICE9IFNRTElURV9ET05FKQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGZhbGxi
YWNrIFVSTHMsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpAQCAt
MTMyMyw3ICsxMzIzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8VVJMPj4gQXBwbGljYXRpb25D
YQogCiAgICAgVmVjdG9yPFVSTD4gdXJsczsKICAgICB3aGlsZSAoc2VsZWN0VVJMcy5zdGVwKCkg
PT0gU1FMSVRFX1JPVykKLSAgICAgICAgdXJscy5hcHBlbmQoVVJMKFBhcnNlZFVSTFN0cmluZywg
c2VsZWN0VVJMcy5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgICAgIHVybHMuYXBwZW5kKFVSTCh7
IH0sIHNlbGVjdFVSTHMuZ2V0Q29sdW1uVGV4dCgwKSkpOwogCiAgICAgcmV0dXJuIFdURk1vdmUo
dXJscyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3Miw3ICs0NzIsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2CiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBh
IFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3Bv
bnNlVVJMLmlzTnVsbCgpKQotICAgICAgICByZXNwb25zZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXNwb25zZVVSTCA9IFVSTCh7IH0sIGVtcHR5
U3RyaW5nKCkpOwogCiAgICAgYXV0byBtYWluUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNy
ZWF0ZSh1dGY4QnVmZmVyKG1hcmt1cFN0cmluZyksIHJlc3BvbnNlVVJMLCByZXNwb25zZS5taW1l
VHlwZSgpLCAiVVRGLTgiLCBmcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDIz
NjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI0Nyw3ICsyMjQ3LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEZyYW1lPj4gRE9NV2lu
ZG93OjpjcgogICAgIGlmICghYWN0aXZlRG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBSZWZQdHI8
RnJhbWU+IHsgbnVsbHB0ciB9OwogCi0gICAgVVJMIGNvbXBsZXRlZFVSTCA9IHVybFN0cmluZy5p
c0VtcHR5KCkgPyBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSA6IGZpcnN0RnJh
bWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKKyAgICBVUkwgY29tcGxldGVk
VVJMID0gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCh7IH0sIGVtcHR5U3RyaW5nKCkpIDogZmly
c3RGcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogICAgIGlmICghY29t
cGxldGVkVVJMLmlzRW1wdHkoKSAmJiAhY29tcGxldGVkVVJMLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3
IEBAIFVSTCBQYWdlU2VyaWFsaXplcjo6dXJsRm9yQmxhbmtGcmFtZShGcmEKICAgICBpZiAoaXRl
ciAhPSBtX2JsYW5rRnJhbWVVUkxzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7
CiAgICAgU3RyaW5nIHVybCA9ICJ3eWNpd3lnOi8vZnJhbWUvIiArIFN0cmluZzo6bnVtYmVyKG1f
YmxhbmtGcmFtZUNvdW50ZXIrKyk7Ci0gICAgVVJMIGZha2VVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwpOworICAgIFVSTCBmYWtlVVJMKHsgfSwgdXJsKTsKICAgICBtX2JsYW5rRnJhbWVVUkxzLmFk
ZChmcmFtZSwgZmFrZVVSTCk7CiAgICAgcmV0dXJuIGZha2VVUkw7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5jcHAJKHJldmlzaW9uIDIzNjY3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDE5ICs4OCw2IEBAIHZvaWQgVVJMOjpp
bnZhbGlkYXRlKCkKICAgICBtX3F1ZXJ5RW5kID0gMDsKIH0KIAotVVJMOjpVUkwoUGFyc2VkVVJM
U3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBVUkxQYXJzZXIgcGFyc2VyKHVy
bCk7Ci0gICAgKnRoaXMgPSBwYXJzZXIucmVzdWx0KCk7Ci0KLSNpZiBPUyhXSU5ET1dTKQotICAg
IC8vIEZJWE1FKDE0ODU5OCk6IFdvcmsgYXJvdW5kIFdpbmRvd3MgbG9jYWwgZmlsZSBoYW5kbGlu
ZyBidWcgaW4gQ0ZOZXR3b3JrCi0gICAgQVNTRVJUKGlzTG9jYWxGaWxlKCkgfHwgdXJsID09IG1f
c3RyaW5nKTsKLSNlbHNlCi0gICAgQVNTRVJUKHVybCA9PSBtX3N0cmluZyk7Ci0jZW5kaWYKLX0K
LQogVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25z
dCBVUkxUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQogewogICAgIFVSTFBhcnNlciBwYXJzZXIocmVs
YXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKQEAgLTkxMCw3ICs4OTcsNyBAQCBib29sIHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nCiAKIGNvbnN0IFVSTCYgYmxhbmtVUkwoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFBhcnNlZFVSTFN0
cmluZywgImFib3V0OmJsYW5rIik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTD4gc3Rh
dGljQmxhbmtVUkwoVVJMKCksICJhYm91dDpibGFuayIpOwogICAgIHJldHVybiBzdGF0aWNCbGFu
a1VSTDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgJKHJldmlzaW9uIDIzNjY3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNyAr
NTUsMTEgQEAgcHVibGljOgogCiBzdHJ1Y3QgVVJMSGFzaDsKIAotZW51bSBQYXJzZWRVUkxTdHJp
bmdUYWcgeyBQYXJzZWRVUkxTdHJpbmcgfTsKLQogY2xhc3MgVVJMIHsKIHB1YmxpYzoKICAgICAv
LyBHZW5lcmF0ZXMgYSBVUkwgd2hpY2ggY29udGFpbnMgYSBudWxsIHN0cmluZy4KICAgICBVUkwo
KSB7IGludmFsaWRhdGUoKTsgfQogCi0gICAgLy8gVGhlIGFyZ3VtZW50IGlzIGFuIGFic29sdXRl
IFVSTCBzdHJpbmcuIFRoZSBzdHJpbmcgaXMgYXNzdW1lZCB0byBiZSBvdXRwdXQgb2YgVVJMOjpz
dHJpbmcoKSBjYWxsZWQgb24gYSB2YWxpZAotICAgIC8vIFVSTCBvYmplY3QsIG9yIGluZGlzY2Vy
bmlibGUgZnJvbSBzdWNoLgotICAgIC8vIEl0IGlzIHVzdWFsbHkgYmVzdCB0byBhdm9pZCByZXBl
YXRlZGx5IHBhcnNpbmcgYSBzdHJpbmcsIHVubGVzcyBtZW1vcnkgc2F2aW5nIG91dHdlaWdoIHRo
ZSBwb3NzaWJsZSBzbG93LWRvd25zLgotICAgIFdFQkNPUkVfRVhQT1JUIFVSTChQYXJzZWRVUkxT
dHJpbmdUYWcsIGNvbnN0IFN0cmluZyYpOwogICAgIGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
IHsgfQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBz
dHJpbmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCShyZXZp
c2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjps
b2EKICAgICBzZXROZXR3b3JrU3RhdGUobV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpOb25lID8g
TWVkaWFQbGF5ZXI6OklkbGUgOiBNZWRpYVBsYXllcjo6TG9hZGluZyk7CiAgICAgc2V0UmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpOwogCi0gICAgbV9hc3NldFVSTCA9IFVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgbV9hc3NldFVSTCA9IFVSTCh7IH0sIHVybCk7CiAg
ICAgbV9yZXF1ZXN0ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fYXNzZXRVUkwp
OwogCiAgICAgLy8gRG9uJ3QgZG8gYW55IG1vcmUgd29yayBpZiB0aGUgdXJsIGlzIGVtcHR5LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyAr
MjUxLDcgQEAgYm9vbCBCbG9iUmVnaXN0cnlJbXBsOjpwb3B1bGF0ZUJsb2JzRm9yRgogICAgICAg
ICBibG9ic0ZvcldyaXRpbmcuYXBwZW5kKHsgfSk7CiAgICAgICAgIGJsb2JzRm9yV3JpdGluZy5s
YXN0KCkuYmxvYlVSTCA9IHVybC5pc29sYXRlZENvcHkoKTsKIAotICAgICAgICBhdXRvKiBibG9i
RGF0YSA9IGdldEJsb2JEYXRhRnJvbVVSTCh7IFBhcnNlZFVSTFN0cmluZywgdXJsIH0pOworICAg
ICAgICBhdXRvKiBibG9iRGF0YSA9IGdldEJsb2JEYXRhRnJvbVVSTCh7IHsgfSwgdXJsIH0pOwog
ICAgICAgICBpZiAoIWJsb2JEYXRhKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuaAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICsz
MDQsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6CiAgICAgU3Ry
aW5nIGZpcnN0UGFydHlGb3JDb29raWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlyc3RQ
YXJ0eUZvckNvb2tpZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9maXJzdFBhcnR5
Rm9yQ29va2llcyA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGZpcnN0UGFydHlGb3JDb29raWVzKTsK
KyAgICBtX2ZpcnN0UGFydHlGb3JDb29raWVzID0gVVJMKHsgfSwgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtX2h0dHBNZXRob2QpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBAQCBTdHJpbmcgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnNhbml0aXplU3VnCiAgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHN1Z2dlc3RlZEZpbGVuYW1lOwogCi0gICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZShVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLCBT
dHJpbmcoKSwgLTEsIFN0cmluZygpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVS
TCh7IH0sICJodHRwOi8vZXhhbXBsZS5jb20vIiksIFN0cmluZygpLCAtMSwgU3RyaW5nKCkpOwog
ICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CiAgICAgU3RyaW5nIGVzY2FwZWRT
dWdnZXN0ZWRGaWxlbmFtZSA9IFN0cmluZyhzdWdnZXN0ZWRGaWxlbmFtZSkucmVwbGFjZSgnXFwn
LCAiXFxcXCIpLnJlcGxhY2UoJyInLCAiXFxcIiIpOwogICAgIFN0cmluZyB2YWx1ZSA9IG1ha2VT
dHJpbmcoImF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiwgZXNjYXBlZFN1Z2dlc3RlZEZpbGVuYW1l
LCAnIicpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNSZXNv
bHZlUXVldWVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNSZXNvbHZlUXVldWVDRk5ldC5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw4IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVl
Q0ZOZXQ6OnVwZGF0ZUlzVXNpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0
cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNy
ZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoeyB9
LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBodHRwc0NGVVJMID0gVVJMKHsgfSwgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3Jl
YXRlQ0ZVUkwoKTsKIAogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9
IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94
eVNldHRpbmdzLmdldCgpKSk7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlB
cnJheSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQo
KSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAyMzY2NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKIHB1Ymxp
YzoKICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpIAotICAgICAgICA6IFJl
c291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZShVUkwoeyB9LCB1cmwpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6
VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAJKHJl
dmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIENv
b2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFN0CiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8
fCAhbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVVJM
IHJlcXVlc3RVcmxPYmooUGFyc2VkVVJMU3RyaW5nLCByZXF1ZXN0VXJsKTsKKyAgICBVUkwgcmVx
dWVzdFVybE9iaih7IH0sIHJlcXVlc3RVcmwpOwogICAgIFN0cmluZyByZXF1ZXN0SG9zdChyZXF1
ZXN0VXJsT2JqLmhvc3QoKS50b1N0cmluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwog
ICAgIFN0cmluZyByZXF1ZXN0UGF0aChyZXF1ZXN0VXJsT2JqLnBhdGgoKS5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpKTsKIApAQCAtNDU0LDcgKzQ1NCw3IEBAIGludCBDb29raWVKYXJEQjo6c2V0
Q29va2llKGNvbnN0IFN0cmluZyYKICAgICBpZiAodXJsLmlzRW1wdHkoKSB8fCBjb29raWUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBVUkwgdXJsT2JqKFBhcnNlZFVSTFN0
cmluZywgdXJsKTsKKyAgICBVUkwgdXJsT2JqKHsgfSwgdXJsKTsKICAgICBTdHJpbmcgaG9zdCh1
cmxPYmouaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgIFN0cmluZyBwYXRoKHVybE9iai5wYXRoKCkp
OwogCkBAIC00ODgsNyArNDg4LDcgQEAgaW50IENvb2tpZUphckRCOjpkZWxldGVDb29raWUoY29u
c3QgU3RyaQogICAgIGlmICh1cmxDb3BpZWQuc3RhcnRzV2l0aCgnLicpKQogICAgICAgICB1cmxD
b3BpZWQucmVtb3ZlKDAsIDEpOwogCi0gICAgVVJMIHVybE9iaihQYXJzZWRVUkxTdHJpbmcsIHVy
bENvcGllZCk7CisgICAgVVJMIHVybE9iaih7IH0sIHVybENvcGllZCk7CiAgICAgaWYgKHVybE9i
ai5pc1ZhbGlkKCkpIHsKICAgICAgICAgU3RyaW5nIGhvc3RTdHIodXJsT2JqLmhvc3QoKS50b1N0
cmluZygpKTsKICAgICAgICAgU3RyaW5nIHBhdGhTdHIodXJsT2JqLnBhdGgoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
UmVxdWVzdC5oCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGlj
IFJlc291cmNlUmVxdWVzdEJhc2UgewogcHVibGljOgogICAgIFJlc291cmNlUmVxdWVzdChjb25z
dCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRV
UkxTdHJpbmcsIHVybCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAg
ewogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3QgOiBwdWJsaWMgUmVzb3VyY2VSZXF1ZXN0QmFzZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgICAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgUmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwgUmVzb3VyY2VSZXF1ZXN0Q2Fj
aGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0
RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291
cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQpJ
bmRleDogU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCShyZXZp
c2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHhtbERvY1B0ciBk
b2NMb2FkZXJGdW5jKGNvbnN0IHhtbAogICAgIGNhc2UgWFNMVF9MT0FEX0RPQ1VNRU5UOiB7CiAg
ICAgICAgIHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyIGNvbnRleHQgPSAoeHNsdFRyYW5zZm9ybUNv
bnRleHRQdHIpY3R4dDsKICAgICAgICAgeG1sQ2hhciogYmFzZSA9IHhtbE5vZGVHZXRCYXNlKGNv
bnRleHQtPmRvY3VtZW50LT5kb2MsIGNvbnRleHQtPm5vZGUpOwotICAgICAgICBVUkwgdXJsKFVS
TChQYXJzZWRVUkxTdHJpbmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2UpKSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSk7CisgICAgICAgIFVSTCB1cmwoVVJM
KHsgfSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSkpLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPih1cmkpKTsKICAgICAgICAgeG1sRnJlZShiYXNlKTsKICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzY2ODcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE4LTEwLTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFBhcnNl
ZFVSTFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkwMTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJv
eHk6OnN0cmVhbVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg6CisgICAgICAg
IChBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1VSTCBjb25zdCk6CisgICAgICAg
ICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNJblNhbWVEb2N1bWVudCBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
OjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOjp0YXJnZXRMaXN0Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdp
bnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc1Byb3h5OjpvcGVuVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5k
ZWRQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjphZGRQcm9jZXNzVG9PcmlnaW5DYWNoZVNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlT3JGYWlsZWRUb0xhdW5jaCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5TWFjOjpjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlOjpyZW1vdmVVc2VyU3R5bGVTaGVldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6UGFyYW1ldGVyczo6ZGVj
b2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBh
c3RlYm9hcmQpOgorCiAyMDE4LTEwLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IGludGVybmFsIGJ1aWxkIGFmdGVyIHIyMzY2NjUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndyaXQKIHsKICAgICBWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmls
ZVJlZmVyZW5jZT4+IGZpbGVSZWZlcmVuY2VzOwogICAgIGZvciAoYXV0byYgdXJsIDogYmxvYlVS
THMpCi0gICAgICAgIGZpbGVSZWZlcmVuY2VzLmFwcGVuZFZlY3RvcihOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpzaW5nbGV0b24oKS5maWxlc0luQmxvYigqdGhpcywgeyBQYXJzZWRVUkxTdHJpbmcsIHVy
bCB9KSk7CisgICAgICAgIGZpbGVSZWZlcmVuY2VzLmFwcGVuZFZlY3RvcihOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpzaW5nbGV0b24oKS5maWxlc0luQmxvYigqdGhpcywgeyB7IH0sIHVybCB9KSk7CiAK
ICAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlUmVmZXJlbmNlcykKICAgICAgICAgZmlsZS0+cHJl
cGFyZUZvckZpbGVBY2Nlc3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAJKHJldmlz
aW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZv
aWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6d3JpdGVCbG9iVG9GaWwKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gYmxvYkZpbGVzID0gZmlsZXNJbkJsb2IoeyBQYXJzZWRVUkxTdHJp
bmcsIGJsb2JVUkwgfSk7CisgICAgYXV0byBibG9iRmlsZXMgPSBmaWxlc0luQmxvYih7IHsgfSwg
YmxvYlVSTCB9KTsKICAgICBmb3IgKGF1dG8mIGZpbGUgOiBibG9iRmlsZXMpCiAgICAgICAgIGZp
bGUtPnByZXBhcmVGb3JGaWxlQWNjZXNzKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCShyZXZpc2lvbiAy
MzY2NzMpCisrKyBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcwLDEyICs0NzAsMTIgQEAgdm9pZCBQbHVnaW5D
b250cm9sbGVyUHJveHk6OmRpZEV2YWx1YXRlSgogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6c3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3RSZXNwb25zZVVSTFN0cmlu
ZywgdWludDMyX3QgcmVkaXJlY3RSZXNwb25zZVN0YXR1c0NvZGUpCiB7Ci0gICAgbV9wbHVnaW4t
PnN0cmVhbVdpbGxTZW5kUmVxdWVzdChzdHJlYW1JRCwgVVJMKFBhcnNlZFVSTFN0cmluZywgcmVx
dWVzdFVSTFN0cmluZyksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlZGlyZWN0UmVzcG9uc2VVUkxT
dHJpbmcpLCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzQ29kZSk7CisgICAgbV9wbHVnaW4tPnN0cmVh
bVdpbGxTZW5kUmVxdWVzdChzdHJlYW1JRCwgVVJMKHsgfSwgcmVxdWVzdFVSTFN0cmluZyksIFVS
TCh7IH0sIHJlZGlyZWN0UmVzcG9uc2VVUkxTdHJpbmcpLCByZWRpcmVjdFJlc3BvbnNlU3RhdHVz
Q29kZSk7CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVUkxTdHJp
bmcsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKQogewotICAgIG1fcGx1
Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uoc3RyZWFtSUQsIFVSTChQYXJzZWRVUkxTdHJp
bmcsIHJlc3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBt
aW1lVHlwZSwgaGVhZGVycywgU3RyaW5nKCkpOworICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2Uoc3RyZWFtSUQsIFVSTCh7IH0sIHJlc3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFt
TGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycywgU3RyaW5nKCkpOwog
fQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAgLTQ5OCw3
ICs0OTgsNyBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtCiAgICAg
aWYgKG1fcGx1Z2luQ2FuY2VsZWRNYW51YWxTdHJlYW1Mb2FkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKFVSTChQYXJzZWRV
UkxTdHJpbmcsIHJlc3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRU
aW1lLCBtaW1lVHlwZSwgaGVhZGVycywgU3RyaW5nKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoVVJMKHsgfSwgcmVzcG9uc2VVUkxTdHJpbmcpLCBzdHJl
YW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzLCBTdHJpbmcoKSk7
CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAkocmV2aXNpb24gMjM2Njcz
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNCw4ICsxMDQsOCBAQCBib29sIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW06Oml0ZW1Jc0luU2FtCiAgICAgaWYgKG1haW5GcmFtZVN0YXRlLnN0YXRlT2JqZWN0RGF0YSB8
fCBvdGhlck1haW5GcmFtZVN0YXRlLnN0YXRlT2JqZWN0RGF0YSkKICAgICAgICAgcmV0dXJuIG1h
aW5GcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIgPT0gb3RoZXJNYWluRnJhbWVTdGF0
ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyOwogCi0gICAgV2ViQ29yZTo6VVJMIHVybCA9IFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIG1haW5GcmFtZVN0YXRlLnVybFN0cmlu
Zyk7Ci0gICAgV2ViQ29yZTo6VVJMIG90aGVyVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlBh
cnNlZFVSTFN0cmluZywgb3RoZXJNYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOworICAgIFdlYkNv
cmU6OlVSTCB1cmwgPSBXZWJDb3JlOjpVUkwoeyB9LCBtYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcp
OworICAgIFdlYkNvcmU6OlVSTCBvdGhlclVSTCA9IFdlYkNvcmU6OlVSTCh7IH0sIG90aGVyTWFp
bkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKIAogICAgIGlmICgodXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpIHx8IG90aGVyVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSAmJiBlcXVhbElnbm9y
aW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgb3RoZXJVUkwpKQogICAgICAgICByZXR1cm4gbWFp
bkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlciA9PSBvdGhlck1haW5GcmFtZVN0YXRl
LmRvY3VtZW50U2VxdWVuY2VOdW1iZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCShyZXZpc2lvbiAyMzY2NzMpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSVVzZXJDb250ZW50VVJMUGF0dGVybl9oCi0jZGVm
aW5lIEFQSVVzZXJDb250ZW50VVJMUGF0dGVybl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogCkBAIC00Myw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXVEY6
OlN0cmluZyYgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5ob3N0KCk7IH0KICAgICBj
b25zdCBXVEY6OlN0cmluZyYgc2NoZW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLnNjaGVt
ZSgpOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmlzVmFs
aWQoKTsgfTsKLSAgICBib29sIG1hdGNoZXNVUkwoY29uc3QgV1RGOjpTdHJpbmcmIHVybCkgY29u
c3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNoZXMoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlBhcnNl
ZFVSTFN0cmluZywgdXJsKSk7IH0KKyAgICBib29sIG1hdGNoZXNVUkwoY29uc3QgV1RGOjpTdHJp
bmcmIHVybCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNoZXMoV2ViQ29yZTo6VVJMKHsg
fSwgdXJsKSk7IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4g
bV9wYXR0ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYg
cGF0dGVyblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblN0cmluZzsgfQpAQCAtNjAs
NSArNTksMyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM2Njcz
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0
cmluZ1JlZmVyZW5jCiBTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYgaXRlbSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9wcm9jZXNz
KFdURk1vdmUocHJvY2VzcykpCi0gICAgLCBtX29yaWdpbihTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21VUkwoeyBQYXJzZWRVUkxTdHJpbmcsIGl0ZW0udXJsKCkgfSkpCisgICAgLCBtX29yaWdpbihT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoeyB7IH0sIGl0ZW0udXJsKCkgfSkpCiB7CiAgICAg
aXRlbS5zZXRTdXNwZW5kZWRQYWdlKCp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkucmVnaXN0ZXJTdXNwZW5kZWRQYWdlUHJveHkoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI0
LDcgKzEwMjQsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvCiAK
ICAgICBVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7CiAgICAgaWYgKHJlc291cmNlRGlyZWN0b3J5
VVJMU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChQ
YXJzZWRVUkxTdHJpbmcsICJmaWxlOi8vLyJfcyk7CisgICAgICAgIHJlc291cmNlRGlyZWN0b3J5
VVJMID0gVVJMKHsgfSwgImZpbGU6Ly8vIl9zKTsKICAgICBlbHNlIHsKICAgICAgICAgcmVzb3Vy
Y2VEaXJlY3RvcnlVUkwgPSBVUkwoVVJMKCksIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nKTsK
ICAgICAgICAgaWYgKCFyZXNvdXJjZURpcmVjdG9yeVVSTC5pc0xvY2FsRmlsZSgpKQpAQCAtNDA5
Niw3ICs0MDk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQog
ICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8gbV9wcm9jZXNzLT53ZWJQ
YWdlKG9yaWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHIpOwogCiAgICAgICAgIGF1dG8gdXNlcklu
aXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdh
dGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgICAgICBib29s
IHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24gJiYgZGVzdGluYXRpb25GcmFtZUluZm8tPmlzTWFpbkZyYW1l
KCkgJiYgIWhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVSTFN0cmluZywgbV9tYWluRnJhbWUtPnVy
bCgpKSwgcmVxdWVzdC51cmwoKSkgJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5
cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOworICAgICAgICBib29s
IHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24gJiYgZGVzdGluYXRpb25GcmFtZUluZm8tPmlzTWFpbkZyYW1l
KCkgJiYgIWhvc3RzQXJlRXF1YWwoVVJMKHsgfSwgbV9tYWluRnJhbWUtPnVybCgpKSwgcmVxdWVz
dC51cmwoKSkgJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgIT0gV2ViQ29y
ZTo6TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOwogCiAgICAgICAgIGF1dG8gbmF2aWdhdGlv
bkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIGRlc3RpbmF0aW9uRnJhbWVJbmZv
LnB0cigpLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIG9yaWdpbmFsUmVxdWVzdC51
cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSks
IG1haW5GcmFtZU5hdmlnYXRpb24pOwogCkBAIC00MTUzLDcgKzQxNTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAgICAgICAgICAgICBzb3VyY2VGcmFtZUlu
Zm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpmcmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9
IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVz
ZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MgPSAhaG9zdHNBcmVFcXVhbChVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX21haW5GcmFtZS0+dXJs
KCkpLCByZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAh
aG9zdHNBcmVFcXVhbChVUkwoeyB9LCBtX21haW5GcmFtZS0+dXJsKCkpLCByZXF1ZXN0LnVybCgp
KTsKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9u
OjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5n
ZXQoKSwgbnVsbHB0ciwgZnJhbWVOYW1lLCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwgeyB9LCBzaG91
bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICAg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0
aGlzLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNz
LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CkBA
IC00MzA3LDcgKzQzMDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25z
dCBGCiAgICAgICAgIHJlcGx5KG5ld1BhZ2UtPnBhZ2VJRCgpLCBuZXdQYWdlLT5jcmVhdGlvblBh
cmFtZXRlcnMoKSk7CiAKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6Y2xvbmVTZXNzaW9uRGF0
YSgqdGhpcywgKm5ld1BhZ2UpOwotICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBw
TGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBob3N0c0FyZUVxdWFsKFVSTChQ
YXJzZWRVUkxTdHJpbmcsIG1haW5GcmFtZVVSTCksIHJlcXVlc3QudXJsKCkpOworICAgICAgICBu
ZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24gPSBob3N0c0FyZUVxdWFsKFVSTCh7IH0sIG1haW5GcmFtZVVSTCksIHJlcXVlc3QudXJs
KCkpOwogICAgIH0pOwogfQogICAgIApAQCAtNTkyNyw3ICs1OTI3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoUAogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlm
IChtX3Byb2Nlc3MtPmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpKSB7Ci0gICAgICAgIFN0cmluZyBk
b21haW4gPSBXZWJDb3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIGN1cnJlbnRVUkwoKSkuaG9zdCgpLnRvU3RyaW5n
KCkpOworICAgICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbihXZWJDb3JlOjpVUkwoeyB9LCBjdXJyZW50VVJMKCkpLmhvc3QoKS50b1N0cmlu
ZygpKTsKICAgICAgICAgaWYgKCFkb21haW4uaXNFbXB0eSgpKQogICAgICAgICAgICAgbG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dn
aW5nS2V5czo6ZG9tYWluQ2F1c2luZ0pldHNhbUtleSgpLCBkb21haW4sIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZTo6Tm8pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4OCw3ICsyMDg4LDcg
QEAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1BvbwogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjphZGRQcm9jZXNzVG9PcmlnaW5DYWNoZVNldChXZWJQYWdlUHJveHkmIHBhZ2Up
CiB7Ci0gICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHRvUmVnaXN0cmFibGVEb21haW4oeyBQ
YXJzZWRVUkxTdHJpbmcsIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpIH0pOworICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW4gPSB0b1JlZ2lzdHJhYmxlRG9tYWluKHsgeyB9LCBwYWdlLnBhZ2VM
b2FkU3RhdGUoKS51cmwoKSB9KTsKICAgICBhdXRvIHJlc3VsdCA9IG1fc3dhcHBlZFByb2Nlc3Nl
c1BlclJlZ2lzdHJhYmxlRG9tYWluLmFkZChyZWdpc3RyYWJsZURvbWFpbiwgJnBhZ2UucHJvY2Vz
cygpKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gJnBhZ2UucHJvY2VzcygpOwpAQCAtMjIwMiw3ICsyMjAyLDcgQEAgUmVmPFdl
YlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnBybwogICAgICAgICBpZiAoaXNJbml0aWFs
TG9hZEluTmV3V2luZG93T3BlbmVkQnlET00gJiYgIW5hdmlnYXRpb24ucmVxdWVzdGVyT3JpZ2lu
KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgdXJsID0gVVJMIHsgVVJMKCksIG5hdmlnYXRpb24u
cmVxdWVzdGVyT3JpZ2luKCkudG9TdHJpbmcoKSB9OwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB1cmwgPSBVUkwgeyBQYXJzZWRVUkxTdHJpbmcsIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgp
IH07CisgICAgICAgICAgICB1cmwgPSBVUkwgeyB7IH0sIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVy
bCgpIH07CiAgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdGFyZ2V0VVJMLmlzVmFsaWQo
KSB8fCB1cmwuaXNFbXB0eSgpIHx8IHVybC5pc0JsYW5rVVJMKCkgfHwgcmVnaXN0cmFibGVEb21h
aW5zQXJlRXF1YWwodXJsLCB0YXJnZXRVUkwpKSB7CiAgICAgICAgICAgICByZWFzb24gPSAiTmF2
aWdhdGlvbiBpcyBzYW1lLXNpdGUiX3M7CiAgICAgICAgICAgICByZXR1cm4gcGFnZS5wcm9jZXNz
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJ
KHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0CiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElT
VCkKICAgICBpZiAocGFnZXMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgYXV0byYgcGFnZSA9ICpw
YWdlc1swXTsKLSAgICAgICAgU3RyaW5nIGRvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW4oV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgcGFnZS5jdXJyZW50
VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFpbiA9IHRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW4oV2ViQ29yZTo6VVJMKHsgfSwgcGFnZS5jdXJyZW50VVJM
KCkpLmhvc3QoKS50b1N0cmluZygpKTsKICAgICAgICAgaWYgKCFkb21haW4uaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcGFnZS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhFbmhhbmNlZFByaXZhY3ko
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpkb21haW5DYXVzaW5nQ3Jhc2hLZXkoKSwg
ZG9tYWluLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMzY2NzMp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVi
bGljOgogICAgICAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAyKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgcGFnZS5w
YWdlTG9hZFN0YXRlKCkudXJsKCkpOworICAgICAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTCh7IH0s
IHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIHRva2Vuc1swXS50b1VJ
bnQ2NCgpLCB0b2tlbnNbMV0udG9VSW50NjQoKSk7CiAgICAgfQogCkBAIC04OCw3ICs4OCw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp1c2UKIAogdm9pZCBSZW1vdGVJ
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCogcmVxdWVzdCkKIHsKLSAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSk7CisgICAgVVJM
IHJlcXVlc3RVUkwgPSBVUkwoeyB9LCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmko
cmVxdWVzdCkpOwogICAgIGlmICghcmVxdWVzdFVSTC5wb3J0KCkpIHsKICAgICAgICAgR1VuaXF1
ZVB0cjxHRXJyb3I+IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoV0VCS0lUX1BPTElDWV9FUlJP
UiwgV0VCS0lUX1BPTElDWV9FUlJPUl9DQU5OT1RfU0hPV19VUkksICJDYW5ub3Qgc2hvdyBpbnNw
ZWN0b3IgVVJMOiBubyBwb3J0IHByb3ZpZGVkIikpOwogICAgICAgICB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihyZXF1ZXN0LCBlcnJvci5nZXQoKSk7CkBAIC0xNjUsNyAr
MTY1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnRhcgogICAgICAg
ICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcs
IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKKyAgICAgICAgVVJMIHdlYlZpZXdV
UkwgPSBVUkwoeyB9LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CiAgICAgICAg
IGF1dG8gY2xpZW50Rm9yV2ViVmlldyA9IG1faW5zcGVjdG9yQ2xpZW50cy5nZXQod2ViVmlld1VS
TC5ob3N0QW5kUG9ydCgpKTsKICAgICAgICAgaWYgKCFjbGllbnRGb3JXZWJWaWV3KSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIHZpZXcgaXMgbm90IHNob3dpbmcgYSBpbnNwZWN0b3IgdmlldyBhbnlt
b3JlLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJv
Y2Vzc1Byb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQkocmV2aXNpb24gMjM2NjczKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNz
UHJveHk6Om9wZW5VUkwoY29uc3QgUwogCiAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICBDRlVSTFJl
ZiBsYXVuY2hlZFVSTDsKLSAgICBzdGF0dXMgPSBMU09wZW5DRlVSTFJlZihVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkuZ2V0KCksICZsYXVuY2hlZFVSTCk7Cisg
ICAgc3RhdHVzID0gTFNPcGVuQ0ZVUkxSZWYoVVJMKHsgfSwgdXJsU3RyaW5nKS5jcmVhdGVDRlVS
TCgpLmdldCgpLCAmbGF1bmNoZWRVUkwpOwogCiAgICAgaWYgKGxhdW5jaGVkVVJMKSB7CiAgICAg
ICAgIGxhdW5jaGVkVVJMU3RyaW5nID0gVVJMKGxhdW5jaGVkVVJMKS5zdHJpbmcoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVBy
b3h5TWFjLm1tCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcwLDEzICsy
NzAsMTMgQEAgUmV0YWluUHRyPE5TTWVudUl0ZW0+IFdlYkNvbnRleHRNZW51UHJveAogICAgIGF1
dG8gaXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIAogICAg
IGlmICghaGl0VGVzdERhdGEuYWJzb2x1dGVMaW5rVVJMLmlzRW1wdHkoKSkgewotICAgICAgICBh
dXRvIGFic29sdXRlTGlua1VSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGhpdFRlc3REYXRhLmFi
c29sdXRlTGlua1VSTCk7CisgICAgICAgIGF1dG8gYWJzb2x1dGVMaW5rVVJMID0gVVJMKHsgfSwg
aGl0VGVzdERhdGEuYWJzb2x1dGVMaW5rVVJMKTsKICAgICAgICAgaWYgKCFhYnNvbHV0ZUxpbmtV
UkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDooTlNVUkwgKilhYnNv
bHV0ZUxpbmtVUkxdOwogICAgIH0KIAogICAgIGlmIChoaXRUZXN0RGF0YS5pc0Rvd25sb2FkYWJs
ZU1lZGlhICYmICFoaXRUZXN0RGF0YS5hYnNvbHV0ZU1lZGlhVVJMLmlzRW1wdHkoKSkgewotICAg
ICAgICBhdXRvIGRvd25sb2FkYWJsZU1lZGlhVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgaGl0
VGVzdERhdGEuYWJzb2x1dGVNZWRpYVVSTCk7CisgICAgICAgIGF1dG8gZG93bmxvYWRhYmxlTWVk
aWFVUkwgPSBVUkwoeyB9LCBoaXRUZXN0RGF0YS5hYnNvbHV0ZU1lZGlhVVJMKTsKICAgICAgICAg
aWYgKCFkb3dubG9hZGFibGVNZWRpYVVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBbaXRlbXMg
YWRkT2JqZWN0OihOU1VSTCAqKWRvd25sb2FkYWJsZU1lZGlhVVJMXTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2Myw3ICs0NjMsNiBAQCBib29sIEluamVjdGVkQnVuZGxlOjppc1Byb2Nlc3NpbmdVc2Vy
R2VzCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJv
eHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIFN0
cmluZyYmIHNvdXJjZSwgU3RyaW5nJiYgdXJsLCBBUEk6OkFycmF5KiB3aGl0ZWxpc3QsIEFQSTo6
QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0
aW9uVGltZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1l
cykKIHsKLSAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMg
bm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVs
YXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3Ry
aW5nVGFnIHZlcnNpb24uCiAgICAgVXNlclNjcmlwdCB1c2VyU2NyaXB0IHsgV1RGTW92ZShzb3Vy
Y2UpLCBVUkwoVVJMKCksIHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdWZWN0
b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJpbmdW
ZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVz
IH07CiAKICAgICBwYWdlR3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3Jp
cHQoKnNjcmlwdFdvcmxkLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKQEAgLTQ3MSw3ICs0NzAsNiBA
QCB2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2VyU2NyaXB0KFdlYlBhCiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OmFkZFVzZXJTdHlsZVNoZWV0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAs
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEFQSTo6QXJyYXkqIHdoaXRlbGlzdCwgQVBJOjpBcnJh
eSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzKQogewotICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0
IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRo
ZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRV
UkxTdHJpbmdUYWcgdmVyc2lvbi4KICAgICBVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldHsg
c291cmNlLCBVUkwoVVJMKCksIHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+dG9TdHJpbmdW
ZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlzdC0+dG9TdHJp
bmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVV
c2VyTGV2ZWwgfTsKIAogICAgIHBhZ2VHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRk
VXNlclN0eWxlU2hlZXQoKnNjcmlwdFdvcmxkLCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CkBA
IC00NzksMTMgKzQ3NywxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2VyU3R5bGVTaGVl
dChXCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZVVzZXJTY3JpcHQoV2ViUGFnZUdyb3Vw
UHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQs
IGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0cmlu
ZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdlIGhh
dmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9m
IHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KICAgICBwYWdlR3JvdXAtPnVzZXJDb250
ZW50Q29udHJvbGxlcigpLnJlbW92ZVVzZXJTY3JpcHRXaXRoVVJMKCpzY3JpcHRXb3JsZCwgVVJM
KFVSTCgpLCB1cmwpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxl
U2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIC8vIHVybCBpcyBu
b3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNl
ZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3Ig
Zm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KICAgICBw
YWdlR3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLnJlbW92ZVVzZXJTdHlsZVNoZWV0V2l0
aFVSTCgqc2NyaXB0V29ybGQsIFVSTChVUkwoKSwgdXJsKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAkocmV2aXNpb24gMjM2NjczKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEsOCArNTEsNyBAQCBib29sIFBsdWdpbjo6UGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6RGVjCiAgICAgU3RyaW5nIHVybFN0cmluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVy
bFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBGSVhNRTogV2UgY2FuJ3Qg
YXNzdW1lIHRoYXQgdGhlIHVybCBwYXNzZWQgaW4gaGVyZSBpcyB2YWxpZC4KLSAgICBwYXJhbWV0
ZXJzLnVybCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CisgICAgcGFyYW1ldGVy
cy51cmwgPSBVUkwoeyB9LCB1cmxTdHJpbmcpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLm5hbWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzksNyArMjM5LDcgQEAgVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6dXJsKGNvbnN0IFN0cgogewogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFVSTChwYXN0ZWJvYXJkTmFtZSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRVUkw6OlJlcGx5KHVy
bFN0cmluZyksIDApOwotICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcp
OworICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCiBsb25nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKQEAgLTM2OCw3ICszNjgsNyBAQCBXZWJD
b3JlOjpVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkCiB7CiAgICAgU3RyaW5nIHVybFN0
cmluZzsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBh
c3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJpbmcsIHRpdGxlKSwgMCk7
Ci0gICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CisgICAgcmV0dXJu
IFVSTCh7IH0sIHVybFN0cmluZyk7CiB9CiAKIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzY2NzQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMC0w
MSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBQYXJzZWRVUkxTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAg
KHRvTlNVUkwpOgorCiAyMDE4LTEwLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVVJMIHNob3VsZCBub3QgdXNlIFRleHRFbmNvZGluZyBp
bnRlcm5hbGx5CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlw
dERlYnVnZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdnZXIubW0JKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0JKHdvcmtpbmcgY29weSkK
QEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIE5TVVJMICp0b05TVVJMKGNvbnN0IFN0cmluZyYgcykK
IHsKICAgICBpZiAocy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
IFVSTChQYXJzZWRVUkxTdHJpbmcsIHMpOworICAgIHJldHVybiBVUkwoeyB9LCBzKTsKIH0KIAog
c3RhdGljIFdlYkZyYW1lICp0b1dlYkZyYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzY2NzMpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOC0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJlbW92ZSBQYXJzZWRVUkxTdHJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDE1NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRG93bmxvYWRDdXJsLmNwcDoK
KyAgICAgICAgKFdlYkRvd25sb2FkOjppbml0V2l0aFJlcXVlc3QpOgorICAgICAgICAqIFdlYlVS
TFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSk6
CisKIDIwMTgtMDktMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBEcm9wIHN1cHBvcnQgZm9yIGNyb3NzLW9yaWdpbi13aW5kb3ctcG9saWN5IGhlYWRlcgpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCShyZXZpc2lv
biAyMzY2NzQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIEhSRVNVTFQgV2ViRG93bmxvYWQ6Omlu
aXRXaXRoUmVxdWVzdCgKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFJlc291cmNlUmVx
dWVzdCByZXNvdXJjZVJlcXVlc3Q7Ci0gICAgcmVzb3VyY2VSZXF1ZXN0LnNldFVSTChVUkwoUGFy
c2VkVVJMU3RyaW5nLCBTdHJpbmcodXJsKSkpOworICAgIHJlc291cmNlUmVxdWVzdC5zZXRVUkwo
VVJMKHsgfSwgU3RyaW5nKHVybCkpKTsKIAogICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
ck1hcCA9IHdlYlJlcXVlc3QtPmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICBmb3IgKEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVyTWFwLmJlZ2luKCk7IGl0ICE9IGhlYWRl
ck1hcC5lbmQoKTsgKytpdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJl
c3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxS
ZXNwb25zZS5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDcgKzIyNyw3IEBAIFdl
YlVSTFJlc3BvbnNlKiBXZWJVUkxSZXNwb25zZTo6Y3JlYXRlSW4KIHsKICAgICBXZWJVUkxSZXNw
b25zZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0
dHAgcmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNl
Ci0gICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVS
TChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7Cisg
ICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTCh7
IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CiAgICAgaW5zdGFuY2UtPkFk
ZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjY5MCkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTEwLTAxICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIFBhcnNlZFVSTFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwMTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjph
c3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmspOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6YXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTGludXhQbGF0Zm9ybVF1aXJrKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRm
b3JtUXVpcmspOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMTAtMDEg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0b3Jh
Z2VQcm9jZXNzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNw
cAkocmV2aXNpb24gMjM2NjczKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgVEVTVF9GKFVSTFRlc3Qs
IFVSTENvbnN0cnVjdG9yRGVmYXVsdCkKIAogVEVTVF9GKFVSTFRlc3QsIFVSTENvbnN0cnVjdG9y
Q29uc3RDaGFyKQogewotICAgIFVSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly91c2Vy
bmFtZTpwYXNzd29yZEB3d3cuZXhhbXBsZS5jb206ODA4MC9pbmRleC5odG1sP3Zhcj12YWwjZnJh
Z21lbnQiKTsKKyAgICBVUkwga3VybCh7IH0sICJodHRwOi8vdXNlcm5hbWU6cGFzc3dvcmRAd3d3
LmV4YW1wbGUuY29tOjgwODAvaW5kZXguaHRtbD92YXI9dmFsI2ZyYWdtZW50Iik7CiAKICAgICBF
WFBFQ1RfRkFMU0Uoa3VybC5pc0VtcHR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShrdXJsLmlzTnVs
bCgpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBURVNUX0YoVVJMVGVzdCwgVVJMUHJvdG9jb2xIb3N0
QW5kUG9ydCkKIAogVEVTVF9GKFVSTFRlc3QsIFVSTERhdGFVUklTdHJpbmdTaGFyaW5nKQogewot
ICAgIFVSTCBiYXNlVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8i
KTsKKyAgICBVUkwgYmFzZVVSTCh7IH0sICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7CiAgICAg
U3RyaW5nIHRocmVlQXBwbGVzID0gImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2
NCw3Nk8vNzZPLzc2Ty8iOwogCiAgICAgVVJMIHVybChiYXNlVVJMLCB0aHJlZUFwcGxlcyk7Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFn
ZW50UXVpcmtzLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBzdGF0aWMgdm9pZCBhc3NlcnRV
c2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoY29uc3QgY2hhciogdXJsKQogewot
ICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRV
UkxTdHJpbmcsIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50
Rm9yVVJMKFVSTCh7IH0sIHVybCkpOwogCiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFp
bnMoIkNocm9tZSIpKTsKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiU2FmYXJp
IikpOwpAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxI
YXNDaHJvCiAKIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0xpbnV4UGxhdGZv
cm1RdWlyayhjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRh
cmRVc2VyQWdlbnRGb3JVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSk7CisgICAgU3RyaW5n
IHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgdXJsKSk7CiAKICAg
ICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiTGludXgiKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7CkBAIC01Niw3ICs1Niw3IEBAIHN0
YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0xpbnUKIAogc3RhdGljIHZvaWQgYXNz
ZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyayhjb25zdCBjaGFyKiB1cmwpCiB7
Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsKSk7CisgICAge1N0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFn
ZW50Rm9yVVJMKFVSTCh7IH19LCB1cmwpKTsKIAogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNv
bnRhaW5zKCJNYWNpbnRvc2giKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMo
Ik1hYyBPUyBYIikpOwpAQCAtNjksMTIgKzY5LDEyIEBAIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJB
Z2VudEZvclVSTEhhc01hY1AKIFRFU1QoVXNlckFnZW50VGVzdCwgUXVpcmtzKQogewogICAgIC8v
IEEgc2l0ZSB3aXRoIG5vdCBxdWlya3Mgc2hvdWxkIHJldHVybiBhIG51bGwgU3RyaW5nLgotICAg
IFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxT
dHJpbmcsICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIikpOworICAgIFN0cmluZyB1YVN0cmluZyA9
IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sICJodHRwOi8vd3d3LndlYmtpdC5vcmcv
IikpOwogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmlzTnVsbCgpKTsKIAogI2lmICFPUyhMSU5V
WCkgfHwgIUNQVShYODZfNjQpCiAgICAgLy8gR29vZ2xlIHF1aXJrIHNob3VsZCBub3QgYWZmZWN0
IHNpdGVzIHdpdGggc2ltaWxhciBkb21haW5zLgotICAgIHVhU3RyaW5nID0gc3RhbmRhcmRVc2Vy
QWdlbnRGb3JVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly93d3cuZ29vZ2xlYmxvZy5j
b20vIikpOworICAgIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwg
Imh0dHA6Ly93d3cuZ29vZ2xlYmxvZy5jb20vIikpOwogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmlu
Zy5jb250YWlucygiTGludXggeDg2XzY0IikpOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351299</attachid>
            <date>2018-10-01 14:28:28 -0700</date>
            <delta_ts>2018-10-01 14:45:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190154-20181001142827.patch</filename>
            <type>text/plain</type>
            <size>67722</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAxOC0xMC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBQ
YXJzZWRVUkxTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJlZm9yZSB0aGUgaW50cm9kdWN0aW9uIG9mIFVSTFBhcnNlciwgaXQgd291bGQgaW5k
aWNhdGUgdGhhdCB3ZSBzaG91bGQgYXNzdW1lIHRoZSBTdHJpbmcKKyAgICAgICAgaXMgZnJvbSBh
IHZhbGlkIFVSTCBzbyB3ZSBjYW4gc2tpcCBjYW5vbmljYWxpemF0aW9uIGFuZCBqdXN0IGZpbmQg
dGhlIG9mZnNldHMgaW5zaWRlIHRoZSBTdHJpbmcKKyAgICAgICAgdG8gcXVpY2tseSBjcmVhdGUg
YSBVUkwuICBJdCB3YXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdGhhdCBjYXVzZWQgc2Vj
dXJpdHkgaXNzdWVzIHdoZW4KKyAgICAgICAgbWlzdXNlZC4gIFNpbmNlIHRoZSBpbnRyb2R1Y3Rp
b24gb2YgVVJMUGFyc2VyLCB3ZSBoYXZlIGEgZmFzdCBwYXRoIGZvciBhbGwgVVJMIHBhcnNpbmcs
IHNvCisgICAgICAgIHJpZ2h0IG5vdyBpdCBhY3R1YWxseSBkb2Vzbid0IGNoYW5nZSBhbnkgYmVo
YXZpb3IuICBJdCdzIGp1c3QgYSByZWxpYyBvZiB0aGUgcGFzdCB0aGF0IGNvbXBsaWNhdGVzCisg
ICAgICAgIHRoZSBVUkwgY2xhc3MsIG1ha2luZyBpdCBoYXJkZXIgdG8gZXhwcmVzcyB3aGljaCBj
b25zdHJ1Y3RvciB0byB1c2UgYW5kIG1ha2luZyBpdCBoYXJkZXIgdG8gbW92ZQorICAgICAgICB0
aGUgY2xhc3MuCisKKyAgICAgICAgKiBNb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZp
Z2F0b3JDb250ZW50VXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ29udGVu
dFV0aWxzOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JDb250ZW50VXRpbHM6OmlzUHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHM6OnVucmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6dXBkYXRlQmFzZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNl
Y3VyaXR5Q29udGV4dCk6CisgICAgICAgICogZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlZFN0
eWxlU2hlZXRDYWNoZSBjb25zdCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5
bGVTaGVldCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tcGxldGVVUkxzKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlVSTDo6Y3JlYXRlQmxvYlVSTCk6CisgICAgICAgICogaGlzdG9yeS9I
aXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6dXJsIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpvcmlnaW5hbFVSTCBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6bG9jYXRpb24gY29uc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvUHVi
bGljVVJMTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpz
dG9wKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0
IGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlw
dCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1l
bnQpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Okhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGU6OmFkZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6
OnJlc291cmNlRm9yVVJMKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
c3RhcnRMb2FkaW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdy
b3VwOjphZGRFbnRyeSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnVybEZv
ckJsYW5rRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpibGFua1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgICgpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1w
bDo6cG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6OmRlY29kZUJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlzVXNpbmdQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJj
aENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNldENvb2tpZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKwogMjAxOC0x
MC0wMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
U3RvcmFnZVByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9yY29u
dGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0
aWxzLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZp
Z2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA3LDcgKzEwNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5hdmlnYXRvckNvbnRlbnRV
dGlsczoKICAgICBpZiAoIXZlcmlmeVByb3RvY29sSGFuZGxlclNjaGVtZShzY2hlbWUpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OwogCi0gICAgTmF2aWdhdG9y
Q29udGVudFV0aWxzOjpmcm9tKG5hdmlnYXRvci5mcmFtZSgpLT5wYWdlKCkpLT5jbGllbnQoKS0+
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoc2NoZW1lLCBiYXNlVVJMLCBVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpLCBuYXZpZ2F0b3IuZnJhbWUoKS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyh0aXRsZSkpOworICAgIE5hdmlnYXRvckNvbnRlbnRVdGlsczo6ZnJvbShuYXZpZ2F0b3Iu
ZnJhbWUoKS0+cGFnZSgpKS0+Y2xpZW50KCktPnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKHNjaGVt
ZSwgYmFzZVVSTCwgVVJMKHsgfSwgdXJsKSwgbmF2aWdhdG9yLmZyYW1lKCktPmRpc3BsYXlTdHJp
bmdNb2RpZmllZEJ5RW5jb2RpbmcodGl0bGUpKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0x
NDcsNyArMTQ3LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBOYXZpZ2F0b3JDb250ZW50VXRpbAog
ICAgIGlmICghdmVyaWZ5UHJvdG9jb2xIYW5kbGVyU2NoZW1lKHNjaGVtZSkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKLSAgICByZXR1cm4gY3VzdG9tSGFu
ZGxlcnNTdGF0ZVN0cmluZyhOYXZpZ2F0b3JDb250ZW50VXRpbHM6OmZyb20obmF2aWdhdG9yLmZy
YW1lKCktPnBhZ2UoKSktPmNsaWVudCgpLT5pc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQoc2No
ZW1lLCBiYXNlVVJMLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKSk7CisgICAgcmV0dXJuIGN1
c3RvbUhhbmRsZXJzU3RhdGVTdHJpbmcoTmF2aWdhdG9yQ29udGVudFV0aWxzOjpmcm9tKG5hdmln
YXRvci5mcmFtZSgpLT5wYWdlKCkpLT5jbGllbnQoKS0+aXNQcm90b2NvbEhhbmRsZXJSZWdpc3Rl
cmVkKHNjaGVtZSwgYmFzZVVSTCwgVVJMKHsgfSwgdXJsKSkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBOYXZpZ2F0b3JDb250ZW50VXRpbHM6OnVucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoTmF2
aWdhdG9yJiBuYXZpZ2F0b3IsIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIHVy
bCkKQEAgLTE2Myw3ICsxNjMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOYXZpZ2F0b3JDb250ZW50
VXRpbHM6CiAgICAgaWYgKCF2ZXJpZnlQcm90b2NvbEhhbmRsZXJTY2hlbWUoc2NoZW1lKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAotICAgIE5hdmlnYXRv
ckNvbnRlbnRVdGlsczo6ZnJvbShuYXZpZ2F0b3IuZnJhbWUoKS0+cGFnZSgpKS0+Y2xpZW50KCkt
PnVucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoc2NoZW1lLCBiYXNlVVJMLCBVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpKTsKKyAgICBOYXZpZ2F0b3JDb250ZW50VXRpbHM6OmZyb20obmF2aWdhdG9y
LmZyYW1lKCktPnBhZ2UoKSktPmNsaWVudCgpLT51bnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKHNj
aGVtZSwgYmFzZVVSTCwgVVJMKHsgfSwgdXJsKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTU5LDcgKzMxNTksNyBA
QCB2b2lkIERvY3VtZW50Ojp1cGRhdGVCYXNlVVJMKCkKICAgICAgICAgLy8gVGhlIGRvY3VtZW50
VVJJIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkgZnJvbSBKYXZhU2NyaXB0LCBidXQgd3JpdGFibGUg
ZnJvbSBPYmplY3RpdmUgQywgc28gd2UgbmVlZCB0byByZXRhaW4KICAgICAgICAgLy8gdGhpcyBm
YWxsYmFjayBiZWhhdmlvci4gV2UgdXNlIGEgbnVsbCBiYXNlIFVSTCwgc2luY2UgdGhlIGRvY3Vt
ZW50VVJJIGF0dHJpYnV0ZSBpcyBhbiBhcmJpdHJhcnkgc3RyaW5nCiAgICAgICAgIC8vIGFuZCBE
T00gMyBDb3JlIGRvZXMgbm90IHNwZWNpZnkgaG93IGl0IHNob3VsZCBiZSByZXNvbHZlZC4KLSAg
ICAgICAgbV9iYXNlVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZG9jdW1lbnRVUkkoKSk7Cisg
ICAgICAgIG1fYmFzZVVSTCA9IFVSTCh7IH0sIGRvY3VtZW50VVJJKCkpOwogICAgIH0KIAogICAg
IGNsZWFyU2VsZWN0b3JRdWVyeUNhY2hlKCk7CkBAIC01NjA2LDkgKzU2MDYsOSBAQCB2b2lkIERv
Y3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICBpZiAoIW1fZnJhbWUpIHsKICAgICAg
ICAgLy8gTm8gc291cmNlIGZvciBhIHNlY3VyaXR5IGNvbnRleHQuCiAgICAgICAgIC8vIFRoaXMg
Y2FuIG9jY3VyIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgot
ICAgICAgICBzZXRDb29raWVVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkp
OworICAgICAgICBzZXRDb29raWVVUkwoVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSkpOwogICAgICAg
ICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkpOwotICAgICAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFBh
cnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOworICAgICAgICBzZXRDb250
ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KFVSTCB7IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5j
cHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHls
ZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEV4dGVu
c2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlCiAgICAgCiAgICAgaWYgKCFvd25pbmdQYWdl
LT5jYXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpLmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBJZGVudGlmeSBvdXIgb3ZlcnJpZGUgc3R5bGUgc2hlZXQgd2l0aCBhIHVuaXF1ZSBVUkwg
LSBhIG5ldyBzY2hlbWUgYW5kIGEgVVVJRC4KLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFVSTD4gY2FwdGlvbnNTdHlsZVNoZWV0VVJMKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2FwdGlv
bnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIik7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IGNhcHRpb25zU3R5bGVTaGVldFVSTChVUkwo
KSwgInVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAy
MzREQzIzIik7CiAKICAgICAgICAgYXV0byBzaGVldCA9IGNyZWF0ZUV4dGVuc2lvbnNTdHlsZVNo
ZWV0KGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihtX2RvY3VtZW50KSwgY2FwdGlvbnNTdHlsZVNoZWV0
VVJMLCBvd25pbmdQYWdlLT5jYXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpLCBVc2Vy
U3R5bGVBdXRob3JMZXZlbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEy
Miw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2gKICAgICAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBhIHN5bnRoZXRpYyBYU0xTdHlsZVNoZWV0IHRoYXQgaXMg
ZW1iZWRkZWQuICBJdCBuZWVkcyB0byBiZSBhYmxlCiAgICAgICAgICAgICAvLyB0byBraWNrIG9m
ZiBpbXBvcnQvaW5jbHVkZSBsb2FkcyB0aGF0IGNhbiBoYW5nIG9mZiBzb21lIHBhcmVudCBzaGVl
dC4KICAgICAgICAgICAgIGlmIChtX2lzWFNMKSB7Ci0gICAgICAgICAgICAgICAgVVJMIGZpbmFs
VVJMKFBhcnNlZFVSTFN0cmluZywgbV9sb2NhbEhyZWYpOworICAgICAgICAgICAgICAgIFVSTCBm
aW5hbFVSTCh7IH0sIG1fbG9jYWxIcmVmKTsKICAgICAgICAgICAgICAgICBtX3NoZWV0ID0gWFNM
U3R5bGVTaGVldDo6Y3JlYXRlRW1iZWRkZWQodGhpcywgZmluYWxVUkwpOwogICAgICAgICAgICAg
ICAgIG1fbG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGRvY3VtZW50KCkuc2NoZWR1
bGVUb0FwcGx5WFNMVHJhbnNmb3JtcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVV
UkxzKERvY3VtZW50RnJhZ21lbgogewogICAgIFZlY3RvcjxBdHRyaWJ1dGVDaGFuZ2U+IGNoYW5n
ZXM7CiAKLSAgICBVUkwgcGFyc2VkQmFzZVVSTChQYXJzZWRVUkxTdHJpbmcsIGJhc2VVUkwpOwor
ICAgIFVSTCBwYXJzZWRCYXNlVVJMKHsgfSwgYmFzZVVSTCk7CiAKICAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PigqZnJhZ21lbnQpKSB7CiAgICAgICAg
IGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2JVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgVVJMIEJsb2JVUkw6OmNy
ZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJgogewogICAgIEFTU0VSVCghb3JpZ2luU3RyaW5nLmlz
RW1wdHkoKSk7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9ICJibG9iOiIgKyBvcmlnaW5TdHJpbmcg
KyAnLycgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CisgICAgcmV0dXJuIFVSTCh7IH0sIHVybFN0cmluZyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDEyICsxNzQsMTIgQEAg
Ym9vbCBIaXN0b3J5SXRlbTo6aGFzQ2FjaGVkUGFnZUV4cGlyZWQoKQogCiBVUkwgSGlzdG9yeUl0
ZW06OnVybCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJs
U3RyaW5nKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgbV91cmxTdHJpbmcpOwogfQogCiBVUkwgSGlz
dG9yeUl0ZW06Om9yaWdpbmFsVVJMKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9vcmlnaW5hbFVSTFN0cmluZyk7CisgICAgcmV0dXJuIFVSTCh7IH0sIG1fb3Jp
Z2luYWxVUkxTdHJpbmcpOwogfQogCiBjb25zdCBTdHJpbmcmIEhpc3RvcnlJdGVtOjpyZWZlcnJl
cigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lk
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpkaWRBdHRhY2hSZW5kCiBVUkwgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6OmxvY2F0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoaGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihzcmNkb2NBdHRyKSkKLSAgICAgICAgcmV0dXJuIFVSTChQYXJzZWRVUkxT
dHJpbmcsICJhYm91dDpzcmNkb2MiKTsKKyAgICAgICAgcmV0dXJuIFVSTCh7IH0sICJhYm91dDpz
cmNkb2MiKTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTk5LDcg
KzcxOTksNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvCiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgLy8gU2V0dGluZyBhIHNjcmlwdFVSTCBhbGxvd3MgdGhlIHNvdXJj
ZSB0byBiZSBkZWJ1Z2dhYmxlIGluIHRoZSBpbnNwZWN0b3IuCi0gICAgVVJMIHNjcmlwdFVSTCA9
IFVSTChQYXJzZWRVUkxTdHJpbmcsICJtZWRpYUNvbnRyb2xzU2NyaXB0Il9zKTsKKyAgICBVUkwg
c2NyaXB0VVJMID0gVVJMKHsgfSwgIm1lZGlhQ29udHJvbHNTY3JpcHQiX3MpOwogI2Vsc2UKICAg
ICBVUkwgc2NyaXB0VVJMOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGlj
VVJMTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UHVibGljVVJMTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBQdWJsaWNVUkxNYW5hZ2VyOjpzdG9wKCkKICAgICBtX2lzU3RvcHBlZCA9IHRydWU7CiAgICAg
Zm9yIChhdXRvJiByZWdpc3RyeSA6IG1fcmVnaXN0cnlUb1VSTCkgewogICAgICAgICBmb3IgKGF1
dG8mIHVybCA6IHJlZ2lzdHJ5LnZhbHVlKQotICAgICAgICAgICAgcmVnaXN0cnkua2V5LT51bnJl
Z2lzdGVyVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgICAgICAgICAgcmVnaXN0
cnkua2V5LT51bnJlZ2lzdGVyVVJMKFVSTCh7IH0sIHVybCkpOwogICAgIH0KIAogICAgIG1fcmVn
aXN0cnlUb1VSTC5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDE3LDcgKzE0MTcsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlc291cmNlU3R5
bGVTCiAKICAgICBTdHJpbmcgZXJyb3I7CiAgICAgYm9vbCBiYXNlNjRFbmNvZGVkOwotICAgIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KGVycm9yLCBvd25lckRvY3VtZW50KCkt
PmZyYW1lKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fcGFnZVN0eWxlU2hlZXQtPmhyZWYoKSks
IHJlc3VsdCwgJmJhc2U2NEVuY29kZWQpOworICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3Vy
Y2VDb250ZW50KGVycm9yLCBvd25lckRvY3VtZW50KCktPmZyYW1lKCksIFVSTCh7IH0sIG1fcGFn
ZVN0eWxlU2hlZXQtPmhyZWYoKSksIHJlc3VsdCwgJmJhc2U2NEVuY29kZWQpOwogICAgIHJldHVy
biBlcnJvci5pc0VtcHR5KCkgJiYgIWJhc2U2NEVuY29kZWQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDcgKzQzOSw3IEBA
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm8KIAogICAgICAgICBmb3Ig
KGF1dG8mIHVybCA6IGFsbFJlc291cmNlc1VSTHNGb3JGcmFtZShmcmFtZSkpIHsKICAgICAgICAg
ICAgIFZlY3RvcjxDb29raWU+IGRvY0Nvb2tpZXNMaXN0OwotICAgICAgICAgICAgcmF3Q29va2ll
c0ltcGxlbWVudGVkID0gZ2V0UmF3Q29va2llcygqZG9jdW1lbnQsIFVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIGRvY0Nvb2tpZXNMaXN0KTsKKyAgICAgICAgICAgIHJhd0Nvb2tpZXNJbXBsZW1l
bnRlZCA9IGdldFJhd0Nvb2tpZXMoKmRvY3VtZW50LCBVUkwoeyB9LCB1cmwpLCBkb2NDb29raWVz
TGlzdCk7CiAKICAgICAgICAgICAgIGlmICghcmF3Q29va2llc0ltcGxlbWVudGVkKSB7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9yIHRo
ZSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KQEAgLTQ2Miw3ICs0NjIsNyBAQCB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvCiAKIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpOworICAgIFVSTCBwYXJzZWRVUkwoeyB9LCB1cmwpOwogICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZSgqZG9jdW1l
bnQsIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlQ29udAogICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHJlc291cmNlQ29udGVudChlcnJvclN0cmluZywgZnJhbWUsIFVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCksIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOworICAgIHJlc291
cmNlQ29udGVudChlcnJvclN0cmluZywgZnJhbWUsIFVSTCh7IH0sIHVybCksIGNvbnRlbnQsIGJh
c2U2NEVuY29kZWQpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNv
dXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcq
IG9wdGlvbmFsUmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCkBAIC01MDUsNyArNTA1
LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyYwogICAgIGlmICgh
bG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBVUkwga3VybChQYXJzZWRVUkxTdHJpbmcs
IHVybCk7CisgICAgVVJMIGt1cmwoeyB9LCB1cmwpOwogCiAgICAgU3RyaW5nIGNvbnRlbnQ7CiAg
ICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAJKHJldmlz
aW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgU3RyaW5n
IFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGbwogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKE1BS0VfU1RBVElDX1NU
UklOR19JTVBMKCJYLVNvdXJjZU1hcCIpKTsKIAogICAgIGlmICghc2NyaXB0LnVybC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9wYWdlQWdlbnQtPmNh
Y2hlZFJlc291cmNlKCZtX3BhZ2UubWFpbkZyYW1lKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHNj
cmlwdC51cmwpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9wYWdlQWdl
bnQtPmNhY2hlZFJlc291cmNlKCZtX3BhZ2UubWFpbkZyYW1lKCksIFVSTCh7IH0sIHNjcmlwdC51
cmwpKTsKICAgICAgICAgaWYgKHJlc291cmNlKSB7CiAgICAgICAgICAgICBTdHJpbmcgc291cmNl
TWFwSGVhZGVyID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKHNvdXJjZU1h
cEhUVFBIZWFkZXIpOwogICAgICAgICAgICAgaWYgKCFzb3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lv
biAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDExLDcgKzE0MTEsNyBAQCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNv
dXJjZT4+IERvY3VtZW50TG9hCiAKICAgICBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+IHN1
YnJlc291cmNlczsKICAgICBmb3IgKGF1dG8mIGhhbmRsZSA6IG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmFsbENhY2hlZFJlc291cmNlcygpLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN1
YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3VyY2UoeyBQYXJzZWRVUkxTdHJpbmcsIGhhbmRsZS0+
dXJsKCkgfSkpCisgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3Vy
Y2UoeyB7IH0sIGhhbmRsZS0+dXJsKCkgfSkpCiAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBw
ZW5kKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gc3Vi
cmVzb3VyY2VzOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDgsNyArMzA4LDcgQEAgRnJhbWVMb2FkZXI6On5GcmFtZUxvYWRl
cigpCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsKICAgICAvLyBUaGlzIHNvbWV3aGF0IG9k
ZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQu
Ci0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwg
U3Vic3RpdHV0ZURhdGEoKSkucHRyKCkpOworICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChVUkwoeyB9LCBlbXB0
eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLnB0cigpKTsKICAgICBzZXRQcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKFNob3VsZENv
bnRpbnVlOjpZZXMpOwogCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5p
dEZvclN5bnRoZXNpemVkRG9jdQogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGluaXRpYWxpemUg
dGhlIGRvY3VtZW50IFVSTCB0byB0aGUgc3BlY2lmaWVkIFVSTC4gQ3VycmVudGx5IHRoZSBVUkwg
aXMgZW1wdHkgYW5kIGhlbmNlCiAgICAgLy8gRnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkKCkg
d2lsbCBvdmVyd3JpdGUgdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgdG8gYmUgYWN0aXZlRG9jdW1l
bnRMb2FkZXIoKS0+ZG9jdW1lbnRVUkwoKS4KIAotICAgIGF1dG8gbG9hZGVyID0gbV9jbGllbnQu
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxTdHJpbmcs
IGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSk7CisgICAgYXV0byBsb2FkZXIgPSBt
X2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKHsgfSwgZW1w
dHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKTsKICAgICBsb2FkZXItPmF0dGFjaFRvRnJh
bWUobV9mcmFtZSk7CiAgICAgbG9hZGVyLT5zZXRSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKFVS
TCgpLCAidGV4dC9odG1sIl9zLCAwLCBTdHJpbmcoKSkpOwogICAgIGxvYWRlci0+c2V0Q29tbWl0
dGVkKHRydWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9y
eUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNyArODc2LDcgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKFJlZlB0cgogICAgIGlmIChtX2ZyYW1lLnBhZ2Uo
KS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYWRkVmlz
aXRlZExpbmsoKnBhZ2UsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZykpOworICAgIGFk
ZFZpc2l0ZWRMaW5rKCpwYWdlLCBVUkwoeyB9LCB1cmxTdHJpbmcpKTsKICAgICBtX2ZyYW1lLmxv
YWRlcigpLmNsaWVudCgpLnVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKIH0KIApAQCAtODk4LDcgKzg5
OCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZShSZWYKICAgICBpZiAo
bV9mcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGFkZFZpc2l0ZWRMaW5rKCptX2ZyYW1lLnBhZ2UoKSwgVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsU3RyaW5nKSk7CisgICAgYWRkVmlzaXRlZExpbmsoKm1fZnJhbWUucGFnZSgpLCBVUkwo
eyB9LCB1cmxTdHJpbmcpKTsKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnVwZGF0ZUds
b2JhbEhpc3RvcnkoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6YWRkUmVzb3Vy
Y2UoUmVmPEEKIHsKICAgICBhdXRvJiB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAKLSAgICBBU1NF
UlQoIVVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwor
ICAgIEFTU0VSVCghVVJMKHsgfSwgdXJsKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAg
QVNTRVJUKCFtX3Jlc291cmNlcy5jb250YWlucyh1cmwpKTsKIAogICAgIGlmIChtX3N0b3JhZ2VJ
RCkgewpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OmFkZFJlc291cmNl
KFJlZjxBCiAKIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogQXBwbGljYXRpb25DYWNoZTo6cmVz
b3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgQVNTRVJUKCFVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIVVS
TCh7IH0sIHVybCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIHJldHVybiBtX3Jlc291
cmNlcy5nZXQodXJsKTsKIH0gICAgCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAy
MzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk2LDcgKzg5Niw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpzdGFydExvYWRpbmcKICAgICBBU1NFUlQoIW1fbWFuaWZlc3RMb2Fk
ZXIpOwogICAgIEFTU0VSVCghbV9lbnRyeUxvYWRlcik7CiAKLSAgICBhdXRvIHJlcXVlc3QgPSBj
cmVhdGVSZXF1ZXN0KFVSTCB7IFBhcnNlZFVSTFN0cmluZywgZmlyc3RQZW5kaW5nRW50cnlVUkwg
fSwgbV9uZXdlc3RDYWNoZSA/IG1fbmV3ZXN0Q2FjaGUtPnJlc291cmNlRm9yVVJMKGZpcnN0UGVu
ZGluZ0VudHJ5VVJMKSA6IG51bGxwdHIpOworICAgIGF1dG8gcmVxdWVzdCA9IGNyZWF0ZVJlcXVl
c3QoVVJMIHsgeyB9LCBmaXJzdFBlbmRpbmdFbnRyeVVSTCB9LCBtX25ld2VzdENhY2hlID8gbV9u
ZXdlc3RDYWNoZS0+cmVzb3VyY2VGb3JVUkwoZmlyc3RQZW5kaW5nRW50cnlVUkwpIDogbnVsbHB0
cik7CiAKICAgICBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIgPSBtX2ZyYW1lLT5wYWdlKCkt
PnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRl
bnRpZmllciwgbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSB7IH0pOwpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkZWxpdmVyRGVsYXkKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphZGRF
bnRyeShjb25zdCBTdHJpbmcmIHVybCwgdW5zaWduZWQgdHlwZSkKIHsKICAgICBBU1NFUlQobV9j
YWNoZUJlaW5nVXBkYXRlZCk7Ci0gICAgQVNTRVJUKCFVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwp
Lmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIVVSTCh7IH0sIHVybCkuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCiAgICAgLy8gRG9uJ3QgYWRkIHRoZSBVUkwgaWYgd2Ug
YWxyZWFkeSBoYXZlIGFuIG1hc3RlciByZXNvdXJjZSBpbiB0aGUgY2FjaGUKICAgICAvLyAoaS5l
LiwgdGhlIG1haW4gcmVzb3VyY2UgZmluaXNoZWQgbG9hZGluZyBiZWZvcmUgdGhlIG1hbmlmZXN0
KS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBw
bGljYXRpb25DYWNoZVMKICAgICAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0
ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBVUkwgbWFuaWZl
c3RVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7
CisgICAgICAgIFVSTCBtYW5pZmVzdFVSTCA9IFVSTCh7IH0sIHN0YXRlbWVudC5nZXRDb2x1bW5U
ZXh0KDEpKTsKIAogICAgICAgICBpZiAobV9jYWNoZXNJbk1lbW9yeS5jb250YWlucyhtYW5pZmVz
dFVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI4NSw3ICsyODUsNyBAQCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTCiAgICAgCiAgICAgaW50IHJlc3VsdDsK
ICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpIHsK
LSAgICAgICAgVVJMIG1hbmlmZXN0VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgc3RhdGVtZW50
LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBVUkwgbWFuaWZlc3RVUkwgPSBVUkwoeyB9LCBz
dGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7CiAKICAgICAgICAgaWYgKG1fY2FjaGVzSW5NZW1v
cnkuY29udGFpbnMobWFuaWZlc3RVUkwpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMTA5
LDcgKzExMDksNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoCiAK
ICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gY2FjaGVTdGF0ZW1lbnQuc3Rl
cCgpKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFVSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBj
YWNoZVN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAgVVJMIHVybCh7IH0sIGNh
Y2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpOwogICAgICAgICAKICAgICAgICAgaW50IGh0
dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpOwogCkBAIC0xMTYy
LDcgKzExNjIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoCiAg
ICAgCiAgICAgVmVjdG9yPFVSTD4gd2hpdGVsaXN0OwogICAgIHdoaWxlICgocmVzdWx0ID0gd2hp
dGVsaXN0U3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgCi0gICAgICAgIHdoaXRlbGlz
dC5hcHBlbmQoVVJMKFBhcnNlZFVSTFN0cmluZywgd2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVt
blRleHQoMCkpKTsKKyAgICAgICAgd2hpdGVsaXN0LmFwcGVuZChVUkwoeyB9LCB3aGl0ZWxpc3RT
dGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVf
RE9ORSkKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgd2hp
dGVsaXN0LCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTEx
OTIsNyArMTE5Miw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2gK
ICAgICAKICAgICBGYWxsYmFja1VSTFZlY3RvciBmYWxsYmFja1VSTHM7CiAgICAgd2hpbGUgKChy
ZXN1bHQgPSBmYWxsYmFja1N0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpIAotICAgICAg
ICBmYWxsYmFja1VSTHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFVSTChQYXJzZWRVUkxTdHJpbmcs
IGZhbGxiYWNrU3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpLCBVUkwoUGFyc2VkVVJMU3RyaW5n
LCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKSkpOworICAgICAgICBmYWxsYmFj
a1VSTHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFVSTCh7IH0sIGZhbGxiYWNrU3RhdGVtZW50Lmdl
dENvbHVtblRleHQoMCkpLCBVUkwoeyB9LCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0
KDEpKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgbG9hZCBmYWxsYmFjayBVUkxzLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFVSTD4+IEFwcGxpY2F0aW9uQ2EKIAogICAgIFZlY3RvcjxVUkw+IHVybHM7CiAgICAg
d2hpbGUgKHNlbGVjdFVSTHMuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHVybHMuYXBw
ZW5kKFVSTChQYXJzZWRVUkxTdHJpbmcsIHNlbGVjdFVSTHMuZ2V0Q29sdW1uVGV4dCgwKSkpOwor
ICAgICAgICB1cmxzLmFwcGVuZChVUkwoeyB9LCBzZWxlY3RVUkxzLmdldENvbHVtblRleHQoMCkp
KTsKIAogICAgIHJldHVybiBXVEZNb3ZlKHVybHMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAJKHJldmlz
aW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzIsNyArNDcyLDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdgogICAgIC8vIGl0J3MgcG9zc2libGUgdG8g
aGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKLSAgICAgICAgcmVzcG9u
c2VVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgcmVz
cG9uc2VVUkwgPSBVUkwoeyB9LCBlbXB0eVN0cmluZygpKTsKIAogICAgIGF1dG8gbWFpblJlc291
cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihtYXJrdXBTdHJpbmcpLCBy
ZXNwb25zZVVSTCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVURi04IiwgZnJhbWUudHJlZSgpLnVu
aXF1ZU5hbWUoKSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNDcsNyArMjI0Nyw3IEBAIEV4Y2VwdGlv
bk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3IKICAgICBpZiAoIWFjdGl2ZURvY3VtZW50
KQogICAgICAgICByZXR1cm4gUmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIAotICAgIFVSTCBj
b21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKFBhcnNlZFVSTFN0cmluZywg
ZW1wdHlTdHJpbmcoKSkgOiBmaXJzdEZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0
cmluZyk7CisgICAgVVJMIGNvbXBsZXRlZFVSTCA9IHVybFN0cmluZy5pc0VtcHR5KCkgPyBVUkwo
eyB9LCBlbXB0eVN0cmluZygpKSA6IGZpcnN0RnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
dXJsU3RyaW5nKTsKICAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc0VtcHR5KCkgJiYgIWNvbXBsZXRl
ZFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAkocmV2aXNpb24g
MjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBVUkwgUGFnZVNlcmlhbGl6ZXI6OnVybEZvckJs
YW5rRnJhbWUoRnJhCiAgICAgaWYgKGl0ZXIgIT0gbV9ibGFua0ZyYW1lVVJMcy5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIFN0cmluZyB1cmwgPSAid3ljaXd5ZzovL2Zy
YW1lLyIgKyBTdHJpbmc6Om51bWJlcihtX2JsYW5rRnJhbWVDb3VudGVyKyspOwotICAgIFVSTCBm
YWtlVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwgZmFrZVVSTCh7IH0sIHVybCk7
CiAgICAgbV9ibGFua0ZyYW1lVVJMcy5hZGQoZnJhbWUsIGZha2VVUkwpOwogICAgIHJldHVybiBm
YWtlVVJMOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCShyZXZpc2lvbiAyMzY2NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OCwxOSArODgsNiBAQCB2b2lkIFVSTDo6aW52YWxpZGF0ZSgpCiAgICAgbV9xdWVyeUVuZCA9IDA7
CiB9CiAKLVVSTDo6VVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCi17
Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OwotCi0jaWYgT1MoV0lORE9XUykKLSAgICAvLyBGSVhNRSgxNDg1OTgpOiBXb3JrIGFyb3VuZCBX
aW5kb3dzIGxvY2FsIGZpbGUgaGFuZGxpbmcgYnVnIGluIENGTmV0d29yawotICAgIEFTU0VSVChp
c0xvY2FsRmlsZSgpIHx8IHVybCA9PSBtX3N0cmluZyk7Ci0jZWxzZQotICAgIEFTU0VSVCh1cmwg
PT0gbV9zdHJpbmcpOwotI2VuZGlmCi19Ci0KIFVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKIHsK
ICAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CkBAIC05MTAs
NyArODk3LDcgQEAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZwogCiBj
b25zdCBVUkwmIGJsYW5rVVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBz
dGF0aWNCbGFua1VSTChQYXJzZWRVUkxTdHJpbmcsICJhYm91dDpibGFuayIpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6Ymxhbmsi
KTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TC5oCShyZXZpc2lvbiAyMzY2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsMTcgKzU1LDExIEBAIHB1YmxpYzoKIAogc3RydWN0IFVSTEhh
c2g7CiAKLWVudW0gUGFyc2VkVVJMU3RyaW5nVGFnIHsgUGFyc2VkVVJMU3RyaW5nIH07Ci0KIGNs
YXNzIFVSTCB7CiBwdWJsaWM6CiAgICAgLy8gR2VuZXJhdGVzIGEgVVJMIHdoaWNoIGNvbnRhaW5z
IGEgbnVsbCBzdHJpbmcuCiAgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7IH0KIAotICAgIC8vIFRo
ZSBhcmd1bWVudCBpcyBhbiBhYnNvbHV0ZSBVUkwgc3RyaW5nLiBUaGUgc3RyaW5nIGlzIGFzc3Vt
ZWQgdG8gYmUgb3V0cHV0IG9mIFVSTDo6c3RyaW5nKCkgY2FsbGVkIG9uIGEgdmFsaWQKLSAgICAv
LyBVUkwgb2JqZWN0LCBvciBpbmRpc2Nlcm5pYmxlIGZyb20gc3VjaC4KLSAgICAvLyBJdCBpcyB1
c3VhbGx5IGJlc3QgdG8gYXZvaWQgcmVwZWF0ZWRseSBwYXJzaW5nIGEgc3RyaW5nLCB1bmxlc3Mg
bWVtb3J5IHNhdmluZyBvdXR3ZWlnaCB0aGUgcG9zc2libGUgc2xvdy1kb3ducy4KLSAgICBXRUJD
T1JFX0VYUE9SVCBVUkwoUGFyc2VkVVJMU3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmKTsKICAgICBl
eHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bG9hCiAgICAgc2V0TmV0d29ya1N0YXRlKG1fcHJlbG9h
ZCA9PSBNZWRpYVBsYXllcjo6Tm9uZSA/IE1lZGlhUGxheWVyOjpJZGxlIDogTWVkaWFQbGF5ZXI6
OkxvYWRpbmcpOwogICAgIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKTsK
IAotICAgIG1fYXNzZXRVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAgIG1fYXNz
ZXRVUkwgPSBVUkwoeyB9LCB1cmwpOwogICAgIG1fcmVxdWVzdGVkT3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtX2Fzc2V0VVJMKTsKIAogICAgIC8vIERvbid0IGRvIGFueSBtb3JlIHdv
cmsgaWYgdGhlIHVybCBpcyBlbXB0eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAkocmV2aXNpb24gMjM2NjczKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIGJvb2wgQmxvYlJlZ2lzdHJ5SW1wbDo6
cG9wdWxhdGVCbG9ic0ZvckYKICAgICAgICAgYmxvYnNGb3JXcml0aW5nLmFwcGVuZCh7IH0pOwog
ICAgICAgICBibG9ic0ZvcldyaXRpbmcubGFzdCgpLmJsb2JVUkwgPSB1cmwuaXNvbGF0ZWRDb3B5
KCk7CiAKLSAgICAgICAgYXV0byogYmxvYkRhdGEgPSBnZXRCbG9iRGF0YUZyb21VUkwoeyBQYXJz
ZWRVUkxTdHJpbmcsIHVybCB9KTsKKyAgICAgICAgYXV0byogYmxvYkRhdGEgPSBnZXRCbG9iRGF0
YUZyb21VUkwoeyB7IH0sIHVybCB9KTsKICAgICAgICAgaWYgKCFibG9iRGF0YSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDIzNjY3MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIFJlc291
cmNlUmVxdWVzdEJhc2U6OgogICAgIFN0cmluZyBmaXJzdFBhcnR5Rm9yQ29va2llczsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGZpcnN0UGFydHlGb3JDb29raWVzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CisgICAgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IFVS
TCh7IH0sIGZpcnN0UGFydHlGb3JDb29raWVzKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bV9odHRwTWV0aG9kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcg
QEAgU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1ZwogICAgIGlmIChzdWdn
ZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdWdnZXN0ZWRGaWxlbmFt
ZTsKIAotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKFBhcnNlZFVSTFN0cmluZywg
Imh0dHA6Ly9leGFtcGxlLmNvbS8iKSwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSk7CisgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoeyB9LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLCBT
dHJpbmcoKSwgLTEsIFN0cmluZygpKTsKICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgIFN0cmluZyBlc2NhcGVkU3VnZ2VzdGVkRmlsZW5hbWUgPSBTdHJpbmcoc3VnZ2Vz
dGVkRmlsZW5hbWUpLnJlcGxhY2UoJ1xcJywgIlxcXFwiKS5yZXBsYWNlKCciJywgIlxcXCIiKTsK
ICAgICBTdHJpbmcgdmFsdWUgPSBtYWtlU3RyaW5nKCJhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIs
IGVzY2FwZWRTdWdnZXN0ZWRGaWxlbmFtZSwgJyInKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQu
Y3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUs
OCBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0Ojp1cGRhdGVJc1VzaW5nCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQ
YXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gaHR0cENGVVJMID0gVVJMKHsgfSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVD
RlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTCh7IH0sICJo
dHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9y
VVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwogICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
cXVlc3QuaAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3QgOiBwdWJsaWMgUmVz
b3VyY2VSZXF1ZXN0QmFzZSB7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgdXJsKSAKLSAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hl
UG9saWN5KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgewog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTUsNyArMzE1LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBT
dAogICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFVSTCByZXF1ZXN0VXJsT2JqKFBhcnNlZFVSTFN0cmluZywg
cmVxdWVzdFVybCk7CisgICAgVVJMIHJlcXVlc3RVcmxPYmooeyB9LCByZXF1ZXN0VXJsKTsKICAg
ICBTdHJpbmcgcmVxdWVzdEhvc3QocmVxdWVzdFVybE9iai5ob3N0KCkudG9TdHJpbmcoKS5jb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKICAgICBTdHJpbmcgcmVxdWVzdFBhdGgocmVxdWVzdFVy
bE9iai5wYXRoKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAKQEAgLTQ1NCw3ICs0NTQs
NyBAQCBpbnQgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBTdHJpbmcmCiAgICAgaWYgKHVy
bC5pc0VtcHR5KCkgfHwgY29va2llLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0g
ICAgVVJMIHVybE9iaihQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIHVybE9iaih7IH0s
IHVybCk7CiAgICAgU3RyaW5nIGhvc3QodXJsT2JqLmhvc3QoKS50b1N0cmluZygpKTsKICAgICBT
dHJpbmcgcGF0aCh1cmxPYmoucGF0aCgpKTsKIApAQCAtNDg4LDcgKzQ4OCw3IEBAIGludCBDb29r
aWVKYXJEQjo6ZGVsZXRlQ29va2llKGNvbnN0IFN0cmkKICAgICBpZiAodXJsQ29waWVkLnN0YXJ0
c1dpdGgoJy4nKSkKICAgICAgICAgdXJsQ29waWVkLnJlbW92ZSgwLCAxKTsKIAotICAgIFVSTCB1
cmxPYmooUGFyc2VkVVJMU3RyaW5nLCB1cmxDb3BpZWQpOworICAgIFVSTCB1cmxPYmooeyB9LCB1
cmxDb3BpZWQpOwogICAgIGlmICh1cmxPYmouaXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBo
b3N0U3RyKHVybE9iai5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZyBwYXRoU3Ry
KHVybE9iai5wYXRoKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMjM2NjczKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKIHB1YmxpYzoK
ICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKFVSTCh7IH0sIHVybCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQ
cm90b2NvbENhY2hlUG9saWN5KQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgJKHJl
dmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNl
UmVxdWVzdEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgdXJsKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2Nv
bENhY2hlUG9saWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCh7IH0s
IHVybCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5
KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAgICAgICAsIG1f
c291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAgICAgICAgICAg
LCBtX2luaXRpYXRpbmdQYWdlSUQoMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEw
Miw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwKICAgICBjYXNl
IFhTTFRfTE9BRF9ET0NVTUVOVDogewogICAgICAgICB4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciBj
b250ZXh0ID0gKHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyKWN0eHQ7CiAgICAgICAgIHhtbENoYXIq
IGJhc2UgPSB4bWxOb2RlR2V0QmFzZShjb250ZXh0LT5kb2N1bWVudC0+ZG9jLCBjb250ZXh0LT5u
b2RlKTsKLSAgICAgICAgVVJMIHVybChVUkwoUGFyc2VkVVJMU3RyaW5nLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihiYXNlKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVy
aSkpOworICAgICAgICBVUkwgdXJsKFVSTCh7IH0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJhc2UpKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSk7CiAgICAgICAg
IHhtbEZyZWUoYmFzZSk7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM2Njg3KQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBA
QAorMjAxOC0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSBQYXJzZWRVUkxTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDE1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3Ry
eTo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1XaWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVzZXJDb250
ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm46Om1h
dGNoZXNVUkwgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5T
YW1lRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dGFyZ2V0TGlzdENoYW5nZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6b3BlblVSTCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN1
c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2Fk
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
cmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlk
VGVybWluYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkUHJvY2Vzc1RvT3JpZ2luQ2FjaGVTZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25J
bnRlcm5hbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVk
VG9MYXVuY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlU2hh
cmVNZW51SXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjphZGRVc2VyU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTdHlsZVNoZWV0
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZVVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW46OlBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKwogMjAxOC0xMC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBpbnRl
cm5hbCBidWlsZCBhZnRlciByMjM2NjY1CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCw3ICs1
NTAsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0CiB7CiAgICAg
VmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlUmVmZXJlbmNlczsKICAg
ICBmb3IgKGF1dG8mIHVybCA6IGJsb2JVUkxzKQotICAgICAgICBmaWxlUmVmZXJlbmNlcy5hcHBl
bmRWZWN0b3IoTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuZmlsZXNJbkJsb2IoKnRo
aXMsIHsgUGFyc2VkVVJMU3RyaW5nLCB1cmwgfSkpOworICAgICAgICBmaWxlUmVmZXJlbmNlcy5h
cHBlbmRWZWN0b3IoTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuZmlsZXNJbkJsb2Io
KnRoaXMsIHsgeyB9LCB1cmwgfSkpOwogCiAgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVy
ZW5jZXMpCiAgICAgICAgIGZpbGUtPnByZXBhcmVGb3JGaWxlQWNjZXNzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OndyaXRlQmxv
YlRvRmlsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGJsb2JGaWxlcyA9IGZp
bGVzSW5CbG9iKHsgUGFyc2VkVVJMU3RyaW5nLCBibG9iVVJMIH0pOworICAgIGF1dG8gYmxvYkZp
bGVzID0gZmlsZXNJbkJsb2IoeyB7IH0sIGJsb2JVUkwgfSk7CiAgICAgZm9yIChhdXRvJiBmaWxl
IDogYmxvYkZpbGVzKQogICAgICAgICBmaWxlLT5wcmVwYXJlRm9yRmlsZUFjY2VzcygpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MCwx
MiArNDcwLDEyIEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpkaWRFdmFsdWF0ZUoKIAog
dm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgU3RyaW5nJiByZXF1ZXN0VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlZGlyZWN0UmVzcG9uc2VVUkxTdHJpbmcsIHVpbnQzMl90IHJlZGlyZWN0UmVzcG9uc2VTdGF0
dXNDb2RlKQogewotICAgIG1fcGx1Z2luLT5zdHJlYW1XaWxsU2VuZFJlcXVlc3Qoc3RyZWFtSUQs
IFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlcXVlc3RVUkxTdHJpbmcpLCBVUkwoUGFyc2VkVVJMU3Ry
aW5nLCByZWRpcmVjdFJlc3BvbnNlVVJMU3RyaW5nKSwgcmVkaXJlY3RSZXNwb25zZVN0YXR1c0Nv
ZGUpOworICAgIG1fcGx1Z2luLT5zdHJlYW1XaWxsU2VuZFJlcXVlc3Qoc3RyZWFtSUQsIFVSTCh7
IH0sIHJlcXVlc3RVUkxTdHJpbmcpLCBVUkwoeyB9LCByZWRpcmVjdFJlc3BvbnNlVVJMU3RyaW5n
KSwgcmVkaXJlY3RSZXNwb25zZVN0YXR1c0NvZGUpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBTdHJpbmcmIHJlc3BvbnNlVVJMU3RyaW5nLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycykKIHsKLSAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0
cmVhbUlELCBVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZVVSTFN0cmluZyksIHN0cmVhbUxl
bmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMsIFN0cmluZygpKTsKKyAg
ICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCBVUkwoeyB9LCBy
ZXNwb25zZVVSTFN0cmluZyksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5
cGUsIGhlYWRlcnMsIFN0cmluZygpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6Om1hbnVhbFN0cmVhbQogICAgIGlmIChtX3BsdWdpbkNhbmNlbGVkTWFudWFsU3RyZWFt
TG9hZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZVVSTFN0cmluZyksIHN0
cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMsIFN0cmluZygp
KTsKKyAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKFVSTCh7IH0s
IHJlc3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1l
VHlwZSwgaGVhZGVycywgU3RyaW5nKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOCArMTA0LDggQEAg
Ym9vbCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNJblNhbQogICAgIGlmIChtYWluRnJh
bWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEgfHwgb3RoZXJNYWluRnJhbWVTdGF0ZS5zdGF0ZU9iamVj
dERhdGEpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNlTnVt
YmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcjsKIAotICAg
IFdlYkNvcmU6OlVSTCB1cmwgPSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5n
LCBtYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOwotICAgIFdlYkNvcmU6OlVSTCBvdGhlclVSTCA9
IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIG90aGVyTWFpbkZyYW1lU3Rh
dGUudXJsU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKHsgfSwg
bWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpVUkwgb3RoZXJVUkwgPSBX
ZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CiAKICAgICBp
ZiAoKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSB8fCBvdGhlclVSTC5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIG90aGVy
VVJMKSkKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1i
ZXIgPT0gb3RoZXJNYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyOwpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRl
cm4uaAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVz
ZXJDb250ZW50VVJMUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBUElVc2Vy
Q29udGVudFVSTFBhdHRlcm5faAotI2RlZmluZSBBUElVc2VyQ29udGVudFVSTFBhdHRlcm5faAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKIApAQCAtNDMsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBt
X3BhdHRlcm4uaG9zdCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVzVVJMKGNv
bnN0IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHVybCkpOyB9CisgICAgYm9vbCBt
YXRjaGVzVVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVy
bi5tYXRjaGVzKFdlYkNvcmU6OlVSTCh7IH0sIHVybCkpOyB9CiAgICAgYm9vbCBtYXRjaGVzU3Vi
ZG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaFN1YmRvbWFpbnMoKTsgfQog
CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm5TdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X3BhdHRlcm5TdHJpbmc7IH0KQEAgLTYwLDUgKzU5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3Rh
dGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuYwogU3VzcGVuZGVkUGFnZVByb3h5
OjpTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiAgICAgOiBtX3Bh
Z2UocGFnZSkKICAgICAsIG1fcHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpKQotICAgICwgbV9vcmln
aW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHsgUGFyc2VkVVJMU3RyaW5nLCBpdGVtLnVy
bCgpIH0pKQorICAgICwgbV9vcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHsgeyB9
LCBpdGVtLnVybCgpIH0pKQogewogICAgIGl0ZW0uc2V0U3VzcGVuZGVkUGFnZSgqdGhpcyk7CiAg
ICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KCp0
aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5OjpsbwogCiAgICAgVVJMIHJlc291cmNlRGlyZWN0b3J5VVJMOwog
ICAgIGlmIChyZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZy5pc051bGwoKSkKLSAgICAgICAgcmVz
b3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiZmlsZTovLy8iX3MpOwor
ICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTCh7IH0sICJmaWxlOi8vLyJfcyk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJMKFVSTCgpLCByZXNv
dXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3VyY2VEaXJlY3RvcnlV
UkwuaXNMb2NhbEZpbGUoKSkKQEAgLTQwOTYsNyArNDA5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGlu
Z1BhZ2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRy
KTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNl
ckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5J
ZGVudGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRT
dXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uICYmIGRlc3RpbmF0
aW9uRnJhbWVJbmZvLT5pc01haW5GcmFtZSgpICYmICFob3N0c0FyZUVxdWFsKFVSTChQYXJzZWRV
UkxTdHJpbmcsIG1fbWFpbkZyYW1lLT51cmwoKSksIHJlcXVlc3QudXJsKCkpICYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpC
YWNrRm9yd2FyZDsKKyAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRT
dXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uICYmIGRlc3RpbmF0
aW9uRnJhbWVJbmZvLT5pc01haW5GcmFtZSgpICYmICFob3N0c0FyZUVxdWFsKFVSTCh7IH0sIG1f
bWFpbkZyYW1lLT51cmwoKSksIHJlcXVlc3QudXJsKCkpICYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
Lm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9yd2FyZDsK
IAogICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246
OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdl
dCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJl
cXVlc3QpLCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92
ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKIApAQCAtNDE1
Myw3ICs0MTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbgog
ICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJh
bWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICAgICAgYXV0
byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0
eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAg
ICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9tYWluRnJhbWUtPnVybCgpKSwgcmVxdWVzdC51cmwoKSk7CisgICAgICAgIGJv
b2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoVVJMKHsgfSwgbV9tYWluRnJh
bWUtPnVybCgpKSwgcmVxdWVzdC51cmwoKSk7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlv
biA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92
ZShyZXF1ZXN0KSwgVVJMIHsgfSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RG
TW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwpAQCAtNDMwNyw3ICs0MzA3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRgogICAgICAgICByZXBseShuZXdQYWdlLT5wYWdl
SUQoKSwgbmV3UGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCkpOwogCiAgICAgICAgIFdlYnNpdGVE
YXRhU3RvcmU6OmNsb25lU2Vzc2lvbkRhdGEoKnRoaXMsICpuZXdQYWdlKTsKLSAgICAgICAgbmV3
UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uID0gaG9zdHNBcmVFcXVhbChVUkwoUGFyc2VkVVJMU3RyaW5nLCBtYWluRnJhbWVVUkwpLCBy
ZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtz
SW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gaG9zdHNBcmVFcXVhbChVUkwoeyB9LCBt
YWluRnJhbWVVUkwpLCByZXF1ZXN0LnVybCgpKTsKICAgICB9KTsKIH0KICAgICAKQEAgLTU5Mjcs
NyArNTkyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKFAKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAobV9wcm9jZXNzLT5pc1VuZGVyTWVtb3J5UHJlc3N1
cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29u
dHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBjdXJy
ZW50VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFpbiA9IFdl
YkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oV2ViQ29yZTo6VVJMKHsgfSwgY3Vy
cmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFj
eShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXko
KSwgZG9tYWluLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyMzY2NzMp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwODgsNyArMjA4OCw3IEBAIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIFdl
YlByb2Nlc3NQb28KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkUHJvY2Vzc1RvT3JpZ2luQ2Fj
aGVTZXQoV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4g
PSB0b1JlZ2lzdHJhYmxlRG9tYWluKHsgUGFyc2VkVVJMU3RyaW5nLCBwYWdlLnBhZ2VMb2FkU3Rh
dGUoKS51cmwoKSB9KTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gdG9SZWdpc3RyYWJs
ZURvbWFpbih7IHsgfSwgcGFnZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkgfSk7CiAgICAgYXV0byBy
ZXN1bHQgPSBtX3N3YXBwZWRQcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5hZGQocmVnaXN0
cmFibGVEb21haW4sICZwYWdlLnByb2Nlc3MoKSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9ICZwYWdlLnByb2Nlc3MoKTsKQEAg
LTIyMDIsNyArMjIwMiw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpw
cm8KICAgICAgICAgaWYgKGlzSW5pdGlhbExvYWRJbk5ld1dpbmRvd09wZW5lZEJ5RE9NICYmICFu
YXZpZ2F0aW9uLnJlcXVlc3Rlck9yaWdpbigpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHVybCA9
IFVSTCB7IFVSTCgpLCBuYXZpZ2F0aW9uLnJlcXVlc3Rlck9yaWdpbigpLnRvU3RyaW5nKCkgfTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgdXJsID0gVVJMIHsgUGFyc2VkVVJMU3RyaW5nLCBw
YWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OworICAgICAgICAgICAgdXJsID0gVVJMIHsgeyB9
LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OwogICAgICAgICBpZiAoIXVybC5pc1ZhbGlk
KCkgfHwgIXRhcmdldFVSTC5pc1ZhbGlkKCkgfHwgdXJsLmlzRW1wdHkoKSB8fCB1cmwuaXNCbGFu
a1VSTCgpIHx8IHJlZ2lzdHJhYmxlRG9tYWluc0FyZUVxdWFsKHVybCwgdGFyZ2V0VVJMKSkgewog
ICAgICAgICAgICAgcmVhc29uID0gIk5hdmlnYXRpb24gaXMgc2FtZS1zaXRlIl9zOwogICAgICAg
ICAgICAgcmV0dXJuIHBhZ2UucHJvY2VzcygpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTMs
NyArNzEzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdAogI2lm
IEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAgaWYgKHBhZ2VzLnNpemUoKSA9PSAxKSB7
CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07Ci0gICAgICAgIFN0cmluZyBkb21haW4g
PSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpQYXJz
ZWRVUkxTdHJpbmcsIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAg
ICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6
OlVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAg
IGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01l
c3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6
ZG9tYWluQ2F1c2luZ0NyYXNoS2V5KCksIGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpO
byk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHRva2Vucy5zaXplKCkg
IT0gMikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBVUkwgcmVxdWVzdFVSTCA9IFVS
TChQYXJzZWRVUkxTdHJpbmcsIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpKTsKKyAgICAgICAg
VVJMIHJlcXVlc3RVUkwgPSBVUkwoeyB9LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSk7CiAg
ICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3BlY3QocmVxdWVzdFVSTC5ob3N0
QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50NjQoKSwgdG9rZW5zWzFdLnRvVUludDY0KCkpOwog
ICAgIH0KIApAQCAtODgsNyArODgsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6dXNlCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVS
ZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgVVJMIHJlcXVl
c3RVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dl
dF91cmkocmVxdWVzdCkpOworICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKICAgICBpZiAoIXJlcXVlc3RVUkwu
cG9ydCgpKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19s
aXRlcmFsKFdFQktJVF9QT0xJQ1lfRVJST1IsIFdFQktJVF9QT0xJQ1lfRVJST1JfQ0FOTk9UX1NI
T1dfVVJJLCAiQ2Fubm90IHNob3cgaW5zcGVjdG9yIFVSTDogbm8gcG9ydCBwcm92aWRlZCIpKTsK
ICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IocmVxdWVzdCwg
ZXJyb3IuZ2V0KCkpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjp0YXIKICAgICAgICAgaWYgKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5n
KHdlYlZpZXcpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgVVJMIHdlYlZpZXdV
UkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3
KSk7CisgICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dl
dF91cmkod2ViVmlldykpOwogICAgICAgICBhdXRvIGNsaWVudEZvcldlYlZpZXcgPSBtX2luc3Bl
Y3RvckNsaWVudHMuZ2V0KHdlYlZpZXdVUkwuaG9zdEFuZFBvcnQoKSk7CiAgICAgICAgIGlmICgh
Y2xpZW50Rm9yV2ViVmlldykgewogICAgICAgICAgICAgLy8gVGhpcyB2aWV3IGlzIG5vdCBzaG93
aW5nIGEgaW5zcGVjdG9yIHZpZXcgYW55bW9yZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMu
bW0JKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMv
bWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMyLDcgKzMz
Miw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpvcGVuVVJMKGNvbnN0IFMKIAogICAgIHJl
c3VsdCA9IHRydWU7CiAgICAgQ0ZVUkxSZWYgbGF1bmNoZWRVUkw7Ci0gICAgc3RhdHVzID0gTFNP
cGVuQ0ZVUkxSZWYoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgp
LmdldCgpLCAmbGF1bmNoZWRVUkwpOworICAgIHN0YXR1cyA9IExTT3BlbkNGVVJMUmVmKFVSTCh7
IH0sIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgJmxhdW5jaGVkVVJMKTsKIAogICAg
IGlmIChsYXVuY2hlZFVSTCkgewogICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IFVSTChsYXVu
Y2hlZFVSTCkuc3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQkocmV2aXNpb24gMjM2NjczKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI3MCwxMyArMjcwLDEzIEBAIFJldGFpblB0cjxOU01lbnVJdGVtPiBX
ZWJDb250ZXh0TWVudVByb3gKICAgICBhdXRvIGl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICBpZiAoIWhpdFRlc3REYXRhLmFic29sdXRlTGlua1VS
TC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBhYnNvbHV0ZUxpbmtVUkwgPSBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBoaXRUZXN0RGF0YS5hYnNvbHV0ZUxpbmtVUkwpOworICAgICAgICBhdXRvIGFi
c29sdXRlTGlua1VSTCA9IFVSTCh7IH0sIGhpdFRlc3REYXRhLmFic29sdXRlTGlua1VSTCk7CiAg
ICAgICAgIGlmICghYWJzb2x1dGVMaW5rVVJMLmlzRW1wdHkoKSkKICAgICAgICAgICAgIFtpdGVt
cyBhZGRPYmplY3Q6KE5TVVJMICopYWJzb2x1dGVMaW5rVVJMXTsKICAgICB9CiAKICAgICBpZiAo
aGl0VGVzdERhdGEuaXNEb3dubG9hZGFibGVNZWRpYSAmJiAhaGl0VGVzdERhdGEuYWJzb2x1dGVN
ZWRpYVVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBkb3dubG9hZGFibGVNZWRpYVVSTCA9
IFVSTChQYXJzZWRVUkxTdHJpbmcsIGhpdFRlc3REYXRhLmFic29sdXRlTWVkaWFVUkwpOworICAg
ICAgICBhdXRvIGRvd25sb2FkYWJsZU1lZGlhVVJMID0gVVJMKHsgfSwgaGl0VGVzdERhdGEuYWJz
b2x1dGVNZWRpYVVSTCk7CiAgICAgICAgIGlmICghZG93bmxvYWRhYmxlTWVkaWFVUkwuaXNFbXB0
eSgpKQogICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDooTlNVUkwgKilkb3dubG9hZGFibGVN
ZWRpYVVSTF07CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyMzY2
NzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNyArNDYzLDYgQEAgYm9vbCBJbmplY3Rl
ZEJ1bmRsZTo6aXNQcm9jZXNzaW5nVXNlckdlcwogCiB2b2lkIEluamVjdGVkQnVuZGxlOjphZGRV
c2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQqIHNjcmlwdFdvcmxkLCBTdHJpbmcmJiBzb3VyY2UsIFN0cmluZyYmIHVybCwgQVBJ
OjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgLy8gdXJsIGlzIG5vdCBmcm9tIFVS
TDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IFVSTCwg
c28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgVVJMIGlu
c3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9uLgogICAgIFVzZXJTY3JpcHQg
dXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgVVJMKFVSTCgpLCB1cmwpLCB3aGl0ZWxpc3Qg
PyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xp
c3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBpbmpl
Y3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgcGFnZUdyb3VwLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpzY3JpcHRXb3JsZCwgV1RGTW92ZSh1c2VyU2Ny
aXB0KSk7CkBAIC00NzEsNyArNDcwLDYgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNj
cmlwdChXZWJQYQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2VyU3R5bGVTaGVldChXZWJQ
YWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3Jp
cHRXb3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBBUEk6OkFy
cmF5KiB3aGl0ZWxpc3QsIEFQSTo6QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKIHsKLSAgICAvLyB1cmwgaXMgbm90IGZy
b20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkg
VVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBV
UkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24uCiAgICAgVXNlclN0
eWxlU2hlZXQgdXNlclN0eWxlU2hlZXR7IHNvdXJjZSwgVVJMKFVSTCgpLCB1cmwpLCB3aGl0ZWxp
c3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFj
a2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBp
bmplY3RlZEZyYW1lcywgVXNlclN0eWxlVXNlckxldmVsIH07CiAKICAgICBwYWdlR3JvdXAtPnVz
ZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KCpzY3JpcHRXb3JsZCwgV1RG
TW92ZSh1c2VyU3R5bGVTaGVldCkpOwpAQCAtNDc5LDEzICs0NzcsMTEgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6YWRkVXNlclN0eWxlU2hlZXQoVwogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1v
dmVVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICAvLyB1
cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVl
biBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0
cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24u
CiAgICAgcGFnZUdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5yZW1vdmVVc2VyU2NyaXB0
V2l0aFVSTCgqc2NyaXB0V29ybGQsIFVSTChVUkwoKSwgdXJsKSk7CiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3Jv
dXAsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcm
IHVybCkKIHsKLSAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBo
YXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUg
cmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJM
U3RyaW5nVGFnIHZlcnNpb24uCiAgICAgcGFnZUdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIo
KS5yZW1vdmVVc2VyU3R5bGVTaGVldFdpdGhVUkwoKnNjcmlwdFdvcmxkLCBVUkwoVVJMKCksIHVy
bCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDcgQEAgYm9vbCBQbHVn
aW46OlBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlYwogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmxTdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgLy8gRklYTUU6IFdlIGNhbid0IGFzc3VtZSB0aGF0IHRoZSB1cmwgcGFzc2VkIGluIGhl
cmUgaXMgdmFsaWQuCi0gICAgcGFyYW1ldGVycy51cmwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmxTdHJpbmcpOworICAgIHBhcmFtZXRlcnMudXJsID0gVVJMKHsgfSwgdXJsU3RyaW5nKTsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uYW1lcykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lv
biAyMzY2NzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBA
IFVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHIKIHsKICAgICBTdHJpbmcg
dXJsU3RyaW5nOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3Rl
Ym9hcmRVUkwocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpH
ZXRQYXN0ZWJvYXJkVVJMOjpSZXBseSh1cmxTdHJpbmcpLCAwKTsKLSAgICByZXR1cm4gVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5n
KTsKIH0KIAogbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CkBAIC0zNjgsNyArMzY4LDcgQEAgV2ViQ29yZTo6VVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZAogewogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVw
bHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwotICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCiBTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM2Njc0
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTgtMTAtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgUGFyc2VkVVJMU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxNTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViU2Ny
aXB0RGVidWdnZXIubW06CisgICAgICAgICh0b05TVVJMKToKKwogMjAxOC0xMC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTCBzaG91
bGQgbm90IHVzZSBUZXh0RW5jb2RpbmcgaW50ZXJuYWxseQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCShyZXZpc2lv
biAyMzY2NzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBOU1VSTCAq
dG9OU1VSTChjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzKTsKKyAgICBy
ZXR1cm4gVVJMKHsgfSwgcyk7CiB9CiAKIHN0YXRpYyBXZWJGcmFtZSAqdG9XZWJGcmFtZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMTAtMDEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgUGFyc2Vk
VVJMU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTAxNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6CisgICAgICAgIChXZWJEb3dubG9hZDo6aW5pdFdpdGhS
ZXF1ZXN0KToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJVUkxS
ZXNwb25zZTo6Y3JlYXRlSW5zdGFuY2UpOgorCiAyMDE4LTA5LTI4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBzdXBwb3J0IGZvciBjcm9zcy1vcmlnaW4t
d2luZG93LXBvbGljeSBoZWFkZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
d25sb2FkQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWRDdXJsLmNwcAkocmV2aXNpb24gMjM2Njc0KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBA
QCBIUkVTVUxUIFdlYkRvd25sb2FkOjppbml0V2l0aFJlcXVlc3QoCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0OwotICAgIHJlc291
cmNlUmVxdWVzdC5zZXRVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgU3RyaW5nKHVybCkpKTsKKyAg
ICByZXNvdXJjZVJlcXVlc3Quc2V0VVJMKFVSTCh7IH0sIFN0cmluZyh1cmwpKSk7CiAKICAgICBj
b25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJNYXAgPSB3ZWJSZXF1ZXN0LT5odHRwSGVhZGVyRmll
bGRzKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRl
ck1hcC5iZWdpbigpOyBpdCAhPSBoZWFkZXJNYXAuZW5kKCk7ICsraXQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNyw3ICsyMjcsNyBAQCBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9uc2U6OmNy
ZWF0ZUluCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3Bv
bnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2Vi
SFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZShXZWJDb3JlOjpVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovLyIpLCBT
dHJpbmcoKSwgMCwgU3RyaW5nKCkpOworICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZShXZWJDb3JlOjpVUkwoeyB9LCAiaHR0cDovLyIpLCBTdHJpbmcoKSwgMCwgU3Ry
aW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMzY2OTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBQYXJzZWRVUkxTdHJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDE1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VSTC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6YXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJv
d3NlclF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmFzc2VydFVzZXJBZ2VudEZvclVS
TEhhc0xpbnV4UGxhdGZvcm1RdWlyayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphc3NlcnRV
c2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDE4LTEwLTAxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSBTdG9yYWdlUHJvY2VzcwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw3IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxDb25zdHJ1Y3RvckRlZmF1bHQpCiAKIFRFU1Rf
RihVUkxUZXN0LCBVUkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKIHsKLSAgICBVUkwga3VybChQYXJz
ZWRVUkxTdHJpbmcsICJodHRwOi8vdXNlcm5hbWU6cGFzc3dvcmRAd3d3LmV4YW1wbGUuY29tOjgw
ODAvaW5kZXguaHRtbD92YXI9dmFsI2ZyYWdtZW50Iik7CisgICAgVVJMIGt1cmwoeyB9LCAiaHR0
cDovL3VzZXJuYW1lOnBhc3N3b3JkQHd3dy5leGFtcGxlLmNvbTo4MDgwL2luZGV4Lmh0bWw/dmFy
PXZhbCNmcmFnbWVudCIpOwogCiAgICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNFbXB0eSgpKTsKICAg
ICBFWFBFQ1RfRkFMU0Uoa3VybC5pc051bGwoKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAgVEVTVF9G
KFVSTFRlc3QsIFVSTFByb3RvY29sSG9zdEFuZFBvcnQpCiAKIFRFU1RfRihVUkxUZXN0LCBVUkxE
YXRhVVJJU3RyaW5nU2hhcmluZykKIHsKLSAgICBVUkwgYmFzZVVSTChQYXJzZWRVUkxTdHJpbmcs
ICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7CisgICAgVVJMIGJhc2VVUkwoeyB9LCAiaHR0cDov
L3d3dy53ZWJraXQub3JnLyIpOwogICAgIFN0cmluZyB0aHJlZUFwcGxlcyA9ICJkYXRhOnRleHQv
cGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQsNzZPLzc2Ty83Nk8vIjsKIAogICAgIFVSTCB1cmwo
YmFzZVVSTCwgdGhyZWVBcHBsZXMpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAJKHJldmlzaW9uIDIzNjY3MykK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1
aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVz
ZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKKyAgICBTdHJpbmcgdWFT
dHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKIAogICAgIEVY
UEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQRUNUX1RSVUUo
dWFTdHJpbmcuY29udGFpbnMoIlNhZmFyaSIpKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIHZv
aWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hybwogCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2Vy
QWdlbnRGb3JVUkxIYXNMaW51eFBsYXRmb3JtUXVpcmsoY29uc3QgY2hhciogdXJsKQogewotICAg
IFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9y
VVJMKFVSTCh7IH0sIHVybCkpOwogCiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMo
IkxpbnV4IikpOwogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiTWFjaW50b3No
IikpOwpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxI
YXNMaW51CiAKIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3Jt
UXVpcmsoY29uc3QgY2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJk
VXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgIHtTdHJpbmcg
dWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKIAogICAg
IEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7CiAgICAgRVhQRUNU
X1RSVUUodWFTdHJpbmcuY29udGFpbnMoIk1hYyBPUyBYIikpOwpAQCAtNjksMTIgKzY5LDEyIEBA
IHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1AKIFRFU1QoVXNlckFnZW50
VGVzdCwgUXVpcmtzKQogewogICAgIC8vIEEgc2l0ZSB3aXRoIG5vdCBxdWlya3Mgc2hvdWxkIHJl
dHVybiBhIG51bGwgU3RyaW5nLgotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFn
ZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIikp
OworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0s
ICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIikpOwogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmlz
TnVsbCgpKTsKIAogI2lmICFPUyhMSU5VWCkgfHwgIUNQVShYODZfNjQpCiAgICAgLy8gR29vZ2xl
IHF1aXJrIHNob3VsZCBub3QgYWZmZWN0IHNpdGVzIHdpdGggc2ltaWxhciBkb21haW5zLgotICAg
IHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywg
Imh0dHA6Ly93d3cuZ29vZ2xlYmxvZy5jb20vIikpOworICAgIHVhU3RyaW5nID0gc3RhbmRhcmRV
c2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgImh0dHA6Ly93d3cuZ29vZ2xlYmxvZy5jb20vIikpOwog
ICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiTGludXggeDg2XzY0IikpOwogI2Vu
ZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351305</attachid>
            <date>2018-10-01 14:45:46 -0700</date>
            <delta_ts>2018-10-02 13:20:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190154-20181001144545.patch</filename>
            <type>text/plain</type>
            <size>67721</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNjY5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAxOC0xMC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBQ
YXJzZWRVUkxTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJlZm9yZSB0aGUgaW50cm9kdWN0aW9uIG9mIFVSTFBhcnNlciwgaXQgd291bGQgaW5k
aWNhdGUgdGhhdCB3ZSBzaG91bGQgYXNzdW1lIHRoZSBTdHJpbmcKKyAgICAgICAgaXMgZnJvbSBh
IHZhbGlkIFVSTCBzbyB3ZSBjYW4gc2tpcCBjYW5vbmljYWxpemF0aW9uIGFuZCBqdXN0IGZpbmQg
dGhlIG9mZnNldHMgaW5zaWRlIHRoZSBTdHJpbmcKKyAgICAgICAgdG8gcXVpY2tseSBjcmVhdGUg
YSBVUkwuICBJdCB3YXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdGhhdCBjYXVzZWQgc2Vj
dXJpdHkgaXNzdWVzIHdoZW4KKyAgICAgICAgbWlzdXNlZC4gIFNpbmNlIHRoZSBpbnRyb2R1Y3Rp
b24gb2YgVVJMUGFyc2VyLCB3ZSBoYXZlIGEgZmFzdCBwYXRoIGZvciBhbGwgVVJMIHBhcnNpbmcs
IHNvCisgICAgICAgIHJpZ2h0IG5vdyBpdCBhY3R1YWxseSBkb2Vzbid0IGNoYW5nZSBhbnkgYmVo
YXZpb3IuICBJdCdzIGp1c3QgYSByZWxpYyBvZiB0aGUgcGFzdCB0aGF0IGNvbXBsaWNhdGVzCisg
ICAgICAgIHRoZSBVUkwgY2xhc3MsIG1ha2luZyBpdCBoYXJkZXIgdG8gZXhwcmVzcyB3aGljaCBj
b25zdHJ1Y3RvciB0byB1c2UgYW5kIG1ha2luZyBpdCBoYXJkZXIgdG8gbW92ZQorICAgICAgICB0
aGUgY2xhc3MuCisKKyAgICAgICAgKiBNb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZp
Z2F0b3JDb250ZW50VXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ29udGVu
dFV0aWxzOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JDb250ZW50VXRpbHM6OmlzUHJvdG9jb2xIYW5kbGVyUmVnaXN0ZXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHM6OnVucmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6dXBkYXRlQmFzZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNl
Y3VyaXR5Q29udGV4dCk6CisgICAgICAgICogZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlZFN0
eWxlU2hlZXRDYWNoZSBjb25zdCk6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5
bGVTaGVldCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tcGxldGVVUkxzKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JVUkwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlVSTDo6Y3JlYXRlQmxvYlVSTCk6CisgICAgICAgICogaGlzdG9yeS9I
aXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6dXJsIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpvcmlnaW5hbFVSTCBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6bG9jYXRpb24gY29uc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvUHVi
bGljVVJMTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpz
dG9wKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0
IGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlw
dCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1l
bnQpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Okhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGU6OmFkZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6
OnJlc291cmNlRm9yVVJMKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
c3RhcnRMb2FkaW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdy
b3VwOjphZGRFbnRyeSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjYWNoZUdyb3VwRm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnVybEZv
ckJsYW5rRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpibGFua1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgICgpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1w
bDo6cG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6OmRlY29kZUJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVz
b2x2ZVF1ZXVlQ0ZOZXQ6OnVwZGF0ZUlzVXNpbmdQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJj
aENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNldENvb2tpZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0OjpSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKwogMjAxOC0x
MC0wMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
U3RvcmFnZVByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9yY29u
dGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0
aWxzLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZp
Z2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA3LDcgKzEwNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5hdmlnYXRvckNvbnRlbnRV
dGlsczoKICAgICBpZiAoIXZlcmlmeVByb3RvY29sSGFuZGxlclNjaGVtZShzY2hlbWUpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OwogCi0gICAgTmF2aWdhdG9y
Q29udGVudFV0aWxzOjpmcm9tKG5hdmlnYXRvci5mcmFtZSgpLT5wYWdlKCkpLT5jbGllbnQoKS0+
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoc2NoZW1lLCBiYXNlVVJMLCBVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpLCBuYXZpZ2F0b3IuZnJhbWUoKS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyh0aXRsZSkpOworICAgIE5hdmlnYXRvckNvbnRlbnRVdGlsczo6ZnJvbShuYXZpZ2F0b3Iu
ZnJhbWUoKS0+cGFnZSgpKS0+Y2xpZW50KCktPnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKHNjaGVt
ZSwgYmFzZVVSTCwgVVJMKHsgfSwgdXJsKSwgbmF2aWdhdG9yLmZyYW1lKCktPmRpc3BsYXlTdHJp
bmdNb2RpZmllZEJ5RW5jb2RpbmcodGl0bGUpKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0x
NDcsNyArMTQ3LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBOYXZpZ2F0b3JDb250ZW50VXRpbAog
ICAgIGlmICghdmVyaWZ5UHJvdG9jb2xIYW5kbGVyU2NoZW1lKHNjaGVtZSkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CiAKLSAgICByZXR1cm4gY3VzdG9tSGFu
ZGxlcnNTdGF0ZVN0cmluZyhOYXZpZ2F0b3JDb250ZW50VXRpbHM6OmZyb20obmF2aWdhdG9yLmZy
YW1lKCktPnBhZ2UoKSktPmNsaWVudCgpLT5pc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQoc2No
ZW1lLCBiYXNlVVJMLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKSk7CisgICAgcmV0dXJuIGN1
c3RvbUhhbmRsZXJzU3RhdGVTdHJpbmcoTmF2aWdhdG9yQ29udGVudFV0aWxzOjpmcm9tKG5hdmln
YXRvci5mcmFtZSgpLT5wYWdlKCkpLT5jbGllbnQoKS0+aXNQcm90b2NvbEhhbmRsZXJSZWdpc3Rl
cmVkKHNjaGVtZSwgYmFzZVVSTCwgVVJMKHsgfSwgdXJsKSkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBOYXZpZ2F0b3JDb250ZW50VXRpbHM6OnVucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoTmF2
aWdhdG9yJiBuYXZpZ2F0b3IsIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIHVy
bCkKQEAgLTE2Myw3ICsxNjMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOYXZpZ2F0b3JDb250ZW50
VXRpbHM6CiAgICAgaWYgKCF2ZXJpZnlQcm90b2NvbEhhbmRsZXJTY2hlbWUoc2NoZW1lKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKIAotICAgIE5hdmlnYXRv
ckNvbnRlbnRVdGlsczo6ZnJvbShuYXZpZ2F0b3IuZnJhbWUoKS0+cGFnZSgpKS0+Y2xpZW50KCkt
PnVucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoc2NoZW1lLCBiYXNlVVJMLCBVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpKTsKKyAgICBOYXZpZ2F0b3JDb250ZW50VXRpbHM6OmZyb20obmF2aWdhdG9y
LmZyYW1lKCktPnBhZ2UoKSktPmNsaWVudCgpLT51bnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKHNj
aGVtZSwgYmFzZVVSTCwgVVJMKHsgfSwgdXJsKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTU5LDcgKzMxNTksNyBA
QCB2b2lkIERvY3VtZW50Ojp1cGRhdGVCYXNlVVJMKCkKICAgICAgICAgLy8gVGhlIGRvY3VtZW50
VVJJIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkgZnJvbSBKYXZhU2NyaXB0LCBidXQgd3JpdGFibGUg
ZnJvbSBPYmplY3RpdmUgQywgc28gd2UgbmVlZCB0byByZXRhaW4KICAgICAgICAgLy8gdGhpcyBm
YWxsYmFjayBiZWhhdmlvci4gV2UgdXNlIGEgbnVsbCBiYXNlIFVSTCwgc2luY2UgdGhlIGRvY3Vt
ZW50VVJJIGF0dHJpYnV0ZSBpcyBhbiBhcmJpdHJhcnkgc3RyaW5nCiAgICAgICAgIC8vIGFuZCBE
T00gMyBDb3JlIGRvZXMgbm90IHNwZWNpZnkgaG93IGl0IHNob3VsZCBiZSByZXNvbHZlZC4KLSAg
ICAgICAgbV9iYXNlVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZG9jdW1lbnRVUkkoKSk7Cisg
ICAgICAgIG1fYmFzZVVSTCA9IFVSTCh7IH0sIGRvY3VtZW50VVJJKCkpOwogICAgIH0KIAogICAg
IGNsZWFyU2VsZWN0b3JRdWVyeUNhY2hlKCk7CkBAIC01NjA2LDkgKzU2MDYsOSBAQCB2b2lkIERv
Y3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICBpZiAoIW1fZnJhbWUpIHsKICAgICAg
ICAgLy8gTm8gc291cmNlIGZvciBhIHNlY3VyaXR5IGNvbnRleHQuCiAgICAgICAgIC8vIFRoaXMg
Y2FuIG9jY3VyIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgot
ICAgICAgICBzZXRDb29raWVVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkp
OworICAgICAgICBzZXRDb29raWVVUkwoVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSkpOwogICAgICAg
ICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkpOwotICAgICAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFBh
cnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOworICAgICAgICBzZXRDb250
ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KFVSTCB7IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5j
cHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHls
ZVNoZWV0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEV4dGVu
c2lvblN0eWxlU2hlZXRzOjp1cGRhdGVJbmplY3RlCiAgICAgCiAgICAgaWYgKCFvd25pbmdQYWdl
LT5jYXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpLmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBJZGVudGlmeSBvdXIgb3ZlcnJpZGUgc3R5bGUgc2hlZXQgd2l0aCBhIHVuaXF1ZSBVUkwg
LSBhIG5ldyBzY2hlbWUgYW5kIGEgVVVJRC4KLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFVSTD4gY2FwdGlvbnNTdHlsZVNoZWV0VVJMKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2FwdGlv
bnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIik7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IGNhcHRpb25zU3R5bGVTaGVldFVSTChVUkwo
KSwgInVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAy
MzREQzIzIik7CiAKICAgICAgICAgYXV0byBzaGVldCA9IGNyZWF0ZUV4dGVuc2lvbnNTdHlsZVNo
ZWV0KGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihtX2RvY3VtZW50KSwgY2FwdGlvbnNTdHlsZVNoZWV0
VVJMLCBvd25pbmdQYWdlLT5jYXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpLCBVc2Vy
U3R5bGVBdXRob3JMZXZlbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEy
Miw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2gKICAgICAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBhIHN5bnRoZXRpYyBYU0xTdHlsZVNoZWV0IHRoYXQgaXMg
ZW1iZWRkZWQuICBJdCBuZWVkcyB0byBiZSBhYmxlCiAgICAgICAgICAgICAvLyB0byBraWNrIG9m
ZiBpbXBvcnQvaW5jbHVkZSBsb2FkcyB0aGF0IGNhbiBoYW5nIG9mZiBzb21lIHBhcmVudCBzaGVl
dC4KICAgICAgICAgICAgIGlmIChtX2lzWFNMKSB7Ci0gICAgICAgICAgICAgICAgVVJMIGZpbmFs
VVJMKFBhcnNlZFVSTFN0cmluZywgbV9sb2NhbEhyZWYpOworICAgICAgICAgICAgICAgIFVSTCBm
aW5hbFVSTCh7IH0sIG1fbG9jYWxIcmVmKTsKICAgICAgICAgICAgICAgICBtX3NoZWV0ID0gWFNM
U3R5bGVTaGVldDo6Y3JlYXRlRW1iZWRkZWQodGhpcywgZmluYWxVUkwpOwogICAgICAgICAgICAg
ICAgIG1fbG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGRvY3VtZW50KCkuc2NoZWR1
bGVUb0FwcGx5WFNMVHJhbnNmb3JtcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVV
UkxzKERvY3VtZW50RnJhZ21lbgogewogICAgIFZlY3RvcjxBdHRyaWJ1dGVDaGFuZ2U+IGNoYW5n
ZXM7CiAKLSAgICBVUkwgcGFyc2VkQmFzZVVSTChQYXJzZWRVUkxTdHJpbmcsIGJhc2VVUkwpOwor
ICAgIFVSTCBwYXJzZWRCYXNlVVJMKHsgfSwgYmFzZVVSTCk7CiAKICAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PigqZnJhZ21lbnQpKSB7CiAgICAgICAg
IGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2JVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgVVJMIEJsb2JVUkw6OmNy
ZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJgogewogICAgIEFTU0VSVCghb3JpZ2luU3RyaW5nLmlz
RW1wdHkoKSk7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9ICJibG9iOiIgKyBvcmlnaW5TdHJpbmcg
KyAnLycgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CisgICAgcmV0dXJuIFVSTCh7IH0sIHVybFN0cmluZyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDEyICsxNzQsMTIgQEAg
Ym9vbCBIaXN0b3J5SXRlbTo6aGFzQ2FjaGVkUGFnZUV4cGlyZWQoKQogCiBVUkwgSGlzdG9yeUl0
ZW06OnVybCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJs
U3RyaW5nKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgbV91cmxTdHJpbmcpOwogfQogCiBVUkwgSGlz
dG9yeUl0ZW06Om9yaWdpbmFsVVJMKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9vcmlnaW5hbFVSTFN0cmluZyk7CisgICAgcmV0dXJuIFVSTCh7IH0sIG1fb3Jp
Z2luYWxVUkxTdHJpbmcpOwogfQogCiBjb25zdCBTdHJpbmcmIEhpc3RvcnlJdGVtOjpyZWZlcnJl
cigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lk
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpkaWRBdHRhY2hSZW5kCiBVUkwgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6OmxvY2F0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoaGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihzcmNkb2NBdHRyKSkKLSAgICAgICAgcmV0dXJuIFVSTChQYXJzZWRVUkxT
dHJpbmcsICJhYm91dDpzcmNkb2MiKTsKKyAgICAgICAgcmV0dXJuIFVSTCh7IH0sICJhYm91dDpz
cmNkb2MiKTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTk5LDcg
KzcxOTksNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvCiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgLy8gU2V0dGluZyBhIHNjcmlwdFVSTCBhbGxvd3MgdGhlIHNvdXJj
ZSB0byBiZSBkZWJ1Z2dhYmxlIGluIHRoZSBpbnNwZWN0b3IuCi0gICAgVVJMIHNjcmlwdFVSTCA9
IFVSTChQYXJzZWRVUkxTdHJpbmcsICJtZWRpYUNvbnRyb2xzU2NyaXB0Il9zKTsKKyAgICBVUkwg
c2NyaXB0VVJMID0gVVJMKHsgfSwgIm1lZGlhQ29udHJvbHNTY3JpcHQiX3MpOwogI2Vsc2UKICAg
ICBVUkwgc2NyaXB0VVJMOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGlj
VVJMTWFuYWdlci5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
UHVibGljVVJMTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBQdWJsaWNVUkxNYW5hZ2VyOjpzdG9wKCkKICAgICBtX2lzU3RvcHBlZCA9IHRydWU7CiAgICAg
Zm9yIChhdXRvJiByZWdpc3RyeSA6IG1fcmVnaXN0cnlUb1VSTCkgewogICAgICAgICBmb3IgKGF1
dG8mIHVybCA6IHJlZ2lzdHJ5LnZhbHVlKQotICAgICAgICAgICAgcmVnaXN0cnkua2V5LT51bnJl
Z2lzdGVyVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgICAgICAgICAgcmVnaXN0
cnkua2V5LT51bnJlZ2lzdGVyVVJMKFVSTCh7IH0sIHVybCkpOwogICAgIH0KIAogICAgIG1fcmVn
aXN0cnlUb1VSTC5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDE3LDcgKzE0MTcsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJlc291cmNlU3R5
bGVTCiAKICAgICBTdHJpbmcgZXJyb3I7CiAgICAgYm9vbCBiYXNlNjRFbmNvZGVkOwotICAgIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KGVycm9yLCBvd25lckRvY3VtZW50KCkt
PmZyYW1lKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fcGFnZVN0eWxlU2hlZXQtPmhyZWYoKSks
IHJlc3VsdCwgJmJhc2U2NEVuY29kZWQpOworICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3Vy
Y2VDb250ZW50KGVycm9yLCBvd25lckRvY3VtZW50KCktPmZyYW1lKCksIFVSTCh7IH0sIG1fcGFn
ZVN0eWxlU2hlZXQtPmhyZWYoKSksIHJlc3VsdCwgJmJhc2U2NEVuY29kZWQpOwogICAgIHJldHVy
biBlcnJvci5pc0VtcHR5KCkgJiYgIWJhc2U2NEVuY29kZWQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDcgKzQzOSw3IEBA
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm8KIAogICAgICAgICBmb3Ig
KGF1dG8mIHVybCA6IGFsbFJlc291cmNlc1VSTHNGb3JGcmFtZShmcmFtZSkpIHsKICAgICAgICAg
ICAgIFZlY3RvcjxDb29raWU+IGRvY0Nvb2tpZXNMaXN0OwotICAgICAgICAgICAgcmF3Q29va2ll
c0ltcGxlbWVudGVkID0gZ2V0UmF3Q29va2llcygqZG9jdW1lbnQsIFVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIGRvY0Nvb2tpZXNMaXN0KTsKKyAgICAgICAgICAgIHJhd0Nvb2tpZXNJbXBsZW1l
bnRlZCA9IGdldFJhd0Nvb2tpZXMoKmRvY3VtZW50LCBVUkwoeyB9LCB1cmwpLCBkb2NDb29raWVz
TGlzdCk7CiAKICAgICAgICAgICAgIGlmICghcmF3Q29va2llc0ltcGxlbWVudGVkKSB7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9yIHRo
ZSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KQEAgLTQ2Miw3ICs0NjIsNyBAQCB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyhFcnJvCiAKIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpOworICAgIFVSTCBwYXJzZWRVUkwoeyB9LCB1cmwpOwogICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZSgqZG9jdW1l
bnQsIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlQ29udAogICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHJlc291cmNlQ29udGVudChlcnJvclN0cmluZywgZnJhbWUsIFVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCksIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOworICAgIHJlc291
cmNlQ29udGVudChlcnJvclN0cmluZywgZnJhbWUsIFVSTCh7IH0sIHVybCksIGNvbnRlbnQsIGJh
c2U2NEVuY29kZWQpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNv
dXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFs
Q2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBjb25zdCBTdHJpbmcq
IG9wdGlvbmFsUmVxdWVzdElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCkBAIC01MDUsNyArNTA1
LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyYwogICAgIGlmICgh
bG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBVUkwga3VybChQYXJzZWRVUkxTdHJpbmcs
IHVybCk7CisgICAgVVJMIGt1cmwoeyB9LCB1cmwpOwogCiAgICAgU3RyaW5nIGNvbnRlbnQ7CiAg
ICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAJKHJldmlz
aW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgU3RyaW5n
IFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGbwogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKE1BS0VfU1RBVElDX1NU
UklOR19JTVBMKCJYLVNvdXJjZU1hcCIpKTsKIAogICAgIGlmICghc2NyaXB0LnVybC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9wYWdlQWdlbnQtPmNh
Y2hlZFJlc291cmNlKCZtX3BhZ2UubWFpbkZyYW1lKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHNj
cmlwdC51cmwpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9wYWdlQWdl
bnQtPmNhY2hlZFJlc291cmNlKCZtX3BhZ2UubWFpbkZyYW1lKCksIFVSTCh7IH0sIHNjcmlwdC51
cmwpKTsKICAgICAgICAgaWYgKHJlc291cmNlKSB7CiAgICAgICAgICAgICBTdHJpbmcgc291cmNl
TWFwSGVhZGVyID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKHNvdXJjZU1h
cEhUVFBIZWFkZXIpOwogICAgICAgICAgICAgaWYgKCFzb3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lv
biAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDExLDcgKzE0MTEsNyBAQCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNv
dXJjZT4+IERvY3VtZW50TG9hCiAKICAgICBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+IHN1
YnJlc291cmNlczsKICAgICBmb3IgKGF1dG8mIGhhbmRsZSA6IG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmFsbENhY2hlZFJlc291cmNlcygpLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN1
YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3VyY2UoeyBQYXJzZWRVUkxTdHJpbmcsIGhhbmRsZS0+
dXJsKCkgfSkpCisgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3Vy
Y2UoeyB7IH0sIGhhbmRsZS0+dXJsKCkgfSkpCiAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBw
ZW5kKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gc3Vi
cmVzb3VyY2VzOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDgsNyArMzA4LDcgQEAgRnJhbWVMb2FkZXI6On5GcmFtZUxvYWRl
cigpCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsKICAgICAvLyBUaGlzIHNvbWV3aGF0IG9k
ZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQu
Ci0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwg
U3Vic3RpdHV0ZURhdGEoKSkucHRyKCkpOworICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1f
Y2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChVUkwoeyB9LCBlbXB0
eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLnB0cigpKTsKICAgICBzZXRQcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKFNob3VsZENv
bnRpbnVlOjpZZXMpOwogCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5p
dEZvclN5bnRoZXNpemVkRG9jdQogICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGluaXRpYWxpemUg
dGhlIGRvY3VtZW50IFVSTCB0byB0aGUgc3BlY2lmaWVkIFVSTC4gQ3VycmVudGx5IHRoZSBVUkwg
aXMgZW1wdHkgYW5kIGhlbmNlCiAgICAgLy8gRnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkKCkg
d2lsbCBvdmVyd3JpdGUgdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgdG8gYmUgYWN0aXZlRG9jdW1l
bnRMb2FkZXIoKS0+ZG9jdW1lbnRVUkwoKS4KIAotICAgIGF1dG8gbG9hZGVyID0gbV9jbGllbnQu
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxTdHJpbmcs
IGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSk7CisgICAgYXV0byBsb2FkZXIgPSBt
X2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKHsgfSwgZW1w
dHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKTsKICAgICBsb2FkZXItPmF0dGFjaFRvRnJh
bWUobV9mcmFtZSk7CiAgICAgbG9hZGVyLT5zZXRSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKFVS
TCgpLCAidGV4dC9odG1sIl9zLCAwLCBTdHJpbmcoKSkpOwogICAgIGxvYWRlci0+c2V0Q29tbWl0
dGVkKHRydWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9y
eUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNyArODc2LDcgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKFJlZlB0cgogICAgIGlmIChtX2ZyYW1lLnBhZ2Uo
KS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYWRkVmlz
aXRlZExpbmsoKnBhZ2UsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZykpOworICAgIGFk
ZFZpc2l0ZWRMaW5rKCpwYWdlLCBVUkwoeyB9LCB1cmxTdHJpbmcpKTsKICAgICBtX2ZyYW1lLmxv
YWRlcigpLmNsaWVudCgpLnVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKIH0KIApAQCAtODk4LDcgKzg5
OCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZShSZWYKICAgICBpZiAo
bV9mcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGFkZFZpc2l0ZWRMaW5rKCptX2ZyYW1lLnBhZ2UoKSwgVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsU3RyaW5nKSk7CisgICAgYWRkVmlzaXRlZExpbmsoKm1fZnJhbWUucGFnZSgpLCBVUkwo
eyB9LCB1cmxTdHJpbmcpKTsKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnVwZGF0ZUds
b2JhbEhpc3RvcnkoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6YWRkUmVzb3Vy
Y2UoUmVmPEEKIHsKICAgICBhdXRvJiB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAKLSAgICBBU1NF
UlQoIVVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwor
ICAgIEFTU0VSVCghVVJMKHsgfSwgdXJsKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAg
QVNTRVJUKCFtX3Jlc291cmNlcy5jb250YWlucyh1cmwpKTsKIAogICAgIGlmIChtX3N0b3JhZ2VJ
RCkgewpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OmFkZFJlc291cmNl
KFJlZjxBCiAKIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogQXBwbGljYXRpb25DYWNoZTo6cmVz
b3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgQVNTRVJUKCFVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIVVS
TCh7IH0sIHVybCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIHJldHVybiBtX3Jlc291
cmNlcy5nZXQodXJsKTsKIH0gICAgCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAy
MzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk2LDcgKzg5Niw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpzdGFydExvYWRpbmcKICAgICBBU1NFUlQoIW1fbWFuaWZlc3RMb2Fk
ZXIpOwogICAgIEFTU0VSVCghbV9lbnRyeUxvYWRlcik7CiAKLSAgICBhdXRvIHJlcXVlc3QgPSBj
cmVhdGVSZXF1ZXN0KFVSTCB7IFBhcnNlZFVSTFN0cmluZywgZmlyc3RQZW5kaW5nRW50cnlVUkwg
fSwgbV9uZXdlc3RDYWNoZSA/IG1fbmV3ZXN0Q2FjaGUtPnJlc291cmNlRm9yVVJMKGZpcnN0UGVu
ZGluZ0VudHJ5VVJMKSA6IG51bGxwdHIpOworICAgIGF1dG8gcmVxdWVzdCA9IGNyZWF0ZVJlcXVl
c3QoVVJMIHsgeyB9LCBmaXJzdFBlbmRpbmdFbnRyeVVSTCB9LCBtX25ld2VzdENhY2hlID8gbV9u
ZXdlc3RDYWNoZS0+cmVzb3VyY2VGb3JVUkwoZmlyc3RQZW5kaW5nRW50cnlVUkwpIDogbnVsbHB0
cik7CiAKICAgICBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIgPSBtX2ZyYW1lLT5wYWdlKCkt
PnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1fZnJhbWUsIG1fY3VycmVudFJlc291cmNlSWRl
bnRpZmllciwgbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgcmVxdWVzdCwgUmVz
b3VyY2VSZXNwb25zZSB7IH0pOwpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkZWxpdmVyRGVsYXkKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphZGRF
bnRyeShjb25zdCBTdHJpbmcmIHVybCwgdW5zaWduZWQgdHlwZSkKIHsKICAgICBBU1NFUlQobV9j
YWNoZUJlaW5nVXBkYXRlZCk7Ci0gICAgQVNTRVJUKCFVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwp
Lmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIVVSTCh7IH0sIHVybCkuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCiAgICAgLy8gRG9uJ3QgYWRkIHRoZSBVUkwgaWYgd2Ug
YWxyZWFkeSBoYXZlIGFuIG1hc3RlciByZXNvdXJjZSBpbiB0aGUgY2FjaGUKICAgICAvLyAoaS5l
LiwgdGhlIG1haW4gcmVzb3VyY2UgZmluaXNoZWQgbG9hZGluZyBiZWZvcmUgdGhlIG1hbmlmZXN0
KS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBw
bGljYXRpb25DYWNoZVMKICAgICAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0
ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBVUkwgbWFuaWZl
c3RVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7
CisgICAgICAgIFVSTCBtYW5pZmVzdFVSTCA9IFVSTCh7IH0sIHN0YXRlbWVudC5nZXRDb2x1bW5U
ZXh0KDEpKTsKIAogICAgICAgICBpZiAobV9jYWNoZXNJbk1lbW9yeS5jb250YWlucyhtYW5pZmVz
dFVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI4NSw3ICsyODUsNyBAQCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTCiAgICAgCiAgICAgaW50IHJlc3VsdDsK
ICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpIHsK
LSAgICAgICAgVVJMIG1hbmlmZXN0VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgc3RhdGVtZW50
LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBVUkwgbWFuaWZlc3RVUkwgPSBVUkwoeyB9LCBz
dGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7CiAKICAgICAgICAgaWYgKG1fY2FjaGVzSW5NZW1v
cnkuY29udGFpbnMobWFuaWZlc3RVUkwpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMTA5
LDcgKzExMDksNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoCiAK
ICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gY2FjaGVTdGF0ZW1lbnQuc3Rl
cCgpKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFVSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBj
YWNoZVN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKKyAgICAgICAgVVJMIHVybCh7IH0sIGNh
Y2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpOwogICAgICAgICAKICAgICAgICAgaW50IGh0
dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpOwogCkBAIC0xMTYy
LDcgKzExNjIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoCiAg
ICAgCiAgICAgVmVjdG9yPFVSTD4gd2hpdGVsaXN0OwogICAgIHdoaWxlICgocmVzdWx0ID0gd2hp
dGVsaXN0U3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgCi0gICAgICAgIHdoaXRlbGlz
dC5hcHBlbmQoVVJMKFBhcnNlZFVSTFN0cmluZywgd2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVt
blRleHQoMCkpKTsKKyAgICAgICAgd2hpdGVsaXN0LmFwcGVuZChVUkwoeyB9LCB3aGl0ZWxpc3RT
dGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVf
RE9ORSkKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgd2hp
dGVsaXN0LCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTEx
OTIsNyArMTE5Miw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2gK
ICAgICAKICAgICBGYWxsYmFja1VSTFZlY3RvciBmYWxsYmFja1VSTHM7CiAgICAgd2hpbGUgKChy
ZXN1bHQgPSBmYWxsYmFja1N0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpIAotICAgICAg
ICBmYWxsYmFja1VSTHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFVSTChQYXJzZWRVUkxTdHJpbmcs
IGZhbGxiYWNrU3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpLCBVUkwoUGFyc2VkVVJMU3RyaW5n
LCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKSkpOworICAgICAgICBmYWxsYmFj
a1VSTHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFVSTCh7IH0sIGZhbGxiYWNrU3RhdGVtZW50Lmdl
dENvbHVtblRleHQoMCkpLCBVUkwoeyB9LCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0
KDEpKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgbG9hZCBmYWxsYmFjayBVUkxzLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFVSTD4+IEFwcGxpY2F0aW9uQ2EKIAogICAgIFZlY3RvcjxVUkw+IHVybHM7CiAgICAg
d2hpbGUgKHNlbGVjdFVSTHMuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgIHVybHMuYXBw
ZW5kKFVSTChQYXJzZWRVUkxTdHJpbmcsIHNlbGVjdFVSTHMuZ2V0Q29sdW1uVGV4dCgwKSkpOwor
ICAgICAgICB1cmxzLmFwcGVuZChVUkwoeyB9LCBzZWxlY3RVUkxzLmdldENvbHVtblRleHQoMCkp
KTsKIAogICAgIHJldHVybiBXVEZNb3ZlKHVybHMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAJKHJldmlz
aW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzIsNyArNDcyLDcgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdgogICAgIC8vIGl0J3MgcG9zc2libGUgdG8g
aGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKLSAgICAgICAgcmVzcG9u
c2VVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgcmVz
cG9uc2VVUkwgPSBVUkwoeyB9LCBlbXB0eVN0cmluZygpKTsKIAogICAgIGF1dG8gbWFpblJlc291
cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihtYXJrdXBTdHJpbmcpLCBy
ZXNwb25zZVVSTCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVURi04IiwgZnJhbWUudHJlZSgpLnVu
aXF1ZU5hbWUoKSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNDcsNyArMjI0Nyw3IEBAIEV4Y2VwdGlv
bk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3IKICAgICBpZiAoIWFjdGl2ZURvY3VtZW50
KQogICAgICAgICByZXR1cm4gUmVmUHRyPEZyYW1lPiB7IG51bGxwdHIgfTsKIAotICAgIFVSTCBj
b21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKFBhcnNlZFVSTFN0cmluZywg
ZW1wdHlTdHJpbmcoKSkgOiBmaXJzdEZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0
cmluZyk7CisgICAgVVJMIGNvbXBsZXRlZFVSTCA9IHVybFN0cmluZy5pc0VtcHR5KCkgPyBVUkwo
eyB9LCBlbXB0eVN0cmluZygpKSA6IGZpcnN0RnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
dXJsU3RyaW5nKTsKICAgICBpZiAoIWNvbXBsZXRlZFVSTC5pc0VtcHR5KCkgJiYgIWNvbXBsZXRl
ZFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAkocmV2aXNpb24g
MjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBVUkwgUGFnZVNlcmlhbGl6ZXI6OnVybEZvckJs
YW5rRnJhbWUoRnJhCiAgICAgaWYgKGl0ZXIgIT0gbV9ibGFua0ZyYW1lVVJMcy5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIFN0cmluZyB1cmwgPSAid3ljaXd5ZzovL2Zy
YW1lLyIgKyBTdHJpbmc6Om51bWJlcihtX2JsYW5rRnJhbWVDb3VudGVyKyspOwotICAgIFVSTCBm
YWtlVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwgZmFrZVVSTCh7IH0sIHVybCk7
CiAgICAgbV9ibGFua0ZyYW1lVVJMcy5hZGQoZnJhbWUsIGZha2VVUkwpOwogICAgIHJldHVybiBm
YWtlVVJMOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCShyZXZpc2lvbiAyMzY2NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OCwxOSArODgsNiBAQCB2b2lkIFVSTDo6aW52YWxpZGF0ZSgpCiAgICAgbV9xdWVyeUVuZCA9IDA7
CiB9CiAKLVVSTDo6VVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCi17
Ci0gICAgVVJMUGFyc2VyIHBhcnNlcih1cmwpOwotICAgICp0aGlzID0gcGFyc2VyLnJlc3VsdCgp
OwotCi0jaWYgT1MoV0lORE9XUykKLSAgICAvLyBGSVhNRSgxNDg1OTgpOiBXb3JrIGFyb3VuZCBX
aW5kb3dzIGxvY2FsIGZpbGUgaGFuZGxpbmcgYnVnIGluIENGTmV0d29yawotICAgIEFTU0VSVChp
c0xvY2FsRmlsZSgpIHx8IHVybCA9PSBtX3N0cmluZyk7Ci0jZWxzZQotICAgIEFTU0VSVCh1cmwg
PT0gbV9zdHJpbmcpOwotI2VuZGlmCi19Ci0KIFVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZykKIHsK
ICAgICBVUkxQYXJzZXIgcGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CkBAIC05MTAs
NyArODk3LDcgQEAgYm9vbCBwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZwogCiBj
b25zdCBVUkwmIGJsYW5rVVJMKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBz
dGF0aWNCbGFua1VSTChQYXJzZWRVUkxTdHJpbmcsICJhYm91dDpibGFuayIpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxVUkw+IHN0YXRpY0JsYW5rVVJMKFVSTCgpLCAiYWJvdXQ6Ymxhbmsi
KTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TC5oCShyZXZpc2lvbiAyMzY2NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsMTcgKzU1LDExIEBAIHB1YmxpYzoKIAogc3RydWN0IFVSTEhh
c2g7CiAKLWVudW0gUGFyc2VkVVJMU3RyaW5nVGFnIHsgUGFyc2VkVVJMU3RyaW5nIH07Ci0KIGNs
YXNzIFVSTCB7CiBwdWJsaWM6CiAgICAgLy8gR2VuZXJhdGVzIGEgVVJMIHdoaWNoIGNvbnRhaW5z
IGEgbnVsbCBzdHJpbmcuCiAgICAgVVJMKCkgeyBpbnZhbGlkYXRlKCk7IH0KIAotICAgIC8vIFRo
ZSBhcmd1bWVudCBpcyBhbiBhYnNvbHV0ZSBVUkwgc3RyaW5nLiBUaGUgc3RyaW5nIGlzIGFzc3Vt
ZWQgdG8gYmUgb3V0cHV0IG9mIFVSTDo6c3RyaW5nKCkgY2FsbGVkIG9uIGEgdmFsaWQKLSAgICAv
LyBVUkwgb2JqZWN0LCBvciBpbmRpc2Nlcm5pYmxlIGZyb20gc3VjaC4KLSAgICAvLyBJdCBpcyB1
c3VhbGx5IGJlc3QgdG8gYXZvaWQgcmVwZWF0ZWRseSBwYXJzaW5nIGEgc3RyaW5nLCB1bmxlc3Mg
bWVtb3J5IHNhdmluZyBvdXR3ZWlnaCB0aGUgcG9zc2libGUgc2xvdy1kb3ducy4KLSAgICBXRUJD
T1JFX0VYUE9SVCBVUkwoUGFyc2VkVVJMU3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmKTsKICAgICBl
eHBsaWNpdCBVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bG9hCiAgICAgc2V0TmV0d29ya1N0YXRlKG1fcHJlbG9h
ZCA9PSBNZWRpYVBsYXllcjo6Tm9uZSA/IE1lZGlhUGxheWVyOjpJZGxlIDogTWVkaWFQbGF5ZXI6
OkxvYWRpbmcpOwogICAgIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKTsK
IAotICAgIG1fYXNzZXRVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAgIG1fYXNz
ZXRVUkwgPSBVUkwoeyB9LCB1cmwpOwogICAgIG1fcmVxdWVzdGVkT3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShtX2Fzc2V0VVJMKTsKIAogICAgIC8vIERvbid0IGRvIGFueSBtb3JlIHdv
cmsgaWYgdGhlIHVybCBpcyBlbXB0eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAkocmV2aXNpb24gMjM2NjczKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw3IEBAIGJvb2wgQmxvYlJlZ2lzdHJ5SW1wbDo6
cG9wdWxhdGVCbG9ic0ZvckYKICAgICAgICAgYmxvYnNGb3JXcml0aW5nLmFwcGVuZCh7IH0pOwog
ICAgICAgICBibG9ic0ZvcldyaXRpbmcubGFzdCgpLmJsb2JVUkwgPSB1cmwuaXNvbGF0ZWRDb3B5
KCk7CiAKLSAgICAgICAgYXV0byogYmxvYkRhdGEgPSBnZXRCbG9iRGF0YUZyb21VUkwoeyBQYXJz
ZWRVUkxTdHJpbmcsIHVybCB9KTsKKyAgICAgICAgYXV0byogYmxvYkRhdGEgPSBnZXRCbG9iRGF0
YUZyb21VUkwoeyB7IH0sIHVybCB9KTsKICAgICAgICAgaWYgKCFibG9iRGF0YSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDIzNjY3MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIFJlc291
cmNlUmVxdWVzdEJhc2U6OgogICAgIFN0cmluZyBmaXJzdFBhcnR5Rm9yQ29va2llczsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGZpcnN0UGFydHlGb3JDb29raWVzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CisgICAgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IFVS
TCh7IH0sIGZpcnN0UGFydHlGb3JDb29raWVzKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bV9odHRwTWV0aG9kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcg
QEAgU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1ZwogICAgIGlmIChzdWdn
ZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdWdnZXN0ZWRGaWxlbmFt
ZTsKIAotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKFBhcnNlZFVSTFN0cmluZywg
Imh0dHA6Ly9leGFtcGxlLmNvbS8iKSwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSk7CisgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoeyB9LCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLCBT
dHJpbmcoKSwgLTEsIFN0cmluZygpKTsKICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgIFN0cmluZyBlc2NhcGVkU3VnZ2VzdGVkRmlsZW5hbWUgPSBTdHJpbmcoc3VnZ2Vz
dGVkRmlsZW5hbWUpLnJlcGxhY2UoJ1xcJywgIlxcXFwiKS5yZXBsYWNlKCciJywgIlxcXCIiKTsK
ICAgICBTdHJpbmcgdmFsdWUgPSBtYWtlU3RyaW5nKCJhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIs
IGVzY2FwZWRTdWdnZXN0ZWRGaWxlbmFtZSwgJyInKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQu
Y3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU1Jlc29sdmVRdWV1ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUs
OCBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZUNGTmV0Ojp1cGRhdGVJc1VzaW5nCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQ
YXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAi
aHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gaHR0cENGVVJMID0gVVJMKHsgfSwgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVD
RlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTCh7IH0sICJo
dHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94aWVzRm9y
VVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwogICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
cXVlc3QuaAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3QgOiBwdWJsaWMgUmVz
b3VyY2VSZXF1ZXN0QmFzZSB7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgdXJsKSAKLSAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hl
UG9saWN5KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgewog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTUsNyArMzE1LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBT
dAogICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFVSTCByZXF1ZXN0VXJsT2JqKFBhcnNlZFVSTFN0cmluZywg
cmVxdWVzdFVybCk7CisgICAgVVJMIHJlcXVlc3RVcmxPYmooeyB9LCByZXF1ZXN0VXJsKTsKICAg
ICBTdHJpbmcgcmVxdWVzdEhvc3QocmVxdWVzdFVybE9iai5ob3N0KCkudG9TdHJpbmcoKS5jb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKICAgICBTdHJpbmcgcmVxdWVzdFBhdGgocmVxdWVzdFVy
bE9iai5wYXRoKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAKQEAgLTQ1NCw3ICs0NTQs
NyBAQCBpbnQgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBTdHJpbmcmCiAgICAgaWYgKHVy
bC5pc0VtcHR5KCkgfHwgY29va2llLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0g
ICAgVVJMIHVybE9iaihQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIHVybE9iaih7IH0s
IHVybCk7CiAgICAgU3RyaW5nIGhvc3QodXJsT2JqLmhvc3QoKS50b1N0cmluZygpKTsKICAgICBT
dHJpbmcgcGF0aCh1cmxPYmoucGF0aCgpKTsKIApAQCAtNDg4LDcgKzQ4OCw3IEBAIGludCBDb29r
aWVKYXJEQjo6ZGVsZXRlQ29va2llKGNvbnN0IFN0cmkKICAgICBpZiAodXJsQ29waWVkLnN0YXJ0
c1dpdGgoJy4nKSkKICAgICAgICAgdXJsQ29waWVkLnJlbW92ZSgwLCAxKTsKIAotICAgIFVSTCB1
cmxPYmooUGFyc2VkVVJMU3RyaW5nLCB1cmxDb3BpZWQpOworICAgIFVSTCB1cmxPYmooeyB9LCB1
cmxDb3BpZWQpOwogICAgIGlmICh1cmxPYmouaXNWYWxpZCgpKSB7CiAgICAgICAgIFN0cmluZyBo
b3N0U3RyKHVybE9iai5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZyBwYXRoU3Ry
KHVybE9iai5wYXRoKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMjM2NjczKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKIHB1YmxpYzoK
ICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKFVSTCh7IH0sIHVybCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQ
cm90b2NvbENhY2hlUG9saWN5KQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgJKHJl
dmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNl
UmVxdWVzdEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgdXJsKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2Nv
bENhY2hlUG9saWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCh7IH0s
IHVybCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5
KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAgICAgICAsIG1f
c291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAgICAgICAgICAg
LCBtX2luaXRpYXRpbmdQYWdlSUQoMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEw
Miw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWwKICAgICBjYXNl
IFhTTFRfTE9BRF9ET0NVTUVOVDogewogICAgICAgICB4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciBj
b250ZXh0ID0gKHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyKWN0eHQ7CiAgICAgICAgIHhtbENoYXIq
IGJhc2UgPSB4bWxOb2RlR2V0QmFzZShjb250ZXh0LT5kb2N1bWVudC0+ZG9jLCBjb250ZXh0LT5u
b2RlKTsKLSAgICAgICAgVVJMIHVybChVUkwoUGFyc2VkVVJMU3RyaW5nLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihiYXNlKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVy
aSkpOworICAgICAgICBVUkwgdXJsKFVSTCh7IH0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGJhc2UpKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSk7CiAgICAgICAg
IHhtbEZyZWUoYmFzZSk7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM2Njg3KQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBA
QAorMjAxOC0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSBQYXJzZWRVUkxTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDE1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3Ry
eTo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1XaWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVzZXJDb250
ZW50VVJMUGF0dGVybi5oOgorICAgICAgICAoQVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm46Om1h
dGNoZXNVUkwgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5T
YW1lRG9jdW1lbnQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dGFyZ2V0TGlzdENoYW5nZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6b3BlblVSTCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN1
c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2Fk
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
cmVhdGVOZXdQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlk
VGVybWluYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWRkUHJvY2Vzc1RvT3JpZ2luQ2FjaGVTZXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25J
bnRlcm5hbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZU9yRmFpbGVk
VG9MYXVuY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6Y3JlYXRlU2hh
cmVNZW51SXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjphZGRVc2VyU2Ny
aXB0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTdHlsZVNoZWV0
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZVVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW46OlBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKwogMjAxOC0xMC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBpbnRl
cm5hbCBidWlsZCBhZnRlciByMjM2NjY1CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCw3ICs1
NTAsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0CiB7CiAgICAg
VmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBmaWxlUmVmZXJlbmNlczsKICAg
ICBmb3IgKGF1dG8mIHVybCA6IGJsb2JVUkxzKQotICAgICAgICBmaWxlUmVmZXJlbmNlcy5hcHBl
bmRWZWN0b3IoTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuZmlsZXNJbkJsb2IoKnRo
aXMsIHsgUGFyc2VkVVJMU3RyaW5nLCB1cmwgfSkpOworICAgICAgICBmaWxlUmVmZXJlbmNlcy5h
cHBlbmRWZWN0b3IoTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkuZmlsZXNJbkJsb2Io
KnRoaXMsIHsgeyB9LCB1cmwgfSkpOwogCiAgICAgZm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVy
ZW5jZXMpCiAgICAgICAgIGZpbGUtPnByZXBhcmVGb3JGaWxlQWNjZXNzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OndyaXRlQmxv
YlRvRmlsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGJsb2JGaWxlcyA9IGZp
bGVzSW5CbG9iKHsgUGFyc2VkVVJMU3RyaW5nLCBibG9iVVJMIH0pOworICAgIGF1dG8gYmxvYkZp
bGVzID0gZmlsZXNJbkJsb2IoeyB7IH0sIGJsb2JVUkwgfSk7CiAgICAgZm9yIChhdXRvJiBmaWxl
IDogYmxvYkZpbGVzKQogICAgICAgICBmaWxlLT5wcmVwYXJlRm9yRmlsZUFjY2VzcygpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MCwx
MiArNDcwLDEyIEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpkaWRFdmFsdWF0ZUoKIAog
dm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgU3RyaW5nJiByZXF1ZXN0VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlZGlyZWN0UmVzcG9uc2VVUkxTdHJpbmcsIHVpbnQzMl90IHJlZGlyZWN0UmVzcG9uc2VTdGF0
dXNDb2RlKQogewotICAgIG1fcGx1Z2luLT5zdHJlYW1XaWxsU2VuZFJlcXVlc3Qoc3RyZWFtSUQs
IFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlcXVlc3RVUkxTdHJpbmcpLCBVUkwoUGFyc2VkVVJMU3Ry
aW5nLCByZWRpcmVjdFJlc3BvbnNlVVJMU3RyaW5nKSwgcmVkaXJlY3RSZXNwb25zZVN0YXR1c0Nv
ZGUpOworICAgIG1fcGx1Z2luLT5zdHJlYW1XaWxsU2VuZFJlcXVlc3Qoc3RyZWFtSUQsIFVSTCh7
IH0sIHJlcXVlc3RVUkxTdHJpbmcpLCBVUkwoeyB9LCByZWRpcmVjdFJlc3BvbnNlVVJMU3RyaW5n
KSwgcmVkaXJlY3RSZXNwb25zZVN0YXR1c0NvZGUpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBTdHJpbmcmIHJlc3BvbnNlVVJMU3RyaW5nLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVycykKIHsKLSAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0
cmVhbUlELCBVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZVVSTFN0cmluZyksIHN0cmVhbUxl
bmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMsIFN0cmluZygpKTsKKyAg
ICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCBVUkwoeyB9LCBy
ZXNwb25zZVVSTFN0cmluZyksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5
cGUsIGhlYWRlcnMsIFN0cmluZygpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6Om1hbnVhbFN0cmVhbQogICAgIGlmIChtX3BsdWdpbkNhbmNlbGVkTWFudWFsU3RyZWFt
TG9hZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZVVSTFN0cmluZyksIHN0
cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMsIFN0cmluZygp
KTsKKyAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKFVSTCh7IH0s
IHJlc3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1l
VHlwZSwgaGVhZGVycywgU3RyaW5nKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOCArMTA0LDggQEAg
Ym9vbCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtSXNJblNhbQogICAgIGlmIChtYWluRnJh
bWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEgfHwgb3RoZXJNYWluRnJhbWVTdGF0ZS5zdGF0ZU9iamVj
dERhdGEpCiAgICAgICAgIHJldHVybiBtYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNlTnVt
YmVyID09IG90aGVyTWFpbkZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcjsKIAotICAg
IFdlYkNvcmU6OlVSTCB1cmwgPSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5n
LCBtYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcpOwotICAgIFdlYkNvcmU6OlVSTCBvdGhlclVSTCA9
IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIG90aGVyTWFpbkZyYW1lU3Rh
dGUudXJsU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKHsgfSwg
bWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpVUkwgb3RoZXJVUkwgPSBX
ZWJDb3JlOjpVUkwoeyB9LCBvdGhlck1haW5GcmFtZVN0YXRlLnVybFN0cmluZyk7CiAKICAgICBp
ZiAoKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSB8fCBvdGhlclVSTC5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIG90aGVy
VVJMKSkKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1i
ZXIgPT0gb3RoZXJNYWluRnJhbWVTdGF0ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyOwpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVc2VyQ29udGVudFVSTFBhdHRl
cm4uaAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVz
ZXJDb250ZW50VVJMUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBUElVc2Vy
Q29udGVudFVSTFBhdHRlcm5faAotI2RlZmluZSBBUElVc2VyQ29udGVudFVSTFBhdHRlcm5faAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKIApAQCAtNDMsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QoKSBjb25zdCB7IHJldHVybiBt
X3BhdHRlcm4uaG9zdCgpOyB9CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0dGVybi5zY2hlbWUoKTsgfQogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0dGVybi5pc1ZhbGlkKCk7IH07Ci0gICAgYm9vbCBtYXRjaGVzVVJMKGNv
bnN0IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHVybCkpOyB9CisgICAgYm9vbCBt
YXRjaGVzVVJMKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVy
bi5tYXRjaGVzKFdlYkNvcmU6OlVSTCh7IH0sIHVybCkpOyB9CiAgICAgYm9vbCBtYXRjaGVzU3Vi
ZG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaFN1YmRvbWFpbnMoKTsgfQog
CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm5TdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X3BhdHRlcm5TdHJpbmc7IH0KQEAgLTYwLDUgKzU5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0KLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3Rh
dGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuYwogU3VzcGVuZGVkUGFnZVByb3h5
OjpTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiAgICAgOiBtX3Bh
Z2UocGFnZSkKICAgICAsIG1fcHJvY2VzcyhXVEZNb3ZlKHByb2Nlc3MpKQotICAgICwgbV9vcmln
aW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHsgUGFyc2VkVVJMU3RyaW5nLCBpdGVtLnVy
bCgpIH0pKQorICAgICwgbV9vcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHsgeyB9
LCBpdGVtLnVybCgpIH0pKQogewogICAgIGl0ZW0uc2V0U3VzcGVuZGVkUGFnZSgqdGhpcyk7CiAg
ICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnJlZ2lzdGVyU3VzcGVuZGVkUGFnZVByb3h5KCp0
aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5OjpsbwogCiAgICAgVVJMIHJlc291cmNlRGlyZWN0b3J5VVJMOwog
ICAgIGlmIChyZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZy5pc051bGwoKSkKLSAgICAgICAgcmVz
b3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiZmlsZTovLy8iX3MpOwor
ICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTCh7IH0sICJmaWxlOi8vLyJfcyk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJMKFVSTCgpLCByZXNv
dXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3VyY2VEaXJlY3RvcnlV
UkwuaXNMb2NhbEZpbGUoKSkKQEAgLTQwOTYsNyArNDA5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGlu
Z1BhZ2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRy
KTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNl
ckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5J
ZGVudGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRT
dXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uICYmIGRlc3RpbmF0
aW9uRnJhbWVJbmZvLT5pc01haW5GcmFtZSgpICYmICFob3N0c0FyZUVxdWFsKFVSTChQYXJzZWRV
UkxTdHJpbmcsIG1fbWFpbkZyYW1lLT51cmwoKSksIHJlcXVlc3QudXJsKCkpICYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpC
YWNrRm9yd2FyZDsKKyAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRT
dXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uICYmIGRlc3RpbmF0
aW9uRnJhbWVJbmZvLT5pc01haW5GcmFtZSgpICYmICFob3N0c0FyZUVxdWFsKFVSTCh7IH0sIG1f
bWFpbkZyYW1lLT51cmwoKSksIHJlcXVlc3QudXJsKCkpICYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
Lm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9yd2FyZDsK
IAogICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246
OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdl
dCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJl
cXVlc3QpLCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92
ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKIApAQCAtNDE1
Myw3ICs0MTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbgog
ICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqZnJh
bWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICAgICAgYXV0
byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0
eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAg
ICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9tYWluRnJhbWUtPnVybCgpKSwgcmVxdWVzdC51cmwoKSk7CisgICAgICAgIGJv
b2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoVVJMKHsgfSwgbV9tYWluRnJh
bWUtPnVybCgpKSwgcmVxdWVzdC51cmwoKSk7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlv
biA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92
ZShyZXF1ZXN0KSwgVVJMIHsgfSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RG
TW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwpAQCAtNDMwNyw3ICs0MzA3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRgogICAgICAgICByZXBseShuZXdQYWdlLT5wYWdl
SUQoKSwgbmV3UGFnZS0+Y3JlYXRpb25QYXJhbWV0ZXJzKCkpOwogCiAgICAgICAgIFdlYnNpdGVE
YXRhU3RvcmU6OmNsb25lU2Vzc2lvbkRhdGEoKnRoaXMsICpuZXdQYWdlKTsKLSAgICAgICAgbmV3
UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uID0gaG9zdHNBcmVFcXVhbChVUkwoUGFyc2VkVVJMU3RyaW5nLCBtYWluRnJhbWVVUkwpLCBy
ZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtz
SW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gaG9zdHNBcmVFcXVhbChVUkwoeyB9LCBt
YWluRnJhbWVVUkwpLCByZXF1ZXN0LnVybCgpKTsKICAgICB9KTsKIH0KICAgICAKQEAgLTU5Mjcs
NyArNTkyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKFAKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAobV9wcm9jZXNzLT5pc1VuZGVyTWVtb3J5UHJlc3N1
cmUoKSkgewotICAgICAgICBTdHJpbmcgZG9tYWluID0gV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29u
dHJvbGxlZERvbWFpbihXZWJDb3JlOjpVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBjdXJy
ZW50VVJMKCkpLmhvc3QoKS50b1N0cmluZygpKTsKKyAgICAgICAgU3RyaW5nIGRvbWFpbiA9IFdl
YkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oV2ViQ29yZTo6VVJMKHsgfSwgY3Vy
cmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlmICghZG9tYWluLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aEVuaGFuY2VkUHJpdmFj
eShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmRvbWFpbkNhdXNpbmdKZXRzYW1LZXko
KSwgZG9tYWluLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyMzY2NzMp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwODgsNyArMjA4OCw3IEBAIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIFdl
YlByb2Nlc3NQb28KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkUHJvY2Vzc1RvT3JpZ2luQ2Fj
aGVTZXQoV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4g
PSB0b1JlZ2lzdHJhYmxlRG9tYWluKHsgUGFyc2VkVVJMU3RyaW5nLCBwYWdlLnBhZ2VMb2FkU3Rh
dGUoKS51cmwoKSB9KTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gdG9SZWdpc3RyYWJs
ZURvbWFpbih7IHsgfSwgcGFnZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkgfSk7CiAgICAgYXV0byBy
ZXN1bHQgPSBtX3N3YXBwZWRQcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5hZGQocmVnaXN0
cmFibGVEb21haW4sICZwYWdlLnByb2Nlc3MoKSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9ICZwYWdlLnByb2Nlc3MoKTsKQEAg
LTIyMDIsNyArMjIwMiw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpw
cm8KICAgICAgICAgaWYgKGlzSW5pdGlhbExvYWRJbk5ld1dpbmRvd09wZW5lZEJ5RE9NICYmICFu
YXZpZ2F0aW9uLnJlcXVlc3Rlck9yaWdpbigpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHVybCA9
IFVSTCB7IFVSTCgpLCBuYXZpZ2F0aW9uLnJlcXVlc3Rlck9yaWdpbigpLnRvU3RyaW5nKCkgfTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgdXJsID0gVVJMIHsgUGFyc2VkVVJMU3RyaW5nLCBw
YWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OworICAgICAgICAgICAgdXJsID0gVVJMIHsgeyB9
LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OwogICAgICAgICBpZiAoIXVybC5pc1ZhbGlk
KCkgfHwgIXRhcmdldFVSTC5pc1ZhbGlkKCkgfHwgdXJsLmlzRW1wdHkoKSB8fCB1cmwuaXNCbGFu
a1VSTCgpIHx8IHJlZ2lzdHJhYmxlRG9tYWluc0FyZUVxdWFsKHVybCwgdGFyZ2V0VVJMKSkgewog
ICAgICAgICAgICAgcmVhc29uID0gIk5hdmlnYXRpb24gaXMgc2FtZS1zaXRlIl9zOwogICAgICAg
ICAgICAgcmV0dXJuIHBhZ2UucHJvY2VzcygpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTMs
NyArNzEzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdAogI2lm
IEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAgICAgaWYgKHBhZ2VzLnNpemUoKSA9PSAxKSB7
CiAgICAgICAgIGF1dG8mIHBhZ2UgPSAqcGFnZXNbMF07Ci0gICAgICAgIFN0cmluZyBkb21haW4g
PSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpQYXJz
ZWRVUkxTdHJpbmcsIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAg
ICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFdlYkNvcmU6
OlVSTCh7IH0sIHBhZ2UuY3VycmVudFVSTCgpKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgICAg
IGlmICghZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBhZ2UubG9nRGlhZ25vc3RpY01l
c3NhZ2VXaXRoRW5oYW5jZWRQcml2YWN5KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6
ZG9tYWluQ2F1c2luZ0NyYXNoS2V5KCksIGRvbWFpbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpO
byk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcAkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHRva2Vucy5zaXplKCkg
IT0gMikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBVUkwgcmVxdWVzdFVSTCA9IFVS
TChQYXJzZWRVUkxTdHJpbmcsIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpKTsKKyAgICAgICAg
VVJMIHJlcXVlc3RVUkwgPSBVUkwoeyB9LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSk7CiAg
ICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3BlY3QocmVxdWVzdFVSTC5ob3N0
QW5kUG9ydCgpLCB0b2tlbnNbMF0udG9VSW50NjQoKSwgdG9rZW5zWzFdLnRvVUludDY0KCkpOwog
ICAgIH0KIApAQCAtODgsNyArODgsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6dXNlCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVS
ZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgVVJMIHJlcXVl
c3RVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dl
dF91cmkocmVxdWVzdCkpOworICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKICAgICBpZiAoIXJlcXVlc3RVUkwu
cG9ydCgpKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vycm9yX25ld19s
aXRlcmFsKFdFQktJVF9QT0xJQ1lfRVJST1IsIFdFQktJVF9QT0xJQ1lfRVJST1JfQ0FOTk9UX1NI
T1dfVVJJLCAiQ2Fubm90IHNob3cgaW5zcGVjdG9yIFVSTDogbm8gcG9ydCBwcm92aWRlZCIpKTsK
ICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IocmVxdWVzdCwg
ZXJyb3IuZ2V0KCkpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjp0YXIKICAgICAgICAgaWYgKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5n
KHdlYlZpZXcpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgVVJMIHdlYlZpZXdV
UkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3
KSk7CisgICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dl
dF91cmkod2ViVmlldykpOwogICAgICAgICBhdXRvIGNsaWVudEZvcldlYlZpZXcgPSBtX2luc3Bl
Y3RvckNsaWVudHMuZ2V0KHdlYlZpZXdVUkwuaG9zdEFuZFBvcnQoKSk7CiAgICAgICAgIGlmICgh
Y2xpZW50Rm9yV2ViVmlldykgewogICAgICAgICAgICAgLy8gVGhpcyB2aWV3IGlzIG5vdCBzaG93
aW5nIGEgaW5zcGVjdG9yIHZpZXcgYW55bW9yZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMu
bW0JKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMv
bWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMyLDcgKzMz
Miw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpvcGVuVVJMKGNvbnN0IFMKIAogICAgIHJl
c3VsdCA9IHRydWU7CiAgICAgQ0ZVUkxSZWYgbGF1bmNoZWRVUkw7Ci0gICAgc3RhdHVzID0gTFNP
cGVuQ0ZVUkxSZWYoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgp
LmdldCgpLCAmbGF1bmNoZWRVUkwpOworICAgIHN0YXR1cyA9IExTT3BlbkNGVVJMUmVmKFVSTCh7
IH0sIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgJmxhdW5jaGVkVVJMKTsKIAogICAg
IGlmIChsYXVuY2hlZFVSTCkgewogICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IFVSTChsYXVu
Y2hlZFVSTCkuc3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQkocmV2aXNpb24gMjM2NjczKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI3MCwxMyArMjcwLDEzIEBAIFJldGFpblB0cjxOU01lbnVJdGVtPiBX
ZWJDb250ZXh0TWVudVByb3gKICAgICBhdXRvIGl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CiAKICAgICBpZiAoIWhpdFRlc3REYXRhLmFic29sdXRlTGlua1VS
TC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBhYnNvbHV0ZUxpbmtVUkwgPSBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBoaXRUZXN0RGF0YS5hYnNvbHV0ZUxpbmtVUkwpOworICAgICAgICBhdXRvIGFi
c29sdXRlTGlua1VSTCA9IFVSTCh7IH0sIGhpdFRlc3REYXRhLmFic29sdXRlTGlua1VSTCk7CiAg
ICAgICAgIGlmICghYWJzb2x1dGVMaW5rVVJMLmlzRW1wdHkoKSkKICAgICAgICAgICAgIFtpdGVt
cyBhZGRPYmplY3Q6KE5TVVJMICopYWJzb2x1dGVMaW5rVVJMXTsKICAgICB9CiAKICAgICBpZiAo
aGl0VGVzdERhdGEuaXNEb3dubG9hZGFibGVNZWRpYSAmJiAhaGl0VGVzdERhdGEuYWJzb2x1dGVN
ZWRpYVVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBkb3dubG9hZGFibGVNZWRpYVVSTCA9
IFVSTChQYXJzZWRVUkxTdHJpbmcsIGhpdFRlc3REYXRhLmFic29sdXRlTWVkaWFVUkwpOworICAg
ICAgICBhdXRvIGRvd25sb2FkYWJsZU1lZGlhVVJMID0gVVJMKHsgfSwgaGl0VGVzdERhdGEuYWJz
b2x1dGVNZWRpYVVSTCk7CiAgICAgICAgIGlmICghZG93bmxvYWRhYmxlTWVkaWFVUkwuaXNFbXB0
eSgpKQogICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDooTlNVUkwgKilkb3dubG9hZGFibGVN
ZWRpYVVSTF07CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAyMzY2
NzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNyArNDYzLDYgQEAgYm9vbCBJbmplY3Rl
ZEJ1bmRsZTo6aXNQcm9jZXNzaW5nVXNlckdlcwogCiB2b2lkIEluamVjdGVkQnVuZGxlOjphZGRV
c2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQqIHNjcmlwdFdvcmxkLCBTdHJpbmcmJiBzb3VyY2UsIFN0cmluZyYmIHVybCwgQVBJ
OjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiB7Ci0gICAgLy8gdXJsIGlzIG5vdCBmcm9tIFVS
TDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IFVSTCwg
c28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgVVJMIGlu
c3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9uLgogICAgIFVzZXJTY3JpcHQg
dXNlclNjcmlwdCB7IFdURk1vdmUoc291cmNlKSwgVVJMKFVSTCgpLCB1cmwpLCB3aGl0ZWxpc3Qg
PyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xp
c3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBpbmpl
Y3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCiAgICAgcGFnZUdyb3VwLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpzY3JpcHRXb3JsZCwgV1RGTW92ZSh1c2VyU2Ny
aXB0KSk7CkBAIC00NzEsNyArNDcwLDYgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNj
cmlwdChXZWJQYQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2VyU3R5bGVTaGVldChXZWJQ
YWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3Jp
cHRXb3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBBUEk6OkFy
cmF5KiB3aGl0ZWxpc3QsIEFQSTo6QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKIHsKLSAgICAvLyB1cmwgaXMgbm90IGZy
b20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkg
VVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBV
UkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24uCiAgICAgVXNlclN0
eWxlU2hlZXQgdXNlclN0eWxlU2hlZXR7IHNvdXJjZSwgVVJMKFVSTCgpLCB1cmwpLCB3aGl0ZWxp
c3QgPyB3aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFj
a2xpc3QgPyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBp
bmplY3RlZEZyYW1lcywgVXNlclN0eWxlVXNlckxldmVsIH07CiAKICAgICBwYWdlR3JvdXAtPnVz
ZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KCpzY3JpcHRXb3JsZCwgV1RG
TW92ZSh1c2VyU3R5bGVTaGVldCkpOwpAQCAtNDc5LDEzICs0NzcsMTEgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6YWRkVXNlclN0eWxlU2hlZXQoVwogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1v
dmVVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICAvLyB1
cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVl
biBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0
cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24u
CiAgICAgcGFnZUdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5yZW1vdmVVc2VyU2NyaXB0
V2l0aFVSTCgqc2NyaXB0V29ybGQsIFVSTChVUkwoKSwgdXJsKSk7CiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3Jv
dXAsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcm
IHVybCkKIHsKLSAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBo
YXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUg
cmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJM
U3RyaW5nVGFnIHZlcnNpb24uCiAgICAgcGFnZUdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIo
KS5yZW1vdmVVc2VyU3R5bGVTaGVldFdpdGhVUkwoKnNjcmlwdFdvcmxkLCBVUkwoVVJMKCksIHVy
bCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDcgQEAgYm9vbCBQbHVn
aW46OlBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlYwogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmxTdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgLy8gRklYTUU6IFdlIGNhbid0IGFzc3VtZSB0aGF0IHRoZSB1cmwgcGFzc2VkIGluIGhl
cmUgaXMgdmFsaWQuCi0gICAgcGFyYW1ldGVycy51cmwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmxTdHJpbmcpOworICAgIHBhcmFtZXRlcnMudXJsID0gVVJMKHsgfSwgdXJsU3RyaW5nKTsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uYW1lcykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lv
biAyMzY2NzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBA
IFVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHIKIHsKICAgICBTdHJpbmcg
dXJsU3RyaW5nOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3Rl
Ym9hcmRVUkwocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpH
ZXRQYXN0ZWJvYXJkVVJMOjpSZXBseSh1cmxTdHJpbmcpLCAwKTsKLSAgICByZXR1cm4gVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICByZXR1cm4gVVJMKHsgfSwgdXJsU3RyaW5n
KTsKIH0KIAogbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CkBAIC0zNjgsNyArMzY4LDcgQEAgV2ViQ29yZTo6VVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZAogewogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkTmFtZSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVw
bHkodXJsU3RyaW5nLCB0aXRsZSksIDApOwotICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoeyB9LCB1cmxTdHJpbmcpOwogfQogCiBTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM2Njc0
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTgtMTAtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgUGFyc2VkVVJMU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAxNTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViU2Ny
aXB0RGVidWdnZXIubW06CisgICAgICAgICh0b05TVVJMKToKKwogMjAxOC0xMC0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTCBzaG91
bGQgbm90IHVzZSBUZXh0RW5jb2RpbmcgaW50ZXJuYWxseQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCShyZXZpc2lv
biAyMzY2NzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBOU1VSTCAq
dG9OU1VSTChjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzKTsKKyAgICBy
ZXR1cm4gVVJMKHsgfSwgcyk7CiB9CiAKIHN0YXRpYyBXZWJGcmFtZSAqdG9XZWJGcmFtZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjM2NjczKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMTAtMDEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgUGFyc2Vk
VVJMU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTAxNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6CisgICAgICAgIChXZWJEb3dubG9hZDo6aW5pdFdpdGhS
ZXF1ZXN0KToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJVUkxS
ZXNwb25zZTo6Y3JlYXRlSW5zdGFuY2UpOgorCiAyMDE4LTA5LTI4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBzdXBwb3J0IGZvciBjcm9zcy1vcmlnaW4t
d2luZG93LXBvbGljeSBoZWFkZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
d25sb2FkQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWRDdXJsLmNwcAkocmV2aXNpb24gMjM2Njc0KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBA
QCBIUkVTVUxUIFdlYkRvd25sb2FkOjppbml0V2l0aFJlcXVlc3QoCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0OwotICAgIHJlc291
cmNlUmVxdWVzdC5zZXRVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgU3RyaW5nKHVybCkpKTsKKyAg
ICByZXNvdXJjZVJlcXVlc3Quc2V0VVJMKFVSTCh7IH0sIFN0cmluZyh1cmwpKSk7CiAKICAgICBj
b25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJNYXAgPSB3ZWJSZXF1ZXN0LT5odHRwSGVhZGVyRmll
bGRzKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRl
ck1hcC5iZWdpbigpOyBpdCAhPSBoZWFkZXJNYXAuZW5kKCk7ICsraXQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCShyZXZpc2lvbiAyMzY2NzMpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNyw3ICsyMjcsNyBAQCBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9uc2U6OmNy
ZWF0ZUluCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3Bv
bnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2Vi
SFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZShXZWJDb3JlOjpVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovLyIpLCBT
dHJpbmcoKSwgMCwgU3RyaW5nKCkpOworICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZShXZWJDb3JlOjpVUkwoeyB9LCAiaHR0cDovLyIpLCBTdHJpbmcoKSwgMCwgU3Ry
aW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMzY2OTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBQYXJzZWRVUkxTdHJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDE1NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VSTC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6YXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJv
d3NlclF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmFzc2VydFVzZXJBZ2VudEZvclVS
TEhhc0xpbnV4UGxhdGZvcm1RdWlyayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphc3NlcnRV
c2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDE4LTEwLTAxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSBTdG9yYWdlUHJvY2VzcwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAJKHJldmlzaW9uIDIzNjY3MykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw3IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxDb25zdHJ1Y3RvckRlZmF1bHQpCiAKIFRFU1Rf
RihVUkxUZXN0LCBVUkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKIHsKLSAgICBVUkwga3VybChQYXJz
ZWRVUkxTdHJpbmcsICJodHRwOi8vdXNlcm5hbWU6cGFzc3dvcmRAd3d3LmV4YW1wbGUuY29tOjgw
ODAvaW5kZXguaHRtbD92YXI9dmFsI2ZyYWdtZW50Iik7CisgICAgVVJMIGt1cmwoeyB9LCAiaHR0
cDovL3VzZXJuYW1lOnBhc3N3b3JkQHd3dy5leGFtcGxlLmNvbTo4MDgwL2luZGV4Lmh0bWw/dmFy
PXZhbCNmcmFnbWVudCIpOwogCiAgICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNFbXB0eSgpKTsKICAg
ICBFWFBFQ1RfRkFMU0Uoa3VybC5pc051bGwoKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAgVEVTVF9G
KFVSTFRlc3QsIFVSTFByb3RvY29sSG9zdEFuZFBvcnQpCiAKIFRFU1RfRihVUkxUZXN0LCBVUkxE
YXRhVVJJU3RyaW5nU2hhcmluZykKIHsKLSAgICBVUkwgYmFzZVVSTChQYXJzZWRVUkxTdHJpbmcs
ICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7CisgICAgVVJMIGJhc2VVUkwoeyB9LCAiaHR0cDov
L3d3dy53ZWJraXQub3JnLyIpOwogICAgIFN0cmluZyB0aHJlZUFwcGxlcyA9ICJkYXRhOnRleHQv
cGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQsNzZPLzc2Ty83Nk8vIjsKIAogICAgIFVSTCB1cmwo
YmFzZVVSTCwgdGhyZWVBcHBsZXMpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAJKHJldmlzaW9uIDIzNjY3MykK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1
aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVz
ZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKKyAgICBTdHJpbmcgdWFT
dHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKIAogICAgIEVY
UEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQRUNUX1RSVUUo
dWFTdHJpbmcuY29udGFpbnMoIlNhZmFyaSIpKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIHZv
aWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hybwogCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2Vy
QWdlbnRGb3JVUkxIYXNMaW51eFBsYXRmb3JtUXVpcmsoY29uc3QgY2hhciogdXJsKQogewotICAg
IFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9y
VVJMKFVSTCh7IH0sIHVybCkpOwogCiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMo
IkxpbnV4IikpOwogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiTWFjaW50b3No
IikpOwpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxI
YXNMaW51CiAKIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3Jt
UXVpcmsoY29uc3QgY2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJk
VXNlckFnZW50Rm9yVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgIFN0cmluZyB1
YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sIHVybCkpOwogCiAgICAg
RVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIk1hY2ludG9zaCIpKTsKICAgICBFWFBFQ1Rf
VFJVRSh1YVN0cmluZy5jb250YWlucygiTWFjIE9TIFgiKSk7CkBAIC02OSwxMiArNjksMTIgQEAg
c3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFjUAogVEVTVChVc2VyQWdlbnRU
ZXN0LCBRdWlya3MpCiB7CiAgICAgLy8gQSBzaXRlIHdpdGggbm90IHF1aXJrcyBzaG91bGQgcmV0
dXJuIGEgbnVsbCBTdHJpbmcuCi0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdl
bnRGb3JVUkwoVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKSk7
CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwg
Imh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuaXNO
dWxsKCkpOwogCiAjaWYgIU9TKExJTlVYKSB8fCAhQ1BVKFg4Nl82NCkKICAgICAvLyBHb29nbGUg
cXVpcmsgc2hvdWxkIG5vdCBhZmZlY3Qgc2l0ZXMgd2l0aCBzaW1pbGFyIGRvbWFpbnMuCi0gICAg
dWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAi
aHR0cDovL3d3dy5nb29nbGVibG9nLmNvbS8iKSk7CisgICAgdWFTdHJpbmcgPSBzdGFuZGFyZFVz
ZXJBZ2VudEZvclVSTChVUkwoeyB9LCAiaHR0cDovL3d3dy5nb29nbGVibG9nLmNvbS8iKSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJMaW51eCB4ODZfNjQiKSk7CiAjZW5k
aWYKIAo=
</data>
<flag name="review"
          id="368655"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>