<?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>159850</bug_id>
          
          <creation_ts>2016-07-15 16:56:54 -0700</creation_ts>
          <short_desc>Use emptyString() / nullAtom when possible</short_desc>
          <delta_ts>2016-07-15 21:52:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211671</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-15 16:56:54 -0700</bug_when>
    <thetext>Use emptyString() / nullAtom when possible, for performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211673</commentid>
    <comment_count>1</comment_count>
      <attachid>283817</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-15 16:59:45 -0700</bug_when>
    <thetext>Created attachment 283817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211746</commentid>
    <comment_count>2</comment_count>
      <attachid>283817</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 21:52:37 -0700</bug_when>
    <thetext>Comment on attachment 283817
Patch

Clearing flags on attachment: 283817

Committed r203322: &lt;http://trac.webkit.org/changeset/203322&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211747</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 21:52:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283817</attachid>
            <date>2016-07-15 16:59:45 -0700</date>
            <delta_ts>2016-07-15 21:52:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159850-20160715165855.patch</filename>
            <type>text/plain</type>
            <size>52187</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ2MjQ5ZTFkZjgyODhjZmM3NzhiYzgx
MDAxMDMzMGI3YjJkMDgxNjguLjc4Njg1OWU4ODZmMWUwZDRkODI3MzgxZGIwM2NiZDUzMjUyNDM5
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDctMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgZW1wdHlTdHJpbmcoKSAvIG51bGxBdG9tIHdoZW4g
cG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTg1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBlbXB0eVN0cmluZygpIC8gbnVsbEF0b20gd2hlbiBwb3NzaWJsZSwgZm9yIHBlcmZvcm1h
bmNlLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdU
Rjo6QXRvbWljU3RyaW5nOjpjb252ZXJ0QVNDSUlDYXNlKToKKwogMjAxNi0wNy0xNSAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGVkIGEgbWFrZVJlZjxU
PiBoZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNTBiZmY3NmI2MWZiOWNmYzI4NmVhNjJhZGNhNTY0OTAz
ODhjYTkyLi45MTI0NmMwMWE0MjhmMWNlNTczZmQ1ODYzMDBkMmM2ZTc3NTI1M2M3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIxIEBACisyMDE2LTA3LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGVtcHR5U3RyaW5nKCkgLyBudWxsQXRvbSB3aGVuIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTk4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgZW1wdHlTdHJpbmcoKSAvIG51bGxBdG9tIHdoZW4gcG9zc2libGUsIGZvciBwZXJmb3JtYW5j
ZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGU6OmNoYW5uZWxJbnRlcnByZXRhdGlvbik6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ29ubmVjdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6c3VicHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6ZXh0ZW5zaW9ucyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBv
cnRzUHJlc3NBY3Rpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2Fj
aGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRl
Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNv
dXJjZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlTb3VyY2VEYXRhOjpD
U1NQcm9wZXJ0eVNvdXJjZURhdGEpOgorICAgICAgICAqIGNzcy9QYWdlUnVsZUNvbGxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVsZUNvbGxlY3Rvcjo6cGFnZU5hbWUpOgorICAg
ICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9y
aXR5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9uUGhyYXNl
V2l0aEFsdGVybmF0aXZlc01hcmtlcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0UHJlZml4KToKKyAgICAgICAgKiBlZGl0aW5nL0Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya2VyRGVzY3JpcHRpb25Gb3JB
cHBsaWVkQWx0ZXJuYXRpdmVUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1v
dmVOb2RlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6cG9zaXRpb25JbnNpZGVU
ZXh0Tm9kZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09y
QmFkR3JhbW1hcik6CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3Jl
OjpUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnN0
eWxlRm9yU2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmRXaXRoSW1hZ2VBbHRUZXh0KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6RmlsZVJlYWRlckxvYWRl
cik6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0Q3Vy
cmVudE1lZGlhQ29udHJvbHNTdGF0dXMpOgorICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6OkhUTUxPdXRwdXRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudCk6CisgICAgICAgICog
aHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXV0b0ZpbGxC
dXR0b25UeXBlVG9BY2Nlc3NpYmlsaXR5TGFiZWwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRGVidWdTaGFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVidWdTaGFkZXJz
OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4dExvc3RFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFN0YXR1c0Rp
c3BsYXlFbGVtZW50Ojp1cGRhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRS
ZWdpb246OnNjcm9sbCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRSZWdpb24uaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50Ojpkb2N1bWVudFVSTFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVu
dEJhc2VVUkxTdHJpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvbVR5cGVOYW1lKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kSG9zdDo6bG9jYWxpemVkU3RyaW5nc1VSTCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SGlzdG9yeTo6QWN0aW9uOjptZXJnZUlkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6cmVs
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRlcklkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlU2VsZWN0b3IpOgorICAgICAgICAqIGxvYWRlci9FbXB0
eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlZmVycmVyKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OmNsZWFyRmFpbGVkTG9h
ZFVSTCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6c2V0TmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmNsZWFyTmFtZSk6CisgICAgICAgICogcGFnZS9M
b2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cG9ydCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlByb3RlY3Rpb25TcGFjZUJhc2U6OlByb3RlY3Rpb25TcGFjZUJhc2UpOgorICAgICAg
ICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmhhbmRsZUVsZW1lbnRBdHRyaWJ1dGVzKToKKwogMjAxNi0wNy0xNSAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGVkIGEgbWFrZVJlZjxUPiBo
ZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCA3YmE2NGRiMDU1MDE3
N2Y1YjM1Yjc0MmE4ZDM5NDc0MDE4M2IwZjA4Li5jZDhlZjhmZmNiYzQ3MDJjNWYwN2YyY2JjYmFi
NzVhMTBhODExNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIEFMV0FZU19JTkxJTkUgQXRvbWljU3RyaW5nIEF0b21pY1N0cmluZzo6Y29udmVy
dEFTQ0lJQ2FzZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nSW1wbCogaW1wbCA9IHRoaXMtPmltcGwo
KTsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQotICAgICAgICByZXR1cm4gQXRvbWljU3RyaW5n
KCk7CisgICAgICAgIHJldHVybiBudWxsQXRvbTsKIAogICAgIC8vIENvbnZlcnQgc2hvcnQgc3Ry
aW5ncyB3aXRob3V0IGFsbG9jYXRpbmcgYSBuZXcgU3RyaW5nSW1wbCwgc2luY2UKICAgICAvLyB0
aGVyZSdzIGEgZ29vZCBjaGFuY2UgdGhlc2Ugc3RyaW5ncyBhcmUgYWxyZWFkeSBpbiB0aGUgYXRv
bWljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5k
ZXggZmI1ZWU5YzA4YjA5NGU1NzQyNDcyNWNiM2M1MzI1MjY2ZmRmYmZiMi4uMDc5N2Q2MTUwNmYz
YjA1ZDUzNjFhZjNiYjhkYTcyYWQ3YzllOWU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAtMjIwLDE0ICsyMjAsMTQgQEAgU3RyaW5nIEF1
ZGlvTm9kZTo6Y2hhbm5lbENvdW50TW9kZSgpCiB7CiAgICAgc3dpdGNoIChtX2NoYW5uZWxDb3Vu
dE1vZGUpIHsKICAgICBjYXNlIE1heDoKLSAgICAgICAgcmV0dXJuICJtYXgiOworICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJtYXgiKTsKICAgICBjYXNlIENsYW1wZWRNYXg6Ci0gICAgICAg
IHJldHVybiAiY2xhbXBlZC1tYXgiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjbGFt
cGVkLW1heCIpOwogICAgIGNhc2UgRXhwbGljaXQ6Ci0gICAgICAgIHJldHVybiAiZXhwbGljaXQi
OworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJleHBsaWNpdCIpOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlOjpzZXRDaGFubmVsQ291bnRNb2RlKGNvbnN0IFN0
cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yNTQsMTIgKzI1NCwxMiBAQCBTdHJp
bmcgQXVkaW9Ob2RlOjpjaGFubmVsSW50ZXJwcmV0YXRpb24oKQogewogICAgIHN3aXRjaCAobV9j
aGFubmVsSW50ZXJwcmV0YXRpb24pIHsKICAgICBjYXNlIEF1ZGlvQnVzOjpTcGVha2VyczoKLSAg
ICAgICAgcmV0dXJuICJzcGVha2VycyI7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInNw
ZWFrZXJzIik7CiAgICAgY2FzZSBBdWRpb0J1czo6RGlzY3JldGU6Ci0gICAgICAgIHJldHVybiAi
ZGlzY3JldGUiOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJkaXNjcmV0ZSIpOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlOjpzZXRDaGFubmVsSW50ZXJwcmV0
YXRpb24oY29uc3QgU3RyaW5nJiBpbnRlcnByZXRhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5jcHAKaW5kZXggNTBmNmIyOGQ0ODY2ZmYyZmVlN2IyOWQyYmFhOTNmZWFiODgxZjI2MC4u
YjRmNTdhYzE4Yzg5MTExYmU5YzdhNTM3M2E0ODQ5ZmM1M2U2NzBiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApA
QCAtNzYsNyArNzYsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIo
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiBEYXRhYmFzZVRyYWNrZXImIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpCiB7CiAgICAgaWYgKCFzdGF0aWNUcmFja2VyKQotICAgICAgICBzdGF0
aWNUcmFja2VyID0gbmV3IERhdGFiYXNlVHJhY2tlcigiIik7CisgICAgICAgIHN0YXRpY1RyYWNr
ZXIgPSBuZXcgRGF0YWJhc2VUcmFja2VyKGVtcHR5U3RyaW5nKCkpOwogCiAgICAgcmV0dXJuICpz
dGF0aWNUcmFja2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAppbmRleCA0NDgwYWVmOWZhNGFlNjFiMGYwMmZlNTg2YjU0N2Q2YzA5ZDlk
NGQ5Li44Y2JjN2MyNWJmMjZmYTlmMWEwNzdlZmY4MTY5NzI4MGE1M2FlZDA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTUwLDgg
KzE1MCw4IEBAIFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgLCBtX2J1ZmZlcmVkQW1vdW50KDApCiAgICAgLCBtX2J1ZmZlcmVkQW1vdW50
QWZ0ZXJDbG9zZSgwKQogICAgICwgbV9iaW5hcnlUeXBlKEJpbmFyeVR5cGVCbG9iKQotICAgICwg
bV9zdWJwcm90b2NvbCgiIikKLSAgICAsIG1fZXh0ZW5zaW9ucygiIikKKyAgICAsIG1fc3VicHJv
dG9jb2woZW1wdHlTdHJpbmcoKSkKKyAgICAsIG1fZXh0ZW5zaW9ucyhlbXB0eVN0cmluZygpKQog
ICAgICwgbV9yZXN1bWVUaW1lcigqdGhpcywgJldlYlNvY2tldDo6cmVzdW1lVGltZXJGaXJlZCkK
IHsKIH0KQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiB7
CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCgpIiwgdGhpcyk7CiAg
ICAgaWYgKG1fc3RhdGUgIT0gQ09OTkVDVElORykgewotICAgICAgICBkaWRDbG9zZSgwLCBDbG9z
aW5nSGFuZHNoYWtlSW5jb21wbGV0ZSwgV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVB
Ym5vcm1hbENsb3N1cmUsICIiKTsKKyAgICAgICAgZGlkQ2xvc2UoMCwgQ2xvc2luZ0hhbmRzaGFr
ZUluY29tcGxldGUsIFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9z
dXJlLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBiYWI0MTRiY2VlOTIx
NGZiYmViZWEwMWE2OWVjY2RhZTcyZmJmNzI5Li5jMDc4Yjk4ZTlkM2YxMjIxOTcxYTgwOTQxMGE1
MzVjZmRlMjM5ZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMDksMTAgKzEwOSwxMCBAQCBTdHJpbmcg
V2ViU29ja2V0Q2hhbm5lbDo6c3VicHJvdG9jb2woKQogewogICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBzdWJwcm90b2NvbCgpIiwgdGhpcyk7CiAgICAgaWYgKCFtX2hhbmRz
aGFrZSB8fCBtX2hhbmRzaGFrZS0+bW9kZSgpICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVj
dGVkKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
ICAgIFN0cmluZyBzZXJ2ZXJQcm90b2NvbCA9IG1faGFuZHNoYWtlLT5zZXJ2ZXJXZWJTb2NrZXRQ
cm90b2NvbCgpOwogICAgIGlmIChzZXJ2ZXJQcm90b2NvbC5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICByZXR1cm4gc2VydmVy
UHJvdG9jb2w7CiB9CiAKQEAgLTEyMCwxMCArMTIwLDEwIEBAIFN0cmluZyBXZWJTb2NrZXRDaGFu
bmVsOjpleHRlbnNpb25zKCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgZXh0ZW5zaW9ucygpIiwgdGhpcyk7CiAgICAgaWYgKCFtX2hhbmRzaGFrZSB8fCBtX2hhbmRz
aGFrZS0+bW9kZSgpICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQotICAgICAgICBy
ZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIFN0cmluZyBleHRl
bnNpb25zID0gbV9oYW5kc2hha2UtPmFjY2VwdGVkRXh0ZW5zaW9ucygpOwogICAgIGlmIChleHRl
bnNpb25zLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogICAgIHJldHVybiBleHRlbnNpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAwMWUz
ZjNjMDlhMWU1MjcwMGQ0N2U0MmQ1NmI3YTMwMmE0MGVhN2ViLi42MWExZmMzYzgxNWI4Y2UwMzNh
OTU4N2RlMmIxZGUxMDA2N2VjODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTIyMTcsNyArMjIxNyw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNQcmVzc0FjdGlvbigpIGNvbnN0CiAgICAg
ICAgICAgICAvLyBTZWFyY2ggd2l0aGluIGZvciBpbW1lZGlhdGUgZGVzY2VuZGFudHMgdGhhdCBh
cmUgc3RhdGljIHRleHQuIElmIHdlIGZpbmQgbW9yZSB0aGFuIG9uZQogICAgICAgICAgICAgLy8g
dGhlbiB0aGlzIGlzIGFuIGV2ZW50IGRlbGVnYXRvciBhY3Rpb25FbGVtZW50IGFuZCB3ZSBzaG91
bGQgZXhwb3NlIHRoZSBwcmVzcyBhY3Rpb24uCiAgICAgICAgICAgICBWZWN0b3I8QWNjZXNzaWJp
bGl0eVNlYXJjaEtleT4ga2V5cyh7IFN0YXRpY1RleHRTZWFyY2hLZXksIENvbnRyb2xTZWFyY2hL
ZXksIEdyYXBoaWNTZWFyY2hLZXksIEhlYWRpbmdTZWFyY2hLZXksIExpbmtTZWFyY2hLZXkgfSk7
Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgY3JpdGVyaWEoYXhPYmos
IFNlYXJjaERpcmVjdGlvbk5leHQsICIiLCAyLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhIGNyaXRlcmlhKGF4T2JqLCBTZWFyY2hEaXJlY3Rp
b25OZXh0LCBlbXB0eVN0cmluZygpLCAyLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgY3Jp
dGVyaWEuc2VhcmNoS2V5cyA9IGtleXM7CiAgICAgICAgICAgICBheE9iai0+ZmluZE1hdGNoaW5n
T2JqZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOwogICAgICAgICAgICAgaWYgKHJlc3VsdHMuc2l6
ZSgpID4gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9i
amVjdENhY2hlTWFjLm1tCmluZGV4IGYyMjZhZTY2ZmVmYWVjNmQ1NDJiYWQ1NTI5MzhiNDBjNDk3
YmExODYuLjliYzZlYjE3ZjQ3MWU5ZTZhYjAyYjNiZTgyMzZmNDI2NjBjZTFlNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5t
bQpAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNo
YW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAgICAgaWYgKCF0
ZXh0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwb3N0VGV4dFJlcGxhY2VtZW50
UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBBWFRleHRFZGl0VHlwZVVua25vd24sICIiLCB0
eXBlLCB0ZXh0LCBwb3NpdGlvbik7CisgICAgcG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90
aWZpY2F0aW9uKG9iamVjdCwgQVhUZXh0RWRpdFR5cGVVbmtub3duLCBlbXB0eVN0cmluZygpLCB0
eXBlLCB0ZXh0LCBwb3NpdGlvbik7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRS
ZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVj
dCwgQVhUZXh0RWRpdFR5cGUgZGVsZXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGRlbGV0ZWRUZXh0
LCBBWFRleHRFZGl0VHlwZSBpbnNlcnRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGluc2VydGVkVGV4
dCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAKaW5kZXggN2I1M2M1MWRiMDY0NWQ4NmJiMjgzN2Vj
ZGE2MWYwNjc5NTQxMTM5Zi4uMmZhMzNlYmNkYWJkOTAzNmFlMDFhZmFmZDBmMDRhZWU0Mzc0Y2Iw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAKQEAg
LTc0LDggKzc0LDggQEAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURh
dGEoY29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBvdGhlcikKIH0KIAogQ1NTUHJvcGVydHlT
b3VyY2VEYXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURhdGEoKQotICAgIDogbmFtZSgiIikKLSAgICAs
IHZhbHVlKCIiKQorICAgIDogbmFtZShlbXB0eVN0cmluZygpKQorICAgICwgdmFsdWUoZW1wdHlT
dHJpbmcoKSkKICAgICAsIGltcG9ydGFudChmYWxzZSkKICAgICAsIHBhcnNlZE9rKGZhbHNlKQog
ICAgICwgcmFuZ2UoU291cmNlUmFuZ2UoMCwgMCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxl
Q29sbGVjdG9yLmNwcAppbmRleCA4MzVhY2EwZGQyY2JlNTMxYTFjOTg3ZmUzMjhiZTlhM2RhZTVi
ZDBjLi5mOTdjOGUyZGFhYTlkZjVjZDFiZDdhM2FmZmQ3OGE3ODZjZGY4OTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBQ
YWdlUnVsZUNvbGxlY3Rvcjo6aXNGaXJzdFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QKIFN0cmlu
ZyBQYWdlUnVsZUNvbGxlY3Rvcjo6cGFnZU5hbWUoaW50IC8qIHBhZ2VJbmRleCAqLykgY29uc3QK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHBhZ2UgaW5kZXggdG8gcGFnZSBuYW1lIG1hcHBp
bmcuCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiB2b2lk
IFBhZ2VSdWxlQ29sbGVjdG9yOjptYXRjaEFsbFBhZ2VSdWxlcyhpbnQgcGFnZUluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
LmNwcAppbmRleCA1NjY2NTMwZjg1NjE0YmQyZWFlODY5NTUyOGE3OWY4NGE5MWZiMTQyLi5lMDM2
MTY0NzY1OTU2N2IxZTU5NjJlMmE0NDEwYjhiZmVkMzlhOWY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTg5
LDEyICsxODksMTIgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmEKIFN0cmluZyBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSkpCi0gICAgICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LT5jdXN0b21Qcm9wZXJ0eUlzSW1wb3J0
YW50KHByb3BlcnR5TmFtZSkgPyAiaW1wb3J0YW50IiA6ICIiOworICAgICAgICByZXR1cm4gbV9w
cm9wZXJ0eVNldC0+Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFudChwcm9wZXJ0eU5hbWUpID8gQVND
SUlMaXRlcmFsKCJpbXBvcnRhbnQiKSA6IGVtcHR5U3RyaW5nKCk7CiAKICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFw
cm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fcHJvcGVy
dHlTZXQtPnByb3BlcnR5SXNJbXBvcnRhbnQocHJvcGVydHlJRCkgPyAiaW1wb3J0YW50IiA6ICIi
OworICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LT5wcm9wZXJ0eUlzSW1wb3J0YW50KHByb3BlcnR5
SUQpID8gQVNDSUlMaXRlcmFsKCJpbXBvcnRhbnQiKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0
cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5U2hvcnRoYW5k
KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCAxMzNhYTdhZGU3ZGFhMmI4NzFjMDk3Mjcw
MzhlMGM0OTA3ODY2MzAzLi5iNGFlY2Y3Y2Q5YWI3YmQ0NjczYWI0NDExYmQ1MDQ3NTA0ZjFiMGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRE
aWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKFJhbmdlKiByCiAgICAgc2l6ZV90
IG51bWJlck9mQWx0ZXJuYXRpdmVzID0gaW50ZXJwcmV0YXRpb25zLnNpemUoKSAtIDE7CiAgICAg
Zm9yIChUZXh0SXRlcmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFtYXJrZWRUZXh0LmF0RW5kKCk7
IG1hcmtlZFRleHQuYWR2YW5jZSgpKSB7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gdGV4dFBpZWNl
ID0gbWFya2VkVGV4dC5yYW5nZSgpOwotICAgICAgICBEb2N1bWVudE1hcmtlciBtYXJrZXIoRG9j
dW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMsIHRleHRQaWVjZS0+
c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSwgIiIsIFZlY3RvcjxTdHJpbmc+
KG51bWJlck9mQWx0ZXJuYXRpdmVzKSwgUmV0YWluUHRyPGlkPigpKTsKKyAgICAgICAgRG9jdW1l
bnRNYXJrZXIgbWFya2VyKERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJu
YXRpdmVzLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCks
IGVtcHR5U3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KG51bWJlck9mQWx0ZXJuYXRpdmVzKSwgUmV0
YWluUHRyPGlkPigpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkFs
dGVybmF0aXZlczsgKytpKQogICAgICAgICAgICAgbWFya2VyLnNldEFsdGVybmF0aXZlKGludGVy
cHJldGF0aW9uc1tpICsgMV0sIGkpOwogICAgICAgICBhZGRNYXJrZXIoJnRleHRQaWVjZS0+c3Rh
cnRDb250YWluZXIoKSwgbWFya2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA3NmViN2Rj
ZDY3NGJiYWM2YjBjNzQ1YjQ3ZGI1ZWUyZTMzNjVlZGVjLi45ZWVkOTgyMWE0NTdhODQ4YjA5ZDU3
YTg4ODZjOTI3NjliYTNhNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNTAzLDcgKzE1
MDMsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZp
eCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3RhZ05hbWUuc2V0UHJlZml4KHByZWZpeC5pc0VtcHR5KCkgPyBBdG9taWNTdHJpbmcoKSA6
IHByZWZpeCk7CisgICAgbV90YWdOYW1lLnNldFByZWZpeChwcmVmaXguaXNFbXB0eSgpID8gbnVs
bEF0b20gOiBwcmVmaXgpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmltYWdl
U291cmNlVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGY5ZDU1N2NlYjM2YmRhZjNiNjE1M2NmYmZj
Njc0YjIwZTUzNmQ3YzkuLjAxMWMxNDcxOGUyYjdlZDZiNTY3MDdkODk0NWE4ZmNjNDdmZjVkYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcApAQCAtNjQwLDcgKzY0MCw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6cmVzcG9uZFRvTWFya2VyQXRFbmRPZldvcmQoY29uc3QgRG9jdW1lbnRNYXJrZXImCiAg
ICAgc3dpdGNoIChtYXJrZXIudHlwZSgpKSB7CiAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6U3Bl
bGxpbmc6CiAgICAgICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2
ZSA9IHdvcmRSYW5nZTsKLSAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmRldGFpbHMgPSBB
dXRvY29ycmVjdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKCIiKTsKKyAgICAgICAgbV9h
bHRlcm5hdGl2ZVRleHRJbmZvLmRldGFpbHMgPSBBdXRvY29ycmVjdGlvbkFsdGVybmF0aXZlRGV0
YWlsczo6Y3JlYXRlKGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4
dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnMpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudDoKQEAgLTY3MSw3
ICs2NzEsNyBAQCBTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya2VyRGVzY3Jp
cHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KEFsdAogCiAgICAgaWYgKGFsdGVybmF0aXZl
VGV4dFR5cGUgIT0gQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbiAmJiBhbHRlcm5hdGl2ZVRl
eHRUeXBlICE9IEFsdGVybmF0aXZlVGV4dFR5cGVEaWN0YXRpb25BbHRlcm5hdGl2ZXMgJiYgKG1h
cmtlclR5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50IHx8IG1hcmtlclR5cGUgPT0g
RG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQpKQogICAgICAgICByZXR1cm4gbV9hbHRlcm5h
dGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dDsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCA5MTc5N2ExYmZjYWY5MDI3MjU2NTEyM2RlZTRl
NTkyMTkxNGQ3OWQ2Li41ZjQ0N2MzY2JjY2NkMTA5M2I4MGUyZWFkZmVmNTAxNDQxMDk5Njc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApA
QCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZUNTU1By
b3BlcnR5KFBhc3NSZWZQdHI8U3R5bGVkRWxlbWVudD4gZWxlbWVudCwKIAogdm9pZCBDb21wb3Np
dGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUF0dHJpYnV0ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKIHsKLSAgICBzZXROb2RlQXR0
cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSwgQXRvbWljU3RyaW5nKCkpOworICAgIHNldE5vZGVB
dHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlLCBudWxsQXRvbSk7CiB9CiAKIHZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6OnNldE5vZGVBdHRyaWJ1dGUoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCkBAIC0xMzkwLDcgKzEzOTAsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAg
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudDsKICAgICAvLyBUaGlzIHVzZWQgdG8g
dXNlIGEgdGVybmFyeSBmb3IgaW5pdGlhbGl6YXRpb24sIGJ1dCB0aGF0IGNvbmZ1c2VkIHNvbWUg
dmVyc2lvbnMgb2YgR0NDLCBzZWUgYnVnIDM3OTEyCiAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGhU
b01vdmUgIT0gZW5kT2ZQYXJhZ3JhcGhUb01vdmUpCi0gICAgICAgIGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50KCksIGNyZWF0ZU1hcmt1cCgqcmFuZ2UsIDAsIERv
Tm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgdHJ1ZSksICIiKTsKKyAgICAgICAgZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQoKSwgY3JlYXRlTWFya3VwKCpyYW5n
ZSwgMCwgRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCB0cnVlKSwgZW1wdHlTdHJpbmcoKSk7
CiAKICAgICAvLyBBIG5vbi1lbXB0eSBwYXJhZ3JhcGgncyBzdHlsZSBpcyBtb3ZlZCB3aGVuIHdl
IGNvcHkgYW5kIG1vdmUgaXQuICBXZSBkb24ndCBtb3ZlIAogICAgIC8vIGFueXRoaW5nIGlmIHdl
J3JlIGdpdmVuIGFuIGVtcHR5IHBhcmFncmFwaCwgYnV0IGFuIGVtcHR5IHBhcmFncmFwaCBjYW4g
aGF2ZSBzdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNw
cAppbmRleCAxMDM5ODdhZDdlZGE5ODBmODBlNjEyOTZhNjM3YWExNGQ5OTcwODM2Li5hOTJkZjZl
NWJhMTY4MTgwZDczY2Y3NThlMTU4ZjEyMDAwNDFhMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtNTgsNyArNTgsNyBAQCBQb3NpdGlvbiBJ
bnNlcnRUZXh0Q29tbWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZShjb25zdCBQb3NpdGlvbiYg
cCkKIHsKICAgICBQb3NpdGlvbiBwb3MgPSBwOwogICAgIGlmIChpc1RhYlNwYW5UZXh0Tm9kZShw
b3MuYW5jaG9yTm9kZSgpKSkgewotICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUgPSBkb2N1
bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiIik7CisgICAgICAgIFJlZlB0cjxOb2RlPiB0
ZXh0Tm9kZSA9IGRvY3VtZW50KCkuY3JlYXRlRWRpdGluZ1RleHROb2RlKGVtcHR5U3RyaW5nKCkp
OwogICAgICAgICBpbnNlcnROb2RlQXRUYWJTcGFuUG9zaXRpb24odGV4dE5vZGUuZ2V0KCksIHBv
cyk7CiAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHROb2RlLmdldCgpKTsK
ICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIFBvc2l0aW9uIEluc2VydFRleHRDb21tYW5kOjpwb3Np
dGlvbkluc2lkZVRleHROb2RlKGNvbnN0IFBvc2l0aW9uJiBwKQogICAgIC8vIFByZXBhcmUgZm9y
IHRleHQgaW5wdXQgYnkgbG9va2luZyBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgogICAgIC8v
IEl0IG1heSBiZSBuZWNlc3NhcnkgdG8gaW5zZXJ0IGEgdGV4dCBub2RlIHRvIHJlY2VpdmUgY2hh
cmFjdGVycy4KICAgICBpZiAoIXBvcy5jb250YWluZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkgewot
ICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUgPSBkb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdU
ZXh0Tm9kZSgiIik7CisgICAgICAgIFJlZlB0cjxOb2RlPiB0ZXh0Tm9kZSA9IGRvY3VtZW50KCku
Y3JlYXRlRWRpdGluZ1RleHROb2RlKGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBpbnNlcnROb2Rl
QXQodGV4dE5vZGUuZ2V0KCksIHBvcyk7CiAgICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5O
b2RlKHRleHROb2RlLmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggNDA4YjcyZWE2ZDMyNGQ4NzQzYjMyNTI5NmZlMWNi
Y2ZjYmEyMTA2Yi4uZjFhODkyYWE4ZTVkMTViYzM1YjQxODE3ZTViOTAwZmZmY2Q1ODBkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMzAx
LDcgKzMwMSw3IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxs
aW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNldCwgYm9vCiBTdHJpbmcgVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1h
ciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFy
RGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQogewogICAgIGlmICghdW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogCiAgICAgU3RyaW5nIGZpcnN0Rm91bmRJdGVtOwogICAgIFN0cmluZyBtaXNzcGVsbGVk
V29yZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDAwNWZl
NjYxNjFmNjExNzQzODEyNmM1OTZhNzQwZjMyZTdiMDI4ZWYuLmYyM2ViMGYwZGE0MGUyYWEzNmM3
MmQ0MjAxYWZmODNjYzY2YTZmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21t
YW5kLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2Vs
ZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBEZWxldGVT
ZWxlY3Rpb24sICIiLCBvcHRpb25zKS0+YXBwbHkoKTsKKyAgICBUeXBpbmdDb21tYW5kOjpjcmVh
dGUoZG9jdW1lbnQsIERlbGV0ZVNlbGVjdGlvbiwgZW1wdHlTdHJpbmcoKSwgb3B0aW9ucyktPmFw
cGx5KCk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVu
dCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3Nl
ZChEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dEdyCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBUeXBpbmdDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIERlbGV0ZUtleSwg
IiIsIG9wdGlvbnMsIGdyYW51bGFyaXR5KS0+YXBwbHkoKTsKKyAgICBUeXBpbmdDb21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQsIERlbGV0ZUtleSwgZW1wdHlTdHJpbmcoKSwgb3B0aW9ucywgZ3JhbnVs
YXJpdHkpLT5hcHBseSgpOwogfQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVL
ZXlQcmVzc2VkKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zLCBUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5k
Ojpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0
aW9ucywKICAgICAgICAgfQogICAgIH0KIAotICAgIFR5cGluZ0NvbW1hbmQ6OmNyZWF0ZShkb2N1
bWVudCwgRm9yd2FyZERlbGV0ZUtleSwgIiIsIG9wdGlvbnMsIGdyYW51bGFyaXR5KS0+YXBwbHko
KTsKKyAgICBUeXBpbmdDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIEZvcndhcmREZWxldGVLZXks
IGVtcHR5U3RyaW5nKCksIG9wdGlvbnMsIGdyYW51bGFyaXR5KS0+YXBwbHkoKTsKIH0KIAogdm9p
ZCBUeXBpbmdDb21tYW5kOjp1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJyZW50U2Vs
ZWN0aW9uKFR5cGluZ0NvbW1hbmQqIHR5cGluZ0NvbW1hbmQsIEZyYW1lKiBmcmFtZSkKQEAgLTE5
OSw3ICsxOTksNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhayhEb2N1bWVu
dCYgZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGFwcGx5Q29tbWFuZChUeXBpbmdDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIEluc2VydExp
bmVCcmVhaywgIiIsIG9wdGlvbnMpKTsKKyAgICBhcHBseUNvbW1hbmQoVHlwaW5nQ29tbWFuZDo6
Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRMaW5lQnJlYWssIGVtcHR5U3RyaW5nKCksIG9wdGlvbnMp
KTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1
b3RlZENvbnRlbnQoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKERvY3VtZW50JiBkb2N1bWVu
dCwgT3B0aW9ucyBvcHRpb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhcHBseUNv
bW1hbmQoVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3IsICIiLCBvcHRpb25zKSk7CisgICAgYXBwbHlDb21tYW5kKFR5cGluZ0NvbW1hbmQ6OmNy
ZWF0ZShkb2N1bWVudCwgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yLCBlbXB0eVN0cmluZygpLCBv
cHRpb25zKSk7CiB9CiAKIFJlZlB0cjxUeXBpbmdDb21tYW5kPiBUeXBpbmdDb21tYW5kOjpsYXN0
VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKEZyYW1lJiBmcmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IDBhZmNmYThlNGVmMjIy
MDgyMDk1ZTk0YzFlYzRlYjA1NDA3YjA2MzguLjE2NTQ3ZmQ2ODY3ZTdmZDc3NmY5NTk5Mzg2YjJi
MDljMThkOTQxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbQpAQCAtNjEsNyArNjEsNyBAQCBjb25zdCBSZW5kZXJTdHlsZSogRWRpdG9yOjpzdHlsZUZv
clNlbGVjdGlvblN0YXJ0KEZyYW1lKiBmcmFtZSwgTm9kZSAqJm5vZGVUb1JlbQogICAgIFN0cmlu
ZyBzdHlsZVRleHQgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+YXNUZXh0KCkgKyAiIGRpc3BsYXk6
IGlubGluZSI7CiAgICAgc3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIsIHN0eWxlVGV4dCk7CiAKLSAgICBzdHlsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGZyYW1l
LT5kb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoIiIpLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKKyAgICBzdHlsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGZyYW1lLT5kb2N1bWVudCgpLT5j
cmVhdGVFZGl0aW5nVGV4dE5vZGUoZW1wdHlTdHJpbmcoKSksIEFTU0VSVF9OT19FWENFUFRJT04p
OwogCiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSA9IHBvc2l0aW9uLmRlcHJlY2F0ZWRO
b2RlKCktPnBhcmVudE5vZGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCmluZGV4IDc2NWIyYmQ4NmVhZDNhZDViZWZkY2JkYTM0NDdlNzExYWI1YmFjYTkuLmJmNDdj
MGNkNmY1NzM0NDYwNjU1YTFmYzQ0ZDkxYzUyN2EzN2FiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEVkaXRvcjo6cmVw
bGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQogU3RyaW5nIEVkaXRvcjo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiB7
CiAgICAgaWYgKCFjYW5Db3B5KCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAgICAgU3RyaW5nIHRleHQgPSBzZWxlY3RlZFRleHQoKTsKICAgICB0
ZXh0LnJlcGxhY2Uobm9CcmVha1NwYWNlLCAnICcpOwogICAgIHJldHVybiB0ZXh0OwpAQCAtMjk3
LDcgKzI5Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQo
KQogU3RyaW5nIEVkaXRvcjo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZFdpdGhJbWFnZUFs
dFRleHQoKQogewogICAgIGlmICghY2FuQ29weSgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIFN0cmluZyB0ZXh0ID0gc2VsZWN0ZWRUZXh0
Rm9yRGF0YVRyYW5zZmVyKCk7CiAgICAgdGV4dC5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsK
ICAgICByZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwCmluZGV4IDNjMGFiOTEyNDgzMzVkYzkwMGMwZDZjZTgxNzBkMjhkYmIzMTNmYTcuLjM5
MWYyMzUzODBiOTFiNjg4NDBlYzU4Mzk0NTM1M2IxMzczOTUwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBGaWxlUmVh
ZGVyTG9hZGVyOjpGaWxlUmVhZGVyTG9hZGVyKFJlYWRUeXBlIHJlYWRUeXBlLCBGaWxlUmVhZGVy
TG9hZGVyQ2xpZW50KiBjbAogICAgIDogbV9yZWFkVHlwZShyZWFkVHlwZSkKICAgICAsIG1fY2xp
ZW50KGNsaWVudCkKICAgICAsIG1faXNSYXdEYXRhQ29udmVydGVkKGZhbHNlKQotICAgICwgbV9z
dHJpbmdSZXN1bHQoIiIpCisgICAgLCBtX3N0cmluZ1Jlc3VsdChlbXB0eVN0cmluZygpKQogICAg
ICwgbV92YXJpYWJsZUxlbmd0aChmYWxzZSkKICAgICAsIG1fYnl0ZXNMb2FkZWQoMCkKICAgICAs
IG1fdG90YWxCeXRlcygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXgg
MjVhNjc0MDU2NmEyMWQxMTVhZmI3ZmQxYzA4NGVjN2RlOTQxYTI5Mi4uNTIwODJkMjFkMzE4MjA4
YjA4NTZmZDM4OTc1NTYxODc1NjgzODUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3Jt
RGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sIG11bHRpcGFydCkgY29uc3QKICAgICAv
LyBJZiBubyBmaWxlbmFtZSBhdCBhbGwgaXMgZW50ZXJlZCwgcmV0dXJuIHN1Y2Nlc3NmdWwgYnV0
IGVtcHR5LgogICAgIC8vIE51bGwgd291bGQgYmUgbW9yZSBsb2dpY2FsLCBidXQgTmV0c2NhcGUg
cG9zdHMgYW4gZW1wdHkgZmlsZS4gQXJnaC4KICAgICBpZiAoIW51bUZpbGVzKSB7Ci0gICAgICAg
IGVuY29kaW5nLmFwcGVuZEJsb2IoZWxlbWVudCgpLm5hbWUoKSwgRmlsZTo6Y3JlYXRlKCIiKSk7
CisgICAgICAgIGVuY29kaW5nLmFwcGVuZEJsb2IoZWxlbWVudCgpLm5hbWUoKSwgRmlsZTo6Y3Jl
YXRlKGVtcHR5U3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBlMjhkOTA4NmMzNDllMzA5
OGNiODE1MjRkZmRmZTQ2ZWRlY2Y4Y2FmLi41ZGU5YzNlNDdhMzczMzllMTRhNDc5Yzk2ZDc1ZWVj
NzBiNGMzNmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTY3MTUsMTEgKzY3MTUsMTEgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmdldEN1cnJlbnRN
ZWRpYUNvbnRyb2xzU3RhdHVzKCkKICAgICBKU0M6OkpTT2JqZWN0KiBjb250cm9sbGVyT2JqZWN0
ID0gY29udHJvbGxlclZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjb250cm9sbGVyT2JqZWN0
LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJnZXRDdXJyZW50
Q29udHJvbHNTdGF0dXMiKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpIHx8IGZ1bmN0
aW9uVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uID0g
ZnVuY3Rpb25WYWx1ZS50b09iamVjdChleGVjKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKTsKQEAgLTY3MjcsMTIgKzY3MjcsMTIgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6
OmdldEN1cnJlbnRNZWRpYUNvbnRyb2xzU3RhdHVzKCkKICAgICBKU0M6OkNhbGxUeXBlIGNhbGxU
eXBlID0gZnVuY3Rpb24tPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CiAgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OwogICAgIGlmIChj
YWxsVHlwZSA9PSBKU0M6OkNhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgSlNDOjpKU1ZhbHVlIG91dHB1dFZhbHVl
ID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNvbnRyb2xs
ZXJPYmplY3QsIGFyZ0xpc3QpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0
dXJuIG91dHB1dFZhbHVlLmdldFN0cmluZyhleGVjKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggMWE5N2E5M2JmNjhjMTc0MTBhMjEwMWY3MGNiNThi
MDNkOGJmYTM1NS4uYmJiOWI3YTBiZDZlOTFjMTQyMGZmYmNlODJlY2NkYzU3MzAyZWNhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAgaW5saW5lIEhUTUxPdXRwdXRFbGVtZW50OjpIVE1MT3V0cHV0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWUKICAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCiAgICAgLCBtX2lzRGVmYXVsdFZhbHVlTW9kZSh0cnVl
KQogICAgICwgbV9pc1NldFRleHRDb250ZW50SW5Qcm9ncmVzcyhmYWxzZSkKLSAgICAsIG1fZGVm
YXVsdFZhbHVlKCIiKQorICAgICwgbV9kZWZhdWx0VmFsdWUoZW1wdHlTdHJpbmcoKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IDg3ZDQxODFlMDVl
NjUwZDY0MWU1NGNiYjJkMTFjNmQzOTAxMjdkZTkuLmI1NGViMTQ3ODBkZTFkOGQ5YmRjYjIwNjNm
ZGEyZThhNWM0Y2RiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAK
QEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2
ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGNvbnN0IFN0cmluZyYga2V5ID0gZXZlbnQt
PmtleUlkZW50aWZpZXIoKTsKICAgICBpZiAoa2V5ID09ICJVKzAwMUIiKSB7CiAgICAgICAgIFJl
ZjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCh0aGlzLT5lbGVtZW50KCkpOwotICAgICAgICBpbnB1
dC0+c2V0VmFsdWVGb3JVc2VyKCIiKTsKKyAgICAgICAgaW5wdXQtPnNldFZhbHVlRm9yVXNlcihl
bXB0eVN0cmluZygpKTsKICAgICAgICAgaW5wdXQtPm9uU2VhcmNoKCk7CiAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggNjc0NTBmNzEzNmU2MmI2MmY1OTY3MjVh
YmNmM2Q0MGQwY2VhZjk3OC4uOGEzMzQ4ZWJlNzI1NGE4YmJiNWVmMjE3NGM3ZGVhM2E3NmY5M2Iw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNDEx
LDcgKzQxMSw3IEBAIHN0YXRpYyBTdHJpbmcgYXV0b0ZpbGxCdXR0b25UeXBlVG9BY2Nlc3NpYmls
aXR5TGFiZWwoQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsCiAgICAgZGVmYXVsdDoKICAgICBj
YXNlIEF1dG9GaWxsQnV0dG9uVHlwZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogICAgIH0KIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRGVidWdTaGFkZXJzLmNwcAppbmRleCBjYjA5OWQ2ODcwNWExNWQ3YTVjNGFmYTBkZjBkNWU1
M2UyM2RjOTY5Li5mYTA3MmY5YjNiYzIyOTUxOGNlMzRkMjdlZTk2NTVlY2JhZTgwOGQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCkBA
IC01NCw3ICs1NCw3IEBAIFN0cmluZyBXZWJHTERlYnVnU2hhZGVyczo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZShXZWJHTFNoYWRlciogc2hhZGVyKQogICAgIGlmIChtX2NvbnRleHQtPmlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmICghbV9jb250ZXh0
LT52YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgc2hhZGVy
KSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAg
ICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkt
PmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXItPm9iamVjdCgpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAppbmRleCA4NTMzOTEzMjdkYzgzMjYwNGQ5NGNiNWI2Mjk5ZDFhMzIwMzE5
ODRkLi42Zjg4NTMxYzQ5MmQ4OTE4ZDRjYTJiZWI4M2VjMjc1ZTQzZTBiZWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcApAQCAtNDc0MCw3ICs0NzQwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZXN0b3JlU3RhdGVzQWZ0ZXJWZXJ0ZXhBdHRyaWIwU2ltdWxhdGlvbigpCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGlzcGF0Y2hDb250ZXh0TG9zdEV2ZW50KCkKIHsK
LSAgICBSZWY8V2ViR0xDb250ZXh0RXZlbnQ+IGV2ZW50ID0gV2ViR0xDb250ZXh0RXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0bG9zdEV2ZW50LCBmYWxzZSwgdHJ1ZSwgIiIp
OworICAgIFJlZjxXZWJHTENvbnRleHRFdmVudD4gZXZlbnQgPSBXZWJHTENvbnRleHRFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRleHRsb3N0RXZlbnQsIGZhbHNlLCB0cnVlLCBl
bXB0eVN0cmluZygpKTsKICAgICBjYW52YXMoKS0+ZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAg
bV9yZXN0b3JlQWxsb3dlZCA9IGV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiAgICAgaWYgKG1f
Y29udGV4dExvc3RNb2RlID09IFJlYWxMb3N0Q29udGV4dCAmJiBtX3Jlc3RvcmVBbGxvd2VkKQpA
QCAtNDgyMSw3ICs0ODIxLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXli
ZVJlc3RvcmVDb250ZXh0KCkKICAgICBzZXR1cEZsYWdzKCk7CiAgICAgaW5pdGlhbGl6ZU5ld0Nv
bnRleHQoKTsKICAgICBpbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCk7Ci0gICAgY2FudmFz
KCktPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2ViZ2xjb250ZXh0cmVzdG9yZWRFdmVudCwgZmFsc2UsIHRydWUsICIiKSk7CisgICAgY2FudmFz
KCktPmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2ViZ2xjb250ZXh0cmVzdG9yZWRFdmVudCwgZmFsc2UsIHRydWUsIGVtcHR5U3RyaW5nKCkpKTsK
IH0KIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuc3VyZU5vdE51bGwoY29u
c3QgU3RyaW5nJiB0ZXh0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
aGFkZXIuY3BwCmluZGV4IGRjNzNkNDIyYTRmMTVjYmYxNThkNmQxODYzZjIzNGI4MmQ0NDg2OGEu
LjE2ZmY2ZDVjODU4YTc2MTU3ODIxZjliOTRjYWMxZGU3NDI2ZmUyYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgUmVmPFdl
YkdMU2hhZGVyPiBXZWJHTFNoYWRlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
IGN0eCwgR0MzRGVudW0gdHkKIFdlYkdMU2hhZGVyOjpXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBjdHgsIEdDM0RlbnVtIHR5cGUpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVj
dChjdHgpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fc291cmNlKCIiKQorICAgICwgbV9z
b3VyY2UoZW1wdHlTdHJpbmcoKSkKICAgICAsIG1faXNWYWxpZChmYWxzZSkKIHsKICAgICBzZXRP
YmplY3QoY3R4LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVTaGFkZXIodHlwZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CmluZGV4IGJlYTZmMDZiYzY3ZjQ1N2Y5N2QzNDRiNjkzYTRiZTEzNzdiMjQ2OTIuLmVhMjlkZWIw
ZTM3OWNjNjdhNjJkOTExOGZmMDYwNWE4NDNiOTY1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTM4OCw3ICszODgs
NyBAQCB2b2lkIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50Ojp1cGRhdGUoKQogCiAg
ICAgc3dpdGNoIChtX3N0YXRlQmVpbmdEaXNwbGF5ZWQpIHsKICAgICBjYXNlIE5vdGhpbmc6Ci0g
ICAgICAgIHNldElubmVyVGV4dCgiIiwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIHNldElu
bmVyVGV4dChlbXB0eVN0cmluZygpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBMb2FkaW5nOgogICAgICAgICBzZXRJbm5lclRleHQobWVkaWFFbGVtZW50TG9h
ZGluZ1N0YXRlVGV4dCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcAppbmRleCBhYjdhMmZmMThmMTk5MmU1MGRhYThlZTA3ODZkYTNlY2E4
MTJlYTg5Li4xYmZkNDJiNWQxYjgwMzdkNGY5YjE3MmQ2YTljMjJkMzMxNDZlYmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC04NSwxMyArODUsMTMgQEAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgZm9yY2VkS2V5d29yZCgpCiAKIFRleHRUcmFjayogVGV4
dFRyYWNrOjpjYXB0aW9uTWVudU9mZkl0ZW0oKQogewotICAgIHN0YXRpYyBUZXh0VHJhY2smIG9m
ZiA9IFRleHRUcmFjazo6Y3JlYXRlKDAsIDAsICJvZmYgbWVudSBpdGVtIiwgIiIsICIiLCAiIiku
bGVha1JlZigpOworICAgIHN0YXRpYyBUZXh0VHJhY2smIG9mZiA9IFRleHRUcmFjazo6Y3JlYXRl
KDAsIDAsICJvZmYgbWVudSBpdGVtIiwgZW1wdHlBdG9tLCBlbXB0eUF0b20sIGVtcHR5QXRvbSku
bGVha1JlZigpOwogICAgIHJldHVybiAmb2ZmOwogfQogCiBUZXh0VHJhY2sqIFRleHRUcmFjazo6
Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRv
bWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZSgwLCAwLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsICIi
LCAiIiwgIiIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBU
ZXh0VHJhY2s6OmNyZWF0ZSgwLCAwLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSwg
ZW1wdHlBdG9tLCBlbXB0eUF0b20pLmxlYWtSZWYoKTsKICAgICByZXR1cm4gJmF1dG9tYXRpYzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCmluZGV4IGNmOTRiMDBi
YmY0NGUwZjYzOTczYjhlZjFkOTJjMDdlNTQ3MGVjYjEuLjc5MDk2YmI0YjQxOWIxMWZmZjgzY2Fj
YWJjNWI0ZmJhYzU0MGQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VlRUUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5j
cHAKQEAgLTE4NiwxNCArMTg2LDE0IEBAIHZvaWQgVlRUUmVnaW9uOjpzZXRWaWV3cG9ydEFuY2hv
clkoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX3ZpZXdwb3J0QW5jaG9y
LnNldFkodmFsdWUpOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcgVlRUUmVnaW9uOjpzY3JvbGwo
KSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnNjcm9sbCgpIGNvbnN0CiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdXBTY3JvbGxW
YWx1ZUtleXdvcmQoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBpZiAobV9zY3JvbGwpCiAgICAgICAgIHJldHVybiB1cFNjcm9sbFZhbHVlS2V5d29yZDsK
IAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlBdG9tOwogfQogCiB2b2lkIFZUVFJl
Z2lvbjo6c2V0U2Nyb2xsKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmgKaW5kZXggODkyNWFmMWJjMzcy
MDVlYjA3YTVhN2I4ZThjZjY5NzIxODBjYTA1NS4uMDJmOWIyMDdlNjdlMGI0ODNkM2QyODMxMzAz
NDM3YjIwMjMxYzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRS
ZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdmlld3BvcnRBbmNob3JZKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3cG9ydEFuY2hvci55KCk7IH0KICAgICB2b2lkIHNldFZpZXdwb3J0QW5j
aG9yWShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyBz
Y3JvbGwoKSBjb25zdDsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNjcm9sbCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0U2Nyb2xsKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgIHZvaWQgdXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24oVlRUUmVnaW9uKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBhMDZk
YjQxODkzM2E0NjVlYzFkZGQzMTY1ODFjYzNiNTM0NzJjZTZhLi5hZDY5NTk0OGRlZTQyOTc0NmMz
Zjk3YjAzN2I5OWQxZGRiOWM2MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBTdHJpbmcgSW5zcGVjdG9y
RE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoY29uc3QgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAg
IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7CiAgICAgICAgIHJldHVy
biBkZXNjcmlwdGlvbi5uYW1lOwogICAgIH0KLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiB9CiAKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChX
ZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJ
bnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQpAQCAtMTIyMSw3ICsxMjIxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6Zm9jdXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
KQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQp
CiB7Ci0gICAgU3RyaW5nIG9iamVjdEdyb3VwTmFtZSA9IG9iamVjdEdyb3VwID8gKm9iamVjdEdy
b3VwIDogIiI7CisgICAgU3RyaW5nIG9iamVjdEdyb3VwTmFtZSA9IG9iamVjdEdyb3VwID8gKm9i
amVjdEdyb3VwIDogZW1wdHlTdHJpbmcoKTsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5v
ZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRl
cmFsKCJObyBub2RlIHdpdGggZ2l2ZW4gaWQgZm91bmQiKTsKQEAgLTEyNTcsMTMgKzEyNTcsMTMg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBpbnQqIG4KIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6ZG9j
dW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmICghZG9jdW1lbnQg
fHwgZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIHJldHVybiBkb2N1bWVudC0+dXJsKCkuc3RyaW5n
KCk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZG9jdW1lbnRCYXNlVVJMU3RyaW5nKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKCIiKS5zdHJpbmco
KTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGVtcHR5U3RyaW5nKCkpLnN0cmlu
ZygpOwogfQogCiBzdGF0aWMgYm9vbCBwc2V1ZG9FbGVtZW50VHlwZShQc2V1ZG9JZCBwc2V1ZG9J
ZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpQc2V1ZG9UeXBlKiB0eXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IDMwZDJlMjk3MGQ5NWZmNjhiMTlkODA0MmMwZDlkYTZiY2M1OGZiNjkuLmM2NjgyYTEx
ZDg5NTBjNjczNjIxMDBjMWE1NzdhMmQ5M2ZkNjA3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTIxMywx
MiArMjEzLDEyIEBAIHN0YXRpYyBpbnQgZG9tVHlwZUZvck5hbWUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiBzdGF0aWMgU3RyaW5nIGRvbVR5cGVO
YW1lKGludCB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgU3VidHJlZU1v
ZGlmaWVkOiByZXR1cm4gInN1YnRyZWUtbW9kaWZpZWQiOwotICAgIGNhc2UgQXR0cmlidXRlTW9k
aWZpZWQ6IHJldHVybiAiYXR0cmlidXRlLW1vZGlmaWVkIjsKLSAgICBjYXNlIE5vZGVSZW1vdmVk
OiByZXR1cm4gIm5vZGUtcmVtb3ZlZCI7CisgICAgY2FzZSBTdWJ0cmVlTW9kaWZpZWQ6IHJldHVy
biBBU0NJSUxpdGVyYWwoInN1YnRyZWUtbW9kaWZpZWQiKTsKKyAgICBjYXNlIEF0dHJpYnV0ZU1v
ZGlmaWVkOiByZXR1cm4gQVNDSUlMaXRlcmFsKCJhdHRyaWJ1dGUtbW9kaWZpZWQiKTsKKyAgICBj
YXNlIE5vZGVSZW1vdmVkOiByZXR1cm4gQVNDSUlMaXRlcmFsKCJub2RlLXJlbW92ZWQiKTsKICAg
ICBkZWZhdWx0OiBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldERPTUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHR5cGVTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGUxNjQ1ODRhZDRhMGJkYWNmNGFmMThiNmYxNjgxMjI4
MGE2MTNjMTMuLjQ3MjM1YjY4YjJlOGNhOWM0ZDYwNjI0YjdiYzkwYzhmY2U1NzMxYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Om1vdmVXaW5k
b3dCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdAogCiBTdHJpbmcgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKIHsKLSAgICByZXR1cm4gbV9jbGllbnQgPyBtX2Ns
aWVudC0+bG9jYWxpemVkU3RyaW5nc1VSTCgpIDogIiI7CisgICAgcmV0dXJuIG1fY2xpZW50ID8g
bV9jbGllbnQtPmxvY2FsaXplZFN0cmluZ3NVUkwoKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0
cmluZyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmRlYnVnZ2FibGVUeXBlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAppbmRleCBlYzcyYWQxYjBmN2Ix
YzYyYTE1MjM4MDc2NTQzOTIwZjI5ODQ4ODkwLi5mNzAxODczMDIwZThlZjkxYTlkMWZhOTc5NjAw
Y2UxNDI5MGQwYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhp
c3RvcnkuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9u
Ojppc1VuZG9hYmxlU3RhdGVNYXJrKCkKIAogU3RyaW5nIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlv
bjo6bWVyZ2VJZCgpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogfQogCiB2b2lkIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbjo6bWVyZ2Uoc3RkOjp1bmlxdWVf
cHRyPEFjdGlvbj4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IDdhYmNmNzc4NjY2ZTYyZTgyODEwNjdhYTAxYWY3ZDljNzRhZTY3ODgu
LmUyNDJlNGIwNmU5MTY2Y2U2NzVmNDkwZmMyOWVjYzE0YTUxYTIzYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00MTksNyArNDE5
LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxv
YWQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdAogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNo
ZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpCiB7Ci0gICAg
bV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBvcHRpb25hbFNjcmlwdFRvRXZh
bHVhdGVPbkxvYWQgPyAqb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkIDogIiI7CisgICAg
bV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBvcHRpb25hbFNjcmlwdFRvRXZh
bHVhdGVPbkxvYWQgPyAqb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkIDogZW1wdHlTdHJp
bmcoKTsKICAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkucmVsb2FkKG9wdGlvbmFsSWdu
b3JlQ2FjaGUgPyAqb3B0aW9uYWxJZ25vcmVDYWNoZSA6IGZhbHNlKTsKIH0KIApAQCAtNzY2LDcg
Kzc2Niw3IEBAIEZyYW1lKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lRm9ySWQoY29uc3QgU3Ry
aW5nJiBmcmFtZUlkKQogU3RyaW5nIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVJZChGcmFtZSog
ZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBTdHJpbmcgaWRlbnRpZmllciA9IG1fZnJhbWVUb0lk
ZW50aWZpZXIuZ2V0KGZyYW1lKTsKICAgICBpZiAoaWRlbnRpZmllci5pc051bGwoKSkgewogICAg
ICAgICBpZGVudGlmaWVyID0gSWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7
CkBAIC03ODQsNyArNzg0LDcgQEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Omhhc0lkRm9yRnJh
bWUoRnJhbWUqIGZyYW1lKSBjb25zdAogU3RyaW5nIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZGVy
SWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIWxvYWRlcikKLSAgICAgICAg
cmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBTdHJpbmcgaWRl
bnRpZmllciA9IG1fbG9hZGVyVG9JZGVudGlmaWVyLmdldChsb2FkZXIpOwogICAgIGlmIChpZGVu
dGlmaWVyLmlzTnVsbCgpKSB7CiAgICAgICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyc0ZhY3Rv
cnk6OmNyZWF0ZUlkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAwNTUyYzQ5ZjI1YjY1NmI1ZmNmNmM0N2Y1MTA1
MzU1NzYyNmNhOWQ4Li40MjliYWU5MWE3YTQ0ZTJiOGQxOWE1NGY4NzliNjkyNTYwMGNjMzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CkBAIC02MzYsNyArNjM2LDcgQEAgU3RyaW5nIEluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVTZWxl
Y3Rvcihjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQsIEV4Y2VwdGlvbkNvZGUKICAgICBDU1NTdHls
ZVJ1bGUqIHJ1bGUgPSBydWxlRm9ySWQoaWQpOwogICAgIGlmICghcnVsZSkgewogICAgICAgICBl
YyA9IE5PVF9GT1VORF9FUlI7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAgICAgfQogICAgIHJldHVybiBydWxlLT5zZWxlY3RvclRleHQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCAxYTVhN2MxZDFjMmRmNTkyZGQ4
MDQ2YmVlN2NhNzgzM2UwOGRkMzhiLi44Yzg5NjIxN2Q0OGIxYTM4OGZjNTU1MTBiODlmYmFmMGU4
YWViN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0zNTAsNyArMzUw
LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBjYW5TaG93TUlNRVR5cGVB
c0hUTUwoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3RyaW5nIGdlbmVyYXRlZE1JTUVU
eXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICIi
OyB9CisgICAgU3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAogICAgIHZvaWQg
ZnJhbWVMb2FkQ29tcGxldGVkKCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCByZXN0b3JlVmlld1N0
YXRlKCkgb3ZlcnJpZGUgeyB9CkBAIC0zNjIsNyArMzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwm
KSBvdmVycmlkZSB7IH0KIAotICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgb3ZlcnJp
ZGUgeyByZXR1cm4gIiI7IH0KKyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIG92ZXJy
aWRlIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAogICAgIHZvaWQgc2F2ZVBsYXRmb3JtRGF0
YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIG92ZXJyaWRlIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggN2JkMDJkNTQzMzhkY2U1
ZWQ1M2YzMDY5MmJiNzQwYWFhMTBjOGYzYi4uNGQ0MzMwOWFhZjhmODVlYzA5ZmRkZDQ1ZDdlMmVm
ZWRjNWNmMjg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zNDY2
LDcgKzM0NjYsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBGcmFtZUxvYWRlcjo6Y29u
bmVjdGlvblByb3BlcnRpZXMoUmVzb3VyY2VMb2FkZXIqIGxvYQogCiBTdHJpbmcgRnJhbWVMb2Fk
ZXI6OnJlZmVycmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlciA/IG1f
ZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSA6ICIiOworICAgIHJldHVy
biBtX2RvY3VtZW50TG9hZGVyID8gbV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpLmh0dHBSZWZl
cnJlcigpIDogZW1wdHlTdHJpbmcoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hE
aWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcAppbmRleCA0Y2Q1ZWMzOTcyNzZhYWEzNGIwNjc3MTFjNmJmMzY3NzNhZmEyYjE4
Li5jZGZhMjY2OTE2ZDA5MjkzMTNkNjBjMzc0NDJmMTk2NmY1NTZjY2NkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIEltYWdlTG9h
ZGVyOjplbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKQogCiBpbmxpbmUgdm9pZCBJbWFnZUxv
YWRlcjo6Y2xlYXJGYWlsZWRMb2FkVVJMKCkKIHsKLSAgICBtX2ZhaWxlZExvYWRVUkwgPSBBdG9t
aWNTdHJpbmcoKTsKKyAgICBtX2ZhaWxlZExvYWRVUkwgPSBudWxsQXRvbTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzYwOWFjZmQ5MGI2Y2E5
MDY4ODczMDI2NWMxY2Q1NmM4NmRhZDIxMS4uMmViZWUwMTkyMWNmN2FkYThkYWJiZDM0ODIzYjkz
YWEyZjY0YjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC00MzksMTQgKzQzOSwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9h
ZGVyLT5yZXNwb25zZSgpLmlzSHR0cFZlcnNpb24wXzkoKSkgewogICAgICAgICAgICAgU3RyaW5n
IG1lc3NhZ2UgPSAiQ2FuY2VsbGVkIHJlc291cmNlIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmco
KSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkgYW5kIHRoZSBkb2N1bWVudCB3YXMg
bG9hZGVkIHdpdGggYSBkaWZmZXJlbnQgSFRUUCB2ZXJzaW9uLiI7CiAgICAgICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgaWRlbnRpZmllcigpKTsKLSAgICAgICAg
ICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAsIHVybCwgbWVzc2FnZSk7CisgICAgICAgICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yKGVtcHR5U3RyaW5nKCksIDAsIHVybCwgbWVzc2FnZSk7CiAg
ICAgICAgICAgICBkaWRGYWlsKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBpZiAoIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwucG9ydCgpLCB1cmwu
cHJvdG9jb2woKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIkNhbmNlbGxlZCBy
ZXNvdXJjZSBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVz
aW5nIEhUVFAvMC45IG9uIGEgbm9uLWRlZmF1bHQgcG9ydC4iOwogICAgICAgICAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yKCIiLCAwLCB1cmwsIG1lc3NhZ2UpOworICAgICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcihlbXB0eVN0cmluZygpLCAwLCB1cmwsIG1lc3NhZ2UpOwogICAg
ICAgICAgICAgZGlkRmFpbChlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCAy
ZjRlMmI1Yzk2MjIxYTI5MDI0N2ZjY2Q4ODVmYzFkNGZmYzEwZThhLi5iN2FmZGU5NWZhNTc3M2E5
ZjM4MDg2MjMyZTcwNzNlYTI2ZjI4OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9uIGFj
dGlvbiwgY28KIAogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3Vt
ZW50KCk7CiAgICAgICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgICAgICAgICAgUmVmUHRy
PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kPiBjb21tYW5kID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OmNyZWF0ZSgqZG9jdW1lbnQsIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZG9jdW1lbnQs
IHRpdGxlLCAiIiksIHJlcGxhY2VPcHRpb25zKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZD4gY29tbWFuZCA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVh
dGUoKmRvY3VtZW50LCBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmRvY3VtZW50LCB0aXRsZSwg
ZW1wdHlTdHJpbmcoKSksIHJlcGxhY2VPcHRpb25zKTsKICAgICAgICAgICAgIGFwcGx5Q29tbWFu
ZChjb21tYW5kKTsKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rp
b24oU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9F
ZGdlSWZOZWVkZWQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKaW5kZXgg
M2IxMDM2OTgzNDIxMWY1ZWE5NzI2YjViMzJjZmFmMTc5YmVhMmJjZS4uZGVlYjIzYjc1ODQ0OWJi
ZmU1YzU1ZjE5ZDgwZDA0OTI4MjkxMTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcApA
QCAtNDgsMTQgKzQ4LDE0IEBAIHZvaWQgRnJhbWVUcmVlOjpzZXROYW1lKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkKICAgICAgICAgbV91bmlxdWVOYW1lID0gbmFtZTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBtX3VuaXF1ZU5hbWUgPSBBdG9taWNTdHJpbmcoKTsgLy8gUmVtb3ZlIG91
ciBvbGQgZnJhbWUgbmFtZSBzbyBpdCdzIG5vdCBjb25zaWRlcmVkIGluIHVuaXF1ZUNoaWxkTmFt
ZS4KKyAgICBtX3VuaXF1ZU5hbWUgPSBudWxsQXRvbTsgLy8gUmVtb3ZlIG91ciBvbGQgZnJhbWUg
bmFtZSBzbyBpdCdzIG5vdCBjb25zaWRlcmVkIGluIHVuaXF1ZUNoaWxkTmFtZS4KICAgICBtX3Vu
aXF1ZU5hbWUgPSBwYXJlbnQoKS0+dHJlZSgpLnVuaXF1ZUNoaWxkTmFtZShuYW1lKTsKIH0KIAog
dm9pZCBGcmFtZVRyZWU6OmNsZWFyTmFtZSgpCiB7Ci0gICAgbV9uYW1lID0gQXRvbWljU3RyaW5n
KCk7Ci0gICAgbV91bmlxdWVOYW1lID0gQXRvbWljU3RyaW5nKCk7CisgICAgbV9uYW1lID0gbnVs
bEF0b207CisgICAgbV91bmlxdWVOYW1lID0gbnVsbEF0b207CiB9CiAKIEZyYW1lKiBGcmFtZVRy
ZWU6OnBhcmVudCgpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCBkZDUzMzQ1
YjdkZjlhNDIwOWU5OTY0NmQ3YzEwOTU0MjU0NmExMmYxLi40ODk5NGY2NjRiOTI5MDk3Mjk5Njg5
Zjc0NWYyODJiMTMwZGFmMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtMTA0LDcg
KzEwNCw3IEBAIFN0cmluZyBMb2NhdGlvbjo6cG9ydCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7Ci0gICAgcmV0dXJu
IHVybC5oYXNQb3J0KCkgPyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKSA6ICIiOworICAgIHJl
dHVybiB1cmwuaGFzUG9ydCgpID8gU3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSkgOiBlbXB0eVN0
cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246OnBhdGhuYW1lKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2Uu
Y3BwCmluZGV4IDkzYzRkZGJhNDhmOWZkYjM3MWI5NWNjMjk3MGRhYzhjZTg1OWJjMzguLmYzODRk
YTM1MDE0YzZkNDkxMDhhNTU4N2Q3NzA1ZjZjMTgwZWQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmNwcApAQCAt
MzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE5lZWQgdG8gZW5mb3JjZSBl
bXB0eSwgbm9uLW51bGwgc3RyaW5ncyBkdWUgdG8gdGhlIHBpY2tpbmVzcyBvZiB0aGUgU3RyaW5n
ID09IFN0cmluZyBvcGVyYXRvcgogLy8gY29tYmluZWQgd2l0aCB0aGUgc2VtYW50aWNzIG9mIHRo
ZSBTdHJpbmcoTlNTdHJpbmcqKSBjb25zdHJ1Y3RvcgogUHJvdGVjdGlvblNwYWNlQmFzZTo6UHJv
dGVjdGlvblNwYWNlQmFzZSgpCi0gICAgOiBtX2hvc3QoIiIpCisgICAgOiBtX2hvc3QoZW1wdHlT
dHJpbmcoKSkKICAgICAsIG1fcG9ydCgwKQogICAgICwgbV9zZXJ2ZXJUeXBlKFByb3RlY3Rpb25T
cGFjZVNlcnZlckhUVFApCi0gICAgLCBtX3JlYWxtKCIiKQorICAgICwgbV9yZWFsbShlbXB0eVN0
cmluZygpKQogICAgICwgbV9hdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZURlZmF1bHQpCiAgICAgLCBtX2lzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KGZhbHNlKQogewpAQCAtNTAsMTAgKzUwLDEwIEBAIFByb3RlY3Rpb25TcGFjZUJhc2U6OlByb3Rl
Y3Rpb25TcGFjZUJhc2UoKQogLy8gTmVlZCB0byBlbmZvcmNlIGVtcHR5LCBub24tbnVsbCBzdHJp
bmdzIGR1ZSB0byB0aGUgcGlja2luZXNzIG9mIHRoZSBTdHJpbmcgPT0gU3RyaW5nIG9wZXJhdG9y
CiAvLyBjb21iaW5lZCB3aXRoIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFN0cmluZyhOU1N0cmluZyop
IGNvbnN0cnVjdG9yCiBQcm90ZWN0aW9uU3BhY2VCYXNlOjpQcm90ZWN0aW9uU3BhY2VCYXNlKGNv
bnN0IFN0cmluZyYgaG9zdCwgaW50IHBvcnQsIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgc2Vy
dmVyVHlwZSwgY29uc3QgU3RyaW5nJiByZWFsbSwgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRp
b25TY2hlbWUgYXV0aGVudGljYXRpb25TY2hlbWUpCi0gICAgOiBtX2hvc3QoaG9zdC5sZW5ndGgo
KSA/IGhvc3QgOiAiIikKKyAgICA6IG1faG9zdChob3N0Lmxlbmd0aCgpID8gaG9zdCA6IGVtcHR5
U3RyaW5nKCkpCiAgICAgLCBtX3BvcnQocG9ydCkKICAgICAsIG1fc2VydmVyVHlwZShzZXJ2ZXJU
eXBlKQotICAgICwgbV9yZWFsbShyZWFsbS5sZW5ndGgoKSA/IHJlYWxtIDogIiIpCisgICAgLCBt
X3JlYWxtKHJlYWxtLmxlbmd0aCgpID8gcmVhbG0gOiBlbXB0eVN0cmluZygpKQogICAgICwgbV9h
dXRoZW50aWNhdGlvblNjaGVtZShhdXRoZW50aWNhdGlvblNjaGVtZSkKICAgICAsIG1faXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoZmFsc2UpCiB7ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDVjMmViNmUx
MGJkMTVmZjYxNThjZDM5ZmQ3OTliZTA5NmNkMjI5ZmQuLjk2YjRhZThkN2JiNmNlMzA1YTZmMWM4
OGNlZTA5MTlmOTM4ZGMxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTc2MSw3ICs3NjEsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgaGFuZGxlRWxlbWVudEF0dHJpYnV0ZXMoVmVjdG9yPEF0dHJpYnV0ZT4m
IHByZWZpeGVkQXR0cmlidXRlcwogICAgICAgICBpbnQgdmFsdWVMZW5ndGggPSBzdGF0aWNfY2Fz
dDxpbnQ+KGF0dHJpYnV0ZXNbaV0uZW5kIC0gYXR0cmlidXRlc1tpXS52YWx1ZSk7CiAgICAgICAg
IEF0b21pY1N0cmluZyBhdHRyVmFsdWUgPSB0b0F0b21pY1N0cmluZyhhdHRyaWJ1dGVzW2ldLnZh
bHVlLCB2YWx1ZUxlbmd0aCk7CiAgICAgICAgIFN0cmluZyBhdHRyUHJlZml4ID0gdG9TdHJpbmco
YXR0cmlidXRlc1tpXS5wcmVmaXgpOwotICAgICAgICBBdG9taWNTdHJpbmcgYXR0clVSSSA9IGF0
dHJQcmVmaXguaXNFbXB0eSgpID8gQXRvbWljU3RyaW5nKCkgOiB0b0F0b21pY1N0cmluZyhhdHRy
aWJ1dGVzW2ldLnVyaSk7CisgICAgICAgIEF0b21pY1N0cmluZyBhdHRyVVJJID0gYXR0clByZWZp
eC5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IHRvQXRvbWljU3RyaW5nKGF0dHJpYnV0ZXNbaV0udXJp
KTsKICAgICAgICAgQXRvbWljU3RyaW5nIGF0dHJRTmFtZSA9IGF0dHJQcmVmaXguaXNFbXB0eSgp
ID8gdG9BdG9taWNTdHJpbmcoYXR0cmlidXRlc1tpXS5sb2NhbG5hbWUpIDogYXR0clByZWZpeCAr
ICI6IiArIHRvU3RyaW5nKGF0dHJpYnV0ZXNbaV0ubG9jYWxuYW1lKTsKIAogICAgICAgICBRdWFs
aWZpZWROYW1lIHBhcnNlZE5hbWUgPSBhbnlOYW1lOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>