<?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>176492</bug_id>
          
          <creation_ts>2017-09-06 18:42:49 -0700</creation_ts>
          <short_desc>[Directory Upload] Extend directory upload support to drag and drop on iOS</short_desc>
          <delta_ts>2017-09-07 13:56:16 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175976</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346196</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-06 18:42:49 -0700</bug_when>
    <thetext>Extend Directory Upload&apos;s drag and drop support to iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346197</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-06 18:43:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/34291584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346233</commentid>
    <comment_count>2</comment_count>
      <attachid>320096</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-06 23:21:54 -0700</bug_when>
    <thetext>Created attachment 320096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346466</commentid>
    <comment_count>3</comment_count>
      <attachid>320153</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-07 12:09:32 -0700</bug_when>
    <thetext>Created attachment 320153
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346509</commentid>
    <comment_count>4</comment_count>
      <attachid>320153</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-07 13:12:22 -0700</bug_when>
    <thetext>Comment on attachment 320153
Patch for landing

Clearing flags on attachment: 320153

Committed r221751: &lt;http://trac.webkit.org/changeset/221751&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320096</attachid>
            <date>2017-09-06 23:21:54 -0700</date>
            <delta_ts>2017-09-07 11:33:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176492-20170906232153.patch</filename>
            <type>text/plain</type>
            <size>24216</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQxNWNhMzdjZWQzYWMz
