<?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>107379</bug_id>
          
          <creation_ts>2013-01-19 14:02:25 -0800</creation_ts>
          <short_desc>buildbot should not rely on webkitpy</short_desc>
          <delta_ts>2013-01-31 20:03:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>alancutter</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>lforschler</cc>
    
    <cc>mithro</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wsiegrist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>811463</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-19 14:02:25 -0800</bug_when>
    <thetext>It appears that the master.cfg and committer_auth.py only import webkitpy.common.net.htdigestparser and webkitpy.common.config.build from webkitpy, both of which are never used elsewhere in webkitpy. So we can just move these files into BuildSlaveSupport and remove the entire dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813856</commentid>
    <comment_count>1</comment_count>
      <attachid>184146</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-22 22:49:00 -0800</bug_when>
    <thetext>Created attachment 184146
Removes the dependency</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813857</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-01-22 22:50:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/13068009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813863</commentid>
    <comment_count>3</comment_count>
      <attachid>184146</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-22 22:53:47 -0800</bug_when>
    <thetext>Comment on attachment 184146
Removes the dependency

View in context: https://bugs.webkit.org/attachment.cgi?id=184146&amp;action=review

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser_unittest.py:89
&gt; +# FIXME: We should run this file as part of test-rm .
&gt; +# Unfortunately test-rm  currently requires that unittests
&gt; +# be located in a directory with a valid module name.
&gt; +# &apos;build.webkit.org-config&apos; is not a valid module name (due to &apos;.&apos; and &apos;-&apos;)
&gt; +# so for now this is a stand-alone test harness.

What is test-rm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813877</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-22 23:10:57 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 184146 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184146&amp;action=review
&gt; 
&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser_unittest.py:89
&gt; &gt; +# FIXME: We should run this file as part of test-rm .
&gt; &gt; +# Unfortunately test-rm  currently requires that unittests
&gt; &gt; +# be located in a directory with a valid module name.
&gt; &gt; +# &apos;build.webkit.org-config&apos; is not a valid module name (due to &apos;.&apos; and &apos;-&apos;)
&gt; &gt; +# so for now this is a stand-alone test harness.
&gt; 
&gt; What is test-rm?

I don&apos;t know. I just copy &amp; pasted that from mastercfg_unittest.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822240</commentid>
    <comment_count>5</comment_count>
      <attachid>185917</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-31 19:21:38 -0800</bug_when>
    <thetext>Created attachment 185917
Updated for ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822249</commentid>
    <comment_count>6</comment_count>
      <attachid>185917</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-31 19:47:28 -0800</bug_when>
    <thetext>Comment on attachment 185917
Updated for ToT

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822258</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-31 20:03:22 -0800</bug_when>
    <thetext>Committed r141530: &lt;http://trac.webkit.org/changeset/141530&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184146</attachid>
            <date>2013-01-22 22:49:00 -0800</date>
            <delta_ts>2013-01-31 19:21:36 -0800</delta_ts>
            <desc>Removes the dependency</desc>
            <filename>bug-107379-20130122224555.patch</filename>
            <type>text/plain</type>
            <size>43523</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0MDUwOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDEzLTAxLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIGJ1aWxkYm90IHNob3VsZCBub3QgcmVseSBvbiB3ZWJraXRweQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3Mzc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgUHl0aG9uIGZp