NWM2YjA2NmRmNWMzZjQ1MjBkMmU4NjMyMi4uYzM1YjA5ODBiMmU2NmZiNDQ0NThmZDRjZTEyZDVi
ZGFmYjk1MDg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE3LTA5LTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtEaXJlY3Rvcnkg
VXBsb2FkXSBFeHRlbmQgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IHRvIGlPUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDkyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zNDI5MTU4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGFjY2VwdGluZyBkcm9wcGVkIGZvbGRlcnMg
b24gaU9TLgorCisgICAgICAgIFRlc3RzOiBEYXRhSW50ZXJhY3Rpb25UZXN0cy5FeHRlcm5hbFNv
dXJjZURhdGFUcmFuc2Zlckl0ZW1HZXRGb2xkZXJBc0VudHJ5CisgICAgICAgICAgICAgICBEYXRh
SW50ZXJhY3Rpb25UZXN0cy5FeHRlcm5hbFNvdXJjZURhdGFUcmFuc2Zlckl0ZW1HZXRQbGFpblRl
eHRGaWxlQXNFbnRyeQorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRGaWxlVXBsb2FkUGFzdGVi
b2FyZFR5cGVzKToKKworICAgICAgICBBZGQgInB1YmxpYy5mb2xkZXIiIGFzIGEgY29tcGF0aWJs
ZSBwYXN0ZWJvYXJkIHR5cGUgZm9yIGRyb3BzIG9uIGlPUy4gVGhpcyBtZWFucyBmaWxlIGlucHV0
cyBhbmQgY3VzdG9tIGRyb3AKKyAgICAgICAgdGFyZ2V0cyB0aGF0IHByZXZlbnREZWZhdWx0KCkg
d2lsbCwgYnkgZGVmYXVsdCwgYmUgYWJsZSB0byBhY2NlcHQgaW5jb21pbmcgZm9sZGVycy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAg
ICAgICAobGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9y
eSk6CisKKyAgICAgICAgVHdlYWsgdGVtcG9yYXJ5RmlsZVVSTEZvckRhdGFJbnRlcmFjdGlvbkNv
bnRlbnQgdG8gYWxzbyBoYXJkIGxpbmsgVUlLaXQncyB0ZW1wb3JhcnkgZmlsZXMgaW5zdGVhZCwg
YW5kIHJldHVybgorICAgICAgICBhIG5vbi1udWxsIGRlc3RpbmF0aW9uIFVSTCBvbmx5IGlmIHRo
ZSBuZWNlc3NhcnkgZmlsZSBvcGVyYXRpb25zIHN1Y2NlZWRlZC4gQWxzbyByZW5hbWVzIHRoaXMg
aGVscGVyIHRvCisgICAgICAgIGxpbmtUZW1wb3JhcnlJdGVtUHJvdmlkZXJGaWxlc1RvRHJvcFN0
YWdpbmdEaXJlY3RvcnkgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIG5ldyBwdXJwb3NlLiBUaGlzIG1h
a2VzIGxvZ2ljIG11Y2gKKyAgICAgICAgY2xlYW5lciBhdCB0aGUgY2FsbCBzaXRlLCB3aGljaCBu
byBsb25nZXIgY2hlY2tzIGFnYWluc3QgdmFyaW91cyBjb25kaXRpb25zIGJlZm9yZSBwcm9jZWVk
aW5nIHRvIHNldCB0aGUgZGF0YQorICAgICAgICB0cmFuc2ZlciBVUkwuCisKKyAgICAgICAgKC1b
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBkb0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudElu
dG9GaWxlVVJMczpzeW5jaHJvbm91c1RpbWVvdXQ6XSk6CisgICAgICAgICh0ZW1wb3JhcnlGaWxl
VVJMRm9yRGF0YUludGVyYWN0aW9uQ29udGVudCk6IERlbGV0ZWQuCisKIDIwMTctMDktMDUgIFJ5
YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjIyMTQ5NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0KaW5kZXggMjk5NzE1ZDU2YWVkYjY4MDQ3OThlOGVjNjE3YjJlZDJjZGU5NWVm
MC4uNzMxNzgyY2NjODYyNzgzZDRmMmQ5MjFlYmRjNTliMTZhNmJkOTIxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTMwNiw3ICszMDYsNyBA
QCBOU0FycmF5ICpQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRXZWJDb250ZW50UGFzdGVib2FyZFR5cGVz
KCkKIAogTlNBcnJheSAqUGFzdGVib2FyZDo6c3VwcG9ydGVkRmlsZVVwbG9hZFBhc3RlYm9hcmRU
eXBlcygpCiB7Ci0gICAgcmV0dXJuIEBbIChOU1N0cmluZyAqKWtVVFR5cGVDb250ZW50LCAoTlNT
dHJpbmcgKilrVVRUeXBlWmlwQXJjaGl2ZSBdOworICAgIHJldHVybiBAWyAoTlNTdHJpbmcgKilr
VVRUeXBlQ29udGVudCwgKE5TU3RyaW5nICopa1VUVHlwZVppcEFyY2hpdmUsIChOU1N0cmluZyAq
KWtVVFR5cGVGb2xkZXIgXTsKIH0KIAogYm9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRhKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW0KaW5kZXggMzkyZDViMGVjNDljYTYyYzY2YjJjMDRkYTk4MmI1YmM4YzQ2MGI3YS4u
ODI5NjU1OWVhM2QxYWNkNWIyMWQ5ODc3YjQwNTNkOTkyODQxYTllOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0KQEAgLTQxMyw5ICs0MTMsMTAgQEAgLSAoTlNJbnRlZ2VyKW51bWJlck9mRmlsZXMKICAgICBy
ZXR1cm4gbnVtYmVyT2ZGaWxlczsKIH0KIAotc3RhdGljIE5TVVJMICp0ZW1wb3JhcnlGaWxlVVJM
Rm9yRGF0YUludGVyYWN0aW9uQ29udGVudChOU1VSTCAqdXJsLCBOU1N0cmluZyAqc3VnZ2VzdGVk
TmFtZSkKK3N0YXRpYyBOU1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9w
U3RhZ2luZ0RpcmVjdG9yeShOU1VSTCAqdXJsLCBOU1N0cmluZyAqc3VnZ2VzdGVkTmFtZSwgTlNT
dHJpbmcgKnR5cGVJZGVudGlmaWVyKQogewotICAgIHN0YXRpYyBOU1N0cmluZyAqZGVmYXVsdERh
dGFJbnRlcmFjdGlvbkZpbGVOYW1lID0gQCJmaWxlIjsKKyAgICBzdGF0aWMgTlNTdHJpbmcgKmRl
ZmF1bHREcm9wRm9sZGVyTmFtZSA9IEAiZm9sZGVyIjsKKyAgICBzdGF0aWMgTlNTdHJpbmcgKmRl
ZmF1bHREcm9wRmlsZU5hbWUgPSBAImZpbGUiOwogICAgIHN0YXRpYyBOU1N0cmluZyAqZGF0YUlu
dGVyYWN0aW9uRGlyZWN0b3J5UHJlZml4ID0gQCJkYXRhLWludGVyYWN0aW9uIjsKICAgICBpZiAo
IXVybCkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQyNCwxMSArNDI1LDE4IEBAIHN0YXRpYyBO
U1VSTCAqdGVtcG9yYXJ5RmlsZVVSTEZvckRhdGFJbnRlcmFjdGlvbkNvbnRlbnQoTlNVUkwgKnVy
bCwgTlNTdHJpbmcgKnN1CiAgICAgaWYgKCF0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3Rv
cnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBzdWdnZXN0ZWROYW1lID0gc3VnZ2VzdGVk
TmFtZSA/OiBkZWZhdWx0RGF0YUludGVyYWN0aW9uRmlsZU5hbWU7Ci0gICAgaWYgKCFbc3VnZ2Vz
dGVkTmFtZSBjb250YWluc1N0cmluZzpAIi4iXSkKKyAgICBOU1VSTCAqZGVzdGluYXRpb24gPSBu
aWw7CisgICAgQk9PTCBpc0ZvbGRlciA9IFVUVHlwZUNvbmZvcm1zVG8oKENGU3RyaW5nUmVmKXR5
cGVJZGVudGlmaWVyLCBrVVRUeXBlRm9sZGVyKTsKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFu
YWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKworICAgIGlmICghc3VnZ2Vz
dGVkTmFtZSkKKyAgICAgICAgc3VnZ2VzdGVkTmFtZSA9IHVybC5sYXN0UGF0aENvbXBvbmVudCA/
OiAoaXNGb2xkZXIgPyBkZWZhdWx0RHJvcEZvbGRlck5hbWUgOiBkZWZhdWx0RHJvcEZpbGVOYW1l
KTsKKworICAgIGlmICghW3N1Z2dlc3RlZE5hbWUgY29udGFpbnNTdHJpbmc6QCIuIl0gJiYgIWlz
Rm9sZGVyKQogICAgICAgICBzdWdnZXN0ZWROYW1lID0gW3N1Z2dlc3RlZE5hbWUgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoRXh0ZW5zaW9uOnVybC5wYXRoRXh0ZW5zaW9uXTsKIAotICAgIHJldHVybiBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOlt0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3Rvcnkg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnN1Z2dlc3RlZE5hbWUgPzogdXJsLmxhc3RQ
YXRoQ29tcG9uZW50XV07CisgICAgZGVzdGluYXRpb24gPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
Olt0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OnN1Z2dlc3RlZE5hbWVdXTsKKyAgICByZXR1cm4gW2ZpbGVNYW5hZ2VyIGxpbmtJ
dGVtQXRVUkw6dXJsIHRvVVJMOmRlc3RpbmF0aW9uIGVycm9yOm5pbF0gPyBkZXN0aW5hdGlvbiA6
IG5pbDsKIH0KIAogLSAoTlNTdHJpbmcgKil0eXBlSWRlbnRpZmllclRvTG9hZEZvclJlZ2lzdGVy
ZWRUeXBlSWRlbnRmaWVyczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXJlZ2lzdGVyZWRUeXBlSWRl
bnRpZmllcnMKQEAgLTQ4NCwxNCArNDkyLDEzIEBAIC0gKHZvaWQpZG9BZnRlckxvYWRpbmdQcm92
aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6KFdlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spCiAg
ICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3VnZ2VzdGVkTmFtZSA9IFtpdGVtUHJvdmlkZXIg
c3VnZ2VzdGVkTmFtZV07CiAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKGZpbGVMb2FkaW5n
R3JvdXAuZ2V0KCkpOwogICAgICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihzeW5jaHJvbm91c0Zp
bGVMb2FkaW5nR3JvdXAuZ2V0KCkpOwotICAgICAgICBbaXRlbVByb3ZpZGVyIGxvYWRGaWxlUmVw
cmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjp0eXBlSWRlbnRpZmllci5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpbc3luY2hyb25vdXNGaWxlTG9hZGluZ0dyb3VwLCBzZXRGaWxlVVJMc0xvY2ss
IGluZGV4SW5JdGVtUHJvdmlkZXJBcnJheSwgc3VnZ2VzdGVkTmFtZSwgdHlwZUlkZW50aWZpZXIs
IHR5cGVUb0ZpbGVVUkxNYXBzLCBmaWxlTG9hZGluZ0dyb3VwXSAoTlNVUkwgKnVybCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgW2l0ZW1Qcm92aWRlciBsb2FkRmlsZVJlcHJlc2VudGF0aW9u
Rm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
W3N5bmNocm9ub3VzRmlsZUxvYWRpbmdHcm91cCwgc2V0RmlsZVVSTHNMb2NrLCBpbmRleEluSXRl
bVByb3ZpZGVyQXJyYXksIHN1Z2dlc3RlZE5hbWUsIHR5cGVJZGVudGlmaWVyLCB0eXBlVG9GaWxl
VVJMTWFwcywgZmlsZUxvYWRpbmdHcm91cF0gKE5TVVJMICp1cmwsIE5TRXJyb3IgKikgewogICAg
ICAgICAgICAgLy8gQWZ0ZXIgZXhlY3V0aW5nIHRoaXMgY29tcGxldGlvbiBibG9jaywgVUlLaXQg
cmVtb3ZlcyB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gVVJMLiBIb3dldmVyLCB3ZSBuZWVkIHRoaXMg
ZGF0YSB0byBwZXJzaXN0IGxvbmdlciBmb3IgdGhlIHdlYiBjb250ZW50IHByb2Nlc3MuCiAgICAg
ICAgICAgICAvLyBUbyBhZGRyZXNzIHRoaXMsIHdlIGhhcmQgbGluayB0aGUgZ2l2ZW4gVVJMIHRv
IGEgbmV3IHRlbXBvcmFyeSBmaWxlIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiBUaGlzIGZv
bGxvd3MgdGhlIHNhbWUgZmxvdyBhcyByZWd1bGFyIGZpbGUgdXBsb2FkLCBpbgogICAgICAgICAg
ICAgLy8gV0tGaWxlVXBsb2FkUGFuZWwubW0uIFRoZSB0ZW1wb3JhcnkgZmlsZXMgYXJlIGNsZWFu
ZWQgdXAgYnkgdGhlIHN5c3RlbSBhdCBhIGxhdGVyIHRpbWUuCi0gICAgICAgICAgICBSZXRhaW5Q
dHI8TlNVUkw+IGRlc3RpbmF0aW9uVVJMID0gdGVtcG9yYXJ5RmlsZVVSTEZvckRhdGFJbnRlcmFj
dGlvbkNvbnRlbnQodXJsLCBzdWdnZXN0ZWROYW1lLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChk
ZXN0aW5hdGlvblVSTCAmJiAhZXJyb3IgJiYgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBsaW5rSXRlbUF0VVJMOnVybCB0b1VSTDpkZXN0aW5hdGlvblVSTC5nZXQoKSBlcnJvcjpuaWxd
KSB7CisgICAgICAgICAgICBpZiAoTlNVUkwgKmRlc3RpbmF0aW9uID0gbGlua1RlbXBvcmFyeUl0
ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9yeSh1cmwsIHN1Z2dlc3RlZE5hbWUu
Z2V0KCksIHR5cGVJZGVudGlmaWVyLmdldCgpKSkgewogICAgICAgICAgICAgICAgIFtzZXRGaWxl
VVJMc0xvY2sgbG9ja107Ci0gICAgICAgICAgICAgICAgW3R5cGVUb0ZpbGVVUkxNYXBzIHNldE9i
amVjdDpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmRlc3RpbmF0aW9uVVJMLmdl
dCgpIGZvcktleTp0eXBlSWRlbnRpZmllci5nZXQoKV0gYXRJbmRleGVkU3Vic2NyaXB0OmluZGV4
SW5JdGVtUHJvdmlkZXJBcnJheV07CisgICAgICAgICAgICAgICAgW3R5cGVUb0ZpbGVVUkxNYXBz
IHNldE9iamVjdDpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmRlc3RpbmF0aW9u
IGZvcktleTp0eXBlSWRlbnRpZmllci5nZXQoKV0gYXRJbmRleGVkU3Vic2NyaXB0OmluZGV4SW5J
dGVtUHJvdmlkZXJBcnJheV07CiAgICAgICAgICAgICAgICAgW3NldEZpbGVVUkxzTG9jayB1bmxv
Y2tdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUoZmls
ZUxvYWRpbmdHcm91cC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNmUzNDA3M2UzOTkzZDVkNjhlMDU2MTE1NWZkN2ZmZTc4YTU4OTU2
YS4uNzdkZDY3MTUxZTgyYmI4ZTMxZDAwZjE3NmU1ODIwOGY4MGIzZmZjYiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisy
MDE3LTA5LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtEaXJlY3RvcnkgVXBsb2FkXSBFeHRlbmQgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IHRvIGlP
UworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDky
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDI5MTU4ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHR3byBuZXcgaU9TIGRyYWcgYW5kIGRy
b3AgdW5pdCB0ZXN0cywgd2hpY2ggYm90aCBleGVyY2lzZSB0aGUgRGF0YVRyYW5zZmVySXRlbS53
ZWJLaXRHZXRBc0VudHJ5IGNvZGVwYXRoCisgICAgICAgIHVwb24gZHJvcC4gKC4uLilHZXRGb2xk
ZXJBc0VudHJ5IGNyZWF0ZXMgYSBuZXcgZm9sZGVyIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5
IGFuZCB1c2VzIGl0IHRvIGdlbmVyYXRlIGFuIGl0ZW0KKyAgICAgICAgcHJvdmlkZXIuIFRoaXMg
aXRlbSBwcm92aWRlciBpcyB0aGVuIGRyb3BwZWQgb3ZlciBhIGN1c3RvbSBkcm9wIGhhbmRsaW5n
IGVsZW1lbnQsIHdoaWNoIHdyaXRlcyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICB0aGUgZXhw
b3NlZCBGaWxlU3lzdGVtRW50cmllcyBpbnRvIGEgdGV4dGFyZWEuICguLi4pRXh0ZXJuYWxTb3Vy
Y2VEYXRhVHJhbnNmZXJJdGVtR2V0UGxhaW5UZXh0RmlsZUFzRW50cnkgZG9lcworICAgICAgICBz
b21ldGhpbmcgc2ltaWxhciwgZXhjZXB0IHRoYXQgaXQgb25seSBkcm9wcyBhIHBsYWluIHRleHQg
ZmlsZSBpbnN0ZWFkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9EYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbDogQWRkZWQuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgbmV3IHRlc3QgcGFnZSB0aGF0IGR1bXBzIGluZm9ybWF0aW9uIGFi
b3V0IERhdGFUcmFuc2Zlckl0ZW1zJyBmaWxlIHN5c3RlbSBlbnRyaWVzIHVwb24gZHJvcC4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1t
OgorICAgICAgICAocnVuVGVzdFdpdGhUZW1wb3JhcnlUZXh0RmlsZSk6CisgICAgICAgIChydW5U
ZXN0V2l0aFRlbXBvcmFyeUZvbGRlcik6CisKKyAgICAgICAgSW50cm9kdWNlIGhlbHBlcnMgdG8g
c2V0IHVwIGFuZCB0ZWFyIGRvd24gdGVtcG9yYXJ5IGZpbGVzIGFuZCBmb2xkZXJzIG92ZXIgdGhl
IGR1cmF0aW9uIG9mIGEgdGVzdC4KKworICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0VXBUZXN0
V2ViVmlld0ZvckRhdGFUcmFuc2Zlckl0ZW1zKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDE3LTA5LTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1MgV0syXSBBZGQgcGx1bWJpbmcgZm9yIFdLQ29udGVudFZpZXcgdG8g
YXNrIHRoZSB3ZWIgcHJvY2VzcyBmb3IgYWRkaXRpb25hbCBkcmFnIGl0ZW1zCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDZmY2E2ODJjMjhkZGQyZGQ4MDMxNGFhOWViZDNhNDVmMDFlYzI5N2Mu
LjU1OGUxZWZhY2Y3MjNiMGQ5M2ZmZDU1MGQzZDcxMGIwODhkNDUwOWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02NzYsNiArNjc2LDcgQEAKIAkJRjQ0RDA2NDUxRjM5NUMyNjAwMUEwRTI5
IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDREMDY0NDFGMzk1QzBEMDAxQTBFMjkg
LyogZWRpdG9yLXN0YXRlLXRlc3QtaGFybmVzcy5odG1sICovOyB9OwogCQlGNDREMDY0NzFGMzk2
MjdBMDAxQTBFMjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQwNjQ2MUYzOTVDNEQwMDFBMEUyOSAvKiBFZGl0
b3JTdGF0ZVRlc3RzLm1tICovOyB9OwogCQlGNDREMDY0QTFGMzk2MkYyMDAxQTBFMjkgLyogRWRp
dGluZ1Rlc3RIYXJuZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ0RDA2NDkxRjM5NjJFMzAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5t
bSAqLzsgfTsKKwkJRjQ1MTJFMTMxRjYwQzQ0NjAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0t
Z2V0QXNFbnRyeS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0NTEyRTEyMUY2MEM0MzQwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVt
LWdldEFzRW50cnkuaHRtbCAqLzsgfTsKIAkJRjQ1MzhFRjcxRTg0NzNFNjAwQjVDOTUzIC8qIGxh
cmdlLXJlZC1zcXVhcmUucG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1
YXJlLnBuZyAqLzsgfTsKIAkJRjQ1QjYzRkIxRjE5N0Y0QTAwOUQzOEI5IC8qIGltYWdlLW1hcC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NUI2M0ZBMUYxOTdGMzMwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCAqLzsgfTsKIAkJRjQ1
QjYzRkUxRjE5RDQxMDAwOUQzOEI5IC8qIEFjdGlvblNoZWV0VGVzdHMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDVCNjNGQzFGMTlENDEwMDA5RDM4
QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSAqLzsgfTsKQEAgLTgxNSw2ICs4MTYsNyBAQAogCQkJ
CTVDMjkzNjk2MUQ1QzAwRUQwMERFQUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJN0FFQUQ0ODExRTIwMTIyNzAwNDE2RUZFIC8qIENyb3NzUGFydGl0
aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTI5MEY0
Mjc1MTcyQTIyMUMwMDkzOUZGMCAvKiBjdXN0b20tcHJvdG9jb2wtc3luYy14aHIuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQlGNDUxMkUxMzFGNjBDNDQ2MDBCQjM2OUUgLyogRGF0YVRy
YW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzA3
RTZDQjIxM0ZENzM5MzAwMzhCMjJCIC8qIGRldmljZVBpeGVsUmF0aW8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQkwNzk5QzM0QjFFQkEzMzAxMDAzQjc1MzIgLyogZGlzYWJsZUdldFVz
ZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOUEyMUVGNDY5NkIw
MDgzRkEwOCAvKiBkaXYtYW5kLWxhcmdlLWltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CkBAIC0xNzA2LDYgKzE3MDgsNyBAQAogCQlGNDREMDY0NjFGMzk1QzREMDAxQTBFMjkgLyogRWRp
dG9yU3RhdGVUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEVkaXRvclN0YXRlVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NEQw
NjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhh
cm5lc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0aW5n
VGVzdEhhcm5lc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NTEyRTEyMUY2
MEM0MzQwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAv
KiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJlLnBuZyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUI2M0ZBMUYxOTdGMzMwMDlEMzhCOSAv
KiBpbWFnZS1tYXAuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJpbWFnZS1tYXAuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NUI2M0ZDMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVl
dFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWN0aW9uU2hlZXRUZXN0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTIsNiArMjE1NSw3IEBACiAJCQkJRjRBMzJF
Q0ExRjA2NDJGNDAwNDdDNTQ0IC8qIGNvbnRlbnRlZGl0YWJsZS1pbi1pZnJhbWUuaHRtbCAqLywK
IAkJCQlBMTZGNjZCOTFDNDBFQTIwMDBCRDREMjQgLyogQ29udGVudEZpbHRlcmluZy5odG1sICov
LAogCQkJCTVDMjkzNjk0MUQ1QkZEMTkwMERFQUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgKi8s
CisJCQkJRjQ1MTJFMTIxRjYwQzQzNDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNF
bnRyeS5odG1sICovLAogCQkJCTA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxlR2V0
VXNlck1lZGlhLmh0bWwgKi8sCiAJCQkJRjQxQUI5OUUxRUY0NjkyQzAwODNGQTA4IC8qIGRpdi1h
bmQtbGFyZ2UtaW1hZ2UuaHRtbCAqLywKIAkJCQk4MzdBMzVGMDFEOUExRTY0MDA2NjNDNTcgLyog
RG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRt
bCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YVRyYW5zZmVySXRl
bS1nZXRBc0VudHJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM4MDBlZDYyM2NkYTVjMDk1YzIzNTk5NzBh
NzgzNDY2YmI2ZGRlNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwKQEAgLTAsMCAr
MSw5NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8c3R5bGU+Cito
dG1sLCBib2R5IHsKKyAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbTsKKyAgICB3aWR0aDog
MTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgbWFyZ2luOiAwOworICAgIGZvbnQtc2l6ZTog
MWVtOworfQorCisjZHJvcGFyZWEgeworICAgIG1hcmdpbi10b3A6IDFlbTsKKyAgICB3aWR0aDog
MTAwJTsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworfQor
Cisjb3V0cHV0IHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIw
MHB4KTsKKyAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOworfQorPC9zdHlsZT4KKworPGRpdiBp
ZD0iZHJvcGFyZWEiPgorICAgIDxkaXY+VG8gbWFudWFsbHkgdGVzdCwgZHJvcCBzb21ldGhpbmcg
aW50byB0aGlzIGFyZWEgYW5kIG9ic2VydmUgdGhlIG91dHB1dCBiZWxvdy48L2Rpdj4KKzwvZGl2
PgorPHRleHRhcmVhIGlkPSJvdXRwdXQiPjwvdGV4dGFyZWE+CisKKzxzY3JpcHQ+CisgICAgZnVu
Y3Rpb24gZ2V0Q2hpbGRFbnRyaWVzKGVudHJ5KSB7CisgICAgICAgIGlmICghZW50cnkuaXNEaXJl
Y3RvcnkpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTsKKworICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAg
bGV0IHJlc3VsdCA9IFtdOworICAgICAgICAgICAgbGV0IHJlYWRlciA9IGVudHJ5LmNyZWF0ZVJl
YWRlcigpOworICAgICAgICAgICAgbGV0IGRvQmF0Y2ggPSAoKSA9PiB7CisgICAgICAgICAgICAg
ICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXMgPT4geworICAgICAgICAgICAgICAgICAgICBp
ZiAoZW50cmllcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVz
LmZvckVhY2goZSA9PiByZXN1bHQucHVzaChlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBk
b0JhdGNoKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZShyZXN1bHQpOworICAgICAgICAgICAgICAgIH0sIHJlamVjdCk7CisgICAg
ICAgICAgICB9OworICAgICAgICAgICAgZG9CYXRjaCgpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBkcm9wYXJlYS5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXIiLCBldmVudCA9PiBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpKTsKKyAgICBkcm9wYXJlYS5hZGRFdmVudExpc3RlbmVyKCJkcmFn
b3ZlciIsIGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpOworICAgIGRyb3BhcmVhLmFk
ZEV2ZW50TGlzdGVuZXIoImRyb3AiLCBoYW5kbGVEcm9wKTsKKworICAgIGFzeW5jIGZ1bmN0aW9u
IGhhbmRsZURyb3AoZXZlbnQpCisgICAgeworICAgICAgICBhd2FpdCBsb2dJdGVtQW5kRmlsZUVu
dHJ5SW5mb3JtYXRpb24oZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zKTsKKyAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgd2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFu
ZGxlci5wb3N0TWVzc2FnZSgiZHJvcHBlZCIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbGVG
cm9tRmlsZVN5c3RlbUZpbGVFbnRyeShmaWxlRW50cnkpCisgICAgeworICAgICAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiBmaWxlRW50cnkuZmlsZShmaWxlID0+IHJlc29sdmUoZmls
ZSkpKTsKKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiByZXByZXNlbnRhdGlvbkZvckZpbGVT
eXN0ZW1FbnRyeShlbnRyeSkKKyAgICB7CisgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9ICIi
OworICAgICAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHsKKyAgICAgICAgICAgIHJlcHJlc2Vu
dGF0aW9uICs9IGBESVI6ICR7ZW50cnkuZnVsbFBhdGh9XG5gOworICAgICAgICAgICAgZm9yIChs
ZXQgY2hpbGQgb2YgYXdhaXQgZ2V0Q2hpbGRFbnRyaWVzKGVudHJ5KSkKKyAgICAgICAgICAgICAg
ICByZXByZXNlbnRhdGlvbiArPSBhd2FpdCByZXByZXNlbnRhdGlvbkZvckZpbGVTeXN0ZW1FbnRy
eShjaGlsZCk7CisgICAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKSB7CisgICAgICAgICAg
ICBsZXQgZmlsZSA9IGF3YWl0IGZpbGVGcm9tRmlsZVN5c3RlbUZpbGVFbnRyeShlbnRyeSk7Cisg
ICAgICAgICAgICByZXByZXNlbnRhdGlvbiArPSBgRklMRTogJHtlbnRyeS5mdWxsUGF0aH0gKCck
e2ZpbGUudHlwZX0nLCAke2ZpbGUuc2l6ZX0gYnl0ZXMpXG5gOworICAgICAgICB9CisgICAgICAg
IHJldHVybiByZXByZXNlbnRhdGlvbjsKKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiBsb2dJ
dGVtQW5kRmlsZUVudHJ5SW5mb3JtYXRpb24oaXRlbXMpCisgICAgeworICAgICAgICBvdXRwdXQu
dmFsdWUgPSAiIjsKKyAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLmxl
bmd0aDsgaW5kZXgrKykgeworICAgICAgICAgICAgbGV0IGl0ZW0gPSBpdGVtcy5pdGVtKGluZGV4
KTsKKyAgICAgICAgICAgIG91dHB1dC52YWx1ZSArPSBgRm91bmQgZGF0YSB0cmFuc2ZlciBpdGVt
IChraW5kOiAnJHtpdGVtLmtpbmR9JywgdHlwZTogJyR7aXRlbS50eXBlfScpXG5gOworICAgICAg
ICAgICAgbGV0IGVudHJ5ID0gaXRlbS53ZWJraXRHZXRBc0VudHJ5KCk7CisgICAgICAgICAgICBp
ZiAoZW50cnkpIHsKKyAgICAgICAgICAgICAgICBvdXRwdXQudmFsdWUgKz0gYXdhaXQgcmVwcmVz
ZW50YXRpb25Gb3JGaWxlU3lzdGVtRW50cnkoZW50cnkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCmluZGV4IDU1YjBiYmRmMTU4
YWI3ZjRlOTY2ZDc3NDM4NTQ1ODgwMGFiNjQzMWUuLjI1ZTMxNjQzZmVjZTU0NzAzY2FjZGJmNjQy
OGY4NWE1NzMyZDFjMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxN
b2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxVSUtpdC9O
U0l0ZW1Qcm92aWRlcitVSUtpdEFkZGl0aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVy
ZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oPgpAQCAtMTY0LDYgKzE2NSw1NSBAQCBzdGF0aWMgdm9p
ZCBjaGVja0RyYWdDYXJldFJlY3RJc0NvbnRhaW5lZEluUmVjdChDR1JlY3QgY2FyZXRSZWN0LCBD
R1JlY3QgY29udGFpbgogICAgICAgICBOU0xvZyhAIkV4cGVjdGVkIGNhcmV0IHJlY3Q6ICVAIHRv
IGZpdCB3aXRoaW4gY29udGFpbmVyIHJlY3Q6ICVAIiwgTlNTdHJpbmdGcm9tQ0dSZWN0KGNhcmV0
UmVjdCksIE5TU3RyaW5nRnJvbUNHUmVjdChjb250YWluZXJSZWN0KSk7CiB9CiAKK3N0YXRpYyB2
b2lkIHJ1blRlc3RXaXRoVGVtcG9yYXJ5VGV4dEZpbGUodm9pZChecnVuVGVzdCkoTlNVUkwgKmZp
bGVVUkwpKQoreworICAgIE5TU3RyaW5nICpmaWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiZHJhZy1kcm9wLXRleHQtZmlsZS0lQC50eHQiLCBbTlNVVUlEIFVVSURdLlVVSURT
dHJpbmddOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVtcG9yYXJ5RmlsZSA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OmZpbGVOYW1lXSBpc0RpcmVjdG9yeTpOT107CisgICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcG9yYXJ5RmlsZS5nZXQoKSBlcnJv
cjpuaWxdOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgW0AiVGhpcyBpcyBhIHRp
bnkgYmxvYiBvZiB0ZXh0LiIgd3JpdGVUb1VSTDp0ZW1wb3JhcnlGaWxlLmdldCgpIGF0b21pY2Fs
bHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOiZlcnJvcl07CisKKyAg
ICBpZiAoZXJyb3IpCisgICAgICAgIE5TTG9nKEAiRXJyb3Igd3JpdGluZyB0ZW1wb3JhcnkgZmls
ZTogJUAiLCBlcnJvcik7CisKKyAgICBAdHJ5IHsKKyAgICAgICAgcnVuVGVzdCh0ZW1wb3JhcnlG
aWxlLmdldCgpKTsKKyAgICB9IEBmaW5hbGx5IHsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcG9yYXJ5RmlsZS5nZXQoKSBlcnJvcjpu
aWxdOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcnVuVGVzdFdpdGhUZW1wb3JhcnlGb2xkZXIo
dm9pZChecnVuVGVzdCkoTlNVUkwgKmZvbGRlclVSTCkpCit7CisgICAgTlNTdHJpbmcgKmZvbGRl
ck5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInNvbWUuZGlyZWN0b3J5LSVAIiwg
W05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nXTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlbXBvcmFy
eUZvbGRlciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZvbGRlck5hbWVdIGlzRGlyZWN0b3J5OllF
U107CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6
dGVtcG9yYXJ5Rm9sZGVyLmdldCgpIGVycm9yOm5pbF07CisKKyAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKKyAgICBOU0ZpbGVNYW5hZ2VyICpkZWZhdWx0TWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBbZGVmYXVsdE1hbmFnZXIgY3JlYXRlRGlyZWN0b3J5QXRV
Ukw6dGVtcG9yYXJ5Rm9sZGVyLmdldCgpIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpOTyBh
dHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIFtVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24odGVzdEljb25JbWFnZSgpKSB3cml0ZVRvVVJMOlt0ZW1wb3JhcnlGb2xkZXIuZ2V0KCkgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiaWNvbi5wbmciIGlzRGlyZWN0b3J5Ok5PXSBhdG9t
aWNhbGx5OllFU107CisgICAgW3Rlc3RaSVBBcmNoaXZlKCkgd3JpdGVUb1VSTDpbdGVtcG9yYXJ5
Rm9sZGVyLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImFyY2hpdmUuemlwIiBp
c0RpcmVjdG9yeTpOT10gYXRvbWljYWxseTpZRVNdOworCisgICAgTlNVUkwgKmZpcnN0U3ViZGly
ZWN0b3J5ID0gW3RlbXBvcmFyeUZvbGRlci5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJzdWJkaXJlY3RvcnkxIiBpc0RpcmVjdG9yeTpZRVNdOworICAgIFtkZWZhdWx0TWFuYWdl
ciBjcmVhdGVEaXJlY3RvcnlBdFVSTDpmaXJzdFN1YmRpcmVjdG9yeSB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6Tk8gYXR0cmlidXRlczpuaWwgZXJyb3I6JmVycm9yXTsKKyAgICBbQCJJIGFt
IGEgdGV4dCBmaWxlIGluIHRoZSBmaXJzdCBzdWJkaXJlY3RvcnkuIiB3cml0ZVRvVVJMOltmaXJz
dFN1YmRpcmVjdG9yeSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ0ZXh0LWZpbGUtMS50
eHQiIGlzRGlyZWN0b3J5Ok5PXSBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZyBlcnJvcjomZXJyb3JdOworCisgICAgTlNVUkwgKnNlY29uZFN1YmRpcmVjdG9yeSA9
IFt0ZW1wb3JhcnlGb2xkZXIuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAic3Vi
ZGlyZWN0b3J5MiIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBbZGVmYXVsdE1hbmFnZXIgY3JlYXRl
RGlyZWN0b3J5QXRVUkw6c2Vjb25kU3ViZGlyZWN0b3J5IHdpdGhJbnRlcm1lZGlhdGVEaXJlY3Rv
cmllczpOTyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIFtAIkkgYW0gYSB0ZXh0
IGZpbGUgaW4gdGhlIHNlY29uZCBzdWJkaXJlY3RvcnkuIiB3cml0ZVRvVVJMOltzZWNvbmRTdWJk
aXJlY3RvcnkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidGV4dC1maWxlLTIudHh0IiBp
c0RpcmVjdG9yeTpOT10gYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmcgZXJyb3I6JmVycm9yXTsKKworICAgIGlmIChlcnJvcikKKyAgICAgICAgTlNMb2coQCJFcnJv
ciB3cml0aW5nIHRlbXBvcmFyeSBmaWxlOiAlQCIsIGVycm9yKTsKKworICAgIEB0cnkgeworICAg
ICAgICBydW5UZXN0KHRlbXBvcmFyeUZvbGRlci5nZXQoKSk7CisgICAgfSBAZmluYWxseSB7Cisg
ICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnRl
bXBvcmFyeUZvbGRlci5nZXQoKSBlcnJvcjpuaWxdOworICAgIH0KK30KKwogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbWFnZVRvQ29udGVu
dEVkaXRhYmxlKQpAQCAtODc3LDYgKzkyNyw4OCBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3Rz
LCBFeHRlcm5hbFNvdXJjZU92ZXJyaWRlRHJvcEZpbGVVcGxvYWQpCiAgICAgRVhQRUNUX1dLX1NU
UkVRKCJ0ZXh0L2h0bWwiLCBvdXRwdXRWYWx1ZS5VVEY4U3RyaW5nKTsKIH0KIAorc3RhdGljIFJl
dGFpblB0cjxUZXN0V0tXZWJWaWV3PiBzZXRVcFRlc3RXZWJWaWV3Rm9yRGF0YVRyYW5zZmVySXRl
bXMoKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5zZmVySXRlbS1nZXRB
c0VudHJ5Il07CisKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gKFdLUHJlZmVyZW5jZXNSZWYpW1t3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0
RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBXS1ByZWZl
cmVuY2VzU2V0RGlyZWN0b3J5VXBsb2FkRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisKKyAg
ICByZXR1cm4gd2ViVmlldzsKK30KKworVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRXh0ZXJu
YWxTb3VyY2VEYXRhVHJhbnNmZXJJdGVtR2V0Rm9sZGVyQXNFbnRyeSkKK3sKKyAgICBOU0FycmF5
PE5TU3RyaW5nICo+ICpleHBlY3RlZE91dHB1dCA9IEBbCisgICAgICAgIEAiRm91bmQgZGF0YSB0
cmFuc2ZlciBpdGVtIChraW5kOiAnc3RyaW5nJywgdHlwZTogJ3RleHQvcGxhaW4nKSIsCisgICAg
ICAgIEAiRm91bmQgZGF0YSB0cmFuc2ZlciBpdGVtIChraW5kOiAnZmlsZScsIHR5cGU6ICcnKSIs
CisgICAgICAgIEAiRElSOiAvc29tZWRpcmVjdG9yeSIsCisgICAgICAgIEAiRklMRTogL3NvbWVk
aXJlY3RvcnkvaWNvbi5wbmcgKCdpbWFnZS9wbmcnLCA0MjEzMCBieXRlcykiLAorICAgICAgICBA
IkRJUjogL3NvbWVkaXJlY3Rvcnkvc3ViZGlyZWN0b3J5MSIsCisgICAgICAgIEAiRklMRTogL3Nv
bWVkaXJlY3Rvcnkvc3ViZGlyZWN0b3J5MS90ZXh0LWZpbGUtMS50eHQgKCd0ZXh0L3BsYWluJywg
NDMgYnl0ZXMpIiwKKyAgICAgICAgQCJGSUxFOiAvc29tZWRpcmVjdG9yeS9hcmNoaXZlLnppcCAo
J2FwcGxpY2F0aW9uL3ppcCcsIDk4OCBieXRlcykiLAorICAgICAgICBAIkRJUjogL3NvbWVkaXJl
Y3Rvcnkvc3ViZGlyZWN0b3J5MiIsCisgICAgICAgIEAiRklMRTogL3NvbWVkaXJlY3Rvcnkvc3Vi
ZGlyZWN0b3J5Mi90ZXh0LWZpbGUtMi50eHQgKCd0ZXh0L3BsYWluJywgNDQgYnl0ZXMpIiwKKyAg
ICAgICAgQCIiCisgICAgXTsKKworICAgIGF1dG8gd2ViVmlldyA9IHNldFVwVGVzdFdlYlZpZXdG
b3JEYXRhVHJhbnNmZXJJdGVtcygpOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImRyb3BwZWQiIGFjdGlv
bjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIHJ1blRlc3RXaXRo
VGVtcG9yYXJ5Rm9sZGVyKF4oTlNVUkwgKmZvbGRlclVSTCkgeworICAgICAgICBhdXRvIGl0ZW1Q
cm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgICAg
ICBbaXRlbVByb3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6QCJzb21lZGlyZWN0b3J5Il07CisgICAg
ICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJGaWxlUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRp
ZmllcjooTlNTdHJpbmcgKilrVVRUeXBlRm9sZGVyIGZpbGVPcHRpb25zOjAgdmlzaWJpbGl0eTpO
U0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbZm9s
ZGVyVVJMID0gcmV0YWluUHRyKGZvbGRlclVSTCldIChGaWxlTG9hZENvbXBsZXRpb25CbG9jayBj
b21wbGV0aW9uSGFuZGxlcikgLT4gTlNQcm9ncmVzcyAqIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGZvbGRlclVSTC5nZXQoKSwgTk8sIG5pbCk7CisgICAgICAgICAgICByZXR1cm4g
bmlsOworICAgICAgICB9XTsKKworICAgICAgICBhdXRvIGRhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
c2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICAg
ICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDUwLCA1MCkg
dG86Q0dQb2ludE1ha2UoMTUwLCA1MCldOworICAgIH0pOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2V4cGVjdGVkT3V0cHV0IGNv
bXBvbmVudHNKb2luZWRCeVN0cmluZzpAIlxuIl0sIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJvdXRwdXQudmFsdWUiXSk7Cit9CisKK1RFU1QoRGF0YUludGVyYWN0aW9u
VGVzdHMsIEV4dGVybmFsU291cmNlRGF0YVRyYW5zZmVySXRlbUdldFBsYWluVGV4dEZpbGVBc0Vu
dHJ5KQoreworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4cGVjdGVkT3V0cHV0ID0gQFsKKyAg
ICAgICAgQCJGb3VuZCBkYXRhIHRyYW5zZmVyIGl0ZW0gKGtpbmQ6ICdzdHJpbmcnLCB0eXBlOiAn
dGV4dC9wbGFpbicpIiwKKyAgICAgICAgQCJGb3VuZCBkYXRhIHRyYW5zZmVyIGl0ZW0gKGtpbmQ6
ICdmaWxlJywgdHlwZTogJ3RleHQvcGxhaW4nKSIsCisgICAgICAgIEAiRklMRTogL2Zvby50eHQg
KCd0ZXh0L3BsYWluJywgMjggYnl0ZXMpIiwKKyAgICAgICAgQCIiCisgICAgXTsKKworICAgIGF1
dG8gd2ViVmlldyA9IHNldFVwVGVzdFdlYlZpZXdGb3JEYXRhVHJhbnNmZXJJdGVtcygpOworICAg
IF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVj
ZWl2aW5nTWVzc2FnZTpAImRyb3BwZWQiIGFjdGlvbjpeKCkgeworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIHJ1blRlc3RXaXRoVGVtcG9yYXJ5VGV4dEZpbGUoXihOU1VSTCAq
ZmlsZVVSTCkgeworICAgICAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Q
cm92aWRlciBhbGxvY10gaW5pdF0pOworICAgICAgICBbaXRlbVByb3ZpZGVyIHNldFN1Z2dlc3Rl
ZE5hbWU6QCJmb28iXTsKKyAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckZpbGVSZXByZXNl
bnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0
IGZpbGVPcHRpb25zOjAgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlz
aWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbZmlsZVVSTCA9IHJldGFpblB0cihmaWxlVVJMKV0oRmls
ZUxvYWRDb21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmaWxlVVJMLmdldCgpLCBOTywgbmlsKTsK
KyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIH1dOworCisgICAgICAgIGF1dG8gZGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICAgICAgW2RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3Zp
ZGVyLmdldCgpIF1dOworICAgICAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206
Q0dQb2ludE1ha2UoNTAsIDUwKSB0bzpDR1BvaW50TWFrZSgxNTAsIDUwKV07CisgICAgfSk7CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIEVYUEVDVF9XS19TVFJF
UShbZXhwZWN0ZWRPdXRwdXQgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiXG4iXSwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm91dHB1dC52YWx1ZSJdKTsKK30KKwog
VEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRXh0ZXJuYWxTb3VyY2VPdmVycmlkZURyb3BJbnNl
cnRVUkwpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsK
</data>
<flag name="review"
          id="340245"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320153</attachid>
            <date>2017-09-07 12:09:32 -0700</date>
            <delta_ts>2017-09-07 13:12:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176492-20170907120932.patch</filename>
            <type>text/plain</type>
            <size>24184</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZkNDkzYzcwM2Q4ZjQ4
NDkzMmIzOGM4ZjlhYmE1MGViNDgyYTVjMi4uZDhjMjgwNTNkNzY5Y2JlYTE3NjM2YjJkZGZjNTBi
MGVhODUwNzY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE3LTA5LTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtEaXJlY3Rvcnkg
VXBsb2FkXSBFeHRlbmQgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IHRvIGlPUworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDkyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zNDI5MTU4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgor
CisgICAgICAgIEFkZHMgc3VwcG9ydCBmb3IgYWNjZXB0aW5nIGRyb3BwZWQgZm9sZGVycyBvbiBp
T1MuCisKKyAgICAgICAgVGVzdHM6IERhdGFJbnRlcmFjdGlvblRlc3RzLkV4dGVybmFsU291cmNl
RGF0YVRyYW5zZmVySXRlbUdldEZvbGRlckFzRW50cnkKKyAgICAgICAgICAgICAgIERhdGFJbnRl
cmFjdGlvblRlc3RzLkV4dGVybmFsU291cmNlRGF0YVRyYW5zZmVySXRlbUdldFBsYWluVGV4dEZp
bGVBc0VudHJ5CisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJk
VHlwZXMpOgorCisgICAgICAgIEFkZCAicHVibGljLmZvbGRlciIgYXMgYSBjb21wYXRpYmxlIHBh
c3RlYm9hcmQgdHlwZSBmb3IgZHJvcHMgb24gaU9TLiBUaGlzIG1lYW5zIGZpbGUgaW5wdXRzIGFu
ZCBjdXN0b20gZHJvcAorICAgICAgICB0YXJnZXRzIHRoYXQgcHJldmVudERlZmF1bHQoKSB3aWxs
LCBieSBkZWZhdWx0LCBiZSBhYmxlIHRvIGFjY2VwdCBpbmNvbWluZyBmb2xkZXJzLgorCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAg
IChsaW5rVGVtcG9yYXJ5SXRlbVByb3ZpZGVyRmlsZXNUb0Ryb3BTdGFnaW5nRGlyZWN0b3J5KToK
KworICAgICAgICBUd2VhayB0ZW1wb3JhcnlGaWxlVVJMRm9yRGF0YUludGVyYWN0aW9uQ29udGVu
dCB0byBhbHNvIGhhcmQgbGluayBVSUtpdCdzIHRlbXBvcmFyeSBmaWxlcyBpbnN0ZWFkLCBhbmQg
cmV0dXJuCisgICAgICAgIGEgbm9uLW51bGwgZGVzdGluYXRpb24gVVJMIG9ubHkgaWYgdGhlIG5l
Y2Vzc2FyeSBmaWxlIG9wZXJhdGlvbnMgc3VjY2VlZGVkLiBBbHNvIHJlbmFtZXMgdGhpcyBoZWxw
ZXIgdG8KKyAgICAgICAgbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2lu
Z0RpcmVjdG9yeSB0byBiZXR0ZXIgcmVmbGVjdCBpdHMgbmV3IHB1cnBvc2UuIFRoaXMgbWFrZXMg
bG9naWMgbXVjaAorICAgICAgICBjbGVhbmVyIGF0IHRoZSBjYWxsIHNpdGUsIHdoaWNoIG5vIGxv
bmdlciBjaGVja3MgYWdhaW5zdCB2YXJpb3VzIGNvbmRpdGlvbnMgYmVmb3JlIHByb2NlZWRpbmcg
dG8gc2V0IHRoZSBkYXRhCisgICAgICAgIHRyYW5zZmVyIFVSTC4KKworICAgICAgICAoLVtXZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0Zp
bGVVUkxzOnN5bmNocm9ub3VzVGltZW91dDpdKToKKyAgICAgICAgKHRlbXBvcmFyeUZpbGVVUkxG
b3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KTogRGVsZXRlZC4KKwogMjAxNy0wOS0wNyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vZGVybml6
ZSBHZW9sb2NhdGlvbiBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCmluZGV4IDI5OTcxNWQ1NmFlZGI2ODA0Nzk4ZThlYzYxN2IyZWQyY2RlOTVlZjAu
LjczMTc4MmNjYzg2Mjc4M2Q0ZjJkOTIxZWJkYzU5YjE2YTZiZDkyMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zMDYsNyArMzA2LDcgQEAg
TlNBcnJheSAqUGFzdGVib2FyZDo6c3VwcG9ydGVkV2ViQ29udGVudFBhc3RlYm9hcmRUeXBlcygp
CiAKIE5TQXJyYXkgKlBhc3RlYm9hcmQ6OnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlw
ZXMoKQogewotICAgIHJldHVybiBAWyAoTlNTdHJpbmcgKilrVVRUeXBlQ29udGVudCwgKE5TU3Ry
aW5nICopa1VUVHlwZVppcEFyY2hpdmUgXTsKKyAgICByZXR1cm4gQFsgKE5TU3RyaW5nICopa1VU
VHlwZUNvbnRlbnQsIChOU1N0cmluZyAqKWtVVFR5cGVaaXBBcmNoaXZlLCAoTlNTdHJpbmcgKilr
VVRUeXBlRm9sZGVyIF07CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLm1tCmluZGV4IDM5MmQ1YjBlYzQ5Y2E2MmM2NmIyYzA0ZGE5ODJiNWJjOGM0NjBiN2EuLjgy
OTY1NTllYTNkMWFjZDViMjFkOTg3N2I0MDUzZDk5Mjg0MWE5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CkBAIC00MTMsOSArNDEzLDEwIEBAIC0gKE5TSW50ZWdlciludW1iZXJPZkZpbGVzCiAgICAgcmV0
dXJuIG51bWJlck9mRmlsZXM7CiB9CiAKLXN0YXRpYyBOU1VSTCAqdGVtcG9yYXJ5RmlsZVVSTEZv
ckRhdGFJbnRlcmFjdGlvbkNvbnRlbnQoTlNVUkwgKnVybCwgTlNTdHJpbmcgKnN1Z2dlc3RlZE5h
bWUpCitzdGF0aWMgTlNVUkwgKmxpbmtUZW1wb3JhcnlJdGVtUHJvdmlkZXJGaWxlc1RvRHJvcFN0
YWdpbmdEaXJlY3RvcnkoTlNVUkwgKnVybCwgTlNTdHJpbmcgKnN1Z2dlc3RlZE5hbWUsIE5TU3Ry
aW5nICp0eXBlSWRlbnRpZmllcikKIHsKLSAgICBzdGF0aWMgTlNTdHJpbmcgKmRlZmF1bHREYXRh
SW50ZXJhY3Rpb25GaWxlTmFtZSA9IEAiZmlsZSI7CisgICAgc3RhdGljIE5TU3RyaW5nICpkZWZh
dWx0RHJvcEZvbGRlck5hbWUgPSBAImZvbGRlciI7CisgICAgc3RhdGljIE5TU3RyaW5nICpkZWZh
dWx0RHJvcEZpbGVOYW1lID0gQCJmaWxlIjsKICAgICBzdGF0aWMgTlNTdHJpbmcgKmRhdGFJbnRl
cmFjdGlvbkRpcmVjdG9yeVByZWZpeCA9IEAiZGF0YS1pbnRlcmFjdGlvbiI7CiAgICAgaWYgKCF1
cmwpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MjQsMTEgKzQyNSwxOCBAQCBzdGF0aWMgTlNV
UkwgKnRlbXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJhY3Rpb25Db250ZW50KE5TVVJMICp1cmws
IE5TU3RyaW5nICpzdQogICAgIGlmICghdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgc3VnZ2VzdGVkTmFtZSA9IHN1Z2dlc3RlZE5h
bWUgPzogZGVmYXVsdERhdGFJbnRlcmFjdGlvbkZpbGVOYW1lOwotICAgIGlmICghW3N1Z2dlc3Rl
ZE5hbWUgY29udGFpbnNTdHJpbmc6QCIuIl0pCisgICAgTlNVUkwgKmRlc3RpbmF0aW9uID0gbmls
OworICAgIEJPT0wgaXNGb2xkZXIgPSBVVFR5cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZil0eXBl
SWRlbnRpZmllciwga1VUVHlwZUZvbGRlcik7CisgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFn
ZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CisKKyAgICBpZiAoIXN1Z2dlc3Rl
ZE5hbWUpCisgICAgICAgIHN1Z2dlc3RlZE5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25lbnQgPzog
KGlzRm9sZGVyID8gZGVmYXVsdERyb3BGb2xkZXJOYW1lIDogZGVmYXVsdERyb3BGaWxlTmFtZSk7
CisKKyAgICBpZiAoIVtzdWdnZXN0ZWROYW1lIGNvbnRhaW5zU3RyaW5nOkAiLiJdICYmICFpc0Zv
bGRlcikKICAgICAgICAgc3VnZ2VzdGVkTmFtZSA9IFtzdWdnZXN0ZWROYW1lIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aEV4dGVuc2lvbjp1cmwucGF0aEV4dGVuc2lvbl07CiAKLSAgICByZXR1cm4gW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpbdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5IHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpzdWdnZXN0ZWROYW1lID86IHVybC5sYXN0UGF0
aENvbXBvbmVudF1dOworICAgIGRlc3RpbmF0aW9uID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpb
dGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpzdWdnZXN0ZWROYW1lXV07CisgICAgcmV0dXJuIFtmaWxlTWFuYWdlciBsaW5rSXRl
bUF0VVJMOnVybCB0b1VSTDpkZXN0aW5hdGlvbiBlcnJvcjpuaWxdID8gZGVzdGluYXRpb24gOiBu
aWw7CiB9CiAKIC0gKE5TU3RyaW5nICopdHlwZUlkZW50aWZpZXJUb0xvYWRGb3JSZWdpc3RlcmVk
VHlwZUlkZW50ZmllcnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilyZWdpc3RlcmVkVHlwZUlkZW50
aWZpZXJzCkBAIC00ODQsMTQgKzQ5MiwxMyBAQCAtICh2b2lkKWRvQWZ0ZXJMb2FkaW5nUHJvdmlk
ZWRDb250ZW50SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJGaWxlTG9hZEJsb2NrKQogICAg
ICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN1Z2dlc3RlZE5hbWUgPSBbaXRlbVByb3ZpZGVyIHN1
Z2dlc3RlZE5hbWVdOwogICAgICAgICBkaXNwYXRjaF9ncm91cF9lbnRlcihmaWxlTG9hZGluZ0dy
b3VwLmdldCgpKTsKICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIoc3luY2hyb25vdXNGaWxl
TG9hZGluZ0dyb3VwLmdldCgpKTsKLSAgICAgICAgW2l0ZW1Qcm92aWRlciBsb2FkRmlsZVJlcHJl
c2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6W3N5bmNocm9ub3VzRmlsZUxvYWRpbmdHcm91cCwgc2V0RmlsZVVSTHNMb2NrLCBp
bmRleEluSXRlbVByb3ZpZGVyQXJyYXksIHN1Z2dlc3RlZE5hbWUsIHR5cGVJZGVudGlmaWVyLCB0
eXBlVG9GaWxlVVJMTWFwcywgZmlsZUxvYWRpbmdHcm91cF0gKE5TVVJMICp1cmwsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIFtpdGVtUHJvdmlkZXIgbG9hZEZpbGVSZXByZXNlbnRhdGlvbkZv
clR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltz
eW5jaHJvbm91c0ZpbGVMb2FkaW5nR3JvdXAsIHNldEZpbGVVUkxzTG9jaywgaW5kZXhJbkl0ZW1Q
cm92aWRlckFycmF5LCBzdWdnZXN0ZWROYW1lLCB0eXBlSWRlbnRpZmllciwgdHlwZVRvRmlsZVVS
TE1hcHMsIGZpbGVMb2FkaW5nR3JvdXBdIChOU1VSTCAqdXJsLCBOU0Vycm9yICopIHsKICAgICAg
ICAgICAgIC8vIEFmdGVyIGV4ZWN1dGluZyB0aGlzIGNvbXBsZXRpb24gYmxvY2ssIFVJS2l0IHJl
bW92ZXMgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIFVSTC4gSG93ZXZlciwgd2UgbmVlZCB0aGlzIGRh
dGEgdG8gcGVyc2lzdCBsb25nZXIgZm9yIHRoZSB3ZWIgY29udGVudCBwcm9jZXNzLgogICAgICAg
ICAgICAgLy8gVG8gYWRkcmVzcyB0aGlzLCB3ZSBoYXJkIGxpbmsgdGhlIGdpdmVuIFVSTCB0byBh
IG5ldyB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gVGhpcyBmb2xs
b3dzIHRoZSBzYW1lIGZsb3cgYXMgcmVndWxhciBmaWxlIHVwbG9hZCwgaW4KICAgICAgICAgICAg
IC8vIFdLRmlsZVVwbG9hZFBhbmVsLm1tLiBUaGUgdGVtcG9yYXJ5IGZpbGVzIGFyZSBjbGVhbmVk
IHVwIGJ5IHRoZSBzeXN0ZW0gYXQgYSBsYXRlciB0aW1lLgotICAgICAgICAgICAgUmV0YWluUHRy
PE5TVVJMPiBkZXN0aW5hdGlvblVSTCA9IHRlbXBvcmFyeUZpbGVVUkxGb3JEYXRhSW50ZXJhY3Rp
b25Db250ZW50KHVybCwgc3VnZ2VzdGVkTmFtZS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoZGVz
dGluYXRpb25VUkwgJiYgIWVycm9yICYmIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
bGlua0l0ZW1BdFVSTDp1cmwgdG9VUkw6ZGVzdGluYXRpb25VUkwuZ2V0KCkgZXJyb3I6bmlsXSkg
eworICAgICAgICAgICAgaWYgKE5TVVJMICpkZXN0aW5hdGlvbiA9IGxpbmtUZW1wb3JhcnlJdGVt
UHJvdmlkZXJGaWxlc1RvRHJvcFN0YWdpbmdEaXJlY3RvcnkodXJsLCBzdWdnZXN0ZWROYW1lLmdl
dCgpLCB0eXBlSWRlbnRpZmllci5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBbc2V0RmlsZVVS
THNMb2NrIGxvY2tdOwotICAgICAgICAgICAgICAgIFt0eXBlVG9GaWxlVVJMTWFwcyBzZXRPYmpl
Y3Q6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpkZXN0aW5hdGlvblVSTC5nZXQo
KSBmb3JLZXk6dHlwZUlkZW50aWZpZXIuZ2V0KCldIGF0SW5kZXhlZFN1YnNjcmlwdDppbmRleElu
SXRlbVByb3ZpZGVyQXJyYXldOworICAgICAgICAgICAgICAgIFt0eXBlVG9GaWxlVVJMTWFwcyBz
ZXRPYmplY3Q6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpkZXN0aW5hdGlvbiBm
b3JLZXk6dHlwZUlkZW50aWZpZXIuZ2V0KCldIGF0SW5kZXhlZFN1YnNjcmlwdDppbmRleEluSXRl
bVByb3ZpZGVyQXJyYXldOwogICAgICAgICAgICAgICAgIFtzZXRGaWxlVVJMc0xvY2sgdW5sb2Nr
XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2xlYXZlKGZpbGVM
b2FkaW5nR3JvdXAuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDEyZGNkOWZiODIyNGQ5NjA5MzhjMDM5ZTU1Zjg3MjBkMjJmYzcyZmMu
LmU3YzY3MTliZjVhZDEyYjM2NzNiNDVkYTU4MWRjZWU0NjZmMTNlYTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAx
Ny0wOS0wNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBbRGlyZWN0b3J5IFVwbG9hZF0gRXh0ZW5kIGRyYWcgYW5kIGRyb3Agc3VwcG9ydCB0byBpT1MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ5Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzQyOTE1ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltIEhvcnRvbi4KKworICAgICAgICBBZGRzIHR3byBuZXcgaU9TIGRyYWcgYW5kIGRyb3AgdW5p
dCB0ZXN0cywgd2hpY2ggYm90aCBleGVyY2lzZSB0aGUgRGF0YVRyYW5zZmVySXRlbS53ZWJLaXRH
ZXRBc0VudHJ5IGNvZGVwYXRoCisgICAgICAgIHVwb24gZHJvcC4gKC4uLilHZXRGb2xkZXJBc0Vu
dHJ5IGNyZWF0ZXMgYSBuZXcgZm9sZGVyIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFuZCB1
c2VzIGl0IHRvIGdlbmVyYXRlIGFuIGl0ZW0KKyAgICAgICAgcHJvdmlkZXIuIFRoaXMgaXRlbSBw
cm92aWRlciBpcyB0aGVuIGRyb3BwZWQgb3ZlciBhIGN1c3RvbSBkcm9wIGhhbmRsaW5nIGVsZW1l
bnQsIHdoaWNoIHdyaXRlcyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICB0aGUgZXhwb3NlZCBG
aWxlU3lzdGVtRW50cmllcyBpbnRvIGEgdGV4dGFyZWEuICguLi4pRXh0ZXJuYWxTb3VyY2VEYXRh
VHJhbnNmZXJJdGVtR2V0UGxhaW5UZXh0RmlsZUFzRW50cnkgZG9lcworICAgICAgICBzb21ldGhp
bmcgc2ltaWxhciwgZXhjZXB0IHRoYXQgaXQgb25seSBkcm9wcyBhIHBsYWluIHRleHQgZmlsZSBp
bnN0ZWFkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9EYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbDogQWRkZWQuCisKKyAgICAgICAg
SW50cm9kdWNlIGEgbmV3IHRlc3QgcGFnZSB0aGF0IGR1bXBzIGluZm9ybWF0aW9uIGFib3V0IERh
dGFUcmFuc2Zlckl0ZW1zJyBmaWxlIHN5c3RlbSBlbnRyaWVzIHVwb24gZHJvcC4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tOgorICAg
ICAgICAocnVuVGVzdFdpdGhUZW1wb3JhcnlUZXh0RmlsZSk6CisgICAgICAgIChydW5UZXN0V2l0
aFRlbXBvcmFyeUZvbGRlcik6CisKKyAgICAgICAgSW50cm9kdWNlIGhlbHBlcnMgdG8gc2V0IHVw
IGFuZCB0ZWFyIGRvd24gdGVtcG9yYXJ5IGZpbGVzIGFuZCBmb2xkZXJzIG92ZXIgdGhlIGR1cmF0
aW9uIG9mIGEgdGVzdC4KKworICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0VXBUZXN0V2ViVmll
d0ZvckRhdGFUcmFuc2Zlckl0ZW1zKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDE3LTA5LTA3ICBMdWNhcyBGb3JzY2hsZXIgIDxsZm9yc2NobGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBiaXNlY3QtYnVpbGRzIHN0YXJ0ZWQgZmFpbGluZyB3aXRoIGludmFsaWQganNvbgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZmNhNjgyYzI4ZGRkMmRkODAzMTRhYTllYmQzYTQ1
ZjAxZWMyOTdjLi41NThlMWVmYWNmNzIzYjBkOTNmZmQ1NTBkM2Q3MTBiMDg4ZDQ1MDlhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjc2LDYgKzY3Niw3IEBACiAJCUY0NEQwNjQ1MUYzOTVD
MjYwMDFBMEUyOSAvKiBlZGl0b3Itc3RhdGUtdGVzdC1oYXJuZXNzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0RDA2NDQxRjM5NUMw
RDAwMUEwRTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCAqLzsgfTsKIAkJRjQ0
RDA2NDcxRjM5NjI3QTAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDREMDY0NjFGMzk1QzREMDAxQTBF
MjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLzsgfTsKIAkJRjQ0RDA2NEExRjM5NjJGMjAwMUEw
RTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVz
dEhhcm5lc3MubW0gKi87IH07CisJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJh
bnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRy
YW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi87IH07CiAJCUY0NTM4RUY3MUU4NDczRTYwMEI1
Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDUzOEVGMDFFODQ2QjQxMDBCNUM5NTMgLyogbGFy
Z2UtcmVkLXNxdWFyZS5wbmcgKi87IH07CiAJCUY0NUI2M0ZCMUYxOTdGNEEwMDlEMzhCOSAvKiBp
bWFnZS1tYXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDVCNjNGQTFGMTk3RjMzMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwgKi87
IH07CiAJCUY0NUI2M0ZFMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1QjYzRkMxRjE5
RDQxMDAwOUQzOEI5IC8qIEFjdGlvblNoZWV0VGVzdHMubW0gKi87IH07CkBAIC04MTUsNiArODE2
LDcgQEAKIAkJCQk1QzI5MzY5NjFENUMwMEVEMDBERUFCMUUgLyogQ29va2llTWVzc2FnZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTdBRUFENDgxMUUyMDEyMjcwMDQxNkVGRSAvKiBD
cm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQkyOTBGNDI3NTE3MkEyMjFDMDA5MzlGRjAgLyogY3VzdG9tLXByb3RvY29sLXN5bmMteGhy
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJRjQ1MTJFMTMxRjYwQzQ0NjAwQkIzNjlF
IC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUMwN0U2Q0IyMTNGRDczOTMwMDM4QjIyQiAvKiBkZXZpY2VQaXhlbFJhdGlvLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMDc5OUMzNEIxRUJBMzMwMTAwM0I3NTMyIC8qIGRp
c2FibGVHZXRVc2VyTWVkaWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlB
MjFFRjQ2OTZCMDA4M0ZBMDggLyogZGl2LWFuZC1sYXJnZS1pbWFnZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLApAQCAtMTcwNiw2ICsxNzA4LDcgQEAKIAkJRjQ0RDA2NDYxRjM5NUM0RDAwMUEw
RTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBFZGl0b3JTdGF0ZVRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDREMDY0ODFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdUZXN0SGFybmVzcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRp
dGluZ1Rlc3RIYXJuZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRWRpdGluZ1Rlc3RIYXJuZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiRGF0YVRyYW5zZmVySXRlbS1nZXRBc0Vu
dHJ5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDUzOEVGMDFFODQ2QjQx
MDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFyZS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAibGFyZ2UtcmVkLXNx
dWFyZS5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDVCNjNGQTFGMTk3RjMz
MDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW1hZ2UtbWFwLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDVCNjNGQzFGMTlENDEwMDA5RDM4QjkgLyog
QWN0aW9uU2hlZXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjdGlvblNoZWV0VGVz
dHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTUyLDYgKzIxNTUsNyBAQAog
CQkJCUY0QTMyRUNBMUYwNjQyRjQwMDQ3QzU0NCAvKiBjb250ZW50ZWRpdGFibGUtaW4taWZyYW1l
Lmh0bWwgKi8sCiAJCQkJQTE2RjY2QjkxQzQwRUEyMDAwQkQ0RDI0IC8qIENvbnRlbnRGaWx0ZXJp
bmcuaHRtbCAqLywKIAkJCQk1QzI5MzY5NDFENUJGRDE5MDBERUFCMUUgLyogQ29va2llTWVzc2Fn
ZS5odG1sICovLAorCQkJCUY0NTEyRTEyMUY2MEM0MzQwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJ
dGVtLWdldEFzRW50cnkuaHRtbCAqLywKIAkJCQkwNzk5QzM0QTFFQkEzMkY0MDAzQjc1MzIgLyog
ZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sICovLAogCQkJCUY0MUFCOTlFMUVGNDY5MkMwMDgzRkEw
OCAvKiBkaXYtYW5kLWxhcmdlLWltYWdlLmh0bWwgKi8sCiAJCQkJODM3QTM1RjAxRDlBMUU2NDAw
NjYzQzU3IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YVRyYW5zZmVySXRlbS1nZXRB
c0VudHJ5Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFU
cmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjOTBjMTVkMTg4ZjM4OWNi
ODJiZjNhODczMzJhMmJjNGE4NTE3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1s
CkBAIC0wLDAgKzEsOTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgor
PHN0eWxlPgoraHRtbCwgYm9keSB7CisgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW07Cisg
ICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG1hcmdpbjogMDsKKyAgICBm
b250LXNpemU6IDFlbTsKK30KKworI2Ryb3BhcmVhIHsKKyAgICBtYXJnaW4tdG9wOiAxZW07Cisg
ICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB0b3A6IDA7CisgICAgbGVm
dDogMDsKK30KKworI291dHB1dCB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiBjYWxj
KDEwMCUgLSAyMDBweCk7CisgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKK30KKzwvc3R5bGU+
CisKKzxkaXYgaWQ9ImRyb3BhcmVhIj4KKyAgICA8ZGl2PlRvIG1hbnVhbGx5IHRlc3QsIGRyb3Ag
c29tZXRoaW5nIGludG8gdGhpcyBhcmVhIGFuZCBvYnNlcnZlIHRoZSBvdXRwdXQgYmVsb3cuPC9k
aXY+Cis8L2Rpdj4KKzx0ZXh0YXJlYSBpZD0ib3V0cHV0Ij48L3RleHRhcmVhPgorCis8c2NyaXB0
PgorICAgIGZ1bmN0aW9uIGdldENoaWxkRW50cmllcyhlbnRyeSkgeworICAgICAgICBpZiAoIWVu
dHJ5LmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7
CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAg
ICAgICAgICAgIGxldCByZXN1bHQgPSBbXTsKKyAgICAgICAgICAgIGxldCByZWFkZXIgPSBlbnRy
eS5jcmVhdGVSZWFkZXIoKTsKKyAgICAgICAgICAgIGxldCBkb0JhdGNoID0gKCkgPT4geworICAg
ICAgICAgICAgICAgIHJlYWRlci5yZWFkRW50cmllcyhlbnRyaWVzID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgZW50cmllcy5mb3JFYWNoKGUgPT4gcmVzdWx0LnB1c2goZSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZG9CYXRjaCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgICAgICAgICB9LCByZWpl
Y3QpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGRvQmF0Y2goKTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgZHJvcGFyZWEuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VudGVyIiwgZXZl
bnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7CisgICAgZHJvcGFyZWEuYWRkRXZlbnRMaXN0
ZW5lcigiZHJhZ292ZXIiLCBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTsKKyAgICBk
cm9wYXJlYS5hZGRFdmVudExpc3RlbmVyKCJkcm9wIiwgaGFuZGxlRHJvcCk7CisKKyAgICBhc3lu
YyBmdW5jdGlvbiBoYW5kbGVEcm9wKGV2ZW50KQorICAgIHsKKyAgICAgICAgYXdhaXQgbG9nSXRl
bUFuZEZpbGVFbnRyeUluZm9ybWF0aW9uKGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcyk7CisgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIHdlYmtpdC5tZXNzYWdlSGFuZGxl
cnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoImRyb3BwZWQiKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBmaWxlRnJvbUZpbGVTeXN0ZW1GaWxlRW50cnkoZmlsZUVudHJ5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gZmlsZUVudHJ5LmZpbGUoZmlsZSA9PiBy
ZXNvbHZlKGZpbGUpKSk7CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gcmVwcmVzZW50YXRp
b25Gb3JGaWxlU3lzdGVtRW50cnkoZW50cnkpCisgICAgeworICAgICAgICBsZXQgcmVwcmVzZW50
YXRpb24gPSAiIjsKKyAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KSB7CisgICAgICAgICAg
ICByZXByZXNlbnRhdGlvbiArPSBgRElSOiAke2VudHJ5LmZ1bGxQYXRofVxuYDsKKyAgICAgICAg
ICAgIGZvciAobGV0IGNoaWxkIG9mIGF3YWl0IGdldENoaWxkRW50cmllcyhlbnRyeSkpCisgICAg
ICAgICAgICAgICAgcmVwcmVzZW50YXRpb24gKz0gYXdhaXQgcmVwcmVzZW50YXRpb25Gb3JGaWxl
U3lzdGVtRW50cnkoY2hpbGQpOworICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSkgewor
ICAgICAgICAgICAgbGV0IGZpbGUgPSBhd2FpdCBmaWxlRnJvbUZpbGVTeXN0ZW1GaWxlRW50cnko
ZW50cnkpOworICAgICAgICAgICAgcmVwcmVzZW50YXRpb24gKz0gYEZJTEU6ICR7ZW50cnkuZnVs
bFBhdGh9ICgnJHtmaWxlLnR5cGV9JywgJHtmaWxlLnNpemV9IGJ5dGVzKVxuYDsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gcmVwcmVzZW50YXRpb247CisgICAgfQorCisgICAgYXN5bmMgZnVu
Y3Rpb24gbG9nSXRlbUFuZEZpbGVFbnRyeUluZm9ybWF0aW9uKGl0ZW1zKQorICAgIHsKKyAgICAg
ICAgb3V0cHV0LnZhbHVlID0gIiI7CisgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXgg
PCBpdGVtcy5sZW5ndGg7IGluZGV4KyspIHsKKyAgICAgICAgICAgIGxldCBpdGVtID0gaXRlbXMu
aXRlbShpbmRleCk7CisgICAgICAgICAgICBvdXRwdXQudmFsdWUgKz0gYEZvdW5kIGRhdGEgdHJh
bnNmZXIgaXRlbSAoa2luZDogJyR7aXRlbS5raW5kfScsIHR5cGU6ICcke2l0ZW0udHlwZX0nKVxu
YDsKKyAgICAgICAgICAgIGxldCBlbnRyeSA9IGl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpOworICAg
ICAgICAgICAgaWYgKGVudHJ5KQorICAgICAgICAgICAgICAgIG91dHB1dC52YWx1ZSArPSBhd2Fp
dCByZXByZXNlbnRhdGlvbkZvckZpbGVTeXN0ZW1FbnRyeShlbnRyeSk7CisgICAgICAgIH0KKyAg
ICB9Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KaW5kZXggNTViMGJiZGYxNThhYjdmNGU5
NjZkNzc0Mzg1NDU4ODAwYWI2NDMxZS4uMjQ0YTI4NTJkZDU2Mjg4ZTE0NWUzODkwZjllZDE2ODQ0
OTNhMDY2OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUlu
dGVyYWN0aW9uVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0
YUludGVyYWN0aW9uVGVzdHMubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPE1vYmlsZUNv
cmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNpbXBvcnQgPFVJS2l0L05TSXRlbVBy
b3ZpZGVyK1VJS2l0QWRkaXRpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmg+CkBAIC0xNjQsNiArMTY1LDU1IEBAIHN0YXRpYyB2b2lkIGNoZWNr
RHJhZ0NhcmV0UmVjdElzQ29udGFpbmVkSW5SZWN0KENHUmVjdCBjYXJldFJlY3QsIENHUmVjdCBj
b250YWluCiAgICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgY2FyZXQgcmVjdDogJUAgdG8gZml0IHdp
dGhpbiBjb250YWluZXIgcmVjdDogJUAiLCBOU1N0cmluZ0Zyb21DR1JlY3QoY2FyZXRSZWN0KSwg
TlNTdHJpbmdGcm9tQ0dSZWN0KGNvbnRhaW5lclJlY3QpKTsKIH0KIAorc3RhdGljIHZvaWQgcnVu
VGVzdFdpdGhUZW1wb3JhcnlUZXh0RmlsZSh2b2lkKF5ydW5UZXN0KShOU1VSTCAqZmlsZVVSTCkp
Cit7CisgICAgTlNTdHJpbmcgKmZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJkcmFnLWRyb3AtdGV4dC1maWxlLSVALnR4dCIsIFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZ107
CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZW1wb3JhcnlGaWxlID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6ZmlsZU5hbWVdIGlzRGlyZWN0b3J5Ok5PXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wb3JhcnlGaWxlLmdldCgpIGVycm9yOm5pbF07
CisKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBbQCJUaGlzIGlzIGEgdGlueSBibG9i
IG9mIHRleHQuIiB3cml0ZVRvVVJMOnRlbXBvcmFyeUZpbGUuZ2V0KCkgYXRvbWljYWxseTpZRVMg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6JmVycm9yXTsKKworICAgIGlmIChl
cnJvcikKKyAgICAgICAgTlNMb2coQCJFcnJvciB3cml0aW5nIHRlbXBvcmFyeSBmaWxlOiAlQCIs
IGVycm9yKTsKKworICAgIEB0cnkgeworICAgICAgICBydW5UZXN0KHRlbXBvcmFyeUZpbGUuZ2V0
KCkpOworICAgIH0gQGZpbmFsbHkgeworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wb3JhcnlGaWxlLmdldCgpIGVycm9yOm5pbF07Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBydW5UZXN0V2l0aFRlbXBvcmFyeUZvbGRlcih2b2lkKF5y
dW5UZXN0KShOU1VSTCAqZm9sZGVyVVJMKSkKK3sKKyAgICBOU1N0cmluZyAqZm9sZGVyTmFtZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAic29tZS5kaXJlY3RvcnktJUAiLCBbTlNVVUlE
IFVVSURdLlVVSURTdHJpbmddOworICAgIFJldGFpblB0cjxOU1VSTD4gdGVtcG9yYXJ5Rm9sZGVy
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6Zm9sZGVyTmFtZV0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAg
ICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wb3Jh
cnlGb2xkZXIuZ2V0KCkgZXJyb3I6bmlsXTsKKworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwor
ICAgIE5TRmlsZU1hbmFnZXIgKmRlZmF1bHRNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdOworICAgIFtkZWZhdWx0TWFuYWdlciBjcmVhdGVEaXJlY3RvcnlBdFVSTDp0ZW1w
b3JhcnlGb2xkZXIuZ2V0KCkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOk5PIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgW1VJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbih0ZXN0
SWNvbkltYWdlKCkpIHdyaXRlVG9VUkw6W3RlbXBvcmFyeUZvbGRlci5nZXQoKSBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJpY29uLnBuZyIgaXNEaXJlY3Rvcnk6Tk9dIGF0b21pY2FsbHk6
WUVTXTsKKyAgICBbdGVzdFpJUEFyY2hpdmUoKSB3cml0ZVRvVVJMOlt0ZW1wb3JhcnlGb2xkZXIu
Z2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiYXJjaGl2ZS56aXAiIGlzRGlyZWN0
b3J5Ok5PXSBhdG9taWNhbGx5OllFU107CisKKyAgICBOU1VSTCAqZmlyc3RTdWJkaXJlY3Rvcnkg
PSBbdGVtcG9yYXJ5Rm9sZGVyLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInN1
YmRpcmVjdG9yeTEiIGlzRGlyZWN0b3J5OllFU107CisgICAgW2RlZmF1bHRNYW5hZ2VyIGNyZWF0
ZURpcmVjdG9yeUF0VVJMOmZpcnN0U3ViZGlyZWN0b3J5IHdpdGhJbnRlcm1lZGlhdGVEaXJlY3Rv
cmllczpOTyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjomZXJyb3JdOworICAgIFtAIkkgYW0gYSB0ZXh0
IGZpbGUgaW4gdGhlIGZpcnN0IHN1YmRpcmVjdG9yeS4iIHdyaXRlVG9VUkw6W2ZpcnN0U3ViZGly
ZWN0b3J5IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInRleHQtZmlsZS0xLnR4dCIgaXNE
aXJlY3Rvcnk6Tk9dIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
IGVycm9yOiZlcnJvcl07CisKKyAgICBOU1VSTCAqc2Vjb25kU3ViZGlyZWN0b3J5ID0gW3RlbXBv
cmFyeUZvbGRlci5nZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJzdWJkaXJlY3Rv
cnkyIiBpc0RpcmVjdG9yeTpZRVNdOworICAgIFtkZWZhdWx0TWFuYWdlciBjcmVhdGVEaXJlY3Rv
cnlBdFVSTDpzZWNvbmRTdWJkaXJlY3Rvcnkgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOk5P
IGF0dHJpYnV0ZXM6bmlsIGVycm9yOiZlcnJvcl07CisgICAgW0AiSSBhbSBhIHRleHQgZmlsZSBp
biB0aGUgc2Vjb25kIHN1YmRpcmVjdG9yeS4iIHdyaXRlVG9VUkw6W3NlY29uZFN1YmRpcmVjdG9y
eSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ0ZXh0LWZpbGUtMi50eHQiIGlzRGlyZWN0
b3J5Ok5PXSBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJv
cjomZXJyb3JdOworCisgICAgaWYgKGVycm9yKQorICAgICAgICBOU0xvZyhAIkVycm9yIHdyaXRp
bmcgdGVtcG9yYXJ5IGZpbGU6ICVAIiwgZXJyb3IpOworCisgICAgQHRyeSB7CisgICAgICAgIHJ1
blRlc3QodGVtcG9yYXJ5Rm9sZGVyLmdldCgpKTsKKyAgICB9IEBmaW5hbGx5IHsKKyAgICAgICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcG9yYXJ5
Rm9sZGVyLmdldCgpIGVycm9yOm5pbF07CisgICAgfQorfQorCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEltYWdlVG9Db250ZW50RWRpdGFi
bGUpCkBAIC04NzcsNiArOTI3LDg4IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVy
bmFsU291cmNlT3ZlcnJpZGVEcm9wRmlsZVVwbG9hZCkKICAgICBFWFBFQ1RfV0tfU1RSRVEoInRl
eHQvaHRtbCIsIG91dHB1dFZhbHVlLlVURjhTdHJpbmcpOwogfQogCitzdGF0aWMgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IHNldFVwVGVzdFdlYlZpZXdGb3JEYXRhVHJhbnNmZXJJdGVtcygpCit7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnki
XTsKKworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcg
Y29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOworICAgIFdLUHJlZmVyZW5jZXNTZXREYXRhVHJh
bnNmZXJJdGVtc0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVyZW5jZXNT
ZXREaXJlY3RvcnlVcGxvYWRFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKworICAgIHJldHVy
biB3ZWJWaWV3OworfQorCitURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBFeHRlcm5hbFNvdXJj
ZURhdGFUcmFuc2Zlckl0ZW1HZXRGb2xkZXJBc0VudHJ5KQoreworICAgIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKmV4cGVjdGVkT3V0cHV0ID0gQFsKKyAgICAgICAgQCJGb3VuZCBkYXRhIHRyYW5zZmVy
IGl0ZW0gKGtpbmQ6ICdzdHJpbmcnLCB0eXBlOiAndGV4dC9wbGFpbicpIiwKKyAgICAgICAgQCJG
b3VuZCBkYXRhIHRyYW5zZmVyIGl0ZW0gKGtpbmQ6ICdmaWxlJywgdHlwZTogJycpIiwKKyAgICAg
ICAgQCJESVI6IC9zb21lZGlyZWN0b3J5IiwKKyAgICAgICAgQCJGSUxFOiAvc29tZWRpcmVjdG9y
eS9pY29uLnBuZyAoJ2ltYWdlL3BuZycsIDQyMTMwIGJ5dGVzKSIsCisgICAgICAgIEAiRElSOiAv
c29tZWRpcmVjdG9yeS9zdWJkaXJlY3RvcnkxIiwKKyAgICAgICAgQCJGSUxFOiAvc29tZWRpcmVj
dG9yeS9zdWJkaXJlY3RvcnkxL3RleHQtZmlsZS0xLnR4dCAoJ3RleHQvcGxhaW4nLCA0MyBieXRl
cykiLAorICAgICAgICBAIkZJTEU6IC9zb21lZGlyZWN0b3J5L2FyY2hpdmUuemlwICgnYXBwbGlj
YXRpb24vemlwJywgOTg4IGJ5dGVzKSIsCisgICAgICAgIEAiRElSOiAvc29tZWRpcmVjdG9yeS9z
dWJkaXJlY3RvcnkyIiwKKyAgICAgICAgQCJGSUxFOiAvc29tZWRpcmVjdG9yeS9zdWJkaXJlY3Rv
cnkyL3RleHQtZmlsZS0yLnR4dCAoJ3RleHQvcGxhaW4nLCA0NCBieXRlcykiLAorICAgICAgICBA
IiIKKyAgICBdOworCisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBUZXN0V2ViVmlld0ZvckRhdGFU
cmFuc2Zlckl0ZW1zKCk7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAiZHJvcHBlZCIgYWN0aW9uOl4oKSB7
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgcnVuVGVzdFdpdGhUZW1wb3Jh
cnlGb2xkZXIoXihOU1VSTCAqZm9sZGVyVVJMKSB7CisgICAgICAgIGF1dG8gaXRlbVByb3ZpZGVy
ID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtpdGVt
UHJvdmlkZXIgc2V0U3VnZ2VzdGVkTmFtZTpAInNvbWVkaXJlY3RvcnkiXTsKKyAgICAgICAgW2l0
ZW1Qcm92aWRlciByZWdpc3RlckZpbGVSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihO
U1N0cmluZyAqKWtVVFR5cGVGb2xkZXIgZmlsZU9wdGlvbnM6MCB2aXNpYmlsaXR5Ok5TSXRlbVBy
b3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltjYXB0dXJlZEZv
bGRlclVSTCA9IHJldGFpblB0cihmb2xkZXJVUkwpXSAoRmlsZUxvYWRDb21wbGV0aW9uQmxvY2sg
Y29tcGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihjYXB0dXJlZEZvbGRlclVSTC5nZXQoKSwgTk8sIG5pbCk7CisgICAgICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICB9XTsKKworICAgICAgICBhdXRvIGRhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGlu
aXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgICAgIFtkYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBd
XTsKKyAgICAgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtl
KDUwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTUwLCA1MCldOworICAgIH0pOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2V4cGVjdGVk
T3V0cHV0IGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIlxuIl0sIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJvdXRwdXQudmFsdWUiXSk7Cit9CisKK1RFU1QoRGF0YUlu
dGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291cmNlRGF0YVRyYW5zZmVySXRlbUdldFBsYWluVGV4
dEZpbGVBc0VudHJ5KQoreworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV4cGVjdGVkT3V0cHV0
ID0gQFsKKyAgICAgICAgQCJGb3VuZCBkYXRhIHRyYW5zZmVyIGl0ZW0gKGtpbmQ6ICdzdHJpbmcn
LCB0eXBlOiAndGV4dC9wbGFpbicpIiwKKyAgICAgICAgQCJGb3VuZCBkYXRhIHRyYW5zZmVyIGl0
ZW0gKGtpbmQ6ICdmaWxlJywgdHlwZTogJ3RleHQvcGxhaW4nKSIsCisgICAgICAgIEAiRklMRTog
L2Zvby50eHQgKCd0ZXh0L3BsYWluJywgMjggYnl0ZXMpIiwKKyAgICAgICAgQCIiCisgICAgXTsK
KworICAgIGF1dG8gd2ViVmlldyA9IHNldFVwVGVzdFdlYlZpZXdGb3JEYXRhVHJhbnNmZXJJdGVt
cygpOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9y
bUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImRyb3BwZWQiIGFjdGlvbjpeKCkgeworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIHJ1blRlc3RXaXRoVGVtcG9yYXJ5VGV4dEZpbGUo
XihOU1VSTCAqZmlsZVVSTCkgeworICAgICAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMo
W1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgICAgICBbaXRlbVByb3ZpZGVyIHNl
dFN1Z2dlc3RlZE5hbWU6QCJmb28iXTsKKyAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckZp
bGVSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVVVEY4
UGxhaW5UZXh0IGZpbGVPcHRpb25zOjAgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2Vu
dGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbY2FwdHVyZWRGaWxlVVJMID0gcmV0YWlu
UHRyKGZpbGVVUkwpXShGaWxlTG9hZENvbXBsZXRpb25CbG9jayBjb21wbGV0aW9uSGFuZGxlcikg
LT4gTlNQcm9ncmVzcyAqIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhcHR1cmVk
RmlsZVVSTC5nZXQoKSwgTk8sIG5pbCk7CisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAg
ICB9XTsKKworICAgICAgICBhdXRvIGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMo
W1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3
LmdldCgpXSk7CisgICAgICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0RXh0ZXJuYWxJ
dGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICAgICAgW2RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDUwLCA1MCkgdG86Q0dQb2ludE1h
a2UoMTUwLCA1MCldOworICAgIH0pOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2V4cGVjdGVkT3V0cHV0IGNvbXBvbmVudHNKb2lu
ZWRCeVN0cmluZzpAIlxuIl0sIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJvdXRwdXQudmFsdWUiXSk7Cit9CisKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVy
bmFsU291cmNlT3ZlcnJpZGVEcm9wSW5zZXJ0VVJMKQogewogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApXSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>