bGVzIHVzZWQgaW4gYnVpbGRib3QgY29uZmlndXJhdGlvbiBpbnRvIEJ1aWxkU2xhdmVTdXBwb3J0
IGRpcmVjdG9yeS4KKyAgICAgICAgT25jZSB0aGlzIHBhdGNoIGlzIGxhbmRlZCwgd2UgY2FuIHN0
b3AgcmVzdGFydGluZyB0aGUgbWFzdGVyIG9uIHdlYmtpdHB5IGNoYW5nZXMuCisKKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb21taXR0ZXJfYXV0
aC5weToKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9odGRpZ2VzdHBhcnNlci5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2h0ZGlnZXN0cGFyc2VyLnB5LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5OiBDb3Bp
ZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaHRkaWdlc3RwYXJzZXJf
dW5pdHRlc3QucHkuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvbWFzdGVyLmNmZzoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGQucHkuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvd2tidWlsZF91bml0dGVzdC5weTogQ29waWVkIGZy
b20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkX3VuaXR0ZXN0LnB5
LgorICAgICAgICAoU2hvdWxkQnVpbGRUZXN0LnRlc3Rfc2hvdWxkX2J1aWxkKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGQucHk6IFJlbW92ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkX3VuaXR0ZXN0LnB5OiBS
ZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9odGRpZ2VzdHBh
cnNlci5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
aHRkaWdlc3RwYXJzZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisKIDIwMTMtMDEtMjIgIFRpbSAn
bWl0aHJvJyBBbnNlbGwgIDxtaXRocm9AbWl0aGlzLmNvbT4KIAogICAgICAgICBDb252ZXJ0IGRp
c2FibGUtbXNnIHRvIGRpc2FibGUgZm9yIG5ldyBweWxpbnQuCkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb21taXR0ZXJfYXV0aC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9jb21taXR0ZXJfYXV0aC5weQkocmV2aXNpb24gMTQwNDY4KQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29tbWl0dGVyX2F1dGgucHkJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgaW1wb3J0IGJ1aWxkYm90LnN0YXR1cy53ZWIuYXV0
aAogaW1wb3J0IGpzb24KIGltcG9ydCB6b3BlLmludGVyZmFjZQogCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQuaHRkaWdlc3RwYXJzZXIgaW1wb3J0IEhURGlnZXN0UGFyc2VyCitmcm9tIGh0ZGln
ZXN0cGFyc2VyIGltcG9ydCBIVERpZ2VzdFBhcnNlcgogCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlv
bik6CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9odGRpZ2VzdHBhcnNlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRpZ2VzdHBhcnNlci5weQkocmV2aXNpb24gMTQw
NDY4KQkoZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaHRkaWdlc3RwYXJz
ZXIucHk6MTQwNDY4KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvaHRkaWdlc3RwYXJzZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJodGRpZ2VzdHBh
cnNlciAtIGEgcGFyc2VyIGZvciBodGRpZ2VzdCBmaWxlcyIiIgorCitpbXBvcnQgaGFzaGxpYgor
aW1wb3J0IHN0cmluZworCisKK2NsYXNzIEhURGlnZXN0UGFyc2VyKG9iamVjdCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGRpZ2VzdF9maWxlKToKKyAgICAgICAgc2VsZi5fZW50cmllcyA9IHNl
bGYucGFyc2VfZmlsZShkaWdlc3RfZmlsZSkKKworICAgIGRlZiBhdXRoZW50aWNhdGUoc2VsZiwg
dXNlcm5hbWUsIHJlYWxtLCBwYXNzd29yZCk6CisgICAgICAgIGhhc2hlZF9wYXNzd29yZCA9IGhh
c2hsaWIubWQ1KCc6Jy5qb2luKCh1c2VybmFtZSwgcmVhbG0sIHBhc3N3b3JkKSkpLmhleGRpZ2Vz
dCgpCisgICAgICAgIHJldHVybiBbdXNlcm5hbWUsIHJlYWxtLCBoYXNoZWRfcGFzc3dvcmRdIGlu
IHNlbGYuZW50cmllcygpCisKKyAgICBkZWYgZW50cmllcyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2VudHJpZXMKKworICAgIGRlZiBwYXJzZV9maWxlKHNlbGYsIGRpZ2VzdF9maWxlKToK
KyAgICAgICAgZW50cmllcyA9IFtsaW5lLnJzdHJpcCgpLnNwbGl0KCc6JykgZm9yIGxpbmUgaW4g
ZGlnZXN0X2ZpbGVdCisKKyAgICAgICAgIyBQZXJmb3JtIHNvbWUgc2FuaXR5LWNoZWNraW5nIHRv
IGVuc3VyZSB0aGUgZmlsZSBpcyB2YWxpZC4KKyAgICAgICAgdmFsaWRfY2hhcmFjdGVycyA9IHNl
dChzdHJpbmcuaGV4ZGlnaXRzKQorICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAg
ICAgICAgIGlmIGxlbihlbnRyeSkgIT0gMzoKKyAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAg
ICAgICAgICAgIGhhc2hlZF9wYXNzd29yZCA9IGVudHJ5Wy0xXQorICAgICAgICAgICAgaWYgbGVu
KGhhc2hlZF9wYXNzd29yZCkgIT0gMzI6CisgICAgICAgICAgICAgICAgcmV0dXJuIFtdCisgICAg
ICAgICAgICBpZiBub3Qgc2V0KGhhc2hlZF9wYXNzd29yZCkuaXNzdWJzZXQodmFsaWRfY2hhcmFj
dGVycyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFtdCisKKyAgICAgICAgcmV0dXJuIGVudHJp
ZXMKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAxNDA0NjgpCShmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9odGRpZ2VzdHBhcnNlcl91bml0dGVzdC5weToxNDA0NjgpCisrKyBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRpZ2VzdHBhcnNlcl91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0IG9zCitpbXBvcnQg
dW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lmh0ZGlnZXN0cGFyc2VyIGltcG9y
dCBIVERpZ2VzdFBhcnNlcgorCisKK2NsYXNzIEhURGlnZXN0UGFyc2VyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CisgICAgZGVmIGFzc2VydEVudHJpZXNFcXVhbChzZWxmLCBlbnRyaWVzLCBhZGRp
dGlvbmFsX2NvbnRlbnQ9Tm9uZSk6CisgICAgICAgIGRpZ2VzdF9maWxlID0gc2VsZi5mYWtlX2h0
ZGlnZXN0X2ZpbGUoKQorICAgICAgICBpZiBhZGRpdGlvbmFsX2NvbnRlbnQgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICBkaWdlc3RfZmlsZS5zZWVrKHBvcz0wLCBtb2RlPW9zLlNFRUtfRU5EKQor
ICAgICAgICAgICAgZGlnZXN0X2ZpbGUud3JpdGUoYWRkaXRpb25hbF9jb250ZW50KQorICAgICAg
ICAgICAgZGlnZXN0X2ZpbGUuc2Vlayhwb3M9MCwgbW9kZT1vcy5TRUVLX1NFVCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChlbnRyaWVzLCBIVERpZ2VzdFBhcnNlcihkaWdlc3RfZmlsZSkuZW50
cmllcygpKQorCisgICAgZGVmIHRlc3RfYXV0aGVudGljYXRlKHNlbGYpOgorICAgICAgICBodGRp
Z2VzdCA9IEhURGlnZXN0UGFyc2VyKHNlbGYuZmFrZV9odGRpZ2VzdF9maWxlKCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxtIDEn
LCAncGFzc3dvcmQxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50
aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQyJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIzJywgJ3JlYWxtIDEnLCAncGFzc3dv
cmQzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3Vz
ZXIzJywgJ3JlYWxtIDMnLCAncGFzc3dvcmQzJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxtJywgJ3Bhc3N3b3JkMScpKQor
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNlcjEnLCAn
cmVhbG0gMicsICdwYXNzd29yZDEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodGRpZ2Vz
dC5hdXRoZW50aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQxJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoaHRkaWdlc3QuYXV0aGVudGljYXRlKCd1c2VyMicsICdyZWFsbSAx
JywgJ3Bhc3N3b3JkMScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhl
bnRpY2F0ZSgnJywgJycsICcnKSkKKworICAgIGRlZiB0ZXN0X2VudHJpZXMoc2VsZik6CisgICAg
ICAgIGVudHJpZXMgPSBbCisgICAgICAgICAgICBbJ3VzZXIxJywgJ3JlYWxtIDEnLCAnMzZiOGFh
MjdmYTVlOTA1MTA5NWQzN2I2MTlmOTI3NjInXSwKKyAgICAgICAgICAgIFsndXNlcjInLCAncmVh
bG0gMicsICcxNGY4Mjc2ODZmYTk3Nzc4ZjAyZmUxMzE0YTMzMzdjOCddLAorICAgICAgICAgICAg
Wyd1c2VyMycsICdyZWFsbSAxJywgJzE4MTdmYzhhMjQxMTljYzU3ZmJhZmM4YTYzMGVhNWE1J10s
CisgICAgICAgICAgICBbJ3VzZXIzJywgJ3JlYWxtIDMnLCAnYTA1ZjVhMjMzNWU5ZDg3YmJlNzVi
YmU1ZTUzMjQ4ZjAnXSwKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVh
bChlbnRyaWVzKQorICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVhbChlbnRyaWVzLCBhZGRp
dGlvbmFsX2NvbnRlbnQ9JycpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBIVERpZ2VzdFBhcnNlcihTdHJpbmdJTy5TdHJpbmdJ
TygpKS5lbnRyaWVzKCkpCisKKyAgICBkZWYgdGVzdF90b29fZmV3X2NvbG9ucyhzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNl
cjE6cmVhbG0gMVxuJykKKworICAgIGRlZiB0ZXN0X3Rvb19tYW55X2NvbG9ucyhzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNl
cjE6cmVhbG0gMTozNmI4YWEyN2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2MjpnYXJiYWdlXG4nKQor
CisgICAgZGVmIHRlc3RfaW52YWxpZF9oYXNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVu
dHJpZXNFcXVhbChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3
ZmE1ZTkwNTEwOTVkMzdiNjE5ZjkyNzYyMDAwMDAwXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVu
dHJpZXNFcXVhbChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3
ZmE1ZTkwNTEwOTVkMzdiNjE5ZjkyNzZcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0Vx
dWFsKFtdLCBhZGRpdGlvbmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1
MTA5NWQzN2I2MTlmOTI3NnpcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtd
LCBhZGRpdGlvbmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6IDM2YjhhYTI3ZmE1ZTkwNTEwOTVk
MzdiNjE5ZjkyNzYyXG4nKQorCisgICAgZGVmIGZha2VfaHRkaWdlc3RfZmlsZShzZWxmKToKKyAg
ICAgICAgcmV0dXJuIFN0cmluZ0lPLlN0cmluZ0lPKCIiInVzZXIxOnJlYWxtIDE6MzZiOGFhMjdm
YTVlOTA1MTA5NWQzN2I2MTlmOTI3NjIKK3VzZXIyOnJlYWxtIDI6MTRmODI3Njg2ZmE5Nzc3OGYw
MmZlMTMxNGEzMzM3YzgKK3VzZXIzOnJlYWxtIDE6MTgxN2ZjOGEyNDExOWNjNTdmYmFmYzhhNjMw
ZWE1YTUKK3VzZXIzOnJlYWxtIDM6YTA1ZjVhMjMzNWU5ZDg3YmJlNzViYmU1ZTUzMjQ4ZjAKKyIi
IikKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAxNDA0NjgpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9odGRpZ2VzdHBhcnNlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQCBpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCBvcwogaW1wb3J0IHVu
aXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5odGRpZ2VzdHBhcnNlciBpbXBvcnQg
SFREaWdlc3RQYXJzZXIKK2Zyb20gaHRkaWdlc3RwYXJzZXIgaW1wb3J0IEhURGlnZXN0UGFyc2Vy
CiAKIAogY2xhc3MgSFREaWdlc3RQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTgw
LDMgKzgwLDEyIEBAIHVzZXIyOnJlYWxtIDI6MTRmODI3Njg2ZmE5Nzc3OGYwMmZlMTMxNGEKIHVz
ZXIzOnJlYWxtIDE6MTgxN2ZjOGEyNDExOWNjNTdmYmFmYzhhNjMwZWE1YTUKIHVzZXIzOnJlYWxt
IDM6YTA1ZjVhMjMzNWU5ZDg3YmJlNzViYmU1ZTUzMjQ4ZjAKICIiIikKKworCisjIEZJWE1FOiBX
ZSBzaG91bGQgcnVuIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIHRlc3Qtcm0gLgorIyBVbmZvcnR1bmF0
ZWx5IHRlc3Qtcm0gIGN1cnJlbnRseSByZXF1aXJlcyB0aGF0IHVuaXR0ZXN0cworIyBiZSBsb2Nh
dGVkIGluIGEgZGlyZWN0b3J5IHdpdGggYSB2YWxpZCBtb2R1bGUgbmFtZS4KKyMgJ2J1aWxkLndl
YmtpdC5vcmctY29uZmlnJyBpcyBub3QgYSB2YWxpZCBtb2R1bGUgbmFtZSAoZHVlIHRvICcuJyBh
bmQgJy0nKQorIyBzbyBmb3Igbm93IHRoaXMgaXMgYSBzdGFuZC1hbG9uZSB0ZXN0IGhhcm5lc3Mu
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNm
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9tYXN0ZXIuY2ZnCShyZXZpc2lvbiAxNDA0NjgpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw3ICsyMSw3IEBAIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHVybGxpYgogCiBmcm9t
IGNvbW1pdHRlcl9hdXRoIGltcG9ydCBDb21taXR0ZXJBdXRoCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi5jb25maWcgaW1wb3J0IGJ1aWxkIGFzIHdrYnVpbGQKK2ltcG9ydCB3a2J1aWxkCiAKIAogYyA9
IEJ1aWxkbWFzdGVyQ29uZmlnID0ge30KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGQucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvd2tidWlsZC5weQkocmV2aXNp
b24gMTQwNDY4KQkoZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVp
bGQucHk6MTQwNDY4KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvd2tidWlsZC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJGdW5jdGlvbnMgcmVsYXRp
bmcgdG8gYnVpbGRpbmcgV2ViS2l0IiIiCisKK2ltcG9ydCByZQorCisKK2RlZiBfc2hvdWxkX2Zp
bGVfdHJpZ2dlcl9idWlsZCh0YXJnZXRfcGxhdGZvcm0sIGZpbGUpOgorICAgICMgVGhlIGRpcmVj
dG9yaWVzIGFuZCBwYXR0ZXJucyBsaXN0cyBiZWxvdyBtYXAgZGlyZWN0b3J5IG5hbWVzIG9yCisg
ICAgIyByZWdleHAgcGF0dGVybnMgdG8gdGhlIGJvdCBwbGF0Zm9ybXMgZm9yIHdoaWNoIHRoZXkg
c2hvdWxkIHRyaWdnZXIgYQorICAgICMgYnVpbGQuIE1hcHBpbmcgdG8gdGhlIGVtcHR5IGxpc3Qg
bWVhbnMgdGhhdCBubyBidWlsZHMgc2hvdWxkIGJlCisgICAgIyB0cmlnZ2VyZWQgb24gYW55IHBs
YXRmb3Jtcy4gRWFybGllciBkaXJlY3Rvcmllcy9wYXR0ZXJucyB0YWtlCisgICAgIyBwcmVjZW5k
ZW5jZSBvdmVyIGxhdGVyIG9uZXMuCisKKyAgICAjIEZJWE1FOiBUaGUgcGF0dGVybnMgYmVsb3cg
aGF2ZSBvbmx5IGJlZW4gdmVyaWZpZWQgdG8gYmUgY29ycmVjdCBvbgorICAgICMgdGhlIHBsYXRm
b3JtcyBsaXN0ZWQgYmVsb3cuIFdlIHNob3VsZCBpbXBsZW1lbnQgdGhpcyBmb3Igb3RoZXIgcGxh
dGZvcm1zCisgICAgIyBhbmQgc3RhcnQgdXNpbmcgaXQgZm9yIHRoZWlyIGJvdHMuIFNvbWVvbmUg
ZmFtaWxpYXIgd2l0aCBlYWNoIHBsYXRmb3JtCisgICAgIyB3aWxsIGhhdmUgdG8gZmlndXJlIG91
dCB3aGF0IHRoZSByaWdodCBzZXQgb2YgZGlyZWN0b3JpZXMvcGF0dGVybnMgaXMgZm9yCisgICAg
IyB0aGF0IHBsYXRmb3JtLgorICAgIGFzc2VydCh0YXJnZXRfcGxhdGZvcm0gaW4gKCJtYWMtbGVv
cGFyZCIsICJtYWMtbGlvbiIsICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCIs
ICJ3aW4iKSkKKworICAgIGRpcmVjdG9yaWVzID0gWworICAgICAgICAjIERpcmVjdG9yaWVzIHRo
YXQgc2hvdWxkbid0IHRyaWdnZXIgYnVpbGRzIG9uIGFueSBib3RzLgorICAgICAgICAoIkV4YW1w
bGVzIiwgW10pLAorICAgICAgICAoIlBlcmZvcm1hbmNlVGVzdHMiLCBbXSksCisgICAgICAgICgi
TWFudWFsVGVzdHMiLCBbXSksCisgICAgICAgICgiVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwiLCBbXSksCisgICAgICAgICgiV2Vic2l0
ZXMiLCBbXSksCisgICAgICAgICgiZWZsIiwgW10pLAorICAgICAgICAoImlwaG9uZSIsIFtdKSwK
KyAgICAgICAgKCJvcGVuZ2wiLCBbXSksCisgICAgICAgICgib3BlbnR5cGUiLCBbXSksCisgICAg
ICAgICgib3BlbnZnIiwgW10pLAorICAgICAgICAoIndpbmNlIiwgW10pLAorICAgICAgICAoInd4
IiwgW10pLAorCisgICAgICAgICMgRGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgdHJpZ2dlciBidWls
ZHMgb24gb25seSBzb21lIGJvdHMuCisgICAgICAgICgiU291cmNlL1dlYkNvcmUvaW1hZ2UtZGVj
b2RlcnMiLCBbImNocm9taXVtIl0pLAorICAgICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21h
YyIsIFsibWFjIiwgIndpbiJdKSwKKyAgICAgICAgKCJjYWlybyIsIFsiZ3RrIiwgIndpbmNhaXJv
Il0pLAorICAgICAgICAoImNmIiwgWyJjaHJvbWl1bS1tYWMiLCAibWFjIiwgInF0IiwgIndpbiJd
KSwKKyAgICAgICAgKCJjaHJvbWl1bSIsIFsiY2hyb21pdW0iXSksCisgICAgICAgICgiY29jb2Ei
LCBbImNocm9taXVtLW1hYyIsICJtYWMiXSksCisgICAgICAgICgiY3VybCIsIFsiZ3RrIiwgIndp
bmNhaXJvIl0pLAorICAgICAgICAoImdvYmplY3QiLCBbImd0ayJdKSwKKyAgICAgICAgKCJncHUi
LCBbImNocm9taXVtIiwgIm1hYyJdKSwKKyAgICAgICAgKCJnc3RyZWFtZXIiLCBbImd0ayJdKSwK
KyAgICAgICAgKCJndGsiLCBbImd0ayJdKSwKKyAgICAgICAgKCJtYWMiLCBbImNocm9taXVtLW1h
YyIsICJtYWMiXSksCisgICAgICAgICgibWFjLWxlb3BhcmQiLCBbIm1hYy1sZW9wYXJkIl0pLAor
ICAgICAgICAoIm1hYy1saW9uIiwgWyJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICJtYWMtc25v
d2xlb3BhcmQiLCAid2luIl0pLAorICAgICAgICAoIm1hYy1zbm93bGVvcGFyZCIsIFsibWFjLWxl
b3BhcmQiLCAibWFjLXNub3dsZW9wYXJkIl0pLAorICAgICAgICAoIm1hYy13azIiLCBbIm1hYy1s
aW9uIiwgIm1hYy1zbm93bGVvcGFyZCIsICJtYWMtbW91bnRhaW5saW9uIiwgIndpbiJdKSwKKyAg
ICAgICAgKCJvYmpjIiwgWyJtYWMiXSksCisgICAgICAgICgicXQiLCBbInF0Il0pLAorICAgICAg
ICAoInNraWEiLCBbImNocm9taXVtIl0pLAorICAgICAgICAoInNvdXAiLCBbImd0ayJdKSwKKyAg
ICAgICAgKCJ2OCIsIFsiY2hyb21pdW0iXSksCisgICAgICAgICgid2luIiwgWyJjaHJvbWl1bS13
aW4iLCAid2luIl0pLAorICAgIF0KKyAgICBwYXR0ZXJucyA9IFsKKyAgICAgICAgIyBQYXR0ZXJu
cyB0aGF0IHNob3VsZG4ndCB0cmlnZ2VyIGJ1aWxkcyBvbiBhbnkgYm90cy4KKyAgICAgICAgKHIi
KD86XnwvKUNoYW5nZUxvZy4qJCIsIFtdKSwKKyAgICAgICAgKHIiKD86XnwvKU1ha2VmaWxlJCIs
IFtdKSwKKyAgICAgICAgKHIiL0FSTSIsIFtdKSwKKyAgICAgICAgKHIiL0NNYWtlLioiLCBbXSks
CisgICAgICAgIChyIi9MSUNFTlNFW14vXSskIiwgW10pLAorICAgICAgICAociJBUk0oPzp2Nyk/
XC4oPzpjcHB8aCkkIiwgW10pLAorICAgICAgICAociJNSVBTXC4oPzpjcHB8aCkkIiwgW10pLAor
ICAgICAgICAociJXaW5DRVwuKD86Y3BwfGh8bW0pJCIsIFtdKSwKKyAgICAgICAgKHIiXC4oPzpi
a2x8bWspJCIsIFtdKSwKKworICAgICAgICAjIFBhdHRlcm5zIHRoYXQgc2hvdWxkIHRyaWdnZXIg
YnVpbGRzIG9uIG9ubHkgc29tZSBib3RzLgorICAgICAgICAociIoPzpefC8pR05VbWFrZWZpbGVc
LmFtJCIsIFsiZ3RrIl0pLAorICAgICAgICAociIvXHcrQ2hyb21pdW1cdypcLig/OmNwcHxofG1t
KSQiLCBbImNocm9taXVtIl0pLAorICAgICAgICAociJNYWNcLig/OmNwcHxofG1tKSQiLCBbIm1h
YyJdKSwKKyAgICAgICAgKHIiXC4oPzp2Y3Byb2p8dnNwcm9wc3xzbG4pJCIsIFsid2luIl0pLAor
ICAgICAgICAociJcLmV4cCg/OlwuaW4pPyQiLCBbIm1hYyJdKSwKKyAgICAgICAgKHIiXC5neXBp
PyIsIFsiY2hyb21pdW0iXSksCisgICAgICAgIChyIlwub3JkZXIkIiwgWyJtYWMiXSksCisgICAg
ICAgIChyIlwucHJbaW9dJCIsIFsicXQiXSksCisgICAgICAgIChyIlwudmNwcm9qLyIsIFsid2lu
Il0pLAorICAgICAgICAociJcLnhjY29uZmlnJCIsIFsibWFjIl0pLAorICAgICAgICAociJcLnhj
b2RlcHJvai8iLCBbIm1hYyJdKSwKKyAgICBdCisKKyAgICBiYXNlX3BsYXRmb3JtID0gdGFyZ2V0
X3BsYXRmb3JtLnNwbGl0KCItIilbMF0KKworICAgICMgU2VlIGlmIHRoZSBmaWxlIGlzIGluIG9u
ZSBvZiB0aGUga25vd24gZGlyZWN0b3JpZXMuCisgICAgZm9yIGRpcmVjdG9yeSwgcGxhdGZvcm1z
IGluIGRpcmVjdG9yaWVzOgorICAgICAgICBpZiByZS5zZWFyY2gociIoPzpefC8pJXMvIiAlIGRp
cmVjdG9yeSwgZmlsZSk6CisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0X3BsYXRmb3JtIGluIHBs
YXRmb3JtcyBvciBiYXNlX3BsYXRmb3JtIGluIHBsYXRmb3JtcworCisgICAgIyBTZWUgaWYgdGhl
IGZpbGUgbWF0Y2hlcyBhIGtub3duIHBhdHRlcm4uCisgICAgZm9yIHBhdHRlcm4sIHBsYXRmb3Jt
cyBpbiBwYXR0ZXJuczoKKyAgICAgICAgaWYgcmUuc2VhcmNoKHBhdHRlcm4sIGZpbGUpOgorICAg
ICAgICAgICAgcmV0dXJuIHRhcmdldF9wbGF0Zm9ybSBpbiBwbGF0Zm9ybXMgb3IgYmFzZV9wbGF0
Zm9ybSBpbiBwbGF0Zm9ybXMKKworICAgICMgU2VlIGlmIHRoZSBmaWxlIGlzIGEgcGxhdGZvcm0t
c3BlY2lmaWMgdGVzdCByZXN1bHQuCisgICAgbWF0Y2ggPSByZS5tYXRjaCgiTGF5b3V0VGVzdHMv
cGxhdGZvcm0vKD9QPHBsYXRmb3JtPlteL10rKS8iLCBmaWxlKQorICAgIGlmIG1hdGNoOgorICAg
ICAgICAjIFNlZSBpZiB0aGUgZmlsZSBpcyBhIHRlc3QgcmVzdWx0IGZvciB0aGlzIHBsYXRmb3Jt
LCBvdXIgYmFzZQorICAgICAgICAjIHBsYXRmb3JtLCBvciBvbmUgb2Ygb3VyIHN1Yi1wbGF0Zm9y
bXMuCisgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgicGxhdGZvcm0iKSBpbiAodGFyZ2V0X3Bs
YXRmb3JtLCBiYXNlX3BsYXRmb3JtKSBvciBtYXRjaC5ncm91cCgicGxhdGZvcm0iKS5zdGFydHN3
aXRoKCIlcy0iICUgdGFyZ2V0X3BsYXRmb3JtKQorCisgICAgIyBUaGUgZmlsZSBpc24ndCBvbmUg
d2Uga25vdyBhYm91dCBzcGVjaWZpY2FsbHksIHNvIHdlIHNob3VsZCBhc3N1bWUgd2UKKyAgICAj
IGhhdmUgdG8gYnVpbGQuCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgc2hvdWxkX2J1aWxkKHRh
cmdldF9wbGF0Zm9ybSwgY2hhbmdlZF9maWxlcyk6CisgICAgIiIiUmV0dXJucyB0cnVlIGlmIHRo
ZSBjaGFuZ2VkIGZpbGVzIGFmZmVjdCB0aGUgZ2l2ZW4gcGxhdGZvcm0sIGFuZAorICAgIHRodXMg
YSBidWlsZCBzaG91bGQgYmUgcGVyZm9ybWVkLiB0YXJnZXRfcGxhdGZvcm0gc2hvdWxkIGJlIG9u
ZSBvZiB0aGUKKyAgICBwbGF0Zm9ybXMgdXNlZCBpbiB0aGUgYnVpbGQud2Via2l0Lm9yZyBtYXN0
ZXIncyBjb25maWcuanNvbiBmaWxlLiIiIgorICAgIHJldHVybiBhbnkoX3Nob3VsZF9maWxlX3Ry
aWdnZXJfYnVpbGQodGFyZ2V0X3BsYXRmb3JtLCBmaWxlKSBmb3IgZmlsZSBpbiBjaGFuZ2VkX2Zp
bGVzKQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvd2tidWlsZF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAxNDA0NjgpCShmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9idWls
ZF91bml0dGVzdC5weToxNDA0NjgpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1w
b3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgYnVpbGQK
KworCitjbGFzcyBTaG91bGRCdWlsZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIF9zaG91
bGRfYnVpbGRfdGVzdHMgPSBbCisgICAgICAgIChbIkNoYW5nZUxvZyIsICJTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2ciLCAiU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nLTIwMTEtMDItMTEiXSwgW10p
LAorICAgICAgICAoWyJHTlVtYWtlZmlsZS5hbSIsICJTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSJdLCBbImd0ayJdKSwKKyAgICAgICAgKFsiV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL2Zv
byIsICJTb3VyY2UvV2ViQ29yZS9iYXIiXSwgWyIqIl0pLAorICAgICAgICAoWyJXZWJzaXRlcy9i
dWdzLndlYmtpdC5vcmcvZm9vIl0sIFtdKSwKKyAgICAgICAgKFsiU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9mb28iXSwgWyJtYWMtbGVvcGFyZCIsICJtYWMt
bGlvbiIsICAibWFjLW1vdW50YWlubGlvbiIsICJtYWMtc25vd2xlb3BhcmQiXSksCisgICAgICAg
IChbIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovZm9vIiwgIlNv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvaiIsICJTb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQuc2xuIiwgIlRvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVz
dFJ1bm5lckNvbW1vbi52c3Byb3BzIl0sIFsid2luIl0pLAorICAgICAgICAoWyJMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZm9vIiwgIlNvdXJjZS9XZWJDb3JlL2JhciJdLCBbIioiXSksCisgICAg
ICAgIChbIkxheW91dFRlc3RzL2ZvbyJdLCBbIioiXSksCisgICAgICAgIChbIkxheW91dFRlc3Rz
L2NhbnZhcy9waGlsaXAvdGVzdHMvc2l6ZS5hdHRyaWJ1dGVzLnBhcnNlLmV4cC1leHBlY3RlZC50
eHQiLCAiTGF5b3V0VGVzdHMvY2FudmFzL3BoaWxpcC90ZXN0cy9zaXplLmF0dHJpYnV0ZXMucGFy
c2UuZXhwLmh0bWwiXSwgWyIqIl0pLAorICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1saW51eC9mb28iXSwgWyJjaHJvbWl1bS1saW51eCJdKSwKKyAgICAgICAgKFsiTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvY29tcGFjdC8wMDEtZXhwZWN0ZWQu
dHh0Il0sIFsiY2hyb21pdW0td2luIl0pLAorICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9mb28iXSwgWyJtYWMtbGVvcGFyZCJdKSwKKyAgICAgICAgKFsiTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vZm9vIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24i
LCAibWFjLXNub3dsZW9wYXJkIiwgIndpbiJdKSwKKyAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXNub3dsZW9wYXJkL2ZvbyJdLCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1zbm93bGVv
cGFyZCJdKSwKKyAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVk
Il0sIFsibWFjLWxpb24iLCAgIm1hYy1tb3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIiwg
IndpbiJdKSwKKyAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ZvbyJdLCBbIm1h
Yy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgIm1hYy1tb3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9w
YXJkIiwgIndpbiJdKSwKKyAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXhwL2Zv
byJdLCBbIndpbiJdKSwKKyAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLXdrMi9m
b28iXSwgWyJ3aW4iXSksCisgICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mb28i
XSwgWyJ3aW4iXSksCisgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlLmV4cC5pbiIsICJTb3VyY2Uv
V2ViS2l0L21hYy9XZWJLaXQuZXhwIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAgIm1h
Yy1tb3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIl0pLAorICAgICAgICAoWyJTb3VyY2Uv
V2ViQ29yZS9tYWMvZm9vIl0sIFsiY2hyb21pdW0tbWFjIiwgIm1hYy1sZW9wYXJkIiwgIm1hYy1s
aW9uIiwgICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCJdKSwKKyAgICAgICAg
KFsiU291cmNlL1dlYkNvcmUvd2luL2ZvbyJdLCBbImNocm9taXVtLXdpbiIsICJ3aW4iXSksCisg
ICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9mb28iXSwgWyJt
YWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICAibWFjLW1vdW50YWlubGlvbiIsICJtYWMtc25vd2xl
b3BhcmQiXSksCisgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L3d4Y29kZS93
aW4vZm9vIl0sIFtdKSwKKyAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tIiwgIlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5o
Il0sIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAgIm1hYy1tb3VudGFpbmxpb24iLCAibWFj
LXNub3dsZW9wYXJkIl0pLAorICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuaCJdLCBbImNocm9taXVtLWxpbnV4Il0pLAorICAgICAg
ICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5DRS5oIl0sIFtdKSwK
KyAgICAgICAgKFsiVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NWaWV3ZXIuanMiXSwgW10pLAorICAgIF0K
KworICAgIGRlZiB0ZXN0X3Nob3VsZF9idWlsZChzZWxmKToKKyAgICAgICAgZm9yIGZpbGVzLCBw
bGF0Zm9ybXMgaW4gc2VsZi5fc2hvdWxkX2J1aWxkX3Rlc3RzOgorICAgICAgICAgICAgIyBGSVhN
RTogV2Ugc2hvdWxkIHRlc3QgbW9yZSBwbGF0Zm9ybXMgaGVyZSBvbmNlCisgICAgICAgICAgICAj
IGJ1aWxkLl9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxkIGlzIGltcGxlbWVudGVkIGZvciB0aGVt
LgorICAgICAgICAgICAgZm9yIHBsYXRmb3JtIGluIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24i
LCAgIm1hYy1tb3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIiwgIndpbiJdOgorICAgICAg
ICAgICAgICAgIHNob3VsZF9idWlsZCA9IHBsYXRmb3JtIGluIHBsYXRmb3JtcyBvciAiKiIgaW4g
cGxhdGZvcm1zCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZC5zaG91bGRf
YnVpbGQocGxhdGZvcm0sIGZpbGVzKSwgc2hvdWxkX2J1aWxkLCAiJXMgc2hvdWxkJXMgaGF2ZSBi
dWlsdCBidXQgZGlkJXMgKGZpbGVzOiAlcykiICUgKHBsYXRmb3JtLCAiIiBpZiBzaG91bGRfYnVp
bGQgZWxzZSAibid0IiwgIm4ndCIgaWYgc2hvdWxkX2J1aWxkIGVsc2UgIiIsIHN0cihmaWxlcykp
KQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
d2tidWlsZF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAx
NDA0NjgpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy93a2J1aWxkX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAK
IGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IGJ1
aWxkCitpbXBvcnQgd2tidWlsZAogCiAKIGNsYXNzIFNob3VsZEJ1aWxkVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CkBAIC02MCw3ICs2MCwxNSBAQCBjbGFzcyBTaG91bGRCdWlsZFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpCiAgICAgZGVmIHRlc3Rfc2hvdWxkX2J1aWxkKHNlbGYpOgogICAgICAgICBm
b3IgZmlsZXMsIHBsYXRmb3JtcyBpbiBzZWxmLl9zaG91bGRfYnVpbGRfdGVzdHM6CiAgICAgICAg
ICAgICAjIEZJWE1FOiBXZSBzaG91bGQgdGVzdCBtb3JlIHBsYXRmb3JtcyBoZXJlIG9uY2UKLSAg
ICAgICAgICAgICMgYnVpbGQuX3Nob3VsZF9maWxlX3RyaWdnZXJfYnVpbGQgaXMgaW1wbGVtZW50
ZWQgZm9yIHRoZW0uCisgICAgICAgICAgICAjIHdrYnVpbGQuX3Nob3VsZF9maWxlX3RyaWdnZXJf
YnVpbGQgaXMgaW1wbGVtZW50ZWQgZm9yIHRoZW0uCiAgICAgICAgICAgICBmb3IgcGxhdGZvcm0g
aW4gWyJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICAibWFjLW1vdW50YWlubGlvbiIsICJtYWMt
c25vd2xlb3BhcmQiLCAid2luIl06CiAgICAgICAgICAgICAgICAgc2hvdWxkX2J1aWxkID0gcGxh
dGZvcm0gaW4gcGxhdGZvcm1zIG9yICIqIiBpbiBwbGF0Zm9ybXMKLSAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkLnNob3VsZF9idWlsZChwbGF0Zm9ybSwgZmlsZXMpLCBzaG91
bGRfYnVpbGQsICIlcyBzaG91bGQlcyBoYXZlIGJ1aWx0IGJ1dCBkaWQlcyAoZmlsZXM6ICVzKSIg
JSAocGxhdGZvcm0sICIiIGlmIHNob3VsZF9idWlsZCBlbHNlICJuJ3QiLCAibid0IiBpZiBzaG91
bGRfYnVpbGQgZWxzZSAiIiwgc3RyKGZpbGVzKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh3a2J1aWxkLnNob3VsZF9idWlsZChwbGF0Zm9ybSwgZmlsZXMpLCBzaG91bGRfYnVp
bGQsICIlcyBzaG91bGQlcyBoYXZlIGJ1aWx0IGJ1dCBkaWQlcyAoZmlsZXM6ICVzKSIgJSAocGxh
dGZvcm0sICIiIGlmIHNob3VsZF9idWlsZCBlbHNlICJuJ3QiLCAibid0IiBpZiBzaG91bGRfYnVp
bGQgZWxzZSAiIiwgc3RyKGZpbGVzKSkpCisKKyMgRklYTUU6IFdlIHNob3VsZCBydW4gdGhpcyBm
aWxlIGFzIHBhcnQgb2YgdGVzdC1ybSAuCisjIFVuZm9ydHVuYXRlbHkgdGVzdC1ybSAgY3VycmVu
dGx5IHJlcXVpcmVzIHRoYXQgdW5pdHRlc3RzCisjIGJlIGxvY2F0ZWQgaW4gYSBkaXJlY3Rvcnkg
d2l0aCBhIHZhbGlkIG1vZHVsZSBuYW1lLgorIyAnYnVpbGQud2Via2l0Lm9yZy1jb25maWcnIGlz
IG5vdCBhIHZhbGlkIG1vZHVsZSBuYW1lIChkdWUgdG8gJy4nIGFuZCAnLScpCisjIHNvIGZvciBu
b3cgdGhpcyBpcyBhIHN0YW5kLWFsb25lIHRlc3QgaGFybmVzcy4KK2lmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jb25maWcvYnVpbGQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkLnB5CShyZXZpc2lvbiAxNDA0NjgpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGQucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTM1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotIiIiRnVuY3Rpb25zIHJlbGF0aW5nIHRvIGJ1aWxkaW5nIFdlYktpdCIiIgotCi1pbXBvcnQg
cmUKLQotCi1kZWYgX3Nob3VsZF9maWxlX3RyaWdnZXJfYnVpbGQodGFyZ2V0X3BsYXRmb3JtLCBm
aWxlKToKLSAgICAjIFRoZSBkaXJlY3RvcmllcyBhbmQgcGF0dGVybnMgbGlzdHMgYmVsb3cgbWFw
IGRpcmVjdG9yeSBuYW1lcyBvcgotICAgICMgcmVnZXhwIHBhdHRlcm5zIHRvIHRoZSBib3QgcGxh
dGZvcm1zIGZvciB3aGljaCB0aGV5IHNob3VsZCB0cmlnZ2VyIGEKLSAgICAjIGJ1aWxkLiBNYXBw
aW5nIHRvIHRoZSBlbXB0eSBsaXN0IG1lYW5zIHRoYXQgbm8gYnVpbGRzIHNob3VsZCBiZQotICAg
ICMgdHJpZ2dlcmVkIG9uIGFueSBwbGF0Zm9ybXMuIEVhcmxpZXIgZGlyZWN0b3JpZXMvcGF0dGVy
bnMgdGFrZQotICAgICMgcHJlY2VuZGVuY2Ugb3ZlciBsYXRlciBvbmVzLgotCi0gICAgIyBGSVhN
RTogVGhlIHBhdHRlcm5zIGJlbG93IGhhdmUgb25seSBiZWVuIHZlcmlmaWVkIHRvIGJlIGNvcnJl
Y3Qgb24KLSAgICAjIHRoZSBwbGF0Zm9ybXMgbGlzdGVkIGJlbG93LiBXZSBzaG91bGQgaW1wbGVt
ZW50IHRoaXMgZm9yIG90aGVyIHBsYXRmb3JtcwotICAgICMgYW5kIHN0YXJ0IHVzaW5nIGl0IGZv
ciB0aGVpciBib3RzLiBTb21lb25lIGZhbWlsaWFyIHdpdGggZWFjaCBwbGF0Zm9ybQotICAgICMg
d2lsbCBoYXZlIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgcmlnaHQgc2V0IG9mIGRpcmVjdG9yaWVz
L3BhdHRlcm5zIGlzIGZvcgotICAgICMgdGhhdCBwbGF0Zm9ybS4KLSAgICBhc3NlcnQodGFyZ2V0
X3BsYXRmb3JtIGluICgibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAibWFjLW1vdW50YWlubGlv
biIsICJtYWMtc25vd2xlb3BhcmQiLCAid2luIikpCi0KLSAgICBkaXJlY3RvcmllcyA9IFsKLSAg
ICAgICAgIyBEaXJlY3RvcmllcyB0aGF0IHNob3VsZG4ndCB0cmlnZ2VyIGJ1aWxkcyBvbiBhbnkg
Ym90cy4KLSAgICAgICAgKCJFeGFtcGxlcyIsIFtdKSwKLSAgICAgICAgKCJQZXJmb3JtYW5jZVRl
c3RzIiwgW10pLAotICAgICAgICAoIk1hbnVhbFRlc3RzIiwgW10pLAotICAgICAgICAoIlRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sIiwg
W10pLAotICAgICAgICAoIldlYnNpdGVzIiwgW10pLAotICAgICAgICAoImVmbCIsIFtdKSwKLSAg
ICAgICAgKCJpcGhvbmUiLCBbXSksCi0gICAgICAgICgib3BlbmdsIiwgW10pLAotICAgICAgICAo
Im9wZW50eXBlIiwgW10pLAotICAgICAgICAoIm9wZW52ZyIsIFtdKSwKLSAgICAgICAgKCJ3aW5j
ZSIsIFtdKSwKLSAgICAgICAgKCJ3eCIsIFtdKSwKLQotICAgICAgICAjIERpcmVjdG9yaWVzIHRo
YXQgc2hvdWxkIHRyaWdnZXIgYnVpbGRzIG9uIG9ubHkgc29tZSBib3RzLgotICAgICAgICAoIlNv
dXJjZS9XZWJDb3JlL2ltYWdlLWRlY29kZXJzIiwgWyJjaHJvbWl1bSJdKSwKLSAgICAgICAgKCJM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMiLCBbIm1hYyIsICJ3aW4iXSksCi0gICAgICAgICgiY2Fp
cm8iLCBbImd0ayIsICJ3aW5jYWlybyJdKSwKLSAgICAgICAgKCJjZiIsIFsiY2hyb21pdW0tbWFj
IiwgIm1hYyIsICJxdCIsICJ3aW4iXSksCi0gICAgICAgICgiY2hyb21pdW0iLCBbImNocm9taXVt
Il0pLAotICAgICAgICAoImNvY29hIiwgWyJjaHJvbWl1bS1tYWMiLCAibWFjIl0pLAotICAgICAg
ICAoImN1cmwiLCBbImd0ayIsICJ3aW5jYWlybyJdKSwKLSAgICAgICAgKCJnb2JqZWN0IiwgWyJn
dGsiXSksCi0gICAgICAgICgiZ3B1IiwgWyJjaHJvbWl1bSIsICJtYWMiXSksCi0gICAgICAgICgi
Z3N0cmVhbWVyIiwgWyJndGsiXSksCi0gICAgICAgICgiZ3RrIiwgWyJndGsiXSksCi0gICAgICAg
ICgibWFjIiwgWyJjaHJvbWl1bS1tYWMiLCAibWFjIl0pLAotICAgICAgICAoIm1hYy1sZW9wYXJk
IiwgWyJtYWMtbGVvcGFyZCJdKSwKLSAgICAgICAgKCJtYWMtbGlvbiIsIFsibWFjLWxlb3BhcmQi
LCAibWFjLWxpb24iLCAibWFjLXNub3dsZW9wYXJkIiwgIndpbiJdKSwKLSAgICAgICAgKCJtYWMt
c25vd2xlb3BhcmQiLCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1zbm93bGVvcGFyZCJdKSwKLSAgICAg
ICAgKCJtYWMtd2syIiwgWyJtYWMtbGlvbiIsICJtYWMtc25vd2xlb3BhcmQiLCAibWFjLW1vdW50
YWlubGlvbiIsICJ3aW4iXSksCi0gICAgICAgICgib2JqYyIsIFsibWFjIl0pLAotICAgICAgICAo
InF0IiwgWyJxdCJdKSwKLSAgICAgICAgKCJza2lhIiwgWyJjaHJvbWl1bSJdKSwKLSAgICAgICAg
KCJzb3VwIiwgWyJndGsiXSksCi0gICAgICAgICgidjgiLCBbImNocm9taXVtIl0pLAotICAgICAg
ICAoIndpbiIsIFsiY2hyb21pdW0td2luIiwgIndpbiJdKSwKLSAgICBdCi0gICAgcGF0dGVybnMg
PSBbCi0gICAgICAgICMgUGF0dGVybnMgdGhhdCBzaG91bGRuJ3QgdHJpZ2dlciBidWlsZHMgb24g
YW55IGJvdHMuCi0gICAgICAgIChyIig/Ol58LylDaGFuZ2VMb2cuKiQiLCBbXSksCi0gICAgICAg
IChyIig/Ol58LylNYWtlZmlsZSQiLCBbXSksCi0gICAgICAgIChyIi9BUk0iLCBbXSksCi0gICAg
ICAgIChyIi9DTWFrZS4qIiwgW10pLAotICAgICAgICAociIvTElDRU5TRVteL10rJCIsIFtdKSwK
LSAgICAgICAgKHIiQVJNKD86djcpP1wuKD86Y3BwfGgpJCIsIFtdKSwKLSAgICAgICAgKHIiTUlQ
U1wuKD86Y3BwfGgpJCIsIFtdKSwKLSAgICAgICAgKHIiV2luQ0VcLig/OmNwcHxofG1tKSQiLCBb
XSksCi0gICAgICAgIChyIlwuKD86YmtsfG1rKSQiLCBbXSksCi0KLSAgICAgICAgIyBQYXR0ZXJu
cyB0aGF0IHNob3VsZCB0cmlnZ2VyIGJ1aWxkcyBvbiBvbmx5IHNvbWUgYm90cy4KLSAgICAgICAg
KHIiKD86XnwvKUdOVW1ha2VmaWxlXC5hbSQiLCBbImd0ayJdKSwKLSAgICAgICAgKHIiL1x3K0No
cm9taXVtXHcqXC4oPzpjcHB8aHxtbSkkIiwgWyJjaHJvbWl1bSJdKSwKLSAgICAgICAgKHIiTWFj
XC4oPzpjcHB8aHxtbSkkIiwgWyJtYWMiXSksCi0gICAgICAgIChyIlwuKD86dmNwcm9qfHZzcHJv
cHN8c2xuKSQiLCBbIndpbiJdKSwKLSAgICAgICAgKHIiXC5leHAoPzpcLmluKT8kIiwgWyJtYWMi
XSksCi0gICAgICAgIChyIlwuZ3lwaT8iLCBbImNocm9taXVtIl0pLAotICAgICAgICAociJcLm9y
ZGVyJCIsIFsibWFjIl0pLAotICAgICAgICAociJcLnByW2lvXSQiLCBbInF0Il0pLAotICAgICAg
ICAociJcLnZjcHJvai8iLCBbIndpbiJdKSwKLSAgICAgICAgKHIiXC54Y2NvbmZpZyQiLCBbIm1h
YyJdKSwKLSAgICAgICAgKHIiXC54Y29kZXByb2ovIiwgWyJtYWMiXSksCi0gICAgXQotCi0gICAg
YmFzZV9wbGF0Zm9ybSA9IHRhcmdldF9wbGF0Zm9ybS5zcGxpdCgiLSIpWzBdCi0KLSAgICAjIFNl
ZSBpZiB0aGUgZmlsZSBpcyBpbiBvbmUgb2YgdGhlIGtub3duIGRpcmVjdG9yaWVzLgotICAgIGZv
ciBkaXJlY3RvcnksIHBsYXRmb3JtcyBpbiBkaXJlY3RvcmllczoKLSAgICAgICAgaWYgcmUuc2Vh
cmNoKHIiKD86XnwvKSVzLyIgJSBkaXJlY3RvcnksIGZpbGUpOgotICAgICAgICAgICAgcmV0dXJu
IHRhcmdldF9wbGF0Zm9ybSBpbiBwbGF0Zm9ybXMgb3IgYmFzZV9wbGF0Zm9ybSBpbiBwbGF0Zm9y
bXMKLQotICAgICMgU2VlIGlmIHRoZSBmaWxlIG1hdGNoZXMgYSBrbm93biBwYXR0ZXJuLgotICAg
IGZvciBwYXR0ZXJuLCBwbGF0Zm9ybXMgaW4gcGF0dGVybnM6Ci0gICAgICAgIGlmIHJlLnNlYXJj
aChwYXR0ZXJuLCBmaWxlKToKLSAgICAgICAgICAgIHJldHVybiB0YXJnZXRfcGxhdGZvcm0gaW4g
cGxhdGZvcm1zIG9yIGJhc2VfcGxhdGZvcm0gaW4gcGxhdGZvcm1zCi0KLSAgICAjIFNlZSBpZiB0
aGUgZmlsZSBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIHRlc3QgcmVzdWx0LgotICAgIG1hdGNoID0g
cmUubWF0Y2goIkxheW91dFRlc3RzL3BsYXRmb3JtLyg/UDxwbGF0Zm9ybT5bXi9dKykvIiwgZmls
ZSkKLSAgICBpZiBtYXRjaDoKLSAgICAgICAgIyBTZWUgaWYgdGhlIGZpbGUgaXMgYSB0ZXN0IHJl
c3VsdCBmb3IgdGhpcyBwbGF0Zm9ybSwgb3VyIGJhc2UKLSAgICAgICAgIyBwbGF0Zm9ybSwgb3Ig
b25lIG9mIG91ciBzdWItcGxhdGZvcm1zLgotICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoInBs
YXRmb3JtIikgaW4gKHRhcmdldF9wbGF0Zm9ybSwgYmFzZV9wbGF0Zm9ybSkgb3IgbWF0Y2guZ3Jv
dXAoInBsYXRmb3JtIikuc3RhcnRzd2l0aCgiJXMtIiAlIHRhcmdldF9wbGF0Zm9ybSkKLQotICAg
ICMgVGhlIGZpbGUgaXNuJ3Qgb25lIHdlIGtub3cgYWJvdXQgc3BlY2lmaWNhbGx5LCBzbyB3ZSBz
aG91bGQgYXNzdW1lIHdlCi0gICAgIyBoYXZlIHRvIGJ1aWxkLgotICAgIHJldHVybiBUcnVlCi0K
LQotZGVmIHNob3VsZF9idWlsZCh0YXJnZXRfcGxhdGZvcm0sIGNoYW5nZWRfZmlsZXMpOgotICAg
ICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhbmdlZCBmaWxlcyBhZmZlY3QgdGhlIGdpdmVuIHBs
YXRmb3JtLCBhbmQKLSAgICB0aHVzIGEgYnVpbGQgc2hvdWxkIGJlIHBlcmZvcm1lZC4gdGFyZ2V0
X3BsYXRmb3JtIHNob3VsZCBiZSBvbmUgb2YgdGhlCi0gICAgcGxhdGZvcm1zIHVzZWQgaW4gdGhl
IGJ1aWxkLndlYmtpdC5vcmcgbWFzdGVyJ3MgY29uZmlnLmpzb24gZmlsZS4iIiIKLSAgICByZXR1
cm4gYW55KF9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxkKHRhcmdldF9wbGF0Zm9ybSwgZmlsZSkg
Zm9yIGZpbGUgaW4gY2hhbmdlZF9maWxlcykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9idWlsZF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE0
MDQ2OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9idWlsZF91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw2NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5jb25maWcgaW1wb3J0IGJ1aWxkCi0KLQotY2xhc3MgU2hvdWxkQnVpbGRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgICBfc2hvdWxkX2J1aWxkX3Rlc3RzID0gWwotICAgICAgICAo
WyJDaGFuZ2VMb2ciLCAiU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIiwgIlNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZy0yMDExLTAyLTExIl0sIFtdKSwKLSAgICAgICAgKFsiR05VbWFrZWZpbGUuYW0i
LCAiU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0iXSwgWyJndGsiXSksCi0gICAgICAgIChb
IldlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9mb28iLCAiU291cmNlL1dlYkNvcmUvYmFyIl0sIFsi
KiJdKSwKLSAgICAgICAgKFsiV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL2ZvbyJdLCBbXSksCi0g
ICAgICAgIChbIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
Zm9vIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAgIm1hYy1tb3VudGFpbmxpb24iLCAi
bWFjLXNub3dsZW9wYXJkIl0pLAotICAgICAgICAoWyJTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL2ZvbyIsICJTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3By
b2oiLCAiU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnNsbiIsICJUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXJDb21tb24udnNwcm9wcyJdLCBbIndp
biJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ZvbyIsICJTb3VyY2Uv
V2ViQ29yZS9iYXIiXSwgWyIqIl0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9mb28iXSwgWyIq
Il0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzL3NpemUuYXR0
cmlidXRlcy5wYXJzZS5leHAtZXhwZWN0ZWQudHh0IiwgIkxheW91dFRlc3RzL2NhbnZhcy9waGls
aXAvdGVzdHMvc2l6ZS5hdHRyaWJ1dGVzLnBhcnNlLmV4cC5odG1sIl0sIFsiKiJdKSwKLSAgICAg
ICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZm9vIl0sIFsiY2hyb21p
dW0tbGludXgiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdp
bi9mYXN0L2NvbXBhY3QvMDAxLWV4cGVjdGVkLnR4dCJdLCBbImNocm9taXVtLXdpbiJdKSwKLSAg
ICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvZm9vIl0sIFsibWFjLWxl
b3BhcmQiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL2ZvbyJd
LCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgIm1hYy1zbm93bGVvcGFyZCIsICJ3aW4iXSks
Ci0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVvcGFyZC9mb28iXSwg
WyJtYWMtbGVvcGFyZCIsICJtYWMtc25vd2xlb3BhcmQiXSksCi0gICAgICAgIChbIkxheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZCJdLCBbIm1hYy1saW9uIiwgICJtYWMtbW91bnRh
aW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCIsICJ3aW4iXSksCi0gICAgICAgIChbIkxheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mb28iXSwgWyJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICJtYWMt
bW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCIsICJ3aW4iXSksCi0gICAgICAgIChbIkxh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi14cC9mb28iXSwgWyJ3aW4iXSksCi0gICAgICAgIChbIkxh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi13azIvZm9vIl0sIFsid2luIl0pLAotICAgICAgICAoWyJM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZm9vIl0sIFsid2luIl0pLAotICAgICAgICAoWyJTb3Vy
Y2UvV2ViQ29yZS5leHAuaW4iLCAiU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cCJdLCBbIm1h
Yy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVv
cGFyZCJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvbWFjL2ZvbyJdLCBbImNocm9taXVt
LW1hYyIsICJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICAibWFjLW1vdW50YWlubGlvbiIsICJt
YWMtc25vd2xlb3BhcmQiXSksCi0gICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3dpbi9mb28iXSwg
WyJjaHJvbWl1bS13aW4iLCAid2luIl0pLAotICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvZm9vIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAgIm1h
Yy1tb3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIl0pLAotICAgICAgICAoWyJTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93eC93eGNvZGUvd2luL2ZvbyJdLCBbXSksCi0gICAgICAgIChbIlNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSIsICJTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCJdLCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9u
IiwgICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCJdKSwKLSAgICAgICAgKFsi
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmgiXSwg
WyJjaHJvbWl1bS1saW51eCJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luQ0UuaCJdLCBbXSksCi0gICAgICAgIChbIlRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xl
YWtzVmlld2VyLmpzIl0sIFtdKSwKLSAgICBdCi0KLSAgICBkZWYgdGVzdF9zaG91bGRfYnVpbGQo
c2VsZik6Ci0gICAgICAgIGZvciBmaWxlcywgcGxhdGZvcm1zIGluIHNlbGYuX3Nob3VsZF9idWls
ZF90ZXN0czoKLSAgICAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCB0ZXN0IG1vcmUgcGxhdGZv
cm1zIGhlcmUgb25jZQotICAgICAgICAgICAgIyBidWlsZC5fc2hvdWxkX2ZpbGVfdHJpZ2dlcl9i
dWlsZCBpcyBpbXBsZW1lbnRlZCBmb3IgdGhlbS4KLSAgICAgICAgICAgIGZvciBwbGF0Zm9ybSBp
biBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1z
bm93bGVvcGFyZCIsICJ3aW4iXToKLSAgICAgICAgICAgICAgICBzaG91bGRfYnVpbGQgPSBwbGF0
Zm9ybSBpbiBwbGF0Zm9ybXMgb3IgIioiIGluIHBsYXRmb3JtcwotICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYnVpbGQuc2hvdWxkX2J1aWxkKHBsYXRmb3JtLCBmaWxlcyksIHNob3Vs
ZF9idWlsZCwgIiVzIHNob3VsZCVzIGhhdmUgYnVpbHQgYnV0IGRpZCVzIChmaWxlczogJXMpIiAl
IChwbGF0Zm9ybSwgIiIgaWYgc2hvdWxkX2J1aWxkIGVsc2UgIm4ndCIsICJuJ3QiIGlmIHNob3Vs
ZF9idWlsZCBlbHNlICIiLCBzdHIoZmlsZXMpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9odGRpZ2VzdHBhcnNlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaHRkaWdlc3RwYXJzZXIucHkJKHJldmlzaW9uIDE0MDQ2
OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9odGRpZ2VzdHBhcnNlci5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSw1NCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLSIiImh0ZGlnZXN0cGFyc2VyIC0gYSBwYXJzZXIgZm9yIGh0ZGln
ZXN0IGZpbGVzIiIiCi0KLWltcG9ydCBoYXNobGliCi1pbXBvcnQgc3RyaW5nCi0KLQotY2xhc3Mg
SFREaWdlc3RQYXJzZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGlnZXN0X2Zp
bGUpOgotICAgICAgICBzZWxmLl9lbnRyaWVzID0gc2VsZi5wYXJzZV9maWxlKGRpZ2VzdF9maWxl
KQotCi0gICAgZGVmIGF1dGhlbnRpY2F0ZShzZWxmLCB1c2VybmFtZSwgcmVhbG0sIHBhc3N3b3Jk
KToKLSAgICAgICAgaGFzaGVkX3Bhc3N3b3JkID0gaGFzaGxpYi5tZDUoJzonLmpvaW4oKHVzZXJu
YW1lLCByZWFsbSwgcGFzc3dvcmQpKSkuaGV4ZGlnZXN0KCkKLSAgICAgICAgcmV0dXJuIFt1c2Vy
bmFtZSwgcmVhbG0sIGhhc2hlZF9wYXNzd29yZF0gaW4gc2VsZi5lbnRyaWVzKCkKLQotICAgIGRl
ZiBlbnRyaWVzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZW50cmllcwotCi0gICAgZGVm
IHBhcnNlX2ZpbGUoc2VsZiwgZGlnZXN0X2ZpbGUpOgotICAgICAgICBlbnRyaWVzID0gW2xpbmUu
cnN0cmlwKCkuc3BsaXQoJzonKSBmb3IgbGluZSBpbiBkaWdlc3RfZmlsZV0KLQotICAgICAgICAj
IFBlcmZvcm0gc29tZSBzYW5pdHktY2hlY2tpbmcgdG8gZW5zdXJlIHRoZSBmaWxlIGlzIHZhbGlk
LgotICAgICAgICB2YWxpZF9jaGFyYWN0ZXJzID0gc2V0KHN0cmluZy5oZXhkaWdpdHMpCi0gICAg
ICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgaWYgbGVuKGVudHJ5KSAhPSAz
OgotICAgICAgICAgICAgICAgIHJldHVybiBbXQotICAgICAgICAgICAgaGFzaGVkX3Bhc3N3b3Jk
ID0gZW50cnlbLTFdCi0gICAgICAgICAgICBpZiBsZW4oaGFzaGVkX3Bhc3N3b3JkKSAhPSAzMjoK
LSAgICAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgICAgIGlmIG5vdCBzZXQoaGFzaGVk
X3Bhc3N3b3JkKS5pc3N1YnNldCh2YWxpZF9jaGFyYWN0ZXJzKToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gW10KLQotICAgICAgICByZXR1cm4gZW50cmllcwpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9odGRpZ2VzdHBhcnNlcl91bml0
dGVzdC5weQkocmV2aXNpb24gMTQwNDY4KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDgy
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0
IFN0cmluZ0lPCi1pbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5uZXQuaHRkaWdlc3RwYXJzZXIgaW1wb3J0IEhURGlnZXN0UGFyc2VyCi0KLQotY2xhc3Mg
SFREaWdlc3RQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0RW50
cmllc0VxdWFsKHNlbGYsIGVudHJpZXMsIGFkZGl0aW9uYWxfY29udGVudD1Ob25lKToKLSAgICAg
ICAgZGlnZXN0X2ZpbGUgPSBzZWxmLmZha2VfaHRkaWdlc3RfZmlsZSgpCi0gICAgICAgIGlmIGFk
ZGl0aW9uYWxfY29udGVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGRpZ2VzdF9maWxlLnNl
ZWsocG9zPTAsIG1vZGU9b3MuU0VFS19FTkQpCi0gICAgICAgICAgICBkaWdlc3RfZmlsZS53cml0
ZShhZGRpdGlvbmFsX2NvbnRlbnQpCi0gICAgICAgICAgICBkaWdlc3RfZmlsZS5zZWVrKHBvcz0w
LCBtb2RlPW9zLlNFRUtfU0VUKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJpZXMsIEhU
RGlnZXN0UGFyc2VyKGRpZ2VzdF9maWxlKS5lbnRyaWVzKCkpCi0KLSAgICBkZWYgdGVzdF9hdXRo
ZW50aWNhdGUoc2VsZik6Ci0gICAgICAgIGh0ZGlnZXN0ID0gSFREaWdlc3RQYXJzZXIoc2VsZi5m
YWtlX2h0ZGlnZXN0X2ZpbGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGh0ZGlnZXN0LmF1
dGhlbnRpY2F0ZSgndXNlcjEnLCAncmVhbG0gMScsICdwYXNzd29yZDEnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNlcjInLCAncmVhbG0gMicsICdw
YXNzd29yZDInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0
ZSgndXNlcjMnLCAncmVhbG0gMScsICdwYXNzd29yZDMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNlcjMnLCAncmVhbG0gMycsICdwYXNzd29yZDMn
KSkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNl
cjEnLCAncmVhbG0nLCAncGFzc3dvcmQxJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaHRk
aWdlc3QuYXV0aGVudGljYXRlKCd1c2VyMScsICdyZWFsbSAyJywgJ3Bhc3N3b3JkMScpKQotICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNlcjInLCAncmVh
bG0gMicsICdwYXNzd29yZDEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodGRpZ2VzdC5h
dXRoZW50aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDEnLCAncGFzc3dvcmQxJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoaHRkaWdlc3QuYXV0aGVudGljYXRlKCcnLCAnJywgJycpKQotCi0gICAg
ZGVmIHRlc3RfZW50cmllcyhzZWxmKToKLSAgICAgICAgZW50cmllcyA9IFsKLSAgICAgICAgICAg
IFsndXNlcjEnLCAncmVhbG0gMScsICczNmI4YWEyN2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2Midd
LAotICAgICAgICAgICAgWyd1c2VyMicsICdyZWFsbSAyJywgJzE0ZjgyNzY4NmZhOTc3NzhmMDJm
ZTEzMTRhMzMzN2M4J10sCi0gICAgICAgICAgICBbJ3VzZXIzJywgJ3JlYWxtIDEnLCAnMTgxN2Zj
OGEyNDExOWNjNTdmYmFmYzhhNjMwZWE1YTUnXSwKLSAgICAgICAgICAgIFsndXNlcjMnLCAncmVh
bG0gMycsICdhMDVmNWEyMzM1ZTlkODdiYmU3NWJiZTVlNTMyNDhmMCddLAotICAgICAgICBdCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKGVudHJpZXMpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RW50cmllc0VxdWFsKGVudHJpZXMsIGFkZGl0aW9uYWxfY29udGVudD0nJykKLQotICAgIGRl
ZiB0ZXN0X2VtcHR5X2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIEhU
RGlnZXN0UGFyc2VyKFN0cmluZ0lPLlN0cmluZ0lPKCkpLmVudHJpZXMoKSkKLQotICAgIGRlZiB0
ZXN0X3Rvb19mZXdfY29sb25zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVh
bChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxXG4nKQotCi0gICAgZGVmIHRl
c3RfdG9vX21hbnlfY29sb25zKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVh
bChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3ZmE1ZTkwNTEw
OTVkMzdiNjE5ZjkyNzYyOmdhcmJhZ2VcbicpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2hhc2go
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtdLCBhZGRpdGlvbmFsX2Nv
bnRlbnQ9J3VzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1MTA5NWQzN2I2MTlmOTI3NjIwMDAw
MDBcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtdLCBhZGRpdGlvbmFsX2Nv
bnRlbnQ9J3VzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1MTA5NWQzN2I2MTlmOTI3NlxuJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0n
dXNlcjE6cmVhbG0gMTozNmI4YWEyN2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2elxuJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNlcjE6
cmVhbG0gMTogMzZiOGFhMjdmYTVlOTA1MTA5NWQzN2I2MTlmOTI3NjJcbicpCi0KLSAgICBkZWYg
ZmFrZV9odGRpZ2VzdF9maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4gU3RyaW5nSU8uU3RyaW5n
SU8oIiIidXNlcjE6cmVhbG0gMTozNmI4YWEyN2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2MgotdXNl
cjI6cmVhbG0gMjoxNGY4Mjc2ODZmYTk3Nzc4ZjAyZmUxMzE0YTMzMzdjOAotdXNlcjM6cmVhbG0g
MToxODE3ZmM4YTI0MTE5Y2M1N2ZiYWZjOGE2MzBlYTVhNQotdXNlcjM6cmVhbG0gMzphMDVmNWEy
MzM1ZTlkODdiYmU3NWJiZTVlNTMyNDhmMAotIiIiKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185917</attachid>
            <date>2013-01-31 19:21:38 -0800</date>
            <delta_ts>2013-01-31 19:47:28 -0800</delta_ts>
            <desc>Updated for ToT</desc>
            <filename>bug-107379-20130131191821.patch</filename>
            <type>text/plain</type>
            <size>43779</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0MTUyNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDEzLTAxLTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIGJ1aWxkYm90IHNob3VsZCBub3QgcmVseSBvbiB3ZWJraXRweQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3Mzc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBhbGwgUHl0aG9uIGZp
bGVzIHVzZWQgaW4gYnVpbGRib3QgY29uZmlndXJhdGlvbiBpbnRvIEJ1aWxkU2xhdmVTdXBwb3J0
IGRpcmVjdG9yeS4KKyAgICAgICAgT25jZSB0aGlzIHBhdGNoIGlzIGxhbmRlZCwgd2UgY2FuIHN0
b3AgcmVzdGFydGluZyB0aGUgbWFzdGVyIG9uIHdlYmtpdHB5IGNoYW5nZXMuCisKKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb21taXR0ZXJfYXV0
aC5weToKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9odGRpZ2VzdHBhcnNlci5weTogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2h0ZGlnZXN0cGFyc2VyLnB5LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5OiBDb3Bp
ZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaHRkaWdlc3RwYXJzZXJf
dW5pdHRlc3QucHkuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvbWFzdGVyLmNmZzoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkLnB5OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGQucHkuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvd2tidWlsZF91bml0dGVzdC5weTogQ29waWVkIGZy
b20gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkX3VuaXR0ZXN0LnB5
LgorICAgICAgICAoU2hvdWxkQnVpbGRUZXN0LnRlc3Rfc2hvdWxkX2J1aWxkKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGQucHk6IFJlbW92ZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkX3VuaXR0ZXN0LnB5OiBS
ZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9odGRpZ2VzdHBh
cnNlci5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
aHRkaWdlc3RwYXJzZXJfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisKIDIwMTMtMDEtMzEgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxNDEzNDkuCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb21taXR0ZXJfYXV0aC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb21taXR0ZXJf
YXV0aC5weQkocmV2aXNpb24gMTQxNTIzKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvY29tbWl0dGVyX2F1dGgucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAgaW1wb3J0IGJ1aWxkYm90LnN0YXR1cy53ZWIuYXV0aAogaW1wb3J0IGpz
b24KIGltcG9ydCB6b3BlLmludGVyZmFjZQogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuaHRk
aWdlc3RwYXJzZXIgaW1wb3J0IEhURGlnZXN0UGFyc2VyCitmcm9tIGh0ZGlnZXN0cGFyc2VyIGlt
cG9ydCBIVERpZ2VzdFBhcnNlcgogCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRpZ2VzdHBh
cnNlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9odGRpZ2VzdHBhcnNlci5weQkocmV2aXNpb24gMTQwNDY4KQkoZnJvbSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaHRkaWdlc3RwYXJzZXIucHk6MTQwNDY4
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvaHRk
aWdlc3RwYXJzZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJodGRpZ2VzdHBhcnNlciAtIGEgcGFy
c2VyIGZvciBodGRpZ2VzdCBmaWxlcyIiIgorCitpbXBvcnQgaGFzaGxpYgoraW1wb3J0IHN0cmlu
ZworCisKK2NsYXNzIEhURGlnZXN0UGFyc2VyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGRpZ2VzdF9maWxlKToKKyAgICAgICAgc2VsZi5fZW50cmllcyA9IHNlbGYucGFyc2VfZmls
ZShkaWdlc3RfZmlsZSkKKworICAgIGRlZiBhdXRoZW50aWNhdGUoc2VsZiwgdXNlcm5hbWUsIHJl
YWxtLCBwYXNzd29yZCk6CisgICAgICAgIGhhc2hlZF9wYXNzd29yZCA9IGhhc2hsaWIubWQ1KCc6
Jy5qb2luKCh1c2VybmFtZSwgcmVhbG0sIHBhc3N3b3JkKSkpLmhleGRpZ2VzdCgpCisgICAgICAg
IHJldHVybiBbdXNlcm5hbWUsIHJlYWxtLCBoYXNoZWRfcGFzc3dvcmRdIGluIHNlbGYuZW50cmll
cygpCisKKyAgICBkZWYgZW50cmllcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2VudHJp
ZXMKKworICAgIGRlZiBwYXJzZV9maWxlKHNlbGYsIGRpZ2VzdF9maWxlKToKKyAgICAgICAgZW50
cmllcyA9IFtsaW5lLnJzdHJpcCgpLnNwbGl0KCc6JykgZm9yIGxpbmUgaW4gZGlnZXN0X2ZpbGVd
CisKKyAgICAgICAgIyBQZXJmb3JtIHNvbWUgc2FuaXR5LWNoZWNraW5nIHRvIGVuc3VyZSB0aGUg
ZmlsZSBpcyB2YWxpZC4KKyAgICAgICAgdmFsaWRfY2hhcmFjdGVycyA9IHNldChzdHJpbmcuaGV4
ZGlnaXRzKQorICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgICAgIGlmIGxl
bihlbnRyeSkgIT0gMzoKKyAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgICAgIGhh
c2hlZF9wYXNzd29yZCA9IGVudHJ5Wy0xXQorICAgICAgICAgICAgaWYgbGVuKGhhc2hlZF9wYXNz
d29yZCkgIT0gMzI6CisgICAgICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgICAgICBpZiBu
b3Qgc2V0KGhhc2hlZF9wYXNzd29yZCkuaXNzdWJzZXQodmFsaWRfY2hhcmFjdGVycyk6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFtdCisKKyAgICAgICAgcmV0dXJuIGVudHJpZXMKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFy
c2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAxNDA0NjgpCShmcm9tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9odGRpZ2Vz
dHBhcnNlcl91bml0dGVzdC5weToxNDA0NjgpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRpZ2VzdHBhcnNlcl91bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDgyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QyIGFz
IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5odGRpZ2VzdHBhcnNlciBpbXBv
cnQgSFREaWdlc3RQYXJzZXIKKworCitjbGFzcyBIVERpZ2VzdFBhcnNlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorICAgIGRlZiBhc3NlcnRFbnRyaWVzRXF1YWwoc2VsZiwgZW50cmllcywgYWRk
aXRpb25hbF9jb250ZW50PU5vbmUpOgorICAgICAgICBkaWdlc3RfZmlsZSA9IHNlbGYuZmFrZV9o
dGRpZ2VzdF9maWxlKCkKKyAgICAgICAgaWYgYWRkaXRpb25hbF9jb250ZW50IGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgZGlnZXN0X2ZpbGUuc2Vlayhwb3M9MCwgbW9kZT1vcy5TRUVLX0VORCkK
KyAgICAgICAgICAgIGRpZ2VzdF9maWxlLndyaXRlKGFkZGl0aW9uYWxfY29udGVudCkKKyAgICAg
ICAgICAgIGRpZ2VzdF9maWxlLnNlZWsocG9zPTAsIG1vZGU9b3MuU0VFS19TRVQpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZW50cmllcywgSFREaWdlc3RQYXJzZXIoZGlnZXN0X2ZpbGUpLmVu
dHJpZXMoKSkKKworICAgIGRlZiB0ZXN0X2F1dGhlbnRpY2F0ZShzZWxmKToKKyAgICAgICAgaHRk
aWdlc3QgPSBIVERpZ2VzdFBhcnNlcihzZWxmLmZha2VfaHRkaWdlc3RfZmlsZSgpKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoaHRkaWdlc3QuYXV0aGVudGljYXRlKCd1c2VyMScsICdyZWFsbSAx
JywgJ3Bhc3N3b3JkMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaHRkaWdlc3QuYXV0aGVu
dGljYXRlKCd1c2VyMicsICdyZWFsbSAyJywgJ3Bhc3N3b3JkMicpKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoaHRkaWdlc3QuYXV0aGVudGljYXRlKCd1c2VyMycsICdyZWFsbSAxJywgJ3Bhc3N3
b3JkMycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaHRkaWdlc3QuYXV0aGVudGljYXRlKCd1
c2VyMycsICdyZWFsbSAzJywgJ3Bhc3N3b3JkMycpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoaHRkaWdlc3QuYXV0aGVudGljYXRlKCd1c2VyMScsICdyZWFsbScsICdwYXNzd29yZDEnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywg
J3JlYWxtIDInLCAncGFzc3dvcmQxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaHRkaWdl
c3QuYXV0aGVudGljYXRlKCd1c2VyMicsICdyZWFsbSAyJywgJ3Bhc3N3b3JkMScpKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNlcjInLCAncmVhbG0g
MScsICdwYXNzd29yZDEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodGRpZ2VzdC5hdXRo
ZW50aWNhdGUoJycsICcnLCAnJykpCisKKyAgICBkZWYgdGVzdF9lbnRyaWVzKHNlbGYpOgorICAg
ICAgICBlbnRyaWVzID0gWworICAgICAgICAgICAgWyd1c2VyMScsICdyZWFsbSAxJywgJzM2Yjhh
YTI3ZmE1ZTkwNTEwOTVkMzdiNjE5ZjkyNzYyJ10sCisgICAgICAgICAgICBbJ3VzZXIyJywgJ3Jl
YWxtIDInLCAnMTRmODI3Njg2ZmE5Nzc3OGYwMmZlMTMxNGEzMzM3YzgnXSwKKyAgICAgICAgICAg
IFsndXNlcjMnLCAncmVhbG0gMScsICcxODE3ZmM4YTI0MTE5Y2M1N2ZiYWZjOGE2MzBlYTVhNSdd
LAorICAgICAgICAgICAgWyd1c2VyMycsICdyZWFsbSAzJywgJ2EwNWY1YTIzMzVlOWQ4N2JiZTc1
YmJlNWU1MzI0OGYwJ10sCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1
YWwoZW50cmllcykKKyAgICAgICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoZW50cmllcywgYWRk
aXRpb25hbF9jb250ZW50PScnKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgSFREaWdlc3RQYXJzZXIoU3RyaW5nSU8uU3RyaW5n
SU8oKSkuZW50cmllcygpKQorCisgICAgZGVmIHRlc3RfdG9vX2Zld19jb2xvbnMoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtdLCBhZGRpdGlvbmFsX2NvbnRlbnQ9J3Vz
ZXIxOnJlYWxtIDFcbicpCisKKyAgICBkZWYgdGVzdF90b29fbWFueV9jb2xvbnMoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtdLCBhZGRpdGlvbmFsX2NvbnRlbnQ9J3Vz
ZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1MTA5NWQzN2I2MTlmOTI3NjI6Z2FyYmFnZVxuJykK
KworICAgIGRlZiB0ZXN0X2ludmFsaWRfaGFzaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRF
bnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNlcjE6cmVhbG0gMTozNmI4YWEy
N2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2MjAwMDAwMFxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
bnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNlcjE6cmVhbG0gMTozNmI4YWEy
N2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNF
cXVhbChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3ZmE1ZTkw
NTEwOTVkMzdiNjE5ZjkyNzZ6XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVhbChb
XSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOiAzNmI4YWEyN2ZhNWU5MDUxMDk1
ZDM3YjYxOWY5Mjc2MlxuJykKKworICAgIGRlZiBmYWtlX2h0ZGlnZXN0X2ZpbGUoc2VsZik6Cisg
ICAgICAgIHJldHVybiBTdHJpbmdJTy5TdHJpbmdJTygiIiJ1c2VyMTpyZWFsbSAxOjM2YjhhYTI3
ZmE1ZTkwNTEwOTVkMzdiNjE5ZjkyNzYyCit1c2VyMjpyZWFsbSAyOjE0ZjgyNzY4NmZhOTc3Nzhm
MDJmZTEzMTRhMzMzN2M4Cit1c2VyMzpyZWFsbSAxOjE4MTdmYzhhMjQxMTljYzU3ZmJhZmM4YTYz
MGVhNWE1Cit1c2VyMzpyZWFsbSAzOmEwNWY1YTIzMzVlOWQ4N2JiZTc1YmJlNWU1MzI0OGYwCisi
IiIpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9odGRpZ2VzdHBhcnNlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRpZ2VzdHBhcnNlcl91bml0dGVz
dC5weQkocmV2aXNpb24gMTQwNDY4KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvaHRkaWdlc3RwYXJzZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDkgKzIyLDkgQEAKIAogaW1wb3J0IFN0cmluZ0lPCiBpbXBvcnQgb3MKLWltcG9y
dCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5uZXQuaHRkaWdlc3RwYXJzZXIgaW1wb3J0IEhURGlnZXN0UGFyc2VyCitmcm9tIGh0
ZGlnZXN0cGFyc2VyIGltcG9ydCBIVERpZ2VzdFBhcnNlcgogCiAKIGNsYXNzIEhURGlnZXN0UGFy
c2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC04MCwzICs4MCwxMiBAQCB1c2VyMjpyZWFs
bSAyOjE0ZjgyNzY4NmZhOTc3NzhmMDJmZTEzMTRhCiB1c2VyMzpyZWFsbSAxOjE4MTdmYzhhMjQx
MTljYzU3ZmJhZmM4YTYzMGVhNWE1CiB1c2VyMzpyZWFsbSAzOmEwNWY1YTIzMzVlOWQ4N2JiZTc1
YmJlNWU1MzI0OGYwCiAiIiIpCisKKworIyBGSVhNRTogV2Ugc2hvdWxkIHJ1biB0aGlzIGZpbGUg
YXMgcGFydCBvZiB0ZXN0LXJtIC4KKyMgVW5mb3J0dW5hdGVseSB0ZXN0LXJtICBjdXJyZW50bHkg
cmVxdWlyZXMgdGhhdCB1bml0dGVzdHMKKyMgYmUgbG9jYXRlZCBpbiBhIGRpcmVjdG9yeSB3aXRo
IGEgdmFsaWQgbW9kdWxlIG5hbWUuCisjICdidWlsZC53ZWJraXQub3JnLWNvbmZpZycgaXMgbm90
IGEgdmFsaWQgbW9kdWxlIG5hbWUgKGR1ZSB0byAnLicgYW5kICctJykKKyMgc28gZm9yIG5vdyB0
aGlzIGlzIGEgc3RhbmQtYWxvbmUgdGVzdCBoYXJuZXNzLgoraWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmcKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwkocmV2
aXNpb24gMTQxNTIzKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvbWFzdGVyLmNmZwkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQCBpbXBv
cnQgb3BlcmF0b3IKIGltcG9ydCB1cmxsaWIKIAogZnJvbSBjb21taXR0ZXJfYXV0aCBpbXBvcnQg
Q29tbWl0dGVyQXV0aAotZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCBidWlsZCBh
cyB3a2J1aWxkCitpbXBvcnQgd2tidWlsZAogCiAKIGMgPSBCdWlsZG1hc3RlckNvbmZpZyA9IHt9
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy93
a2J1aWxkLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3drYnVpbGQucHkJKHJldmlzaW9uIDE0MDQ2OCkJKGZyb20gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkLnB5OjE0MDQ2OCkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGQucHkJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworIiIiRnVuY3Rpb25zIHJlbGF0aW5nIHRvIGJ1aWxkaW5nIFdlYktpdCIi
IgorCitpbXBvcnQgcmUKKworCitkZWYgX3Nob3VsZF9maWxlX3RyaWdnZXJfYnVpbGQodGFyZ2V0
X3BsYXRmb3JtLCBmaWxlKToKKyAgICAjIFRoZSBkaXJlY3RvcmllcyBhbmQgcGF0dGVybnMgbGlz
dHMgYmVsb3cgbWFwIGRpcmVjdG9yeSBuYW1lcyBvcgorICAgICMgcmVnZXhwIHBhdHRlcm5zIHRv
IHRoZSBib3QgcGxhdGZvcm1zIGZvciB3aGljaCB0aGV5IHNob3VsZCB0cmlnZ2VyIGEKKyAgICAj
IGJ1aWxkLiBNYXBwaW5nIHRvIHRoZSBlbXB0eSBsaXN0IG1lYW5zIHRoYXQgbm8gYnVpbGRzIHNo
b3VsZCBiZQorICAgICMgdHJpZ2dlcmVkIG9uIGFueSBwbGF0Zm9ybXMuIEVhcmxpZXIgZGlyZWN0
b3JpZXMvcGF0dGVybnMgdGFrZQorICAgICMgcHJlY2VuZGVuY2Ugb3ZlciBsYXRlciBvbmVzLgor
CisgICAgIyBGSVhNRTogVGhlIHBhdHRlcm5zIGJlbG93IGhhdmUgb25seSBiZWVuIHZlcmlmaWVk
IHRvIGJlIGNvcnJlY3Qgb24KKyAgICAjIHRoZSBwbGF0Zm9ybXMgbGlzdGVkIGJlbG93LiBXZSBz
aG91bGQgaW1wbGVtZW50IHRoaXMgZm9yIG90aGVyIHBsYXRmb3JtcworICAgICMgYW5kIHN0YXJ0
IHVzaW5nIGl0IGZvciB0aGVpciBib3RzLiBTb21lb25lIGZhbWlsaWFyIHdpdGggZWFjaCBwbGF0
Zm9ybQorICAgICMgd2lsbCBoYXZlIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgcmlnaHQgc2V0IG9m
IGRpcmVjdG9yaWVzL3BhdHRlcm5zIGlzIGZvcgorICAgICMgdGhhdCBwbGF0Zm9ybS4KKyAgICBh
c3NlcnQodGFyZ2V0X3BsYXRmb3JtIGluICgibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAibWFj
LW1vdW50YWlubGlvbiIsICJtYWMtc25vd2xlb3BhcmQiLCAid2luIikpCisKKyAgICBkaXJlY3Rv
cmllcyA9IFsKKyAgICAgICAgIyBEaXJlY3RvcmllcyB0aGF0IHNob3VsZG4ndCB0cmlnZ2VyIGJ1
aWxkcyBvbiBhbnkgYm90cy4KKyAgICAgICAgKCJFeGFtcGxlcyIsIFtdKSwKKyAgICAgICAgKCJQ
ZXJmb3JtYW5jZVRlc3RzIiwgW10pLAorICAgICAgICAoIk1hbnVhbFRlc3RzIiwgW10pLAorICAg
ICAgICAoIlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sIiwgW10pLAorICAgICAgICAoIldlYnNpdGVzIiwgW10pLAorICAgICAgICAoImVm
bCIsIFtdKSwKKyAgICAgICAgKCJpcGhvbmUiLCBbXSksCisgICAgICAgICgib3BlbmdsIiwgW10p
LAorICAgICAgICAoIm9wZW50eXBlIiwgW10pLAorICAgICAgICAoIm9wZW52ZyIsIFtdKSwKKyAg
ICAgICAgKCJ3aW5jZSIsIFtdKSwKKyAgICAgICAgKCJ3eCIsIFtdKSwKKworICAgICAgICAjIERp
cmVjdG9yaWVzIHRoYXQgc2hvdWxkIHRyaWdnZXIgYnVpbGRzIG9uIG9ubHkgc29tZSBib3RzLgor
ICAgICAgICAoIlNvdXJjZS9XZWJDb3JlL2ltYWdlLWRlY29kZXJzIiwgWyJjaHJvbWl1bSJdKSwK
KyAgICAgICAgKCJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMiLCBbIm1hYyIsICJ3aW4iXSksCisg
ICAgICAgICgiY2Fpcm8iLCBbImd0ayIsICJ3aW5jYWlybyJdKSwKKyAgICAgICAgKCJjZiIsIFsi
Y2hyb21pdW0tbWFjIiwgIm1hYyIsICJxdCIsICJ3aW4iXSksCisgICAgICAgICgiY2hyb21pdW0i
LCBbImNocm9taXVtIl0pLAorICAgICAgICAoImNvY29hIiwgWyJjaHJvbWl1bS1tYWMiLCAibWFj
Il0pLAorICAgICAgICAoImN1cmwiLCBbImd0ayIsICJ3aW5jYWlybyJdKSwKKyAgICAgICAgKCJn
b2JqZWN0IiwgWyJndGsiXSksCisgICAgICAgICgiZ3B1IiwgWyJjaHJvbWl1bSIsICJtYWMiXSks
CisgICAgICAgICgiZ3N0cmVhbWVyIiwgWyJndGsiXSksCisgICAgICAgICgiZ3RrIiwgWyJndGsi
XSksCisgICAgICAgICgibWFjIiwgWyJjaHJvbWl1bS1tYWMiLCAibWFjIl0pLAorICAgICAgICAo
Im1hYy1sZW9wYXJkIiwgWyJtYWMtbGVvcGFyZCJdKSwKKyAgICAgICAgKCJtYWMtbGlvbiIsIFsi
bWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAibWFjLXNub3dsZW9wYXJkIiwgIndpbiJdKSwKKyAg
ICAgICAgKCJtYWMtc25vd2xlb3BhcmQiLCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1zbm93bGVvcGFy
ZCJdKSwKKyAgICAgICAgKCJtYWMtd2syIiwgWyJtYWMtbGlvbiIsICJtYWMtc25vd2xlb3BhcmQi
LCAibWFjLW1vdW50YWlubGlvbiIsICJ3aW4iXSksCisgICAgICAgICgib2JqYyIsIFsibWFjIl0p
LAorICAgICAgICAoInF0IiwgWyJxdCJdKSwKKyAgICAgICAgKCJza2lhIiwgWyJjaHJvbWl1bSJd
KSwKKyAgICAgICAgKCJzb3VwIiwgWyJndGsiXSksCisgICAgICAgICgidjgiLCBbImNocm9taXVt
Il0pLAorICAgICAgICAoIndpbiIsIFsiY2hyb21pdW0td2luIiwgIndpbiJdKSwKKyAgICBdCisg
ICAgcGF0dGVybnMgPSBbCisgICAgICAgICMgUGF0dGVybnMgdGhhdCBzaG91bGRuJ3QgdHJpZ2dl
ciBidWlsZHMgb24gYW55IGJvdHMuCisgICAgICAgIChyIig/Ol58LylDaGFuZ2VMb2cuKiQiLCBb
XSksCisgICAgICAgIChyIig/Ol58LylNYWtlZmlsZSQiLCBbXSksCisgICAgICAgIChyIi9BUk0i
LCBbXSksCisgICAgICAgIChyIi9DTWFrZS4qIiwgW10pLAorICAgICAgICAociIvTElDRU5TRVte
L10rJCIsIFtdKSwKKyAgICAgICAgKHIiQVJNKD86djcpP1wuKD86Y3BwfGgpJCIsIFtdKSwKKyAg
ICAgICAgKHIiTUlQU1wuKD86Y3BwfGgpJCIsIFtdKSwKKyAgICAgICAgKHIiV2luQ0VcLig/OmNw
cHxofG1tKSQiLCBbXSksCisgICAgICAgIChyIlwuKD86YmtsfG1rKSQiLCBbXSksCisKKyAgICAg
ICAgIyBQYXR0ZXJucyB0aGF0IHNob3VsZCB0cmlnZ2VyIGJ1aWxkcyBvbiBvbmx5IHNvbWUgYm90
cy4KKyAgICAgICAgKHIiKD86XnwvKUdOVW1ha2VmaWxlXC5hbSQiLCBbImd0ayJdKSwKKyAgICAg
ICAgKHIiL1x3K0Nocm9taXVtXHcqXC4oPzpjcHB8aHxtbSkkIiwgWyJjaHJvbWl1bSJdKSwKKyAg
ICAgICAgKHIiTWFjXC4oPzpjcHB8aHxtbSkkIiwgWyJtYWMiXSksCisgICAgICAgIChyIlwuKD86
dmNwcm9qfHZzcHJvcHN8c2xuKSQiLCBbIndpbiJdKSwKKyAgICAgICAgKHIiXC5leHAoPzpcLmlu
KT8kIiwgWyJtYWMiXSksCisgICAgICAgIChyIlwuZ3lwaT8iLCBbImNocm9taXVtIl0pLAorICAg
ICAgICAociJcLm9yZGVyJCIsIFsibWFjIl0pLAorICAgICAgICAociJcLnByW2lvXSQiLCBbInF0
Il0pLAorICAgICAgICAociJcLnZjcHJvai8iLCBbIndpbiJdKSwKKyAgICAgICAgKHIiXC54Y2Nv
bmZpZyQiLCBbIm1hYyJdKSwKKyAgICAgICAgKHIiXC54Y29kZXByb2ovIiwgWyJtYWMiXSksCisg
ICAgXQorCisgICAgYmFzZV9wbGF0Zm9ybSA9IHRhcmdldF9wbGF0Zm9ybS5zcGxpdCgiLSIpWzBd
CisKKyAgICAjIFNlZSBpZiB0aGUgZmlsZSBpcyBpbiBvbmUgb2YgdGhlIGtub3duIGRpcmVjdG9y
aWVzLgorICAgIGZvciBkaXJlY3RvcnksIHBsYXRmb3JtcyBpbiBkaXJlY3RvcmllczoKKyAgICAg
ICAgaWYgcmUuc2VhcmNoKHIiKD86XnwvKSVzLyIgJSBkaXJlY3RvcnksIGZpbGUpOgorICAgICAg
ICAgICAgcmV0dXJuIHRhcmdldF9wbGF0Zm9ybSBpbiBwbGF0Zm9ybXMgb3IgYmFzZV9wbGF0Zm9y
bSBpbiBwbGF0Zm9ybXMKKworICAgICMgU2VlIGlmIHRoZSBmaWxlIG1hdGNoZXMgYSBrbm93biBw
YXR0ZXJuLgorICAgIGZvciBwYXR0ZXJuLCBwbGF0Zm9ybXMgaW4gcGF0dGVybnM6CisgICAgICAg
IGlmIHJlLnNlYXJjaChwYXR0ZXJuLCBmaWxlKToKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRf
cGxhdGZvcm0gaW4gcGxhdGZvcm1zIG9yIGJhc2VfcGxhdGZvcm0gaW4gcGxhdGZvcm1zCisKKyAg
ICAjIFNlZSBpZiB0aGUgZmlsZSBpcyBhIHBsYXRmb3JtLXNwZWNpZmljIHRlc3QgcmVzdWx0Lgor
ICAgIG1hdGNoID0gcmUubWF0Y2goIkxheW91dFRlc3RzL3BsYXRmb3JtLyg/UDxwbGF0Zm9ybT5b
Xi9dKykvIiwgZmlsZSkKKyAgICBpZiBtYXRjaDoKKyAgICAgICAgIyBTZWUgaWYgdGhlIGZpbGUg
aXMgYSB0ZXN0IHJlc3VsdCBmb3IgdGhpcyBwbGF0Zm9ybSwgb3VyIGJhc2UKKyAgICAgICAgIyBw
bGF0Zm9ybSwgb3Igb25lIG9mIG91ciBzdWItcGxhdGZvcm1zLgorICAgICAgICByZXR1cm4gbWF0
Y2guZ3JvdXAoInBsYXRmb3JtIikgaW4gKHRhcmdldF9wbGF0Zm9ybSwgYmFzZV9wbGF0Zm9ybSkg
b3IgbWF0Y2guZ3JvdXAoInBsYXRmb3JtIikuc3RhcnRzd2l0aCgiJXMtIiAlIHRhcmdldF9wbGF0
Zm9ybSkKKworICAgICMgVGhlIGZpbGUgaXNuJ3Qgb25lIHdlIGtub3cgYWJvdXQgc3BlY2lmaWNh
bGx5LCBzbyB3ZSBzaG91bGQgYXNzdW1lIHdlCisgICAgIyBoYXZlIHRvIGJ1aWxkLgorICAgIHJl
dHVybiBUcnVlCisKKworZGVmIHNob3VsZF9idWlsZCh0YXJnZXRfcGxhdGZvcm0sIGNoYW5nZWRf
ZmlsZXMpOgorICAgICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhbmdlZCBmaWxlcyBhZmZlY3Qg
dGhlIGdpdmVuIHBsYXRmb3JtLCBhbmQKKyAgICB0aHVzIGEgYnVpbGQgc2hvdWxkIGJlIHBlcmZv
cm1lZC4gdGFyZ2V0X3BsYXRmb3JtIHNob3VsZCBiZSBvbmUgb2YgdGhlCisgICAgcGxhdGZvcm1z
IHVzZWQgaW4gdGhlIGJ1aWxkLndlYmtpdC5vcmcgbWFzdGVyJ3MgY29uZmlnLmpzb24gZmlsZS4i
IiIKKyAgICByZXR1cm4gYW55KF9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxkKHRhcmdldF9wbGF0
Zm9ybSwgZmlsZSkgZm9yIGZpbGUgaW4gY2hhbmdlZF9maWxlcykKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvd2tidWlsZF91bml0dGVzdC5weQkocmV2aXNpb24gMTQwNDY4KQkoZnJvbSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGRfdW5pdHRlc3QucHk6MTQwNDY4KQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvd2tidWls
ZF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisjIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRl
c3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCBidWlsZAorCisKK2NsYXNz
IFNob3VsZEJ1aWxkVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgX3Nob3VsZF9idWlsZF90
ZXN0cyA9IFsKKyAgICAgICAgKFsiQ2hhbmdlTG9nIiwgIlNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyIsICJTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2ctMjAxMS0wMi0xMSJdLCBbXSksCisgICAgICAg
IChbIkdOVW1ha2VmaWxlLmFtIiwgIlNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIl0sIFsi
Z3RrIl0pLAorICAgICAgICAoWyJXZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvZm9vIiwgIlNvdXJj
ZS9XZWJDb3JlL2JhciJdLCBbIioiXSksCisgICAgICAgIChbIldlYnNpdGVzL2J1Z3Mud2Via2l0
Lm9yZy9mb28iXSwgW10pLAorICAgICAgICAoWyJTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL2ZvbyJdLCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgICJt
YWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCJdKSwKKyAgICAgICAgKFsiU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9mb28iLCAiU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIudmNwcm9qIiwgIlNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC5zbG4iLCAi
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyQ29t
bW9uLnZzcHJvcHMiXSwgWyJ3aW4iXSksCisgICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mb28iLCAiU291cmNlL1dlYkNvcmUvYmFyIl0sIFsiKiJdKSwKKyAgICAgICAgKFsiTGF5
b3V0VGVzdHMvZm9vIl0sIFsiKiJdKSwKKyAgICAgICAgKFsiTGF5b3V0VGVzdHMvY2FudmFzL3Bo
aWxpcC90ZXN0cy9zaXplLmF0dHJpYnV0ZXMucGFyc2UuZXhwLWV4cGVjdGVkLnR4dCIsICJMYXlv
dXRUZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzL3NpemUuYXR0cmlidXRlcy5wYXJzZS5leHAuaHRt
bCJdLCBbIioiXSksCisgICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxp
bnV4L2ZvbyJdLCBbImNocm9taXVtLWxpbnV4Il0pLAorICAgICAgICAoWyJMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9jb21wYWN0LzAwMS1leHBlY3RlZC50eHQiXSwgWyJj
aHJvbWl1bS13aW4iXSksCisgICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9w
YXJkL2ZvbyJdLCBbIm1hYy1sZW9wYXJkIl0pLAorICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtbGlvbi9mb28iXSwgWyJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICJtYWMtc25v
d2xlb3BhcmQiLCAid2luIl0pLAorICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
c25vd2xlb3BhcmQvZm9vIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLXNub3dsZW9wYXJkIl0pLAor
ICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQiXSwgWyJtYWMt
bGlvbiIsICAibWFjLW1vdW50YWlubGlvbiIsICJtYWMtc25vd2xlb3BhcmQiLCAid2luIl0pLAor
ICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZm9vIl0sIFsibWFjLWxlb3BhcmQi
LCAibWFjLWxpb24iLCAibWFjLW1vdW50YWlubGlvbiIsICJtYWMtc25vd2xlb3BhcmQiLCAid2lu
Il0pLAorICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4teHAvZm9vIl0sIFsid2lu
Il0pLAorICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4td2syL2ZvbyJdLCBbIndp
biJdKSwKKyAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2ZvbyJdLCBbIndpbiJd
KSwKKyAgICAgICAgKFsiU291cmNlL1dlYkNvcmUuZXhwLmluIiwgIlNvdXJjZS9XZWJLaXQvbWFj
L1dlYktpdC5leHAiXSwgWyJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICAibWFjLW1vdW50YWlu
bGlvbiIsICJtYWMtc25vd2xlb3BhcmQiXSksCisgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL21h
Yy9mb28iXSwgWyJjaHJvbWl1bS1tYWMiLCAibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAgIm1h
Yy1tb3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIl0pLAorICAgICAgICAoWyJTb3VyY2Uv
V2ViQ29yZS93aW4vZm9vIl0sIFsiY2hyb21pdW0td2luIiwgIndpbiJdKSwKKyAgICAgICAgKFsi
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2ZvbyJdLCBbIm1hYy1sZW9wYXJk
IiwgIm1hYy1saW9uIiwgICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCJdKSwK
KyAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL3dpbi9mb28iXSwg
W10pLAorICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0iLCAiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgiXSwgWyJtYWMt
bGVvcGFyZCIsICJtYWMtbGlvbiIsICAibWFjLW1vdW50YWlubGlvbiIsICJtYWMtc25vd2xlb3Bh
cmQiXSksCisgICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtRGVmYXVsdC5oIl0sIFsiY2hyb21pdW0tbGludXgiXSksCisgICAgICAgIChbIlNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbkNFLmgiXSwgW10pLAorICAgICAgICAo
WyJUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9MZWFrc1ZpZXdlci9MZWFrc1ZpZXdlci5qcyJdLCBbXSksCisgICAgXQorCisgICAgZGVm
IHRlc3Rfc2hvdWxkX2J1aWxkKHNlbGYpOgorICAgICAgICBmb3IgZmlsZXMsIHBsYXRmb3JtcyBp
biBzZWxmLl9zaG91bGRfYnVpbGRfdGVzdHM6CisgICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91
bGQgdGVzdCBtb3JlIHBsYXRmb3JtcyBoZXJlIG9uY2UKKyAgICAgICAgICAgICMgYnVpbGQuX3No
b3VsZF9maWxlX3RyaWdnZXJfYnVpbGQgaXMgaW1wbGVtZW50ZWQgZm9yIHRoZW0uCisgICAgICAg
ICAgICBmb3IgcGxhdGZvcm0gaW4gWyJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICAibWFjLW1v
dW50YWlubGlvbiIsICJtYWMtc25vd2xlb3BhcmQiLCAid2luIl06CisgICAgICAgICAgICAgICAg
c2hvdWxkX2J1aWxkID0gcGxhdGZvcm0gaW4gcGxhdGZvcm1zIG9yICIqIiBpbiBwbGF0Zm9ybXMK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkLnNob3VsZF9idWlsZChwbGF0
Zm9ybSwgZmlsZXMpLCBzaG91bGRfYnVpbGQsICIlcyBzaG91bGQlcyBoYXZlIGJ1aWx0IGJ1dCBk
aWQlcyAoZmlsZXM6ICVzKSIgJSAocGxhdGZvcm0sICIiIGlmIHNob3VsZF9idWlsZCBlbHNlICJu
J3QiLCAibid0IiBpZiBzaG91bGRfYnVpbGQgZWxzZSAiIiwgc3RyKGZpbGVzKSkpCkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE0MDQ2OCkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGRf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDkgQEAKICMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5p
dHRlc3QyIGFzIHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQg
YnVpbGQKK2ltcG9ydCB3a2J1aWxkCiAKIAogY2xhc3MgU2hvdWxkQnVpbGRUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKQEAgLTYwLDcgKzYwLDE1IEBAIGNsYXNzIFNob3VsZEJ1aWxkVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSkKICAgICBkZWYgdGVzdF9zaG91bGRfYnVpbGQoc2VsZik6CiAgICAgICAg
IGZvciBmaWxlcywgcGxhdGZvcm1zIGluIHNlbGYuX3Nob3VsZF9idWlsZF90ZXN0czoKICAgICAg
ICAgICAgICMgRklYTUU6IFdlIHNob3VsZCB0ZXN0IG1vcmUgcGxhdGZvcm1zIGhlcmUgb25jZQot
ICAgICAgICAgICAgIyBidWlsZC5fc2hvdWxkX2ZpbGVfdHJpZ2dlcl9idWlsZCBpcyBpbXBsZW1l
bnRlZCBmb3IgdGhlbS4KKyAgICAgICAgICAgICMgd2tidWlsZC5fc2hvdWxkX2ZpbGVfdHJpZ2dl
cl9idWlsZCBpcyBpbXBsZW1lbnRlZCBmb3IgdGhlbS4KICAgICAgICAgICAgIGZvciBwbGF0Zm9y
bSBpbiBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgICJtYWMtbW91bnRhaW5saW9uIiwgIm1h
Yy1zbm93bGVvcGFyZCIsICJ3aW4iXToKICAgICAgICAgICAgICAgICBzaG91bGRfYnVpbGQgPSBw
bGF0Zm9ybSBpbiBwbGF0Zm9ybXMgb3IgIioiIGluIHBsYXRmb3JtcwotICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGQuc2hvdWxkX2J1aWxkKHBsYXRmb3JtLCBmaWxlcyksIHNo
b3VsZF9idWlsZCwgIiVzIHNob3VsZCVzIGhhdmUgYnVpbHQgYnV0IGRpZCVzIChmaWxlczogJXMp
IiAlIChwbGF0Zm9ybSwgIiIgaWYgc2hvdWxkX2J1aWxkIGVsc2UgIm4ndCIsICJuJ3QiIGlmIHNo
b3VsZF9idWlsZCBlbHNlICIiLCBzdHIoZmlsZXMpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHdrYnVpbGQuc2hvdWxkX2J1aWxkKHBsYXRmb3JtLCBmaWxlcyksIHNob3VsZF9i
dWlsZCwgIiVzIHNob3VsZCVzIGhhdmUgYnVpbHQgYnV0IGRpZCVzIChmaWxlczogJXMpIiAlIChw
bGF0Zm9ybSwgIiIgaWYgc2hvdWxkX2J1aWxkIGVsc2UgIm4ndCIsICJuJ3QiIGlmIHNob3VsZF9i
dWlsZCBlbHNlICIiLCBzdHIoZmlsZXMpKSkKKworIyBGSVhNRTogV2Ugc2hvdWxkIHJ1biB0aGlz
IGZpbGUgYXMgcGFydCBvZiB0ZXN0LXJtIC4KKyMgVW5mb3J0dW5hdGVseSB0ZXN0LXJtICBjdXJy
ZW50bHkgcmVxdWlyZXMgdGhhdCB1bml0dGVzdHMKKyMgYmUgbG9jYXRlZCBpbiBhIGRpcmVjdG9y
eSB3aXRoIGEgdmFsaWQgbW9kdWxlIG5hbWUuCisjICdidWlsZC53ZWJraXQub3JnLWNvbmZpZycg
aXMgbm90IGEgdmFsaWQgbW9kdWxlIG5hbWUgKGR1ZSB0byAnLicgYW5kICctJykKKyMgc28gZm9y
IG5vdyB0aGlzIGlzIGEgc3RhbmQtYWxvbmUgdGVzdCBoYXJuZXNzLgoraWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy9idWlsZC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvYnVpbGQucHkJKHJldmlzaW9uIDE0MTUyMykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9idWlsZC5weQkod29ya2luZyBjb3B5
KQpAQCAtMSwxMzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiJGdW5jdGlvbnMgcmVsYXRpbmcgdG8gYnVpbGRpbmcgV2ViS2l0IiIiCi0KLWltcG9y
dCByZQotCi0KLWRlZiBfc2hvdWxkX2ZpbGVfdHJpZ2dlcl9idWlsZCh0YXJnZXRfcGxhdGZvcm0s
IGZpbGUpOgotICAgICMgVGhlIGRpcmVjdG9yaWVzIGFuZCBwYXR0ZXJucyBsaXN0cyBiZWxvdyBt
YXAgZGlyZWN0b3J5IG5hbWVzIG9yCi0gICAgIyByZWdleHAgcGF0dGVybnMgdG8gdGhlIGJvdCBw
bGF0Zm9ybXMgZm9yIHdoaWNoIHRoZXkgc2hvdWxkIHRyaWdnZXIgYQotICAgICMgYnVpbGQuIE1h
cHBpbmcgdG8gdGhlIGVtcHR5IGxpc3QgbWVhbnMgdGhhdCBubyBidWlsZHMgc2hvdWxkIGJlCi0g
ICAgIyB0cmlnZ2VyZWQgb24gYW55IHBsYXRmb3Jtcy4gRWFybGllciBkaXJlY3Rvcmllcy9wYXR0
ZXJucyB0YWtlCi0gICAgIyBwcmVjZW5kZW5jZSBvdmVyIGxhdGVyIG9uZXMuCi0KLSAgICAjIEZJ
WE1FOiBUaGUgcGF0dGVybnMgYmVsb3cgaGF2ZSBvbmx5IGJlZW4gdmVyaWZpZWQgdG8gYmUgY29y
cmVjdCBvbgotICAgICMgdGhlIHBsYXRmb3JtcyBsaXN0ZWQgYmVsb3cuIFdlIHNob3VsZCBpbXBs
ZW1lbnQgdGhpcyBmb3Igb3RoZXIgcGxhdGZvcm1zCi0gICAgIyBhbmQgc3RhcnQgdXNpbmcgaXQg
Zm9yIHRoZWlyIGJvdHMuIFNvbWVvbmUgZmFtaWxpYXIgd2l0aCBlYWNoIHBsYXRmb3JtCi0gICAg
IyB3aWxsIGhhdmUgdG8gZmlndXJlIG91dCB3aGF0IHRoZSByaWdodCBzZXQgb2YgZGlyZWN0b3Jp
ZXMvcGF0dGVybnMgaXMgZm9yCi0gICAgIyB0aGF0IHBsYXRmb3JtLgotICAgIGFzc2VydCh0YXJn
ZXRfcGxhdGZvcm0gaW4gKCJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICJtYWMtbW91bnRhaW5s
aW9uIiwgIm1hYy1zbm93bGVvcGFyZCIsICJ3aW4iKSkKLQotICAgIGRpcmVjdG9yaWVzID0gWwot
ICAgICAgICAjIERpcmVjdG9yaWVzIHRoYXQgc2hvdWxkbid0IHRyaWdnZXIgYnVpbGRzIG9uIGFu
eSBib3RzLgotICAgICAgICAoIkV4YW1wbGVzIiwgW10pLAotICAgICAgICAoIlBlcmZvcm1hbmNl
VGVzdHMiLCBbXSksCi0gICAgICAgICgiTWFudWFsVGVzdHMiLCBbXSksCi0gICAgICAgICgiVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwi
LCBbXSksCi0gICAgICAgICgiV2Vic2l0ZXMiLCBbXSksCi0gICAgICAgICgiZWZsIiwgW10pLAot
ICAgICAgICAoImlwaG9uZSIsIFtdKSwKLSAgICAgICAgKCJvcGVuZ2wiLCBbXSksCi0gICAgICAg
ICgib3BlbnR5cGUiLCBbXSksCi0gICAgICAgICgib3BlbnZnIiwgW10pLAotICAgICAgICAoIndp
bmNlIiwgW10pLAotICAgICAgICAoInd4IiwgW10pLAotCi0gICAgICAgICMgRGlyZWN0b3JpZXMg
dGhhdCBzaG91bGQgdHJpZ2dlciBidWlsZHMgb24gb25seSBzb21lIGJvdHMuCi0gICAgICAgICgi
U291cmNlL1dlYkNvcmUvaW1hZ2UtZGVjb2RlcnMiLCBbImNocm9taXVtIl0pLAotICAgICAgICAo
IkxheW91dFRlc3RzL3BsYXRmb3JtL21hYyIsIFsibWFjIiwgIndpbiJdKSwKLSAgICAgICAgKCJj
YWlybyIsIFsiZ3RrIiwgIndpbmNhaXJvIl0pLAotICAgICAgICAoImNmIiwgWyJjaHJvbWl1bS1t
YWMiLCAibWFjIiwgInF0IiwgIndpbiJdKSwKLSAgICAgICAgKCJjaHJvbWl1bSIsIFsiY2hyb21p
dW0iXSksCi0gICAgICAgICgiY29jb2EiLCBbImNocm9taXVtLW1hYyIsICJtYWMiXSksCi0gICAg
ICAgICgiY3VybCIsIFsiZ3RrIiwgIndpbmNhaXJvIl0pLAotICAgICAgICAoImdvYmplY3QiLCBb
Imd0ayJdKSwKLSAgICAgICAgKCJncHUiLCBbImNocm9taXVtIiwgIm1hYyJdKSwKLSAgICAgICAg
KCJnc3RyZWFtZXIiLCBbImd0ayJdKSwKLSAgICAgICAgKCJndGsiLCBbImd0ayJdKSwKLSAgICAg
ICAgKCJtYWMiLCBbImNocm9taXVtLW1hYyIsICJtYWMiXSksCi0gICAgICAgICgibWFjLWxlb3Bh
cmQiLCBbIm1hYy1sZW9wYXJkIl0pLAotICAgICAgICAoIm1hYy1saW9uIiwgWyJtYWMtbGVvcGFy
ZCIsICJtYWMtbGlvbiIsICJtYWMtc25vd2xlb3BhcmQiLCAid2luIl0pLAotICAgICAgICAoIm1h
Yy1zbm93bGVvcGFyZCIsIFsibWFjLWxlb3BhcmQiLCAibWFjLXNub3dsZW9wYXJkIl0pLAotICAg
ICAgICAoIm1hYy13azIiLCBbIm1hYy1saW9uIiwgIm1hYy1zbm93bGVvcGFyZCIsICJtYWMtbW91
bnRhaW5saW9uIiwgIndpbiJdKSwKLSAgICAgICAgKCJvYmpjIiwgWyJtYWMiXSksCi0gICAgICAg
ICgicXQiLCBbInF0Il0pLAotICAgICAgICAoInNraWEiLCBbImNocm9taXVtIl0pLAotICAgICAg
ICAoInNvdXAiLCBbImd0ayJdKSwKLSAgICAgICAgKCJ2OCIsIFsiY2hyb21pdW0iXSksCi0gICAg
ICAgICgid2luIiwgWyJjaHJvbWl1bS13aW4iLCAid2luIl0pLAotICAgIF0KLSAgICBwYXR0ZXJu
cyA9IFsKLSAgICAgICAgIyBQYXR0ZXJucyB0aGF0IHNob3VsZG4ndCB0cmlnZ2VyIGJ1aWxkcyBv
biBhbnkgYm90cy4KLSAgICAgICAgKHIiKD86XnwvKUNoYW5nZUxvZy4qJCIsIFtdKSwKLSAgICAg
ICAgKHIiKD86XnwvKU1ha2VmaWxlJCIsIFtdKSwKLSAgICAgICAgKHIiL0FSTSIsIFtdKSwKLSAg
ICAgICAgKHIiL0NNYWtlLioiLCBbXSksCi0gICAgICAgIChyIi9MSUNFTlNFW14vXSskIiwgW10p
LAotICAgICAgICAociJBUk0oPzp2Nyk/XC4oPzpjcHB8aCkkIiwgW10pLAotICAgICAgICAociJN
SVBTXC4oPzpjcHB8aCkkIiwgW10pLAotICAgICAgICAociJXaW5DRVwuKD86Y3BwfGh8bW0pJCIs
IFtdKSwKLSAgICAgICAgKHIiXC4oPzpia2x8bWspJCIsIFtdKSwKLQotICAgICAgICAjIFBhdHRl
cm5zIHRoYXQgc2hvdWxkIHRyaWdnZXIgYnVpbGRzIG9uIG9ubHkgc29tZSBib3RzLgotICAgICAg
ICAociIoPzpefC8pR05VbWFrZWZpbGVcLmFtJCIsIFsiZ3RrIl0pLAotICAgICAgICAociIvXHcr
Q2hyb21pdW1cdypcLig/OmNwcHxofG1tKSQiLCBbImNocm9taXVtIl0pLAotICAgICAgICAociJN
YWNcLig/OmNwcHxofG1tKSQiLCBbIm1hYyJdKSwKLSAgICAgICAgKHIiXC4oPzp2Y3Byb2p8dnNw
cm9wc3xzbG4pJCIsIFsid2luIl0pLAotICAgICAgICAociJcLmV4cCg/OlwuaW4pPyQiLCBbIm1h
YyJdKSwKLSAgICAgICAgKHIiXC5neXBpPyIsIFsiY2hyb21pdW0iXSksCi0gICAgICAgIChyIlwu
b3JkZXIkIiwgWyJtYWMiXSksCi0gICAgICAgIChyIlwucHJbaW9dJCIsIFsicXQiXSksCi0gICAg
ICAgIChyIlwudmNwcm9qLyIsIFsid2luIl0pLAotICAgICAgICAociJcLnhjY29uZmlnJCIsIFsi
bWFjIl0pLAotICAgICAgICAociJcLnhjb2RlcHJvai8iLCBbIm1hYyJdKSwKLSAgICBdCi0KLSAg
ICBiYXNlX3BsYXRmb3JtID0gdGFyZ2V0X3BsYXRmb3JtLnNwbGl0KCItIilbMF0KLQotICAgICMg
U2VlIGlmIHRoZSBmaWxlIGlzIGluIG9uZSBvZiB0aGUga25vd24gZGlyZWN0b3JpZXMuCi0gICAg
Zm9yIGRpcmVjdG9yeSwgcGxhdGZvcm1zIGluIGRpcmVjdG9yaWVzOgotICAgICAgICBpZiByZS5z
ZWFyY2gociIoPzpefC8pJXMvIiAlIGRpcmVjdG9yeSwgZmlsZSk6Ci0gICAgICAgICAgICByZXR1
cm4gdGFyZ2V0X3BsYXRmb3JtIGluIHBsYXRmb3JtcyBvciBiYXNlX3BsYXRmb3JtIGluIHBsYXRm
b3JtcwotCi0gICAgIyBTZWUgaWYgdGhlIGZpbGUgbWF0Y2hlcyBhIGtub3duIHBhdHRlcm4uCi0g
ICAgZm9yIHBhdHRlcm4sIHBsYXRmb3JtcyBpbiBwYXR0ZXJuczoKLSAgICAgICAgaWYgcmUuc2Vh
cmNoKHBhdHRlcm4sIGZpbGUpOgotICAgICAgICAgICAgcmV0dXJuIHRhcmdldF9wbGF0Zm9ybSBp
biBwbGF0Zm9ybXMgb3IgYmFzZV9wbGF0Zm9ybSBpbiBwbGF0Zm9ybXMKLQotICAgICMgU2VlIGlm
IHRoZSBmaWxlIGlzIGEgcGxhdGZvcm0tc3BlY2lmaWMgdGVzdCByZXN1bHQuCi0gICAgbWF0Y2gg
PSByZS5tYXRjaCgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vKD9QPHBsYXRmb3JtPlteL10rKS8iLCBm
aWxlKQotICAgIGlmIG1hdGNoOgotICAgICAgICAjIFNlZSBpZiB0aGUgZmlsZSBpcyBhIHRlc3Qg
cmVzdWx0IGZvciB0aGlzIHBsYXRmb3JtLCBvdXIgYmFzZQotICAgICAgICAjIHBsYXRmb3JtLCBv
ciBvbmUgb2Ygb3VyIHN1Yi1wbGF0Zm9ybXMuCi0gICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgi
cGxhdGZvcm0iKSBpbiAodGFyZ2V0X3BsYXRmb3JtLCBiYXNlX3BsYXRmb3JtKSBvciBtYXRjaC5n
cm91cCgicGxhdGZvcm0iKS5zdGFydHN3aXRoKCIlcy0iICUgdGFyZ2V0X3BsYXRmb3JtKQotCi0g
ICAgIyBUaGUgZmlsZSBpc24ndCBvbmUgd2Uga25vdyBhYm91dCBzcGVjaWZpY2FsbHksIHNvIHdl
IHNob3VsZCBhc3N1bWUgd2UKLSAgICAjIGhhdmUgdG8gYnVpbGQuCi0gICAgcmV0dXJuIFRydWUK
LQotCi1kZWYgc2hvdWxkX2J1aWxkKHRhcmdldF9wbGF0Zm9ybSwgY2hhbmdlZF9maWxlcyk6Ci0g
ICAgIiIiUmV0dXJucyB0cnVlIGlmIHRoZSBjaGFuZ2VkIGZpbGVzIGFmZmVjdCB0aGUgZ2l2ZW4g
cGxhdGZvcm0sIGFuZAotICAgIHRodXMgYSBidWlsZCBzaG91bGQgYmUgcGVyZm9ybWVkLiB0YXJn
ZXRfcGxhdGZvcm0gc2hvdWxkIGJlIG9uZSBvZiB0aGUKLSAgICBwbGF0Zm9ybXMgdXNlZCBpbiB0
aGUgYnVpbGQud2Via2l0Lm9yZyBtYXN0ZXIncyBjb25maWcuanNvbiBmaWxlLiIiIgotICAgIHJl
dHVybiBhbnkoX3Nob3VsZF9maWxlX3RyaWdnZXJfYnVpbGQodGFyZ2V0X3BsYXRmb3JtLCBmaWxl
KSBmb3IgZmlsZSBpbiBjaGFuZ2VkX2ZpbGVzKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY29uZmlnL2J1aWxkX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9idWlsZF91bml0dGVzdC5weQkocmV2aXNpb24g
MTQxNTIzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2J1aWxkX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDY2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMg
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHVuaXR0ZXN0MiBhcyB1bml0dGVzdAot
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IGJ1aWxkCi0KLQotY2xhc3MgU2hv
dWxkQnVpbGRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBfc2hvdWxkX2J1aWxkX3Rlc3Rz
ID0gWwotICAgICAgICAoWyJDaGFuZ2VMb2ciLCAiU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIiwg
IlNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZy0yMDExLTAyLTExIl0sIFtdKSwKLSAgICAgICAgKFsi
R05VbWFrZWZpbGUuYW0iLCAiU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0iXSwgWyJndGsi
XSksCi0gICAgICAgIChbIldlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9mb28iLCAiU291cmNlL1dl
YkNvcmUvYmFyIl0sIFsiKiJdKSwKLSAgICAgICAgKFsiV2Vic2l0ZXMvYnVncy53ZWJraXQub3Jn
L2ZvbyJdLCBbXSksCi0gICAgICAgIChbIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovZm9vIl0sIFsibWFjLWxlb3BhcmQiLCAibWFjLWxpb24iLCAgIm1hYy1t
b3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIl0pLAotICAgICAgICAoWyJTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL2ZvbyIsICJTb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oiLCAiU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnNsbiIsICJUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXJDb21tb24u
dnNwcm9wcyJdLCBbIndpbiJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2ZvbyIsICJTb3VyY2UvV2ViQ29yZS9iYXIiXSwgWyIqIl0pLAotICAgICAgICAoWyJMYXlvdXRU
ZXN0cy9mb28iXSwgWyIqIl0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9jYW52YXMvcGhpbGlw
L3Rlc3RzL3NpemUuYXR0cmlidXRlcy5wYXJzZS5leHAtZXhwZWN0ZWQudHh0IiwgIkxheW91dFRl
c3RzL2NhbnZhcy9waGlsaXAvdGVzdHMvc2l6ZS5hdHRyaWJ1dGVzLnBhcnNlLmV4cC5odG1sIl0s
IFsiKiJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgv
Zm9vIl0sIFsiY2hyb21pdW0tbGludXgiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLXdpbi9mYXN0L2NvbXBhY3QvMDAxLWV4cGVjdGVkLnR4dCJdLCBbImNocm9t
aXVtLXdpbiJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQv
Zm9vIl0sIFsibWFjLWxlb3BhcmQiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1saW9uL2ZvbyJdLCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgIm1hYy1zbm93bGVv
cGFyZCIsICJ3aW4iXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93
bGVvcGFyZC9mb28iXSwgWyJtYWMtbGVvcGFyZCIsICJtYWMtc25vd2xlb3BhcmQiXSksCi0gICAg
ICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZCJdLCBbIm1hYy1saW9u
IiwgICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCIsICJ3aW4iXSksCi0gICAg
ICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb28iXSwgWyJtYWMtbGVvcGFyZCIsICJt
YWMtbGlvbiIsICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCIsICJ3aW4iXSks
Ci0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL3dpbi14cC9mb28iXSwgWyJ3aW4iXSks
Ci0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL3dpbi13azIvZm9vIl0sIFsid2luIl0p
LAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZm9vIl0sIFsid2luIl0pLAot
ICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS5leHAuaW4iLCAiU291cmNlL1dlYktpdC9tYWMvV2Vi
S2l0LmV4cCJdLCBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgICJtYWMtbW91bnRhaW5saW9u
IiwgIm1hYy1zbm93bGVvcGFyZCJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvbWFjL2Zv
byJdLCBbImNocm9taXVtLW1hYyIsICJtYWMtbGVvcGFyZCIsICJtYWMtbGlvbiIsICAibWFjLW1v
dW50YWlubGlvbiIsICJtYWMtc25vd2xlb3BhcmQiXSksCi0gICAgICAgIChbIlNvdXJjZS9XZWJD
b3JlL3dpbi9mb28iXSwgWyJjaHJvbWl1bS13aW4iLCAid2luIl0pLAotICAgICAgICAoWyJTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvZm9vIl0sIFsibWFjLWxlb3BhcmQiLCAi
bWFjLWxpb24iLCAgIm1hYy1tb3VudGFpbmxpb24iLCAibWFjLXNub3dsZW9wYXJkIl0pLAotICAg
ICAgICAoWyJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC93eGNvZGUvd2luL2ZvbyJdLCBbXSks
Ci0gICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSIs
ICJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCJdLCBbIm1hYy1sZW9w
YXJkIiwgIm1hYy1saW9uIiwgICJtYWMtbW91bnRhaW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCJd
KSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1EZWZhdWx0LmgiXSwgWyJjaHJvbWl1bS1saW51eCJdKSwKLSAgICAgICAgKFsiU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luQ0UuaCJdLCBbXSksCi0gICAgICAgIChbIlRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzIl0sIFtdKSwKLSAgICBdCi0KLSAgICBkZWYgdGVz
dF9zaG91bGRfYnVpbGQoc2VsZik6Ci0gICAgICAgIGZvciBmaWxlcywgcGxhdGZvcm1zIGluIHNl
bGYuX3Nob3VsZF9idWlsZF90ZXN0czoKLSAgICAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCB0
ZXN0IG1vcmUgcGxhdGZvcm1zIGhlcmUgb25jZQotICAgICAgICAgICAgIyBidWlsZC5fc2hvdWxk
X2ZpbGVfdHJpZ2dlcl9idWlsZCBpcyBpbXBsZW1lbnRlZCBmb3IgdGhlbS4KLSAgICAgICAgICAg
IGZvciBwbGF0Zm9ybSBpbiBbIm1hYy1sZW9wYXJkIiwgIm1hYy1saW9uIiwgICJtYWMtbW91bnRh
aW5saW9uIiwgIm1hYy1zbm93bGVvcGFyZCIsICJ3aW4iXToKLSAgICAgICAgICAgICAgICBzaG91
bGRfYnVpbGQgPSBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXMgb3IgIioiIGluIHBsYXRmb3JtcwotICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGQuc2hvdWxkX2J1aWxkKHBsYXRmb3Jt
LCBmaWxlcyksIHNob3VsZF9idWlsZCwgIiVzIHNob3VsZCVzIGhhdmUgYnVpbHQgYnV0IGRpZCVz
IChmaWxlczogJXMpIiAlIChwbGF0Zm9ybSwgIiIgaWYgc2hvdWxkX2J1aWxkIGVsc2UgIm4ndCIs
ICJuJ3QiIGlmIHNob3VsZF9idWlsZCBlbHNlICIiLCBzdHIoZmlsZXMpKSkKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9odGRpZ2VzdHBhcnNlci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaHRkaWdlc3RwYXJzZXIucHkJ
KHJldmlzaW9uIDE0MTUyMykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9o
dGRpZ2VzdHBhcnNlci5weQkod29ya2luZyBjb3B5KQpAQCAtMSw1NCArMCwwIEBACi0jIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiImh0ZGlnZXN0cGFyc2VyIC0gYSBw
YXJzZXIgZm9yIGh0ZGlnZXN0IGZpbGVzIiIiCi0KLWltcG9ydCBoYXNobGliCi1pbXBvcnQgc3Ry
aW5nCi0KLQotY2xhc3MgSFREaWdlc3RQYXJzZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgZGlnZXN0X2ZpbGUpOgotICAgICAgICBzZWxmLl9lbnRyaWVzID0gc2VsZi5wYXJzZV9m
aWxlKGRpZ2VzdF9maWxlKQotCi0gICAgZGVmIGF1dGhlbnRpY2F0ZShzZWxmLCB1c2VybmFtZSwg
cmVhbG0sIHBhc3N3b3JkKToKLSAgICAgICAgaGFzaGVkX3Bhc3N3b3JkID0gaGFzaGxpYi5tZDUo
JzonLmpvaW4oKHVzZXJuYW1lLCByZWFsbSwgcGFzc3dvcmQpKSkuaGV4ZGlnZXN0KCkKLSAgICAg
ICAgcmV0dXJuIFt1c2VybmFtZSwgcmVhbG0sIGhhc2hlZF9wYXNzd29yZF0gaW4gc2VsZi5lbnRy
aWVzKCkKLQotICAgIGRlZiBlbnRyaWVzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZW50
cmllcwotCi0gICAgZGVmIHBhcnNlX2ZpbGUoc2VsZiwgZGlnZXN0X2ZpbGUpOgotICAgICAgICBl
bnRyaWVzID0gW2xpbmUucnN0cmlwKCkuc3BsaXQoJzonKSBmb3IgbGluZSBpbiBkaWdlc3RfZmls
ZV0KLQotICAgICAgICAjIFBlcmZvcm0gc29tZSBzYW5pdHktY2hlY2tpbmcgdG8gZW5zdXJlIHRo
ZSBmaWxlIGlzIHZhbGlkLgotICAgICAgICB2YWxpZF9jaGFyYWN0ZXJzID0gc2V0KHN0cmluZy5o
ZXhkaWdpdHMpCi0gICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICAgICAgaWYg
bGVuKGVudHJ5KSAhPSAzOgotICAgICAgICAgICAgICAgIHJldHVybiBbXQotICAgICAgICAgICAg
aGFzaGVkX3Bhc3N3b3JkID0gZW50cnlbLTFdCi0gICAgICAgICAgICBpZiBsZW4oaGFzaGVkX3Bh
c3N3b3JkKSAhPSAzMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgICAgIGlm
IG5vdCBzZXQoaGFzaGVkX3Bhc3N3b3JkKS5pc3N1YnNldCh2YWxpZF9jaGFyYWN0ZXJzKToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAgICByZXR1cm4gZW50cmllcwpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9odGRp
Z2VzdHBhcnNlcl91bml0dGVzdC5weQkocmV2aXNpb24gMTQxNTIzKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDgyICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0j
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotaW1wb3J0IFN0cmluZ0lPCi1pbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdDIgYXMg
dW5pdHRlc3QKLQotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0Lmh0ZGlnZXN0cGFyc2VyIGltcG9y
dCBIVERpZ2VzdFBhcnNlcgotCi0KLWNsYXNzIEhURGlnZXN0UGFyc2VyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgZGVmIGFzc2VydEVudHJpZXNFcXVhbChzZWxmLCBlbnRyaWVzLCBhZGRp
dGlvbmFsX2NvbnRlbnQ9Tm9uZSk6Ci0gICAgICAgIGRpZ2VzdF9maWxlID0gc2VsZi5mYWtlX2h0
ZGlnZXN0X2ZpbGUoKQotICAgICAgICBpZiBhZGRpdGlvbmFsX2NvbnRlbnQgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBkaWdlc3RfZmlsZS5zZWVrKHBvcz0wLCBtb2RlPW9zLlNFRUtfRU5EKQot
ICAgICAgICAgICAgZGlnZXN0X2ZpbGUud3JpdGUoYWRkaXRpb25hbF9jb250ZW50KQotICAgICAg
ICAgICAgZGlnZXN0X2ZpbGUuc2Vlayhwb3M9MCwgbW9kZT1vcy5TRUVLX1NFVCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChlbnRyaWVzLCBIVERpZ2VzdFBhcnNlcihkaWdlc3RfZmlsZSkuZW50
cmllcygpKQotCi0gICAgZGVmIHRlc3RfYXV0aGVudGljYXRlKHNlbGYpOgotICAgICAgICBodGRp
Z2VzdCA9IEhURGlnZXN0UGFyc2VyKHNlbGYuZmFrZV9odGRpZ2VzdF9maWxlKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxtIDEn
LCAncGFzc3dvcmQxJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50
aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQyJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIzJywgJ3JlYWxtIDEnLCAncGFzc3dv
cmQzJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3Vz
ZXIzJywgJ3JlYWxtIDMnLCAncGFzc3dvcmQzJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxtJywgJ3Bhc3N3b3JkMScpKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNlcjEnLCAn
cmVhbG0gMicsICdwYXNzd29yZDEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodGRpZ2Vz
dC5hdXRoZW50aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQxJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoaHRkaWdlc3QuYXV0aGVudGljYXRlKCd1c2VyMicsICdyZWFsbSAx
JywgJ3Bhc3N3b3JkMScpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhl
bnRpY2F0ZSgnJywgJycsICcnKSkKLQotICAgIGRlZiB0ZXN0X2VudHJpZXMoc2VsZik6Ci0gICAg
ICAgIGVudHJpZXMgPSBbCi0gICAgICAgICAgICBbJ3VzZXIxJywgJ3JlYWxtIDEnLCAnMzZiOGFh
MjdmYTVlOTA1MTA5NWQzN2I2MTlmOTI3NjInXSwKLSAgICAgICAgICAgIFsndXNlcjInLCAncmVh
bG0gMicsICcxNGY4Mjc2ODZmYTk3Nzc4ZjAyZmUxMzE0YTMzMzdjOCddLAotICAgICAgICAgICAg
Wyd1c2VyMycsICdyZWFsbSAxJywgJzE4MTdmYzhhMjQxMTljYzU3ZmJhZmM4YTYzMGVhNWE1J10s
Ci0gICAgICAgICAgICBbJ3VzZXIzJywgJ3JlYWxtIDMnLCAnYTA1ZjVhMjMzNWU5ZDg3YmJlNzVi
YmU1ZTUzMjQ4ZjAnXSwKLSAgICAgICAgXQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVh
bChlbnRyaWVzKQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVhbChlbnRyaWVzLCBhZGRp
dGlvbmFsX2NvbnRlbnQ9JycpCi0KLSAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBIVERpZ2VzdFBhcnNlcihTdHJpbmdJTy5TdHJpbmdJ
TygpKS5lbnRyaWVzKCkpCi0KLSAgICBkZWYgdGVzdF90b29fZmV3X2NvbG9ucyhzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNl
cjE6cmVhbG0gMVxuJykKLQotICAgIGRlZiB0ZXN0X3Rvb19tYW55X2NvbG9ucyhzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNl
cjE6cmVhbG0gMTozNmI4YWEyN2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2MjpnYXJiYWdlXG4nKQot
Ci0gICAgZGVmIHRlc3RfaW52YWxpZF9oYXNoKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVu
dHJpZXNFcXVhbChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3
ZmE1ZTkwNTEwOTVkMzdiNjE5ZjkyNzYyMDAwMDAwXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVu
dHJpZXNFcXVhbChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3
ZmE1ZTkwNTEwOTVkMzdiNjE5ZjkyNzZcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0Vx
dWFsKFtdLCBhZGRpdGlvbmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1
MTA5NWQzN2I2MTlmOTI3NnpcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtd
LCBhZGRpdGlvbmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6IDM2YjhhYTI3ZmE1ZTkwNTEwOTVk
MzdiNjE5ZjkyNzYyXG4nKQotCi0gICAgZGVmIGZha2VfaHRkaWdlc3RfZmlsZShzZWxmKToKLSAg
ICAgICAgcmV0dXJuIFN0cmluZ0lPLlN0cmluZ0lPKCIiInVzZXIxOnJlYWxtIDE6MzZiOGFhMjdm
YTVlOTA1MTA5NWQzN2I2MTlmOTI3NjIKLXVzZXIyOnJlYWxtIDI6MTRmODI3Njg2ZmE5Nzc3OGYw
MmZlMTMxNGEzMzM3YzgKLXVzZXIzOnJlYWxtIDE6MTgxN2ZjOGEyNDExOWNjNTdmYmFmYzhhNjMw
ZWE1YTUKLXVzZXIzOnJlYWxtIDM6YTA1ZjVhMjMzNWU5ZDg3YmJlNzViYmU1ZTUzMjQ4ZjAKLSIi
IikK
</data>
<flag name="review"
          id="205176"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>